* Copyright (C) 2004-2010 Laurent Destailleur * Copyright (C) 2005 Marc Bariley / Ocebo * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2013 Cédric Salvador * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file htdocs/projet/liste.php * \ingroup projet * \brief Page to list projects */ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; $langs->load('projects'); $title = $langs->trans("Projects"); // Security check $socid = (is_numeric($_GET["socid"]) ? $_GET["socid"] : 0 ); if ($user->societe_id > 0) $socid=$user->societe_id; if ($socid > 0) { $soc = new Societe($db); $soc->fetch($socid); $title .= ' ('.$soc->nom.')'; } if (!$user->rights->projet->lire) accessforbidden(); $sortfield = isset($_GET["sortfield"])?$_GET["sortfield"]:$_POST["sortfield"]; $sortorder = isset($_GET["sortorder"])?$_GET["sortorder"]:$_POST["sortorder"]; $page = isset($_GET["page"])? $_GET["page"]:$_POST["page"]; $page = is_numeric($page) ? $page : 0; $page = $page == -1 ? 0 : $page; if (! $sortfield) $sortfield="p.ref"; if (! $sortorder) $sortorder="ASC"; $offset = $conf->liste_limit * $page ; $pageprev = $page - 1; $pagenext = $page + 1; $mine = $_REQUEST['mode']=='mine' ? 1 : 0; $search_ref=GETPOST("search_ref"); $search_label=GETPOST("search_label"); $search_societe=GETPOST("search_societe"); /* * View */ $projectstatic = new Project($db); $socstatic = new Societe($db); llxHeader("",$langs->trans("Projects"),"EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"); $projectsListId = $projectstatic->getProjectsAuthorizedForUser($user,($mine?$mine:($user->rights->projet->all->lire?2:0)),1,$socid); $sql = "SELECT p.rowid as projectid, p.ref, p.title, p.fk_statut, p.public, p.fk_user_creat"; $sql.= ", p.datec as date_create, p.dateo as date_start, p.datee as date_end"; $sql.= ", s.nom, s.rowid as socid"; $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid"; $sql.= " WHERE p.entity = ".$conf->entity; if ($mine || ! $user->rights->projet->all->lire) $sql.= " AND p.rowid IN (".$projectsListId.")"; // No need to check company, as filtering of projects must be done by getProjectsAuthorizedForUser //if ($socid || ! $user->rights->societe->client->voir) $sql.= " AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".$socid.")"; if ($socid) $sql.= " AND (p.fk_soc IS NULL OR p.fk_soc = 0 OR p.fk_soc = ".$socid.")"; if ($search_ref) { $sql .= natural_search('p.ref', $search_ref); } if ($search_label) { $sql .= natural_search('p.title', $search_label); } if ($search_societe) { $sql .= natural_search('s.nom', $search_societe); } $sql.= $db->order($sortfield,$sortorder); $sql.= $db->plimit($conf->liste_limit+1, $offset); dol_syslog("list allowed project sql=".$sql); $resql = $db->query($sql); if ($resql) { $var=true; $num = $db->num_rows($resql); $i = 0; $text=$langs->trans("Projects"); if ($mine) $text=$langs->trans('MyProjects'); print_barre_liste($text, $page, $_SERVER["PHP_SELF"], "", $sortfield, $sortorder, "", $num); // Show description of content if ($mine) print $langs->trans("MyProjectsDesc").'

'; else { if ($user->rights->projet->all->lire && ! $socid) print $langs->trans("ProjectsDesc").'

'; else print $langs->trans("ProjectsPublicDesc").'

'; } print '
'; print ''; print ''; print_liste_field_titre($langs->trans("Ref"),$_SERVER["PHP_SELF"],"p.ref","","","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Label"),$_SERVER["PHP_SELF"],"p.title","","","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("ThirdParty"),$_SERVER["PHP_SELF"],"s.nom","","","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Visibility"),$_SERVER["PHP_SELF"],"p.public","","","",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],'p.fk_statut',"","",'align="right"',$sortfield,$sortorder); print "\n"; print ''; print ''; print ''; print ''; print ''; print ''; print "\n"; while ($i < $num) { $objp = $db->fetch_object($resql); $projectstatic->id = $objp->projectid; $projectstatic->user_author_id = $objp->fk_user_creat; $projectstatic->public = $objp->public; $userAccess = $projectstatic->restrictedProjectArea($user); if ($userAccess >= 0) { $var=!$var; print ""; // Project url print ""; // Title print ''; // Company print ''; // Visibility print ''; // Status $projectstatic->statut = $objp->fk_statut; print ''; print "\n"; } $i++; } $db->free($resql); } else { dol_print_error($db); } print "
'; print ''; print ''; print ''; print ''; print ''; print ' 
"; $projectstatic->ref = $objp->ref; print $projectstatic->getNomUrl(1); print "'; print dol_trunc($objp->title,24); print ''; if ($objp->socid) { $socstatic->id=$objp->socid; $socstatic->nom=$objp->nom; print $socstatic->getNomUrl(1); } else { print ' '; } print ''; if ($objp->public) print $langs->trans('SharedProject'); else print $langs->trans('PrivateProject'); print ''.$projectstatic->getLibStatut(3).'
"; llxFooter(); $db->close();