/**
 Static function to use to init database layer. Returns a object extending
 dbLayer.
 
 @param	driver		<b>string</b>		Driver name
 @param	host			<b>string</b>		Database hostname
 @param	database		<b>string</b>		Database name
 @param	user			<b>string</b>		User ID
 @param	password		<b>string</b>		Password
 @param	persistent	<b>boolean</b>		Persistent connection (false)
 @return	<b>object</b>
 */
 public static function init($driver, $host, $database, $user = '', $password = '', $persistent = false)
 {
     $driver = Camelizer::firstToUpper($driver);
     if (file_exists(dirname(__FILE__) . '/' . $driver . 'TransConnection.class.php')) {
         require_once dirname(__FILE__) . '/' . $driver . 'TransConnection.class.php';
         $driver_class = $driver . 'TransConnection';
     } else {
         trigger_error('Unable to load DB layer for ' . $driver, E_USER_ERROR);
         exit(1);
     }
     return new $driver_class($host, $database, $user, $password, $persistent);
 }
 public function execute()
 {
     // get the controller
     $controllerClass = $this->getControllerClass();
     if (class_exists($controllerClass)) {
         // namespaced?
         $module = new $controllerClass();
     } else {
         if (($str = substr($controllerClass, 1)) && class_exists($str)) {
             // non namespaced?
             $module = new $str();
         } else {
             throw new ActionEnforcingException('Controller "' . $controllerClass . '" could not be loaded.', $this->context->getModuleName(), $this->context->getActionName());
         }
     }
     // get the action, module, extension of the action
     $extensionId = $this->context->getExtensionName();
     $moduleName = $this->context->getModuleName() ? Camelizer::firstToUpper($this->context->getModuleName()) : DEFAULT_MODULE_NAME;
     $action = $this->context->getActionName() ? Camelizer::firstToLower($this->context->getActionName()) : DEFAULT_ACTION_NAME;
     // Are we authorized to execute this action?
     $requestParameters = $this->context->getRequest()->getParameters();
     if (!tao_models_classes_accessControl_AclProxy::hasAccess($action, $moduleName, $extensionId, $requestParameters)) {
         $userUri = common_session_SessionManager::getSession()->getUserUri();
         throw new tao_models_classes_AccessDeniedException($userUri, $action, $moduleName, $extensionId);
     }
     // if the method related to the specified action exists, call it
     if (method_exists($module, $action)) {
         $this->context->setActionName($action);
         // search parameters method
         $reflect = new ReflectionMethod($module, $action);
         $parameters = $reflect->getParameters();
         $tabParam = array();
         foreach ($parameters as $param) {
             $tabParam[$param->getName()] = $this->context->getRequest()->getParameter($param->getName());
         }
         // Action method is invoked, passing request parameters as
         // method parameters.
         common_Logger::d('Invoking ' . get_class($module) . '::' . $action, array('GENERIS', 'CLEARRFW'));
         call_user_func_array(array($module, $action), $tabParam);
         // Render the view if selected.
         if ($module->hasView()) {
             $renderer = $module->getRenderer();
             echo $renderer->render();
         }
     } else {
         throw new ActionEnforcingException("Unable to find the action '" . $action . "' in '" . get_class($module) . "'.", $this->context->getModuleName(), $this->context->getActionName());
     }
 }
 /**
  * Constructor. Please use only getInstance to retrieve the single instance.
  * 
  * @see Context#getInstance
  */
 private function __construct()
 {
     $this->request = new Request();
     $this->response = new Response();
     $this->viewData = array();
     $this->behaviors = array();
     if (PHP_SAPI != 'cli') {
         try {
             $resolver = new Resolver();
             $this->extensionName = $resolver->getExtensionFromURL();
             $this->moduleName = Camelizer::firstToUpper($resolver->getModule());
             $this->actionName = Camelizer::firstToLower($resolver->getAction());
         } catch (ResolverException $re) {
             $this->extensionName = 'tao';
         }
     }
 }
Example #4
0
 public function __construct()
 {
     if (PHP_SAPI != 'cli') {
         try {
             $resolver = new Resolver();
             $this->extension = $resolver->getExtensionFromURL();
             $this->module = Camelizer::firstToUpper($resolver->getModule());
             $this->action = Camelizer::firstToLower($resolver->getAction());
         } catch (ResolverException $re) {
             $this->extension = 'tao';
         }
     }
     $this->epoch = time();
     $this->user = common_session_SessionManager::getSession()->getUserUri();
     $this->script = $_SERVER['PHP_SELF'];
     $this->system = new common_profiler_System();
 }
