Great! I'd deleted the column out from the template by mistake
Thanks for a really great module!
<?php
$xoopsOption['pagetype'] = "search";
include '../../mainfile.php';
$mydirname = basename( dirname( __FILE__ ) ) ;
$search_lang = '_' . strtoupper( $mydirname ) ;
$xmid = $xoopsModule->getVar('mid');
$config_handler =& xoops_gethandler('config');
$xoopsConfigSearch =& $config_handler->getConfigsByCat(XOOPS_CONF_SEARCH);
if ($xoopsConfigSearch['enable_search'] != 1) {
header("Location: '.XOOPS_URL.'modules/$mydirname/index.php");
exit();
}
$action = "search";
if (!empty($_GET['action'])) {
$action = $_GET['action'];
} elseif (!empty($_POST['action'])) {
$action = $_POST['action'];
}
$query = "";
if (!empty($_GET['query'])) {
$query = $_GET['query'];
} elseif (!empty($_POST['query'])) {
$query = $_POST['query'];
}
$andor = "AND";
if (!empty($_GET['andor'])) {
$andor = $_GET['andor'];
} elseif (!empty($_POST['andor'])) {
$andor = $_POST['andor'];
}
$mid = $uid = $start = 0;
if ( !empty($_GET['mid']) ) {
$mid = intval($_GET['mid']);
} elseif ( !empty($_POST['mid']) ) {
$mid = intval($_POST['mid']);
}
if (!empty($_GET['uid'])) {
$uid = intval($_GET['uid']);
} elseif (!empty($_POST['uid'])) {
$uid = intval($_POST['uid']);
}
if (!empty($_GET['level'])) {
$level = $_GET['level'];
} elseif (!empty($_POST['level'])) {
$level = $_POST['level'];
}
if (!empty($_GET['start'])) {
$start = intval($_GET['start']);
} elseif (!empty($_POST['start'])) {
$start = intval($_POST['start']);
}
$queries = array();
if ($action == "results") {
if ($query == "") {
redirect_header("search.php",1,_SR_PLZENTER);
exit();
}
} elseif ($action == "showall") {
if ($query == "" || empty($mid)) {
redirect_header("search.php",1,_SR_PLZENTER);
exit();
}
} elseif ($action == "showallbyuser") {
if (empty($mid) || empty($uid)) {
redirect_header("search.php",1,_SR_PLZENTER);
exit();
}
}
$groups = is_object($xoopsUser) ? $xoopsUser -> getGroups() : XOOPS_GROUP_ANONYMOUS;
$gperm_handler = & xoops_gethandler( 'groupperm' );
$available_modules = $gperm_handler->getItemIds('module_read', $groups);
if ($action == 'search') {
include XOOPS_ROOT_PATH.'/header.php';
include 'include/searchform.php';
$search_form->display();
include XOOPS_ROOT_PATH.'/footer.php';
exit();
}
if ( $andor != "OR" && $andor != "exact" && $andor != "AND" ) {
$andor = "AND";
}
$myts =& MyTextSanitizer::getInstance();
if ($action != 'showallbyuser') {
if ( $andor != "exact" ) {
$ignored_queries = array(); // holds keywords that are shorter than allowed mininum length
$temp_queries = preg_split('/[s,]+/', $query);
foreach ($temp_queries as $q) {
$q = trim($q);
if (strlen($q) >= $xoopsConfigSearch['keyword_min']) {
$queries[] = $myts->addSlashes($q);
} else {
$ignored_queries[] = $myts->addSlashes($q);
}
}
if (count($queries) == 0) {
redirect_header('search.php', 2, sprintf(_SR_KEYTOOSHORT, $xoopsConfigSearch['keyword_min']));
exit();
}
} else {
$query = trim($query);
if (strlen($query) < $xoopsConfigSearch['keyword_min']) {
redirect_header('search.php', 2, sprintf(_SR_KEYTOOSHORT, $xoopsConfigSearch['keyword_min']));
exit();
}
$queries = array($myts->addSlashes($query));
}
}
switch ($action) {
case "results":
$module_handler =& xoops_gethandler('module');
$criteria = new CriteriaCompo(new Criteria('hassearch', 1));
$criteria->add(new Criteria('isactive', 1));
$criteria->add(new Criteria('mid', "(".implode(',', $available_modules).")", 'IN'));
$modules =& $module_handler->getObjects($criteria, true);
$mids = isset($_REQUEST['mids']) ? $_REQUEST['mids'] : array();
if (empty($mids) || !is_array($mids)) {
unset($mids);
$mids = array_keys($xmid);
}
include XOOPS_ROOT_PATH."/header.php";
// for XOOPS 2.2.x versions
if ( file_exists("language/".$xoopsConfig['language']."/main.php") ) {
include_once("language/".$xoopsConfig['language']."/main.php");
} else {
include_once("language/english/main.php");
}
// end
echo "<h3>".constant($search_lang."_SEARCHRESULTS")."</h3>n";
echo _SR_KEYWORDS.':';
if ($andor != 'exact') {
foreach ($queries as $q) {
echo ' <b>'.htmlspecialchars(stripslashes($level)).'</b>';
}
if (!empty($ignored_queries)) {
echo '<br />';
printf(_SR_IGNOREDWORDS, $xoopsConfigSearch['keyword_min']);
foreach ($ignored_queries as $q) {
echo ' <b>'.htmlspecialchars(stripslashes($q)).'</b>';
}
}
} else {
echo ' "<b>'.htmlspecialchars(stripslashes($queries[0])).'</b>"';
}
echo '<br />';
foreach ($mids as $mid) {
$mid = intval($mid);
if ( in_array($mid, $available_modules) ) {
$module =& $modules[$mid];
$results =& $module->search($queries, $andor, 5, 0, $level);
$count = count($results);
if (!is_array($results) || $count == 0) {
echo "<p>"._SR_NOMATCH."</p>";
} else {
for ($i = 0; $i < $count; $i++) {
echo "<table width="100%" class="outer"><tr>";
echo "<td width="30%">";echo "<b>".$myts->makeTboxData4Show($results[$i]['type'])."</b><br /><br />";
echo "<small>";
$results[$i]['uid'] = @intval($results[$i]['uid']);
if ( !empty($results[$i]['uid']) ) {
$uname = XoopsUser::getUnameFromId($results[$i]['uid']);
echo " ".constant($search_lang."_FROM")."<a href='".XOOPS_URL."/userinfo.php?uid=".$results[$i]['uid']."'>".$uname."</a>n";
}
echo !empty($results[$i]['time']) ? " (". formatTimestamp(intval($results[$i]['time'])).")" : "";
echo "</small>";
if (isset($results[$i]['photo']) && $results[$i]['photo'] != "") {
echo "<a href='".$results[$i]['link']."'><img src='".$results[$i]['sphoto']."' alt='' width='100' /></a></td> ";
} else {
}
if (!preg_match("/^http[s]*:///i", $results[$i]['link'])) {
$results[$i]['link'] = "".$results[$i]['link'];
}
echo "<td width="50%">";
echo "<b><a href='".$results[$i]['link']."'>".$myts->makeTboxData4Show($results[$i]['title'])."</a></b><br /><br />";
if ( !XOOPS_USE_MULTIBYTES ) {
if (strlen($results[$i]['desctext']) >= 14) {
$results[$i]['desctext'] = substr($results[$i]['desctext'],0,90)."...";
}
}
echo "".$myts->makeTboxData4Show($results[$i]['cat_desc'])."";
echo "</table><table>";
}
if ( $count >= 5 ) {
$search_url = XOOPS_URL."/modules/$mydirname/search.php?query=".urlencode(stripslashes(implode(' ', $queries)));
$search_url .= "&mid=$mid&action=showall&andor=$andor";
echo '<br /><a href="'.htmlspecialchars($search_url).'">'._SR_SHOWALLR.'</a>';
}
echo"<table>";
}
}
unset($results);
unset($module);
}
include "include/searchform.php";
$search_form->display();
break;
case "showall":
case 'showallbyuser':
include XOOPS_ROOT_PATH."/header.php";
// for XOOPS 2.2.x versions
if ( file_exists("language/".$xoopsConfig['language']."/main.php") ) {
include_once("language/".$xoopsConfig['language']."/main.php");
} else {
include_once("language/english/main.php");
}
// end
$module_handler =& xoops_gethandler('module');
$module =& $module_handler->get($mid);
$results =& $module->search($queries, $andor, 20, $start, $uid, $level);
$count = count($results);
if (is_array($results) && $count > 0) {
$next_results =& $module->search($queries, $andor, 1, $start + 20, $uid, $level);
$next_count = count($next_results);
$has_next = false;
if (is_array($next_results) && $next_count == 1) {
$has_next = true;
}
echo "<h4>".constant($search_lang."_SEARCHRESULTS")."</h4>n";
if ($action == 'showall') {
echo _SR_KEYWORDS.':';
if ($andor != 'exact') {
foreach ($queries as $q) {
echo ' <b>'.htmlspecialchars(stripslashes($q)).'</b>';
}
} else {
echo ' "<b>'.htmlspecialchars(stripslashes($queries[0])).'</b>"';
}
echo '<br /><br />';
}
// printf(_SR_FOUND,$count);
// echo "<br />";
printf(_SR_SHOWING, $start+1, $start + $count);
for ($i = 0; $i < $count; $i++) {
echo "<table width="100%" class="outer"><tr>";
echo "<td width="30%">";echo "<b>".$myts->makeTboxData4Show($results[$i]['type'])."</b><br /><br />";
echo "<small>";
$results[$i]['uid'] = @intval($results[$i]['uid']);
if ( !empty($results[$i]['uid']) ) {
$uname = XoopsUser::getUnameFromId($results[$i]['uid']);
echo " ".constant($search_lang."_FROM")."<a href='".XOOPS_URL."/userinfo.php?uid=".$results[$i]['uid']."'>".$uname."</a><br />";
}
echo !empty($results[$i]['time']) ? " (". formatTimestamp(intval($results[$i]['time'])).")" : "";
echo "</small>";
if (isset($results[$i]['photo']) && $results[$i]['photo'] != "") {
echo "<a href='".$results[$i]['link']."'><img src='".$results[$i]['sphoto']."' alt='' width='100' /></a></td> ";
} else {
}
if (!preg_match("/^http[s]*:///i", $results[$i]['link'])) {
$results[$i]['link'] = "".$results[$i]['link'];
}
echo "<td width="50%">";
echo "<b><a href='".$results[$i]['link']."'>".$myts->makeTboxData4Show($results[$i]['title'])."</a></b><br /><br />";
if ( !XOOPS_USE_MULTIBYTES ) {
if (strlen($results[$i]['desctext']) >= 14) {
$results[$i]['desctext'] = substr($results[$i]['desctext'],0,90)."...";
}
}
echo "".$myts->makeTboxData4Show($results[$i]['cat_desc'])."";
echo "</table><table>";
}
echo '
<table>
<tr>
';
$search_url = XOOPS_URL."/modules/$mydirname/search.php?query=".urlencode(stripslashes(implode(' ', $queries)));
$search_url .= "&mid=$mid&action=$action&andor=$andor";
if ($action=='showallbyuser') {
$search_url .= "&uid=$uid";
}
if ( $start > 0 ) {
$prev = $start - 20;
echo '<td align="left">
';
$search_url_prev = $search_url."&start=$prev";
echo '<a href="'.htmlspecialchars($search_url_prev).'">'._SR_PREVIOUS.'</a></td>
';
}
echo '<td> </td>
';
if (false != $has_next) {
$next = $start + 20;
$search_url_next = $search_url."&start=$next";
echo '<td align="right"><a href="'.htmlspecialchars($search_url_next).'">'._SR_NEXT.'</a></td>
';
}
echo '
</tr>
</table>
<p>
';
} else {
echo '<p>'._SR_NOMATCH.'</p>';
}
include "include/searchform.php";
$search_form->display();
echo '</p>
';
break;
}
include XOOPS_ROOT_PATH."/footer.php";
?>
<?php
$mydirname = basename( dirname( dirname( __FILE__ ) ) );
function classifieds_search($queryarray, $andor, $limit, $offset, $userid, $level){
global $xoopsDB, $xoopsModuleConfig, $mydirname;
$search_lang = '_' . strtoupper( $mydirname ) ;
$sql = "select
l.lid,l.title,l.type,l.desctext,l.price,l.typeprice,l.date,l.usid,l.town,l.country,l.premium,p.cat_desc FROM ".$xoopsDB->prefix("".$mydirname."_listing")." l LEFT JOIN ".$xoopsDB->prefix("".$mydirname."_categories")." p ON l.cid=p.cid WHERE valid='Yes' AND date<=".time()."";
if ( $userid != 0 ) {
$sql .= " AND l.usid=".$userid." ";
}
//if (lid=lid)
// because count() returns 1 even if a supplied variable
// is not an array, we must check if $querryarray is really an array
if ( is_array($queryarray) && $count = count($queryarray) ) {
$sql .= " AND ((l.title LIKE '%$queryarray[0]%' OR l.type LIKE '%$queryarray[0]%' OR l.desctext LIKE '%$queryarray[0]%'OR l.price LIKE '%$queryarray[0]%' OR l.typeprice LIKE '%$queryarray[0]%' OR l.town LIKE '%$queryarray[0]%' OR l.country LIKE '%$queryarray[0]%' )";
for($i=1;$i<$count;$i++){
$sql .= " $andor ";
$sql .= "(l.title LIKE '%$queryarray[$i]%' OR l.type LIKE '%$queryarray[$i]%' OR l.desctext LIKE '%$queryarray[$i]%' OR l.price LIKE '%$queryarray[$i]%' OR l.typeprice LIKE '%$queryarray[$i]%' OR l.town LIKE '%$queryarray[$i]%' OR l.country LIKE '%$queryarray[$i]%' )";
}
$sql .= " ) ";
}
$sql .= "AND (l.type LIKE '$level') ORDER BY premium DESC, date DESC";
$result = $xoopsDB->query($sql,$limit,$offset);
$ret = array();
$i = 0;
while($myrow = $xoopsDB->fetchArray($result)){
$ret[$i]['image'] = "images/cat/default.gif";
$ret[$i]['link'] = "index.php?pa=viewads&lid=".$myrow['lid']."";
$ret[$i]['title'] = $myrow['title'];
$ret[$i]['type'] = $myrow['type'];
$ret[$i]['price'] = number_format($myrow['price'], 2, ".", ",");
$ret[$i]['typeprice'] = $myrow['typeprice'];
$ret[$i]['town'] = $myrow['town'];
$ret[$i]['desctext'] = $myrow['desctext'];
$ret[$i]['nophoto'] = "images/nophoto.jpg";
$ret[$i]['cat_desc'] = $myrow['cat_desc'];
$ret[$i]['sphoto'] = "photo/thumbs/thumb_".$myrow['url']."";
$ret[$i]['time'] = $myrow['date'];
$ret[$i]['uid'] = $myrow['usid'];
$i++;
}
return $ret;
}
?>