]> _ Git - cubeextranet.git/commitdiff
(no commit message)
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Wed, 12 Jan 2011 11:38:43 +0000 (11:38 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Wed, 12 Jan 2011 11:38:43 +0000 (11:38 +0000)
inc/extranet/Controlleur/class.extranet.core.php
inc/extranet/DAO/class.extranet.dao.client.php
inc/extranet/DAO/class.extranet.dao.entreprise.php
inc/extranet/DAO/class.extranet.dao.utilisateur.php
inc/ws/Controlleur/_common.php
inc/ws/Controlleur/class.ws.users.tree.php [new file with mode: 0644]

index 7eb31a97980dceda915185c011a25f9be9604789..bceae880810080b0c7379d1efa092a71c999dbda 100644 (file)
@@ -380,6 +380,16 @@ class extranetCore extends cubeCore {
                // Clés\r
                $db->book_short_url->index('index_book_short_url_long_url', 'BTREE', 'long_url');\r
                $db->book_short_url->index('index_book_short_url_book_id', 'BTREE', 'book_id');\r
+               // .\r
+               // Table des droits\r
+               $db->ws_users_tree->utilisateur_id('integer', 0, false);\r
+               $db->ws_users_tree->facturable_id('integer', 0, false);\r
+               $db->ws_users_tree->administrateur_id('integer', 0, false);\r
+               // .\r
+               // Table des droits\r
+               $db->ws_rights->utilisateur_id('integer', 0, false);\r
+               $db->ws_rights->rights_on('integer', 0, false);\r
+\r
                try {\r
                        $dbi = new CubeDbStruct($this->con);\r
                        $dbi->synchronize($db);\r
@@ -482,6 +492,12 @@ class extranetCore extends cubeCore {
                $dao = new extranetDAOUtilisateur($this->con);\r
                $dao->sauvePreferences($this->user);\r
        }\r
+\r
+       public function refreshWSUsersTree()\r
+       {\r
+               $t = new wsUsersTree($this->con);\r
+               $t->refreshWSUsersTree();\r
+       }\r
 }\r
 \r
 ?>
\ No newline at end of file
index 1a229c12ffcfaf070df83bf6016c91861dfb7073..99f7bf1e27692ecae840f0e0adb412b3e4864ca9 100644 (file)
@@ -18,9 +18,9 @@ class extranetDAOClient extends extranetDAOUtilisateur {
                return parent::cree($utilisateur);\r
        }\r
 \r
-       public function selectById($client_id)\r
+       public function selectById($client_id, $table = 'clients')\r
        {\r
-               $r = $this->con->select('SELECT * FROM clients WHERE utilisateur_id=' . $this->con->escape($client_id) . ' LIMIT 1');\r
+               $r = $this->con->select('SELECT * FROM ' . $table . ' WHERE utilisateur_id=' . $this->con->escape($client_id) . ' LIMIT 1');\r
                $res = $this->factory($r);\r
 \r
                if (!count($res)) {\r
@@ -35,9 +35,9 @@ class extranetDAOClient extends extranetDAOUtilisateur {
                return $this->singleton($r);\r
        }\r
 \r
-       public function getListe($orderby = null, $sens = null, $limit = null)\r
+       public function getListe($orderby = null, $sens = null, $limit = null, $where = null)\r
        {\r
-               $sql = $this->getQueryList('clients', $orderby, $sens, $limit);\r
+               $sql = $this->getQueryList('clients', $orderby, $sens, $limit, $where);\r
                $r = $this->con->select($sql);\r
                return $this->factory($r);\r
        }\r
index db5a1f9da7480871be6e5a7af7aec7efb441c19a..4c30ffc106d3144e816b90ad89af73aa54200028 100644 (file)
@@ -117,13 +117,16 @@ class extranetDAOEntreprise extends extranetDAO {
                }\r
 \r
                $entreprise = $this->selectById($entreprise_id);\r
+               $core->refreshWSUsersTree();\r
                return $entreprise;\r
        }\r
 \r
        public function supprime($entreprise_id)\r
        {\r
                $this->con->execute('DELETE FROM utilisateurs WHERE entreprise=\'' . $this->con->escape($entreprise_id) . '\'');\r
-               return $this->con->execute('DELETE FROM entreprises WHERE entreprise_id=\'' . $this->con->escape($entreprise_id) . '\'');\r
+               $this->con->execute('DELETE FROM entreprises WHERE entreprise_id=\'' . $this->con->escape($entreprise_id) . '\'');\r
+               $core->refreshWSUsersTree();\r
+               return true;\r
        }\r
 \r
        public function count()\r
index 0b6322c2157374857fdc6fb6e6989b0b972e548b..682d5c30a244939c1f261be12714842a14765a84 100644 (file)
@@ -91,9 +91,9 @@ class extranetDAOUtilisateur extends extranetDAO {
                return $utilisateur;\r
        }\r
 \r
-       public function selectById($utilisateur_id,$table='utilisateurs')\r
+       public function selectById($utilisateur_id, $table = 'utilisateurs')\r
        {\r
-               $r = $this->con->select('SELECT * FROM `'.$table.'` WHERE utilisateur_id=\'' . $this->con->escape($utilisateur_id) . '\' LIMIT 1');\r
+               $r = $this->con->select('SELECT * FROM `' . $table . '` WHERE utilisateur_id=\'' . $this->con->escape($utilisateur_id) . '\' LIMIT 1');\r
                return $this->singleton($r);\r
        }\r
 \r
@@ -191,10 +191,12 @@ class extranetDAOUtilisateur extends extranetDAO {
                        $c->utilisateur_id = $this->getNextId();\r
                        $c->date_creation = time();\r
                        $c->insert();\r
+                       $core->refreshWSUsersTree();\r
                        return $this->selectById($c->utilisateur_id);\r
                } else {\r
                        // Mise à jour d'un client\r
                        $c->update('WHERE utilisateur_id=\'' . $this->con->escape($data['utilisateur_id']) . '\'');\r
+                       $core->refreshWSUsersTree();\r
                        return $this->selectById($data['utilisateur_id']);\r
                }\r
        }\r
@@ -240,7 +242,9 @@ class extranetDAOUtilisateur extends extranetDAO {
 \r
        public function supprime($utilisateur_id)\r
        {\r
-               return $this->con->execute('DELETE FROM utilisateurs WHERE utilisateur_id=\'' . $this->con->escape($utilisateur_id) . '\'');\r
+               $ok = $this->con->execute('DELETE FROM utilisateurs WHERE utilisateur_id=\'' . $this->con->escape($utilisateur_id) . '\'');\r
+               $core->refreshWSUsersTree();\r
+               return $ok;\r
        }\r
 \r
        public function count()\r
index f77f4f978e3d69325bd1581eb82d524cdf8c1da9..b46e6c4da0dd6cc37cd7ca764e6fa104f27f9439 100644 (file)
@@ -7,4 +7,5 @@ $__autoload['wsDroits'] = dirname(__FILE__) . '/class.ws.droits.php';
 $__autoload['wsConversionSession'] = dirname(__FILE__) . '/class.ws.conversion.session.php';\r
 $__autoload['wsStats']=dirname(__FILE__).'/class.ws.stats.php';\r
 $__autoload['wsServices']=dirname(__FILE__).'/class.ws.services.php';\r
+$__autoload['wsUsersTree']=dirname(__FILE__).'/class.ws.users.tree.php';\r
 ?>
\ No newline at end of file
diff --git a/inc/ws/Controlleur/class.ws.users.tree.php b/inc/ws/Controlleur/class.ws.users.tree.php
new file mode 100644 (file)
index 0000000..091497d
--- /dev/null
@@ -0,0 +1,75 @@
+<?php\r
+\r
+class wsUsersTree {\r
+       protected $users;\r
+       protected $admins;\r
+       protected $grades;\r
+       protected $facturables;\r
+       protected $rights;\r
+\r
+       protected $con;\r
+\r
+       public function __construct(&$con)\r
+       {\r
+               $this->con = $con;\r
+       }\r
+\r
+       public function refreshWSUsersTree()\r
+       {\r
+               $this->con->execute('TRUNCATE TABLE ws_users_tree');\r
+               $this->con->execute('TRUNCATE TABLE ws_rights');\r
+\r
+               $this->users = array();\r
+               $this->admins = array();\r
+               $this->grades = array();\r
+\r
+               $this->rights = array();\r
+\r
+               $r = $this->con->select('SELECT * FROM utilisateurs u,entreprises e WHERE u.entreprise=e.entreprise_id AND e.ws_grade>0 ORDER BY ws_grade DESC');\r
+               while ($r->fetch()) {\r
+                       $this->users[$r->utilisateur_id] = $r->ws_admin;\r
+                       $this->grades[$r->utilisateur_id] = $r->ws_grade;\r
+                       if (!isset($this->admins[$r->ws_admin])) {\r
+                               $this->admins[$r->ws_admin] = array();\r
+                       }\r
+                       $this->admins[$r->ws_admin][] = $r->utilisateur_id;\r
+               }\r
+\r
+               $this->facturables = $this->getFacturables();\r
+\r
+               fb($this->facturables);\r
+               return;\r
+\r
+               $c = $this->con->openCursor('ws_users_tree');\r
+               foreach($this->users as $utilisateur_id => $admin) {\r
+                       $this->getFacturableOf($utilisateur_id, $facturable_id, $administrateur_id);\r
+                       $c->utilisateur_id = $utilisateur_id;\r
+                       $c->facturable_id = $facturable_id;\r
+                       $c->administrateur = $administrateur_id;\r
+                       $c->insert();\r
+               }\r
+       }\r
+\r
+       protected function getFacturableOf($utilisateur_id, &$facturable_id, &$administrateur_id)\r
+       {\r
+               if (in_array($utilisateur_id, $this->facturables)) {\r
+                       $facturable_id = $utilisateur_id;\r
+                       $administrateur_id = $this->users[$utilisateur_id];\r
+                       return;\r
+               }\r
+               return $this->getFacturableOf($this->users[$utilisateur_id], $facturable_id, $administrateur_id);\r
+       }\r
+\r
+       protected function getFacturables()\r
+       {\r
+               $res = array();\r
+               foreach($this->users as $utilisateur_id => $admin) {\r
+                       if ($this->grades[$admin] == 5) {\r
+                               $res[] = $utilisateur_id;\r
+                       }\r
+               }\r
+               return $res;\r
+       }\r
+}\r
+\r
+?>
\ No newline at end of file