/** * Search options * TODO: support for multiple site. aka $_configuration['access_url'] == 1 * @author Marco Villegas <*****@*****.**> */ function handle_search() { global $SettingsStored, $_configuration; require_once api_get_path(LIBRARY_PATH) . 'specific_fields_manager.lib.php'; $search_enabled = api_get_setting('search.search_enabled'); $form = new FormValidator('search-options', 'post', api_get_self() . '?category=Search'); $values = api_get_settings_options('search_enabled'); $form->addElement('header', null, get_lang('SearchEnabledTitle')); $group = array(); if (is_array($values)) { foreach ($values as $key => $value) { $element =& $form->createElement('radio', 'search_enabled', '', get_lang($value['display_text']), $value['value']); $group[] = $element; } } //SearchEnabledComment $form->addGroup($group, 'search_enabled', array(get_lang('SearchEnabledTitle'), get_lang('SearchEnabledComment')), '<br />', false); $search_enabled = api_get_setting('search.search_enabled'); if ($form->validate()) { $formvalues = $form->exportValues(); $r = api_set_settings_category('Search', 'false', $_configuration['access_url']); // Save the settings. foreach ($formvalues as $key => $value) { $result = api_set_setting($key, $value, null, null); } $search_enabled = $formvalues['search_enabled']; Display::display_confirmation_message($SettingsStored); } $specific_fields = get_specific_field_list(); if ($search_enabled == 'true') { $values = api_get_settings_options('search_show_unlinked_results'); $group = array(); foreach ($values as $key => $value) { $element =& $form->createElement('radio', 'search_show_unlinked_results', '', get_lang($value['display_text']), $value['value']); $group[] = $element; } $form->addGroup($group, 'search_show_unlinked_results', array(get_lang('SearchShowUnlinkedResultsTitle'), get_lang('SearchShowUnlinkedResultsComment')), '', false); $default_values['search_show_unlinked_results'] = api_get_setting('search_show_unlinked_results'); $sf_values = array(); foreach ($specific_fields as $sf) { $sf_values[$sf['code']] = $sf['name']; } $group = array(); $url = Display::div(Display::url(get_lang('AddSpecificSearchField'), 'specific_fields.php'), array('class' => 'sectioncomment')); if (empty($sf_values)) { $form->addElement('html', get_lang('SearchPrefilterPrefix') . $url); } else { $form->addElement('select', 'search_prefilter_prefix', array(get_lang('SearchPrefilterPrefix'), $url), $sf_values, ''); $default_values['search_prefilter_prefix'] = api_get_setting('search_prefilter_prefix'); } } $default_values['search_enabled'] = $search_enabled; $form->addButtonSave(get_lang('Save')); $form->setDefaults($default_values); echo '<div id="search-options-form">'; $form->display(); echo '</div>'; if ($search_enabled == 'true') { $xapian_path = api_get_path(SYS_UPLOAD_PATH) . 'plugins/xapian/searchdb'; /* @todo Test the Xapian connection if (extension_loaded('xapian')) { require_once 'xapian.php'; try { $db = new XapianDatabase($xapian_path.'/'); } catch (Exception $e) { var_dump($e->getMessage()); } require_once api_get_path(LIBRARY_PATH) . 'search/DokeosIndexer.class.php'; require_once api_get_path(LIBRARY_PATH) . 'search/IndexableChunk.class.php'; require_once api_get_path(LIBRARY_PATH) . 'specific_fields_manager.lib.php'; $indexable = new IndexableChunk(); $indexable->addValue("content", 'Test'); $di = new DokeosIndexer(); $di->connectDb(NULL, NULL, 'english'); $di->addChunk($indexable); $did = $di->index(); } */ $xapian_loaded = Display::return_icon('bullet_green.gif', get_lang('Ok')); $dir_exists = Display::return_icon('bullet_green.gif', get_lang('Ok')); $dir_is_writable = Display::return_icon('bullet_green.gif', get_lang('Ok')); $specific_fields_exists = Display::return_icon('bullet_green.gif', get_lang('Ok')); //Testing specific fields if (empty($specific_fields)) { $specific_fields_exists = Display::return_icon('bullet_red.gif', get_lang('AddSpecificSearchField')); } //Testing xapian extension if (!extension_loaded('xapian')) { $xapian_loaded = Display::return_icon('bullet_red.gif', get_lang('Error')); } //Testing xapian searchdb path if (!is_dir($xapian_path)) { $dir_exists = Display::return_icon('bullet_red.gif', get_lang('Error')); } //Testing xapian searchdb path is writable if (!is_writable($xapian_path)) { $dir_is_writable = Display::return_icon('bullet_red.gif', get_lang('Error')); } $data[] = array(get_lang('XapianModuleInstalled'), $xapian_loaded); $data[] = array(get_lang('DirectoryExists') . ' - ' . $xapian_path, $dir_exists); $data[] = array(get_lang('IsWritable') . ' - ' . $xapian_path, $dir_is_writable); $data[] = array(get_lang('SpecificSearchFieldsAvailable'), $specific_fields_exists); echo Display::tag('h3', get_lang('Settings')); $table = new SortableTableFromArray($data); $table->set_header(0, get_lang('Setting'), false); $table->set_header(1, get_lang('Status'), false); echo $table->display(); //@todo windows support if (api_is_windows_os() == false) { $list_of_programs = array('pdftotext', 'ps2pdf', 'catdoc', 'html2text', 'unrtf', 'catppt', 'xls2csv'); foreach ($list_of_programs as $program) { $output = $ret_val = null; exec("which {$program}", $output, $ret_val); $icon = Display::return_icon('bullet_red.gif', get_lang('NotInstalled')); if (!empty($output[0])) { $icon = Display::return_icon('bullet_green.gif', get_lang('Installed')); } $data2[] = array($program, $output[0], $icon); } echo Display::tag('h3', get_lang('ProgramsNeededToConvertFiles')); $table = new SortableTableFromArray($data2); $table->set_header(0, get_lang('Program'), false); $table->set_header(1, get_lang('Path'), false); $table->set_header(2, get_lang('Status'), false); echo $table->display(); } else { Display::display_warning_message(get_lang('YouAreUsingChamiloInAWindowsPlatformSadlyYouCantConvertDocumentsInOrderToSearchTheContentUsingThisTool')); } } }
/** * Search options * TODO: support for multiple site. aka $_configuration['access_url'] == 1 * @author Marco Villegas <*****@*****.**> */ function handle_search() { global $SettingsStored, $_configuration; $search_enabled = api_get_setting('search_enabled'); $settings = api_get_settings('Search'); if ($search_enabled !== 'true' || count($settings) < 1) { Display::display_error_message(get_lang('SearchFeatureNotEnabledComment')); return; } require_once api_get_path(LIBRARY_PATH) . 'specific_fields_manager.lib.php'; $form = new FormValidator('search-options', 'post', api_get_self() . '?category=Search'); $renderer =& $form->defaultRenderer(); $renderer->setHeaderTemplate('<div class="sectiontitle">{header}</div>' . "\n"); $renderer->setElementTemplate('<div class="sectioncomment">{label}</div>' . "\n" . '<div class="sectionvalue">{element}</div>' . "\n"); //search_show_unlinked_results $form->addElement('header', null, get_lang('SearchShowUnlinkedResultsTitle')); $form->addElement('label', null, get_lang('SearchShowUnlinkedResultsComment')); $values = get_settings_options('search_show_unlinked_results'); $group = array(); foreach ($values as $key => $value) { $element =& $form->createElement('radio', 'search_show_unlinked_results', '', get_lang($value['display_text']), $value['value']); $group[] = $element; } $form->addGroup($group, 'search_show_unlinked_results', get_lang('SearchShowUnlinkedResultsComment'), '<br />', false); $default_values['search_show_unlinked_results'] = api_get_setting('search_show_unlinked_results'); //search_prefilter_prefix $form->addElement('header', null, get_lang('SearchPrefilterPrefix')); $form->addElement('label', null, get_lang('SearchPrefilterPrefixComment')); $specific_fields = get_specific_field_list(); $sf_values = array(); foreach ($specific_fields as $sf) { $sf_values[$sf['code']] = $sf['name']; } $group = array(); $form->addElement('select', 'search_prefilter_prefix', get_lang('SearchPrefilterPrefix'), $sf_values, ''); $default_values['search_prefilter_prefix'] = api_get_setting('search_prefilter_prefix'); //$form->addRule('search_show_unlinked_results', get_lang('ThisFieldIsRequired'), 'required'); $form->addElement('style_submit_button', 'search-options-save', get_lang('Ok')); $form->setDefaults($default_values); if ($form->validate()) { $formvalues = $form->exportValues(); $r = api_set_settings_category('Search', 'false', $_configuration['access_url']); // Save the settings foreach ($formvalues as $key => $value) { $result = api_set_setting($key, $value, null, null); } Display::display_normal_message($SettingsStored); } else { echo '<div id="search-options-form">'; $form->display(); echo '</div>'; } }