309 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			309 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 	// Project:    Web Reference Database (refbase) <http://www.refbase.net>
 | |
| 	// Copyright:  Matthias Steffens <mailto:refbase@extracts.de> and the file's
 | |
| 	//             original author(s).
 | |
| 	//
 | |
| 	//             This code is distributed in the hope that it will be useful,
 | |
| 	//             but WITHOUT ANY WARRANTY. Please see the GNU General Public
 | |
| 	//             License for more details.
 | |
| 	//
 | |
| 	// File:       ./simple_search.php
 | |
| 	// Repository: $HeadURL: file:///svn/p/refbase/code/branches/bleeding-edge/simple_search.php $
 | |
| 	// Author(s):  Matthias Steffens <mailto:refbase@extracts.de>
 | |
| 	//
 | |
| 	// Created:    29-Jul-02, 16:39
 | |
| 	// Modified:   $Date: 2012-02-27 20:25:30 +0000 (Mon, 27 Feb 2012) $
 | |
| 	//             $Author: msteffens $
 | |
| 	//             $Revision: 1337 $
 | |
| 
 | |
| 	// Search form providing access to the main fields of the database.
 | |
| 	// It offers some output options (like how many records to display per page)
 | |
| 	// and let's you specify the output sort order (up to three levels deep).
 | |
| 
 | |
| 
 | |
| 	// Incorporate some include files:
 | |
| 	include 'initialize/db.inc.php'; // 'db.inc.php' is included to hide username and password
 | |
| 	include 'includes/header.inc.php'; // include header
 | |
| 	include 'includes/footer.inc.php'; // include footer
 | |
| 	include 'includes/include.inc.php'; // include common functions
 | |
| 	include 'initialize/ini.inc.php'; // include common variables
 | |
| 
 | |
| 	// --------------------------------------------------------------------
 | |
| 
 | |
| 	// START A SESSION:
 | |
| 	// call the 'start_session()' function (from 'include.inc.php') which will also read out available session variables:
 | |
| 	start_session(true);
 | |
| 
 | |
| 	// --------------------------------------------------------------------
 | |
| 
 | |
| 	// Initialize preferred display language:
 | |
| 	// (note that 'locales.inc.php' has to be included *after* the call to the 'start_session()' function)
 | |
| 	include 'includes/locales.inc.php'; // include the locales
 | |
| 
 | |
| 	// --------------------------------------------------------------------
 | |
| 
 | |
| 	// (1) Open the database connection and use the literature database:
 | |
| 	connectToMySQLDatabase(); // function 'connectToMySQLDatabase()' is defined in 'include.inc.php'
 | |
| 
 | |
| 	// If there's no stored message available:
 | |
| 	if (!isset($_SESSION['HeaderString']))
 | |
| 		$HeaderString = $loc["SearchMain"].":"; // Provide the default message
 | |
| 	else
 | |
| 	{
 | |
| 		$HeaderString = $_SESSION['HeaderString']; // extract 'HeaderString' session variable (only necessary if register globals is OFF!)
 | |
| 
 | |
| 		// Note: though we clear the session variable, the current message is still available to this script via '$HeaderString':
 | |
| 		deleteSessionVariable("HeaderString"); // function 'deleteSessionVariable()' is defined in 'include.inc.php'
 | |
| 	}
 | |
| 
 | |
| 	// Extract the view type requested by the user (either 'Mobile', 'Print', 'Web' or ''):
 | |
| 	// ('' will produce the default 'Web' output style)
 | |
| 	if (isset($_REQUEST['viewType']))
 | |
| 		$viewType = $_REQUEST['viewType'];
 | |
| 	else
 | |
| 		$viewType = "";
 | |
| 
 | |
| 	// Get the default number of records per page preferred by the current user:
 | |
| 	$showRows = $_SESSION['userRecordsPerPage'];
 | |
| 
 | |
| 	// Get the user's preference for displaying auto-completions:
 | |
| 	$showAutoCompletions = $_SESSION['userAutoCompletions'];
 | |
| 
 | |
| 	// Show the login status:
 | |
| 	showLogin(); // (function 'showLogin()' is defined in 'include.inc.php')
 | |
| 
 | |
| 	// (2a) Display header:
 | |
| 	// call the 'displayHTMLhead()' and 'showPageHeader()' functions (which are defined in 'header.inc.php'):
 | |
| 	displayHTMLhead(encodeHTML($officialDatabaseName) . " -- " . $loc["SimpleSearch"], "index,follow", "Search the " . encodeHTML($officialDatabaseName), "", false, "", $viewType, array());
 | |
