예제 #1
0
 static function editEndDate(&$auction, $isAdmin = false)
 {
     $cfg = BidsHelperTools::getConfig();
     $dateFormat = BidsHelperDateTime::dateFormatConvert2JHTML(false);
     $fType = CustomFieldsFactory::getFieldType('date');
     $calendarFormat = $fType->dateFormatConversion($dateFormat);
     $dateFormat = BidsHelperDateTime::dateFormatConvert2JHTML(false);
     if (!$cfg->bid_opt_enable_date) {
         if ($auction->id && $auction->published) {
             $html = JHTML::date(JFactory::getDate($auction->end_date)->toUnix(), $dateFormat);
         } else {
             $tooltipMsg = array();
             if (intval($cfg->bid_opt_default_period) > 0) {
                 $tooltipMsg[] = JText::_('COM_BIDS_AUTO_END_DATE_TOOLTIP_1') . ' ' . $cfg->bid_opt_default_period . ' ' . JText::_('COM_BIDS_DAYS');
             }
             if ($cfg->bid_opt_allow_proxy && intval($cfg->bid_opt_proxy_default_period) > 0) {
                 $tooltipMsg[] = JText::_('COM_BIDS_AUTO_END_DATE_TOOLTIP_2') . ' ' . $cfg->bid_opt_proxy_default_period . ' ' . JText::_('COM_BIDS_DAYS');
             }
             if (($cfg->bid_opt_global_enable_bin || $cfg->bid_opt_enable_bin_only) && intval($cfg->bid_opt_bin_default_period) > 0) {
                 $tooltipMsg[] = JText::_('COM_BIDS_AUTO_END_DATE_TOOLTIP_3') . ' ' . $cfg->bid_opt_bin_default_period . ' ' . JText::_('COM_BIDS_DAYS');
             }
             if ($cfg->bid_opt_global_enable_reserve_price && intval($cfg->bid_opt_reserve_price_default_period) > 0) {
                 $tooltipMsg[] = JText::_('COM_BIDS_AUTO_END_DATE_TOOLTIP_4') . ' ' . $cfg->bid_opt_reserve_price_default_period . ' ' . JText::_('COM_BIDS_DAYS');
             }
             $html = count($tooltipMsg) ? JHtml::tooltip(implode('<br />', $tooltipMsg)) : '-';
         }
     } else {
         if ($auction->published && !$isAdmin) {
             $html = JHTML::date(JFactory::getDate($auction->end_date)->toUnix(), $dateFormat);
         } else {
             $attribs = array('class' => 'inputbox required validate-start-date');
             $date = $auction->end_date ? $auction->end_date : '';
             $d = $date ? $date : '';
             if (preg_match('/^[0-9][0-9]:[0-9][0-9]$/', $date)) {
                 //if it's only end hour
                 $d = "";
             }
             $html = JHTML::calendar($d, 'end_date', 'end_date', $calendarFormat, $attribs);
             if ($d) {
                 $html = str_replace(' value="' . htmlspecialchars($d, ENT_COMPAT, 'UTF-8') . '"', ' value="' . htmlspecialchars(JHtml::date($d, $cfg->bid_opt_date_format, false), ENT_COMPAT, 'UTF-8') . '"', $html);
             }
             if ($cfg->bid_opt_enable_hour) {
                 $endHours = $auction->end_date ? JHTML::date($auction->end_date, 'H') : '00';
                 $endMinutes = $auction->end_date ? JHTML::date($auction->end_date, 'i') : '00';
                 $html .= '&nbsp;<input name="end_hour" size="1" value="' . $endHours . '" maxlength="2" class="inputbox required" onblur="bidCheckHours(this)" /> :
                     <input name="end_minutes" size="1" value="' . $endMinutes . '" maxlength="2" class="inputbox required" onblur="bidCheckMinutes(this)" />';
             }
             $html .= '&nbsp;' . JHtml::image(JUri::root() . 'components/com_bids/images/requiredfield.gif', 'Required');
         }
     }
     return $html;
 }
예제 #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;
 }
