public function addTask() { $user = $this->authenticate(); $emptyrequest = !isset($_GET) && !isset($_POST) || sizeof($_GET) == 0 && sizeof($_POST) == 0; $input; if (!$emptyrequest) { $input = new Validation(array_merge($_GET, $_POST)); $input->add_rules('project_id', 'required', 'numeric'); $input->add_rules('task_description', 'required', 'length[1,255]'); $input->add_rules('setting_id', 'numeric'); $input->add_rules('due_date', 'chars[0,1,2,3,4,5,6,7,8,9,-]'); $validator = new ProjectValidation_Model(); $validator->expectedUser_id = $user->user_id; $input->add_callbacks('project_id', array($validator, "validateExists")); $input->add_callbacks('project_id', array($validator, "validateUserOwnsProject")); if ($input->validate() && isset($input['setting_id']) && $input->setting_id != NULL && $input->setting_id != 0) { $setting_validator = new SettingValidation_Model(); $setting_validator->expectedUser_id = $user->user_id; $input->add_callbacks('setting_id', array($setting_validator, "validateExists")); $input->add_callbacks('setting_id', array($setting_validator, "validateUserOwnsSetting")); } if ($input->validate() && isset($input->due_date) && $input->due_date != NULL && $input->due_date != "00-00-0000") { $pattern = "/^\\d\\d-\\d\\d-\\d\\d\\d\\d\$/"; if (preg_match($pattern, $input->due_date) == 0) { $input->add_error('due_date', 'invalid format'); } else { if (!$this->isValidDate($input->due_date)) { $input->add_error('due_date', 'invalid date'); } } } } else { $input = new Validation(array()); $input->add_error('project_id', 'required'); $input->add_error('task_description', 'required'); } if ($input->validate()) { $task = new Task_Model(); $task->project_id = $input->project_id; $task->task_description = $input->task_description; if (isset($input['setting_id']) && $input->setting_id != NULL) { if ($input->setting_id == 0) { $task->setting_id = NULL; } else { $task->setting_id = $input->setting_id; } } else { $task->setting_id = NULL; } if (isset($input->due_date) && $input->due_date != NULL && $input->due_date != "00-00-0000") { $task->due_date = $this->reformat($input->due_date); } else { $task->due_date = NULL; } $task->addTaskToDB(); Kohana::render($this->encode($task)); } else { //@TODO : make better error messages...... Kohana::render($this->encode(NULL, $input->errors())); } }