original_string: protected function register_handler(moodle1_handler $handler, array $elements) {
  
          // first iteration, push them to new array, indexed by name
          // to detect duplicates in names or paths
          $names = array();
          $paths = array();
          foreach($elements as $element) {
              if (!$element instanceof convert_path) {
                  throw new convert_exception('path_element_wrong_class', get_class($element));
              }
              if (array_key_exists($element->get_name(), $names)) {
                  throw new convert_exception('path_element_name_alreadyexists', $element->get_name());
              }
              if (array_key_exists($element->get_path(), $paths)) {
                  throw new convert_exception('path_element_path_alreadyexists', $element->get_path());
              }
              $names[$element->get_name()] = true;
              $paths[$element->get_path()] = $element;
          }
  
          // now, for each element not having a processing object yet, assign the handler
          // if the element is not a memeber of a group
          foreach($paths as $key => $element) {
              if (is_null($element->get_processing_object()) and !$this->grouped_parent_exists($element, $paths)) {
                  $paths[$key]->set_processing_object($handler);
              }
              // add the element path to the processor
              $this->xmlprocessor->add_path($element->get_path(), $element->is_grouped());
          }
  
          // done, store the paths (duplicates by path are discarded)
          $this->pathelements = array_merge($this->pathelements, $paths);
  
          // remove the injected plugin name element from the MOD and BLOCK paths
          // and register such collapsed path, too
          foreach ($elements as $element) {
              $path = $element->get_path();
              $path = preg_replace('/^\/MOODLE_BACKUP\/COURSE\/MODULES\/MOD\/(\w+)\//', '/MOODLE_BACKUP/COURSE/MODULES/MOD/', $path);
              $path = preg_replace('/^\/MOODLE_BACKUP\/COURSE\/BLOCKS\/BLOCK\/(\w+)\//', '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/', $path);
              if (!empty($path) and $path != $element->get_path()) {
                  $this->xmlprocessor->add_path($path, false);
              }
          }
      }
code: protected function register_handler(moodle1_handler $handler, array $elements) {
  
          // first iteration, push them to new array, indexed by name
          // to detect duplicates in names or paths
          $names = array();
          $paths = array();
          foreach($elements as $element) {
              if (!$element instanceof convert_path) {
                  throw new convert_exception('path_element_wrong_class', get_class($element));
              }
              if (array_key_exists($element->get_name(), $names)) {
                  throw new convert_exception('path_element_name_alreadyexists', $element->get_name());
              }
              if (array_key_exists($element->get_path(), $paths)) {
                  throw new convert_exception('path_element_path_alreadyexists', $element->get_path());
              }
              $names[$element->get_name()] = true;
              $paths[$element->get_path()] = $element;
          }
  
          // now, for each element not having a processing object yet, assign the handler
          // if the element is not a memeber of a group
          foreach($paths as $key => $element) {
              if (is_null($element->get_processing_object()) and !$this->grouped_parent_exists($element, $paths)) {
                  $paths[$key]->set_processing_object($handler);
              }
              // add the element path to the processor
              $this->xmlprocessor->add_path($element->get_path(), $element->is_grouped());
          }
  
          // done, store the paths (duplicates by path are discarded)
          $this->pathelements = array_merge($this->pathelements, $paths);
  
          // remove the injected plugin name element from the MOD and BLOCK paths
          // and register such collapsed path, too
          foreach ($elements as $element) {
              $path = $element->get_path();
              $path = preg_replace('/^\/MOODLE_BACKUP\/COURSE\/MODULES\/MOD\/(\w+)\//', '/MOODLE_BACKUP/COURSE/MODULES/MOD/', $path);
              $path = preg_replace('/^\/MOODLE_BACKUP\/COURSE\/BLOCKS\/BLOCK\/(\w+)\//', '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/', $path);
              if (!empty($path) and $path != $element->get_path()) {
                  $this->xmlprocessor->add_path($path, false);
              }
          }
      }
code_tokens: protected function register_handler ( moodle1_handler $ handler , array $ elements ) { // first iteration, push them to new array, indexed by name // to detect duplicates in names or paths $ names = array ( ) ; $ paths = array ( ) ; foreach ( $ elements as $ element ) { if ( ! $ element instanceof convert_path ) { throw new convert_exception ( 'path_element_wrong_class' , get_class ( $ element ) ) ; } if ( array_key_exists ( $ element -> get_name ( ) , $ names ) ) { throw new convert_exception ( 'path_element_name_alreadyexists' , $ element -> get_name ( ) ) ; } if ( array_key_exists ( $ element -> get_path ( ) , $ paths ) ) { throw new convert_exception ( 'path_element_path_alreadyexists' , $ element -> get_path ( ) ) ; } $ names [ $ element -> get_name ( ) ] = true ; $ paths [ $ element -> get_path ( ) ] = $ element ; } // now, for each element not having a processing object yet, assign the handler // if the element is not a memeber of a group foreach ( $ paths as $ key => $ element ) { if ( is_null ( $ element -> get_processing_object ( ) ) and ! $ this -> grouped_parent_exists ( $ element , $ paths ) ) { $ paths [ $ key ] -> set_processing_object ( $ handler ) ; } // add the element path to the processor $ this -> xmlprocessor -> add_path ( $ element -> get_path ( ) , $ element -> is_grouped ( ) ) ; } // done, store the paths (duplicates by path are discarded) $ this -> pathelements = array_merge ( $ this -> pathelements , $ paths ) ; // remove the injected plugin name element from the MOD and BLOCK paths // and register such collapsed path, too foreach ( $ elements as $ element ) { $ path = $ element -> get_path ( ) ; $ path = preg_replace ( '/^\/MOODLE_BACKUP\/COURSE\/MODULES\/MOD\/(\w+)\//' , '/MOODLE_BACKUP/COURSE/MODULES/MOD/' , $ path ) ; $ path = preg_replace ( '/^\/MOODLE_BACKUP\/COURSE\/BLOCKS\/BLOCK\/(\w+)\//' , '/MOODLE_BACKUP/COURSE/BLOCKS/BLOCK/' , $ path ) ; if ( ! empty ( $ path ) and $ path != $ element -> get_path ( ) ) { $ this -> xmlprocessor -> add_path ( $ path , false ) ; } } }
docstring: Register a handler for the given path elements
docstring_tokens: Register a handler for the given path elements