349 lines
8.2 KiB
PHP
349 lines
8.2 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Task Controller
|
||
|
*/
|
||
|
class Task extends MY_Controller {
|
||
|
|
||
|
/**
|
||
|
* Constructor
|
||
|
*/
|
||
|
public function __construct()
|
||
|
{
|
||
|
parent::__construct();
|
||
|
$this->load->model('task_model');
|
||
|
$this->load->library('pagination');
|
||
|
$this->page->set_title('Tasks');
|
||
|
$this->page->set_foot_js_group('js');
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Redirect to task list
|
||
|
*/
|
||
|
public function index()
|
||
|
{
|
||
|
$this->todo->redirect_303('task/list');
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* List shared tasks
|
||
|
*/
|
||
|
public function shared()
|
||
|
{
|
||
|
$this->page->set_title("Shared Tasks");
|
||
|
$tasks = $this->task_model->get_shared_task_list();
|
||
|
$data['task_list'] = $tasks;
|
||
|
$data['list_type'] = "shared";
|
||
|
|
||
|
$this->page->build('task/list', $data);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Get the main task view
|
||
|
*/
|
||
|
public function list_tasks()
|
||
|
{
|
||
|
$this->page->set_title("View Tasks");
|
||
|
$tasks = $this->task_model->get_task_list();
|
||
|
$data['task_list'] = $tasks;
|
||
|
$data['list_type'] = 'active';
|
||
|
|
||
|
$this->page->build('task/list', $data);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* List archived tasks
|
||
|
*/
|
||
|
public function archive($page = 1)
|
||
|
{
|
||
|
$per_page = 10;
|
||
|
$this->page->set_title("Archived Tasks");
|
||
|
$page = (int) $page;
|
||
|
$tasks = $this->task_model->get_archived_task_list($page, $per_page);
|
||
|
|
||
|
// Pagination preferences
|
||
|
$config = [
|
||
|
'base_url' => 'https://todo.timshomepage.net/task/archive/',
|
||
|
'total_rows' => $tasks['num_rows'],
|
||
|
'per_page' => $per_page,
|
||
|
'uri_segment' => 3,
|
||
|
'num_links' => 3,
|
||
|
'full_tag_open' => '<p id="pagination">',
|
||
|
'full_tag_close' => '</p>',
|
||
|
'cur_tag_open' => '<strong>',
|
||
|
'cur_tag_close' => '</strong>'
|
||
|
];
|
||
|
|
||
|
$this->pagination->initialize($config);
|
||
|
|
||
|
$data['task_list'] = $tasks;
|
||
|
$data['list_type'] = 'archived';
|
||
|
$data['pagination'] = $this->pagination->create_links();
|
||
|
|
||
|
$this->page->build('task/list', $data);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* List overdue tasks
|
||
|
*/
|
||
|
public function overdue()
|
||
|
{
|
||
|
$this->page->set_title("Overdue Tasks");
|
||
|
$tasks = $this->task_model->get_overdue_task_list();
|
||
|
$data['task_list'] = $tasks;
|
||
|
$data['list_type'] = 'overdue';
|
||
|
|
||
|
$this->page->build('task/list', $data);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Add a task
|
||
|
*/
|
||
|
public function add()
|
||
|
{
|
||
|
$data = array();
|
||
|
$data['err'] = '';
|
||
|
$data['cat_list'] = $this->todo->get_category_select();
|
||
|
$data['pri_list'] = $this->todo->get_priority_select();
|
||
|
$data['group_perms'] = '';
|
||
|
$data['groups'] = $this->todo->get_group_list($this->session->userdata('uid'));
|
||
|
$data['task_title'] = '';
|
||
|
$data['description'] = '';
|
||
|
$data['due'] = mktime(12, 00, 00);
|
||
|
$data['title'] = '';
|
||
|
$data['rem_hours'] = 0;
|
||
|
$data['rem_minutes'] = 30;
|
||
|
$data['reminder'] = FALSE;
|
||
|
$data['friends'] = $this->todo->get_friend_list();
|
||
|
|
||
|
|
||
|
if ($this->input->post('add_sub') == 'Add Task')
|
||
|
{
|
||
|
$val = $this->task_model->validate_task();
|
||
|
|
||
|
if($val === TRUE)
|
||
|
{
|
||
|
$done = $this->task_model->add_task();
|
||
|
|
||
|
if ($done === TRUE)
|
||
|
{
|
||
|
//Redirect to task list
|
||
|
$this->todo->redirect_303('task/list');
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$data['err'][] = "Database Error, Please try again later.";
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//Get form values
|
||
|
$data = array_merge($data, $this->task_model->form_vals);
|
||
|
$data['err'] = $val;
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
$this->page->set_title("Add Task");
|
||
|
$this->page->build('task/add', $data);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Edit a task
|
||
|
*
|
||
|
* @param int $task_id
|
||
|
*/
|
||
|
public function edit($task_id)
|
||
|
{
|
||
|
$task_id = (int) $task_id;
|
||
|
$data = $this->task_model->get_task_by_id($task_id);
|
||
|
$data['cat_list'] = $this->task_model->get_category_select($task_id);
|
||
|
$data['pri_list'] = $this->task_model->get_priority_select($task_id);
|
||
|
$data['stat_list'] = $this->task_model->get_status_select($task_id);
|
||
|
$data['comments'] = $this->task_model->get_task_comments($task_id);
|
||
|
$data['groups'] = $this->todo->get_group_list($this->session->userdata('uid'));
|
||
|
$data['friends'] = $this->todo->get_friend_list();
|
||
|
$data['checklist'] = $this->task_model->get_checklist($task_id);
|
||
|
|
||
|
if ($this->input->post('edit_sub') == 'Update Task')
|
||
|
{
|
||
|
$val = $this->task_model->validate_task();
|
||
|
|
||
|
if($val === TRUE)
|
||
|
{
|
||
|
$done = $this->task_model->update_task();
|
||
|
|
||
|
if ($done === TRUE)
|
||
|
{
|
||
|
//Redirect to task list
|
||
|
$this->session->set_flashdata([
|
||
|
'message_type' => 'success',
|
||
|
'message' => 'Task was updated successfully.'
|
||
|
]);
|
||
|
|
||
|
$this->todo->redirect_303(site_url('task/list'));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$data['err'][] = "Database Error, Please try again later.";
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$data['err'] = $val;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
$this->page->set_title("Edit Task");
|
||
|
$this->page->build('task/edit', $data);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* View an individual task
|
||
|
*
|
||
|
* @param int $task_id
|
||
|
*/
|
||
|
public function view($task_id = NULL)
|
||
|
{
|
||
|
if( ! is_numeric($task_id))
|
||
|
{
|
||
|
show_404();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$task_id = (int)$task_id;
|
||
|
$data = $this->task_model->get_task_by_id($task_id);
|
||
|
$data['comments'] = $this->task_model->get_task_comments($task_id);
|
||
|
$data['status_id'] = $this->task_model->get_current_status_id($task_id);
|
||
|
$data['status'] = $this->task_model->get_status_select($task_id, $data['status_id']);
|
||
|
$data['category'] = $this->task_model->get_category_select($task_id);
|
||
|
$data['checklist'] = $this->task_model->get_checklist($task_id);
|
||
|
$data['task'] = $task_id;
|
||
|
|
||
|
|
||
|
$this->page->set_title("View Task");
|
||
|
$this->page->set_body_id("task_details");
|
||
|
$this->page->build('task/view', $data);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Delete a task
|
||
|
*/
|
||
|
public function delete($task_id)
|
||
|
{
|
||
|
$this->task_model->delete_task((int) $task_id);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Add a task comment
|
||
|
*/
|
||
|
public function add_task_comment()
|
||
|
{
|
||
|
$res = $this->task_model->add_task_comment($this->input->post('task_id'));
|
||
|
$this->output->set_output($res);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Get a list of comments for the task
|
||
|
*/
|
||
|
public function get_task_comments()
|
||
|
{
|
||
|
$task_id = $this->input->get('task_id');
|
||
|
$data['comments'] = $this->task_model->get_task_comments($task_id);
|
||
|
$this->load->view('task/comments_view', $data);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Delete a task comment
|
||
|
*/
|
||
|
public function del_task_comment()
|
||
|
{
|
||
|
$cid = (int) $this->input->post('comment_id');
|
||
|
$this->output->set_output($this->task_model->delete_comment($cid));
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Update the status of a task
|
||
|
*/
|
||
|
public function update_status()
|
||
|
{
|
||
|
$output = $this->task_model->update_status();
|
||
|
$this->output->set_output($output);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Update the category that the task belongs to.
|
||
|
*/
|
||
|
public function update_category()
|
||
|
{
|
||
|
$output = $this->task_model->quick_update_category();
|
||
|
$this->output->set_output($output);
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Add a checklist item to the task
|
||
|
*/
|
||
|
public function add_checklist_item()
|
||
|
{
|
||
|
$data = $this->task_model->add_checklist_item();
|
||
|
|
||
|
if($data == FALSE)
|
||
|
{
|
||
|
$this->output->set_output(0);
|
||
|
}
|
||
|
else if(is_array($data))
|
||
|
{
|
||
|
$this->load->view('task/ajax_checklist', $data);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$this->output->set_output(-1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
/**
|
||
|
* Update a task checklist item
|
||
|
*/
|
||
|
public function update_checklist_item()
|
||
|
{
|
||
|
$check_id = $this->input->post('check_id');
|
||
|
$checked = $this->input->post('checked');
|
||
|
|
||
|
$this->output->set_output($this->task_model->update_checklist($check_id, $checked));
|
||
|
}
|
||
|
}
|
||
|
// End of controllers/task.php
|