Beispiel #1
0
 public function _initThemes()
 {
     $this->bootstrap('vars');
     $this->bootstrap('registerThemes');
     $layout = Zend_Layout::getMvcInstance();
     $view = $layout->getView();
     $cr = new Ot_Config_Register();
     $tr = new Ot_Layout_ThemeRegister();
     $theme = $cr->getVar('theme')->getValue() != '' ? $cr->getVar('theme')->getValue() : 'default';
     $thisTheme = $tr->getTheme($theme);
     if (is_null($thisTheme)) {
         $thisTheme = $tr->getTheme('default');
     }
     $hr = new Ot_Layout_HeadRegister();
     foreach ($thisTheme->getCss() as $position => $cssFiles) {
         foreach ($cssFiles as $c) {
             $hr->registerCssFile($c, $position);
         }
     }
     foreach ($thisTheme->getJs() as $position => $jsFiles) {
         foreach ($jsFiles as $j) {
             $hr->registerJsFile($j, $position);
         }
     }
     $layout->setLayoutPath($thisTheme->getPath() . '/views/layouts');
     $view->addScriptPath(array($thisTheme->getPath() . '/views/scripts/'))->addHelperPath(array($thisTheme->getPath() . '/views/helpers/'));
 }
Beispiel #2
0
 /**
  * Dispatches the trigger specified
  *
  * @param int $key
  */
 public function dispatch($key)
 {
     $vr = new Ot_Config_Register();
     $triggerSystem = $vr->getVar('triggerSystem');
     if (is_null($triggerSystem)) {
         $triggerSystem = false;
     } else {
         $triggerSystem = $triggerSystem->getValue();
     }
     // if the trigger system is globally disabled just return
     if ($triggerSystem == false) {
         return;
     }
     $action = new Ot_Model_DbTable_TriggerAction();
     $actions = $action->getActionsForTrigger($key);
     foreach ($actions as $a) {
         $helper = new $a->actionKey();
         $data = $helper->getDbTable()->find($a->triggerActionId);
         if (is_null($data)) {
             continue;
         }
         $data = $data->toArray();
         foreach ($data as &$d) {
             foreach ($this->_vars as $key => $value) {
                 if (is_array($value)) {
                     $value = implode(', ', $value);
                 }
                 $d = str_replace("[[{$key}]]", $value, $d);
             }
         }
         $helper->dispatch($data);
     }
 }
