tra('Search'), 'description' => tra('Multi-purpose search module (go or edit page by name and/or search site)'), 'prefs' => [], // feature_search_fulltext does not depend on feature_search (apparently?) 'params' => [ 'legacy_mode' => [ 'name' => tra('Legacy Mode'), 'description' => tra('Setting to emulate previous behaviour.') . ' ' . tra('Default:') . ' ""' . ' ("search"=search_box, "page"=search_wiki_page, "quick"=quick_edit)' ], 'tiki_search' => [ 'name' => tra('Tiki'), 'description' => tra('If set to "y" the search performed is a "Tiki search".') . ' ' . tra('Default:') . ' "n"' . tra(' (full text search)') ], 'show_object_filter' => [ 'name' => tra('Show Object Type Filter'), 'description' => tra('If set to "y" shows a dropdown of sections to search.') . ' ' . tra('Default:') . ' "n"' . tra(' (no object filter)') ], 'use_autocomplete' => [ 'name' => tra('Use autocomplete'), 'description' => tra('If set to "y" input uses autocomplete for pagenames if applicable.') . ' ' . tra('Default:') . ' "y"' . tra(' (use autocomplete)') ], 'advanced_search' => [ 'name' => tra('Advanced search'), 'description' => tra('Use advanced (boolean) search (full text search only).') . ' ' . tra('Default:') . ' "y"' . tra(' (use advanced search)'), ], 'advanced_search_option' => [ 'name' => tra('Advanced search checkbox'), 'description' => tra('Show advanced search checkbox (full text search only).') . ' ' . tra('Default:') . ' "n"' . tra(' (advanced search checkbox off)'), ], 'advanced_search_help' => [ 'name' => tra('Advanced search help'), 'description' => tra('Show advanced search help icon (full text search only).') . ' ' . tra('Default:') . ' "n"' . tra(' (advanced search help off)'), ], 'show_search_button' => [ 'name' => tra('Show Search Button'), 'description' => tra('Show search button.') . ' ' . tra('Default:') . ' "y"' . tra(' (do show search button)'), ], 'show_go_button' => [ 'name' => tra('Show Go Button'), 'description' => tra('Show go to page button.') . ' ' . tra('Default:') . ' "y"' . tra(' (do show go button)'), ], 'show_edit_button' => [ 'name' => tra('Show Edit Button'), 'description' => tra('Show edit button.') . ' ' . tra('Default:') . ' "y"' . tra(' (do show edit button)'), ], 'default_button' => [ 'name' => tra('Default Button'), 'description' => tra('Action to perform on entering .') . ' ' . tra('Default:') . ' "search"' . tra(' (search|go|edit)'), ], // initially from quick-edit 'search_action' => [ 'name' => tra('Search Form Action'), 'description' => tra("If set, send the form to the given location (relative to Tiki's root) for processing.") . ' ' . tra('Default:') . tra(' tiki-searchresults.php or tiki-searchindex.php (for Tiki search)'), ], 'search_submit' => [ 'name' => tra('Search Submit Label'), 'description' => tra('The label on the button to submit the form.') . ' ' . tra('Default:') . ' ' . tra('Search'), ], 'go_action' => [ 'name' => tra('Go Form Action'), 'description' => tra("If set, send the form to the given location (relative to Tiki's root) for processing.") . ' ' . tra('Default:') . ' tiki-listpages.php' ], 'go_submit' => [ 'name' => tra('Go Submit Label'), 'description' => tra('The label on the button to submit the form.') . ' ' . tra('Default:') . ' ' . tra('Go') ], 'edit_action' => [ 'name' => tra('Edit Form Action'), 'description' => tra("If set, send the form to the given location (relative to Tiki's root) for processing.") . ' ' . tra('Default:') . ' tiki-editpage.php' ], 'edit_submit' => [ 'name' => tra('Edit Submit Label'), 'description' => tra('The label on the button to submit the form.') . ' ' . tra('Default:') . ' ' . tra('Edit') ], 'input_size' => [ 'name' => tra('Input field width'), 'description' => tra('Width of the text input field (in characters).') . ' ' . tra('Example value:') . ' 15.' . ' ' . tra('Default:') . tra(' 0 (leave automatic width)'), 'filter' => 'int' ], 'select_size' => [ 'name' => tra('Select size'), 'description' => tra('Size of the Search Filter dropdown list.') . ' ' . tra('Default:') . ' 10', 'filter' => 'int' ], 'search_heading' => [ 'name' => tra('Heading'), 'description' => tra("Optional heading to display at the top of the module's content.") ], 'templateId' => [ 'name' => tra('Edit Template identifier'), 'description' => tra('If set to a template identifier, the specified template is used for creating new Wiki pages.') . ' ' . tra('Not set by default.') ], 'categId' => [ 'name' => tra('Category identifier'), 'description' => tra('If set to a category identifier, pages created through the module are automatically categorized in the specified category.') . ' ' . tra('Not set by default.') ], 'compact' => [ 'name' => tra('Compact mode'), 'description' => tra('Makes the three buttons only appear on mouse-over.') . ' ' . tra('Default:') . ' "n"' ], 'additional_filters' => [ 'name' => tr('Additional filters'), 'description' => tr('Filters to be applied to the search results, as a URL-encoded string. Ex.: catgories=1+AND+2&prefix~title=Test'), ], ] ]; } /** * @param $mod_reference * @param $smod_params */ function module_search($mod_reference, $smod_params) // modifies $smod_params so uses & reference { $smarty = TikiLib::lib('smarty'); global $prefs; static $search_mod_usage_counter = 0; $smarty->assign('search_mod_usage_counter', ++$search_mod_usage_counter); $smarty->assign('module_error', ''); $smarty->assign_by_ref('smod_params', $smod_params); // Deal with the two search types (sigh). If the requested search type is disabled but the other one is enabled, use it as a fallback. if ($prefs['feature_search'] == 'n' && $prefs['feature_search_fulltext'] == 'n') { $smod_params['tiki_search'] = 'none'; $smarty->assign('module_error', tra('Search is disabled.')); return; } elseif ($prefs['feature_search'] == 'n' && $smod_params['tiki_search'] == 'y') { $smod_params['tiki_search'] = 'n'; } elseif ($prefs['feature_search_fulltext'] == 'n' && (empty($smod_params['tiki_search']) || $smod_params['tiki_search'] != 'y')) { $smod_params['tiki_search'] = 'y'; } if (isset($smod_params['go_action']) && $smod_params['go_action'] == 'ti') { // temporary fix for 5.0 in case params were truncated in the db unset($smod_params['go_action']); } if (isset($smod_params['additional_filters'])) { parse_str($smod_params['additional_filters'], $out); $smod_params['additional_filters'] = $out ?: []; } else { $smod_params['additional_filters'] = []; } // set up other param defaults $defaults = [ 'legacy_mode' => '', 'show_object_filter' => 'n', 'use_autocomplete' => 'y', 'advanced_search' => 'y', 'advanced_search_option' => 'n', 'advanced_search_help' => 'n', 'show_search_button' => 'y', 'show_go_button' => 'y', 'show_edit_button' => 'y', 'default_button' => 'search', 'input_size' => 0, 'select_size' => 10, 'search_action' => $smod_params['tiki_search'] === 'y' ? 'tiki-searchindex.php' : 'tiki-searchresults.php', 'search_submit' => tra('Search'), 'go_action' => 'tiki-listpages.php', 'go_submit' => tra('Go'), 'edit_action' => 'tiki-editpage.php', 'edit_submit' => tra('Edit'), 'search_heading' => '', 'templateId' => '', 'categId' => '', 'compact' => 'n', 'title' => tra('Search'), ]; $smod_params = array_merge($defaults, $smod_params); if ($smod_params['tiki_search'] == 'y') { $smod_params['advanced_search'] = 'n'; $smod_params['advanced_search_option'] = 'n'; $smod_params['advanced_search_help'] = 'n'; } switch ($smod_params['legacy_mode']) { case 'quick': // params from old quick_edit module $smod_params['show_search_button'] = 'n'; $smod_params['show_go_button'] = 'n'; $smod_params['show_edit_button'] = 'y'; $smod_params['edit_submit'] = isset($smod_params['submit']) ? $smod_params['submit'] : tra("Create/Edit"); $smod_params['default_button'] = 'edit'; $smod_params['edit_action'] = isset($smod_params['action']) ? $smod_params['action'] : 'tiki-editpage.php'; $smod_params['input_size'] = isset($smod_params['size']) ? $smod_params['size'] : 15; $smod_params['search_heading'] = isset($smod_params['mod_quickedit_heading']) ? $smod_params['mod_quickedit_heading'] : $smod_params['search_heading']; $smod_params['title'] = tra('Quick Edit a Wiki Page'); break; case 'search': // params from old search_box module $smod_params['tiki_search'] = isset($smod_params['tiki']) ? $smod_params['tiki'] : 'n'; $smod_params['show_search_button'] = 'y'; $smod_params['show_go_button'] = 'n'; $smod_params['show_edit_button'] = 'n'; $smod_params['advanced_search'] = 'y'; $smod_params['advanced_search_option'] = $prefs['feature_search_fulltext']; $smod_params['advanced_search_help'] = $prefs['feature_search_fulltext']; $smod_params['search_submit'] = tra('Go'); $smod_params['default_button'] = 'search'; $smod_params['show_object_filter'] = $prefs['feature_search_show_object_filter']; break; case 'page': // params from old search_wiki_page module $smod_params['show_search_button'] = 'n'; $smod_params['show_go_button'] = 'y'; $smod_params['show_edit_button'] = 'n'; $smod_params['go_submit'] = tra('Go'); $smod_params['default_button'] = 'go'; $smod_params['title'] = tra('Search for Wiki Page'); break; case '': default: break; } switch ($smod_params['default_button']) { case 'edit': $smod_params['default_action'] = $smod_params['edit_action']; break; case 'go': $smod_params['default_action'] = $smod_params['go_action']; break; case 'search': default: $smod_params['default_action'] = $smod_params['search_action']; break; } if ( ($smod_params['show_search_button'] == 'y' || $smod_params['default_action'] == $smod_params['search_action']) && $smod_params['show_edit_button'] == 'n' && $smod_params['show_go_button'] == 'n' ) { $smod_params['use_autocomplete'] = 'n'; } if (! empty($_REQUEST['highlight'])) { $smod_params['input_value'] = $_REQUEST['highlight']; } elseif (! empty($_REQUEST['words'])) { $smod_params['input_value'] = $_REQUEST['words']; } elseif (! empty($_REQUEST['find'])) { $smod_params['input_value'] = $_REQUEST['find']; } elseif (! empty($_REQUEST['filter']['content']) && is_array($_REQUEST['filter'])) { $smod_params['input_value'] = $_REQUEST['filter']['content']; } else { $smod_params['input_value'] = ''; } if (! empty($_REQUEST['where'])) { $smod_params['where'] = $_REQUEST['where']; } elseif (! empty($_REQUEST['filter']['type'])) { $smod_params['where'] = $_REQUEST['filter']['type']; } else { $smod_params['where'] = ''; } if (! empty($_REQUEST['boolean_last'])) { if (! empty($_REQUEST['boolean'])) { $smod_params['advanced_search'] = 'y'; } else { $smod_params['advanced_search'] = 'n'; } } }