original_string: public static function search($searchtext, $competencyframeworkid) {
          global $DB;
  
          $like1 = $DB->sql_like('shortname', ':like1', false);
          $like2 = $DB->sql_like('idnumber', ':like2', false);
          $like3 = $DB->sql_like('description', ':like3', false);
  
          $params = array(
              'like1' => '%' . $DB->sql_like_escape($searchtext) . '%',
              'like2' => '%' . $DB->sql_like_escape($searchtext) . '%',
              'like3' => '%' . $DB->sql_like_escape($searchtext) . '%',
              'frameworkid' => $competencyframeworkid
          );
  
          $sql = 'competencyframeworkid = :frameworkid AND ((' . $like1 . ') OR (' . $like2 . ') OR (' . $like3 . '))';
          $records = $DB->get_records_select(self::TABLE, $sql, $params, 'path, sortorder ASC', '*');
  
          // Now get all the parents.
          $parents = array();
          foreach ($records as $record) {
              $split = explode('/', trim($record->path, '/'));
              foreach ($split as $parent) {
                  $parents[intval($parent)] = true;
              }
          }
          $parents = array_keys($parents);
  
          // Skip ones we already fetched.
          foreach ($parents as $idx => $parent) {
              if ($parent == 0 || isset($records[$parent])) {
                  unset($parents[$idx]);
              }
          }
  
          if (count($parents)) {
              list($parentsql, $parentparams) = $DB->get_in_or_equal($parents, SQL_PARAMS_NAMED);
  
              $parentrecords = $DB->get_records_select(self::TABLE, 'id ' . $parentsql,
                      $parentparams, 'path, sortorder ASC', '*');
  
              foreach ($parentrecords as $id => $record) {
                  $records[$id] = $record;
              }
          }
  
          $instances = array();
          // Convert to instances of this class.
          foreach ($records as $record) {
              $newrecord = new static(0, $record);
              $instances[$newrecord->get('id')] = $newrecord;
          }
          return $instances;
      }
code: public static function search($searchtext, $competencyframeworkid) {
          global $DB;
  
          $like1 = $DB->sql_like('shortname', ':like1', false);
          $like2 = $DB->sql_like('idnumber', ':like2', false);
          $like3 = $DB->sql_like('description', ':like3', false);
  
          $params = array(
              'like1' => '%' . $DB->sql_like_escape($searchtext) . '%',
              'like2' => '%' . $DB->sql_like_escape($searchtext) . '%',
              'like3' => '%' . $DB->sql_like_escape($searchtext) . '%',
              'frameworkid' => $competencyframeworkid
          );
  
          $sql = 'competencyframeworkid = :frameworkid AND ((' . $like1 . ') OR (' . $like2 . ') OR (' . $like3 . '))';
          $records = $DB->get_records_select(self::TABLE, $sql, $params, 'path, sortorder ASC', '*');
  
          // Now get all the parents.
          $parents = array();
          foreach ($records as $record) {
              $split = explode('/', trim($record->path, '/'));
              foreach ($split as $parent) {
                  $parents[intval($parent)] = true;
              }
          }
          $parents = array_keys($parents);
  
          // Skip ones we already fetched.
          foreach ($parents as $idx => $parent) {
              if ($parent == 0 || isset($records[$parent])) {
                  unset($parents[$idx]);
              }
          }
  
          if (count($parents)) {
              list($parentsql, $parentparams) = $DB->get_in_or_equal($parents, SQL_PARAMS_NAMED);
  
              $parentrecords = $DB->get_records_select(self::TABLE, 'id ' . $parentsql,
                      $parentparams, 'path, sortorder ASC', '*');
  
              foreach ($parentrecords as $id => $record) {
                  $records[$id] = $record;
              }
          }
  
          $instances = array();
          // Convert to instances of this class.
          foreach ($records as $record) {
              $newrecord = new static(0, $record);
              $instances[$newrecord->get('id')] = $newrecord;
          }
          return $instances;
      }
code_tokens: public static function search ( $ searchtext , $ competencyframeworkid ) { global $ DB ; $ like1 = $ DB -> sql_like ( 'shortname' , ':like1' , false ) ; $ like2 = $ DB -> sql_like ( 'idnumber' , ':like2' , false ) ; $ like3 = $ DB -> sql_like ( 'description' , ':like3' , false ) ; $ params = array ( 'like1' => '%' . $ DB -> sql_like_escape ( $ searchtext ) . '%' , 'like2' => '%' . $ DB -> sql_like_escape ( $ searchtext ) . '%' , 'like3' => '%' . $ DB -> sql_like_escape ( $ searchtext ) . '%' , 'frameworkid' => $ competencyframeworkid ) ; $ sql = 'competencyframeworkid = :frameworkid AND ((' . $ like1 . ') OR (' . $ like2 . ') OR (' . $ like3 . '))' ; $ records = $ DB -> get_records_select ( self :: TABLE , $ sql , $ params , 'path, sortorder ASC' , '*' ) ; // Now get all the parents. $ parents = array ( ) ; foreach ( $ records as $ record ) { $ split = explode ( '/' , trim ( $ record -> path , '/' ) ) ; foreach ( $ split as $ parent ) { $ parents [ intval ( $ parent ) ] = true ; } } $ parents = array_keys ( $ parents ) ; // Skip ones we already fetched. foreach ( $ parents as $ idx => $ parent ) { if ( $ parent == 0 || isset ( $ records [ $ parent ] ) ) { unset ( $ parents [ $ idx ] ) ; } } if ( count ( $ parents ) ) { list ( $ parentsql , $ parentparams ) = $ DB -> get_in_or_equal ( $ parents , SQL_PARAMS_NAMED ) ; $ parentrecords = $ DB -> get_records_select ( self :: TABLE , 'id ' . $ parentsql , $ parentparams , 'path, sortorder ASC' , '*' ) ; foreach ( $ parentrecords as $ id => $ record ) { $ records [ $ id ] = $ record ; } } $ instances = array ( ) ; // Convert to instances of this class. foreach ( $ records as $ record ) { $ newrecord = new static ( 0 , $ record ) ; $ instances [ $ newrecord -> get ( 'id' ) ] = $ newrecord ; } return $ instances ; }
docstring: This does a specialised search that finds all nodes in the tree with matching text on any text like field,
  and returns this node and all its parents in a displayable sort order.
  
  @param string $searchtext The text to search for.
  @param int $competencyframeworkid The competency framework to limit the search.
  @return persistent[]
docstring_tokens: This does a specialised search that finds all nodes in the tree with matching text on any text like field and returns this node and all its parents in a displayable sort order .