44 protected $requiredForAnonymous = null;
53 public static function model($className = __CLASS__)
67 return '{{comments}}';
74 $this->requiredForAnonymous = $requiredForAnonymous;
85 if(isset($this->requiredForAnonymous) && $this->requiredForAnonymous ==
false){
86 $initialValue =
false;
90 'email' => $initialValue,
91 'firstname' => $initialValue,
92 'lastname' => $initialValue,
95 if(isset($this->requiredForAnonymous) && $this->requiredForAnonymous){
97 $requiredFields = explode(
',', $this->requiredForAnonymous);
98 function trim_value(&$value){
99 $value = trim($value);
101 array_walk($requiredFields,
'trim_value');
102 foreach($Required as $fieldName=>&$isRequired){
103 if(in_array($fieldName,$requiredFields)){
124 foreach($requiredForAnonymous as $fieldName => $isRequire){
126 $rules[] = array( $fieldName,
'required',
'on' =>
'createAnonymous');
130 $rules = CMap::mergeArray($rules, array(
131 array(
'content_id, subject, description, language',
'required'),
132 array(
'email',
'required',
'except' =>
'createAnonymous'),
133 array(
'parent_id, user_id, status',
'numerical',
'integerOnly' =>
true),
134 array(
'notify_moderator, notify_user',
'boolean'),
135 array(
'content_id, moderator_email, firstname, lastname, email, subject, createtime, language',
'length',
'max' => 255),
136 array(
'email, moderator_email',
'email'),
139 array(
'id, content_id, email, subject, description, parent_id, user_id, notify, status, moderator_email, firstname, lastname, createtime',
'safe',
'on' =>
'search'),
140 array(
'firstname, lastname, description, email, subject',
'filter',
'filter'=>array($obj=
new CHtmlPurifier(),
'purify')),
142 if (Yii::app()->getController()) {
143 $rules[] = array(
'verifyCode',
'captcha',
'on' =>
'createAnonymous');
144 $rules[] = array(
'verifyCode',
'captcha',
'on' =>
'create');
157 'childs' => array(self::HAS_MANY,
'Comment',
'parent_id',
'alias' =>
'comments_childs'),
158 'parent' => array(self::BELONGS_TO,
'Comment',
'parent_id')
170 'condition' =>
'status != ' . self::DELETED
183 'condition' =>
'status = ' . self::APPROVED
186 'condition' =>
't.parent_id is NULL'
189 'condition' =>
't.parent_id is NOT NULL'
201 public function delete($completely =
false)
206 $this->status = self::DELETED;
207 return $this->update(
'status');
218 $str = $this->
id . $this->parent_id . $this->subject . $this->description . $this->email . Yii::app()->getModule(
'comments')->hashSalt;
253 switch ($this->status) {
257 case self::NOT_APPROVED:
277 $criteria =
new CDbCriteria;
279 $criteria->compare(
'id', $this->
id);
280 $criteria->compare(
'parent_id', $this->parent_id);
281 $criteria->compare(
'content_id', $this->content_id,
true);
282 $criteria->compare(
'user_id', $this->user_id);
283 $criteria->compare(
'moderator_email', $this->moderator_email,
true);
284 $criteria->compare(
'firstname', $this->firstname,
true);
285 $criteria->compare(
'lastname', $this->lastname,
true);
286 $criteria->compare(
'email', $this->email,
true);
287 $criteria->compare(
'subject', $this->subject,
true);
288 $criteria->compare(
'description', $this->description,
true);
289 $criteria->compare(
'notify_moderator', $this->notify_moderator);
290 $criteria->compare(
'notify_user', $this->notify_user);
291 $criteria->compare(
'status', $this->status);
292 $criteria->compare(
'createtime', $this->createtime,
true);
294 return new CActiveDataProvider($this, array(
'criteria' => $criteria,));