Feature #300 a search of documents that are similar to the tool users

skala
Juan Carlos Raña 16 years ago
parent a80bc2d7e1
commit 33678de470
  1. 12
      main/document/document.inc.php
  2. 30
      main/document/document.php
  3. 18
      main/inc/lib/document.lib.php

@ -541,4 +541,16 @@ function is_my_shared_folder($user_id, $path, $current_session_id) {
return false;
}
}
/**
* Check if the file name or folder searched exist
* @return return bool Return true when exist
*/
function search_keyword($document_name, $keyword) {
if (api_strripos($document_name, $keyword) !== false){
return true;
} else {
return false;
}
}
?>

@ -44,7 +44,7 @@ require_once $lib_path.'usermanager.lib.php';
require_once $lib_path.'document.lib.php';
require_once $lib_path.'fileUpload.lib.php';
require_once $lib_path.'sortabletable.class.php';
require_once $lib_path.'formvalidator/FormValidator.class.php';
api_protect_course_script(true);
$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/jquery.js" type="text/javascript" language="javascript"></script>'; //jQuery
@ -646,8 +646,12 @@ if (isset($_GET['curdirpath']) && $_GET['curdirpath'] == '/certificates' && isse
/* GET ALL DOCUMENT DATA FOR CURDIRPATH */
if(isset($_GET['keyword']) && !empty($_GET['keyword'])){
$docs_and_folders = DocumentManager::get_all_document_data($_course, $curdirpath, $to_group_id, null, $is_allowed_to_edit || $group_member_with_upload_rights, $search=true);
}else{
$docs_and_folders = DocumentManager::get_all_document_data($_course, $curdirpath, $to_group_id, null, $is_allowed_to_edit || $group_member_with_upload_rights, $search=false);
}
$docs_and_folders = DocumentManager::get_all_document_data($_course, $curdirpath, $to_group_id, null, $is_allowed_to_edit || $group_member_with_upload_rights);
$folders = DocumentManager::get_all_document_folders($_course, $to_group_id, $is_allowed_to_edit || $group_member_with_upload_rights);
if ($folders === false) {
$folders = array();
@ -655,6 +659,16 @@ if ($folders === false) {
echo '<div class="actions">';
/* BUILD SEARCH FORM */
echo '<span style="display:inline-block;">';
$form = new FormValidator('search_document', 'get', '', '', null, false);
$renderer = & $form->defaultRenderer();
$renderer->setElementTemplate('<span>{element}</span> ');
$form->add_textfield('keyword', '', false);
$form->addElement('style_submit_button', 'submit', get_lang('Search'), 'class="search"');
$form->display();
echo '</span>';
/* GO TO PARENT DIRECTORY */
if ($curdirpath!= '/' && $curdirpath != $group_properties['directory'] && !$is_certificate_mode) {
@ -748,7 +762,10 @@ if (isset($docs_and_folders) && is_array($docs_and_folders)) {
$row[] = $last_edit_date;
$row[] = $size;
$total_size = $total_size + $size;
$sortable_data[] = $row;
if ((isset ($_GET['keyword']) && search_keyword($document_name, $_GET['keyword'])) || !isset($_GET['keyword']) || empty($_GET['keyword'])) {
$sortable_data[] = $row;
}
}
} else {
$sortable_data = '';
@ -850,13 +867,18 @@ $default_column = $is_allowed_to_edit ? 2 : 1;
$tablename = $is_allowed_to_edit ? 'teacher_table' : 'student_table';
$table = new SortableTableFromArrayConfig($sortable_data, $default_column, 20, $tablename, $column_show, $column_order, 'ASC');
$query_vars['curdirpath'] = $curdirpath;
if(isset($_GET['keyword'])){
$query_vars['keyword'] = Security::remove_XSS($_GET['keyword']);
}else{
$query_vars['curdirpath'] = $curdirpath;
}
if (isset($_SESSION['_gid'])) {
$query_vars['gidReq'] = $_SESSION['_gid'];
}
$query_vars['cidReq'] = api_get_course_id();
$table->set_additional_parameters($query_vars);
$column = 0;
if (($is_allowed_to_edit || $group_member_with_upload_rights) && count($docs_and_folders) > 1) {

@ -450,7 +450,7 @@ class DocumentManager {
* @param boolean $can_see_invisible
* @return array with all document data
*/
public static function get_all_document_data($_course, $path = '/', $to_group_id = 0, $to_user_id = NULL, $can_see_invisible = false) {
public static function get_all_document_data($_course, $path = '/', $to_group_id = 0, $to_user_id = NULL, $can_see_invisible = false, $search =false) {
$TABLE_ITEMPROPERTY = Database::get_course_table(TABLE_ITEM_PROPERTY, $_course['dbName']);
$TABLE_DOCUMENT = Database::get_course_table(TABLE_DOCUMENT, $_course['dbName']);
$TABLE_COURSE = Database::get_main_table(TABLE_MAIN_COURSE);
@ -484,7 +484,17 @@ class DocumentManager {
//condition for the session
$current_session_id = api_get_session_id();
$condition_session = " AND (id_session = '$current_session_id' OR id_session = '0')";
$sql = "SELECT docs.id, docs.filetype, docs.path, docs.title, docs.comment, docs.size, docs.readonly, docs.session_id, last.lastedit_date, last.visibility
//condition for search (get ALL folders and documents)
if($search){
$sql = "SELECT docs.id, docs.filetype, docs.path, docs.title, docs.comment, docs.size, docs.readonly, docs.session_id, last.lastedit_date, last.visibility
FROM ".$TABLE_ITEMPROPERTY." AS last, ".$TABLE_DOCUMENT." AS docs
WHERE docs.id = last.ref
AND last.tool = '".TOOL_DOCUMENT."'
AND ".$to_field." = ".$to_value."
AND last.visibility".$visibility_bit . $condition_session;
}else{
$sql = "SELECT docs.id, docs.filetype, docs.path, docs.title, docs.comment, docs.size, docs.readonly, docs.session_id, last.lastedit_date, last.visibility
FROM ".$TABLE_ITEMPROPERTY." AS last, ".$TABLE_DOCUMENT." AS docs
WHERE docs.id = last.ref
AND docs.path LIKE '".$path.$added_slash."%'
@ -492,7 +502,7 @@ class DocumentManager {
AND last.tool = '".TOOL_DOCUMENT."'
AND ".$to_field." = ".$to_value."
AND last.visibility".$visibility_bit . $condition_session;
}
$result = Database::query($sql);
if ($result!==false && Database::num_rows($result) != 0) {
@ -1609,4 +1619,4 @@ class DocumentManager {
}
}
//end class DocumentManager
//end class DocumentManager
Loading…
Cancel
Save