| 	showPageHeader($HeaderString);
 | |
| 
 | |
| 	// Define variables holding common drop-down elements, i.e. build properly formatted <option> tag elements:
 | |
| 	$dropDownConditionals1Array = array("contains"         => $loc["contains"],
 | |
| 	                                    "does not contain" => $loc["contains not"],
 | |
| 	                                    "is equal to"      => $loc["equal to"],
 | |
| 	                                    "is not equal to"  => $loc["equal to not"],
 | |
| 	                                    "starts with"      => $loc["starts with"],
 | |
| 	                                    "ends with"        => $loc["ends with"]);
 | |
| 
 | |
| 	$dropDownItems1 = buildSelectMenuOptions($dropDownConditionals1Array, "//", "\t\t\t", true); // function 'buildSelectMenuOptions()' is defined in 'include.inc.php'
 | |
| 
 | |
| 
 | |
| 	$dropDownConditionals2Array = array("is greater than" => $loc["is greater than"],
 | |
| 	                                    "is less than"    => $loc["is less than"],
 | |
| 	                                    "is within range" => $loc["is within range"],
 | |
| 	                                    "is within list"  => $loc["is within list"]);
 | |
| 
 | |
| 	$dropDownItems2 = buildSelectMenuOptions($dropDownConditionals2Array, "//", "\t\t\t", true); // function 'buildSelectMenuOptions()' is defined in 'include.inc.php'
 | |
| 
 | |
| 
 | |
| 	// TODO: if possible, we should use function 'mapFieldNames()' here
 | |
| 	$dropDownFieldNameArray = array("author"         => $loc["DropDownFieldName_Author"],
 | |
| 	                                "title"          => $loc["DropDownFieldName_Title"],
 | |
| 	                                "year"           => $loc["DropDownFieldName_Year"],
 | |
| 	                                "publication"    => $loc["DropDownFieldName_Publication"],
 | |
| 	                                "volume_numeric" => $loc["DropDownFieldName_Volume"], // 'volume_numeric' is used instead of 'volume' in the sort dropdown menus
 | |
| 	                                "pages"          => $loc["DropDownFieldName_Pages"]);
 | |
| 
 | |
| 	$dropDownItems3 = buildSelectMenuOptions($dropDownFieldNameArray, "//", "\t\t\t", true); // function 'buildSelectMenuOptions()' is defined in 'include.inc.php'
 | |
| 
 | |
| 	// Build HTML elements that allow for search suggestions for text entered by the user:
 | |
| 	if (isset($_SESSION['userAutoCompletions']) AND ($_SESSION['userAutoCompletions'] == "yes"))
 | |
| 	{
 | |
| 		$authorSuggestElements = buildSuggestElements("authorName", "authorSuggestions", "authorSuggestProgress", "col-author-"); // function 'buildSuggestElements()' is defined in 'include.inc.php'
 | |
| 		$titleSuggestElements = buildSuggestElements("titleName", "titleSuggestions", "titleSuggestProgress", "col-title-");
 | |
| 		$yearSuggestElements = buildSuggestElements("yearNo", "yearSuggestions", "yearSuggestProgress", "col-year-");
 | |
| 		$publicationSuggestElements = buildSuggestElements("publicationName2", "publicationSuggestions", "publicationSuggestProgress", "col-publication-");
 | |
| 		$volumeSuggestElements = buildSuggestElements("volumeNo", "volumeSuggestions", "volumeSuggestProgress", "col-volume-");
 | |
| 		$pagesSuggestElements = buildSuggestElements("pagesNo", "pagesSuggestions", "pagesSuggestProgress", "col-pages-");
 | |
| 	}
 | |
| 	else
 | |
| 	{
 | |
| 		$authorSuggestElements = "";
 | |
| 		$titleSuggestElements = "";
 | |
| 		$yearSuggestElements = "";
 | |
| 		$publicationSuggestElements = "";
 | |
| 		$volumeSuggestElements = "";
 | |
| 		$pagesSuggestElements = "";
 | |
| 	}
 | |
| 
 | |
| 	// (2b) Start <form> and <table> holding the form elements:
 | |
| ?>
 | |
| 
 | |
| <form action="search.php" method="GET" name="simpleSearch">
 | |
| <input type="hidden" name="formType" value="simpleSearch">
 | |
| <input type="hidden" name="showQuery" value="0">
 | |
| <table align="center" border="0" cellpadding="0" cellspacing="10" width="95%" summary="This table holds the search form">
 | |
