* */ namespace Combodo\iTop\Application\Search; use ApplicationContext; use AttributeDefinition; use CMDBObjectSet; use Combodo\iTop\Application\Search\CriterionConversion\CriterionToSearchForm; use CoreException; use DBObjectSearch; use Dict; use Expression; use IssueLog; use MetaModel; use TrueExpression; use utils; use WebPage; class SearchForm { /** * @param \WebPage $oPage * @param \CMDBObjectSet $oSet * @param array $aExtraParams * * @return string * @throws \CoreException * @throws \DictExceptionMissingString */ public static function GetSearchForm(WebPage $oPage, CMDBObjectSet $oSet, $aExtraParams = array()) { $sHtml = ''; $oAppContext = new ApplicationContext(); $sClassName = $oSet->GetFilter()->GetClass(); $aListParams = array(); // Simple search form if (isset($aExtraParams['currentId'])) { $sSearchFormId = $aExtraParams['currentId']; $aListParams['currentId'] = $aExtraParams['currentId']; } else { $iSearchFormId = $oPage->GetUniqueId(); $sSearchFormId = 'SimpleSearchForm'.$iSearchFormId; $sHtml .= "
\n"; $aListParams['currentId'] = "$iSearchFormId"; } // Check if the current class has some sub-classes if (isset($aExtraParams['baseClass'])) { $sRootClass = $aExtraParams['baseClass']; } else { $sRootClass = $sClassName; } if (array_key_exists('selection_mode', $aExtraParams)) { $aListParams['selection_mode'] = $aExtraParams['selection_mode']; } if (array_key_exists('selection_type', $aExtraParams)) { $aListParams['selection_type'] = $aExtraParams['selection_type']; } $sJson = stripslashes(utils::ReadParam('json', '', false, 'raw_data')); if (!empty($sJson)) { $aListParams['json'] = json_decode($sJson, true); } if (array_key_exists('cssCount', $aExtraParams)) { $aListParams['cssCount'] = $aExtraParams['cssCount']; } $aSubClasses = MetaModel::GetSubclasses($sRootClass); if (count($aSubClasses) > 0) { $aOptions = array(); $aOptions[MetaModel::GetName($sRootClass)] = "