Example #5
0
 /**
  * How is accessed object property? by getter, isser or public property
  * Code from Symfony Form Component used - class PropertyPath
  *
  * @param Object $object
  * @param string $name
  * @return mixed array(methodName) or propertyName
  */
 private function getPropertyAccessMethod($object, $name)
 {
     $class = get_class($object);
     if (!isset($this->reflections[$class])) {
         $this->reflections[$class] = new \ReflectionClass($object);
     }
     $reflClass = $this->reflections[$class];
     $camelProp = $this->camelizer->camelize($name);
     $property = $camelProp;
     $getter = 'get' . $camelProp;
     $isser = 'is' . $camelProp;
     if ($reflClass->hasMethod($getter)) {
         if (!$reflClass->getMethod($getter)->isPublic()) {
             throw new ExtJSException(sprintf('Method "%s()" is not public in class "%s"', $getter, $reflClass->getName()));
         }
         return array($getter);
     } else {
         if ($reflClass->hasMethod($isser)) {
             if (!$reflClass->getMethod($isser)->isPublic()) {
                 throw new ExtJSException(sprintf('Method "%s()" is not public in class "%s"', $isser, $reflClass->getName()));
             }
             return array($isser);
         } else {
             if ($reflClass->hasMethod('__get')) {
                 // needed to support magic method __get
                 return $object->{$property};
             } else {
                 if ($reflClass->hasProperty($property)) {
                     if (!$reflClass->getProperty($property)->isPublic()) {
                         throw new ExtJSException(sprintf('Property "%s" is not public in class "%s". Maybe you should create the method "%s()" or "%s()"?', $property, $reflClass->getName(), $getter, $isser));
                     }
                     return $property;
                 } else {
                     if (property_exists($object, $property)) {
                         // needed to support \stdClass instances
                         return $property;
                     }
                 }
             }
         }
     }
     throw new ExtJSException(sprintf('Neither property "%s" nor method "%s()" nor method "%s()" exists in class "%s"', $property, $getter, $isser, $reflClass->getName()));
 }
 /**
  * Load module
  */
 function loadModule()
 {
     $action = $this->httpRequest->getAction();
     $module = $this->httpRequest->getModule();
     # load default module
     if ($module === null && $action === null) {
         $defaut = new Defaut();
         $defaut->index();
         exit;
     }
     $action = Camelizer::firstToUpper($action);
     $module = Camelizer::firstToUpper($module);
     // if module exist include the class
     if ($module !== null) {
         if (($path = $this->getPath($module)) !== null) {
             require_once $path . $module . ".class.php";
         } else {
             throw new Exception(__("No file found"));
         }
         $moduleController = new $module();
     } else {
         throw new Exception(__("No module"));
     }
     // if method exist call it
     if (method_exists($moduleController, $action)) {
         // search parameters method
         $reflect = new ReflectionMethod($module, $action);
         $parameters = $reflect->getParameters();
         $tabParam = array();
         foreach ($parameters as $param) {
             $tabParam[$param->getName()] = $this->httpRequest->getArgument($param->getName());
         }
         call_user_func_array(array(new $module(), $action), $tabParam);
     } else {
         throw new Exception(__("No action"));
     }
 }
Example #7
0
 protected function getDataKind()
 {
     return Camelizer::camelize(explode(' ', strtolower(trim($this->getRootClass()->getLabel()))), false);
 }
 public function execute()
 {
     $module = $this->context->getModuleName();
     $action = $this->context->getActionName();
     // if module exist include the class
     if ($module !== null) {
         //    		//check if there is a specified context first
         //			$isSpecificContext = false;
         //    		if(count($this->context->getSpecifiers()) > 0){
         //				foreach($this->context->getSpecifiers() as $specifier){
         //
         //					$expectedPath = DIR_ACTIONS . $specifier . '/class.' . $module . '.php';
         //
         //					//if we find the view in the specialized context, we load it
         //					if (file_exists($expectedPath)){
         //						require_once ($expectedPath);
         //						$isSpecificContext = true;
         //						break;
         //					}
         //				}
         //			}
         //
         //			//if there is none, we look at the global context
         //			if(!$isSpecificContext){
         $exptectedPath = DIR_ACTIONS . 'class.' . $module . '.php';
         if (file_exists($exptectedPath)) {
             require_once $exptectedPath;
         } else {
             throw new ActionEnforcingException("Module '" . Camelizer::firstToUpper($module) . "' does not exist in {$exptectedPath}.", $this->context->getModuleName(), $this->context->getActionName());
         }
         //			}
         if (defined('ROOT_PATH')) {
             $root = realpath(ROOT_PATH);
         } else {
             $root = realpath($_SERVER['DOCUMENT_ROOT']);
         }
         if (preg_match("/^\\//", $root) && !preg_match("/\\/\$/", $root)) {
             $root .= '/';
         } else {
             if (!preg_match("/\\\$/", $root)) {
                 $root .= '\\';
             }
         }
         $relPath = str_replace($root, '', realpath(dirname($exptectedPath)));
         $relPath = str_replace('/', '_', $relPath);
         $relPath = str_replace('\\', '_', $relPath);
         $className = $relPath . '_' . $module;
         if (!class_exists($className)) {
             throw new ActionEnforcingException("Unable to load  {$className} in {$exptectedPath}", $this->context->getModuleName(), $this->context->getActionName());
         }
         // File gracefully loaded.
         $this->context->setModuleName($module);
         $this->context->setActionName($action);
         $moduleInstance = new $className();
     } else {
         throw new ActionEnforcingException("No Module file matching requested module.", $this->context->getModuleName(), $this->context->getActionName());
     }
     // if the method related to the specified action exists, call it
     if (method_exists($moduleInstance, $action)) {
         // search parameters method
         $reflect = new ReflectionMethod($className, $action);
         $parameters = $reflect->getParameters();
         $tabParam = array();
         foreach ($parameters as $param) {
             $tabParam[$param->getName()] = $this->context->getRequest()->getParameter($param->getName());
         }
         // Action method is invoked, passing request parameters as
         // method parameters.
         common_Logger::d('Invoking ' . get_class($moduleInstance) . '::' . $action, array('GENERIS', 'CLEARRFW'));
         call_user_func_array(array($moduleInstance, $action), $tabParam);
         // Render the view if selected.
         if ($view = $moduleInstance->getView()) {
             $renderer = new Renderer();
             $renderer->render($view);
         }
     } else {
         throw new ActionEnforcingException("Unable to find the appropriate action for Module '{$module}'.", $this->context->getModuleName(), $this->context->getActionName());
     }
 }