| <tr>
 | |
| 	<th align="left"><?php echo $loc["Show"]; ?></th>
 | |
| 	<th align="left"><?php echo $loc["Field"]; ?></th>
 | |
| 	<th align="left"><?php echo $loc["That..."]; ?></th>
 | |
| 	<th align="left"><?php echo $loc["Searchstring"]; ?></th>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td width="20" valign="middle"><input type="checkbox" id="showAuthor" name="showAuthor" value="1" checked></td>
 | |
| 	<td width="40"><b><?php echo $loc["Author"]; ?>:</b></td>
 | |
| 	<td width="125">
 | |
| 		<select id="authorSelector" name="authorSelector"><?php echo $dropDownItems1; ?>
 | |
| 
 | |
| 		</select>
 | |
| 	</td>
 | |
| 	<td>
 | |
| 		<input type="text" id="authorName" name="authorName" size="42"><?php echo $authorSuggestElements; ?>
 | |
| 
 | |
| 	</td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td valign="middle"><input type="checkbox" id="showTitle" name="showTitle" value="1" checked></td>
 | |
| 	<td><b><?php echo $loc["Title"]; ?>:</b></td>
 | |
| 	<td>
 | |
| 		<select id="titleSelector" name="titleSelector"><?php echo $dropDownItems1; ?>
 | |
| 
 | |
| 		</select>
 | |
| 	</td>
 | |
| 	<td>
 | |
| 		<input type="text" id="titleName" name="titleName" size="42"><?php echo $titleSuggestElements; ?>
 | |
| 
 | |
| 	</td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td valign="middle"><input type="checkbox" id="showYear" name="showYear" value="1" checked></td>
 | |
| 	<td><b><?php echo $loc["Year"]; ?>:</b></td>
 | |
| 	<td>
 | |
| 		<select id="yearSelector" name="yearSelector"><?php echo $dropDownItems1 . $dropDownItems2; ?>
 | |
| 
 | |
| 		</select>
 | |
| 	</td>
 | |
| 	<td>
 | |
| 		<input type="text" id="yearNo" name="yearNo" size="42"><?php echo $yearSuggestElements; ?>
 | |
| 
 | |
| 	</td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td valign="middle"><input type="checkbox" id="showPublication" name="showPublication" value="1" checked></td>
 | |
| 	<td><b><?php echo $loc["Publication"]; ?>:</b></td>
 | |
| 	<td>
 | |
| 		<input type="hidden" id="publicationRadioB" name="publicationRadio" value="0">
 | |
| 		<select id="publicationSelector2" name="publicationSelector2"><?php echo $dropDownItems1; ?>
 | |
| 
 | |
| 		</select>
 | |
| 	</td>
 | |
| 	<td>
 | |
| 		<input type="text" id="publicationName2" name="publicationName2" size="42"><?php echo $publicationSuggestElements; ?>
 | |
| 
 | |
| 	</td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td valign="middle"><input type="checkbox" id="showVolume" name="showVolume" value="1" checked></td>
 | |
| 	<td><b><?php echo $loc["Volume"]; ?>:</b></td>
 | |
| 	<td>
 | |
| 		<select id="volumeSelector" name="volumeSelector"><?php echo $dropDownItems1 . $dropDownItems2; ?>
 | |
| 
 | |
| 		</select>
 | |
| 	</td>
 | |
| 	<td>
 | |
| 		<input type="text" id="volumeNo" name="volumeNo" size="42"><?php echo $volumeSuggestElements; ?>
 | |
| 
 | |
| 	</td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td valign="middle"><input type="checkbox" id="showPages" name="showPages" value="1" checked></td>
 | |
| 	<td><b><?php echo $loc["Pages"]; ?>:</b></td>
 | |
| 	<td>
 | |
| 		<select id="pagesSelector" name="pagesSelector"><?php echo $dropDownItems1; ?>
 | |
| 
 | |
| 		</select>
 | |
| 	</td>
 | |
| 	<td>
 | |
| 		<input type="text" id="pagesNo" name="pagesNo" size="42"><?php echo $pagesSuggestElements; ?>
 | |
| 
 | |
| 	</td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td> </td>
 | |
| 	<td> </td>
 | |
| 	<td> </td>
 | |
| 	<td> </td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td> </td>
 | |
| 	<td valign="top"><b><?php echo $loc["DisplayOptions"]; ?>:</b></td>
 | |
| 	<td valign="middle"><input type="checkbox" id="showLinks" name="showLinks" value="1" checked>   <?php echo $loc["ShowLinks"]; ?></td>
 | |
