Exemple #1
0
 /**
  * Save the settings for the timecard
  *
  * @param array $params $_POST values
  *
  * @return void
  */
 public function setSettings($params)
 {
     $namespace = new Zend_Session_Namespace(Phprojekt_Setting::IDENTIFIER . Phprojekt_Auth::getUserId());
     $fields = $this->getFieldDefinition(Phprojekt_ModelInformation_Default::ORDERING_FORM);
     foreach ($fields as $data) {
         foreach ($params as $key => $value) {
             if ($key == $data['key']) {
                 $setting = new Phprojekt_Setting();
                 $setting->setModule('Timecard');
                 if ($key == 'favorites') {
                     if (count($value) === 1 && $value[0] === "") {
                         $value = array();
                     }
                     $value = serialize($value);
                 }
                 $where = sprintf('user_id = %d AND key_value = %s AND module_id = %d', (int) Phprojekt_Auth::getUserId(), $setting->_db->quote($key), (int) Phprojekt_Module::getId('Timecard'));
                 $record = $setting->fetchAll($where);
                 if (isset($record[0])) {
                     $record[0]->keyValue = $key;
                     $record[0]->value = $value;
                     $record[0]->save();
                 } else {
                     $setting->userId = Phprojekt_Auth::getUserId();
                     $setting->moduleId = Phprojekt_Module::getId('Timecard');
                     $setting->keyValue = $key;
                     $setting->value = $value;
                     $setting->identifier = 'Timecard';
                     $setting->save();
                 }
                 $namespace->{$key} = $value;
                 break;
             }
         }
     }
 }
Exemple #2
0
 /**
  * Collect all the values of the settings and return it in one row.
  *
  * @param integer $moduleId The current moduleId.
  * @param array   $metadata Array with all the fields.
  * @param integer $userId   The user ID, if is not setted, the current user is used.
  *
  * @return array Array with all the settings and values.
  */
 public function getList($moduleId, $metadata, $userId = null)
 {
     $setting = new Phprojekt_Setting();
     $setting->setModule('Notification');
     $settings = array();
     if ($userId === null) {
         $userId = (int) Phprojekt_Auth::getUserId();
     }
     $where = sprintf('module_id = %d AND user_id = %d', (int) $moduleId, (int) $userId);
     $record = $setting->fetchAll($where);
     $data = array();
     $data['id'] = 0;
     foreach ($metadata as $meta) {
         $data[$meta['key']] = $meta['default'];
         // This is to use the default value defined in getFieldDefinition()
         foreach ($record as $oneSetting) {
             if ($oneSetting->keyValue == $meta['key']) {
                 $getter = 'get' . ucfirst($oneSetting->keyValue);
                 if (method_exists($this, $getter)) {
                     $data[$meta['key']] = call_user_func(array($this, $getter), $oneSetting->value);
                 } else {
                     $data[$meta['key']] = $oneSetting->value;
                 }
                 break;
             }
         }
     }
     $settings[] = $data;
     return $settings;
 }
 /**
  * Tests logout action on login controller
  */
 public function testLoginLogoutAction()
 {
     $this->setRequestUrl('Login/logout');
     try {
         $this->front->dispatch($this->request, $this->response);
     } catch (Zend_Controller_Response_Exception $error) {
         $this->assertEquals(0, $error->getCode());
         try {
             $authNamespace = new Zend_Session_Namespace('Phprojekt_Auth-login');
             $this->fail('An error occured on logout action: Id ' . $authNamespace->userId . ' is still logued');
         } catch (Zend_Session_Exception $error) {
             $this->assertEquals(0, $error->getCode());
             // Try to fetch login data in settings table to assure it has been deleted
             $settingsModel = new Phprojekt_Setting();
             $settingsModel->setModule('User');
             $db = Phprojekt::getInstance()->getDb();
             $where = sprintf("user_id = 1 AND key_value LIKE %s", $db->quote(Phprojekt_Auth::LOGGED_TOKEN . '%'));
             $rows = $settingsModel->fetchAll($where);
             $this->assertTrue(count($rows) == 0);
             // Remove all cache files before the tests end
             Phprojekt::getInstance()->getCache()->clean();
             return;
         }
     }
     $this->fail('An error occured on logout action');
 }
Exemple #4
0
 /**
  * Save the settings into the table.
  *
  * @param array   $params $_POST fields.
  * @param integer $userId The user ID, if is not setted, the current user is used.
  *
  * @return void
  */
 public function setSettings($params, $userId = 0)
 {
     if (!$userId) {
         $userId = Phprojekt_Auth::getUserId();
     }
     if (empty($params['password'])) {
         $password = Phprojekt_Auth::getRealUser()->getSetting('password', $userId);
     } else {
         $password = Phprojekt_Auth::cryptString($params['password']);
     }
     $namespace = new Zend_Session_Namespace(Phprojekt_Setting::IDENTIFIER . $userId);
     $fields = $this->getFieldDefinition(Phprojekt_ModelInformation_Default::ORDERING_FORM);
     foreach ($fields as $data) {
         foreach ($params as $key => $value) {
             if ($key == $data['key'] && $key != 'oldValue' && $key != 'confirmValue') {
                 if ($key == 'proxies') {
                     if (count($value) === 1 && $value[0] === "") {
                         $value = array();
                     }
                     $proxyTable = new Phprojekt_Auth_ProxyTable();
                     $proxyTable->setProxyIdsForUserId($value);
                 } else {
                     $setting = new Phprojekt_Setting();
                     $setting->setModule('User');
                     if ($key == 'password') {
                         $value = $password;
                     }
                     $where = sprintf('user_id = %d AND key_value = %s AND module_id = %d', (int) $userId, $setting->_db->quote($key), 0);
                     $record = $setting->fetchAll($where);
                     if (isset($record[0])) {
                         $record[0]->keyValue = $key;
                         $record[0]->value = $value;
                         $record[0]->save();
                     } else {
                         $setting->userId = $userId;
                         $setting->moduleId = 0;
                         $setting->keyValue = $key;
                         $setting->value = $value;
                         $setting->identifier = 'Core';
                         $setting->save();
                     }
                     $namespace->{$key} = $value;
                 }
                 break;
             }
         }
     }
 }
Exemple #5
0
 /**
  * Deletes login data on DB and cookies.
  *
  * @param integer $userId ID of the user.
  *
  * @return void
  */
 private static function _deleteDbAndCookies($userId)
 {
     if ($userId) {
         // Delete all DB settings table token rows
         $db = Phprojekt::getInstance()->getDb();
         $setting = new Phprojekt_Setting();
         $setting->setModule('User');
         $where = sprintf("user_id = %d AND key_value LIKE %s", (int) $userId, $db->quote(self::LOGGED_TOKEN . '%'));
         $rows = $setting->fetchAll($where);
         foreach ($rows as $row) {
             $row->delete();
         }
     }
     // Don't work with cookies if headers have already been sent (when unittest are being executed)
     if (headers_sent()) {
         return;
     }
     self::_setCookies("", 0, 1);
 }