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;
    }
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;
    }
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 ; }
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[]
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 .