<?php
/* 4D Quiz Search script © 4DQuiz.com, Author: Balinder Singh Walia, Modified: 27 March 2006 18:53:58 */
// include the reusable classes/functions which are required - MySQL Database search class, extracting class from keyword etc.
include_once("./includes/common_classes.php");
$debugBool = false;
$nResultRowCount = 0;
$pUrlQueryStr = lib_getWebFormData('q', ''); // Get web form value - query keyword(s), language, advanced search (slower)
$pLanguageCodeStr = lib_getWebFormData('l',$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
$pAdvancedSearchBool = (lib_getWebFormData('s','') === 'a');
$pIPAddrStr = lib_getWebFormData('i',$_SERVER["REMOTE_ADDR"]);
$pIsForWidget = (lib_getWebFormData('m','') === 'apple_dashboard_widget');
$pWidgetVersion = lib_getWebFormData('v','');
// if language is us set to search in en as the database same for both of these languages
switch ($pLanguageCodeStr) {
case 'en':
break;
case 'us':
$pLanguageCodeStr = 'en';
break;
case 'fr':
break;
default:
$pLanguageCodeStr = 'en';
}
$keyword = new stringIntoTwoParts;
$keyword->commandStr = $pUrlQueryStr;
$keyword->findStrArr = array(' c:', 'c:' , ' class:', 'class:', ' product:', 'product:', 'plugin:', ' plugin:');
$keyword->stringIntoTwoParts(); // extract keyword and class from search keyword if any
$classStr = $keyword->seacrhClassStr;
$pUrlQueryStr = $keyword->keywordStr;
$limitStartInt = 0;
$limitStopInt = 1000;
if($classStr) { // class is provided
if(($classStr == "ot") || ($classStr == "OT") || ($classStr == "Ot") || ($classStr == "oT")) { $classStr = "objecttools"; }
if($pAdvancedSearchBool){ //bwalia 20060228 Advanced text field search added
$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND class LIKE '" . $classStr . "' AND advancedSearch LIKE '" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
}
else {
$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND class LIKE '" . $classStr . "' AND quickSearch LIKE '" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
}
} else { // class is NOT provided
if($pAdvancedSearchBool){ //bwalia 20060228 Advanced text field search added
//$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND name LIKE '" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND advancedSearch LIKE '" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
}
else {
$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND quickSearch LIKE '" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
}
}
$db = new dbMYSQL();
//$db->bDebug = true;
$localServerBool = (($_SERVER["HTTP_HOST"] == "localhost") || ($_SERVER["HTTP_HOST"] == "local.4dquiz.com") || ($_SERVER["HTTP_HOST"]=="dev.4dquiz.com"));
if($localServerBool) { $db->passwordStr = 'xxxxxx';
//$db->serverStr = 'localhost';
} // development server should override mysql server to localhost
$db->queryStr = $queryStr;
$obj = new html();
if($db->queryMySQL()){
$obj->pResultInt = $db->resultInt;
$obj->generateHtml();
$nResultRowCount = $obj->pNumLines;
}
if(strlen($pUrlQueryStr) > 2) {
if($classStr) {
if($pAdvancedSearchBool){ //bwalia 20060228 Advanced text field search added
$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND class LIKE '" . $classStr . "' AND advancedSearch LIKE '%" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
} else {
//$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND class LIKE '" . $classStr . "' AND name LIKE '%" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND class LIKE '" . $classStr . "' AND quickSearch LIKE '%" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
}
} else {
if($pAdvancedSearchBool){ //bwalia 20060228 Advanced text field search added
$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND advancedSearch LIKE '%" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
} else {
//$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND name LIKE '%" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
$queryStr = "SELECT number, name, url, syntax FROM 4D_Commands WHERE `language` = '$pLanguageCodeStr' AND quickSearch LIKE '%" . $pUrlQueryStr . "%' ORDER BY `name` ASC LIMIT " . $limitStartInt . ", " . $limitStopInt;
}
}
$db->queryStr = $queryStr;
if($db->queryMySQL()){
$obj->pResultInt = $db->resultInt;
$obj->generateHtml();
$nResultRowCount = $obj->pNumLines;
}
}
$responseText = $obj->pHtmlTxt; // Log response in database
include_once("log_request_insert.php"); // Log request in database
$db->closeMySQL();
if($obj->pHtmlTxt != '') {
echo $obj->pHtmlTxt; // print the html output for web page or 4dquiz widget
if(($localServerBool) && ($debugBool)) {
echo "<br />" . $nResultRowCount . "<br />Results source: Localhost";
}
} else {
if($pWidgetVersion != '') { echo '<!--Empty-->'; } // print the html output for web page or 4dquiz widget
}
// End of search code etc
// html is generated in a single function for easy maintainence
class html
{
// Initialise the default values of query result resource and output html
var $pResultInt = 0;
var $pHtmlTxt = '';
var $pIsForDashboardBool = true;
var $pNumLines = 0;
/* this function in a class which will generate html and output html will be available via object $obj->pHtmlTxt, Please make sure a valid query resource id is passed before outout can be generated*/
function generateHtml()
{
$nCounterInt = 0;
$nPageSizeInt = 1000;
$rowInt = 0;
$outputHtmlTxt = '';
while (($nCounterInt<$nPageSizeInt) && ($rowInt = mysql_fetch_object($this->pResultInt))) {
$cmdMoreInfoUrlStr = $rowInt->url;
$cmdTitleStr = $rowInt->syntax;
if(! $cmdMoreInfoUrlStr) { // just use url as it is provided
$cmdNumberInt = $rowInt->number;
$cmdNumberStr = "CMU" . str_pad($cmdNumberInt, 5, "0", STR_PAD_LEFT);
$cmdMoreInfoUrlStr = "http://www.4d.com/docs/CMU/$cmdNumberStr.HTM";
}
if($cmdTitleStr == "")
{
$cmdTitleStr = $rowInt->name;
}
if($this->pIsForDashboardBool) {
$outputlineTxt = "<a href='javascript:goWeb(\"$cmdMoreInfoUrlStr\")' onMouseOver=\"row_onMouseOver('row$nCounterInt', '$cmdTitleStr', '$cmdMoreInfoUrlStr');\">$cmdTitleStr</a><br />\n"; //assumes the webpage/4dquiz has javascript function goWeb()
} else {
//$outputlineTxt = "<a href=\"#\" onclick='goWeb(\"" . $cmdMoreInfoUrlStr . "\")'>$cmdTitleStr</a><br />\n"; //assumes the webpage/4dquiz has javascript function goWeb()
//$outputlineTxt = "<a class=\"popupMenu\" id=\"row$nCounterInt\" href='javascript:goWeb(\"$cmdMoreInfoUrlStr\")' onMouseOver=\"row_onMouseOver('row$nCounterInt', '$cmdTitleStr', '$cmdMoreInfoUrlStr');\" title=\"$cmdTitleStr\">$cmdTitleStr<span>$cmdTitleStr<br /><a href='4dquiz.com'>web</a></span></a><br />\n"; //assumes the webpage/4dquiz has javascript function goWeb()
$outputlineTxt = "<a href='javascript:goWeb(\"$cmdMoreInfoUrlStr\")' onMouseOver=\"row_onMouseOver('row$nCounterInt', '$cmdTitleStr', '$cmdMoreInfoUrlStr');\">$cmdTitleStr</a><br />\n"; //assumes the webpage/4dquiz has javascript function goWeb()
}
$nPosInt = strpos($this->pHtmlTxt, $cmdTitleStr);
if($nPosInt === false) {
$this->pHtmlTxt .= $outputlineTxt;
$nCounterInt += 1;
}
}
$this->pNumLines = $nCounterInt;
}
}
?>
