コード例 #1
0
 public function preValidation($params)
 {
     $data = Application_Model_Block::organizeSmartPlyalistCriteria($params['data']);
     // add elelments that needs to be added
     // set multioption for modifier according to criteria_field
     $modRowMap = array();
     foreach ($data['criteria'] as $critKey => $d) {
         $count = 1;
         foreach ($d as $modKey => $modInfo) {
             if ($modKey == 0) {
                 $eleCrit = $this->getElement("sp_criteria_field_" . $critKey . "_" . $modKey);
                 $eleCrit->setValue($this->getCriteriaOptions($modInfo['sp_criteria_field']));
                 $eleCrit->setAttrib("disabled", null);
                 $eleMod = $this->getElement("sp_criteria_modifier_" . $critKey . "_" . $modKey);
                 $criteriaType = $this->criteriaTypes[$modInfo['sp_criteria_field']];
                 if ($criteriaType == "s") {
                     $eleMod->setMultiOptions($this->getStringCriteriaOptions());
                 } elseif ($criteriaType == "n") {
                     $eleMod->setMultiOptions($this->getNumericCriteriaOptions());
                 } else {
                     $eleMod->setMultiOptions(array('0' => _('Select modifier')));
                 }
                 $eleMod->setValue($modInfo['sp_criteria_modifier']);
                 $eleMod->setAttrib("disabled", null);
                 $eleValue = $this->getElement("sp_criteria_value_" . $critKey . "_" . $modKey);
                 $eleValue->setValue($modInfo['sp_criteria_value']);
                 $eleValue->setAttrib("disabled", null);
                 if (isset($modInfo['sp_criteria_extra'])) {
                     $eleExtra = $this->getElement("sp_criteria_extra_" . $critKey . "_" . $modKey);
                     $eleExtra->setValue($modInfo['sp_criteria_extra']);
                     $eleValue->setAttrib('class', 'input_text sp_extra_input_text');
                     $eleExtra->setAttrib("disabled", null);
                 }
             } else {
                 $criteria = new Zend_Form_Element_Select("sp_criteria_field_" . $critKey . "_" . $modKey);
                 $criteria->setAttrib('class', 'input_select sp_input_select sp-invisible')->setValue('Select criteria')->setDecorators(array('viewHelper'))->setMultiOptions($this->getCriteriaOptions());
                 $criteriaType = $this->criteriaTypes[$modInfo['sp_criteria_field']];
                 $criteria->setValue($this->getCriteriaOptions($modInfo['sp_criteria_field']));
                 $this->addElement($criteria);
                 /****************** MODIFIER ***********/
                 $criteriaModifers = new Zend_Form_Element_Select("sp_criteria_modifier_" . $critKey . "_" . $modKey);
                 $criteriaModifers->setValue('Select modifier')->setAttrib('class', 'input_select sp_input_select')->setDecorators(array('viewHelper'));
                 if ($criteriaType == "s") {
                     $criteriaModifers->setMultiOptions($this->getStringCriteriaOptions());
                 } elseif ($criteriaType == "n") {
                     $criteriaModifers->setMultiOptions($this->getNumericCriteriaOptions());
                 } else {
                     $criteriaModifers->setMultiOptions(array('0' => _('Select modifier')));
                 }
                 $criteriaModifers->setValue($modInfo['sp_criteria_modifier']);
                 $this->addElement($criteriaModifers);
                 /****************** VALUE ***********/
                 $criteriaValue = new Zend_Form_Element_Text("sp_criteria_value_" . $critKey . "_" . $modKey);
                 $criteriaValue->setAttrib('class', 'input_text sp_input_text')->setDecorators(array('viewHelper'));
                 $criteriaValue->setValue($modInfo['sp_criteria_value']);
                 $this->addElement($criteriaValue);
                 /****************** EXTRA ***********/
                 $criteriaExtra = new Zend_Form_Element_Text("sp_criteria_extra_" . $critKey . "_" . $modKey);
                 $criteriaExtra->setAttrib('class', 'input_text sp_extra_input_text')->setDecorators(array('viewHelper'));
                 if (isset($modInfo['sp_criteria_extra'])) {
                     $criteriaExtra->setValue($modInfo['sp_criteria_extra']);
                     $criteriaValue->setAttrib('class', 'input_text sp_extra_input_text');
                 } else {
                     $criteriaExtra->setAttrib('disabled', 'disabled');
                 }
                 $this->addElement($criteriaExtra);
                 $count++;
             }
         }
         $modRowMap[$critKey] = $count;
     }
     $decorator = $this->getDecorator("ViewScript");
     $existingModRow = $decorator->getOption("modRowMap");
     foreach ($modRowMap as $key => $v) {
         $existingModRow[$key] = $v;
     }
     $decorator->setOption("modRowMap", $existingModRow);
     // reconstruct the params['criteria'] so we can populate the form
     $formData = array();
     foreach ($params['data'] as $ele) {
         $formData[$ele['name']] = $ele['value'];
     }
     $this->populate($formData);
     return $data;
 }