private function _deleteIdAction($path) { $in_id = array_shift($path); if (empty($in_id)) { $this->_error("ID was not provided."); } if (null == ($task = DAO_Task::get($in_id))) { $this->_error("ID is not valid."); } DAO_Task::delete($task->id); $out_xml = new SimpleXMLElement('<success></success>'); $this->_render($out_xml->asXML()); }
function saveTaskPeekAction() { @($id = DevblocksPlatform::importGPC($_REQUEST['id'], 'integer', '')); @($view_id = DevblocksPlatform::importGPC($_REQUEST['view_id'], 'string', '')); @($link_namespace = DevblocksPlatform::importGPC($_REQUEST['link_namespace'], 'string', '')); @($link_object_id = DevblocksPlatform::importGPC($_REQUEST['link_object_id'], 'integer', 0)); @($do_delete = DevblocksPlatform::importGPC($_REQUEST['do_delete'], 'integer', 0)); $active_worker = CerberusApplication::getActiveWorker(); if (!empty($id) && !empty($do_delete)) { // delete $task = DAO_Task::get($id); // Check privs if ($active_worker->hasPriv('core.tasks.actions.create') && $active_worker->id == $task->worker_id || $active_worker->hasPriv('core.tasks.actions.update_nobody') && empty($task->worker_id) || $active_worker->hasPriv('core.tasks.actions.update_all')) { DAO_Task::delete($id); } } else { // create|update $fields = array(); // Title @($title = DevblocksPlatform::importGPC($_REQUEST['title'], 'string', '')); if (!empty($title)) { $fields[DAO_Task::TITLE] = $title; } // Completed @($completed = DevblocksPlatform::importGPC($_REQUEST['completed'], 'integer', 0)); $fields[DAO_Task::IS_COMPLETED] = intval($completed); // [TODO] This shouldn't constantly update the completed date (it should compare) if ($completed) { $fields[DAO_Task::COMPLETED_DATE] = time(); } else { $fields[DAO_Task::COMPLETED_DATE] = 0; } // Due Date @($due_date = DevblocksPlatform::importGPC($_REQUEST['due_date'], 'string', '')); @($fields[DAO_Task::DUE_DATE] = empty($due_date) ? 0 : intval(strtotime($due_date))); // Worker @($worker_id = DevblocksPlatform::importGPC($_REQUEST['worker_id'], 'integer', 0)); @($fields[DAO_Task::WORKER_ID] = intval($worker_id)); // Content @($content = DevblocksPlatform::importGPC($_REQUEST['content'], 'string', '')); @($fields[DAO_Task::CONTENT] = $content); // Link to object (optional) if (!empty($link_namespace) && !empty($link_object_id)) { @($fields[DAO_Task::SOURCE_EXTENSION] = $link_namespace); @($fields[DAO_Task::SOURCE_ID] = $link_object_id); } // Save if (!empty($id)) { DAO_Task::update($id, $fields); } else { $id = DAO_Task::create($fields); // Write a notification (if not assigned to ourselves) // $url_writer = DevblocksPlatform::getUrlService(); $source_extensions = DevblocksPlatform::getExtensions('cerberusweb.task.source', true); if (!empty($worker_id)) { // && $active_worker->id != $worker_id (Temporarily allow self notifications) if (null != @($source_renderer = $source_extensions[$link_namespace])) { /* @var $source_renderer Extension_TaskSource */ $source_info = $source_renderer->getSourceInfo($link_object_id); $source_name = $source_info['name']; $source_url = $source_info['url']; if (empty($source_name) || empty($source_url)) { break; } $fields = array(DAO_WorkerEvent::CREATED_DATE => time(), DAO_WorkerEvent::WORKER_ID => $worker_id, DAO_WorkerEvent::URL => $source_url, DAO_WorkerEvent::TITLE => 'New Task Assignment', DAO_WorkerEvent::CONTENT => sprintf("%s\n%s says: %s", $source_name, $active_worker->getName(), $title), DAO_WorkerEvent::IS_READ => 0); DAO_WorkerEvent::create($fields); } } } // Custom field saves @($field_ids = DevblocksPlatform::importGPC($_POST['field_ids'], 'array', array())); DAO_CustomFieldValue::handleFormPost(ChCustomFieldSource_Task::ID, $id, $field_ids); } if (!empty($view_id) && null != ($view = C4_AbstractViewLoader::getView('', $view_id))) { $view->render(); } exit; }
function saveTasksPropertiesTabAction() { @($id = DevblocksPlatform::importGPC($_REQUEST['id'], 'integer', '')); @($do_delete = DevblocksPlatform::importGPC($_REQUEST['do_delete'], 'integer', 0)); $active_worker = CerberusApplication::getActiveWorker(); if (!empty($id) && !empty($do_delete)) { // delete $task = DAO_Task::get($id); // Check privs if ($active_worker->hasPriv('core.tasks.actions.create') && $active_worker->id == $task->worker_id || $active_worker->hasPriv('core.tasks.actions.update_nobody') && empty($task->worker_id) || $active_worker->hasPriv('core.tasks.actions.update_all')) { DAO_Task::delete($id); DevblocksPlatform::redirect(new DevblocksHttpResponse(array('activity', 'tasks'))); exit; } } else { // update $fields = array(); // Title @($title = DevblocksPlatform::importGPC($_REQUEST['title'], 'string', '')); $fields[DAO_Task::TITLE] = !empty($title) ? $title : 'New Task'; // Completed @($completed = DevblocksPlatform::importGPC($_REQUEST['completed'], 'integer', 0)); $fields[DAO_Task::IS_COMPLETED] = intval($completed); // [TODO] This shouldn't constantly update the completed date (it should compare) if ($completed) { $fields[DAO_Task::COMPLETED_DATE] = time(); } else { $fields[DAO_Task::COMPLETED_DATE] = 0; } // Updated Date $fields[DAO_Task::UPDATED_DATE] = time(); // Due Date @($due_date = DevblocksPlatform::importGPC($_REQUEST['due_date'], 'string', '')); @($fields[DAO_Task::DUE_DATE] = empty($due_date) ? 0 : intval(strtotime($due_date))); // Worker @($worker_id = DevblocksPlatform::importGPC($_REQUEST['worker_id'], 'integer', 0)); @($fields[DAO_Task::WORKER_ID] = intval($worker_id)); // Save if (!empty($id)) { DAO_Task::update($id, $fields); // Custom field saves @($field_ids = DevblocksPlatform::importGPC($_POST['field_ids'], 'array', array())); DAO_CustomFieldValue::handleFormPost(ChCustomFieldSource_Task::ID, $id, $field_ids); } } DevblocksPlatform::redirect(new DevblocksHttpResponse(array('tasks', 'display', $id, 'properties'))); }