* @author Romain Quetiez * @author Denis Flaven * @license http://www.opensource.org/licenses/gpl-3.0.html LGPL */ require_once('../approot.inc.php'); require_once(APPROOT.'/application/application.inc.php'); require_once(APPROOT.'/application/itopwebpage.class.inc.php'); require_once(APPROOT.'/application/applicationcontext.class.inc.php'); require_once(APPROOT.'/application/startup.inc.php'); require_once(APPROOT.'/application/loginwebpage.class.inc.php'); LoginWebPage::DoLogin(true); // Check user rights and prompt if needed (must be admin) $oAppContext = new ApplicationContext(); $oP = new iTopWebPage(Dict::S('UI:UniversalSearchTitle')); // From now on the context is limited to the the selected organization ?? // Now render the content of the page $sBaseClass = utils::ReadParam('baseClass', 'Organization'); $sClass = utils::ReadParam('class', $sBaseClass); $sOQLClause = utils::ReadParam('oql_clause', ''); $sFilter = utils::ReadParam('filter', ''); $sOperation = utils::ReadParam('operation', ''); // First part: select the class to search for $oP->add("
"); $oP->add(Dict::S('UI:UniversalSearch:LabelSelectTheClass')."\n"); $oP->add($oAppContext->GetForForm()); $oP->add("
\n"); try { if ($sOperation == 'search_form') { $sOQL = "SELECT $sClass $sOQLClause"; $oFilter = DBObjectSearch::FromOQL($sOQL); } else { // Second part: advanced search form: if (!empty($sFilter)) { $oFilter = CMDBSearchFilter::unserialize($sFilter); } else if (!empty($sClass)) { $oFilter = new CMDBSearchFilter($sClass); } } } catch (CoreException $e) { $oFilter = new CMDBSearchFilter($sClass); $oP->P("".Dict::Format('UI:UniversalSearch:Error', $e->getHtmlDesc()).""); } if ($oFilter != null) { $oSet = new CMDBObjectSet($oFilter); $oBlock = new DisplayBlock($oFilter, 'search', false); $aExtraParams = $oAppContext->GetAsHash(); $aExtraParams['open'] = true; $aExtraParams['baseClass'] = $sBaseClass; //$aExtraParams['class'] = $sClassName; $oBlock->Display($oP, 0, $aExtraParams); // Search results $oResultBlock = new DisplayBlock($oFilter, 'list', false); $oResultBlock->Display($oP, 1); // Menu node $sFilter = $oFilter->ToOQL(); $oP->add("\n\n"); } $oP->add("\n"); $oP->output(); ?>