assignInclude( "listings", "./$skindir/listings.tpl" ); else $tpl->assignInclude( "listings", "./default_tpls/listings.tpl" ); include("includes/pagesetup.php"); $searchtype = (isset($_REQUEST['searchtype']) ? $_REQUEST['searchtype'] : "simple"); $searchterm = (isset($_REQUEST['searchterm']) ? escapestring($_REQUEST['searchterm']) : false); if(isset($_POST['submit']) || isset($_GET['offset'])) { $output .= "
"._RESULTS."
"; $query = array(); $countquery = array(); $scountquery = array(); if($searchtype == "fulltext") { $query = "SELECT stories.*, "._PENNAMEFIELD." as penname, stories.date as date, stories.updated as updated FROM "._AUTHORTABLE.", ".TABLEPREFIX."fanfiction_stories as stories, ".TABLEPREFIX."fanfiction_chapters as chapter WHERE chapter.storytext LIKE '%$searchterm%' AND chapter.sid = stories.sid AND stories.uid = "._UIDFIELD; $countquery = "SELECT count(stories.sid) FROM ".TABLEPREFIX."fanfiction_stories as stories, ".TABLEPREFIX."fanfiction_chapters as chapter WHERE chapter.storytext LIKE '%$searchterm%' AND chapter.sid = stories.sid GROUP BY stories.sid"; $query .= " "._ORDERBY; search($query, $countquery); $tpl->assign("output", $output); $tpl->printToScreen(); dbclose( ); exit( ); } if($searchterm && strlen($searchterm) < 3) { errorExit(_SEARCHTERMTOOSHORT); } if($searchterm) { if($searchtype == "title") { $query[] = "stories.title LIKE '%$searchterm%'"; $countquery[] = "stories.title LIKE '%$searchterm%'"; $scountquery[] = "series.title LIKE '%$searchterm%'"; } if($searchtype == "summary") { $query[] = "stories.summary LIKE '%$searchterm%'"; $countquery[] = "stories.summary LIKE '%$searchterm%'"; $scountquery[] = "series.summary LIKE '%$searchterm%'"; } if($searchtype == "penname") { $authorquery = dbquery(_MEMBERLIST." WHERE "._PENNAMEFIELD." LIKE '%$searchterm%' GROUP BY "._UIDFIELD); $authorlist = array(); while($auth = dbassoc($authorquery)) { $authorlist[] = $auth['uid']; } if(count($authorlist) > 0) { $authors = implode(",",$authorlist); $query = "SELECT stories.*, "._PENNAMEFIELD." as penname, stories.date as date, stories.updated as updated FROM ("._AUTHORTABLE.", ".TABLEPREFIX."fanfiction_stories as stories) LEFT JOIN ".TABLEPREFIX."fanfiction_coauthors as coauth ON coauth.sid = stories.sid WHERE "._UIDFIELD." = stories.uid AND stories.validated > 0 AND (FIND_IN_SET(stories.uid, '$authors') > 0 OR FIND_IN_SET(coauth.uid, '$authors') > 0) "; $countquery = "SELECT COUNT(stories.sid) FROM ".TABLEPREFIX."fanfiction_stories as stories LEFT JOIN ".TABLEPREFIX."fanfiction_coauthors as coauth ON coauth.sid = stories.sid WHERE stories.validated > 0 AND (FIND_IN_SET(stories.uid, '$authors') > 0 OR FIND_IN_SET(coauth.uid, '$authors') > 0)"; search($query, $countquery); $tpl->assign("output", $output); $tpl->printToScreen(); dbclose( ); exit( ); } else { $query[] = "1 = 0"; $countquery[] = "1 = 0"; $scountquery[] = "1 = 0"; } } if($searchtype == "advanced") { $query[] = "(stories.summary LIKE '%$searchterm%' OR stories.title LIKE '%$searchterm%') "; $countquery[] = "(stories.summary LIKE '%$searchterm%' OR stories.title LIKE '%$searchterm%') "; $scountquery[] = "(summary LIKE '%$searchterm%' OR title LIKE '%$searchterm%') "; } } if(isset($_REQUEST['authors'])) { $authors = isarray($_REQUEST['authors']) ? $_REQUEST['authors'] : explode(",", $_REQUEST['authors']); $authors = array_filter($authors, "isNumber"); if($authors) { $authors = implode(",", $authors); $query[] = "FIND_IN_SET(stories.uid, '$authors') > 0"; $countquery[] = "FIND_IN_SET(stories.uid, '$authors') > 0"; $scountquery[] = "FIND_IN_SET(series.uid, '$authors') > 0"; } else { $query[] = "1 = 0"; $countquery[] = "1 = 0"; $scountquery[] = "1 = 0"; } } if(isset($_REQUEST['catid'])) { $catid = is_array($_REQUEST['catid']) ? $_REQUEST['catid'] : explode(",", $_REQUEST['catid']); $catid = array_filter($catid, "isNumber"); } if(!isset($catid)) $catid = array("false"); $categories = array( ); // Get the recursive list. foreach($catid as $cat) { if($cat == "false" || empty($cat)) continue; $categories = array_merge($categories, recurseCategories($cat)); } // Now format the SQL foreach($categories as $cat) { $catstories[] = "FIND_IN_SET($cat, stories.catid) > 0 "; $catseries[] = "FIND_IN_SET($cat, series.catid) > 0 "; } // Now implode the SQL list if(!empty($catstories)) { $query[] = "(".implode(" OR ", $catstories).")"; $countquery[] = "(".implode(" OR ", $catstories).")"; $scountquery[] = "(".implode(" OR ", $catseries).")"; } if(isset($_REQUEST['charid'])) { $charid = is_array($_REQUEST['charid']) ? $_REQUEST['charid'] : explode(",", $_REQUEST['charid']); } else $charid = array( ); if(isset($_REQUEST['charlist1'])) $charid[] = $_REQUEST['charlist1']; if(isset($_REQUEST['charlist2'])) $charid[] = $_REQUEST['charlist2']; $charid = array_filter($charid, "isNumber"); if(count($charid) > 0) { foreach($charid as $c) { if(!empty($c)) { $charstories[] = "FIND_IN_SET($c, stories.charid) > 0 "; $charseries[] = "FIND_IN_SET($c, series.characters) > 0 "; } } if(count($charstories) > 0) { $query[] = "(".implode(" AND ", $charstories).")"; $countquery[] = "(".implode(" AND ", $charstories).")"; } if(count($charseries) > 0) $scountquery[] = "(".implode(" AND ", $charseries).")"; } if(isset($_REQUEST['rid'])) $rid = is_array($_REQUEST['rid']) ? $_REQUEST['rid'] : explode(",", $_REQUEST['rid']); else $rid = array(); if(count($rid) > 0) { $rid = array_filter($rid, "isNumber"); $query[] = findclause('rid', $rid); $countquery[] = findclause('rid', $rid); } if(isset($_REQUEST['complete'])) { $query[] = "stories.completed = '1'"; $countquery[] = "stories.completed = '1'"; } $classin = array( ); $classex = array( ); foreach($classtypelist as $id => $vars) { $opts = array( ); $exopts = array( ); if(isset($_POST["class_".$id])) $opts = array_filter($_POST["class_".$id], "isNumber"); else if(isset($_GET["class_".$id])) { $opts = array_merge($opts, explode(",", $_GET["class_".$id])); $opts = array_filter($opts, "isNumber"); } else if(isset($_REQUEST[$vars["name"]])) $opts[] = array($_REQUEST[$vars["name"]]); $classin = array_merge($classin, $opts); if(isset($_POST["exclass_".$id])) $exopts = array_filter($_POST["exclass_".$id], "isNumber"); else if(isset($_GET["exclass_".$id])) { $exopts = array_merge($exopts, explode(",", $_GET["exclass_".$id])); $exopts = array_filter($exopts, "isNumber"); } $classex = array_merge($classex, $exopts); unset($opts, $exopts); } if($classin) { foreach($classin as $class) { $query[] = "FIND_IN_SET($class, stories.classes) > 0"; $countquery[] = "FIND_IN_SET($class, stories.classes) > 0"; $scountquery[] = "FIND_IN_SET($class, series.classes) > 0"; } } if($classex) { foreach($classex as $class) { $query[] = "FIND_IN_SET($class, stories.classes) = 0"; $countquery[] = "FIND_IN_SET($class, stories.classes) = 0"; $scountquery[] = "FIND_IN_SET($class, series.classes) = 0"; } } // Begin story length unset($wordcount); $wordlow = isset($_REQUEST['wordlow']) && isNumber($_REQUEST['wordlow']) ? $_REQUEST['wordlow'] : "-500"; $wordhigh = isset($_REQUEST['wordhigh']) && isNumber($_REQUEST['wordhigh']) ? $_REQUEST['wordhigh'] : "1000000"; if($wordlow != "-500") $wordcount = "stories.wordcount > ".$wordlow; if($wordhigh != "1000000") { if($wordcount) $wordcount .= " AND stories.wordcount < ".$wordhigh; else $wordcount = "stories.wordcount < ".$wordhigh; } if($wordhigh < $wordlow) $wordcount = "stories.wordcount < ".$wordlow; if(!empty($wordcount)) { $query[] = "($wordcount)"; $countquery[] = "($wordcount)"; } // End wordcount $codeblocks = dbquery("SELECT * FROM ".TABLEPREFIX."fanfiction_codeblocks WHERE code_type = 'browseterms'"); while($code = dbassoc($codeblocks)) { eval($code['code_text']); } $query = (count($query) > 0 ? " AND ".implode(" AND ", $query) : "")." "._ORDERBY; $countquery = count($countquery) > 0 ? " AND ".implode(" AND ", $countquery) : ""; if(count($scountquery) > 0) $scountquery = " WHERE ".implode(" AND ", $scountquery); search(_STORYQUERY.$query, _STORYCOUNT.$countquery); $otherresults = array( ); $termArray = array_merge($_GET, $_POST); $termsList = array(); foreach($termArray as $term => $value) { if($term == "submit" || $term == "wordhigh" || $term == "wordlow" || empty($value) || $term == "formname" || $term == "searchtype") continue; $termsList[$term] = "$term=".(is_array($value) ? implode(",", $value) : $value); } $terms = implode("&", $termsList); if(!empty($scountquery)) { $seriesresults = dbquery(_SERIESCOUNT.$scountquery); list($scount) = dbrow($seriesresults); if($scount > 0) $otherresults[] = "$scount "._SERIES.""; } $codeblocks = dbquery("SELECT * FROM ".TABLEPREFIX."fanfiction_codeblocks WHERE code_type = 'otherresults'"); while($code = dbassoc($codeblocks)) { eval($code['code_text']); } if(count($otherresults) > 0) $tpl->assign("otherresults", "
"._OTHERRESULTS.": ".implode(", ", $otherresults)."
"); } else { if($searchtype == "simple") { $output .= "
"._SIMPLE."
"; $output .= "
"._ADVANCED."
"; } else { $output .= "
"._ADVANCED."
"; if($multiplecats) { include("includes/categories.php"); $output .= ""; } $output .= "
"; if(count($charlist) > 0) { $output .= "

\n"; $output .= "
"; } $result = dbquery("SELECT rid, rating FROM ".TABLEPREFIX."fanfiction_ratings ORDER BY rating"); if(dbnumrows($result)) { $output .= "

"; } $output .= "
 
"; $output .= "
"._MULTIPLESELECT."
"; $result = dbquery("SELECT * FROM ".TABLEPREFIX."fanfiction_classtypes ORDER BY classtype_name"); while($type = dbassoc($result)) { $result2 = dbquery("SELECT * FROM ".TABLEPREFIX."fanfiction_classes WHERE class_type = '".$type['classtype_id']."' ORDER BY class_name"); $select = ""; while ($class = dbassoc($result2)) { $select .= ""; } $output .= "


"; } $output .= "
-

"; $codequery = dbquery("SELECT * FROM ".TABLEPREFIX."fanfiction_codeblocks WHERE code_type = 'searchform'"); while($code = dbassoc($codequery)) { eval($code['code_text']); } $output .= "
"; } } $tpl->assign("output", $output); $tpl->printToScreen(); dbclose( ); ?>