From d6848a3d71aee23be7c8ebd0330a8cf7c5ea5e66 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Mon, 4 May 2020 15:24:24 +0200 Subject: [PATCH] Replace global_search.php by a LSurl route --- public_html/global_search.php | 112 ----------------- public_html/includes/routes.php | 119 ++++++++++++++++++ .../templates/default/global_search.tpl | 2 +- public_html/templates/default/top.tpl | 2 +- 4 files changed, 121 insertions(+), 114 deletions(-) delete mode 100644 public_html/global_search.php diff --git a/public_html/global_search.php b/public_html/global_search.php deleted file mode 100644 index 316e40c0..00000000 --- a/public_html/global_search.php +++ /dev/null @@ -1,112 +0,0 @@ - _('Refresh'), - 'url' => 'global_search.php?pattern='.urlencode($pattern).'&refresh=1', - 'action' => 'refresh' - ); - LStemplate :: assign('LSview_actions', $LSview_actions); - - if (LSsession :: loadLSclass('LSform')) { - LSform :: loadDependenciesDisplayView(); - } - - $onlyOne = true; - $onlyOneObject = false; - - if (LSsession :: loadLSclass('LSsearch')) { - $pages=array(); - foreach ($LSaccess as $LSobject => $label) { - if ( $LSobject != SELF && LSsession :: loadLSobject($LSobject) ) { - if (!LSconfig::get("LSobjects.$LSobject.globalSearch", true, 'bool')) - continue; - $object = new $LSobject(); - LStemplate :: assign('pagetitle',$object -> getLabel()); - - $LSsearch = new LSsearch($LSobject,'LSview'); - $LSsearch -> setParamsFormPostData(); - - $LSsearch -> run(); - - if ($LSsearch -> total > 0) { - $page = $LSsearch -> getPage(0); - LStemplate :: assign('page',$page); - LStemplate :: assign('LSsearch',$LSsearch); - $pages[] = LSsession :: fetchTemplate('global_search_one_page.tpl'); - - if ($onlyOne) { - if ($LSsearch -> total > 1) { - $onlyOne = false; - } - else { - if ($onlyOneObject === false) { - $onlyOneObject = array ( - 'LSobject' => $LSobject, - 'dn' => $page['list'][0] -> dn, - ); - } - else { - // More than one LSobject type result with one object found - $onlyOne = false; - } - } - } - } - $LSsearch -> afterUsingResult(); - } - } - } - else { - LSsession :: addErrorCode('LSsession_05','LSsearch'); - } - - if ($onlyOne && $onlyOneObject && isset($_REQUEST['LSsearch_submit'])) { - LSurl :: redirect('object/'.$onlyOneObject['LSobject'].'/'.urlencode($onlyOneObject['dn'])); - } - - LStemplate :: assign('pattern',$pattern); - LStemplate :: assign('pages',$pages); - LSsession :: setTemplate('global_search.tpl'); - } - else { - LSerror :: addErrorCode('LSsession_11'); - } -} -else { - LSsession :: setTemplate('login.tpl'); -} - -// Print template -LSsession :: displayTemplate(); diff --git a/public_html/includes/routes.php b/public_html/includes/routes.php index e028b8ea..841e094a 100644 --- a/public_html/includes/routes.php +++ b/public_html/includes/routes.php @@ -46,6 +46,125 @@ function handle_index($request) { } LSurl :: add_handler('#^(index\.php)?$#', 'handle_index', true); +/* + * Handle global seearch request + * + * @param[in] $request LSurlRequest The request + * + * @retval void + **/ +function handle_global_search($request) { + // Check global search is enabled + if (!LSsession :: globalSearch()) { + LSurl :: error_404($request); + return false; + } + + if (!LSsession :: loadLSclass('LSsearch')) { + LSsession :: addErrorCode('LSsession_05','LSsearch'); + LSsession :: displayTemplate(); + return false; + } + + $LSaccess = LSsession :: getLSaccess(); + $pattern = (isset($_REQUEST['pattern'])?$_REQUEST['pattern']:''); + if (empty($pattern)) { + LSerror :: addErrorCode(false, _('You must provide pattern for global search.')); + LSurl :: redirect(); + } + + $LSview_actions=array(); + $LSview_actions['refresh'] = array ( + 'label' => _('Refresh'), + 'url' => 'search.php?pattern='.urlencode($pattern).'&refresh=1', + 'action' => 'refresh' + ); + LStemplate :: assign('LSview_actions', $LSview_actions); + + if (LSsession :: loadLSclass('LSform')) { + LSform :: loadDependenciesDisplayView(); + } + + $onlyOne = true; + $onlyOneObject = false; + $pages=array(); + foreach ($LSaccess as $LSobject => $label) { + if ( $LSobject == SELF || !LSsession :: loadLSobject($LSobject) ) + continue; + if (!LSconfig::get("LSobjects.$LSobject.globalSearch", true, 'bool')) + continue; + + $object = new $LSobject(); + LStemplate :: assign('pagetitle', $object -> getLabel()); + + $LSsearch = new LSsearch($LSobject, 'LSview'); + $LSsearch -> setParamsFormPostData(); + + $LSsearch -> run(); + + if ($LSsearch -> total > 0) { + $page = $LSsearch -> getPage(0); + LStemplate :: assign('page', $page); + LStemplate :: assign('LSsearch', $LSsearch); + $pages[] = LSsession :: fetchTemplate('global_search_one_page.tpl'); + + if ($onlyOne) { + if ($LSsearch -> total > 1) { + $onlyOne = false; + } + else { + if ($onlyOneObject === false) { + $onlyOneObject = array ( + 'LSobject' => $LSobject, + 'dn' => $page['list'][0] -> dn, + ); + } + else { + // More than one LSobject type result with one object found + $onlyOne = false; + } + } + } + $LSsearch -> afterUsingResult(); + } + } + + if ($onlyOne && $onlyOneObject && isset($_REQUEST['LSsearch_submit'])) { + LSurl :: redirect('object/'.$onlyOneObject['LSobject'].'/'.urlencode($onlyOneObject['dn'])); + } + + LStemplate :: assign('pattern',$pattern); + LStemplate :: assign('pages',$pages); + LSsession :: setTemplate('global_search.tpl'); + + // Display template + LSsession :: displayTemplate(); +} +LSurl :: add_handler('#^search/?$#', 'handle_global_search'); + + +/* + * Handle old global_search.php request for retro-compatibility + * + * @param[in] $request LSurlRequest The request + * + * @retval void + **/ +function handle_old_global_search_php($request) { + if (!isset($_GET['pattern'])) + $url = null; + else { + $url = "search?pattern=".$_GET['pattern']; + if (isset($_GET['LSsearch_submit'])) + $url .= "&LSsearch_submit"; + if (isset($_GET['refresh'])) + $url .= "&refresh"; + } + LSerror :: addErrorCode('LSsession_26', 'global_search.php'); + LSurl :: redirect($url); +} +LSurl :: add_handler('#^global_search\.php#', 'handle_old_global_search_php'); + /* * Handle image request * diff --git a/public_html/templates/default/global_search.tpl b/public_html/templates/default/global_search.tpl index 2b95056a..ac0349e0 100644 --- a/public_html/templates/default/global_search.tpl +++ b/public_html/templates/default/global_search.tpl @@ -1,7 +1,7 @@ {include file='ls:top.tpl'} -