00001 <?php
00007 class STransNSDLSearchXML extends STransXML
00008 {
00009
00010
00011
00012
00018 public function translate ($si)
00019 {
00020 if (parent::translate($si) == false) return false;
00021 $xml = SXMLHelper::parse($si->getSource());
00022 if ($xml === false) return false;
00023
00024
00025 if (!isset($xml->SearchResults->results)) {
00026 return('No Results');
00027 }
00028
00029
00030
00031 $output = "";
00032
00033
00034
00035 $output .= $this->addForwardBackButtons($xml, $si);
00036
00037
00038 foreach($xml->SearchResults->results->document as $doc){
00039 $output .= $this->renderResultDocument($doc);
00040 }
00041
00042 $output .= $this->addForwardBackButtons($xml, $si);
00043
00044
00045
00046
00047
00048
00049 $this->sendToTarget($si, $output);
00050 parent::translate($si);
00051 }
00052
00053
00054
00061 protected function addHeaderFooter($xml, $si) {
00062 $ss = $si->getOption('ss');
00063 $sr = $si->getOption('sr');
00064 if ($ss == "" && isset($_GET['ss'])) { $ss = $_GET['ss']; }
00065 if ($sr == "" && isset($_GET['sr'])) { $sr = $_GET['sr']; }
00066
00067 $numPerPage = $si->getOption('numPerPage');
00068 global $PATH;
00069
00070 $action = SWATFunctions::stripArgs($_SERVER['REQUEST_URI']);
00071
00072 if ($xml != ""){
00073 $first = $xml->SearchResults->resultsInfo->numSkipped + 1;
00074 $min = min($xml->SearchResults->resultsInfo->numSkipped + $xml->SearchResults->resultsInfo->numReturned, $xml->SearchResults->resultsInfo->totalNumResults);
00075 $total = $xml->SearchResults->resultsInfo->totalNumResults;
00076 } else {
00077 $first = $min = $total = "";
00078 }
00079
00080 $linkbase = explode("?", $_SERVER['REQUEST_URI']);
00081 $args = (count($linkbase) == 2) ? $linkbase[1] : "";
00082 $cserdLink = $PATH['fedsearch'] . "?ss=" . $ss;
00083 $nsdlLink = $PATH['fedsearch'] . "nsdl/?ss=" . $ss;
00084
00085 $html =<<<END
00086
00087 <table border="0" cellspacing="0" cellpadding="0" style="padding: 0px; background: #F3F6FF; border: 1px solid #CCC; margin: 10px 0px 10px 0px;">
00088 <tr>
00089 <td class="header" width="100%" style="padding: 10px;">
00090 <a href="$cserdLink">Search CSERD</a> <a href="$nsdlLink">Search NSDL</a></td>
00091 <td align="right" nowrap="nowrap" style="padding: 10px;">
00092 <form method="get" action="$action">
00093 <input type="text" name="ss" size="30" maxlength="120" value="$ss" />
00094 <input type="submit" value="Search" />
00095 </form>
00096 </td>
00097 </tr>
00098 <tr>
00099 <td colspan="2" style="padding: 10px; background: #FFFFFF;">
00100 <table border="0" cellspacing="0" cellpadding="0" width="100%">
00101 <tr>
00102 <td>Searched for: <b>$ss</b></td>
00103 <td align="right">Results <b>$first - $min</b> of <b>$total</b></td>
00104 </tr>
00105 </table>
00106 </td>
00107 </tr>
00108 </table>
00109
00110 END;
00111 return $html;
00112 }
00113
00114
00120 protected function addForwardBackButtons($xml, $si) {
00121 $ss = $si->getOption('ss');
00122 $sr = $si->getOption('sr');
00123 if ($ss == "" && isset($_GET['ss'])) { $ss = $_GET['ss']; }
00124 if ($sr == "" && isset($_GET['sr'])) { $sr = $_GET['sr']; }
00125
00126 $numPerPage = SConfig::getOption('fedsearch.resultsPerPage');
00127
00128 $output = "";
00129
00130
00131 if (($xml->SearchResults->resultsInfo->numSkipped + $xml->SearchResults->resultsInfo->numReturned) < ($xml->SearchResults->resultsInfo->totalNumResults)) {
00132 $newUrl = $this->buildCWISURL($ss, $sr + $numPerPage);
00133 $output .= '<div style="float:right; width: 300px; text-align:right"><a href="' . $newUrl . '">Next ' . $numPerPage . ' Results →</a></div>';
00134 }
00135
00136 if (($xml->SearchResults->resultsInfo->numSkipped) > 0) {
00137 $newUrl = $this->buildCWISURL($ss, $sr - $numPerPage);
00138 $output .= '<a href="' . $newUrl . '">← Prev ' . $numPerPage . ' Results</a>';
00139 }
00140
00141 $output .= "<br />";
00142 return $output;
00143 }
00144
00145
00146
00147 protected function renderResultDocument($doc) {
00148 $ns_dc = $doc->fields->children('http://purl.org/dc/elements/1.1/');
00149
00150 $url = $doc->header->resourceIdentifier;
00151 $title = $ns_dc->title;
00152 if (strlen($ns_dc->description) > 400){
00153 $descrip = substr($ns_dc->description, 0, 400) . "...";
00154 } else {
00155 $descrip = $ns_dc->description;
00156 }
00157
00158 $brand = $doc->fields->collContext->brand;
00159 $brandSrc = $brand->image;
00160 $brandAlt = $brand->altText;
00161
00162 return <<<END
00163 <p class="ResultSet-Item section"><img style="float:right" src="$brandSrc" alt="$brandAlt" /><span class="ResultSet-ItemLink"><a href="$url" target="_parent" >$title</a> </span><br /><span class="resultDescription">$descrip</span><br /><a href="$url" target="_blank">View Website</a></p>
00164 END;
00165 }
00166
00172 protected function buildCWISURL($ss, $sr) {
00173 $base = SWATFunctions::stripArgs($_SERVER['REQUEST_URI']);
00174 if ($sr < 0) $sr = 0;
00175 return $base . "?ss=" . $ss . "&sr=" . $sr;
00176 }
00177
00178 }
00179
00180 ?>