예제 #1
0
 function check()
 {
     $result = true;
     $this->_validation_errors = array();
     if ($this->_category_field) {
         $db = $this->getDbo();
         $category = $this->{$this->_category_field};
         //Table has a category field, and we get all fields that are assigned to that category
         $db->setQuery("SELECT fid FROM #__" . APP_PREFIX . "_fields_categories WHERE cid = '{$category}'");
         $allowed_fields = $db->loadResultArray();
     }
     foreach ($this->_custom_fields as $field) {
         if ($this->_category_field && $field->categoryfilter && !in_array($field->id, $allowed_fields)) {
             continue;
         }
         $fieldvalue = $this->{$field->db_name};
         if ($field->compulsory && ($fieldvalue === NULL || $fieldvalue == '')) {
             //attention 0 can be a non empty value !
             $this->_validation_errors[] = JText::_("FACTORY_FIELD") . " " . $field->name . " " . JText::_("FACTORY_IS_REQUIRED");
         }
         if (!$field->validate_type) {
             continue;
         }
         $validator = CustomFieldsFactory::getFieldValidator($field->validate_type);
         if (!$validator->validateValue($fieldvalue, $field->params)) {
             $result = false;
             $this->_validation_errors = array_merge($this->_validation_errors, $validator->{$errormessages});
         }
     }
     $result = $result && parent::check();
     return $result;
 }
예제 #2
0
 function createHTMLObjectsForField($field)
 {
     $lists = new JObject();
     $cfg = CustomFieldsFactory::getConfig();
     $lists->curent_type = null;
     $lists->field_options = array();
     $lists->field_types = CustomFieldsFactory::getFieldTypesList();
     $opts = array();
     foreach ($lists->field_types as $typename) {
         $item = CustomFieldsFactory::getFieldType($typename);
         $opts[] = JHTML::_('select.option', $item->class_name, $item->type_name);
     }
     $lists->field_types_html = JHTML::_('select.genericlist', $opts, 'ftype', 'class="inputbox"', "value", "text", $field->ftype);
     $lists->field_pages_categories = $cfg['has_category'];
     $validators = CustomFieldsFactory::getValidatorsList();
     $opts = array(JHTML::_('select.option', "", JText::_("FACTORY_NONE")));
     foreach ($validators as $validator) {
         $validatorObj = CustomFieldsFactory::getFieldValidator($validator);
         $opts[] = JHTML::_('select.option', $validatorObj->classname, JText::_($validatorObj->name));
     }
     $lists->validate_type = JHTML::_('select.genericlist', $opts, 'validate_type', 'class="inputbox"', "value", "text", $field->validate_type);
     if ($field->ftype) {
         $lists->curent_type = CustomFieldsFactory::getFieldType($field->ftype);
         if ($lists->curent_type->has_options) {
             $lists->field_options = $field->getOptions();
         }
         $lists->curent_type_params = $lists->curent_type->get('_params');
     }
     if ($field->id) {
         //cannot change page for an existing field
         $lists->field_pages = $cfg['pages'][$field->page];
     } else {
         $opts = array();
         foreach ($cfg['pages'] as $k => $v) {
             $opts[] = JHTML::_('select.option', $k, $v);
         }
         $lists->field_pages = JHTML::_('select.genericlist', $opts, 'page', 'class="inputbox"', "value", "text", $field->page);
     }
     $lists->compulsory = JHTML::_("select.booleanlist", 'compulsory', " infoyes='" . JText::_('FACTORY_COMPULSORY_FIELD') . "' infono='" . JText::_('FACTORY_OPTIONAL_FIELD') . "'", $field->compulsory);
     $lists->search = JHTML::_("select.booleanlist", 'search', '', $field->search);
     $lists->status = JHTML::_("select.booleanlist", 'status', '', $field->status);
     return $lists;
 }