/** * Constructor method to instantiate the user controller object * * @param Request $request * @param Response $response * @param Project $project * @param string $viewPath * @return self */ public function __construct(Request $request = null, Response $response = null, Project $project = null, $viewPath = null) { // Create the session object and get the user type $this->sess = Session::getInstance(); $this->type = $project->getService('acl')->getType(); if (null === $viewPath) { $cfg = $project->module('Phire')->asArray(); $viewPath = __DIR__ . '/../../../../view/phire'; if (isset($cfg['view'])) { $class = get_class($this); if (is_array($cfg['view']) && isset($cfg['view'][$class])) { $viewPath = $cfg['view'][$class]; } else { if (is_array($cfg['view']) && isset($cfg['view']['*'])) { $viewPath = $cfg['view']['*']; } else { if (is_string($cfg['view'])) { $viewPath = $cfg['view']; } } } } // If it is not a user, or a user globally logged into another area if (strtolower($this->type->type) != 'user' && !$this->type->global_access || substr($_SERVER['REQUEST_URI'], 0, strlen(BASE_PATH . APP_URI)) != BASE_PATH . APP_URI) { $site = Table\Sites::getSite(); $theme = Table\Extensions::findBy(array('type' => 0, 'active' => 1), null, 1); $themePath = $site->document_root . $site->base_path . CONTENT_PATH . DIRECTORY_SEPARATOR . 'extensions' . DIRECTORY_SEPARATOR . 'themes' . DIRECTORY_SEPARATOR . $this->type->type; $activeThemePath = null; if (isset($theme->rows[0])) { $activeThemePath = $site->document_root . $site->base_path . CONTENT_PATH . DIRECTORY_SEPARATOR . 'extensions' . DIRECTORY_SEPARATOR . 'themes' . DIRECTORY_SEPARATOR . $theme->rows[0]->name . DIRECTORY_SEPARATOR . $this->type->type; } if (null !== $activeThemePath && file_exists($activeThemePath)) { $viewPath = $activeThemePath; } else { if (file_exists($themePath)) { $viewPath = $themePath; } } } } // Set the correct base path and user URI based on user type if (get_called_class() == 'Phire\\Controller\\Phire\\IndexController') { $basePath = strtolower($this->type->type) != 'user' ? BASE_PATH . '/' . strtolower($this->type->type) : BASE_PATH . APP_URI; $request = new Request(null, $basePath); } parent::__construct($request, $response, $project, $viewPath); }
public function testServiceLocator() { $p = new Project(); $p->setService('config', 'Pop\\Config', array(array('test' => 123)))->setService('color', 'Pop\\Color\\Color', function () { return array(new \Pop\Color\Space\Rgb(255, 0, 0)); }); $this->assertInstanceOf('Pop\\Config', $p->getService('config')); $this->assertInstanceOf('Pop\\Color\\Color', $p->getService('color')); $this->assertInstanceOf('Pop\\Service\\Locator', $p->getServiceLocator()); }