/**
  * 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;
 }
예제 #2
0
 public function ___construct($forceSetup = false)
 {
     $this->container = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer');
     $this->mBuilt = false;
     // Parameters must be extracted before starting any dispatcher or validator
     //
     $this->parameters = $this->arrayMergeClobber($this->arrayMergeClobber($_GET, $_POST), $_FILES);
     $this->mDisp = new \Innomatic\Wui\Dispatch\WuiDispatcher('wui');
     $this->mForceSetup = $forceSetup;
     if ($this->container->getState() != \Innomatic\Core\InnomaticContainer::STATE_SETUP or $this->mForceSetup and $this->container->getState() == \Innomatic\Core\InnomaticContainer::STATE_SETUP) {
         $rootDA = $this->container->getDataAccess();
         if (is_object($rootDA)) {
             $this->mrRootDb = $rootDA;
         }
     }
     // AJAX
     $ajax_request_uri = $_SERVER['REQUEST_URI'];
     if (strpos($ajax_request_uri, '?')) {
         $ajax_request_uri = substr($ajax_request_uri, 0, strpos($ajax_request_uri, '?'));
     }
     $this->xajax = \Innomatic\Ajax\Xajax::instance('Xajax', $ajax_request_uri);
 }
 /**
  * Launches a panel in the domain desktop.
  *
  * If the panel name is one "main" then
  * no real panel is launched, a domain  desktop layout file is included.
  *
  * Domain desktop layout files are stored in the folder
  * core/classes/innomatic/desktop/layout/domain.
  *
  * @param string $resource Panel name.
  */
 public function executeDomain($resource)
 {
     // Check if this is the default page and if the user is allowed to access the dashboard
     if (substr($resource, -1, 1) == '/') {
         $perm = new \Innomatic\Desktop\Auth\DesktopPanelAuthorizator($this->container->getCurrentDomain()->getDataAccess(), $this->container->getCurrentUser()->getGroup());
         $node_id = $perm->getNodeIdFromFileName('dashboard');
         if ($perm->check($node_id, \Innomatic\Desktop\Auth\DesktopPanelAuthorizator::NODETYPE_PAGE) != \Innomatic\Desktop\Auth\DesktopPanelAuthorizator::NODE_NOTENABLED) {
             $resource = $resource . 'dashboard';
         }
     }
     if (substr($resource, -1, 1) != '/') {
         // Must exit if the user called a page for which he isn't enabled
         //
         if (!isset($perm)) {
             $perm = new \Innomatic\Desktop\Auth\DesktopPanelAuthorizator($this->container->getCurrentDomain()->getDataAccess(), $this->container->getCurrentUser()->getGroup());
         }
         $desktopPanel = basename($resource);
         if ($this->container->getState() == \Innomatic\Core\InnomaticContainer::STATE_DEBUG) {
             $dump = \Innomatic\Debug\InnomaticDump::instance('\\Innomatic\\Debug\\InnomaticDump');
             $dump->desktopApplication = $desktopPanel;
             $dump->sessionId = $this->session->getId();
         }
         switch ($desktopPanel) {
             case 'index':
                 break;
             default:
                 $node_id = $perm->getNodeIdFromFileName($desktopPanel);
                 if ($node_id) {
                     if ($perm->check($node_id, \Innomatic\Desktop\Auth\DesktopPanelAuthorizator::NODETYPE_PAGE) == \Innomatic\Desktop\Auth\DesktopPanelAuthorizator::NODE_NOTENABLED) {
                         $adloc = new \Innomatic\Locale\LocaleCatalog('innomatic::authentication', $this->container->getCurrentUser()->getLanguage());
                         $this->container->abort($adloc->getStr('nopageauth'));
                     }
                 } else {
                     $adloc = new \Innomatic\Locale\LocaleCatalog('innomatic::authentication', $this->container->getCurrentUser()->getLanguage());
                     $this->container->abort($adloc->getStr('nopageauth'));
                 }
         }
         if (is_dir($resource . '-panel')) {
             $panelHome = $resource . '-panel/';
             $panelName = basename($resource);
             $controllerClassName = ucfirst($panelName) . 'PanelController';
             // Checks if view file and definition exist
             if (!(include_once $panelHome . $controllerClassName . '.php')) {
                 throw new \Innomatic\Wui\WuiException(\Innomatic\Wui\WuiException::MISSING_CONTROLLER_FILE);
             }
             if (!class_exists($controllerClassName, true)) {
                 throw new \Innomatic\Wui\WuiException(\Innomatic\Wui\WuiException::MISSING_CONTROLLER_CLASS);
             }
             $controller = new $controllerClassName(\Innomatic\Core\InnomaticContainer::MODE_DOMAIN, $panelName);
             $this->container->setPanelController($controller);
         } else {
             switch ($desktopPanel) {
                 case 'menu':
                     include 'innomatic/desktop/layout/domain/' . $desktopPanel . '.php';
                     break;
                 default:
                     include $resource . '.php';
             }
         }
     } else {
         if (strlen($this->session->get('INNOMATIC_AUTH_USER'))) {
             \Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer')->getProcessor()->getResponse()->addHeader('P3P', 'CP="CUR ADM OUR NOR STA NID"');
             include 'innomatic/desktop/layout/domain/index.php';
         }
     }
 }