123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 |
- <?php
- /**
- * Chamilo phpdig/search.php
- * 2006/12/14
- * @copyright 2006 rene.haentjens@UGent.be - see metadata/md_funcs.php
- * @package chamilo.metadata
- */
- /*
- --------------------------------------------------------------------------------
- PhpDig Version 1.8.6 is provided WITHOUT warranty under the GNU/GPL license.
- See the LICENSE file for more information about the GNU/GPL license.
- Contributors are listed in the CREDITS and CHANGELOG files in this package.
- Developer from inception to and including PhpDig v.1.6.2: Antoine Bajolet
- Developer from PhpDig v.1.6.3 to and including current version: Charter
- Copyright (C) 2001 - 2003, Antoine Bajolet, http://www.toiletoine.net/
- Copyright (C) 2003 - current, Charter, http://www.phpdig.net/
- Contributors hold Copyright (C) to their code submissions.
- Do NOT edit or remove this copyright or licence information upon redistribution.
- If you modify code and redistribute, you may ADD your copyright to this notice.
- --------------------------------------------------------------------------------
- */
- /**
- * Chamilo Metadata: search Chamilo course objects via PhpDig 1.8.6
- * customized search.php 1.8.6 for Chamilo 1.6 assumes $template == "array"
- */
- // name of the language file that needs to be included
- $language_file = "md_mix";
- include('../../../main/inc/global.inc.php');
- if (! $is_allowed_in_course) api_not_allowed();
- // start of part copied (with some changes) from standard PhpDig search.php
- $relative_script_path = '.';
- $no_connect = 0;
- if (is_file("$relative_script_path/includes/config.php")) {
- include "$relative_script_path/includes/config.php";
- }
- else {
- die("Cannot find config.php file.\n");
- }
- if (is_file("$relative_script_path/libs/search_function.php")) {
- include "$relative_script_path/libs/search_function.php";
- }
- else {
- die("Cannot find PhpDig search_function.php file.\n");
- }
- // extract vars
- extract(phpdigHttpVars(
- array('query_string'=>'string',
- 'mdsc'=>'string', 'kwdswere_string'=>'string', // Dokeos
- 'refine'=>'integer',
- 'refine_url'=>'string',
- 'site'=>'string', // set to integer later
- 'limite'=>'integer',
- 'option'=>'string',
- 'lim_start'=>'integer',
- 'browse'=>'integer',
- 'path'=>'string'
- )
- ),EXTR_SKIP);
- $adlog_flag = 0;
- $rssdf = "";
- // end of part copied (with some changes) from standard PhpDig search.php
- // Course keywords
- $_course = api_get_course_info(); $ckw = $_course['path'] . '/CourseKwds.js';
- define('KEYWORDS_CACHE', api_get_path(SYS_COURSE_PATH) . $ckw);
- if (file_exists(KEYWORDS_CACHE)) $kcdt =
- htmlspecialchars(date('Y/m/d H:i:s', filemtime(KEYWORDS_CACHE)));
- $keywordscache = $kcdt ?
- '<script type="text/javascript" src="' . api_get_path(WEB_COURSE_PATH) . $ckw . '"></script>' .
- '<br /><small><i>(CourseKwds cache: ' . $kcdt . ')</i></small>' : '';
- // Dokeos header
- $nameTools = get_lang('Search');
- $htmlHeadXtra[] = '<link rel="stylesheet" type="text/css" href="../../../main/metadata/md_styles.css">';
- $htmlHeadXtra[] = '<script type="text/javascript" src="../../../main/metadata/md_script.js"></script>';
- $htmlHeadXtra[] = '
- <script type="text/javascript">
- /* <![CDATA[ */
- function mdscSet(s)
- {
- var mdsc = getObj("mdsc");
- if (!mdsc) { alert("? Form does not contain mdsc"); return false; }
- mdsc.value = s; return true;
- }
- function checkEnter(ev)
- {
- if (!ev) ev = window.event;
- if (ev.altKey) {alert(document.getElementById("kwds_string").value); return;}
- if (ev.keyCode == 13)
- {
- document.getElementById("kwdswere_string").value =
- document.getElementById("kwds_string").value;
- if (prepSearch(ev)) getObj("form_submit").form.submit();
- }
- }
- /* ]]> */
- </script>';
- Display::display_header($nameTools); echo "\n";
- echo '<table width="100%"><tr><td><h3>', get_lang('Search'), '</h3></td>',
- '<td align="right"><a href="http://www.phpdig.net"><img src="phpdig_powered_2.gif"/></a></td></tr></table>';
- // Store new extra criteria (course manager only, see below), or execute
- // PhpDig Search and echo result message + table with results + pages bar
- if (!$query_string) $query_string = trim($mdsc);
- $ckwcdt = file_exists($ckwc = KEYWORDS_CACHE . 'c') ?
- date('Y/m/d H:i:s', filemtime($ckwc)) : '?'; $pkwc = '';
- if (substr($query_string, 0, 2) == '<>' && api_is_allowed_to_edit())
- {
- if ($ckwcdt{0} != '?')
- {
- $fckwc = fopen($ckwc, 'rb'); $pkwc = fread($fckwc, filesize($ckwc));
- fclose($fckwc); unset($fckwc);
- }
- if(($fckwc = fopen($ckwc, 'wb')))
- {
- fwrite($fckwc, $query_string); fclose($fckwc); unset($fckwc);
- $ckwcdt = file_exists($ckwc) ?
- date('Y/m/d H:i:s', filemtime($ckwc)) : '? Write Error';
- }
- else $ckwcdt = '? Open Error';
- $phpdigSearchResults = array('result_message' => $ckw . 'c: ' . $ckwcdt,
- 'pages_bar' => '', 'results' => array());
- }
- else
- {
- $phpdigSearchResults = phpdigSearch($id_connect, $query_string, $option,
- $refine, $refine_url, $lim_start, $limite, $browse, $site, $path,
- $relative_script_path, $template, $adlog_flag, $rssdf, $template_demo);
- }
- $result_message = ''; $hits = 11;
- if ($result_message = $phpdigSearchResults['result_message'])
- if (($cspos = strpos($result_message, ', ')) !== FALSE)
- if (($sppos = strpos($result_message, ' ', $cspos += 2)) !== FALSE)
- if (is_numeric($total = substr($result_message, $cspos, $sppos-$cspos)))
- $hits = (int) $total;
- if (!($pages_bar = $phpdigSearchResults['pages_bar'])) $hits = 0;
- if ($result_message == phpdigMsg('noresults')) $result_message .= ' '.phpdigMsg('on').' "'.htmlspecialchars($query_string,ENT_QUOTES).'"';
- echo $result_message, '<br><br><table border="1">', "\n";
- if ($phpdigSearchResults['results']) foreach ($phpdigSearchResults['results'] as $searchResult)
- {
- $url = $searchResult['complete_path'];
- if (ereg("/[^?/]*\\?.*thumb=", $url))
- {
- // direct URL: $thumburl = ereg_replace("/[^?/]*\\?.*thumb=", "/", $url);
- $thumburl = ereg_replace("\\?.*thumb=", "?th=", $url); // via index.php
- }
- else
- {
- $thumburl = "tpl_img/link.gif";
- }
- echo '<tr><td align="center"><a target="_blank" href="', $url, '"><img src="', $thumburl,
- '"/></a></td><td><a target="_blank" href="', $url, '">', $searchResult['link_title'],
- '</a><br>', $searchResult['text'], '</td></tr>', "\n";
- }
- echo '</table><br>';
- if ($result_message && ($hits > 10))
- echo "Results page ", str_replace('?template_demo=',
- '?kwdswere_string=' . urlencode($kwdswere_string), $pages_bar), '<br><br>';
- /* Extra criteria: A course manager can define and edit them in the TEXTAREA.
- If he types in something as in the example below, and clicks 'Go', the new
- criteria are stored and the old ones are displayed. So it is easy to
- restore the old ones. To confirm the new ones, empty the TEXTAREA.
- <>This selection empties extra criteria
- <searchword>Label
- <keyword-kw>Descriptive text
- */
- $tdhtm = '';
- function tdhtm($xc)
- {
- $eol = '<br/>'; if ($xc{0} == '<') $xc = substr($xc, 1);
- if (($eov = strpos($xc, '>')) === FALSE)
- $value = $label = $xc;
- else
- {
- $value = substr($xc, 0, $eov); $label = substr($xc, $eov+1);
- if (($eot = strpos($label, '<')) !== FALSE)
- {
- $eol = substr($label, $eot); $label = substr($label, 0, $eot);
- }
- }
- return '<input type="radio" name="xc" onclick="mdscSet(' . "'" .
- htmlspecialchars($value) . "'" . ')">' .
- htmlspecialchars($label) . '</input>' . $eol;
- }
- if ($ckwcdt{0} != '?') // there is a file with extra criteria
- {
- $fckwc = fopen($ckwc, 'rb');
- foreach (explode("\n", fread($fckwc, filesize($ckwc))) as $xc)
- $tdhtm .= "\n" . tdhtm($xc);
- fclose($fckwc); unset($fckwc);
- }
- // Search criteria form and keywords tree
- ?>
- <div onMouseUp="if ((kw = pU_clicked(event))) pU_select(kw); else pU_hide();">
- <input type="text" id="kwds_string" class="kwl" onKeyUp="takeTypeIn(this, 150, -100, '60%'); checkEnter(event); return true;"/>
- <form action="<?php echo api_get_self()?>" method="post">
- <table>
- <tr>
- <td><?php echo $tdhtm, ' '; ?>
- </td>
- <td>
- <?php if (api_is_allowed_to_edit())
- echo '<textarea name="mdsc" id="mdsc" rows="10" cols="60">', htmlspecialchars($pkwc), '</textarea>';
- else echo '<textarea name="mdsc" id="mdsc" class="dvc"> </textarea>';
- ?>
- </td>
- <td>
- <input type="hidden" id="kwdswere_string" name="kwdswere_string"/>
- <input type="submit" id="form_submit" onClick="document.getElementById('kwdswere_string').value = document.getElementById('kwds_string').value; return prepSearch(event);" value="<?php echo phpdigMsg('go')?>"/>
- </td>
- </tr>
- </table>
- <div id="popup" noWrap="1" class="pup">
- Working...
- </div>
- </form>
- <div>
- </div>
- <div noWrap="1" id="maindiv">
- <?php if ($keywordscache == '') { ?>   <?php } else { ?>
- <input type="checkbox" id="restricttokwds">Keywords-restrictive search<br>
- <input type="button" class="btn" value="+" onClick="if (this.value == '+') deselectAll(event, this); openOrClose(this);"/>
- <input type="button" class="btm" id="btnOpenOrCloseAll" value="++" onClick="openOrCloseAll(this);"/>
- <input type="button" class="btn" value="?" onClick="openOrCloseHelp(this)"/>
-  <?php echo get_lang('ClickKw'), $keywordscache; } ?>
- </div>
- <div id='moreHelp' class='dvc'>
- <?php echo get_lang('KwHelp')?>
- </div>
- </div><!-- onMouseUp -->
- <?php
- /***** Example inserting in own domain (not used here)
- * PhpDig installed at: http://www.domain.com/phpdig/
- * Want search page at: http://www.domain.com/search.php
- * Copy http://www.domain.com/phpdig/search.php to http://www.domain.com/search.php
- * Copy http://www.domain.com/phpdig/clickstats.php to http://www.domain.com/clickstats.php
- * Set $relative_script_path = './phpdig'; in search.php, clickstats.php, and function_phpdig_form.php
- * Add ($relative_script_path != "./phpdig") && to if statement
- *****/
- echo "\n"; Display::display_footer();
- ?>
|