/** * Executes a global search in multiple types. * * @param mixed $searchKeys * @param string|array $type A type or array of types to be searched for. * @param bool $trashcan * @param int $limit * @param bool $restrictToPermission * @access public * @return void */ public function &globalSearch($searchKeys, $type = '', $trashcan = false, $limit = 0, $restrictToPermission = InnoworkItem::SEARCH_RESTRICT_NONE) { $result = array(); if ($this->container->getState() == \Innomatic\Core\InnomaticContainer::STATE_DEBUG) { $this->container->getLoadTimer()->mark('InnoworkCore: start global search'); } $result['result'] = array(); $result['founditems'] = 0; while (list($key, $value) = each($this->summary)) { if ($value['searchable'] and ($type == '' or $type != '' and (!is_array($type) and $type == $key or is_array($type) and in_array($key, $type)))) { $class_name = $this->summary[$key]['classname']; if (!class_exists($class_name)) { continue; } $tmp_class = new $class_name($this->rootDA, $this->domainDA); if (!$trashcan or $trashcan and $tmp_class->mNoTrash == false) { $result['result'][$key] = $tmp_class->search($searchKeys, '', false, $trashcan, (int) $limit, 0, $restrictToPermission); $result['founditems'] += count($result['result'][$key]); //$tmp_locale = new LocaleCatalog( $itemtype_query->getFields( 'catalog' ), $this->container->getCurrentUser()->getLanguage() ); } } } reset($this->summary); if ($this->container->getState() == \Innomatic\Core\InnomaticContainer::STATE_DEBUG) { $this->container->getLoadTimer()->mark('InnoworkCore: end global search'); } return $result; }