From 4c1c1c98bf7f9fc10b1f943e8330d781cece69c3 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Wed, 21 Oct 2009 12:41:59 +0000 Subject: [PATCH] --- inc/extranet/Controlleur/class.extranet.core.php | 4 ++++ .../Controlleur/class.extranet.droits.php | 10 +++++----- inc/extranet/Controlleur/class.extranet.url.php | 4 ++-- inc/extranet/DAO/class.extranet.dao.client.php | 16 ++++++++++++++-- inc/extranet/DAO/class.extranet.dao.devis.php | 7 +++++++ inc/extranet/DAO/class.extranet.dao.facture.php | 7 +++++++ .../DAO/class.extranet.dao.utilisateur.php | 3 ++- .../Metier/class.extranet.utilisateur.php | 1 + 8 files changed, 42 insertions(+), 10 deletions(-) diff --git a/inc/extranet/Controlleur/class.extranet.core.php b/inc/extranet/Controlleur/class.extranet.core.php index 5cb147f22..2d4ca7139 100644 --- a/inc/extranet/Controlleur/class.extranet.core.php +++ b/inc/extranet/Controlleur/class.extranet.core.php @@ -69,6 +69,10 @@ class extranetCore extends cubeCore { // Utilisateur connecté à l'interface $dao = new extranetDAOUtilisateur($this->con); $this->user = $dao->selectByLoginPassword($_SESSION['user_email'], $_SESSION['user_password']); + if ($this->user->grade == 0) { + $daoClient = new extranetDAOClient($this->con); + $this->user->collegues = $daoClient->getColleguesList($this->user->utilisateur_id); + } } /** diff --git a/inc/extranet/Controlleur/class.extranet.droits.php b/inc/extranet/Controlleur/class.extranet.droits.php index 59505d36c..d1cb554ba 100644 --- a/inc/extranet/Controlleur/class.extranet.droits.php +++ b/inc/extranet/Controlleur/class.extranet.droits.php @@ -11,7 +11,7 @@ class extranetDroits { } } - protected static function verifDroits($proprietaire, $client, $action = 'r', $error = true) + protected static function verifDroits($proprietaire, $client, $action = 'r', $error = true, $collegues = false) { global $core; @@ -25,7 +25,7 @@ class extranetDroits { return true; } } - } elseif ($core->user->grade == 0 && $action == 'r' && $client == $core->user->utilisateur_id) { + } elseif ($core->user->grade == 0 && $action == 'r' && ($client == $core->user->utilisateur_id || ($collegues && in_array($client, $core->user->collegues)))) { return true; } elseif ($core->user->grade == 3 && $action == 'r') { return true; @@ -38,12 +38,12 @@ class extranetDroits { public static function devis($devis, $action , $error = true) { - return self::verifDroits($devis->createur_id, $devis->client_id, $action, $error); + return self::verifDroits($devis->createur_id, $devis->client_id, $action, $error, true); } public static function facture($facture, $action, $error = true) { - return self::verifDroits($facture->createur_id, $facture->client_id, $action, $error); + return self::verifDroits($facture->createur_id, $facture->client_id, $action, $error, true); } public static function projet($projet, $error) @@ -54,7 +54,7 @@ class extranetDroits { public static function recherche($page) { global $core; - $droits = array('projets' => 1, 'factures' => 1, 'devis' => 1, 'clients' => 1, 'timereport' => 1, 'fichiers' => 0,'books'=>0); + $droits = array('projets' => 1, 'factures' => 1, 'devis' => 1, 'clients' => 1, 'timereport' => 1, 'fichiers' => 0, 'books' => 0); return (isset($droits[$page]) && $droits[$page] <= $core->user->grade); } diff --git a/inc/extranet/Controlleur/class.extranet.url.php b/inc/extranet/Controlleur/class.extranet.url.php index 1ebe508d5..840dfa537 100644 --- a/inc/extranet/Controlleur/class.extranet.url.php +++ b/inc/extranet/Controlleur/class.extranet.url.php @@ -1003,7 +1003,7 @@ class extranetUrl { $dao = new extranetDAODevis($core->con); $settings = $core->user->getSettings('devis'); - $liste = $dao->getListeForClient($core->user->utilisateur_id, $settings['orderby'], $settings['sens']); + $liste = $dao->getListeForEntreprise($core->user->entreprise, $settings['orderby'], $settings['sens']); $res = ''; $res .= ''; $res .= ''; @@ -1391,7 +1391,7 @@ class extranetUrl { cubePage::truePopup(); $settings = $core->user->getSettings('factures'); $dao = new extranetDAOFacture($core->con); - $liste = $dao->getListeForClient($core->user->utilisateur_id, $settings['orderby'], $settings['sens']); + $liste = $dao->getListeForEntreprise($core->user->entreprise, $settings['orderby'], $settings['sens'], true); $res = '
' . self::orderby(__('Nom'), 'nom', $settings, 'sortDevis') . '' . self::orderby(__('Date'), 'date_creation', $settings, 'sortDevis') . '
'; $res .= ''; diff --git a/inc/extranet/DAO/class.extranet.dao.client.php b/inc/extranet/DAO/class.extranet.dao.client.php index eb8ea1a97..eeb6c26a3 100644 --- a/inc/extranet/DAO/class.extranet.dao.client.php +++ b/inc/extranet/DAO/class.extranet.dao.client.php @@ -4,6 +4,7 @@ class extranetDAOClient extends extranetDAOUtilisateur { { $utilisateur = new extranetClient(); $utilisateur->rs = $r->rs; + $utilisateur->collegues = array(); return parent::singleton($r, $utilisateur); } @@ -11,6 +12,7 @@ class extranetDAOClient extends extranetDAOUtilisateur { { $utilisateur = new extranetClient(); $utilisateur->rs = ''; + $utilisateur->collegues = array(); return parent::cree($utilisateur); } @@ -18,6 +20,7 @@ class extranetDAOClient extends extranetDAOUtilisateur { { $r = $this->con->select('SELECT * FROM clients WHERE utilisateur_id=' . $this->con->escape($client_id) . ' LIMIT 1'); $res = $this->factory($r); + if (!count($res)) { return null; } @@ -33,7 +36,6 @@ class extranetDAOClient extends extranetDAOUtilisateur { public function getListe($orderby = null, $sens = null, $limit = null) { $sql = $this->getQueryList('clients', $orderby, $sens, $limit); - fb($sql); $r = $this->con->select($sql); return $this->factory($r); } @@ -46,10 +48,20 @@ class extranetDAOClient extends extranetDAOUtilisateur { public function getCollegues($utilisateur_id) { - $r = $this->con->select('SELECT * FROM clients WHERE entreprise IN (SELECT entreprise FROM utilisateurs WHERE utilisateur_id=\'' . $this->con->escape($utilisateur_id) . '\')'); + $r = $this->con->select('SELECT * FROM clients WHERE entreprise IN (SELECT entreprise FROM utilisateurs WHERE utilisateur_id=\'' . $this->con->escape($utilisateur_id) . '\') AND utilisateur_id!=\'' . $this->con->escape($utilisateur_id) . '\''); return $this->factory($r); } + public function getColleguesList($utilisateur_id) + { + $r = $this->con->select('SELECT utilisateur_id FROM clients WHERE entreprise IN (SELECT entreprise FROM utilisateurs WHERE utilisateur_id=\'' . $this->con->escape($utilisateur_id) . '\') AND utilisateur_id!=\'' . $this->con->escape($utilisateur_id) . '\''); + $res = array(); + while ($r->fetch()) { + $res[] = $r->utilisateur_id; + } + return $res; + } + public function querySearchByName($q) { return 'SELECT utilisateur_id FROM utilisateurs WHERE (' . $this->whereSearchByName($q) . ') AND grade=0'; diff --git a/inc/extranet/DAO/class.extranet.dao.devis.php b/inc/extranet/DAO/class.extranet.dao.devis.php index 52be320fc..9f7e8f071 100644 --- a/inc/extranet/DAO/class.extranet.dao.devis.php +++ b/inc/extranet/DAO/class.extranet.dao.devis.php @@ -163,6 +163,13 @@ class extranetDAODevis extends extranetDAO { return $this->factory($r); } + public function getListeForEntreprise($entreprise_id, $orderby, $sens) + { + $sql = 'SELECT * FROM devis_vue WHERE client_id IN (SELECT utilisateur_id FROM utilisateurs WHERE entreprise=\'' . $this->con->escape($entreprise_id) . '\') AND status>0 ORDER BY ' . $orderby . ' ' . $sens; + $r = $this->con->select($sql); + return $this->factory($r); + } + /** * extranetDAODevis::sauve() * diff --git a/inc/extranet/DAO/class.extranet.dao.facture.php b/inc/extranet/DAO/class.extranet.dao.facture.php index 39e4edf38..7cb54dd6a 100644 --- a/inc/extranet/DAO/class.extranet.dao.facture.php +++ b/inc/extranet/DAO/class.extranet.dao.facture.php @@ -117,6 +117,13 @@ class extranetDAOFacture extends extranetDAO { return $this->factory($r); } + public function getListeForEntreprise($entreprise_id, $orderby, $sens) + { + $sql = 'SELECT * FROM factures_vue WHERE client_id IN(SELECT utilisateur_id FROM utilisateurs WHERE entreprise=\'' . $this->con->escape($entreprise_id) . '\') AND status>0 ORDER BY ' . $orderby . ' ' . $sens; + $r = $this->con->select($sql); + return $this->factory($r); + } + public function getImpayesOfClient($client_id) { $sql = 'SELECT * FROM factures_vue WHERE client_id=\'' . $this->con->escape($client_id) . '\' AND status=1 ORDER BY date_creation'; diff --git a/inc/extranet/DAO/class.extranet.dao.utilisateur.php b/inc/extranet/DAO/class.extranet.dao.utilisateur.php index 014abaceb..13ba94abe 100644 --- a/inc/extranet/DAO/class.extranet.dao.utilisateur.php +++ b/inc/extranet/DAO/class.extranet.dao.utilisateur.php @@ -39,6 +39,7 @@ class extranetDAOUtilisateur extends extranetDAO { $utilisateur->connected = false; $utilisateur->notes = $r->notes; $utilisateur->entreprise = $r->entreprise; + $utilisateur->collegues = array(); return $utilisateur; } @@ -89,7 +90,7 @@ class extranetDAOUtilisateur extends extranetDAO { public function selectByLoginPassword($login, $password) { - $r = $this->con->select('SELECT * FROM utilisateurs WHERE (email=\'' . $this->con->escape($login) . '\' OR login=\'' . $this->con->escape($login) . '\') AND (password=\'' . $this->con->escape($password) . '\' OR ws_password=\''.$this->con->escape($password).'\') LIMIT 1'); + $r = $this->con->select('SELECT * FROM utilisateurs WHERE (email=\'' . $this->con->escape($login) . '\' OR login=\'' . $this->con->escape($login) . '\') AND (password=\'' . $this->con->escape($password) . '\' OR ws_password=\'' . $this->con->escape($password) . '\') LIMIT 1'); if (!$r->count()) { return false; } diff --git a/inc/extranet/Metier/class.extranet.utilisateur.php b/inc/extranet/Metier/class.extranet.utilisateur.php index 0e18da9a0..628a1bd10 100644 --- a/inc/extranet/Metier/class.extranet.utilisateur.php +++ b/inc/extranet/Metier/class.extranet.utilisateur.php @@ -22,6 +22,7 @@ class extranetUtilisateur extends cubeMetier { protected $entreprise; protected $tva_intra; protected $rs; + protected $collegues; protected $ws_admin; protected $ws_grade; -- 2.39.5
' . self::orderby('#', 'facture_id', $settings, 'sortFacture') . '