/**
  * Creates and returns calculation rules chain.
  * 
  * @return CList calculation rules chain
  */
 protected function createChain()
 {
     if (!isset($this->_rules)) {
         $chain = $this->chain();
         $this->_rules = new CList();
         foreach ($chain as $item) {
             $rule = $this->createChainRule($item);
             $this->_rules->add($rule);
         }
     }
     return $this->_rules;
 }
예제 #2
0
 protected function addValidators()
 {
     $validators = new CList();
     foreach ($this->rules() as $rule) {
         if (isset($rule[0], $rule[1])) {
             $validator = CValidator::createValidator($rule[1], $this->_model, $rule[0], array_slice($rule, 2));
             $validators->add($validator);
         } else {
             throw new CException(Yii::t('yii', '{class} has an invalid validation rule. The rule must specify attributes to be validated and the validator name.', array('{class}' => get_class($this))));
         }
     }
     return $validators;
 }
 public function createValidators()
 {
     $validators = new CList();
     $rules = $this->rules();
     if ($this->addDefaultRules) {
         $rules = array_merge($rules, $this->defaultRules());
     }
     foreach ($rules as $rule) {
         if (isset($rule[0], $rule[1])) {
             // attributes, validator name
             $validators->add(CValidator::createValidator($rule[1], $this, $rule[0], array_slice($rule, 2)));
         } else {
             throw new CException(Yii::t('yii', '{class} has an invalid validation rule. The rule must specify attributes to be validated and the validator name.', array('{class}' => get_class($this))));
         }
     }
     return $validators;
 }
 /**
  * @param array $rules
  * @return CList
  * @throws CException
  */
 private function createValueValidatorsByRules(array $rules)
 {
     $validators = new CList();
     foreach ($rules as $rule) {
         if (isset($rule[0], $rule[1])) {
             if ($rule[1] != 'unique') {
                 $validators->add(CValidator::createValidator($rule[1], $this, $rule[0], array_slice($rule, 2)));
             }
         } else {
             throw new CException(Zurmo::t('ReportsModule', '{class} has an invalid validation rule. The rule must specify ' . 'attributes to be validated and the validator name.', array('{class}' => get_class($this))));
         }
     }
     return $validators;
 }
예제 #5
0
 /**
  * @param array attributes key for get.
  * @return array
  */
 public function getEavAttributes($attributes = array())
 {
     // Get all attributes if not specified.
     if (empty($attributes)) {
         $attributes = $this->getSafeAttributesArray();
     }
     // Values array.
     $values = array();
     // Queue for load.
     $loadQueue = new CList();
     foreach ($attributes as $attribute) {
         // Check is safe.
         if ($this->hasSafeAttribute($attribute)) {
             $values[$attribute] = $this->attributes->itemAt($attribute);
             // If attribute not set and not load, prepare array for loaded.
             if (!$this->preload && $values[$attribute] === NULL) {
                 $loadQueue->add($attribute);
             }
         }
     }
     // If array for loaded not empty, load attributes.
     if (!$this->preload && $loadQueue->count() > 0) {
         $this->loadEavAttributes($loadQueue->toArray());
         foreach ($loadQueue as $attribute) {
             $values[$attribute] = $this->attributes->itemAt($attribute);
         }
     }
     // Delete load queue.
     unset($loadQueue);
     // Return values.
     return $values;
 }
 /**
  * Lists all models.
  */
 public function actionIndex()
 {
     $user = User::model()->findByAttributes(array("username" => Yii::app()->user->getId()));
     $meetingsId = new CList();
     $invitations = VCInvitation::model()->findAllByAttributes(array("invitee_id" => $user->id));
     foreach ($invitations as $inv) {
         $meetingsId->add($inv->videoconference_id);
     }
     $meetings = VideoConference::model()->findAllByAttributes(array("moderator_id" => $user->id));
     foreach ($meetings as $meeting) {
         $meetingsId->add($meeting->id);
     }
     //$dataProvider = new CActiveDataProvider('VideoConference');
     $this->render('index', array('meetingsId' => $meetingsId->toArray()));
 }
 /**
  * Creates validator objects based on the specification in rules of the EAV attribute. This method is mainly used
  * internally.
  * @return CList Validators built based on EavAttribute::getEavValidatorList().
  * @throws CException If the instantiated model does not support EAV attributes.
  */
 public function createEavValidators()
 {
     if (!$this->eavEnable) {
         throw new CException('The method ' . __METHOD__ . '() should not be called. The instantiated model does not
         support EAV attributes.');
     } else {
         $validators = new CList();
         foreach ($this->eavAttributeInstances as $attr) {
             $validatorList = $attr->getEavValidatorList();
             foreach ($validatorList as $validator => $params) {
                 $validators->add(CValidator::createValidator($validator, $this, $attr->name, $params));
             }
         }
         return $validators;
     }
 }
예제 #8
0
파일: EFile.php 프로젝트: sinelnikof/yiiext
 public static function findRecursive($dir, $filters = NULL, $depth = -1, $limit = 0)
 {
     if (!$filters instanceof EFileFilters) {
         $filters = new EFileFilters($filters);
     }
     $list = new CList();
     //TODO: $dir = new DirectoryIterator(dirname(__FILE__)); foreach ($dir as $fileinfo) {}
     $handle = opendir($dir);
     while (($fileName = readdir($handle)) !== FALSE) {
         if ($limit > 0 && $list->count >= $limit) {
             break;
         }
         if ($fileName === '.' || $fileName === '..') {
             continue;
         }
         $file = EFile::getInstance($dir . DIRECTORY_SEPARATOR . $fileName);
         //TODO: подумать о сортировке прямо в цикле поиска
         if ($filters->run($file)) {
             if ($file->isDir && $depth) {
                 $list->mergeWith(self::findRecursive($file->path, $filters, $depth - 1, $limit - $list->count));
             } else {
                 $list->add($file);
             }
         }
     }
     closedir($handle);
     return $list;
 }