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); } } }
function _buildWhere($filters) { $integrationArray = $this->getIntegrationArray(); $fields = CustomFieldsFactory::getSearchableFieldsList("user_profile"); /* HUH? for($i=0;$i<count($fields);$i++) $integrationArray[$fields[$i]["row_id"]]=$fields[$i]["row_id"]; */ $where = array(); if (count($filters)) { foreach ($filters as $key => $value) { if (is_array($value)) { foreach ($value as $k => $v) { if (isset($integrationArray[$k]) && $integrationArray[$k]) { if (strpos($v, '%') !== FALSE) { $w[] = 'profile.' . $integrationArray[$k] . " LIKE '{$v}'"; } else { $w[] = 'profile.' . $integrationArray[$k] . "='{$v}'"; } } if ($k == 'username') { if (strpos($v, '%') !== FALSE) { $w[] = "u.username LIKE '{$v}'"; } else { $w[] = "u.username='******'"; } } } if (count($w)) { $where[] = '(' . implode(' OR ', $w) . ')'; } } else { if (isset($integrationArray[$key]) && $integrationArray[$key]) { if (strpos($value, '%') !== FALSE) { $where[] = 'profile.' . $integrationArray[$key] . " LIKE '{$value}'"; } else { $where[] = 'profile.' . $integrationArray[$key] . "='{$value}'"; } } if ($key == 'username') { if (strpos($v, '%') !== FALSE) { $w[] = "u.username LIKE '{$v}'"; } else { $w[] = "u.username='******'"; } } } } } return $where; }
function display() { $app = JFactory::getApplication(); // Get the page/component configuration $params = $app->getParams(); $database = JFactory::getDBO(); $searchType = $params->get("user_type"); $this->assign("search_type", $searchType); if ($params->get('show_page_title', 1)) { $page_title = $this->escape($params->get('page_title')); if ($page_title == "") { $page_title = JText::_("COM_BIDS_SEARCH_USERS"); } $this->assign("page_title", $page_title); } $extra_field_list = $params->get('extra_fields', array()); $lists['country']["label"] = "Country"; $lists['country']["html"] = BidsHelperHtml::selectCountry("country"); JHTML::_('behavior.calendar'); $profileMode = BidsHelperTools::getProfileMode(); if('component'==$profileMode) { $fields = CustomFieldsFactory::getSearchableFieldsList('user_profile'); $lists['custom_fields'] = JHtml::_('customfields.displaysearchhtml',$fields); //$this->assign('customFilters', $customFilters); } $lists["city"]["label"] = JText::_("COM_BIDS_CITY"); $lists["city"]["html"] = '<input type="text" name="city" />'; $lists["name"]["label"] = JText::_('COM_BIDS_NAME'); $lists["name"]["html"] = '<input type="text" name="name" />'; $this->assign('lists', $lists); $this->assign("search_fields", $extra_field_list); parent::display('elements/search/t_search_users.tpl'); }
function display() { $model = $this->getModel('auctions'); $lists = array(); $lists['users'] = JHTML::_('searchform.selectUsers',$model->getState('filters.users') ); $lists['active_users'] = JHTML::_('searchform.selectActiveUsers', $model->getState('filters.username') ); $lists['cats'] = JHTML::_('searchform.selectCategory', $model->getState('filters.cat') ); $lists['tags'] = JHTML::_('searchform.inputTags', $model->getState('filters.tagnames') ); $lists['after_calendar'] = JHTML::calendar($model->getState('filters.afterd'),'afterd','afterd','%Y-%m-%d'); $lists['before_calendar'] = JHTML::calendar($model->getState('filters.befored'),'befored','befored','%Y-%m-%d'); $lists['startprice'] = JHTML::_('searchform.inputPrice', 'startprice', $model->getState('filters.startprice') ); $lists['endprice'] = JHTML::_('searchform.inputPrice', 'endprice', $model->getState('filters.endprice') ); $lists['currency'] = JHTML::_('searchform.selectCurrency', 'currency', $model->getState('filters.currency')); $lists['inputReset'] = JHTML::_('searchform.inputReset'); //filters for integration fields $profile = BidsHelperTools::getUserProfileObject(); $integrationArray = $profile->getIntegrationArray(); foreach($integrationArray as $alias=>$fieldName) { if(''!=$fieldName) { $lists[$alias] = JHTML::_('searchform._selectProfileIntegrationFilter', $fieldName, $model->getState('filters.user_profile%'.$fieldName) ); } } JHTML::_('behavior.calendar'); JHTML::script(JURI::root() . 'components/com_bids/js/auctions.js'); $fields = CustomFieldsFactory::getSearchableFieldsList('auctions'); $fields_html=JHtml::_('customfields.displaysearchhtml',$fields,'divs'); $this->assign('lists', $lists); $this->assign("custom_fields_html", $fields_html ); parent::display('t_search.tpl'); }
function htmlLabelFilters($filters) { $database = JFactory::getDBO(); $searchstrings = array(); if ($filters->get('keyword')) { $searchstrings[JText::_('COM_BIDS_FILTER_KEYWORD')] = $filters->get('keyword'); } if ($filters->get('userid')) { $u = JFactory::getUser($filters->get('userid')); if ($u && !$u->block) { $searchstrings[JText::_('COM_BIDS_FILTER_USERS')] = $u->username; } } if ($filters->get('users')) { $users = array_filter($filters->get('users')); foreach ($users as $k => $u) { $users[$k] = intval($u); if (!$users[$k]) { unset($users[$k]); } } if (count($users)) { $database->setQuery('SELECT username FROM #__users WHERE id IN (' . $database->escape(implode(',', $users)) . ')'); $usernames = $database->loadResultArray(); $searchstrings[JText::_('COM_BIDS_FILTER_USERS')] = implode(',', $usernames); } } $username = $filters->get('username'); if (!empty($username)) { $searchstrings[JText::_('COM_BIDS_FILTER_USERS')] = $username; } if ($filters->get('cat')) { $database->setQuery("SELECT title FROM #__categories WHERE id='" . $database->getEscaped($filters->get('cat')) . "'"); $catname = $database->loadResult(); $searchstrings[JText::_('COM_BIDS_FILTER_CATEGORY')] = $catname; } if ($filters->get('afterd')) { $searchstrings[JText::_('COM_BIDS_FILTER_START_DATE')] = $filters->get('afterd'); } if ($filters->get('befored')) { $searchstrings[JText::_('COM_BIDS_FILTER_END_DATE')] = $filters->get('befored'); } if ($filters->get('tagid')) { $database->setQuery('SELECT tagname FROM #__bid_tags WHERE id=' . $database->quote($filters->get('tagid'))); $searchstrings[JText::_('COM_BIDS_FILTER_TAGS')] = $database->loadResult(); } if ($filters->get('tagnames')) { $searchstrings[JText::_('COM_BIDS_FILTER_TAGS_LIKE')] = $filters->get('tagnames'); } if ($filters->get('auction_nr')) { $searchstrings[JText::_('COM_BIDS_FILTER_AUCTION_NUMBER')] = $filters->get('auction_nr'); } if ($filters->get('inarch')) { $searchstrings[JText::_('COM_BIDS_FILTER_ARCHIVE')] = $filters->get('inarch') == 1 ? JText::_('COM_BIDS_YES') : JText::_('COM_BIDS_NO'); } if ($filters->get('filter_rated')) { $searchstrings[JText::_('COM_BIDS_FILTER_RATED')] = JText::_('COM_BIDS_UNRATED'); } if ($filters->get('country')) { $searchstrings[JText::_('COM_BIDS_FILTER_COUNTRY')] = $filters->get('country'); } if ($filters->get('city')) { $searchstrings[JText::_('COM_BIDS_FILTER_CITY')] = $filters->get('city'); } if ($filters->get('area')) { $searchstrings[JText::_('COM_BIDS_FILTER_AREA')] = $filters->get('area'); } if ($filters->get('currency')) { if ($filters->get('startprice')) { $searchstrings[JText::_('COM_BIDS_PRICE_GT')] = $filters->get('startprice') . ' ' . $filters->get('currency'); } if ($filters->get('endprice')) { $searchstrings[JText::_('COM_BIDS_PRICE_LT')] = $filters->get('endprice') . ' ' . $filters->get('currency'); } } //integration filter labels $profile = BidsHelperTools::getUserProfileObject(); $integrationArray = $profile->getIntegrationArray(); foreach ($integrationArray as $alias => $fieldName) { if ($fieldName) { if ($fValue = $filters->get('user_profile%' . $fieldName)) { //$searchstrings[JText::_( strtoupper('COM_BIDS_'.$alias) )] = $fValue; } } } //custom fields filter labels $searchableFields = CustomFieldsFactory::getSearchableFieldsList(); foreach ($searchableFields as $field) { $requestKey = $field->page . '%' . $field->db_name; if ($filters->get($requestKey)) { $ftype = CustomFieldsFactory::getFieldType($field->ftype ? $field->ftype : 'inputbox'); $searchstrings[JText::_($field->name)] = $ftype->htmlSearchLabel($field, $filters->get($requestKey)); } } return $searchstrings; }