рдереЛрдбрд╝рд╛ рд╕рд╛ рдорд╛рд╕реНрдХ рд▓рдЧрд╛рдХрд░ рдХрд╛рдо рдХрд░реЗрдВ

рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рди!
рдЕрдХреНрд╕рд░ рдХреБрдЫ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛, рдРрд╕рд╛ рдбреЗрдЯрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдХреНрд░рд┐рдпрдг рдлрд╝реАрд▓реНрдб, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрд╡рд░реЛрдзрди рдЖрджрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрд┐рдЯрдорд╛рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдбреЗрдЯрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдореИрдВ рд╡рд╛рдИрдЖрдИрдЖрдИ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЙрд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рд╣рд░ рдЪреАрдЬ рд╕реЗ рдЦреБрд╢ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП, рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЗрд╕ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдореБрдЦреМрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рд╡рд┐рдХрд╛рд╕ рдереЗред
рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ ActiveRecord рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ:

class BaseActiveRecordClass extends CactiveRecord 


рд╣рдо рдЭрдВрдбреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВред рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд▓рд┐рдП, рд▓реЙрдХ рдлреНрд▓реИрдЧ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЙрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 const FLAG_MANAGE_BLOCKED=0; //  


рдирд┐рд░рдВрддрд░ рдорд╛рди рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдмрд┐рдЯреНрд╕ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдЭрдВрдбреЗ рдХреЛ рдлрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдЧрд▓рд╛, рд╣рдо рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 /* *     */ public function setFlag($idBit=0,$bit=1){ $bitFlags=1<<$idBit; if($bit==0){ $this->flags=$this->flags&(~$bitFlags); }else{ $this->flags=$this->flags|$bitFlags; } $this->save(true, array('flags')); } /* *    */ public function getFlag($idBit){ $flag=(int)$this->flags; $flag=$flag>>$idBit; if($flag>0) $cBits=log($flag,2); else $cBits=0; $newFlag=$flag|1; if($newFlag==$flag) return 1; else return 0; } /* *        * param $flags array     */ public function addFlagCriteria($flags=array()){ $criteria=$this->getDbCriteria(); if(!empty($flags)){ foreach($flags as $bit => $flag){ if(is_array($flag)){ $operator=($flag['operator'])?$flag['operator']:"and"; $check=($flag['check'])?(bool)$flag['check']:1; }else{ $operator="and"; $check=(bool)$flag; } $check=$check?"=":"<>"; $criteria->addCondition("(((t.flags>>".$bit.")|1)".$check."(t.flags>>".$bit."))", $operator); } } return $this; } /* *       *    */ public function noBlock(){ return $this->addFlagCriteria(array(self::FLAG_MANAGE_BLOCKED=>0)); } 


рд╣рдо рдЙрди рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЭрдВрдбреЗ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдм, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕рдорд╛рдЪрд╛рд░ рдЕрд╡рд░реБрджреНрдз рд╣реИ, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 $model= News::model()->findByPk($id); if($model->getFlag(News::FLAG_MANAGE_BLOCKED)){ die(" "); } 

рдпрд╛ рд╕рдорд╛рдЪрд╛рд░ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
 $model->setFlag(News::FLAG_MANAGE_BLOCKED, 1); 


рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдирдмреНрд▓реЙрдХ рдиреНрдпреВрдЬрд╝ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
 $news=News::model()->noBlock()->findAll(); 


рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореЙрдбрд▓ рдореЗрдВ рдХрдИ рдЭрдВрдбреЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рд╕рд╛рдордЧреНрд░реА рдЙрдкрдпреЛрдЧреА рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреА рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА, CgridView рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдзреНрд╡рдЬ рдкреНрд░рд╢рд╛рд╕рди рдЯреВрд▓ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдЕрдиреБрдХреВрд▓рди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдПрдВрдЧреЗред

Source: https://habr.com/ru/post/In130427/


All Articles