Код: Выделить всё
class InvitationAdmin extends Invitation
{
public $adminName='Invitations'; // will be displayed in main list
public $pluralNames=array('Invitation','Invitation');
public $serviceChoices=array("facebook"=>"facebook","web"=>"web","twitter"=>"twitter");
public $user_search;
public function attributeLabels()
{
return array(
'id' => 'ID',
'user_id' => 'User ID',
'email' => 'Friend_Email',
'service' => 'Friend_Service',
);
}
public function rules()
{
return array(
array('id,service_id','safe'),
array('user_id, email, service', 'required'),
array('user_id', 'numerical', 'integerOnly'=>true),
array('email, service', 'length', 'max'=>45),
array('id, user_id, email, service, service_id,user_search', 'safe', 'on'=>'search'),//2
array('user_id', 'Usercheck'),
);
}
public function Usercheck()
{
$user=User::model()->findbyPK($this->user_id);
if(!$user) $this->addError('user_id','There is no such user');
}
public function adminSearch()
{
return array(
'columns'=>array(
'id',
'user_id',
'user.first_name',
'user.last_name',
array( 'name'=>'user_search', 'value'=>'$data->user->email'),
'email',
'service_id',
array(
'name' =>'service',
'filter'=>array('web'=>'web','facebook'=>'facebook','twitter'=>'twitter'),
),
)
);
}
public function attributeWidgets()
{
return array(
array('service','dropDownList'),
);
}
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('t.id',$this->id,true);
$criteria->compare('t.service_id',$this->service_id,true);
//$criteria->compare('t.user_id',$this->user_id,true);
$criteria->compare('t.email',$this->email,true);
$criteria->compare('t.service',$this->service,true);
//$criteria->together = true;
$criteria->with=array('user');//needs for sorting
// $criteria->compare('user.email', $this->user_search);
$criteria->compare('email',$this->user_search);
// $criteria->addSearchCondition('user.email',$this->user_search);
$sort = new CSort();
$sort->defaultOrder = 't.id DESC';
$sort->attributes = array(
'id'=>array(
'asc'=>'t.id asc',
'desc'=>'t.id desc',
),
'email'=>array(
'asc'=>'t.email desc',
'desc'=>'t.email asc',
),
'user_id'=>array(
'asc'=>'t.user_id desc',
'desc'=>'t.user_id asc',
),
'service'=>array(
'asc'=>'t.service desc',
'desc'=>'t.service asc',
),
'service_id'=>array(
'asc'=>'t.service_id desc',
'desc'=>'t.service_id asc',
),
'user.first_name'=>array(
'asc'=>'user.first_name desc',
'desc'=>'user.first_name asc',
),
'user.last_name'=>array(
'asc'=>'user.last_name desc',
'desc'=>'user.last_name asc',
),
'user_search'=>array(
'asc'=>'user.email ASC',
'desc'=>'user.email DESC',
),
'*',
);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>$sort,
/*'pagination' => array(
'pageSize' => 1,
),*///for the future
));
}
public function defaultScope()
{
return array(
'select' => 'id,user_id,email,service,service_id',
);
}
}