예제 #3
0
 /**
  *
  * Store Custom Field
  *
  **/
 function store($forceCreateField = false)
 {
     $db = $this->getDbo();
     $field_type_obj = CustomFieldsFactory::getFieldType($this->ftype);
     $existing_fields = $db->getTableFields($this->own_table);
     $must_create = $forceCreateField || !isset($existing_fields[$this->own_table][$this->db_name]);
     if (is_array($this->params)) {
         $this->params = join("\n", $this->params);
     }
     $res = parent::store();
     if ($res && $must_create) {
         if ($sqlfield_len = $field_type_obj->length) {
             $sqlfield_len = "({$sqlfield_len})";
         }
         $sqlfield_type = $field_type_obj->sql_type;
         $db->setQuery("ALTER TABLE {$this->own_table} ADD {$this->db_name} {$sqlfield_type} {$sqlfield_len};");
         $res = $db->query();
     }
     return $res;
 }
예제 #4
0
 function bind($src, $ignore = array())
 {
     $res = parent::bind($src, $ignore);
     if ($src == $_GET || $src == $_POST || $src == $_REQUEST) {
         if (!is_array($ignore)) {
             $ignore = explode(' ', $ignore);
         }
         $fieldObj = JTable::getInstance('FieldsTable', 'JTheFactory');
         foreach ($this->_custom_fields as $field) {
             if (!in_array($field->db_name, $ignore)) {
                 $fieldObj->bind($field);
                 $fieldPlugin = CustomFieldsFactory::getFieldType($field->ftype);
                 $val = $fieldPlugin->getValue($fieldObj, $src);
                 $this->{$field->db_name} = $val;
             }
         }
     }
     return $res;
 }
예제 #5
0
 function getFieldtypeParams()
 {
     $format = JRequest::getWord('format', 'html');
     $fieldid = JRequest::getInt('fieldid');
     $fieldtype = JRequest::getWord('ftype');
     $fieldtypeobj = CustomFieldsFactory::getFieldType($fieldtype);
     $paramsvalues = '';
     $field = null;
     if ($fieldid) {
         $field = JTable::getInstance('FieldsTable', 'JTheFactory');
         if (!$field->load($fieldid)) {
             $view = $this->getView('edit', $format);
             $view->assignRef('message', JText::_("FACTORY_FIELD_DOES_NOT_EXIST_ID") . $fieldid);
             $view->display('error');
             return;
         }
         $paramsvalues = $field->params;
     }
     $view = $this->getView('edit', $format);
     $view->assignRef('field', $field);
     $view->assignRef('paramvalues', $paramsvalues);
     $view->assignRef('field_type', $fieldtypeobj);
     $view->display('update_params');
 }
예제 #6
0
    function smarty_positions($params, &$smarty) {
        if(!isset($params['position']) || empty($params['position']))
            return null;
        if(!isset($params['item']) || empty($params['item']))
            return null;
        $item=$params['item'];
        $page=(isset($params['page']))?$params['page']:"";
        $catfield=null;
        if (is_callable(array($item,'getCategoryField')))
            $catfield=$item->getCategoryField(); //make sure proper object is passed
        if (is_object($item)) $item=get_object_vars($item);

        $position=$params['position'];
        $template_file=$smarty->get_template_vars('template_file');
        JTheFactoryHelper::modelIncludePath('positions');
        $model= JModelLegacy::getInstance('Positions','JTheFactoryModel');
        $fields=$model->getFieldsForPosition($template_file,$position);       
        $result="";

        $fieldObj= JTable::getInstance('FieldsTable','JTheFactory');
        JTheFactoryHelper::modelIncludePath('fields');
        $fieldsmodel= JModelLegacy::getInstance('Fields','JTheFactoryModel');
        
        foreach($fields as $field)
            if (isset($item[$field->db_name])&&$page==$field->page)
            {
                $fieldObj->bind($field);
                if ($catfield && $fieldObj->categoryfilter && !$fieldsmodel->hasAssignedCat($fieldObj,$item->$catfield))
                    continue;
                    
                $ftype= CustomFieldsFactory::getFieldType($field->ftype);
                $field_label=$field->name;

                $field_html=$ftype->getTemplateHTML($fieldObj,$item[$field->db_name]);
                
                $result.="<div id='{$field->db_name}'><label class='custom_field'>{$field_label}</label>:&nbsp;{$field_html}</div>";
            }
        return $result;
    }
