index.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. <?php
  2. /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  3. * Copyright (C) 2006-2010 Laurent Destailleur <eldy@users.sourceforge.net>
  4. * Copyright (C) 2010 Regis Houssin <regis.houssin@capnetworks.com>
  5. *
  6. * This program is free software; you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation; either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. /**
  20. * \file htdocs/projet/activity/index.php
  21. * \ingroup projet
  22. * \brief Page activite perso du module projet
  23. */
  24. require ("../../main.inc.php");
  25. require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
  26. require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
  27. require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php';
  28. require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
  29. $mine = $_REQUEST['mode']=='mine' ? 1 : 0;
  30. // Security check
  31. $socid=0;
  32. if ($user->societe_id > 0) $socid=$user->societe_id;
  33. //$result = restrictedArea($user, 'projet', $projectid);
  34. if (!$user->rights->projet->lire) accessforbidden();
  35. $langs->load("projects");
  36. /*
  37. * View
  38. */
  39. $now = dol_now();
  40. $projectstatic=new Project($db);
  41. //$projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,($mine?$mine:($user->rights->projet->all->lire?2:0)),1);
  42. $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,0,1); // Return all projects I have permission on because I want my tasks and some of my task may be on a public projet that is not my project
  43. $title=$langs->trans("Activities");
  44. if ($mine) $title=$langs->trans("MyActivities");
  45. llxHeader("",$title);
  46. print_fiche_titre($title);
  47. if ($mine) print $langs->trans("MyTasksDesc").'<br><br>';
  48. else
  49. {
  50. if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("TasksDesc").'<br><br>';
  51. else print $langs->trans("TasksPublicDesc").'<br><br>';
  52. }
  53. print '<div class="fichecenter"><div class="fichethirdleft">';
  54. print_projecttasks_array($db,$socid,$projectsListId,$mine);
  55. /* Affichage de la liste des projets d'aujourd'hui */
  56. print '<br><table class="noborder" width="100%">';
  57. print '<tr class="liste_titre">';
  58. print '<td width="50%">'.$langs->trans('Today').'</td>';
  59. print '<td width="50%" align="right">'.$langs->trans("Time").'</td>';
  60. print "</tr>\n";
  61. $sql = "SELECT p.rowid, p.ref, p.title, SUM(tt.task_duration) as nb";
  62. $sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
  63. $sql.= ", ".MAIN_DB_PREFIX."projet_task as t";
  64. $sql.= ", ".MAIN_DB_PREFIX."projet_task_time as tt";
  65. $sql.= " WHERE t.fk_projet = p.rowid";
  66. $sql.= " AND p.entity = ".$conf->entity;
  67. $sql.= " AND tt.fk_task = t.rowid";
  68. $sql.= " AND tt.fk_user = ".$user->id;
  69. $sql.= " AND date_format(task_date,'%y-%m-%d') = '".strftime("%y-%m-%d",$now)."'";
  70. $sql.= " AND p.rowid in (".$projectsListId.")";
  71. $sql.= " GROUP BY p.rowid, p.ref, p.title";
  72. $resql = $db->query($sql);
  73. if ( $resql )
  74. {
  75. $var=true;
  76. $total=0;
  77. while ($row = $db->fetch_object($resql))
  78. {
  79. $var=!$var;
  80. print "<tr ".$bc[$var].">";
  81. print '<td>';
  82. $projectstatic->id=$row->rowid;
  83. $projectstatic->ref=$row->ref;
  84. print $projectstatic->getNomUrl(1);
  85. print '</td>';
  86. print '<td align="right">'.convertSecondToTime($row->nb).'</td>';
  87. print "</tr>\n";
  88. $total += $row->nb;
  89. }
  90. $db->free($resql);
  91. }
  92. else
  93. {
  94. dol_print_error($db);
  95. }
  96. print '<tr class="liste_total">';
  97. print '<td>'.$langs->trans('Total').'</td>';
  98. print '<td align="right">'.convertSecondToTime($total).'</td>';
  99. print "</tr>\n";
  100. print "</table>";
  101. // TODO Do not use date_add function to be compatible with all database
  102. if ($db->type != 'pgsql')
  103. {
  104. /* Affichage de la liste des projets d'hier */
  105. print '<br><table class="noborder" width="100%">';
  106. print '<tr class="liste_titre">';
  107. print '<td>'.$langs->trans('Yesterday').'</td>';
  108. print '<td align="right">'.$langs->trans("Time").'</td>';
  109. print "</tr>\n";
  110. $sql = "SELECT p.rowid, p.ref, p.title, sum(tt.task_duration) as nb";
  111. $sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
  112. $sql.= ", ".MAIN_DB_PREFIX."projet_task as t";
  113. $sql.= ", ".MAIN_DB_PREFIX."projet_task_time as tt";
  114. $sql.= " WHERE t.fk_projet = p.rowid";
  115. $sql.= " AND p.entity = ".$conf->entity;
  116. $sql.= " AND tt.fk_task = t.rowid";
  117. $sql.= " AND tt.fk_user = ".$user->id;
  118. $sql.= " AND date_format(date_add(task_date, INTERVAL 1 DAY),'%y-%m-%d') = '".strftime("%y-%m-%d",$now)."'";
  119. $sql.= " AND p.rowid in (".$projectsListId.")";
  120. $sql.= " GROUP BY p.rowid, p.ref, p.title";
  121. $resql = $db->query($sql);
  122. if ( $resql )
  123. {
  124. $var=true;
  125. $total=0;
  126. while ($row = $db->fetch_object($resql))
  127. {
  128. $var=!$var;
  129. print "<tr ".$bc[$var].">";
  130. print '<td>';
  131. $projectstatic->id=$row->rowid;
  132. $projectstatic->ref=$row->ref;
  133. print $projectstatic->getNomUrl(1);
  134. print '</td>';
  135. print '<td align="right">'.convertSecondToTime($row->nb).'</td>';
  136. print "</tr>\n";
  137. $total += $row->nb;
  138. }
  139. $db->free($resql);
  140. }
  141. else
  142. {
  143. dol_print_error($db);
  144. }
  145. print '<tr class="liste_total">';
  146. print '<td>'.$langs->trans('Total').'</td>';
  147. print '<td align="right">'.convertSecondToTime($total).'</td>';
  148. print "</tr>\n";
  149. print "</table>";
  150. }
  151. print '</div><div class="fichetwothirdright"><div class="ficheaddleft">';
  152. // TODO Do not use week function to be compatible with all database
  153. if ($db->type != 'pgsql')
  154. {
  155. /* Affichage de la liste des projets de la semaine */
  156. print '<table class="noborder" width="100%">';
  157. print '<tr class="liste_titre">';
  158. print '<td>'.$langs->trans("ActivityOnProjectThisWeek").'</td>';
  159. print '<td align="right">'.$langs->trans("Time").'</td>';
  160. print "</tr>\n";
  161. $sql = "SELECT p.rowid, p.ref, p.title, sum(tt.task_duration) as nb";
  162. $sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
  163. $sql.= " , ".MAIN_DB_PREFIX."projet_task as t";
  164. $sql.= " , ".MAIN_DB_PREFIX."projet_task_time as tt";
  165. $sql.= " WHERE t.fk_projet = p.rowid";
  166. $sql.= " AND p.entity = ".$conf->entity;
  167. $sql.= " AND tt.fk_task = t.rowid";
  168. $sql.= " AND tt.fk_user = ".$user->id;
  169. $sql.= " AND week(task_date) = '".strftime("%W",time())."'";
  170. $sql.= " AND p.rowid in (".$projectsListId.")";
  171. $sql.= " GROUP BY p.rowid, p.ref, p.title";
  172. $resql = $db->query($sql);
  173. if ( $resql )
  174. {
  175. $total = 0;
  176. $var=true;
  177. while ($row = $db->fetch_object($resql))
  178. {
  179. $var=!$var;
  180. print "<tr ".$bc[$var].">";
  181. print '<td>';
  182. $projectstatic->id=$row->rowid;
  183. $projectstatic->ref=$row->ref;
  184. print $projectstatic->getNomUrl(1);
  185. print '</td>';
  186. print '<td align="right">'.convertSecondToTime($row->nb).'</td>';
  187. print "</tr>\n";
  188. $total += $row->nb;
  189. }
  190. $db->free($resql);
  191. }
  192. else
  193. {
  194. dol_print_error($db);
  195. }
  196. print '<tr class="liste_total">';
  197. print '<td>'.$langs->trans('Total').'</td>';
  198. print '<td align="right">'.convertSecondToTime($total).'</td>';
  199. print "</tr>\n";
  200. print "</table><br>";
  201. }
  202. /* Affichage de la liste des projets du mois */
  203. print '<table class="noborder" width="100%">';
  204. print '<tr class="liste_titre">';
  205. print '<td>'.$langs->trans("ActivityOnProjectThisMonth").': '.dol_print_date($now,"%B %Y").'</td>';
  206. print '<td align="right">'.$langs->trans("Time").'</td>';
  207. print "</tr>\n";
  208. $sql = "SELECT p.rowid, p.ref, p.title, sum(tt.task_duration) as nb";
  209. $sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
  210. $sql.= ", ".MAIN_DB_PREFIX."projet_task as t";
  211. $sql.= ", ".MAIN_DB_PREFIX."projet_task_time as tt";
  212. $sql.= " WHERE t.fk_projet = p.rowid";
  213. $sql.= " AND p.entity = ".$conf->entity;
  214. $sql.= " AND tt.fk_task = t.rowid";
  215. $sql.= " AND tt.fk_user = ".$user->id;
  216. $sql.= " AND date_format(task_date,'%y-%m') = '".strftime("%y-%m",$now)."'";
  217. $sql.= " AND p.rowid in (".$projectsListId.")";
  218. $sql.= " GROUP BY p.rowid, p.ref, p.title";
  219. $resql = $db->query($sql);
  220. if ( $resql )
  221. {
  222. $var=false;
  223. while ($row = $db->fetch_object($resql))
  224. {
  225. print "<tr ".$bc[$var].">";
  226. print '<td>';
  227. $projectstatic->id=$row->rowid;
  228. $projectstatic->ref=$row->ref;
  229. print $projectstatic->getNomUrl(1);
  230. print '</td>';
  231. print '<td align="right">'.convertSecondToTime($row->nb).'</td>';
  232. print "</tr>\n";
  233. $var=!$var;
  234. }
  235. $db->free($resql);
  236. }
  237. else
  238. {
  239. dol_print_error($db);
  240. }
  241. print "</table>";
  242. /* Affichage de la liste des projets de l'annee */
  243. print '<br><table class="noborder" width="100%">';
  244. print '<tr class="liste_titre">';
  245. print '<td>'.$langs->trans("ActivityOnProjectThisYear").': '.strftime("%Y", $now).'</td>';
  246. print '<td align="right">'.$langs->trans("Time").'</td>';
  247. print "</tr>\n";
  248. $sql = "SELECT p.rowid, p.ref, p.title, sum(tt.task_duration) as nb";
  249. $sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
  250. $sql.= ", ".MAIN_DB_PREFIX."projet_task as t";
  251. $sql.= ", ".MAIN_DB_PREFIX."projet_task_time as tt";
  252. $sql.= " WHERE t.fk_projet = p.rowid";
  253. $sql.= " AND p.entity = ".$conf->entity;
  254. $sql.= " AND tt.fk_task = t.rowid";
  255. $sql.= " AND tt.fk_user = ".$user->id;
  256. $sql.= " AND YEAR(task_date) = '".strftime("%Y",$now)."'";
  257. $sql.= " AND p.rowid in (".$projectsListId.")";
  258. $sql.= " GROUP BY p.rowid, p.ref, p.title";
  259. $var=false;
  260. $resql = $db->query($sql);
  261. if ( $resql )
  262. {
  263. while ($row = $db->fetch_object($resql))
  264. {
  265. print "<tr ".$bc[$var].">";
  266. print '<td>';
  267. $projectstatic->id=$row->rowid;
  268. $projectstatic->ref=$row->ref;
  269. print $projectstatic->getNomUrl(1);
  270. print '</td>';
  271. print '<td align="right">'.convertSecondToTime($row->nb).'</td>';
  272. print "</tr>\n";
  273. $var=!$var;
  274. }
  275. $db->free($resql);
  276. }
  277. else
  278. {
  279. dol_print_error($db);
  280. }
  281. print "</table>";
  282. print '</div></div></div>';
  283. llxFooter();
  284. $db->close();