$utilisateurs = false;\r
$documents = false;\r
$books = false;\r
-$tables = array('books', 'book_pages', 'dashboard', 'devis', 'documents', 'document_pages', 'entreprises', 'factures', 'icones', 'langues', 'projets', 'signatures', 'taches', 'themes', 'timereport', 'utilisateurs');\r
+$tables = array('books', 'book_pages', 'dashboard', 'devis', 'documents', 'document_pages', 'entreprises', 'factures', 'icones', 'langues', 'projets', 'signatures', 'taches', 'themes', 'timereport', 'utilisateurs', 'themes_droits');\r
foreach($tables as $t) {\r
$core->con->execute('ALTER TABLE ' . $t . ' DISABLE KEYS');\r
}\r
\r
+$core->con->execute('TRUNCATE TABLE themes_droits');\r
$core->con->execute('TRUNCATE TABLE themes');\r
$core->con->execute('TRUNCATE TABLE icones');\r
$core->con->execute('TRUNCATE TABLE signatures');\r
}\r
// Import des thèmes\r
$r = $core->con->select('SELECT * FROM ws.theme');\r
-$theme=new wsTheme();\r
+$theme = new wsTheme();\r
while ($r->fetch()) {\r
$c = $core->con->openCursor('themes');\r
$c->theme_id = $r->tid;\r
$c->signature = $r->sigid;\r
$parametres = new wsThemeParametres($theme);\r
$parametres->fromRecord($r);\r
- $parametres->iconSet=$r->iid;\r
+ $parametres->iconSet = $r->iid;\r
$c->parametres = serialize($parametres);\r
$c->insert();\r
}\r
+$r = $core->con->select('SELECT * FROM ws.theme_user');\r
+$c = $core->con->openCursor('themes_droits');\r
+while ($r->fetch()) {\r
+ $c->utilisateur_id = $r->uid;\r
+ $c->theme_id = $r->tid;\r
+ try{\r
+ $c->insert();\r
+ }catch(Exception $e){\r
+ }\r
+}\r
// Importe les langues\r
$trad = array();\r
$r = $core->con->select('SELECT * FROM ws.lang_trad,ws.lang_ord WHERE lang_trad.idlt=lang_ord.idlt');\r
define('SITE_PATH', WEBROOT . '/');\r
}\r
define('CONVERTER_PATH', ROOT . '/tools/');\r
+ define('FTPROOT','/');\r
} else {\r
// Définition des variables dans l'environnement de production\r
define('DB_HOST', 'localhost');\r
$db->entreprises->site('varchar', 256, false);\r
// Clés\r
$db->entreprises->primary('pk_entreprises', 'entreprise_id');\r
- $db->entreprises->index('index_entreprises_nom','BTREE', 'nom');\r
+ $db->entreprises->index('index_entreprises_nom', 'BTREE', 'nom');\r
// .\r
// Table projets\r
$db->projets->projet_id('integer', 0, false);\r
$db->themes->reference('fk_themes_icones', 'icones', 'icones', 'icone_id');\r
$db->themes->reference('fk_themes_signature', 'signature', 'signatures', 'signature_id');\r
$db->themes->reference('fk_themes_proprietaires', 'proprietaire', 'utilisateurs', 'utilisateur_id');\r
+ // Table des droits des themes\r
+ $db->themes_droits->theme_id('integer', 0, false);\r
+ $db->themes_droits->utilisateur_id('integer', 0, false);\r
+ // Clés\r
+ $db->themes_droits->primary('pk_themes_droits', 'theme_id', 'utilisateur_id');\r
+ $db->themes_droits->reference('fk_themes_droits_theme_id', 'theme_id', 'themes', 'theme_id');\r
+ $db->themes_droits->reference('fk_themes_droits_utilisateur_id', 'utilisateur_id', 'utilisateurs', 'utilisateur_id');\r
// Table des langues\r
$db->langues->lang('varchar', 20, false);\r
$db->langues->nom('varchar', 256, false);\r
. 'GROUP BY t.categorie,p.annee_fin');\r
$this->createView('books_vue', 'SELECT b.*,b.proprietaire AS proprietaire_id,c.rs AS proprietaire_nom,c.ws_admin,c.facturable_id,c.facturable '\r
. 'FROM books b, ws_clients c WHERE b.proprietaire=c.utilisateur_id');\r
+ $this->createView('themes_vue', 'SELECT t.*,GROUP_CONCAT(b.book_id ORDER BY b.book_id ASC) AS books, GROUP_CONCAT(DISTINCT d.utilisateur_id ORDER BY d.utilisateur_id ASC) AS utilisateurs '\r
+ . 'FROM themes t '\r
+ . 'LEFT JOIN themes_droits d ON t.theme_id=d.theme_id '\r
+ . 'LEFT JOIN books b ON t.theme_id=b.theme '\r
+ . 'GROUP BY b.theme, d.theme_id');\r
// cubeDb::mysqlConvert($this->con);\r
touch($cache);\r
}\r
$utilisateur->notes = $r->notes;\r
$utilisateur->entreprise = $r->entreprise;\r
$utilisateur->collegues = array();\r
+ $utilisateur->ws_grade = $r->ws_grade;\r
\r
return $utilisateur;\r
}\r
$utilisateur->settings = array();\r
$utilisateur->notes = '';\r
$utilisateur->entreprise = 0;\r
+ $utilisateur->ws_grade=0;\r
return $utilisateur;\r
}\r
\r
{\r
global $core;\r
\r
- $dao = new wsDAOBook($core->con);\r
- $book = $dao->selectById($this->args['book_id']);\r
+ if (isset($this->args['book_id'])) {\r
+ $dao = new wsDAOBook($core->con);\r
+ $book = $dao->selectById($this->args['book_id']);\r
+ }\r
\r
$dao = new wsDAOTheme($core->con);\r
- $themes = $dao->getAllThemes('ORDER BY theme_id DESC');\r
+ $themes = $dao->getAllThemes($core->user, 'ORDER BY theme_id DESC');\r
foreach($themes as $theme) {\r
$t = $this->xml->addChild('theme');\r
$t->addAttribute('id', $theme->theme_id);\r
$t->addAttribute('nom', $theme->nom);\r
- if ($theme->theme_id == $book->theme) {\r
+ if (isset($book) && $theme->theme_id == $book->theme) {\r
$t->addAttribute('selected', '1');\r
}\r
+ if ($core->user->ws_grade == 4) {\r
+ $right = 'w';\r
+ } else if ($core->user->ws_grade == 2) {\r
+ $right = 'r';\r
+ } else if ($core->user->ws_grade == 3) {\r
+ $right = ($core->user->utilisateur_id == $theme->proprietaire)?'w':'r';\r
+ } else {\r
+ $right = '-';\r
+ }\r
+ $t->addAttribute('right', $right);\r
+ $t->addAttribute('books', count($theme->books));\r
+ $t->addAttribute('utilisateurs', count($theme->utilisateurs));\r
}\r
}\r
\r
$theme->nom = $r->nom;\r
$theme->date = $r->date;\r
$theme->proprietaire = $r->proprietaire;\r
+ $theme->utilisateurs = explode(',', $r->utilisateurs);\r
+ $theme->books = explode(',', $r->books);\r
$theme->signature = $r->signature;\r
$theme->icones = $r->icones;\r
$p = unserialize($r->parametres);\r
if (!$p) {\r
$p = new wsThemeParametres($theme);\r
- }else{\r
+ } else {\r
$p->setParent($theme);\r
}\r
$theme->parametres = $p;\r
\r
public function selectById($theme_id)\r
{\r
- $r = $this->con->select('SELECT * FROM themes WHERE theme_id=\'' . $this->con->escape($theme_id) . '\' LIMIT 1');\r
+ $r = $this->con->select('SELECT * FROM themes_vue WHERE theme_id=\'' . $this->con->escape($theme_id) . '\' LIMIT 1');\r
return $this->singleton($r);\r
}\r
\r
public function getThemeOfBook($book_id)\r
{\r
- $r = $this->con->select('SELECT * FROM themes WHERE theme_id IN (SELECT theme FROM books WHERE book_id=\'' . $this->con->escape($book_id) . '\') LIMIT 1');\r
+ $r = $this->con->select('SELECT * FROM themes_vue WHERE FIND_IN_SET(\'' . $this->con->escape($book_id) . '\'books) LIMIT 1');\r
return $this->singleton($r);\r
}\r
\r
- public function getAllThemes($order='')\r
+ public function getAllThemes($user, $order = '')\r
{\r
- $r = $this->con->select('SELECT * FROM themes '.$order);\r
+ fb($user);\r
+ if ($user->ws_grade >= 3) {\r
+ $sql = 'SELECT * FROM themes_vue';\r
+ } else if ($user->ws_grade == 2) {\r
+ $sql = 'SELECT * FROM themes_vue WHERE FIND_IN_SET(utilisateurs,\'' . $core->con->escape($user->utilisateur_id) . '\')';\r
+ } else {\r
+ return array();\r
+ }\r
+\r
+ $r = $this->con->select($sql . ' ' . $order);\r
return $this->factory($r);\r
}\r
}\r
protected $nom;\r
protected $date;\r
protected $parametres;\r
+ protected $utilisateurs;\r
+ protected $books;\r
}\r
\r
?>
\ No newline at end of file