예제 #7
0
 static function DisplayFieldsHtml(&$row, $fieldlist, $style = 'div')
 {
     if (!count($fieldlist)) {
         return null;
     }
     $page = $fieldlist[0]->page;
     $cfg = CustomFieldsFactory::getConfig();
     $category_filter = array();
     if ($cfg['has_category'][$page]) {
         $db = JFactory::getDBO();
         $db->setQuery("SELECT fid FROM #__" . APP_PREFIX . "_fields_categories WHERE cid = '" . $row->cat . "'");
         $category_filter = $db->loadResultArray();
     }
     $flist = array();
     $field_object = JTable::getInstance('FieldsTable', 'JTheFactory');
     foreach ($fieldlist as $field) {
         if ($field->categoryfilter && !in_array($field->id, $category_filter)) {
             continue;
         }
         $field_type = CustomFieldsFactory::getFieldType($field->ftype);
         $field_object->bind($field);
         $f = new stdClass();
         $f->field = clone $field;
         $f->value = $row->{$field->db_name};
         $f->html = $field_type->getFieldHTML($field_object, $row->{$field->db_name});
         $flist[] = $f;
     }
     $func = 'DisplayFieldsHtml_' . ucfirst($style);
     $html = self::$func($flist);
     return $html;
 }
예제 #8
0
 function buildCustomQuery(&$query, $profileObject = null, $useridField = null, $selectIntegrationFields = array())
 {
     $queriedTables = $query->getQueriedTables();
     $searchableFields = CustomFieldsFactory::getSearchableFieldsList();
     if ($profileObject) {
         //first look for Joomla's users table; join it only if not queried
         $usersAlias = array_search('#__users', $queriedTables);
         if (false === $usersAlias) {
             if (!$useridField) {
                 JError::raiseWarning(500, 'When using profile mode, the USERID foreign key is required!');
                 return;
             }
             $query->join('left', '#__users', 'u', $useridField . '=`u`.`id`');
             $usersAlias = 'u';
         }
         //join the extended profile table
         $tableName = $profileObject->getIntegrationTable();
         $tableKey = $profileObject->getIntegrationKey();
         $query->join('left', $tableName, 'ui', '`' . $usersAlias . '`.`id`=`ui`.`' . $tableKey . '`');
         //the listing includes some profile filters
         $this->pushProfileIntegrationFields($searchableFields, $profileObject);
         //we need to "refresh" this because of the previous joins
         $queriedTables = $query->getQueriedTables();
     }
     foreach ($searchableFields as $field) {
         $requestKey = $field->page . '%' . $field->db_name;
         $searchValue = $this->getState('filters.' . $requestKey);
         $fieldName = $field->db_name;
         $tableName = $field->own_table;
         $tableAlias = array_search($tableName, $queriedTables);
         if (false === $tableAlias) {
             //this IS a searchable field, but its parent table is not loaded in this context
             //i.e.: we use CB and this is a searchable CF for "component profile"
             continue;
         }
         //SELECT the field no matter what
         $query->select('`' . $tableAlias . '`.`' . $fieldName . '`');
         //no value from request => no SQL filter
         if (empty($searchValue)) {
             continue;
         }
         $ftype = CustomFieldsFactory::getFieldType($field->ftype ? $field->ftype : 'inputbox');
         $query->where($ftype->getSQLFilter($field, $searchValue, $tableAlias));
     }
     foreach ($selectIntegrationFields as $f) {
         $fieldName = $profileObject->getFilterField($f);
         $fieldTable = $profileObject->getFilterTable($f);
         $tableAlias = array_search($fieldTable, $queriedTables);
         if (!$fieldTable || !$tableAlias) {
             $query->select('NULL AS ' . $f);
         } else {
             $query->select('`' . $tableAlias . '`.`' . $fieldName . '` AS ' . $f);
         }
     }
 }