/** * 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); }
/** * Do the save for the event * Add the full access to the owner and Read, Write and Delete access to the user involved * * @param array $request Array with the POST data. * @param Calendar_Models_Calendar $model The model to save. * @param Phprojekt_Date_Collection $oneDate Date object to save. * @param integer $daysDuration How many days are between the start and end dates. * @param integer $participantId Id of the user to save the event. * @param integer $parentId Id of the parent event. * * @return integer The parentId. */ private function _saveEvent($request, $model, $oneDate, $daysDuration, $participantId, $parentId) { $request['startDatetime'] = date("Y-m-d", $oneDate) . ' ' . $request['startTime']; $request['endDatetime'] = date("Y-m-d", $oneDate + $daysDuration * 24 * 60 * 60) . ' ' . $request['endTime']; $request['participantId'] = $participantId; $request['parentId'] = $parentId; // The save is needed? if ($this->_needSave($model, $request)) { // Add 'read, write, downlaod and delete' access to the participant $request = Default_Helpers_Right::allowReadWriteDownloadDelete($request, $participantId); // Access for the owner if (null !== $model->ownerId) { $ownerId = $model->ownerId; } else { $ownerId = Phprojekt_Auth::getUserId(); } // Set the status to "Pending" if there is any change and the event is for other user if ($participantId != $ownerId) { $request['status'] = 0; } $request = Default_Helpers_Right::allowAll($request, $ownerId); Default_Helpers_Save::save($model, $request); } if (null === $parentId) { $model->parentId = $model->id; } return $model->parentId; }
/** * Saves the current minute item. * * If the request parameter "id" is null or 0, the function will add a new item, * if the "id" is an existing item, the function will update it. * * REQUIRES request parameters: * <pre> * - integer <b>minutesId</b> The id of the minutes. * </pre> * * OPTIONAL request parameters: * <pre> * - integer <b>id</b> id of the item to save. * - mixed <b>all other module fields</b> All the fields values to save. * </pre> * * If there is an error, the save will return a Phprojekt_PublishedException, * if not, it returns a string in JSON format with: * <pre> * - type => 'success'. * - message => Success message. * - code => 0. * - id => Id of the minute item. * </pre> * * @throws Phprojekt_PublishedException On error in the action save or wrong id. * * @return void */ public function jsonSaveAction() { $minutesId = (int) $this->getRequest()->getParam('minutesId'); $this->setCurrentProjectId(); $minutes = Phprojekt_Loader::getModel('Minutes', 'Minutes'); $minutes->find($minutesId); if (empty($minutes->id)) { throw new Phprojekt_PublishedException(self::NOT_FOUND); } elseif (4 == $minutes->itemStatus) { throw new Phprojekt_PublishedException(self::MINUTES_READ_ONLY); } else { $id = (int) $this->getRequest()->getParam('id'); if (empty($id)) { $model = Phprojekt_Loader::getModel('Minutes_SubModules_MinutesItem', 'MinutesItem')->init($minutesId); $message = Phprojekt::getInstance()->translate(self::ADD_TRUE_TEXT); $newItem = true; } else { $model = Phprojekt_Loader::getModel('Minutes_SubModules_MinutesItem', 'MinutesItem')->init($minutesId)->find($id); $message = Phprojekt::getInstance()->translate(self::EDIT_TRUE_TEXT); $newItem = false; } if ($model instanceof Phprojekt_Model_Interface) { $params = $this->setParams($this->getRequest()->getParams(), $minutes); Default_Helpers_Save::save($model, $params); $return = array('type' => 'success', 'message' => $message, 'code' => 0, 'id' => $model->id); Phprojekt_Converter_Json::echoConvert($return); } else { throw new Phprojekt_PublishedException(self::NOT_FOUND); } } }
/** * Save some fields for many items. * Only edit existing items. * * OPTIONAL request parameters: * <pre> * - array <b>data</b> Array with itemId and field as index, and the value. * ($data[2]['title'] = 'new tittle') * </pre> * * The return is a string in JSON format with: * <pre> * - type => 'success' or 'error'. * - message => Success or error message. * - code => 0. * - id => Comma separated ids of the items. * </pre> * * @return void */ public function jsonSaveMultipleAction() { $data = (array) $this->getRequest()->getParam('data'); $showId = array(); $model = $this->getModelObject(); $success = true; $this->setCurrentProjectId(); foreach ($data as $id => $fields) { $model->find((int) $id); $params = $this->setParams($fields, $model); try { Default_Helpers_Save::save($model, $params); $showId[] = $id; } catch (Phprojekt_PublishedException $error) { $message = sprintf("ID %d. %s", $id, $error->getMessage()); $success = false; $showId = array($id); break; } } if ($success) { $message = Phprojekt::getInstance()->translate(self::EDIT_MULTIPLE_TRUE_TEXT); $resultType = 'success'; } else { $resultType = 'error'; } $return = array('type' => $resultType, 'message' => $message, 'code' => 0, 'id' => implode(',', $showId)); Phprojekt_Converter_Json::echoConvert($return); }
/** * Save some fields for many projects. * Only edit existing projects. * * OPTIONAL request parameters: * <pre> * - array <b>data</b> Array with projectId and field as index, and the value. * ($data[2]['title'] = 'new tittle') * </pre> * * The return is a string in JSON format with: * <pre> * - type => 'success' or 'error'. * - message => Success or error message. * - id => Comma separated ids of the projects. * </pre> * * @return void */ public function jsonSaveMultipleAction() { $data = (array) $this->getRequest()->getParam('data'); $showId = array(); $model = $this->getModelObject(); $success = true; $this->setCurrentProjectId(); foreach ($data as $id => $fields) { $model->find($id); $node = new Phprojekt_Tree_Node_Database($model, $id); try { $nodeId = (int) $this->getRequest()->getParam('nodeId', null); $newNode = Default_Helpers_Save::save($node, $fields, $nodeId); $showId[] = $newNode->id; } catch (Zend_Controller_Action_Exception $error) { $success = false; $showId = array($id); $message = sprintf("ID %d. %s", $id, $error->getMessage()); break; } } if ($success) { $message = Phprojekt::getInstance()->translate(self::EDIT_MULTIPLE_TRUE_TEXT); $resultType = 'success'; } else { $resultType = 'error'; } $return = array('type' => $resultType, 'message' => $message, 'id' => implode(',', $showId)); Phprojekt_Converter_Json::echoConvert($return); }
/** * Saves the current minute item. * * If the request parameter "id" is null or 0, the function will add a new item, * if the "id" is an existing item, the function will update it. * * REQUIRES request parameters: * <pre> * - integer <b>minutesId</b> The id of the minutes. * </pre> * * OPTIONAL request parameters: * <pre> * - integer <b>id</b> id of the item to save. * - mixed <b>all other module 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 minute item. * </pre> * * @throws Zend_Controller_Action_Exception On error in the action save or wrong id. * * @return void */ public function jsonSaveAction() { $this->setCurrentProjectId(); $model = $this->getModelObject(); if (empty($model->getParent()->id)) { throw new Zend_Controller_Action_Exception(self::NOT_FOUND, 404); } elseif (4 == $model->getParent()->itemStatus) { throw new Zend_Controller_Action_Exception(self::MINUTES_READ_ONLY, 403); } else { $id = (int) $this->getRequest()->getParam('id'); if (empty($id)) { $message = Phprojekt::getInstance()->translate(self::ADD_TRUE_TEXT); } else { $model->find($id); $message = Phprojekt::getInstance()->translate(self::EDIT_TRUE_TEXT); } if ($model instanceof Phprojekt_Model_Interface) { $params = $this->setParams($this->getRequest()->getParams(), $model->getParent()); Default_Helpers_Save::save($model, $params); $return = array('type' => 'success', 'message' => $message, 'id' => $model->id); Phprojekt_Converter_Json::echoConvert($return); } else { throw new Zend_Controller_Action_Exception(self::NOT_FOUND, 404); } } }
/** * Saves a booking. * * If the request parameter "id" is null or 0, the function will add a new booking, * if the "id" is an existing booking, the function will update it. * * OPTIONAL request parameters: * <pre> * - integer <b>id</b> id of the booking to save. * - mixed <b>all other module 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 booking. * </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(); 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); $return = array('type' => 'success', 'message' => $message, 'id' => $model->id); Phprojekt_Converter_Json::echoConvert($return); }
/** * This function is used only for integration purposes and should only * be called when integrating the user data! * **/ private static function _saveUser($params) { $moduleName = "Phprojekt_User_User"; if (Phprojekt_Loader::tryToLoadLibClass($moduleName)) { // Temporarily login as admin user // This is only to get rights to add user // Ugly hack but PHProjekt backend has not thought of this situation $authNamespace = new Zend_Session_Namespace('Phprojekt_Auth-login'); $authNamespace->userId = 1; $authNamespace->admin = true; $exc = null; try { $db = Phprojekt::getInstance()->getDb(); $model = new $moduleName($db); if ($params['id'] > 0) { $model = $model->find($params['id']); } Default_Helpers_Save::save($model, $params); $setting = new Phprojekt_Setting(); $setting->setModule('User'); $setting->setSettings($params, $model->id); } catch (Exception $e) { $exc = $e; } // Set user not logged in unset($authNamespace->userId); unset($authNamespace->admin); if ($exc instanceof Exception) { // Throw exception if user creation failed throw $exc; } return true; } return false; }