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;
 }
 /**
  * Test setSettings
  */
 public function testSetSettings()
 {
     // Save favorites setting
     $timecardSetting = clone $this->_model;
     $favorites = array(0 => 1, 1 => 2);
     $params = array('favorites' => $favorites);
     $timecardSetting->setSettings($params);
     // Check it was well saved
     $settingsModel = new Phprojekt_Setting();
     $settingsModel->setModule('Timecard');
     $response = $settingsModel->getSetting('favorites');
     $response = unserialize($response);
     $this->assertEquals($favorites, $response);
 }
Exemple #4
0
 /**
  * Returns an user setting.
  *
  * @param string $settingName  The key of the setting to get.
  * @param object $defaultValue Default value if setting is empty.
  *
  * @return mix Setting value.
  */
 public function getSetting($settingName, $defaultValue = null)
 {
     if (is_null($this->_setting)) {
         $this->_setting = new Phprojekt_Setting();
         $this->_setting->setModule('User');
     }
     $value = $this->_setting->getSetting($settingName, $this->id);
     if (empty($value)) {
         $value = $defaultValue;
     }
     return $value;
 }
Exemple #5
0
 /**
  * Sets the recipients according to the received IDs.
  *
  * @param array $recipients Array with user IDs.
  *
  * @return void
  */
 public function setTo($recipients)
 {
     $phpUser = new Phprojekt_User_User();
     $setting = new Phprojekt_Setting();
     foreach ($recipients as $recipient) {
         $email = $setting->getSetting('email', (int) $recipient);
         if (!empty($email)) {
             if ((int) $recipient) {
                 $phpUser->find($recipient);
             } else {
                 $phpUser->find(Phprojekt_Auth::getUserId());
             }
             $name = trim($phpUser->firstname . ' ' . $phpUser->lastname);
             if (!empty($name)) {
                 $name = $name . ' (' . $phpUser->username . ')';
             } else {
                 $name = $phpUser->username;
             }
             $this->addTo($email, $name);
         }
     }
 }
 /**
  * Saves an user.
  *
  * If the request parameter "id" is null or 0, the function will add a new user,
  * if the "id" is an existing user, the function will update it.
  *
  * The save action will save some values into the setting table.
  *
  * OPTIONAL request parameters:
  * <pre>
  *  - integer <b>id</b>                    id of the user to save.
  *  - mixed   <b>all other user fields</b> All the fields values to save.
  * </pre>
  *
  * If there is an error, the save will return a Zend_Controller_Action_Exception,
  * if not, it returns a string in JSON format with:
  * <pre>
  *  - type    => 'success'.
  *  - message => Success message.
  *  - id      => Id of the user.
  * </pre>
  *
  * @throws Zend_Controller_Action_Exception On error in the action save or wrong id.
  *
  * @return void
  */
 public function jsonSaveAction()
 {
     $id = (int) $this->getRequest()->getParam('id');
     $this->setCurrentProjectId();
     // Settings
     $setting = new Phprojekt_Setting();
     $setting->setModule('User');
     $message = $setting->validateSettings($this->getRequest()->getParams());
     if (!empty($message)) {
         $type = "error";
         $id = 0;
     } else {
         if (empty($id)) {
             $model = $this->getModelObject();
             $message = Phprojekt::getInstance()->translate(self::ADD_TRUE_TEXT);
         } else {
             $model = $this->getModelObject()->find($id);
             $message = Phprojekt::getInstance()->translate(self::EDIT_TRUE_TEXT);
         }
         $params = $this->setParams($this->getRequest()->getParams(), $model);
         Default_Helpers_Save::save($model, $params);
         if (empty($id)) {
             $id = $model->id;
         }
         $setting->setSettings($this->getRequest()->getParams(), $id);
         $type = "success";
     }
     $return = array('type' => $type, 'message' => $message, 'id' => $id);
     Phprojekt_Converter_Json::echoConvert($return);
 }
 /**
  * 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');
 }
 /**
  * Disables all types of frontend messages.
  *
  * @return void
  */
 public function disableFrontendMessages()
 {
     $defaultSettings = array(Core_Models_Notification_Setting::FIELD_LOGIN_LOGOUT => 0, Core_Models_Notification_Setting::FIELD_DATARECORDS => 0, Core_Models_Notification_Setting::FIELD_USERGENERATED => 0, Core_Models_Notification_Setting::FIELD_ALERTS => 0);
     $setting = new Phprojekt_Setting();
     $setting->setModule('Notification');
     $setting->setSettings($defaultSettings);
 }
Exemple #9
0
 /**
  * Test getList
  */
 public function testGetList()
 {
     $setting = new Phprojekt_Setting();
     $setting->setModule('Timecard');
     $metadata = $setting->getModel()->getFieldDefinition(Phprojekt_ModelInformation_Default::ORDERING_FORM);
     $records = $setting->getList(4, $metadata);
     $data = array('id' => 0, 'favorites' => "1,2");
     $this->assertEquals(array($data), $records);
     $setting = new Phprojekt_Setting();
     $setting->setModule('Notification');
     $metadata = $setting->getModel()->getFieldDefinition(Phprojekt_ModelInformation_Default::ORDERING_FORM);
     $records = $setting->getList(0, $metadata);
     $data = array('id' => 0, 'loginlogout' => 0, 'datarecords' => 1, 'alerts' => 1);
     $this->assertEquals(array($data), $records);
 }
 /**
  * Save the favorites projects for the current user.
  *
  * OPTIONAL request parameters:
  * <pre>
  *  - array <b>favorites</b> Array with ids of the projects.
  * </pre>
  *
  * The return is a string in JSON format with:
  * <pre>
  *  - type    => 'success'.
  *  - message => Success message.
  *  - id      => 0.
  * </pre>
  *
  * @return void
  */
 public function jsonFavoritesSaveAction()
 {
     $setting = new Phprojekt_Setting();
     $setting->setModule('Timecard');
     $setting->setSettings($this->getRequest()->getParams());
     $message = Phprojekt::getInstance()->translate(self::EDIT_TRUE_TEXT);
     $return = array('type' => 'success', 'message' => $message, 'id' => 0);
     Phprojekt_Converter_Json::echoConvert($return);
 }
 /**
  * Saves the settings for one module.
  *
  * OPTIONAL request parameters:
  * <pre>
  *  - string <b>moduleName</b>              Name of the module.
  *  - mixed  <b>all other module fields</b> All the fields values to save.
  * </pre>
  *
  * The return is a string in JSON format with:
  * <pre>
  *  - type    => 'success' or 'error'.
  *  - message => Success or error message.
  *  - id      => 0.
  * </pre>
  *
  * @throws Zend_Controller_Action_Exception On error in the action save or wrong id.
  *
  * @return void
  */
 public function jsonSaveAction()
 {
     $module = Cleaner::sanitize('alnum', $this->getRequest()->getParam('moduleName', null));
     $this->setCurrentProjectId();
     $setting = new Phprojekt_Setting();
     $setting->setModule($module);
     $message = $setting->validateSettings($this->getRequest()->getParams());
     if (!empty($message)) {
         $type = "error";
     } else {
         $message = Phprojekt::getInstance()->translate(self::EDIT_TRUE_TEXT);
         $setting->setSettings($this->getRequest()->getParams());
         $type = "success";
     }
     $return = array('type' => $type, 'message' => $message, 'id' => 0);
     Phprojekt_Converter_Json::echoConvert($return);
 }
Exemple #12
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 #13
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);
 }