original_string: public static function resolve_category_by_path(array $path) {
          global $DB;
          $cache = cache::make('tool_uploadcourse', 'helper');
          $cachekey = 'cat_path_' . serialize($path);
          if (($id = $cache->get($cachekey)) === false) {
              $parent = 0;
              $sql = 'name = :name AND parent = :parent';
              while ($name = array_shift($path)) {
                  $params = array('name' => $name, 'parent' => $parent);
                  if ($records = $DB->get_records_select('course_categories', $sql, $params, null, 'id, parent')) {
                      if (count($records) > 1) {
                          // Too many records with the same name!
                          $id = -1;
                          break;
                      }
                      $record = reset($records);
                      $id = $record->id;
                      $parent = $record->id;
                  } else {
                      // Not found.
                      $id = -1;
                      break;
                  }
              }
              $cache->set($cachekey, $id);
          }
  
          // We save -1 when the category has not been found to be able to know if the cache was set.
          if ($id == -1) {
              $id = false;
          }
          return $id;
      }
code: public static function resolve_category_by_path(array $path) {
          global $DB;
          $cache = cache::make('tool_uploadcourse', 'helper');
          $cachekey = 'cat_path_' . serialize($path);
          if (($id = $cache->get($cachekey)) === false) {
              $parent = 0;
              $sql = 'name = :name AND parent = :parent';
              while ($name = array_shift($path)) {
                  $params = array('name' => $name, 'parent' => $parent);
                  if ($records = $DB->get_records_select('course_categories', $sql, $params, null, 'id, parent')) {
                      if (count($records) > 1) {
                          // Too many records with the same name!
                          $id = -1;
                          break;
                      }
                      $record = reset($records);
                      $id = $record->id;
                      $parent = $record->id;
                  } else {
                      // Not found.
                      $id = -1;
                      break;
                  }
              }
              $cache->set($cachekey, $id);
          }
  
          // We save -1 when the category has not been found to be able to know if the cache was set.
          if ($id == -1) {
              $id = false;
          }
          return $id;
      }
code_tokens: public static function resolve_category_by_path ( array $ path ) { global $ DB ; $ cache = cache :: make ( 'tool_uploadcourse' , 'helper' ) ; $ cachekey = 'cat_path_' . serialize ( $ path ) ; if ( ( $ id = $ cache -> get ( $ cachekey ) ) === false ) { $ parent = 0 ; $ sql = 'name = :name AND parent = :parent' ; while ( $ name = array_shift ( $ path ) ) { $ params = array ( 'name' => $ name , 'parent' => $ parent ) ; if ( $ records = $ DB -> get_records_select ( 'course_categories' , $ sql , $ params , null , 'id, parent' ) ) { if ( count ( $ records ) > 1 ) { // Too many records with the same name! $ id = - 1 ; break ; } $ record = reset ( $ records ) ; $ id = $ record -> id ; $ parent = $ record -> id ; } else { // Not found. $ id = - 1 ; break ; } } $ cache -> set ( $ cachekey , $ id ) ; } // We save -1 when the category has not been found to be able to know if the cache was set. if ( $ id == - 1 ) { $ id = false ; } return $ id ; }
docstring: Resolve a category by path.
  
  @param array $path category names indexed from parent to children.
  @return int category ID.
docstring_tokens: Resolve a category by path .