63), array('SALT', 'length', 'max'=>6), // The following rule is used by search(). array('ID, NAME', 'safe', 'on'=>'search'), ); } /** * @return array relational rules. */ public function relations() { // NOTE: you may need to adjust the relation name and the related // class name for the relations automatically generated below. return array( 'ENTRIES' => [ self::HAS_MANY, 'HighscoreEntries', [ 'GAME_ID' => 'ID' ], 'order'=>'POINTS DESC' ], ); } /** * @return array customized attribute labels (name=>label) */ public function attributeLabels() { return array( 'ID' => 'ID', 'NAME' => 'Name', 'SALT' => 'Salt', ); } /** * Retrieves a list of models based on the current search/filter conditions. * * Typical usecase: * - Initialize the model fields with values from filter form. * - Execute this method to get CActiveDataProvider instance which will filter * models according to data in model fields. * - Pass data provider to CGridView, CListView or any similar widget. * * @return CActiveDataProvider the data provider that can return the models * based on the search/filter conditions. */ public function search() { $criteria=new CDbCriteria; $criteria->compare('ID',$this->ID); $criteria->compare('NAME',$this->NAME,true); return new CActiveDataProvider($this, array( 'criteria'=>$criteria, )); } /** * Returns the static model of the specified AR class. * Please note that you should have this exact method in all your CActiveRecord descendants! * @param string $className active record class name. * @return HighscoreGames the static model class */ public static function model($className=__CLASS__) { return parent::model($className); } //#################################### //########### MY FUNCTIONS ########### //#################################### /** * @return string */ public function getListLink() { return '/Highscores/list?gameid=' . $this->ID; } /** * @return HighscoreEntries */ public function getMaximumScore() { if (count($this->ENTRIES) > 0) return $this->ENTRIES[0]; else return null; } /** * @param $search string[] * @return array() */ public static function getSearchResults($search) { /* @var $all HighscoreGames[] */ /* @var $resultarr HighscoreGames[] */ $all = HighscoreGames::model()->findAll(); $resultarr = array(); foreach($search as $searchpart) { foreach($all as $hgame) { if (stripos($hgame->NAME, $searchpart) !== false && ! in_array($hgame, $resultarr)) $resultarr []= $hgame; } } $result = array(); foreach($resultarr as $hgame) { $result []= [ 'Name' => $hgame->NAME . ' (Highscore)', 'Description' => null, 'Link' => $hgame->GetListLink(), 'Image' => '/images/search/sresult_highscores.png', ]; } return $result; } }