/application/controllers/TaskController.class.php
PHP | 1133 lines | 838 code | 144 blank | 151 comment | 139 complexity | 0407e26e34fe4b1f3ddf169fc9c567a0 MD5 | raw file
- <?php
- /**
- * Controller for handling task list and task related requests
- *
- * @version 1.0
- * @http://www.projectpier.org/
- */
- class TaskController extends ApplicationController {
- /**
- * Construct the TaskController
- *
- * @access public
- * @param void
- * @return TaskController
- */
- function __construct() {
- parent::__construct();
- prepare_company_website_controller($this, 'project_website');
- } // __construct
- /**
- * Show index page
- *
- * @access public
- * @param void
- * @return null
- */
- function index() {
- $this->addHelper('textile');
- tpl_assign('open_task_lists', active_project()->getOpenTaskLists());
- tpl_assign('completed_task_lists', active_project()->getCompletedTaskLists());
- $this->canGoOn();
- $this->setSidebar(get_template_path('index_sidebar', 'task'));
- } // index
- /**
- * Download task list as attachment
- *
- * @access public
- * @param void
- * @return null
- */
- function download_list() {
- $task_list = ProjectTaskLists::findById(get_id());
- if (!($task_list instanceof ProjectTaskList)) {
- flash_error(lang('task list dnx'));
- $this->redirectTo('task');
- } // if
- $this->canGoOn();
- if (!$task_list->canView(logged_user())) {
- flash_error(lang('no access permissions'));
- $this->redirectToReferer(get_url('task'));
- } // if
- $output = array_var($_GET, 'output', 'csv');
- $project_name = active_project()->getName();
- $task_list_name = $task_list->getName();
- $task_count = 0;
- if ($output == 'pdf' ) {
- Env::useLibrary('fpdf');
- $download_name = "{$project_name}-tasks.pdf";
- $download_type = 'application/pdf';
- $pdf = new FPDF("P","mm");
- $pdf->AddPage();
- $pdf->SetTitle($project_name);
- $pdf->SetCompression(true);
- $pdf->SetCreator('ProjectPier');
- $pdf->SetDisplayMode('fullpage', 'single');
- $pdf->SetSubject(active_project()->getObjectName());
- $pdf->SetFont('Arial','B',16);
- $task_lists = active_project()->getOpenTaskLists();
- $pdf->Cell(0,10, lang('project') . ': ' . active_project()->getObjectName(),'B',0,'C');
- $pdf->Ln(14);
- $w = array( 0 => 12, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140 );
- foreach($task_lists as $task_list) {
- $pdf->SetFont('Arial','B',14);
- $pdf->Write(10, lang('task list') . ': ' . $task_list->getObjectName());
- $pdf->Ln(14);
- $tasks = $task_list->getTasks();
- $pdf->SetFont('Arial','I',14);
- $pdf->SetFillColor(230,230,230);
- $pdf->Cell($w[1],6, '#',1,0,'C',true);
- $pdf->Cell($w[3],6, lang('status'),1,0,'C',true);
- $pdf->Cell($w[10],6, lang('info') ,1,0,'C',true);
- $pdf->Cell(0,6, lang(user) ,1,0,'C',true);
- $pdf->Ln();
- foreach($tasks as $task) {
- $line++;
- if ($task->isCompleted()) {
- $task_status = lang('completed');
- $task_status_color_R = 0;
- $task_status_color_G = 150;
- $task_status_color_B = 0;
- $task_completion_info = lang('completed task') . ' : ' . format_date($task->getCompletedOn()) . ' @ ' . format_time($task->getCompletedOn());
- } else {
- $task_status = lang('open');
- $task_status_color_R = 200;
- $task_status_color_G = 0;
- $task_status_color_B = 0;
- $task_completion_info = lang('due date') . ' : ' . lang('not assigned');
- $task_completion_info_color_R = 200;
- $task_completion_info_color_G = 0;
- $task_completion_info_color_B = 0;
- if ($task->getDueDate()) {
- $task_completion_info = lang('due date') . ' : ' . format_date($task->getDueDate()) . ' @ ' . format_time($task->getDueDate());
- $task_completion_info_color_R = 0;
- $task_completion_info_color_G = 0;
- $task_completion_info_color_B = 0;
- }
- }
- if ($task->getAssignedTo()) {
- $task_assignee = $task->getAssignedTo()->getObjectName();
- $task_assignee_color_R = 0;
- $task_assignee_color_G = 0;
- $task_assignee_color_B = 0;
- } else {
- $task_assignee = lang('not assigned');
- $task_assignee_color_R = 200;
- $task_assignee_color_G = 0;
- $task_assignee_color_B = 0;
- }
- $pdf->SetFillColor(245,245,245);
- $pdf->Cell($w[1],6, $line,1,0,'C',true);
- $pdf->SetTextColor($task_status_color_R, $task_status_color_G, $task_status_color_B);
- $pdf->Cell($w[3],6, $task_status,1,0,'C',true);
- $pdf->SetTextColor($task_completion_info_color_R, $task_completion_info_color_G, $task_completion_info_color_B);
- $pdf->Cell($w[10],6,$task_completion_info,1,0,'C',true);
- $pdf->SetTextColor($task_assignee_color_R, $task_assignee_color_G, $task_assignee_color_B);
- $pdf->Cell(0,6, $task_assignee ,1,0,'C',true);
- $pdf->SetTextColor(0, 0, 0);
- $pdf->Ln();
- $pdf->MultiCell(0,6,$task->getText(),1);
- //$pdf->Ln();
- }
- }
- $pdf->Output($download_name, 'I');
- }
- if ($output == 'txt' ) {
- $download_name = "{$project_name}-tasks.txt";
- $download_type = 'text/csv';
- $txt_lang_1 = lang('project');
- $txt_lang_2 = lang('milestone');
- $txt_lang_3 = lang('task list');
- $txt_lang_4 = lang('status');
- $txt_lang_5 = lang('description');
- $txt_lang_6 = lang('id');
- $txt_lang_7 = lang('status');
- $txt_lang_8 = lang('completion info');
- $txt_lang_9 = lang('assigned to');
- $s .= "$txt_lang_1\t$txt_lang_2\t$txt_lang_3\t$txt_lang_4\t$txt_lang_5\t$txt_lang_6\t$txt_lang_7\t$txt_lang_8\t$txt_lang_9";
- $s .= "\n";
- $task_lists = active_project()->getOpenTaskLists();
- foreach($task_lists as $task_list) {
- /*$s .= $task_list->getObjectName();
- $s .= "\n";
- $task_list_desc = $task_list->getDescription();
- $task_list_desc = strtr($task_list_desc,"\r\n\t"," ");
- $task_list_desc_100 = substr($task_list_desc,0,100);
- $s .= $task_list_desc_100;
- $s .= "\n";*/
- $milestone=$task_list->getMilestone();
- $tasks = $task_list->getTasks();
- foreach($tasks as $task) {
- $s .= $project_name;
- $s .= "\t";
- $milestone_name = lang(none);
- if ($milestone instanceof ProjectMilestone) {
- $milestone_name=$milestone->getName();
- }
- $s .= $milestone_name;
- $s .= "\t";
- $s .= $task_list->getObjectName();
- $s .= "\t";
- $task_list_name=$task_list->getName();
- if ($task_list->isCompleted()) {
- $task_list_status = lang('completed');
- } else {
- $task_list_status = lang('open');
- }
- $s .= $task_list_status;
- $s .= "\t";
- $task_list_desc2 = $task_list->getDescription();
- $task_list_desc2 = strtr($task_list_desc2,"\r\n\t"," ");
- $task_list_desc2_100 = substr($task_list_desc2,0,50);
- $s .= $task_list_desc2_100;
- $s .= "\t";
- $s .= $task->getId();
- $s .= "\t";
- if ($task->isCompleted()) {
- $task_status = lang('completed');
- $task_completion_info = format_date($task->getCompletedOn()) ." @ ". format_time($task->getCompletedOn());
- } else {
- $task_status = lang('open');
- $task_completion_info = format_date($task->getDueDate()) ." @ ". format_time($task->getDueDate());
- }
- $s .= $task_status;
- $s .= "\t";
- $s .= $task_completion_info;
- $s .= "\t";
- if ($task->getAssignedTo()) {
- $task_assignee = $task->getAssignedTo()->getObjectName();
- } else {
- $task_assignee = lang('not assigned');
- }
- $s .= $task_assignee;
- $s .= "\n";
- }
- }
- $download_contents = $s;
- download_headers( $download_name, $download_type, strlen($download_contents), true);
- echo $download_contents;
- } else {
- $download_name = "{$project_name}-{$task_list_name}-tasks.csv";
- $download_type = 'text/csv';
- $download_contents = $task_list->getDownloadText($task_count, "\t", true);
- download_contents($download_contents, $download_type, $download_name, strlen($download_contents));
- }
- die();
- }
- /**
- * View task lists page
- *
- * @access public
- * @param void
- * @return null
- */
- function view_list() {
- $this->addHelper('textile');
- $task_list = ProjectTaskLists::findById(get_id());
- if (!($task_list instanceof ProjectTaskList)) {
- flash_error(lang('task list dnx'));
- $this->redirectTo('task');
- } // if
- $this->canGoOn();
- if (!$task_list->canView(logged_user())) {
- flash_error(lang('no access permissions'));
-