From 237f5fae68a9410971ce1c4895a07fe2fa0fbd52 Mon Sep 17 00:00:00 2001 From: Nik Okuntseff Date: Wed, 17 Apr 2019 14:50:17 +0000 Subject: [PATCH] Merged some functions to help keeping things compact. --- WEB-INF/lib/ttGroupHelper.class.php | 68 ++++++------------------- WEB-INF/lib/ttTimesheetHelper.class.php | 6 +-- WEB-INF/lib/ttUser.class.php | 11 +++- WEB-INF/templates/footer.tpl | 2 +- WEB-INF/templates/projects.tpl | 2 +- projects.php | 6 +-- 6 files changed, 31 insertions(+), 64 deletions(-) diff --git a/WEB-INF/lib/ttGroupHelper.class.php b/WEB-INF/lib/ttGroupHelper.class.php index 8419a1a3..4bc71648 100644 --- a/WEB-INF/lib/ttGroupHelper.class.php +++ b/WEB-INF/lib/ttGroupHelper.class.php @@ -327,7 +327,7 @@ class ttGroupHelper { } // getActiveProjects - returns an array of active projects for a group. - static function getActiveProjects() + static function getActiveProjects($includeFiles = false) { global $user; $mdb2 = getConnection(); @@ -335,33 +335,14 @@ class ttGroupHelper { $group_id = $user->getGroup(); $org_id = $user->org_id; - $sql = "select id, name, description, tasks from tt_projects". - " where group_id = $group_id and org_id = $org_id and status = 1 order by upper(name)"; - $res = $mdb2->query($sql); - $result = array(); - if (!is_a($res, 'PEAR_Error')) { - while ($val = $res->fetchRow()) { - $result[] = $val; - } + if ($includeFiles) { + $filePart = ', if(Sub1.entity_id is null, 0, 1) as has_files'; + $fileJoin = " left join (select distinct entity_id from tt_files". + " where entity_type = 'project' and group_id = $group_id and org_id = $org_id and status = 1) Sub1". + " on (p.id = Sub1.entity_id)"; } - return $result; - } - - // getActiveProjectsWithFiles - returns an array of active projects for a group - // with information whether they have attached files (has_files property). - // A separate fiunction from getActiveProjects because sql here is more complex. - static function getActiveProjectsWithFiles() - { - global $user; - $mdb2 = getConnection(); - $group_id = $user->getGroup(); - $org_id = $user->org_id; - - $sql = "select p.id, p.name, p.description, if(Sub1.entity_id is null, 0, 1) as has_files from tt_projects p". - " left join (select distinct entity_id from tt_files". - " where entity_type = 'project' and group_id = $group_id and org_id = $org_id and status = 1) Sub1". - " on (p.id = Sub1.entity_id)". + $sql = "select p.id, p.name, p.description, p.tasks $filePart from tt_projects p $fileJoin". " where p.group_id = $group_id and p.org_id = $org_id and p.status = 1 order by upper(p.name)"; $res = $mdb2->query($sql); $result = array(); @@ -374,7 +355,7 @@ class ttGroupHelper { } // getInactiveProjects - returns an array of inactive projects for a group. - static function getInactiveProjects() + static function getInactiveProjects($includeFiles = false) { global $user; $mdb2 = getConnection(); @@ -382,34 +363,15 @@ class ttGroupHelper { $group_id = $user->getGroup(); $org_id = $user->org_id; - $sql = "select id, name, description, tasks from tt_projects". - " where group_id = $group_id and org_id = $org_id and status = 0 order by upper(name)"; - $res = $mdb2->query($sql); - $result = array(); - if (!is_a($res, 'PEAR_Error')) { - while ($val = $res->fetchRow()) { - $result[] = $val; - } + if ($includeFiles) { + $filePart = ', if(Sub1.entity_id is null, 0, 1) as has_files'; + $fileJoin = " left join (select distinct entity_id from tt_files". + " where entity_type = 'project' and group_id = $group_id and org_id = $org_id and status = 1) Sub1". + " on (p.id = Sub1.entity_id)"; } - return $result; - } - // getInactiveProjectsWithFiles - returns an array of inactive projects for a group - // with information whether they have attached files (has_files property). - // A separate fiunction from getInactiveProjects because sql here is more complex. - static function getInactiveProjectsWithFiles() - { - global $user; - $mdb2 = getConnection(); - - $group_id = $user->getGroup(); - $org_id = $user->org_id; - - $sql = "select p.id, p.name, if(Sub1.entity_id is null, 0, 1) as has_files from tt_projects p". - " left join (select distinct entity_id from tt_files". - " where entity_type = 'project' and group_id = $group_id and org_id = $org_id and status = 1) Sub1". - " on (p.id = Sub1.entity_id)". - " where p.group_id = $group_id and p.org_id = $org_id and p.status = 0 order by upper(p.name)"; + $sql = "select p.id, p.name, p.description, p.tasks $filePart from tt_projects p $fileJoin". + " where p.group_id = $group_id and p.org_id = $org_id and p.status = 0 order by upper(p.name)"; $res = $mdb2->query($sql); $result = array(); if (!is_a($res, 'PEAR_Error')) { diff --git a/WEB-INF/lib/ttTimesheetHelper.class.php b/WEB-INF/lib/ttTimesheetHelper.class.php index 0afefa80..17119eda 100644 --- a/WEB-INF/lib/ttTimesheetHelper.class.php +++ b/WEB-INF/lib/ttTimesheetHelper.class.php @@ -115,8 +115,7 @@ class ttTimesheetHelper { $group_id = $user->getGroup(); $org_id = $user->org_id; - $includeFiles = $user->isPluginEnabled('at'); - if ($includeFiles) { + if ($user->isPluginEnabled('at')) { $filePart = ', if(Sub1.entity_id is null, 0, 1) as has_files'; $fileJoin = " left join (select distinct entity_id from tt_files". " where entity_type = 'timesheet' and group_id = $group_id and org_id = $org_id and status = 1) Sub1". @@ -149,8 +148,7 @@ class ttTimesheetHelper { $group_id = $user->getGroup(); $org_id = $user->org_id; - $includeFiles = $user->isPluginEnabled('at'); - if ($includeFiles) { + if ($user->isPluginEnabled('at')) { $filePart = ', if(Sub1.entity_id is null, 0, 1) as has_files'; $fileJoin = " left join (select distinct entity_id from tt_files". " where entity_type = 'timesheet' and group_id = $group_id and org_id = $org_id and status = 1) Sub1". diff --git a/WEB-INF/lib/ttUser.class.php b/WEB-INF/lib/ttUser.class.php index 4a2320b4..33a32dc2 100644 --- a/WEB-INF/lib/ttUser.class.php +++ b/WEB-INF/lib/ttUser.class.php @@ -264,7 +264,7 @@ class ttUser { } // getAssignedProjects - returns an array of assigned projects. - function getAssignedProjects() + function getAssignedProjects($includeFiles = false) { $result = array(); $mdb2 = getConnection(); @@ -273,8 +273,15 @@ class ttUser { $group_id = $this->getGroup(); $org_id = $this->org_id; + if ($includeFiles) { + $filePart = ', if(Sub1.entity_id is null, 0, 1) as has_files'; + $fileJoin = " left join (select distinct entity_id from tt_files". + " where entity_type = 'project' and group_id = $group_id and org_id = $org_id and status = 1) Sub1". + " on (p.id = Sub1.entity_id)"; + } + // Do a query with inner join to get assigned projects. - $sql = "select p.id, p.name, p.description, p.tasks, upb.rate from tt_projects p". + $sql = "select p.id, p.name, p.description, p.tasks, upb.rate $filePart from tt_projects p $fileJoin". " inner join tt_user_project_binds upb on (upb.user_id = $user_id and upb.project_id = p.id and upb.status = 1)". " where p.group_id = $group_id and p.org_id = $org_id and p.status = 1 order by p.name"; $res = $mdb2->query($sql); diff --git a/WEB-INF/templates/footer.tpl b/WEB-INF/templates/footer.tpl index a1159b3c..a99f05ab 100644 --- a/WEB-INF/templates/footer.tpl +++ b/WEB-INF/templates/footer.tpl @@ -12,7 +12,7 @@
- - {if $show_files} + {if $show_files && $project.has_files} {/if} diff --git a/projects.php b/projects.php index 6088af49..1b137895 100644 --- a/projects.php +++ b/projects.php @@ -43,10 +43,10 @@ if (MODE_PROJECTS != $user->getTrackingMode() && MODE_PROJECTS_AND_TASKS != $use $showFiles = $user->isPluginEnabled('at'); if($user->can('manage_projects')) { - $active_projects = $showFiles ? ttGroupHelper::getActiveProjectsWithFiles() : ttGroupHelper::getActiveProjects(); - $inactive_projects = $showFiles ? ttGroupHelper::getInactiveProjectsWithFiles() : ttGroupHelper::getInactiveProjects(); + $active_projects = ttGroupHelper::getActiveProjects($showFiles); + $inactive_projects = ttGroupHelper::getInactiveProjects($showFiles); } else - $active_projects = $user->getAssignedProjects(); + $active_projects = $user->getAssignedProjects($showFiles); $smarty->assign('active_projects', $active_projects); $smarty->assign('inactive_projects', $inactive_projects); -- 2.20.1
 Anuko Time Tracker 1.18.65.4952 | Copyright © Anuko | +  Anuko Time Tracker 1.18.65.4953 | Copyright © Anuko | {$i18n.footer.credits} | {$i18n.footer.license} | {$i18n.footer.improve} diff --git a/WEB-INF/templates/projects.tpl b/WEB-INF/templates/projects.tpl index e21a8f22..81ef96b8 100644 --- a/WEB-INF/templates/projects.tpl +++ b/WEB-INF/templates/projects.tpl @@ -97,7 +97,7 @@
{$project.name|escape} {$project.description|escape}{$i18n.label.files}