PageRenderTime 41ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/htdocs/projet/liste.php

https://gitlab.com/imagination/dolibarr
PHP | 209 lines | 137 code | 36 blank | 36 comment | 23 complexity | da7009df30142ee99a8722ff0151bca1 MD5 | raw file
  1. <?php
  2. /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  3. * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
  4. * Copyright (C) 2005 Marc Bariley / Ocebo <marc@ocebo.com>
  5. * Copyright (C) 2005-2010 Regis Houssin <regis@dolibarr.fr>
  6. *
  7. * This program is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 2 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  19. */
  20. /**
  21. * \file htdocs/projet/liste.php
  22. * \ingroup projet
  23. * \brief Page to list projects
  24. * \version $Id: liste.php,v 1.49 2011/07/31 23:23:37 eldy Exp $
  25. */
  26. require("../main.inc.php");
  27. require_once(DOL_DOCUMENT_ROOT."/projet/class/project.class.php");
  28. $title = $langs->trans("Projects");
  29. // Security check
  30. $socid = (is_numeric($_GET["socid"]) ? $_GET["socid"] : 0 );
  31. if ($user->societe_id > 0) $socid=$user->societe_id;
  32. if ($socid > 0)
  33. {
  34. $soc = new Societe($db);
  35. $soc->fetch($socid);
  36. $title .= ' (<a href="liste.php">'.$soc->nom.'</a>)';
  37. }
  38. if (!$user->rights->projet->lire) accessforbidden();
  39. $sortfield = isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"];
  40. $sortorder = isset($_GET["sortorder"])?$_GET["sortorder"]:$_POST["sortorder"];
  41. $page = isset($_GET["page"])? $_GET["page"]:$_POST["page"];
  42. $page = is_numeric($page) ? $page : 0;
  43. $page = $page == -1 ? 0 : $page;
  44. if (! $sortfield) $sortfield="p.ref";
  45. if (! $sortorder) $sortorder="ASC";
  46. $offset = $conf->liste_limit * $page ;
  47. $pageprev = $page - 1;
  48. $pagenext = $page + 1;
  49. $mine = $_REQUEST['mode']=='mine' ? 1 : 0;
  50. /*
  51. * View
  52. */
  53. llxHeader("",$langs->trans("Projects"),"EN:Module_Projects|FR:Module_Projets|ES:M&oacute;dulo_Proyectos");
  54. $projectstatic = new Project($db);
  55. $socstatic = new Societe($db);
  56. $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,($mine?$mine:($user->rights->projet->all->lire?2:0)),1,$socid);
  57. $sql = "SELECT p.rowid as projectid, p.ref, p.title, p.fk_statut, p.public, p.fk_user_creat";
  58. $sql.= ", p.datec as date_create, p.dateo as date_start, p.datee as date_end";
  59. $sql.= ", s.nom, s.rowid as socid";
  60. $sql.= " FROM ".MAIN_DB_PREFIX."projet as p";
  61. $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid";
  62. $sql.= " WHERE p.entity = ".$conf->entity;
  63. if ($mine || ! $user->rights->projet->all->lire) $sql.= " AND p.rowid IN (".$projectsListId.")";
  64. // No need to check company, as filtering of projects must be done by getProjectsAuthorizedForUser
  65. //if ($socid || ! $user->rights->societe->client->voir) $sql.= " AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".$socid.")";
  66. if ($socid) $sql.= " AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".$socid.")";
  67. if ($_GET["search_ref"])
  68. {
  69. $sql.= " AND p.ref LIKE '%".$db->escape($_GET["search_ref"])."%'";
  70. }
  71. if ($_GET["search_label"])
  72. {
  73. $sql.= " AND p.title LIKE '%".$db->escape($_GET["search_label"])."%'";
  74. }
  75. if ($_GET["search_societe"])
  76. {
  77. $sql.= " AND s.nom LIKE '%".$db->escape($_GET["search_societe"])."%'";
  78. }
  79. $sql.= $db->order($sortfield,$sortorder);
  80. $sql.= $db->plimit($conf->liste_limit+1, $offset);
  81. $var=true;
  82. $resql = $db->query($sql);
  83. if ($resql)
  84. {
  85. $num = $db->num_rows($resql);
  86. $i = 0;
  87. $text=$langs->trans("Projects");
  88. if ($mine) $text=$langs->trans('MyProjects');
  89. print_barre_liste($text, $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, "", $num);
  90. // Show description of content
  91. if ($mine) print $langs->trans("MyProjectsDesc").'<br><br>';
  92. else
  93. {
  94. if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").'<br><br>';
  95. else print $langs->trans("ProjectsPublicDesc").'<br><br>';
  96. }
  97. print '<table class="noborder" width="100%">';
  98. print '<tr class="liste_titre">';
  99. print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"p.ref","","","",$sortfield,$sortorder);
  100. print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"p.title","","","",$sortfield,$sortorder);
  101. print_liste_field_titre($langs->trans("Company"),$_SERVER["PHP_SELF"],"s.nom","","","",$sortfield,$sortorder);
  102. print_liste_field_titre($langs->trans("Visibility"),$_SERVER["PHP_SELF"],"p.public","","","",$sortfield,$sortorder);
  103. print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],'p.fk_statut',"","",'align="right"',$sortfield,$sortorder);
  104. print "</tr>\n";
  105. print '<form method="get" action="liste.php">';
  106. print '<tr class="liste_titre">';
  107. print '<td class="liste_titre"valign="right">';
  108. print '<input type="text" class="flat" name="search_ref" value="'.$_GET["search_ref"].'" size="6">';
  109. print '</td>';
  110. print '<td class="liste_titre"valign="right">';
  111. print '<input type="text" class="flat" name="search_label" value="'.$_GET["search_label"].'">';
  112. print '</td>';
  113. print '<td class="liste_titre"valign="right">';
  114. print '<input type="text" class="flat" name="search_societe" value="'.$_GET["search_societe"].'">';
  115. print '</td>';
  116. print '<td class="liste_titre">&nbsp;</td>';
  117. print '<td class="liste_titre" align="right"><input class="liste_titre" type="image" name="button_search" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'"></td>';
  118. print "</tr>\n";
  119. while ($i < $num)
  120. {
  121. $objp = $db->fetch_object($resql);
  122. $projectstatic->id = $objp->projectid;
  123. $projectstatic->user_author_id = $objp->fk_user_creat;
  124. $projectstatic->public = $objp->public;
  125. $userAccess = $projectstatic->restrictedProjectArea($user,1);
  126. if ($userAccess >= 0)
  127. {
  128. $var=!$var;
  129. print "<tr $bc[$var]>";
  130. // Project url
  131. print "<td>";
  132. $projectstatic->ref = $objp->ref;
  133. print $projectstatic->getNomUrl(1);
  134. print "</td>";
  135. // Title
  136. print '<td>';
  137. print dol_trunc($objp->title,24);
  138. print '</td>';
  139. // Company
  140. print '<td>';
  141. if ($objp->socid)
  142. {
  143. $socstatic->id=$objp->socid;
  144. $socstatic->nom=$objp->nom;
  145. print $socstatic->getNomUrl(1);
  146. }
  147. else
  148. {
  149. print '&nbsp;';
  150. }
  151. print '</td>';
  152. // Visibility
  153. print '<td align="left">';
  154. if ($objp->public) print $langs->trans('SharedProject');
  155. else print $langs->trans('PrivateProject');
  156. print '</td>';
  157. // Status
  158. $projectstatic->statut = $objp->fk_statut;
  159. print '<td align="right">'.$projectstatic->getLibStatut(3).'</td>';
  160. print "</tr>\n";
  161. }
  162. $i++;
  163. }
  164. $db->free($resql);
  165. }
  166. else
  167. {
  168. dol_print_error($db);
  169. }
  170. print "</table>";
  171. $db->close();
  172. llxFooter('$Date: 2011/07/31 23:23:37 $ - $Revision: 1.49 $');
  173. ?>