Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unassigned tree #27

Open
wants to merge 30 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
45f42a1
created method to create dummy milestone
Sep 26, 2013
aab9fec
added code to load unassigned tasklists and respective tasks in proje…
Sep 26, 2013
d2bcdee
unassigned-task-lists only shown in tree, if not empty
Sep 26, 2013
04d7508
added commentation
Sep 27, 2013
fa147ff
Merge branch 'userform-correction' into unassigned-tree
Feb 4, 2014
c395735
Merge commit 'b3d5d35e48ed3fb9f96edeb9417146a18004736b' into unassign…
Dec 9, 2014
530490a
Merge commit 'aef1eb77b41d3ef544fa9829b7b35ec829e66ce8' into unassign…
Dec 9, 2014
0832f55
Merge commit '3b323549636d13fa77821b66b9e07c3f76846df7' into
StephanRichter Dec 9, 2014
18d8428
Merge commit 'a019ee951ddd7a9df1a94aa3cd9a7369859c850e' into unassign…
Dec 9, 2014
b1a3fbb
Merge commit '8c3d5b148dab5e2d3eba334ad52bfa984498ef26' into unassign…
Dec 9, 2014
c849949
Merge commit '78d817df114361b7c16d27a9937b1c706386e9f3' into unassign…
Dec 9, 2014
5db2756
Merge commit '62f12dabc6801617bb9973555ad8c5a5b089fc6c' into unassign…
Dec 9, 2014
2a4f242
Merge commit 'e48b2d685d7f8176507b62ccbc0ac993531c65a1' into unassign…
Dec 9, 2014
c079784
Merge commit 'e57f28f37ecfcd9141b74027227c73052476de89' into unassign…
Dec 9, 2014
0205dae
Merge commit 'bd2f852bc676e7d3836d9269454bb4650dea7913' into unassign…
Dec 9, 2014
4042db0
Merge commit 'f16415f3366df8609e59a8157772008643ea93a0' into unassign…
Dec 9, 2014
21a0620
Merge commit 'e0c0d969d4e44260a43cd326637fb950c34d98cb' into unassign…
Dec 9, 2014
e6888c7
updated sql statements
StephanRichter Dec 9, 2014
fa80bef
Merge branch 'master' into unassigned-tree
Dec 9, 2014
3a2d9c2
Merge branch 'master' into unassigned-tree
Jan 27, 2015
520c6bd
Merge branch 'master' into unassigned-tree
Jan 29, 2015
af613f9
Merge branch 'master' into unassigned-tree
Feb 11, 2015
029b268
removed condition preventig display of unassigned tasklists, when no …
Feb 11, 2015
fb300c0
updated dummy milestone query: now using PDO prepared statements
Feb 11, 2015
4d84248
fixed indentations
Feb 11, 2015
4b9a265
fixed typo
Feb 11, 2015
5ac7c62
fixed another typo
Feb 11, 2015
16dea3a
Merge branch 'master' into unassigned-tree
StephanRichter Apr 29, 2015
61ce672
Merge branch 'master' into unassigned-tree
Apr 26, 2016
17d45a2
Merge branch 'master' into unassigned-tree
Apr 27, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 85 additions & 18 deletions include/class.milestone.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@
* @license http://opensource.org/licenses/gpl-license.php GNU General Public License v3 or later
* @global $mylog
*/
class milestone
{
class milestone {
/**
* Add a milestone
*
Expand Down Expand Up @@ -449,18 +448,63 @@ function getUpcomingProjectMilestones($project, $lim = 100)
}
}

/**
* Return a dummy milestone, which is used to collect task lists not assinged to any other milestone
*
* @param int $project the id of the project for which it is used
* @return array $milestone Milestone details
*/
function dummyMilestone($project)
{
global $conn;
$project = (int) $project;
$id = 0;
$milestone = array();

// Format start and end date for display

$tod = date("d.m.Y");
$now = strtotime($tod);
$time = date(CL_DATEFORMAT, $now);
$milestone['ID'] = $id;
$milestone["endstring"] = $time;
$milestone["fend"] = $time;
$milestone["startstring"] = $time;

$milestone["name"] = 'unassigned task lists';
$milestone["desc"] = 'task lists not assigned to any milestone';
// Get the name of the project where the message was posted for display
$stmt = $conn->prepare("SELECT name FROM projekte WHERE ID = ?");
$stmt->execute(array($project));
$res = $stmt->fetch();
$pname = stripslashes($res['name']);
$milestone["pname"] = $pname;
// Daysleft contains a signed number, dayslate an unsigned one that only applies if the milestone is late
$dayslate = 0;
$milestone["daysleft"] = $dayslate;
$milestone["dayslate"] = $dayslate;
// Get attached tasklists and messages
$tasks = $this->getMilestoneTasklists(0,$project);
$milestone["tasklists"] = $tasks;
$messages = $this->getMilestoneMessages(0,$project);
$milestone["messages"] = $messages;
return $milestone;
}

/**
* Return all open milestones of a given project
*
* @param int $project Project ID
* @param int $lim Number of milestones to return
* @param $showdummy if set to true, the method will add a dummy milestone for all task lists not assinged to a milestone
* @return array $milestones Details of the open milestones
*/
function getAllProjectMilestones($project, $lim = 100)
function getAllProjectMilestones($project, $lim = 100, $showdummy = false)
{
global $conn;
$project = (int)$project;
$lim = (int)$lim;
$showdummy = (bool) $showdummy;

$milestones = array();

Expand All @@ -473,6 +517,13 @@ function getAllProjectMilestones($project, $lim = 100)
}
}

if ($showdummy) {
$themilestone = $this->dummyMilestone($project);
if (!empty($themilestone['tasklists'])) {
array_push($milestones, $themilestone);
}
}

if (!empty($milestones)) {
return $milestones;
} else {
Expand Down Expand Up @@ -571,11 +622,11 @@ function getTodayMilestones($m, $y, $d, $project = 0)
$timeline = array();

if ($project > 0) {
$sel1 = $conn->prepare("SELECT * FROM milestones WHERE project = ? AND status=1 AND end = '$starttime' ORDER BY `end` ASC");
$sel1->execute(array($project));
$sel1 = $conn->prepare("SELECT * FROM milestones WHERE project = ? AND status=1 AND end = ? ORDER BY `end` ASC");
$sel1->execute(array($project,$starttime));
} else {
$sel1 = $conn->prepare("SELECT milestones.*,projekte_assigned.user,projekte.name AS pname,projekte.status AS pstatus FROM milestones,projekte_assigned,projekte WHERE milestones.project = projekte_assigned.projekt AND milestones.project = projekte.ID AND projekte_assigned.user = ? AND milestones.status=1 AND projekte.status != 2 AND milestones.end = '$starttime'");
$sel1->execute(array($user));
$sel1 = $conn->prepare("SELECT milestones.*,projekte_assigned.user,projekte.name AS pname,projekte.status AS pstatus FROM milestones,projekte_assigned,projekte WHERE milestones.project = projekte_assigned.projekt AND milestones.project = projekte.ID AND projekte_assigned.user = ? AND milestones.status=1 AND projekte.status != 2 AND milestones.end = ?");
$sel1->execute(array($user,$starttime));
}
while ($stone = $sel1->fetch()) {
$stone["daysleft"] = $this->getDaysLeft($stone["end"]);
Expand All @@ -593,36 +644,52 @@ function getTodayMilestones($m, $y, $d, $project = 0)
* Return all open tasklists associated to a given milestones
*
* @param int $milestone Milestone ID
* @param project if set to a nonzero value (project id) it will search for tasks by project assignment, which can be used when no milestone is assigned, i.e. when $milestone=0
* @return array $lists Details of the tasklists
*/
private function getMilestoneTasklists($milestone)
{
private function getMilestoneTasklists($milestone,$project = 0) {
global $conn;
$milestone = (int)$milestone;
$project = (int) $project;

$objtasklist = new tasklist();

$sel = $conn->query("SELECT ID FROM tasklist WHERE milestone = $milestone AND status = 1 ORDER BY ID ASC");

if ($project>0){
$sel = $conn->query("SELECT ID FROM tasklist WHERE project = $project AND milestone = $milestone AND status = 1 ORDER BY ID ASC");
} else {
$sel = $conn->query("SELECT ID FROM tasklist WHERE milestone = $milestone AND status = 1 ORDER BY ID ASC");
}
$lists = array();
if ($milestone) {
while ($listId = $sel->fetch()) {
array_push($lists, $objtasklist->getTasklist($listId["ID"]));
}
}
while ($listId = $sel->fetch()) {
array_push($lists, $objtasklist->getTasklist($listId["ID"]));
}
if (!empty($lists)) {
return $lists;
} else {
return false;
}
}

private function getMilestoneMessages($milestone)
/**
* Return all messages associated to a given milestones
*
* @param int $milestone Milestone ID
* @param project if set to a nonzero value (project id) it will search for tasks by project assignment, which can be used when no milestone is assigned, i.e. when $milestone=0
* @return array $lists messages of the milestone
*/
private function getMilestoneMessages($milestone,$project = 0)
{
global $conn;
$milestone = (int)$milestone;
$project = (int) $project;

$objmessage = new message();

$sel = $conn->query("SELECT title,ID,milestone FROM messages WHERE milestone = $milestone");
if ($project>0){
$sel = $conn->query("SELECT title,ID,milestone FROM messages WHERE project = $project AND milestone = $milestone");
} else {
$sel = $conn->query("SELECT title,ID,milestone FROM messages WHERE milestone = $milestone");
}
$msgs = array();
while ($msg = $sel->fetch()) {
array_push($msgs, $msg);
Expand Down
2 changes: 1 addition & 1 deletion manageproject.php
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@
$title = $langfile['project'];
$title = $title . " " . $tproject["name"];
$template->assign("title", $title);
$template->assign("tree", $milestone->getAllProjectMilestones($cleanGet["id"], 1000));
$template->assign("tree", $milestone->getAllProjectMilestones($cleanGet["id"], 1000, true));

$template->assign("project", $tproject);
$template->assign("done", $done);
Expand Down
2 changes: 0 additions & 2 deletions templates/standard/project.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,6 @@
<div id="block_dashboard" class="block">

{*Miles tree*}
{if $tree[0][0] > 0}
<div class="projects dtree" style="padding-bottom:2px;" >
<div class="headline accordion_toggle">
<a href="javascript:void(0);" id="treehead_toggle" class="win_block" onclick=""></a>
Expand Down Expand Up @@ -155,7 +154,6 @@
</div> {*block end*}
</div> {*block in wrapper end*}
</div>
{/if}
{*Tree end*}

{*Milestones*}
Expand Down