Beispiel #1
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);
         }
     }
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
    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');
    }
Beispiel #4
0
    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;
 }