original_string: protected function prepare_pathelements($elementsarr) {
  
          // First iteration, push them to new array, indexed by name
          // detecting duplicates in names or paths
          $names = array();
          $paths = array();
          foreach($elementsarr as $element) {
              if (!$element instanceof restore_path_element) {
                  throw new restore_step_exception('restore_path_element_wrong_class', get_class($element));
              }
              if (array_key_exists($element->get_name(), $names)) {
                  throw new restore_step_exception('restore_path_element_name_alreadyexists', $element->get_name());
              }
              if (array_key_exists($element->get_path(), $paths)) {
                  throw new restore_step_exception('restore_path_element_path_alreadyexists', $element->get_path());
              }
              $names[$element->get_name()] = true;
              $paths[$element->get_path()] = $element;
          }
          // Now, for each element not having one processing object, if
          // not child of grouped element, assign $this (the step itself) as processing element
          // Note method must exist or we'll get one @restore_path_element_exception
          foreach($paths as $key => $pelement) {
              if ($pelement->get_processing_object() === null && !$this->grouped_parent_exists($pelement, $paths)) {
                  $paths[$key]->set_processing_object($this);
              }
              // Populate $elementsoldid and $elementsoldid based on available pathelements
              $this->elementsoldid[$pelement->get_name()] = null;
              $this->elementsnewid[$pelement->get_name()] = null;
          }
          // Done, add them to pathelements (dupes by key - path - are discarded)
          $this->pathelements = array_merge($this->pathelements, $paths);
      }
code: protected function prepare_pathelements($elementsarr) {
  
          // First iteration, push them to new array, indexed by name
          // detecting duplicates in names or paths
          $names = array();
          $paths = array();
          foreach($elementsarr as $element) {
              if (!$element instanceof restore_path_element) {
                  throw new restore_step_exception('restore_path_element_wrong_class', get_class($element));
              }
              if (array_key_exists($element->get_name(), $names)) {
                  throw new restore_step_exception('restore_path_element_name_alreadyexists', $element->get_name());
              }
              if (array_key_exists($element->get_path(), $paths)) {
                  throw new restore_step_exception('restore_path_element_path_alreadyexists', $element->get_path());
              }
              $names[$element->get_name()] = true;
              $paths[$element->get_path()] = $element;
          }
          // Now, for each element not having one processing object, if
          // not child of grouped element, assign $this (the step itself) as processing element
          // Note method must exist or we'll get one @restore_path_element_exception
          foreach($paths as $key => $pelement) {
              if ($pelement->get_processing_object() === null && !$this->grouped_parent_exists($pelement, $paths)) {
                  $paths[$key]->set_processing_object($this);
              }
              // Populate $elementsoldid and $elementsoldid based on available pathelements
              $this->elementsoldid[$pelement->get_name()] = null;
              $this->elementsnewid[$pelement->get_name()] = null;
          }
          // Done, add them to pathelements (dupes by key - path - are discarded)
          $this->pathelements = array_merge($this->pathelements, $paths);
      }
code_tokens: protected function prepare_pathelements ( $ elementsarr ) { // First iteration, push them to new array, indexed by name // detecting duplicates in names or paths $ names = array ( ) ; $ paths = array ( ) ; foreach ( $ elementsarr as $ element ) { if ( ! $ element instanceof restore_path_element ) { throw new restore_step_exception ( 'restore_path_element_wrong_class' , get_class ( $ element ) ) ; } if ( array_key_exists ( $ element -> get_name ( ) , $ names ) ) { throw new restore_step_exception ( 'restore_path_element_name_alreadyexists' , $ element -> get_name ( ) ) ; } if ( array_key_exists ( $ element -> get_path ( ) , $ paths ) ) { throw new restore_step_exception ( 'restore_path_element_path_alreadyexists' , $ element -> get_path ( ) ) ; } $ names [ $ element -> get_name ( ) ] = true ; $ paths [ $ element -> get_path ( ) ] = $ element ; } // Now, for each element not having one processing object, if // not child of grouped element, assign $this (the step itself) as processing element // Note method must exist or we'll get one @restore_path_element_exception foreach ( $ paths as $ key => $ pelement ) { if ( $ pelement -> get_processing_object ( ) === null && ! $ this -> grouped_parent_exists ( $ pelement , $ paths ) ) { $ paths [ $ key ] -> set_processing_object ( $ this ) ; } // Populate $elementsoldid and $elementsoldid based on available pathelements $ this -> elementsoldid [ $ pelement -> get_name ( ) ] = null ; $ this -> elementsnewid [ $ pelement -> get_name ( ) ] = null ; } // Done, add them to pathelements (dupes by key - path - are discarded) $ this -> pathelements = array_merge ( $ this -> pathelements , $ paths ) ; }
docstring: Prepare the pathelements for processing, looking for duplicates, applying
  processing objects and other adjustments
docstring_tokens: Prepare the pathelements for processing looking for duplicates applying processing objects and other adjustments