// 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
$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
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
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
}\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
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
$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
\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
$__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
--- /dev/null
+<?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