| 	<td valign="middle"><?php echo $loc["ShowRecordsPerPage_Prefix"]; ?>   <input type="text" id="showRows" name="showRows" value="<?php echo $showRows; ?>" size="4" title="<?php echo $loc["DescriptionShowRecordsPerPage"]; ?>">   <?php echo $loc["ShowRecordsPerPage_Suffix"]; ?>              <input type="submit" value="<?php echo $loc["ButtonTitle_Search"]; ?>"></td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td> </td>
 | |
| 	<td> </td>
 | |
| 	<td> </td>
 | |
| 	<td> </td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td> </td>
 | |
| 	<td>1. <?php echo $loc["sort by"]; ?>:</td>
 | |
| 	<td>
 | |
| 		<select id="sortSelector1" name="sortSelector1"><?php
 | |
| 
 | |
| $sortSelector1DropDownItems = preg_replace("/<option([^>]*)>" . $loc["DropDownFieldName_Author"] . "/", "<option\\1 selected>" . $loc["DropDownFieldName_Author"], $dropDownItems3); // select the 'author' menu entry ...
 | |
| echo $sortSelector1DropDownItems;
 | |
| ?>
 | |
| 
 | |
| 		</select>
 | |
| 	</td>
 | |
| 	<td>
 | |
| 		<input type="radio" id="sortRadio1A" name="sortRadio1" value="0" checked>   <?php echo $loc["ascending"]; ?>      
 | |
| 		<input type="radio" id="sortRadio1B" name="sortRadio1" value="1">   <?php echo $loc["descending"]; ?>
 | |
| 
 | |
| 	</td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td> </td>
 | |
| 	<td>2. <?php echo $loc["sort by"]; ?>:</td>
 | |
| 	<td>
 | |
| 		<select id="sortSelector2" name="sortSelector2"><?php
 | |
| 
 | |
| $sortSelector2DropDownItems = preg_replace("/<option([^>]*)>" . $loc["DropDownFieldName_Year"] . "/", "<option\\1 selected>" . $loc["DropDownFieldName_Year"], $dropDownItems3); // select the 'year' menu entry ...
 | |
| echo $sortSelector2DropDownItems;
 | |
| ?>
 | |
| 
 | |
| 		</select>
 | |
| 	</td>
 | |
| 	<td>
 | |
| 		<input type="radio" id="sortRadio2A" name="sortRadio2" value="0">   <?php echo $loc["ascending"]; ?>      
 | |
| 		<input type="radio" id="sortRadio2B" name="sortRadio2" value="1" checked>   <?php echo $loc["descending"]; ?>
 | |
| 
 | |
| 	</td>
 | |
| </tr>
 | |
| <tr>
 | |
| 	<td> </td>
 | |
| 	<td>3. <?php echo $loc["sort by"]; ?>:</td>
 | |
| 	<td>
 | |
| 		<select id="sortSelector3" name="sortSelector3"><?php
 | |
| 
 | |
| $sortSelector3DropDownItems = preg_replace("/<option([^>]*)>" . $loc["DropDownFieldName_Publication"] . "/", "<option\\1 selected>" . $loc["DropDownFieldName_Publication"], $dropDownItems3); // select the 'publication' menu entry ...
 | |
| echo $sortSelector3DropDownItems;
 | |
| ?>
 | |
| 
 | |
| 		</select>
 | |
| 	</td>
 | |
| 	<td>
 | |
| 		<input type="radio" id="sortRadio3A" name="sortRadio3" value="0" checked>   <?php echo $loc["ascending"]; ?>      
 | |
| 		<input type="radio" id="sortRadio3B" name="sortRadio3" value="1">   <?php echo $loc["descending"]; ?>
 | |
| 
 | |
| 	</td>
 | |
| </tr>
 | |
| </table>
 | |
| </form><?php
 | |
| 
 | |
| 	// (5) Close the database connection:
 | |
| 	disconnectFromMySQLDatabase(); // function 'disconnectFromMySQLDatabase()' is defined in 'include.inc.php'
 | |
| 
 | |
| 	// --------------------------------------------------------------------
 | |
| 
 | |
| 	// DISPLAY THE HTML FOOTER:
 | |
| 	// call the 'showPageFooter()' and 'displayHTMLfoot()' functions (which are defined in 'footer.inc.php')
 | |
| 	showPageFooter($HeaderString);
 | |
| 
 | |
| 	displayHTMLfoot();
 | |
| 
 | |
| 	// --------------------------------------------------------------------
 | |
| ?>
 |