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 .= ' <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 .= ' ' . JHtml::image(JUri::root() . 'components/com_bids/images/requiredfield.gif', 'Required'); } } return $html; }
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; }
/** * * 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; }
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; }
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'); }
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>: {$field_html}</div>"; } return $result; }
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; }
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); } } }