function advsearch2($option) { global $mtconf; $database =& JFactory::getDBO(); $post = JRequest::get('post'); $search_where = JRequest::getVar('search_where', '', 'post'); // 1: Listing, 2: Category $limit = JRequest::getInt('limit', 15); $limitstart = JRequest::getInt('limitstart', 0); $owner = JRequest::getVar('owner', '', 'post'); $searchParams = array(); # Load all published CORE & custom fields $database->setQuery("SELECT cf.*, '0' AS link_id, '' AS value, '0' AS attachment, ft.ft_class FROM #__mt_customfields AS cf " . "\nLEFT JOIN #__mt_fieldtypes AS ft ON ft.field_type=cf.field_type" . "\nWHERE cf.published='1' ORDER BY ordering ASC"); $fields = new mFields($database->loadObjectList()); $searchParams = $fields->loadSearchParams($post); foreach (array('publishing', 'link_template', 'link_rating', 'rating_2', 'link_votes', 'votes_2', 'link_hits', 'hits_2', 'reviews', 'reviews_2', 'internal_notes', 'metakey', 'metadesc', 'price_2', 'price') as $otherField) { $searchParams[$otherField] = JRequest::getVar($otherField, '', 'post'); } # Search query if ($search_where == 1) { $where = array(); $having = ''; $advsearch = new mAdvancedSearch($database); if (JRequest::getInt('searchcondition', 1, 'post') == '2') { $advsearch->useAndOperator(); } else { $advsearch->useOrOperator(); } $fields->resetPointer(); while ($fields->hasNext()) { $field = $fields->getField(); $searchFields = $field->getSearchFields(); if (array_key_exists(0, $searchFields) && isset($searchParams[$searchFields[0]]) && !empty($searchParams[$searchFields[0]])) { foreach ($searchFields as $searchField) { if (isset($searchParams[$searchField])) { $searchFieldValues[] = $searchParams[$searchField]; } } if (count($searchFieldValues) > 0 && !empty($searchFieldValues[0])) { if (is_array($searchFieldValues[0]) && empty($searchFieldValues[0][0])) { // Do nothing } else { $tmp_where_cond = call_user_func_array(array($field, 'getWhereCondition'), $searchFieldValues); if (!is_null($tmp_where_cond)) { $advsearch->addCondition($field, $searchFieldValues); } } } unset($searchFieldValues); } $fields->next(); } if (!empty($searchParams['metadesc'])) { $advsearch->addRawCondition('metadesc LIKE \'%' . $database->getEscaped($searchParams['metadesc'], true) . '%\''); } if (!empty($searchParams['metakey'])) { $advsearch->addRawCondition('metakey LIKE \'%' . $database->getEscaped($searchParams['metakey'], true) . '%\''); } if (!empty($searchParams['internal_notes'])) { $advsearch->addRawCondition('internal_notes LIKE \'%' . $database->getEscaped($searchParams['internal_notes']) . '%\''); } if (!empty($searchParams['link_template'])) { $advsearch->addRawCondition('link_template = ' . $database->quote($searchParams['link_template'])); } if (is_numeric($searchParams['link_rating']) && $searchParams['link_rating'] >= 0 && $searchParams['link_rating'] <= 5) { switch ($searchParams['rating_2']) { case 1: $advsearch->addRawCondition('link_rating = ' . $database->quote($searchParams['link_rating'])); break; case 2: $advsearch->addRawCondition('link_rating > ' . $database->quote($searchParams['link_rating'])); break; case 3: $advsearch->addRawCondition('link_rating < ' . $database->quote($searchParams['link_rating'])); break; } } // votes if (is_numeric($searchParams['link_votes']) && $searchParams['link_votes'] >= 0) { switch ($searchParams['votes_2']) { case 1: $advsearch->addRawCondition('link_votes = ' . $database->quote($searchParams['link_votes'])); break; case 2: $advsearch->addRawCondition('link_votes > ' . $database->quote($searchParams['link_votes'])); break; case 3: $advsearch->addRawCondition('link_votes < ' . $database->quote($searchParams['link_votes'])); break; } } // hits if (is_numeric($searchParams['link_hits']) && $searchParams['link_hits'] >= 0) { switch ($searchParams['hits_2']) { case 1: $advsearch->addRawCondition('link_hits = ' . $database->quote($searchParams['link_hits'])); break; case 2: $advsearch->addRawCondition('link_hits > ' . $database->quote($searchParams['link_hits'])); break; case 3: $advsearch->addRawCondition('link_hits < ' . $database->quote($searchParams['link_hits'])); break; } } // price if (is_numeric($searchParams['price']) && $searchParams['price'] >= 0) { switch ($searchParams['price_2']) { case 1: $advsearch->addRawCondition('price = ' . $database->quote($searchParams['price'])); break; case 2: $advsearch->addRawCondition('price > ' . $database->quote($searchParams['price'])); break; case 3: $advsearch->addRawCondition('price < ' . $database->quote($searchParams['price'])); break; } } $jdate = JFactory::getDate(); $now = $jdate->toMySQL(); $nullDate = $database->getNullDate(); switch ($searchParams['publishing']) { case 2: // Published $advsearch->addRawCondition("( (publish_up = " . $database->Quote($nullDate) . " OR publish_up <= '{$now}') AND " . "(publish_down = " . $database->Quote($nullDate) . " OR publish_down >= '{$now}') AND " . "link_published = '1' )"); break; case 3: // Unpublished $advsearch->addRawCondition("link_published = '0'"); break; case 4: // Pending $advsearch->addRawCondition("( (publish_up => '{$now}' OR publish_up = " . $database->Quote($nullDate) . ") AND link_published = '1' )"); break; case 5: // Expired $advsearch->addRawCondition("( publish_down < '{$now}' AND link_published = '1' )"); break; case 6: // Pending Listing, waiting for approval $advsearch->addRawCondition("link_approved <= 0"); break; } # Check if this owner exists # Lookup owner's userid. Return error if does not exists if (!empty($owner)) { $database->setQuery('SELECT id FROM #__users WHERE username ='******'l.user_id = ' . $database->quote($owner_id)); } else { echo "<script> alert('" . JText::_('Invalid owner select again') . "'); window.history.go(-1); </script>\n"; exit; } } $advsearch->search(); // Total Results $total = $advsearch->getTotal(); // Links $where[] = "cl.main = '1'"; $where[] = "cl.link_id = l.link_id"; } else { // Total Results $database->setQuery("SELECT COUNT(*) FROM #__mt_cats WHERE cat_name LIKE '%" . $database->getEscaped($search_text, true) . "%'"); $total = $database->loadResult(); // Categories $database->setQuery("SELECT * FROM #__mt_cats WHERE cat_name LIKE '%" . $database->getEscaped($search_text, true) . "%' ORDER BY cat_name ASC LIMIT {$limitstart}, {$limit}"); } $results = $advsearch->loadResultList($limitstart, $limit); # Page Navigation jimport('joomla.html.pagination'); $pageNav = new JPagination($total, $limitstart, $limit); # Get Pathway $pathWay = new mtPathWay(); # Results Output // /* if ($search_where == 1) { // Links HTML_mtree::advsearchresults_links($results, $fields, $pageNav, $pathWay, $search_where, $option); } else { // Categories HTML_mtree::searchresults_categories($results, $pageNav, $pathWay, $search_where, $option); } // */ }