Beispiel #3
0
 public function configVar($var)
 {
     $vr = new Ot_Config_Register();
     $thisVar = $vr->getVar($var);
     if (is_null($thisVar)) {
         return '';
     }
     return $thisVar->getValue();
 }
 public function apiDocsAction()
 {
     $apiRegistry = new Ot_Api_Register();
     $endpoints = $apiRegistry->getApiEndpoints();
     $apiMethods = array('get', 'put', 'post', 'delete');
     $data = array();
     $acl = new Ot_Acl('remote');
     $vr = new Ot_Config_Register();
     $role = $vr->getVar('defaultRole')->getValue();
     if (Zend_Auth::getInstance()->hasIdentity()) {
         $thisAccount = Zend_Auth::getInstance()->getIdentity();
         if (count($thisAccount->role) > 1) {
             $roles = array();
             // Get role names from the list of role Ids
             foreach ($thisAccount->role as $r) {
                 $roles[] = $acl->getRole($r);
             }
             // Create a new role that inherits from all the returned roles
             $roleName = implode(',', $roles);
             $role = $roleName;
             $acl->addRole(new Zend_Acl_Role($roleName), $roles);
         } elseif (count($thisAccount->role) == 1) {
             $role = $thisAccount->role[0];
         }
         if ($role == '' || !$acl->hasRole($role)) {
             $role = $vr->getVar('defaultRole')->getValue();
         }
     }
     foreach ($endpoints as &$e) {
         $data[$e->getName()] = array('name' => $e->getName(), 'methods' => array(), 'description' => $e->getDescription());
         $reflection = new ReflectionClass($e->getMethodClassname());
         $methods = $reflection->getMethods();
         foreach ($methods as $m) {
             // the api "module" here is really a kind of placeholder
             $aclResource = 'api_' . strtolower($e->getName());
             if (in_array($m->name, $apiMethods) && $m->class == $e->getMethodClassname() && $acl->isAllowed($role, $aclResource, $m->name)) {
                 $instructions = 'No instructions provided';
                 if ($m->getDocComment() != '') {
                     $instructions = $this->_cleanComment($m->getDocComment());
                 }
                 $data[$e->getName()]['methods'][$m->getName()] = $instructions;
             }
         }
     }
     $endpoints = array();
     foreach ($data as $key => $val) {
         if (count($val['methods']) != 0) {
             $endpoints[$key] = $val;
         }
     }
     $this->view->endpoints = $endpoints;
     $this->_helper->pageTitle('API Documentation');
 }
 public function indexAction()
 {
     $returnType = 'json';
     try {
         $apiRegister = new Ot_Api_Register();
         $vr = new Ot_Config_Register();
         $params = $this->_getAllParams();
         if (isset($params['type']) && in_array(strtolower($returnType), array('json', 'php'))) {
             $returnType = strtolower($params['type']);
         }
         if (!isset($params['endpoint']) || empty($params['endpoint'])) {
             return $this->_validOutput(array('message' => 'Welcome to the ' . $vr->getVar('appTitle')->getValue() . ' API.  You will need an API key to get any further. Visit ' . Zend_Registry::get('siteUrl') . '/account to get one.'), $returnType);
         }
         $endpoint = $params['endpoint'];
         $thisEndpoint = $apiRegister->getApiEndpoint($endpoint);
         if (is_null($thisEndpoint)) {
             return $this->_errorOutput('Invalid Endpoint', $returnType, 404);
         }
         if (!isset($params['key']) || empty($params['key'])) {
             return $this->_errorOutput('You must provide an API key', $returnType, 403);
         }
         $apiApp = new Ot_Model_DbTable_ApiApp();
         $thisApp = $apiApp->getAppByKey($params['key']);
         if (is_null($thisApp)) {
             return $this->_errorOutput('Invalid API key', $returnType, 403);
         }
         $otAccount = new Ot_Model_DbTable_Account();
         $thisAccount = $otAccount->getByAccountId($thisApp->accountId);
         if (is_null($thisAccount)) {
             return $this->_errorOutput('No user found for this API key', $returnType, 403);
         }
         $acl = new Ot_Acl('remote');
         if (count($thisAccount->role) > 1) {
             $roles = array();
             // Get role names from the list of role Ids
             foreach ($thisAccount->role as $r) {
                 $roles[] = $acl->getRole($r);
             }
             // Create a new role that inherits from all the returned roles
             $roleName = implode(',', $roles);
             $thisAccount->role = $roleName;
             $acl->addRole(new Zend_Acl_Role($roleName), $roles);
         } elseif (count($thisAccount->role) == 1) {
             $thisAccount->role = array_pop($thisAccount->role);
         }
         if (!$acl->hasRole($thisAccount->role)) {
             $thisAccount->role = $vr->getVar('defaultRole')->getValue();
         }
         $role = $thisAccount->role;
         if ($role == '' || !$acl->hasRole($role)) {
             $role = $vr->getVar('defaultRole')->getValue();
         }
         // the api "module" here is really a kind of placeholder
         $aclResource = 'api_' . strtolower($thisEndpoint->getName());
         Zend_Auth::getInstance()->getStorage()->write($thisAccount);
     } catch (Exception $e) {
         return $this->_errorOutput($e->getMessage(), $returnType);
     }
     $data = array();
     $apiObject = $thisEndpoint->getEndpointObj();
     if ($this->_request->isPost()) {
         if (!$acl->isAllowed($role, $aclResource, 'post')) {
             return $this->_errorOutput('You do not have permission to access this endpoint with POST', $returnType, 403);
         }
         try {
             $data = $apiObject->post($params);
         } catch (Exception $e) {
             return $this->_errorOutput($e->getMessage(), $returnType);
         }
     } else {
         if ($this->_request->isPut()) {
             if (!$acl->isAllowed($role, $aclResource, 'put')) {
                 return $this->_errorOutput('You do not have permission to access this endpoint with PUT', $returnType, 403);
             }
             try {
                 $data = $apiObject->put($params);
             } catch (Exception $e) {
                 return $this->_errorOutput($e->getMessage(), $returnType);
             }
         } else {
             if ($this->_request->isDelete()) {
                 if (!$acl->isAllowed($role, $aclResource, 'delete')) {
                     return $this->_errorOutput('You do not have permission to access this endpoint with DELETE', $returnType, 403);
                 }
                 try {
                     $data = $apiObject->delete($params);
                 } catch (Exception $e) {
                     return $this->_errorOutput($e->getMessage(), $returnType);
                 }
             } else {
                 if (!$acl->isAllowed($role, $aclResource, 'get')) {
                     return $this->_errorOutput('You do not have permission to access this endpoint with GET', $returnType, 403);
                 }
                 try {
                     $data = $apiObject->get($params);
                 } catch (Exception $e) {
                     return $this->_errorOutput($e->getMessage(), $returnType);
                 }
             }
         }
     }
     return $this->_validOutput($data, $returnType);
 }