Пример #1
0
    // as above, we exclude queries for export formats & citation formats other than HTML
    saveSessionVariable("oldMultiRecordQuery", $queryParametersArray);
}
// Fourth, setup an array of arrays holding URL and title information for all RSS/Atom feeds available on this page:
// (appropriate <link...> tags will be included in the HTML header for every URL specified)
$rssURLArray = array();
if (isset($_SESSION['user_permissions']) and preg_match("/allow_rss_feeds/", $_SESSION['user_permissions'])) {
    // ...extract the 'WHERE' clause from the SQL query to include it within the feed URL:
    $queryWhereClause = extractWHEREclause($query);
    // function 'extractWHEREclause()' is defined in 'include.inc.php'
    // generate an URL pointing to the RSS/Atom feed that matches the current query:
    $rssURL = generateURL("show.php", $defaultFeedFormat, array("where" => $queryWhereClause), true, $showRows);
    // function 'generateURL()' is defined in 'include.inc.php', variable '$defaultFeedFormat' is defined in 'ini.inc.php'
    // build a title string that matches the current query:
    // (alternatively we could always use: "records matching current query")
    $rssTitle = "records where " . encodeHTML(explainSQLQuery($queryWhereClause));
    // functions 'encodeHTML()' and 'explainSQLQuery()' are defined in 'include.inc.php'
    $rssURLArray[] = array("href" => $rssURL, "title" => $rssTitle);
}
// Finally, build the appropriate header string (which is required as parameter to the 'showPageHeader()' function):
if (!isset($_SESSION['HeaderString'])) {
    if (!empty($headerMsg)) {
        // ...we use that string as header message ('$headerMsg' could contain something like: "Literature of **Matthias Steffens**:"):
        // Perform search & replace actions on the provided header message (which will e.g. convert '**...**' to '<b>...</b>' etc):
        // (the array '$transtab_refbase_html' in 'transtab_refbase_html.inc.php' defines which search & replace actions will be employed)
        $HeaderString = searchReplaceText($transtab_refbase_html, encodeHTML($headerMsg), true);
        // functions 'searchReplaceText()' and 'encodeHTML()' are defined in 'include.inc.php'
    } else {
        if (preg_match("/^SELECT/i", $query)) {
            if ($rowsFound == 1) {
                if ($displayType == "Browse") {
Пример #2
0
    // redirect to main page ('index.php') which will display the error message stored within the 'HeaderString' session variable
    exit;
    // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !EXIT! <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
// --------------------------------------------------------------------
// (1) OPEN CONNECTION, (2) SELECT DATABASE
connectToMySQLDatabase();
// function 'connectToMySQLDatabase()' is defined in 'include.inc.php'
// --------------------------------------------------------------------
// (3) RUN the query on the database through the connection:
$result = queryMySQLDatabase($query);
// function 'queryMySQLDatabase()' is defined in 'include.inc.php'
// find out how many rows are available:
$rowsFound = @mysql_num_rows($result);
// construct a meaningful channel description based on the specified 'WHERE' clause:
$rssChannelDescription = "Displays all newly added records where " . explainSQLQuery($sanitizedWhereClause) . ".";
// function 'explainSQLQuery()' is defined in 'include.inc.php'
// Generate RSS XML data from the result set (upto the limit given in '$showRows'):
$rssFeed = generateRSS($result, $showRows, $rssChannelDescription);
// function 'generateRSS()' is defined in 'include.inc.php'
// --------------------------------------------------------------------
// (4) DISPLAY search results as RSS feed:
// set mimetype to 'application/rss+xml' and character encoding to the one given in '$contentTypeCharset' (which is defined in 'ini.inc.php'):
setHeaderContentType("application/rss+xml", $contentTypeCharset);
// function 'setHeaderContentType()' is defined in 'include.inc.php'
echo $rssFeed;
// --------------------------------------------------------------------
// (5) CLOSE the database connection:
disconnectFromMySQLDatabase();
// function 'disconnectFromMySQLDatabase()' is defined in 'include.inc.php'
// --------------------------------------------------------------------
Пример #3
0
    displayHTMLhead(encodeHTML($officialDatabaseName) . " -- Query History", "noindex,nofollow", "Displays links to previous search results", "", false, "", $viewType, array());
    if (!preg_match("/^(Print|Mobile)\$/i", $viewType)) {
        // Note: we omit the visible header in print/mobile view ('viewType=Print' or 'viewType=Mobile')
        showPageHeader($HeaderString);
    }
    echo "\n";
}
// (4b) DISPLAY results:
echo "<div id=\"queryhistory\">";
// Print a link to the current query:
if (!empty($oldQuery)) {
    echo "\n\t<div id=\"currentquery\">" . "\n\t\t<h5>Current Query</h5>";
    // Extract the 'WHERE' clause from the current SQL query:
    $queryWhereClause = extractWHEREclause($oldQuery["sqlQuery"]);
    // function 'extractWHEREclause()' is defined in 'include.inc.php'
    $queryTitle = encodeHTML(explainSQLQuery($queryWhereClause));
    // functions 'encodeHTML()' and 'explainSQLQuery()' are defined in 'include.inc.php'
    // Generate a 'search.php' URL that points to the current query:
    $queryURL = generateURL("search.php", "html", $oldQuery, true);
    // function 'generateURL()' is defined in 'include.inc.php'
    echo "\n\t\t<div class=\"even\">" . "\n\t\t\t<a href=\"" . $queryURL . "\">" . $queryTitle . "</a>" . "\n\t\t</div>" . "\n\t</div>";
}
// Print links to any previous search results:
if (!empty($queryHistory)) {
    echo "\n\t<div id=\"previousqueries\">" . "\n\t\t<h5>Previous Queries</h5>";
    $queryHistory = array_reverse($queryHistory);
    // Display links to previous search results:
    for ($i = 0; $i < count($queryHistory); $i++) {
        if (is_integer($i / 2)) {
            // if we currently are at an even number of rows
            $rowClass = "even";
Пример #4
0
function atomGenerateBaseTags($atomOperation)
{
    global $officialDatabaseName;
    // these variables are specified in 'ini.inc.php'
    global $databaseBaseURL;
    global $feedbackEmail;
    global $contentTypeCharset;
    global $convertExportDataToUTF8;
    global $logoImageURL;
    global $faviconImageURL;
    global $query;
    $atomCollection = new XML("feed");
    $atomCollection->setTagAttribute("xmlns", "http://www.w3.org/2005/Atom");
    $atomCollection->setTagAttribute("xmlns:opensearch", "http://a9.com/-/spec/opensearch/1.1/");
    $atomCollection->setTagAttribute("xmlns:unapi", "http://unapi.info/");
    // NOTE: is the unAPI namespace ok? Or should we use "http://unapi.info/specs/", or maybe something like "http://purl.org/unapi/ns/" ?
    $atomCollection->setTagAttribute("xmlns:dc", "http://purl.org/dc/elements/1.1/");
    $atomCollection->setTagAttribute("xmlns:dcterms", "http://purl.org/dc/terms/");
    $atomCollection->setTagAttribute("xmlns:prism", "http://prismstandard.org/namespaces/1.2/basic/");
    $officialDatabaseNameConv = encodeHTMLspecialchars($officialDatabaseName);
    // function 'encodeHTMLspecialchars()' is defined in 'include.inc.php'
    if ($atomOperation != "Error") {
        // convert database name to UTF-8:
        // (if '$convertExportDataToUTF8' is set to "yes" in 'ini.inc.php' and character encoding is not UTF-8 already)
        if ($convertExportDataToUTF8 == "yes" and $contentTypeCharset != "UTF-8") {
            $officialDatabaseNameConv = convertToCharacterEncoding("UTF-8", "IGNORE", $officialDatabaseNameConv);
        }
        // function 'convertToCharacterEncoding()' is defined in 'include.inc.php'
    }
    // ----------------------------------------------------------
    // Add feed-level tags:
    // (not yet used: category, contributor, rights)
    // - 'title':
    addNewBranch($atomCollection, "title", array("type" => "text"), $officialDatabaseNameConv);
    // - 'subtitle':
    if ($atomOperation == "Error") {
        addNewBranch($atomCollection, "subtitle", array(), "Search error!");
    } else {
        // ...extract the 'WHERE' clause from the SQL query to include a natural-language version (well, sort of) within the 'subtitle' element:
        $queryWhereClause = extractWHEREclause($query);
        // function 'extractWHEREclause()' is defined in 'include.inc.php'
        // construct a meaningful feed description based on the actual 'WHERE' clause:
        // TODO: For Atom XML, the query string should not get HTML encoded!
        $subTitle = "Displays records where " . encodeHTML(explainSQLQuery($queryWhereClause));
        // functions 'encodeHTML()' and 'explainSQLQuery()' are defined in 'include.inc.php'
        addNewBranch($atomCollection, "subtitle", array(), $subTitle);
    }
    // - 'updated':
    //    (TODO: the timestamp in the 'updated' element should really only get updated if any of the matching records was updated, right?)
    addNewBranch($atomCollection, "updated", array(), generateISO8601TimeStamp());
    // function 'generateISO8601TimeStamp()' is defined in 'include.inc.php'
    // - 'author':
    $authorBranch = new XMLBranch("author");
    $authorBranch->setTagContent($officialDatabaseNameConv, "author/name");
    $authorBranch->setTagContent($feedbackEmail, "author/email");
    $authorBranch->setTagContent($databaseBaseURL, "author/uri");
    $atomCollection->addXMLBranch($authorBranch);
    // - 'generator', 'icon', 'logo':
    addNewBranch($atomCollection, "generator", array("uri" => "http://www.refbase.net/", "version" => "0.9.5"), "Web Reference Database (http://refbase.sourceforge.net)");
    addNewBranch($atomCollection, "icon", array(), $databaseBaseURL . $faviconImageURL);
    addNewBranch($atomCollection, "logo", array(), $databaseBaseURL . $logoImageURL);
    // - 'link' (more links will be added in function 'atomCollection()'):
    //   - link to OpenSearch Description file:
    atomLink($atomCollection, $databaseBaseURL . "opensearch.php?operation=explain", "search", "OpenSearch", $officialDatabaseNameConv);
    //   - link to unAPI server:
    atomLink($atomCollection, $databaseBaseURL . "unapi.php", "unapi:unapi-server", "unAPI", "unAPI");
    return $atomCollection;
}