<?php /* PROJECTS $Id: do_project_aed.php 5599 2008-01-08 12:57:22Z gregorerhardt $ */ if (!defined('DP_BASE_DIR')) { die('You should not access this file directly.'); } $obj = new CProject(); $msg = ''; /** * bind * 如果$_POST不是个数组的话则返回错误, * 否则把$_POST数组中的变量,绑定到对象中 */ if (!$obj->bind($_POST)) { $AppUI->setMsg($obj->getError(), UI_MSG_ERROR); $AppUI->redirect(); } require_once $AppUI->getSystemClass('CustomFields'); //一些转化 // convert dates to SQL format first if ($obj->project_start_date) { $date = new CDate($obj->project_start_date); $obj->project_start_date = $date->format(FMT_DATETIME_MYSQL); } if ($obj->project_end_date) { $date = new CDate($obj->project_end_date); $date->setTime(23, 59, 59); $obj->project_end_date = $date->format(FMT_DATETIME_MYSQL); } if ($obj->project_actual_end_date) { $date = new CDate($obj->project_actual_end_date);
/** * Put Request Handler * * This method is called when a request is a PUT * * @return array */ public function executePut() { $valid = $this->hasRequiredParameters($this->requiredParams); if ($valid instanceof Frapi_Error) { return $valid; } $username = $this->getParam('username'); $password = $this->getParam('password'); // Attempt to login as user, a little bit of a hack as we currently // require the $_POST['login'] var to be set as well as a global AppUI $AppUI = new CAppUI(); $GLOBALS['AppUI'] = $AppUI; $_POST['login'] = '******'; if (!$AppUI->login($username, $password)) { throw new Frapi_Error('INVALID_LOGIN'); } $post_data = array('project_id' => 0, 'project_creator' => $AppUI->user_id, 'project_contacts' => $this->getParam('project_contacts'), 'project_name' => $this->getParam('project_name'), 'project_parent' => $this->getParam('project_parent'), 'project_owner' => $this->getParam('project_owner'), 'project_company' => $this->getParam('project_company'), 'project_location' => $this->getParam('project_location'), 'project_start_date' => $this->getParam('project_start_date'), 'project_end_date' => $this->getParam('project_end_date'), 'project_target_budget' => $this->getParam('project_target_budget'), 'project_actual_budget' => $this->getParam('project_actual_budget'), 'project_url' => $this->getParam('project_url'), 'project_demo_url' => $this->getParam('project_demo_url'), 'project_priority' => $this->getParam('project_priority'), 'project_short_name' => $this->getParam('project_short_name'), 'project_color_identifier' => $this->getParam('project_color_identifier'), 'project_type' => $this->getParam('project_type'), 'project_status' => $this->getParam('project_status'), 'project_description' => $this->getParam('project_description'), 'project_departments' => $this->getParam('project_departments', self::TYPE_ARRAY), 'project_active' => $this->getParam('project_active')); $project = new CProject(); $project->bind($post_data); $error_array = $project->store($AppUI); // Return all the validation messages if ($error_array !== true) { $error_message = ''; foreach ($error_array as $error) { $error_message .= $error . '. '; } throw new Frapi_Error('SAVE_ERROR', $error_message); } $project = (array) $project; $pd = CProject::getDepartments($AppUI, $project['project_id']); $project_departments = array(); foreach ($pd as $key => $value) { $project_departments[] = $value['dept_id']; } $project['project_departments'] = $project_departments; // Remove the data that is not for display unset($project['_tbl_prefix'], $project['_tbl'], $project['_tbl_key'], $project['_error'], $project['_query'], $project['_tbl_module']); $this->data['project'] = $project; $this->data['success'] = true; return new Frapi_Response(array('code' => 201, 'data' => $this->data)); }