]> _ Git - cubeextranet.git/commitdiff
wait #3245 @3
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Wed, 4 Dec 2019 14:24:06 +0000 (14:24 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Wed, 4 Dec 2019 14:24:06 +0000 (14:24 +0000)
fluidbook/tools/fwstk/.idea/workspace.xml
inc/commons/class.common.core.php
inc/ws/Controlleur/class.ws.url.php

index fb9eb8309692ab339928aa840da349ae3647900b..d105e9ceff24599288dd4dafe6247a5c532d0d98 100644 (file)
@@ -6,8 +6,9 @@
     </artifacts-to-build>
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="f146bc67-2578-4de3-9db2-94d2d43e9e83" name="Default" comment="wip #3135" />
-    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <list default="true" id="f146bc67-2578-4de3-9db2-94d2d43e9e83" name="Default" comment="wip #3135">
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+    </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
     <ConfirmationsSetting value="1" id="Add" />
     <ConfirmationsSetting value="2" id="Remove" />
   </component>
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showExcludedFiles" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
   <component name="PropertiesComponent">
     <property name="AnalyzeApkAction.lastApkPath" value="$PROJECT_DIR$/out/artifacts/fwstk_jar" />
     <property name="WebServerToolWindowFactoryState" value="true" />
       <recent name="H:\Works\cubeExtranet\fluidbook\tools\fwstk" />
     </key>
   </component>
-  <component name="RunDashboard">
-    <option name="ruleStates">
-      <list>
-        <RuleState>
-          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
-        </RuleState>
-        <RuleState>
-          <option name="name" value="StatusDashboardGroupingRule" />
-        </RuleState>
-      </list>
-    </option>
-  </component>
   <component name="RunManager" selected="Application.extract texts">
+    <configuration default="true" type="Applet">
+      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
     <configuration default="true" type="FlashRunConfigurationType" factoryName="Flash App">
       <option name="BCName" value="" />
       <option name="IOSSimulatorSdkPath" value="" />
       <option name="_new_targetType" value="&quot;PATH&quot;" />
       <method v="2" />
     </configuration>
-    <configuration default="true" type="AndroidRunConfigurationType">
+    <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android App">
       <option name="DEPLOY" value="true" />
       <option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
       <option name="DEPLOY_AS_INSTANT" value="false" />
         <option name="Android.Gradle.BeforeRunTask" enabled="true" />
       </method>
     </configuration>
-    <configuration default="true" type="AndroidTestRunConfigurationType">
+    <configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Instrumented Tests">
       <option name="TESTING_TYPE" value="0" />
       <option name="INSTRUMENTATION_RUNNER_CLASS" value="" />
       <option name="METHOD_NAME" value="" />
         <option name="Android.Gradle.BeforeRunTask" enabled="true" />
       </method>
     </configuration>
-    <configuration default="true" type="Applet">
-      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
     <configuration name="extract layout" type="Application" factoryName="Application">
       <option name="MAIN_CLASS_NAME" value="com.fluidbook.fwstk.Main" />
       <module name="fwstk" />
       <setting name="vmparams" value="" />
       <setting name="cmdLine" value="run-app" />
       <setting name="passParentEnv" value="true" />
+      <setting name="grailsApplicationRoot" value="" />
       <setting name="launchBrowser" value="true" />
       <setting name="launchBrowserUrl" value="" />
       <setting name="depsClasspath" value="false" />
       <item itemvalue="Application.extract layout" />
     </list>
   </component>
+  <component name="ServiceViewManager">
+    <option name="viewStates">
+      <list>
+        <serviceView>
+          <treeState>
+            <expand />
+            <select />
+          </treeState>
+        </serviceView>
+      </list>
+    </option>
+  </component>
   <component name="SvnConfiguration" cleanupOnStartRun="true">
     <configuration>C:\Users\Vincent\AppData\Roaming\Subversion</configuration>
     <supportedVersion>125</supportedVersion>
       <workItem from="1542710796466" duration="980000" />
       <workItem from="1542711819188" duration="1661000" />
       <workItem from="1570806151720" duration="850000" />
+      <workItem from="1575379759151" duration="1198000" />
     </task>
     <task id="LOCAL-00001" summary="wip #1111 @0.5">
       <created>1487172253077</created>
index 5ccaf0cabb6fee6773765579d788b6b70dfe8cea..a6b1e3e94757b4271ec52ba25273b106086125f7 100644 (file)
 class commonCore extends cubeCore\r
 {\r
 \r
-       public $grades;\r
-       public $user;\r
-       public $agences;\r
-       public $categories;\r
-       public $ws_grades;\r
-       public $demandes_type;\r
-\r
-       public function __construct()\r
-       {\r
-               parent::__construct();\r
-               $this->dbSync();\r
-\r
-               cubeLang::set();\r
-               try {\r
-                       $this->authentifie();\r
-               } catch (Exception $e) {\r
-\r
-               }\r
-\r
-               if ($this->user) {\r
-                       // Défini la langue de l'utilisateur en fonction du contenu de user\r
-                       cubeLang::set($this->user->lang);\r
-               } else {\r
-                       // Sinon défini la langue par défaut (basée sur les entêtes envoyées\r
-                       // par le navigateur)\r
-                       cubeLang::set();\r
-               }\r
-\r
-               $this->grades = array(0 => __('Client'), "0.5" => __('Junior'), 1 => __('Equipier'), 2 => __('Gérant'), 3 => __('Comptable'));\r
-               $this->categories = array(0 => __('Non défini'), 1 => __('Gestion de projet'),\r
-                       2 => __('Design Web'), 3 => __('Design Industriel'), 4 => __('Print'),\r
-                       5 => __('Newsletter'), 6 => __('Développement PHP'), 7 => __('Développement Flash'),\r
-                       8 => __('Fluidbook'), 9 => __('Formation'), 10 => __('Administratif'), 11 => __('Divers'),\r
-                       12 => __('Intégration HTML'), 13 => __('Motion design'), 14 => __('Design graphique'),\r
-                       15 => __('Bandeaux de pub'), 16 => __('Applications mobiles'), 17 => __('Prise de vue photo/vidéo'), 18 => __('Hébergement'));\r
-               $this->projets_status = array(0 => __('En cours'), 1 => __('Terminé'));\r
-               $this->devis_status = array(0 => __('Brouillon'), 1 => __('Envoyé'),\r
-                       2 => __('Validé'), 3 => __('Refusé'));\r
-               $this->demandes_status = array(0 => __('Non traitée'), 1 => __('Confiée à un revendeur'), 2 => __('Traitée'));\r
-               $this->factures_status = array(0 => __('Brouillon'), 1 => __('Attente'),\r
-                       2 => __('Payée'), 3 => __('Annulée'), 4 => __('Avoir'), 5 => __('Impayée'));\r
-               $this->books_status = array(-1 => __('Brouillon'), 0 => __('Prêt'), 1 => __('Téléchargé'), 2 => __('Facturé'));\r
-               $this->agences = array('Paris', 'Montpellier');\r
-               $this->client_type = array(0 => __('Non défini'), 1 => __('TPE'), 2 => __('Startup'), 3 => __('PME'), 4 => __('Agence'), 5 => __('Grande entreprise'));\r
-               $this->demandes_type = array(0 => __('Non défini'),\r
-                       1 => __('Catalogue'),\r
-                       2 => __('Magazine / Presse'),\r
-                       3 => __('Rapport annuel'),\r
-                       4 => __('Plaquette de société'),\r
-                       5 => __('Brochure touristique'),\r
-                       6 => __("Manuel d'utilisation"),\r
-                       7 => __('Livre'));\r
-               $this->ws_grades = array(0 => __("Pas d'accès"), 1 => __('Client'), 2 => __('Client (droits de création)'), 3 => __('Revendeur'), 4 => __('Revendeur (droits de création)'), 5 => __('Administrateur'));\r
-       }\r
-\r
-       /**\r
-        * extranetCore::authentifie()\r
-        *\r
-        * Gère l'authentification à l'application\r
-        * Si des données proviennent de la validation d'un formulaire de login,\r
-        * elles sont copiées en tant que variable de session\r
-        * L'utilisateur courant est crée en fonction du contenu de ces variables\r
-        *\r
-        * @return\r
-        */\r
-       protected function authentifie()\r
-       {\r
-               // On regarde si user_email et user_password ont été postées\r
-               // Si c'est le cas, on les copie dans la session\r
-               $_SESSION['errorLogin'] = false;\r
-               if (isset($_REQUEST['user_email'])) {\r
-                       $_SESSION['user_email'] = $_REQUEST['user_email'];\r
-               }\r
-\r
-               if (isset($_REQUEST['user_password'])) {\r
-                       $_SESSION['user_password'] = $_REQUEST['user_password'];\r
-               }\r
-               // Maintenant on vérifie si ces variables sont présentes dans la session\r
-               if (!isset($_SESSION['user_email']) || !isset($_SESSION['user_password']) || empty($_SESSION['user_email']) || empty($_SESSION['user_password'])) {\r
-                       // Ce n'est pas le cas, on place la variable connected à false\r
-                       // Et on s'arrête là\r
-                       $this->user = null;\r
-                       return;\r
-               }\r
-\r
-               // Les variables sont présentes on vérifie la validité des informations\r
-               // Dans la base de données\r
-               // Utilisateur connecté à l'interface\r
-               $dao = new commonDAOUtilisateur($this->con);\r
-               $this->user = $dao->selectByLoginPassword($_SESSION['user_email'], $_SESSION['user_password']);\r
-               if ($this->user == false) {\r
-                       $_SESSION['errorLogin'] = true;\r
-                       return;\r
-               }\r
-               if ($this->user->grade == 0) {\r
-                       $daoClient = new commonDAOClient($this->con);\r
-                       $this->user->collegues = $daoClient->getColleguesList($this->user->utilisateur_id);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * commonCore::dbSync()\r
-        *\r
-        * @return\r
-        */\r
-       public function dbSync()\r
-       {\r
-               $cache = ROOT . '/cache/DB_SYNC';\r
-               $todo = ROOT . '/cache/DB_TODO';\r
-               if (!file_exists($cache)) {\r
-                       touch($cache);\r
-                       $dosync = true;\r
-               } else {\r
-                       $dosync = filemtime(__FILE__) >= filemtime($cache) || (file_exists($todo) && filemtime($todo) >= filemtime($cache));\r
-               }\r
-\r
-               if (!$dosync) {\r
-                       return;\r
-               }\r
-\r
-               $this->views->dropAllViews();\r
-               $db = new CubeDbStruct($this->con);\r
-               // Table utilisateurs\r
-               $db->utilisateurs->utilisateur_id('integer', 0, false);\r
-               $db->utilisateurs->login('varchar', 128, false);\r
-               $db->utilisateurs->email('varchar', 128, false);\r
-               $db->utilisateurs->password('varchar', 40, false);\r
-               $db->utilisateurs->nom('varchar', 64, false);\r
-               $db->utilisateurs->prenom('varchar', 64, false);\r
-               $db->utilisateurs->agence('varchar', 64, true);\r
-               $db->utilisateurs->entreprise('integer', 0, false);\r
-               $db->utilisateurs->grade('float', 0, false);\r
-               $db->utilisateurs->adresse('varchar', 512, false);\r
-               $db->utilisateurs->code_postal('varchar', 20, false);\r
-               $db->utilisateurs->ville('varchar', 64, false);\r
-               $db->utilisateurs->pays('varchar', 2, false);\r
-               $db->utilisateurs->telephone('varchar', 30, false);\r
-               $db->utilisateurs->mobile('varchar', 30, false);\r
-               $db->utilisateurs->fax('varchar', 30, false);\r
-               $db->utilisateurs->lang('varchar', 2, false, '\'fr\'');\r
-               $db->utilisateurs->date_creation('integer', 0, false);\r
-               $db->utilisateurs->settings('text', 0, false);\r
-               $db->utilisateurs->notes('text', 0, false);\r
-               $db->utilisateurs->ws_id('integer', 0, true);\r
-               $db->utilisateurs->ws_password('varchar', 40, false);\r
-               $db->utilisateurs->ws_settings('text', 0, false);\r
-               $db->utilisateurs->ws_rights('text', 0, false);\r
-               $db->utilisateurs->ws_domains('text', 0, false);\r
-               $db->utilisateurs->enabled('integer', 0, false, '1');\r
-               // Clés\r
-               $db->utilisateurs->primary('pk_utilisateurs', 'utilisateur_id');\r
-               $db->utilisateurs->unique('unique_utilisateurs_email', 'email');\r
-               $db->utilisateurs->index('index_utilisateurs_nom', 'BTREE', 'nom');\r
-               $db->utilisateurs->index('index_utilisateurs_prenom', 'BTREE', 'prenom');\r
-               $db->utilisateurs->index('index_utilisateurs_grade', 'BTREE', 'grade');\r
-               $db->utilisateurs->index('index_utilisateurs_login', 'BTREE', 'login');\r
-               $db->utilisateurs->index('index_utilisateurs_entreprise', 'BTREE', 'entreprise');\r
-               // Table entreprises\r
-               $db->entreprises->entreprise_id('integer', 0, false);\r
-               $db->entreprises->nom('varchar', 64, false);\r
-               $db->entreprises->adresse('varchar', 512, false);\r
-               $db->entreprises->code_postal('varchar', 20, false);\r
-               $db->entreprises->ville('varchar', 64, false);\r
-               $db->entreprises->pays('varchar', 2, false);\r
-               $db->entreprises->adresse_facturation('varchar', 512, false);\r
-               $db->entreprises->tva_intra('varchar', 64, false);\r
-               $db->entreprises->ws_grade('integer', 0, false);\r
-               $db->entreprises->ws_admin('integer', 0, false);\r
-               $db->entreprises->date_creation('integer', 0, false);\r
-               $db->entreprises->notes('text', 0, false);\r
-               $db->entreprises->site('varchar', 256, false);\r
-               $db->entreprises->type('integer', 0, false);\r
-               $db->entreprises->ws_signatures('text', 0, 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_ws_grade', 'BTREE', 'ws_grade');\r
-               // .\r
-               // Table projets\r
-               $db->projets->projet_id('integer', 0, false);\r
-               $db->projets->nom('varchar', 256, false);\r
-               $db->projets->date_creation('integer', 0, false);\r
-               $db->projets->date_debut('integer', 0, false);\r
-               $db->projets->date_fin('integer', 0, false);\r
-               $db->projets->deadline('integer', 0, false);\r
-               $db->projets->devis('integer', 0, false);\r
-               $db->projets->client('integer', 0, false);\r
-               $db->projets->chef('integer', 0, false);\r
-               $db->projets->status('integer', 1, false);\r
-               // Clés\r
-               $db->projets->primary('pk_projets', 'projet_id');\r
-               $db->projets->index('index_projets_status', 'BTREE', 'status');\r
-               $db->projets->index('index_projets_nom', 'BTREE', 'nom');\r
-               $db->projets->index('index_projets_client', 'BTREE', 'client');\r
-               $db->projets->index('index_projets_chef', 'BTREE', 'chef');\r
-               $db->projets->index('index_projets_debut', 'BTREE', 'date_debut');\r
-               $db->projets->index('index_projets_fin', 'BTREE', 'date_fin');\r
-               // .\r
-               // Table taches\r
-               $db->taches->tache_id('integer', 0, false);\r
-               $db->taches->nom('varchar', 256, false);\r
-               $db->taches->categorie('integer', 0, false);\r
-               $db->taches->type('integer', 1, false);\r
-               $db->taches->budget('float', 0, false);\r
-               $db->taches->taux_journalier('float', 0, false);\r
-               $db->taches->projet('integer', 0, false);\r
-               // Clés\r
-               $db->taches->primary('pk_taches', 'tache_id');\r
-               $db->taches->index('index_taches_nom', 'BTREE', 'nom');\r
-               $db->taches->index('index_taches_categorie', 'BTREE', 'categorie');\r
-               $db->taches->index('index_taches_projet', 'BTREE', 'projet');\r
-               // .\r
-               // Table timereport\r
-               $db->timereport->utilisateur_id('integer', 0, false);\r
-               $db->timereport->tache_id('integer', 0, false);\r
-               $db->timereport->date('integer', 0, false);\r
-               $db->timereport->heures('integer', 2, false);\r
-               // Clés\r
-               $db->timereport->primary('pk_timereport', 'utilisateur_id', 'tache_id', 'date');\r
-               $db->timereport->index('index_timereport_date', 'BTREE', 'date');\r
-               $db->timereport->index('index_timereport_tache_id', 'BTREE', 'tache_id');\r
-               // .\r
-               // Table devis\r
-               $db->devis->devis_id('integer', 0, false);\r
-               $db->devis->nom('varchar', 256, false);\r
-               $db->devis->client('integer', 0, false);\r
-               $db->devis->createur('integer', 0, false);\r
-               $db->devis->lignes('text', 0, false);\r
-               $db->devis->status('integer', 1, false);\r
-               $db->devis->total_ht('float', 0, false);\r
-               $db->devis->date_creation('integer', 0, false);\r
-               $db->devis->email('text', 0, false);\r
-               $db->devis->adresse('text', 0, false);\r
-               // Clés\r
-               $db->devis->primary('pk_devis', 'devis_id');\r
-               $db->devis->index('index_devis_status', 'BTREE', 'status');\r
-               $db->devis->index('index_devis_nom', 'BTREE', 'nom');\r
-               $db->devis->index('index_devis_client', 'BTREE', 'client');\r
-               $db->devis->index('index_devis_createur', 'BTREE', 'createur');\r
-               // .\r
-               // Table factures\r
-               $db->factures->facture_id('varchar', 8, false);\r
-               $db->factures->nom('varchar', 256, false);\r
-               $db->factures->projet('integer', 0, false);\r
-               $db->factures->createur('integer', 0, false);\r
-               $db->factures->lignes('text', 0, false);\r
-               $db->factures->status('integer', 1, false);\r
-               $db->factures->total_ht('float', 0, false);\r
-               $db->factures->date_creation('integer', 0, false);\r
-               $db->factures->texte_complementaire('text', 0, false);\r
-               $db->factures->adresse('text', 0, false);\r
-               $db->factures->informations_paiement('text', 0, false);\r
-               $db->factures->date_paiement('integer', 0, false);\r
-               $db->factures->avoir('varchar', 8, false);\r
-               // Clés\r
-               $db->factures->primary('pk_factures', 'facture_id');\r
-               $db->factures->index('index_factures_status', 'BTREE', 'status');\r
-               $db->factures->index('index_factures_nom', 'BTREE', 'nom');\r
-               $db->factures->index('index_factures_projet', 'BTREE', 'projet');\r
-               $db->factures->index('index_factures_createur', 'BTREE', 'createur');\r
-               // .\r
-               // Table dashboard\r
-               $db->dashboard->dashboard_id('integer', 0, false);\r
-               $db->dashboard->nom('varchar', 128, false);\r
-               $db->dashboard->settings('text', 0, false);\r
-               $db->dashboard->rubrique('varchar', 32, false);\r
-               $db->dashboard->equipier('integer', 0, false);\r
-               $db->dashboard->state('integer', 1, false, '1');\r
-               $db->dashboard->sort('integer', 0, false);\r
-               $db->dashboard->site('varchar', 32, false, '\'extranet\'');\r
-               // Clés\r
-               $db->dashboard->primary('pk_dashboard', 'dashboard_id');\r
-               $db->dashboard->index('index_dashboard_equipier', 'BTREE', 'equipier');\r
-               $db->dashboard->index('index_dashboard_sort', 'BTREE', 'sort');\r
-               $db->dashboard->index('index_dashboard_site', 'BTREE', 'site');\r
-               // .\r
-               // Table Signatures\r
-               $db->signatures->signature_id('integer', 0, false);\r
-               $db->signatures->nom('varchar', 256, false);\r
-               $db->signatures->fbcredit('varchar', 64, false);\r
-               $db->signatures->fblink('varchar', 64, false);\r
-               $db->signatures->partnercredit('varchar', 64, false);\r
-               $db->signatures->partnerlink('varchar', 64, false);\r
-               $db->signatures->active('integer', 0, false, '1');\r
-               // Clés\r
-               $db->signatures->primary('pk_signatures', 'signature_id');\r
-               // Table jeux d'icones\r
-               $db->icones->icone_id('integer', 0, false);\r
-               $db->icones->nom('varchar', 256, false);\r
-               $db->icones->proprietaire('integer', 0, false);\r
-               $db->icones->couleur('varchar', 6, false);\r
-               $db->icones->date('integer', 0, false);\r
-               // Clés\r
-               $db->icones->primary('pk_icones', 'icone_id');\r
-               $db->icones->index('index_icones_nom', 'BTREE', 'nom');\r
-               $db->icones->index('index_icones_date', 'BTREE', 'date');\r
-               $db->icones->index('index_icones_proprietaire', 'BTREE', 'proprietaire');\r
-               // Table thèmes\r
-               $db->themes->theme_id('integer', 0, false);\r
-               $db->themes->icones('integer', 0, false);\r
-               $db->themes->proprietaire('integer', 0, false);\r
-               $db->themes->nom('varchar', 256, false);\r
-               $db->themes->date('integer', 0, false);\r
-               $db->themes->parametres('text', 0, false);\r
-               // Clés\r
-               $db->themes->primary('pk_themes', 'theme_id');\r
-               $db->themes->index('index_themes_nom', 'BTREE', 'nom');\r
-               $db->themes->index('index_themes_date', 'BTREE', 'date');\r
-               $db->themes->index('index_themes_proprietaire', 'BTREE', 'proprietaire');\r
-               // Table des langues\r
-               $db->langues->lang_id('varchar', 20, false);\r
-               $db->langues->font('varchar', 64, false);\r
-               $db->langues->charset('varchar', 64, false);\r
-               $db->langues->traductions('text', 0, false);\r
-               $db->langues->nsis('varchar', 64, false);\r
-               // Clés\r
-               $db->langues->primary('pk_langues', 'lang_id');\r
-               // .\r
-               // Table documents\r
-               $db->documents->document_id('integer', 0, false);\r
-               $db->documents->file('varchar', 256, false);\r
-               $db->documents->proprietaire('integer', 0, false);\r
-               $db->documents->pages('integer', 0, false);\r
-               $db->documents->trim('text', 0, false);\r
-               $db->documents->date('integer', 0, false);\r
-               $db->documents->localInfos('text', 0, false);\r
-               $db->documents->generalInfos('text', 0, false);\r
-               $db->documents->conversionInfos('text', 0, false);\r
-               $db->documents->numberSections('text', 0, false);\r
-               $db->documents->localHash('varchar', 64, false);\r
-               $db->documents->version('integer', 0, false, '1');\r
-               // Clés\r
-               $db->documents->primary('pk_documents', 'document_id');\r
-               $db->documents->index('index_documents_file', 'BTREE', 'file');\r
-               $db->documents->index('index_documents_date', 'BTREE', 'date');\r
-               $db->documents->index('index_documents_localHash', 'BTREE', 'localHash');\r
-               $db->documents->index('index_documents_proprietaire', 'BTREE', 'proprietaire');\r
-               $db->documents->index('index_documents_version', 'BTREE', 'version');\r
-               // .\r
-               // Table pages des documents\r
-               $db->document_links->document_id('integer', 0, false);\r
-               $db->document_links->links('text', 0, false);\r
-               $db->document_links->rulers('text', 0, false);\r
-               // Clés\r
-               $db->document_links->primary('pk_document_links', 'document_id');\r
-\r
-               // .\r
-               // Tables versions des liens\r
-               $db->document_links_versions->document_id('integer', 0, false);\r
-               $db->document_links_versions->links('text', 0, false);\r
-               $db->document_links_versions->rulers('text', 0, false);\r
-               $db->document_links_versions->comments('varchar', 128, false);\r
-               $db->document_links_versions->user('integer', 0, false);\r
-               $db->document_links_versions->update('integer', 0, false);\r
-               // .\r
-               $db->document_links_versions->primary('pk_document_links_version', 'document_id', 'update');\r
-               $db->document_links_versions->index('idx_document_links_version_update', 'BTREE', 'update');\r
-\r
-               $db->special_links_versions->book_id('integer', 0, false);\r
-               $db->special_links_versions->links('text', 0, false);\r
-               $db->special_links_versions->rulers('text', 0, false);\r
-               $db->special_links_versions->update('integer', 0, false);\r
-\r
-               $db->special_links_versions->primary('pk_special_links_versionsn', 'book_id', 'update');\r
-               $db->special_links_versions->index('idx_special_links_versions_update', 'BTREE', 'update');\r
-\r
-               // Table Books\r
-               $db->books->book_id('integer', 0, false);\r
-               $db->books->cid('varchar', 8, false);\r
-               $db->books->nom('varchar', 256, false);\r
-               $db->books->lang('varchar', 20, false);\r
-               $db->books->theme('integer', 0, false);\r
-               $db->books->proprietaire('integer', 0, false);\r
-               $db->books->tache('integer', 0, false);\r
-               $db->books->hash('varchar', 32, false);\r
-               $db->books->compteur_visites('integer', 0, false, 20);\r
-               $db->books->status('integer', 0, false);\r
-               $db->books->date_status('integer', 0, false);\r
-               $db->books->parametres('text', 0, false);\r
-               $db->books->chapters('text', 0, false);\r
-               $db->books->extras('text', 0, false);\r
-               $db->books->traductions('text', 0, false);\r
-               $db->books->specialLinks('text', 0, false);\r
-               $db->books->specialRulers('text', 0, false);\r
-               $db->books->date('integer', 0, false);\r
-               $db->books->numerotation('text', 0, false);\r
-               $db->books->changedate('integer', 0, false);\r
-               $db->books->compiledate('integer', 0, false);\r
-               $db->books->compile1date('integer', 0, false);\r
-               $db->books->compilehtml5date('integer', 0, false);\r
-               $db->books->version('integer', 0, false, 2);\r
-               $db->books->composition_update('integer', 0, false);\r
-               $db->books->dir_references('varchar', 256, false);\r
-               $db->books->dir_hosting('varchar', 256, false);\r
-               $db->books->dir_macbook_phonegap_ios('varchar', 256, false);\r
-               $db->books->dir_phonegap_android('varchar', 256, false);\r
-               $db->books->dir_external('varchar', 256, false);\r
-               $db->books->lucene_time('integer', 0, false);\r
-               $db->books->demo_counter('integer', 0, false);\r
-               $db->books->exportdatas('text', 0, false);\r
-               // Clés\r
-               $db->books->primary('pk_books', 'book_id');\r
-               $db->books->index('index_books_nom', 'BTREE', 'nom');\r
-               $db->books->index('index_books_proprietaire', 'BTREE', 'proprietaire');\r
-               $db->books->index('index_books_tache', 'BTREE', 'tache');\r
-               $db->books->index('index_books_status', 'BTREE', 'status');\r
-               $db->books->index('index_books_theme', 'BTREE', 'theme');\r
-               $db->books->index('index_books_demo_counter', 'BTREE', 'demo_counter');\r
-               $db->books->index('index_books_lang', 'BTREE', 'lang');\r
-               $db->books->index('index_books_cid', 'BTREE', 'cid');\r
-               // Book referers\r
-               $db->books_referer->book_id('integer', 0, false);\r
-               $db->books_referer->referer('varchar', 256, false);\r
-               $db->books_referer->count('integer', 0, false);\r
-               $db->books_referer->primary('pk_books_referer', 'book_id', 'referer');\r
-               // .\r
-               // Table pages des publications\r
-               $db->book_pages->book_id('integer', 0, false);\r
-               $db->book_pages->book_page('integer', 0, false);\r
-               $db->book_pages->document_id('integer', 0, false);\r
-               $db->book_pages->document_page('integer', 0, false);\r
-               // Clés\r
-               $db->book_pages->primary('pk_book_pages', 'book_id', 'book_page');\r
-               // .\r
-               // Table versions de composition\r
-               $db->book_pages_versions->book_id('integer', 0, false);\r
-               $db->book_pages_versions->update('integer', 0, false);\r
-               $db->book_pages_versions->composition('text', 0, false);\r
-               // Clés\r
-               $db->book_pages_versions->primary('pk_book_pages_versions', 'book_id', 'update');\r
-               $db->book_pages_versions->index('idx_book_pages_versions', 'BTREE', 'update');\r
-               // Table de cache des urls courtes\r
-               $db->book_short_url->long_url('varchar', 255, false);\r
-               $db->book_short_url->short_url('varchar', 64, false);\r
-               $db->book_short_url->book_id('integer', 0, false);\r
-               // 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
-               // Books\r
-               $db->books_chapters_versions->book_id('integer', 0, false);\r
-               $db->books_chapters_versions->time('integer', 0, false);\r
-               $db->books_chapters_versions->chapters('text', 0, false);\r
-               // Table des collections de fluidbooks\r
-               $db->book_collection->collection_id('integer', 0, false);\r
-               $db->book_collection->nom('varchar', 64, false);\r
-               $db->book_collection->datas('text', 0, false);\r
-               $db->book_collection->theme('text', 0, false);\r
-               $db->book_collection->contents('text', 0, false);\r
-               $db->book_collection->settings('text', 0, false);\r
-               $db->book_collection->proprietaire('integer', 0, false);\r
-               // Clés\r
-               $db->book_collection->primary('pk_book_collection', 'collection_id');\r
-               // Table des compilations de collection\r
-               $db->book_collection_compile->collection_id('integer', 0, false);\r
-               $db->book_collection_compile->compile_date('integer', 0, false);\r
-               $db->book_collection_compile->online_ios('varchar', 10, false);\r
-               $db->book_collection_compile->online_android('varchar', 10, false);\r
-               $db->book_collection_compile->primary('book_collection_compile', 'collection_id', 'compile_date');\r
-\r
-               // Table des notification push\r
-               $db->book_collection_push->collection_id('integer', 0, false);\r
-               $db->book_collection_push->platform('varchar', 16, false);\r
-               $db->book_collection_push->token('varchar', 128, false);\r
-               $db->book_collection_push->locale('varchar', 8, false);\r
-               $db->book_collection_push->env('varchar', 32, false);\r
-               $db->book_collection_push->datas('text', 0, false);\r
-               $db->book_collection_push->last_visit('integer', 0, false);\r
-               $db->book_collection_push->primary('pk_book_collection_push', 'collection_id', 'token');\r
-               $db->book_collection_push->index('idx_book_collection_push_platform', 'BTREE', 'platform');\r
-               $db->book_collection_push->index('idx_book_collection_push_token', 'BTREE', 'token');\r
-\r
-               // Table des droits\r
-               $db->ws_users_tree->utilisateur_id('integer', 0, false);\r
-               $db->ws_users_tree->entreprise_id('integer', 0, false);\r
-               $db->ws_users_tree->facturable_id('integer', 0, false);\r
-               $db->ws_users_tree->facturable_entreprise_id('integer', 0, false);\r
-               $db->ws_users_tree->administrateur_id('integer', 0, false);\r
-               // Clé\r
-               $db->ws_users_tree->primary('pk_utilisateur_id', 'utilisateur_id');\r
-               // Table des entreprises\r
-               $db->ws_entreprises_tree->entreprise_id('integer', 0, false);\r
-               $db->ws_entreprises_tree->facturable_entreprise_id('integer', 0, false);\r
-               $db->ws_entreprises_tree->administrateur_id('integer', 0, false);\r
-               // Clés\r
-               $db->ws_entreprises_tree->primary('pk_entreprise_id', 'entreprise_id');\r
-               // Table des demandes de devis\r
-               $db->demandes->demande_id('integer', 0, false);\r
-               $db->demandes->type('integer', 0, false);\r
-               $db->demandes->pages('varchar', 128, false);\r
-               $db->demandes->liens('varchar', 128, false);\r
-               $db->demandes->langues('varchar', 128, false);\r
-               $db->demandes->coupon('varchar', 128, false);\r
-               $db->demandes->details('text', 0, false);\r
-               $db->demandes->date('integer', 0, false);\r
-               $db->demandes->status('integer', 0, false);\r
-               $db->demandes->revendeur('integer', 0, false);\r
-               $db->demandes->utilisateur('integer', 0, false);\r
-               $db->demandes->administrateur('integer', 0, false);\r
-               // Clés\r
-               $db->demandes->primary('pk_demandes', 'demande_id');\r
-\r
-               // Table\r
-               $db->tube->url('varchar', 128, false);\r
-\r
-               // Table des sessions\r
-               $db->sessions->session_id('varchar', 32, false);\r
-               $db->sessions->data('text', 0, false);\r
-               $db->sessions->time('integer', 0, false);\r
-               $db->sessions->primary('pk_sessions', 'session_id');\r
-               $db->sessions->index('idx_sessions_time', 'BTREE', 'time');\r
-\r
-               // Table Grdf\r
-               $db->grdf->datas('text', 0, false);\r
-\r
-               // Table bulle\r
-               $db->bulle->email('varchar', 128, false);\r
-               $db->bulle->date('integer', 0, false);\r
-               $db->bulle->prenom('varchar', 128, false);\r
-               $db->bulle->nom('varchar', 128, false);\r
-               $db->bulle->catalogue('varchar', 128, false);\r
-\r
-               // WS Ref\r
-\r
-               $db->wsref->type('varchar', 32, false);\r
-               $db->wsref->ref('varchar', 32, false);\r
-               $db->wsref->url('varchar', 512, false);\r
-               $db->wsref->primary('pk_wsref', 'type', 'ref');\r
-\r
-               // Table google search api\r
-               $db->google_search_api->request('varchar', 256, false);\r
-               $db->google_search_api->response('text', 0, false);\r
-               $db->google_search_api->date('integer', 0, false);\r
-               $db->google_search_api->primary('pk_google_search_api', 'request');\r
-\r
-               // Table Bourbon\r
-               $db->bourbon_suggestions->from('varchar', 256, false);\r
-               $db->bourbon_suggestions->date('integer', 0, false);\r
-               $db->bourbon_suggestions->type('varchar', 256, false);\r
-               $db->bourbon_suggestions->suggestion('text', 0, false);\r
-               $db->bourbon_suggestions->page('varchar', 256, false);\r
-\r
-               // Table gpu\r
-               $db->gpu->gpu('varchar', 256, false);\r
-               $db->gpu->rgpu('varchar', 256, false);\r
-               $db->gpu->page('text', 0, false);\r
-               $db->gpu->version('integer', 0, false);\r
-               $db->gpu->date('integer', 0, false);\r
-               $db->gpu->score('integer', 0, false);\r
-               $db->gpu->url('varchar', 512, false);\r
-               $db->gpu->benchmark('text', 0, false);\r
-               $db->gpu->primary('pk_gpu', 'gpu', 'rgpu', 'version');\r
-\r
-               // gpu log\r
-               $db->gpu_log->gpu('varchar', 256, false);\r
-               $db->gpu_log->rgpu('varchar', 256, false);\r
-               $db->gpu_log->date('integer', 0, false);\r
-               $db->gpu_log->primary('pk_gpu_log', 'gpu', 'rgpu', 'date');\r
-\r
-               try {\r
-                       $dbi = new CubeDbStruct($this->con);\r
-                       $dbi->synchronize($db);\r
-               } catch (Exception $e) {\r
-\r
-               }\r
-\r
-               $this->views->createView('equipiers', 'SELECT * FROM utilisateurs WHERE grade>0');\r
-               $this->views->createView('gerants', 'SELECT * FROM utilisateurs WHERE grade=2');\r
-               $this->views->createView('impayes_entreprises', 'SELECT SUM(total_ht) AS impaye, u.entreprise AS entreprise '\r
-                       . 'FROM utilisateurs u LEFT JOIN projets p ON u.utilisateur_id=p.client LEFT JOIN factures f ON f.projet=p.projet_id '\r
-                       . 'WHERE f.status=1 GROUP BY u.entreprise');\r
-               $this->views->createView('entreprises_inter', 'SELECT e.*,'\r
-                       . 'SUM(f.total_ht) AS ca '\r
-                       . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND grade=0 '\r
-                       . 'LEFT JOIN projets p ON p.client=u.utilisateur_id '\r
-                       . 'LEFT JOIN factures f ON f.projet=p.projet_id AND f.status IN(1,2) '\r
-                       . 'GROUP BY e.entreprise_id');\r
-               $this->views->createView('entreprises_vue', 'SELECT e.*,i.impaye AS impaye '\r
-                       . 'FROM entreprises_inter e LEFT JOIN impayes_entreprises i ON e.entreprise_id=i.entreprise');\r
-               $this->views->createView('entreprises_ws', 'SELECT e.*, a.prenom AS administrateur, r.nom AS revendeur,a.utilisateur_id AS ws_super_admin '\r
-                       . 'FROM entreprises e '\r
-                       . 'LEFT JOIN ws_entreprises_tree ri ON ri.entreprise_id=e.entreprise_id '\r
-                       . 'LEFT JOIN utilisateurs ur ON e.ws_admin=ur.utilisateur_id '\r
-                       . 'LEFT JOIN entreprises r ON ur.entreprise=r.entreprise_id '\r
-                       . 'LEFT JOIN utilisateurs a ON ri.administrateur_id=a.utilisateur_id ');\r
-               $this->views->createView('clients_entreprise', 'SELECT u.*,e.nom AS rs, e.adresse_facturation AS adresse_facturation, e.site AS site, e.type AS type '\r
-                       . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND u.grade=0');\r
-               $this->views->createView('utilisateurs_entreprise', 'SELECT u.*,e.nom AS rs, e.adresse_facturation AS adresse_facturation, '\r
-                       . 'e.ws_grade, e.ws_admin, e.ws_signatures AS ws_signatures, e.site AS site '\r
-                       . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id');\r
-               $this->views->createView('clients', 'SELECT u.*,e.nom AS rs, e.adresse_facturation AS adresse_facturation, e.site AS site, e.tva_intra AS tva_intra, i.impaye, '\r
-                       . 'SUM(f.total_ht) AS ca '\r
-                       . 'FROM entreprises e LEFT JOIN impayes_entreprises i ON e.entreprise_id=i.entreprise LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND u.grade=0 LEFT JOIN projets p ON p.client=u.utilisateur_id LEFT JOIN factures f ON f.projet=p.projet_id AND f.status IN(1,2) '\r
-                       . 'GROUP BY u.utilisateur_id', 'TEMPTABLE');\r
-               $this->views->createView('taches_books', 'SELECT tache,GROUP_CONCAT(book_id ORDER BY book_id ASC SEPARATOR ",") AS books FROM books WHERE tache>0 GROUP BY tache');\r
-               $this->views->createView('taches_vue', 'SELECT taches.tache_id,taches.nom,taches.categorie,taches.type,taches.budget,taches.projet,taches.taux_journalier,tb.books, '\r
-                       . '(SUM(timereport.heures)/' . JOURNEE . ') AS jours_consommes, ((SUM(timereport.heures)/' . JOURNEE . ')/(taches.budget/taches.taux_journalier))*100 AS progression,(taches.budget/taches.taux_journalier) AS jours_prevus '\r
-                       . 'FROM taches LEFT JOIN timereport ON taches.tache_id=timereport.tache_id '\r
-                       . 'LEFT JOIN taches_books tb ON tb.tache=taches.tache_id '\r
-                       . 'GROUP BY taches.tache_id');\r
-               $this->views->createView('taches_projet', 'SELECT projet, '\r
-                       . 'SUM(jours_prevus) AS jours_prevus,SUM(budget) AS budget, '\r
-                       . 'SUM(jours_consommes) AS jours_consommes, (SUM(jours_consommes)/SUM(jours_prevus))*100 AS progression '\r
-                       . 'FROM taches_vue GROUP BY projet');\r
-\r
-               $this->views->createView('taches_projet_hf', 'SELECT projet, '\r
-                       . 'SUM(jours_prevus) AS jours_prevus,SUM(budget) AS budget, '\r
-                       . 'SUM(jours_consommes) AS jours_consommes, (SUM(jours_consommes)/SUM(jours_prevus))*100 AS progression '\r
-                       . 'FROM taches_vue WHERE categorie!=8 GROUP BY projet');\r
-\r
-               $this->views->createView('devis_vue', 'SELECT devis.devis_id,devis.nom,devis.lignes,devis.status,devis.total_ht,devis.date_creation,devis.email,clients.utilisateur_id AS client_id,clients.rs AS client,equipiers.prenom AS createur,equipiers.utilisateur_id AS createur_id,devis.adresse '\r
-                       . 'FROM devis,clients,equipiers '\r
-                       . 'WHERE devis.client=clients.utilisateur_id AND devis.createur=equipiers.utilisateur_id');\r
-               $this->views->createView('factures_payees', 'SELECT * FROM factures WHERE status=2');\r
-               $this->views->createView('factures_valides', 'SELECT * FROM factures WHERE status IN(1,2,5)');\r
-               $this->views->createView('projets_inter', 'SELECT projets.projet_id,projets.nom,projets.status,projets.date_debut,projets.date_fin,projets.date_creation,projets.deadline,projets.devis,'\r
-                       . 'YEAR(FROM_UNIXTIME(projets.date_debut)) AS annee_debut,'\r
-                       . 'IF(date_fin=0,YEAR(NOW()),YEAR(FROM_UNIXTIME(projets.date_fin))) AS annee_fin,'\r
-                       . 'clients.rs AS client,equipiers.prenom AS chef,equipiers.utilisateur_id AS chef_id,clients.utilisateur_id AS client_id '\r
-                       . 'FROM projets JOIN clients_entreprise clients ON projets.client=clients.utilisateur_id '\r
-                       . 'JOIN equipiers ON projets.chef=equipiers.utilisateur_id');\r
-               $this->views->createView('projets_facturation', 'SELECT projet,SUM(IF(status IN(1,2,5),total_ht,0)) AS montant_facture, SUM(IF(status=2,total_ht,0)) AS montant_paye FROM factures GROUP BY projet');\r
-               $this->views->createView('projets_vue', 'SELECT p.*,f.montant_facture,f.montant_paye, '\r
-                       . 't.jours_prevus,t.jours_consommes,t.progression,t.budget AS budget, '\r
-                       . 'IF(t.budget>0,f.montant_paye/t.budget,1) AS rapport_paiement, '\r
-                       . 'IF(t.budget>0,f.montant_facture/t.budget,1) AS rapport_facturation '\r
-                       . 'FROM projets_inter p '\r
-                       . 'LEFT JOIN projets_facturation f ON  f.projet=p.projet_id '\r
-                       . 'LEFT JOIN taches_projet t ON p.projet_id=t.projet');\r
-\r
-               $this->views->createView('projets_vue_hf', 'SELECT p.*,f.montant_facture,f.montant_paye, '\r
-                       . 't.jours_prevus,t.jours_consommes,t.progression,t.budget AS budget, '\r
-                       . 'IF(t.budget>0,f.montant_paye/t.budget,1) AS rapport_paiement, '\r
-                       . 'IF(t.budget>0,f.montant_facture/t.budget,1) AS rapport_facturation '\r
-                       . 'FROM projets_inter p '\r
-                       . 'LEFT JOIN projets_facturation f ON  f.projet=p.projet_id '\r
-                       . 'LEFT JOIN taches_projet_hf t ON p.projet_id=t.projet');\r
-\r
-               $this->views->createView('factures_vue', 'SELECT factures.facture_id,factures.nom,factures.lignes,factures.status,factures.total_ht,factures.date_creation,factures.texte_complementaire,factures.informations_paiement,factures.date_paiement,factures.adresse,factures.avoir,'\r
-                       . 'projets.projet_id AS projet_id,projets.nom AS projet,clients.utilisateur_id AS client_id,clients.rs as client,equipiers.prenom AS createur,equipiers.utilisateur_id AS createur_id '\r
-                       . 'FROM factures,projets,equipiers,clients '\r
-                       . 'WHERE factures.projet=projets.projet_id AND clients.utilisateur_id=projets.client AND factures.createur=equipiers.utilisateur_id AND (factures.facture_id>=0 OR factures.status=1)  ');\r
-               $this->views->createView('projets_timereport', 'SELECT * FROM projets_vue WHERE status=0');\r
-               $this->views->createView('order_timereport', 'SELECT utilisateur_id,projet AS projet_id,MAX(date) AS derniere_activite FROM timereport,taches,projets WHERE taches.tache_id=timereport.tache_id AND taches.projet=projets.projet_id AND projets.status=0 GROUP BY utilisateur_id,taches.projet ORDER BY utilisateur_id ASC,MAX(date) DESC');\r
-               $this->views->createView('catype', 'SELECT SUM(total_ht) AS ca, YEAR(FROM_UNIXTIME(date_creation)) annee FROM factures_vue WHERE status BETWEEN 1 AND 4 GROUP BY annee');\r
-               $this->views->createView('ca', 'SELECT SUM(total_ht) AS ca, YEAR(FROM_UNIXTIME(date_creation)) annee FROM factures WHERE status BETWEEN 1 AND 4 GROUP BY annee');\r
-               $this->views->createView('cai', 'SELECT SUM(total_ht) AS ca, YEAR(FROM_UNIXTIME(date_creation)) annee FROM factures WHERE status = 5 GROUP BY annee');\r
-               $this->views->createView('cam', 'SELECT SUM(total_ht) AS ca, DATE_FORMAT(FROM_UNIXTIME(date_creation),\'%Y-%m\') mois FROM factures WHERE status BETWEEN 1 AND 4 GROUP BY mois');\r
-               $this->views->createView('cat', 'SELECT SUM(total_ht) AS ca, CONCAT_WS(\'-\',YEAR(FROM_UNIXTIME(date_creation)),QUARTER(FROM_UNIXTIME(date_creation))) trimestre FROM factures WHERE status BETWEEN 1 AND 4 GROUP BY trimestre');\r
-               $this->views->createView('ftpaccess', 'SELECT email AS userid,password AS passwd,utilisateur_id AS uid,'\r
-                       . '\'1000\' AS gid,CONCAT(\'' . FTPROOT . '\',utilisateur_id) AS homedir, \'/bin/false\' AS shell '\r
-                       . 'FROM utilisateurs WHERE grade=0 '\r
-                       . 'UNION '\r
-                       . 'SELECT email AS userid,ws_password AS passwd,utilisateur_id AS uid,'\r
-                       . '\'1000\' AS gid,CONCAT(\'' . FTPROOT . '\',utilisateur_id) AS homedir, \'/bin/false\' AS shell '\r
-                       . 'FROM utilisateurs WHERE grade=0 AND ws_password!=\'\'');\r
-               $this->views->createView('chiffres_categories', 'SELECT p.annee_fin AS annee, t.categorie, SUM(t.budget) AS ca '\r
-                       . 'FROM projets_vue p, taches_vue t '\r
-                       . 'WHERE t.projet=p.projet_id '\r
-                       . 'GROUP BY t.categorie,p.annee_fin');\r
-\r
-               $this->views->createView('temps_categories', 'SELECT p.annee_fin AS annee, t.categorie, SUM(t.jours_consommes) AS jours_consommes,SUM(t.jours_prevus) AS jours_prevus '\r
-                       . 'FROM projets_vue p, taches_vue t '\r
-                       . 'WHERE t.projet=p.projet_id '\r
-                       . 'GROUP BY t.categorie,p.annee_fin');\r
-\r
-               $this->views->createView('collections_vue', 'SELECT b.*,b.proprietaire AS proprietaire_id,'\r
-                       . 'CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS proprietaire_nom,'\r
-                       . 'CONCAT(c.prenom,\' \',c.nom) AS proprietaire_utilisateur '\r
-                       . 'FROM book_collection b '\r
-                       . 'LEFT JOIN utilisateurs_entreprise c ON b.proprietaire=c.utilisateur_id ');\r
-               $this->views->createView('books_vue', 'SELECT b.*,b.proprietaire AS proprietaire_id,'\r
-                       . 'CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS proprietaire_nom,'\r
-                       . 'CONCAT(c.prenom,\' \',c.nom) AS proprietaire_utilisateur,c.ws_admin,'\r
-                       . 'f.rs AS facturable, t.facturable_id AS facturable_id, ta.projet AS projet,'\r
-                       . 'IF(c.ws_grade>=5,c.utilisateur_id,a.utilisateur_id) AS super_admin '\r
-                       . 'FROM books b '\r
-                       . 'LEFT JOIN utilisateurs_entreprise c ON b.proprietaire=c.utilisateur_id '\r
-                       . 'LEFT JOIN ws_users_tree t ON t.utilisateur_id=c.utilisateur_id '\r
-                       . 'LEFT JOIN utilisateurs a ON t.administrateur_id=a.utilisateur_id '\r
-                       . 'LEFT JOIN utilisateurs_entreprise f ON t.facturable_id=f.utilisateur_id '\r
-                       . 'LEFT JOIN taches ta ON ta.tache_id=b.tache', 'TEMPTABLE');\r
-               $this->views->createView('books_nbpages_vue', 'SELECT book_id, MAX(book_page) AS nb_pages '\r
-                       . 'FROM book_pages '\r
-                       . 'GROUP BY book_id');\r
-               $this->views->createView('books_analysis', 'SELECT b.book_id,p.nb_pages '\r
-                       . 'FROM books_vue b LEFT JOIN books_nbpages_vue p ON b.book_id=p.book_id '\r
-                       . 'WHERE b.nom NOT LIKE \'%demo%\' AND b.status>0');\r
-               $this->views->createView('themes_books_nb', 'SELECT theme,COUNT(*) AS nb FROM books GROUP BY theme');\r
-               $this->views->createView('themes_vue', 'SELECT t.*, b.nb as nbBooks, CONCAT(e.prenom,\' \',e.nom,\' (\',e.rs,\')\') AS proprietaire_nom '\r
-                       . 'FROM themes t '\r
-                       . 'LEFT JOIN themes_books_nb b ON t.theme_id=b.theme '\r
-                       . 'LEFT JOIN utilisateurs_entreprise e ON t.proprietaire=e.utilisateur_id');\r
-               $this->views->createView('demandes_vue', 'SELECT d.*, CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS utilisateur_nom, CONCAT(r.rs,\' (\',r.prenom,\' \',r.nom,\')\') AS revendeur_nom, c.entreprise AS entreprise, a.prenom AS administrateur_nom '\r
-                       . 'FROM demandes d '\r
-                       . 'LEFT JOIN utilisateurs_entreprise r ON d.revendeur=r.utilisateur_id '\r
-                       . 'LEFT JOIN utilisateurs_entreprise c ON d.utilisateur=c.utilisateur_id '\r
-                       . 'LEFT JOIN utilisateurs a ON d.administrateur=a.utilisateur_id');\r
-               $this->views->createView('chiffres_types', 'SELECT p.annee_fin AS annee, e.type, SUM(p.budget) AS ca '\r
-                       . 'FROM projets_vue p, clients_entreprise e '\r
-                       . 'WHERE p.client_id=e.utilisateur_id '\r
-                       . 'GROUP BY e.type, p.annee_fin');\r
-               $this->views->createView('chiffres_types_hf', 'SELECT p.annee_fin AS annee, e.type, SUM(p.budget) AS ca '\r
-                       . 'FROM projets_vue_hf p, clients_entreprise e '\r
-                       . 'WHERE p.client_id=e.utilisateur_id '\r
-                       . 'GROUP BY e.type, p.annee_fin');\r
-\r
-\r
-               //cubeDb::mysqlConvert($this->con, 'UTF8', 'utf8_general_ci', 'MYISAM');\r
-               touch($cache);\r
-       }\r
-\r
-       public function sauvePreferencesUtilisateur()\r
-       {\r
-               $dao = new commonDAOUtilisateur($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
-       public function loadExtranetClasses()\r
-       {\r
-               global $__autoload;\r
-               require_once(dirname(__FILE__) . '/../extranet/Metier/_common.php');\r
-               require_once(dirname(__FILE__) . '/../extranet/Controlleur/_common.php');\r
-               require_once(dirname(__FILE__) . '/../extranet/DAO/_common.php');\r
-       }\r
-\r
-       public function loadWSClasses()\r
-       {\r
-               global $__autoload;\r
-               require_once(dirname(__FILE__) . '/../ws/Metier/_common.php');\r
-               require_once(dirname(__FILE__) . '/../ws/Controlleur/_common.php');\r
-               require_once(dirname(__FILE__) . '/../ws/DAO/_common.php');\r
-       }\r
+    public $grades;\r
+    public $user;\r
+    public $agences;\r
+    public $categories;\r
+    public $ws_grades;\r
+    public $demandes_type;\r
+\r
+    public function __construct()\r
+    {\r
+        parent::__construct();\r
+        $this->dbSync();\r
+\r
+        cubeLang::set();\r
+        try {\r
+            $this->authentifie();\r
+        } catch (Exception $e) {\r
+\r
+        }\r
+\r
+        if ($this->user) {\r
+            // Défini la langue de l'utilisateur en fonction du contenu de user\r
+            cubeLang::set($this->user->lang);\r
+        } else {\r
+            // Sinon défini la langue par défaut (basée sur les entêtes envoyées\r
+            // par le navigateur)\r
+            cubeLang::set();\r
+        }\r
+\r
+        $this->grades = array(0 => __('Client'), "0.5" => __('Junior'), 1 => __('Equipier'), 2 => __('Gérant'), 3 => __('Comptable'));\r
+        $this->categories = array(0 => __('Non défini'), 1 => __('Gestion de projet'),\r
+            2 => __('Design Web'), 3 => __('Design Industriel'), 4 => __('Print'),\r
+            5 => __('Newsletter'), 6 => __('Développement PHP'), 7 => __('Développement Flash'),\r
+            8 => __('Fluidbook'), 9 => __('Formation'), 10 => __('Administratif'), 11 => __('Divers'),\r
+            12 => __('Intégration HTML'), 13 => __('Motion design'), 14 => __('Design graphique'),\r
+            15 => __('Bandeaux de pub'), 16 => __('Applications mobiles'), 17 => __('Prise de vue photo/vidéo'), 18 => __('Hébergement'));\r
+        $this->projets_status = array(0 => __('En cours'), 1 => __('Terminé'));\r
+        $this->devis_status = array(0 => __('Brouillon'), 1 => __('Envoyé'),\r
+            2 => __('Validé'), 3 => __('Refusé'));\r
+        $this->demandes_status = array(0 => __('Non traitée'), 1 => __('Confiée à un revendeur'), 2 => __('Traitée'));\r
+        $this->factures_status = array(0 => __('Brouillon'), 1 => __('Attente'),\r
+            2 => __('Payée'), 3 => __('Annulée'), 4 => __('Avoir'), 5 => __('Impayée'));\r
+        $this->books_status = array(-1 => __('Brouillon'), 0 => __('Prêt'), 1 => __('Téléchargé'), 2 => __('Facturé'));\r
+        $this->agences = array('Paris', 'Montpellier');\r
+        $this->client_type = array(0 => __('Non défini'), 1 => __('TPE'), 2 => __('Startup'), 3 => __('PME'), 4 => __('Agence'), 5 => __('Grande entreprise'));\r
+        $this->demandes_type = array(0 => __('Non défini'),\r
+            1 => __('Catalogue'),\r
+            2 => __('Magazine / Presse'),\r
+            3 => __('Rapport annuel'),\r
+            4 => __('Plaquette de société'),\r
+            5 => __('Brochure touristique'),\r
+            6 => __("Manuel d'utilisation"),\r
+            7 => __('Livre'));\r
+        $this->ws_grades = array(0 => __("Pas d'accès"), 1 => __('Client'), 2 => __('Client (droits de création)'), 3 => __('Revendeur'), 4 => __('Revendeur (droits de création)'), 5 => __('Administrateur'));\r
+    }\r
+\r
+    /**\r
+     * extranetCore::authentifie()\r
+     *\r
+     * Gère l'authentification à l'application\r
+     * Si des données proviennent de la validation d'un formulaire de login,\r
+     * elles sont copiées en tant que variable de session\r
+     * L'utilisateur courant est crée en fonction du contenu de ces variables\r
+     *\r
+     * @return\r
+     */\r
+    protected function authentifie()\r
+    {\r
+        // On regarde si user_email et user_password ont été postées\r
+        // Si c'est le cas, on les copie dans la session\r
+        $_SESSION['errorLogin'] = false;\r
+        if (isset($_REQUEST['user_email'])) {\r
+            $_SESSION['user_email'] = $_REQUEST['user_email'];\r
+        }\r
+\r
+        if (isset($_REQUEST['user_password'])) {\r
+            $_SESSION['user_password'] = $_REQUEST['user_password'];\r
+        }\r
+        // Maintenant on vérifie si ces variables sont présentes dans la session\r
+        if (!isset($_SESSION['user_email']) || !isset($_SESSION['user_password']) || empty($_SESSION['user_email']) || empty($_SESSION['user_password'])) {\r
+            // Ce n'est pas le cas, on place la variable connected à false\r
+            // Et on s'arrête là\r
+            $this->user = null;\r
+            return;\r
+        }\r
+\r
+        // Les variables sont présentes on vérifie la validité des informations\r
+        // Dans la base de données\r
+        // Utilisateur connecté à l'interface\r
+        $dao = new commonDAOUtilisateur($this->con);\r
+        $this->user = $dao->selectByLoginPassword($_SESSION['user_email'], $_SESSION['user_password']);\r
+        if ($this->user == false) {\r
+            $_SESSION['errorLogin'] = true;\r
+            return;\r
+        }\r
+        if ($this->user->grade == 0) {\r
+            $daoClient = new commonDAOClient($this->con);\r
+            $this->user->collegues = $daoClient->getColleguesList($this->user->utilisateur_id);\r
+        }\r
+    }\r
+\r
+    /**\r
+     * commonCore::dbSync()\r
+     *\r
+     * @return\r
+     */\r
+    public function dbSync()\r
+    {\r
+        $cache = ROOT . '/cache/DB_SYNC';\r
+        $todo = ROOT . '/cache/DB_TODO';\r
+        if (!file_exists($cache)) {\r
+            touch($cache);\r
+            $dosync = true;\r
+        } else {\r
+            $dosync = filemtime(__FILE__) >= filemtime($cache) || (file_exists($todo) && filemtime($todo) >= filemtime($cache));\r
+        }\r
+\r
+        if (!$dosync) {\r
+            return;\r
+        }\r
+\r
+        $this->views->dropAllViews();\r
+        $db = new CubeDbStruct($this->con);\r
+        // Table utilisateurs\r
+        $db->utilisateurs->utilisateur_id('integer', 0, false);\r
+        $db->utilisateurs->login('varchar', 128, false);\r
+        $db->utilisateurs->email('varchar', 128, false);\r
+        $db->utilisateurs->password('varchar', 40, false);\r
+        $db->utilisateurs->nom('varchar', 64, false);\r
+        $db->utilisateurs->prenom('varchar', 64, false);\r
+        $db->utilisateurs->agence('varchar', 64, true);\r
+        $db->utilisateurs->entreprise('integer', 0, false);\r
+        $db->utilisateurs->grade('float', 0, false);\r
+        $db->utilisateurs->adresse('varchar', 512, false);\r
+        $db->utilisateurs->code_postal('varchar', 20, false);\r
+        $db->utilisateurs->ville('varchar', 64, false);\r
+        $db->utilisateurs->pays('varchar', 2, false);\r
+        $db->utilisateurs->telephone('varchar', 30, false);\r
+        $db->utilisateurs->mobile('varchar', 30, false);\r
+        $db->utilisateurs->fax('varchar', 30, false);\r
+        $db->utilisateurs->lang('varchar', 2, false, '\'fr\'');\r
+        $db->utilisateurs->date_creation('integer', 0, false);\r
+        $db->utilisateurs->settings('text', 0, false);\r
+        $db->utilisateurs->notes('text', 0, false);\r
+        $db->utilisateurs->ws_id('integer', 0, true);\r
+        $db->utilisateurs->ws_password('varchar', 40, false);\r
+        $db->utilisateurs->ws_settings('text', 0, false);\r
+        $db->utilisateurs->ws_rights('text', 0, false);\r
+        $db->utilisateurs->ws_domains('text', 0, false);\r
+        $db->utilisateurs->enabled('integer', 0, false, '1');\r
+        // Clés\r
+        $db->utilisateurs->primary('pk_utilisateurs', 'utilisateur_id');\r
+        $db->utilisateurs->unique('unique_utilisateurs_email', 'email');\r
+        $db->utilisateurs->index('index_utilisateurs_nom', 'BTREE', 'nom');\r
+        $db->utilisateurs->index('index_utilisateurs_prenom', 'BTREE', 'prenom');\r
+        $db->utilisateurs->index('index_utilisateurs_grade', 'BTREE', 'grade');\r
+        $db->utilisateurs->index('index_utilisateurs_login', 'BTREE', 'login');\r
+        $db->utilisateurs->index('index_utilisateurs_entreprise', 'BTREE', 'entreprise');\r
+        // Table entreprises\r
+        $db->entreprises->entreprise_id('integer', 0, false);\r
+        $db->entreprises->nom('varchar', 64, false);\r
+        $db->entreprises->adresse('varchar', 512, false);\r
+        $db->entreprises->code_postal('varchar', 20, false);\r
+        $db->entreprises->ville('varchar', 64, false);\r
+        $db->entreprises->pays('varchar', 2, false);\r
+        $db->entreprises->adresse_facturation('varchar', 512, false);\r
+        $db->entreprises->tva_intra('varchar', 64, false);\r
+        $db->entreprises->ws_grade('integer', 0, false);\r
+        $db->entreprises->ws_admin('integer', 0, false);\r
+        $db->entreprises->date_creation('integer', 0, false);\r
+        $db->entreprises->notes('text', 0, false);\r
+        $db->entreprises->site('varchar', 256, false);\r
+        $db->entreprises->type('integer', 0, false);\r
+        $db->entreprises->ws_signatures('text', 0, 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_ws_grade', 'BTREE', 'ws_grade');\r
+        // .\r
+        // Table projets\r
+        $db->projets->projet_id('integer', 0, false);\r
+        $db->projets->nom('varchar', 256, false);\r
+        $db->projets->date_creation('integer', 0, false);\r
+        $db->projets->date_debut('integer', 0, false);\r
+        $db->projets->date_fin('integer', 0, false);\r
+        $db->projets->deadline('integer', 0, false);\r
+        $db->projets->devis('integer', 0, false);\r
+        $db->projets->client('integer', 0, false);\r
+        $db->projets->chef('integer', 0, false);\r
+        $db->projets->status('integer', 1, false);\r
+        // Clés\r
+        $db->projets->primary('pk_projets', 'projet_id');\r
+        $db->projets->index('index_projets_status', 'BTREE', 'status');\r
+        $db->projets->index('index_projets_nom', 'BTREE', 'nom');\r
+        $db->projets->index('index_projets_client', 'BTREE', 'client');\r
+        $db->projets->index('index_projets_chef', 'BTREE', 'chef');\r
+        $db->projets->index('index_projets_debut', 'BTREE', 'date_debut');\r
+        $db->projets->index('index_projets_fin', 'BTREE', 'date_fin');\r
+        // .\r
+        // Table taches\r
+        $db->taches->tache_id('integer', 0, false);\r
+        $db->taches->nom('varchar', 256, false);\r
+        $db->taches->categorie('integer', 0, false);\r
+        $db->taches->type('integer', 1, false);\r
+        $db->taches->budget('float', 0, false);\r
+        $db->taches->taux_journalier('float', 0, false);\r
+        $db->taches->projet('integer', 0, false);\r
+        // Clés\r
+        $db->taches->primary('pk_taches', 'tache_id');\r
+        $db->taches->index('index_taches_nom', 'BTREE', 'nom');\r
+        $db->taches->index('index_taches_categorie', 'BTREE', 'categorie');\r
+        $db->taches->index('index_taches_projet', 'BTREE', 'projet');\r
+        // .\r
+        // Table timereport\r
+        $db->timereport->utilisateur_id('integer', 0, false);\r
+        $db->timereport->tache_id('integer', 0, false);\r
+        $db->timereport->date('integer', 0, false);\r
+        $db->timereport->heures('integer', 2, false);\r
+        // Clés\r
+        $db->timereport->primary('pk_timereport', 'utilisateur_id', 'tache_id', 'date');\r
+        $db->timereport->index('index_timereport_date', 'BTREE', 'date');\r
+        $db->timereport->index('index_timereport_tache_id', 'BTREE', 'tache_id');\r
+        // .\r
+        // Table devis\r
+        $db->devis->devis_id('integer', 0, false);\r
+        $db->devis->nom('varchar', 256, false);\r
+        $db->devis->client('integer', 0, false);\r
+        $db->devis->createur('integer', 0, false);\r
+        $db->devis->lignes('text', 0, false);\r
+        $db->devis->status('integer', 1, false);\r
+        $db->devis->total_ht('float', 0, false);\r
+        $db->devis->date_creation('integer', 0, false);\r
+        $db->devis->email('text', 0, false);\r
+        $db->devis->adresse('text', 0, false);\r
+        // Clés\r
+        $db->devis->primary('pk_devis', 'devis_id');\r
+        $db->devis->index('index_devis_status', 'BTREE', 'status');\r
+        $db->devis->index('index_devis_nom', 'BTREE', 'nom');\r
+        $db->devis->index('index_devis_client', 'BTREE', 'client');\r
+        $db->devis->index('index_devis_createur', 'BTREE', 'createur');\r
+        // .\r
+        // Table factures\r
+        $db->factures->facture_id('varchar', 8, false);\r
+        $db->factures->nom('varchar', 256, false);\r
+        $db->factures->projet('integer', 0, false);\r
+        $db->factures->createur('integer', 0, false);\r
+        $db->factures->lignes('text', 0, false);\r
+        $db->factures->status('integer', 1, false);\r
+        $db->factures->total_ht('float', 0, false);\r
+        $db->factures->date_creation('integer', 0, false);\r
+        $db->factures->texte_complementaire('text', 0, false);\r
+        $db->factures->adresse('text', 0, false);\r
+        $db->factures->informations_paiement('text', 0, false);\r
+        $db->factures->date_paiement('integer', 0, false);\r
+        $db->factures->avoir('varchar', 8, false);\r
+        // Clés\r
+        $db->factures->primary('pk_factures', 'facture_id');\r
+        $db->factures->index('index_factures_status', 'BTREE', 'status');\r
+        $db->factures->index('index_factures_nom', 'BTREE', 'nom');\r
+        $db->factures->index('index_factures_projet', 'BTREE', 'projet');\r
+        $db->factures->index('index_factures_createur', 'BTREE', 'createur');\r
+        // .\r
+        // Table dashboard\r
+        $db->dashboard->dashboard_id('integer', 0, false);\r
+        $db->dashboard->nom('varchar', 128, false);\r
+        $db->dashboard->settings('text', 0, false);\r
+        $db->dashboard->rubrique('varchar', 32, false);\r
+        $db->dashboard->equipier('integer', 0, false);\r
+        $db->dashboard->state('integer', 1, false, '1');\r
+        $db->dashboard->sort('integer', 0, false);\r
+        $db->dashboard->site('varchar', 32, false, '\'extranet\'');\r
+        // Clés\r
+        $db->dashboard->primary('pk_dashboard', 'dashboard_id');\r
+        $db->dashboard->index('index_dashboard_equipier', 'BTREE', 'equipier');\r
+        $db->dashboard->index('index_dashboard_sort', 'BTREE', 'sort');\r
+        $db->dashboard->index('index_dashboard_site', 'BTREE', 'site');\r
+        // .\r
+        // Table Signatures\r
+        $db->signatures->signature_id('integer', 0, false);\r
+        $db->signatures->nom('varchar', 256, false);\r
+        $db->signatures->fbcredit('varchar', 64, false);\r
+        $db->signatures->fblink('varchar', 64, false);\r
+        $db->signatures->partnercredit('varchar', 64, false);\r
+        $db->signatures->partnerlink('varchar', 64, false);\r
+        $db->signatures->active('integer', 0, false, '1');\r
+        // Clés\r
+        $db->signatures->primary('pk_signatures', 'signature_id');\r
+        // Table jeux d'icones\r
+        $db->icones->icone_id('integer', 0, false);\r
+        $db->icones->nom('varchar', 256, false);\r
+        $db->icones->proprietaire('integer', 0, false);\r
+        $db->icones->couleur('varchar', 6, false);\r
+        $db->icones->date('integer', 0, false);\r
+        // Clés\r
+        $db->icones->primary('pk_icones', 'icone_id');\r
+        $db->icones->index('index_icones_nom', 'BTREE', 'nom');\r
+        $db->icones->index('index_icones_date', 'BTREE', 'date');\r
+        $db->icones->index('index_icones_proprietaire', 'BTREE', 'proprietaire');\r
+        // Table thèmes\r
+        $db->themes->theme_id('integer', 0, false);\r
+        $db->themes->icones('integer', 0, false);\r
+        $db->themes->proprietaire('integer', 0, false);\r
+        $db->themes->nom('varchar', 256, false);\r
+        $db->themes->date('integer', 0, false);\r
+        $db->themes->parametres('text', 0, false);\r
+        // Clés\r
+        $db->themes->primary('pk_themes', 'theme_id');\r
+        $db->themes->index('index_themes_nom', 'BTREE', 'nom');\r
+        $db->themes->index('index_themes_date', 'BTREE', 'date');\r
+        $db->themes->index('index_themes_proprietaire', 'BTREE', 'proprietaire');\r
+        // Table des langues\r
+        $db->langues->lang_id('varchar', 20, false);\r
+        $db->langues->font('varchar', 64, false);\r
+        $db->langues->charset('varchar', 64, false);\r
+        $db->langues->traductions('text', 0, false);\r
+        $db->langues->nsis('varchar', 64, false);\r
+        // Clés\r
+        $db->langues->primary('pk_langues', 'lang_id');\r
+        // .\r
+        // Table documents\r
+        $db->documents->document_id('integer', 0, false);\r
+        $db->documents->file('varchar', 256, false);\r
+        $db->documents->proprietaire('integer', 0, false);\r
+        $db->documents->pages('integer', 0, false);\r
+        $db->documents->trim('text', 0, false);\r
+        $db->documents->date('integer', 0, false);\r
+        $db->documents->localInfos('text', 0, false);\r
+        $db->documents->generalInfos('text', 0, false);\r
+        $db->documents->conversionInfos('text', 0, false);\r
+        $db->documents->numberSections('text', 0, false);\r
+        $db->documents->localHash('varchar', 64, false);\r
+        $db->documents->version('integer', 0, false, '1');\r
+        // Clés\r
+        $db->documents->primary('pk_documents', 'document_id');\r
+        $db->documents->index('index_documents_file', 'BTREE', 'file');\r
+        $db->documents->index('index_documents_date', 'BTREE', 'date');\r
+        $db->documents->index('index_documents_localHash', 'BTREE', 'localHash');\r
+        $db->documents->index('index_documents_proprietaire', 'BTREE', 'proprietaire');\r
+        $db->documents->index('index_documents_version', 'BTREE', 'version');\r
+        // .\r
+        // Table pages des documents\r
+        $db->document_links->document_id('integer', 0, false);\r
+        $db->document_links->links('text', 0, false);\r
+        $db->document_links->rulers('text', 0, false);\r
+        // Clés\r
+        $db->document_links->primary('pk_document_links', 'document_id');\r
+\r
+        // .\r
+        // Tables versions des liens\r
+        $db->document_links_versions->document_id('integer', 0, false);\r
+        $db->document_links_versions->links('text', 0, false);\r
+        $db->document_links_versions->rulers('text', 0, false);\r
+        $db->document_links_versions->comments('varchar', 128, false);\r
+        $db->document_links_versions->user('integer', 0, false);\r
+        $db->document_links_versions->update('integer', 0, false);\r
+        // .\r
+        $db->document_links_versions->primary('pk_document_links_version', 'document_id', 'update');\r
+        $db->document_links_versions->index('idx_document_links_version_update', 'BTREE', 'update');\r
+\r
+        $db->special_links_versions->book_id('integer', 0, false);\r
+        $db->special_links_versions->links('text', 0, false);\r
+        $db->special_links_versions->rulers('text', 0, false);\r
+        $db->special_links_versions->update('integer', 0, false);\r
+\r
+        $db->special_links_versions->primary('pk_special_links_versionsn', 'book_id', 'update');\r
+        $db->special_links_versions->index('idx_special_links_versions_update', 'BTREE', 'update');\r
+\r
+        // Table Books\r
+        $db->books->book_id('integer', 0, false);\r
+        $db->books->cid('varchar', 8, false);\r
+        $db->books->nom('varchar', 256, false);\r
+        $db->books->lang('varchar', 20, false);\r
+        $db->books->theme('integer', 0, false);\r
+        $db->books->proprietaire('integer', 0, false);\r
+        $db->books->tache('integer', 0, false);\r
+        $db->books->hash('varchar', 32, false);\r
+        $db->books->compteur_visites('integer', 0, false, 20);\r
+        $db->books->status('integer', 0, false);\r
+        $db->books->date_status('integer', 0, false);\r
+        $db->books->parametres('text', 0, false);\r
+        $db->books->chapters('text', 0, false);\r
+        $db->books->extras('text', 0, false);\r
+        $db->books->traductions('text', 0, false);\r
+        $db->books->specialLinks('text', 0, false);\r
+        $db->books->specialRulers('text', 0, false);\r
+        $db->books->date('integer', 0, false);\r
+        $db->books->numerotation('text', 0, false);\r
+        $db->books->changedate('integer', 0, false);\r
+        $db->books->compiledate('integer', 0, false);\r
+        $db->books->compile1date('integer', 0, false);\r
+        $db->books->compilehtml5date('integer', 0, false);\r
+        $db->books->version('integer', 0, false, 2);\r
+        $db->books->composition_update('integer', 0, false);\r
+        $db->books->dir_references('varchar', 256, false);\r
+        $db->books->dir_hosting('varchar', 256, false);\r
+        $db->books->dir_macbook_phonegap_ios('varchar', 256, false);\r
+        $db->books->dir_phonegap_android('varchar', 256, false);\r
+        $db->books->dir_external('varchar', 256, false);\r
+        $db->books->lucene_time('integer', 0, false);\r
+        $db->books->demo_counter('integer', 0, false);\r
+        $db->books->exportdatas('text', 0, false);\r
+        // Clés\r
+        $db->books->primary('pk_books', 'book_id');\r
+        $db->books->index('index_books_nom', 'BTREE', 'nom');\r
+        $db->books->index('index_books_proprietaire', 'BTREE', 'proprietaire');\r
+        $db->books->index('index_books_tache', 'BTREE', 'tache');\r
+        $db->books->index('index_books_status', 'BTREE', 'status');\r
+        $db->books->index('index_books_theme', 'BTREE', 'theme');\r
+        $db->books->index('index_books_demo_counter', 'BTREE', 'demo_counter');\r
+        $db->books->index('index_books_lang', 'BTREE', 'lang');\r
+        $db->books->index('index_books_cid', 'BTREE', 'cid');\r
+        // Book referers\r
+        $db->books_referer->book_id('integer', 0, false);\r
+        $db->books_referer->referer('varchar', 256, false);\r
+        $db->books_referer->count('integer', 0, false);\r
+        $db->books_referer->primary('pk_books_referer', 'book_id', 'referer');\r
+        // .\r
+        // Table pages des publications\r
+        $db->book_pages->book_id('integer', 0, false);\r
+        $db->book_pages->book_page('integer', 0, false);\r
+        $db->book_pages->document_id('integer', 0, false);\r
+        $db->book_pages->document_page('integer', 0, false);\r
+        // Clés\r
+        $db->book_pages->primary('pk_book_pages', 'book_id', 'book_page');\r
+        // .\r
+        // Table versions de composition\r
+        $db->book_pages_versions->book_id('integer', 0, false);\r
+        $db->book_pages_versions->update('integer', 0, false);\r
+        $db->book_pages_versions->composition('text', 0, false);\r
+        // Clés\r
+        $db->book_pages_versions->primary('pk_book_pages_versions', 'book_id', 'update');\r
+        $db->book_pages_versions->index('idx_book_pages_versions', 'BTREE', 'update');\r
+        // Table de cache des urls courtes\r
+        $db->book_short_url->long_url('varchar', 255, false);\r
+        $db->book_short_url->short_url('varchar', 64, false);\r
+        $db->book_short_url->book_id('integer', 0, false);\r
+        // 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
+        // Books\r
+        $db->books_chapters_versions->book_id('integer', 0, false);\r
+        $db->books_chapters_versions->time('integer', 0, false);\r
+        $db->books_chapters_versions->chapters('text', 0, false);\r
+        // Table des collections de fluidbooks\r
+        $db->book_collection->collection_id('integer', 0, false);\r
+        $db->book_collection->nom('varchar', 64, false);\r
+        $db->book_collection->datas('text', 0, false);\r
+        $db->book_collection->theme('text', 0, false);\r
+        $db->book_collection->contents('text', 0, false);\r
+        $db->book_collection->settings('text', 0, false);\r
+        $db->book_collection->proprietaire('integer', 0, false);\r
+        // Clés\r
+        $db->book_collection->primary('pk_book_collection', 'collection_id');\r
+        // Table des compilations de collection\r
+        $db->book_collection_compile->collection_id('integer', 0, false);\r
+        $db->book_collection_compile->compile_date('integer', 0, false);\r
+        $db->book_collection_compile->online_ios('varchar', 10, false);\r
+        $db->book_collection_compile->online_android('varchar', 10, false);\r
+        $db->book_collection_compile->primary('book_collection_compile', 'collection_id', 'compile_date');\r
+\r
+        // Table des notification push\r
+        $db->book_collection_push->collection_id('integer', 0, false);\r
+        $db->book_collection_push->platform('varchar', 16, false);\r
+        $db->book_collection_push->token('varchar', 128, false);\r
+        $db->book_collection_push->locale('varchar', 8, false);\r
+        $db->book_collection_push->env('varchar', 32, false);\r
+        $db->book_collection_push->datas('text', 0, false);\r
+        $db->book_collection_push->last_visit('integer', 0, false);\r
+        $db->book_collection_push->primary('pk_book_collection_push', 'collection_id', 'token');\r
+        $db->book_collection_push->index('idx_book_collection_push_platform', 'BTREE', 'platform');\r
+        $db->book_collection_push->index('idx_book_collection_push_token', 'BTREE', 'token');\r
+\r
+        // Table des droits\r
+        $db->ws_users_tree->utilisateur_id('integer', 0, false);\r
+        $db->ws_users_tree->entreprise_id('integer', 0, false);\r
+        $db->ws_users_tree->facturable_id('integer', 0, false);\r
+        $db->ws_users_tree->facturable_entreprise_id('integer', 0, false);\r
+        $db->ws_users_tree->administrateur_id('integer', 0, false);\r
+        // Clé\r
+        $db->ws_users_tree->primary('pk_utilisateur_id', 'utilisateur_id');\r
+        // Table des entreprises\r
+        $db->ws_entreprises_tree->entreprise_id('integer', 0, false);\r
+        $db->ws_entreprises_tree->facturable_entreprise_id('integer', 0, false);\r
+        $db->ws_entreprises_tree->administrateur_id('integer', 0, false);\r
+        // Clés\r
+        $db->ws_entreprises_tree->primary('pk_entreprise_id', 'entreprise_id');\r
+        // Table des demandes de devis\r
+        $db->demandes->demande_id('integer', 0, false);\r
+        $db->demandes->type('integer', 0, false);\r
+        $db->demandes->pages('varchar', 128, false);\r
+        $db->demandes->liens('varchar', 128, false);\r
+        $db->demandes->langues('varchar', 128, false);\r
+        $db->demandes->coupon('varchar', 128, false);\r
+        $db->demandes->details('text', 0, false);\r
+        $db->demandes->date('integer', 0, false);\r
+        $db->demandes->status('integer', 0, false);\r
+        $db->demandes->revendeur('integer', 0, false);\r
+        $db->demandes->utilisateur('integer', 0, false);\r
+        $db->demandes->administrateur('integer', 0, false);\r
+        // Clés\r
+        $db->demandes->primary('pk_demandes', 'demande_id');\r
+\r
+        // Table\r
+        $db->tube->url('varchar', 128, false);\r
+\r
+        // Table des sessions\r
+        $db->sessions->session_id('varchar', 32, false);\r
+        $db->sessions->data('text', 0, false);\r
+        $db->sessions->time('integer', 0, false);\r
+        $db->sessions->primary('pk_sessions', 'session_id');\r
+        $db->sessions->index('idx_sessions_time', 'BTREE', 'time');\r
+\r
+        // Table Grdf\r
+        $db->grdf->datas('text', 0, false);\r
+\r
+        // Table bulle\r
+        $db->bulle->email('varchar', 128, false);\r
+        $db->bulle->date('integer', 0, false);\r
+        $db->bulle->prenom('varchar', 128, false);\r
+        $db->bulle->nom('varchar', 128, false);\r
+        $db->bulle->catalogue('varchar', 128, false);\r
+\r
+        // WS Ref\r
+\r
+        $db->wsref->type('varchar', 32, false);\r
+        $db->wsref->ref('varchar', 32, false);\r
+        $db->wsref->url('varchar', 512, false);\r
+        $db->wsref->primary('pk_wsref', 'type', 'ref');\r
+\r
+        // Table google search api\r
+        $db->google_search_api->request('varchar', 256, false);\r
+        $db->google_search_api->response('text', 0, false);\r
+        $db->google_search_api->date('integer', 0, false);\r
+        $db->google_search_api->primary('pk_google_search_api', 'request');\r
+\r
+        // Table Bourbon\r
+        $db->bourbon_suggestions->from('varchar', 256, false);\r
+        $db->bourbon_suggestions->date('integer', 0, false);\r
+        $db->bourbon_suggestions->type('varchar', 256, false);\r
+        $db->bourbon_suggestions->suggestion('text', 0, false);\r
+        $db->bourbon_suggestions->page('varchar', 256, false);\r
+\r
+        // Table gpu\r
+        $db->gpu->gpu('varchar', 256, false);\r
+        $db->gpu->rgpu('varchar', 256, false);\r
+        $db->gpu->page('text', 0, false);\r
+        $db->gpu->version('integer', 0, false);\r
+        $db->gpu->date('integer', 0, false);\r
+        $db->gpu->score('integer', 0, false);\r
+        $db->gpu->url('varchar', 512, false);\r
+        $db->gpu->benchmark('text', 0, false);\r
+        $db->gpu->primary('pk_gpu', 'gpu', 'rgpu', 'version');\r
+\r
+        // gpu log\r
+        $db->gpu_log->gpu('varchar', 256, false);\r
+        $db->gpu_log->rgpu('varchar', 256, false);\r
+        $db->gpu_log->date('integer', 0, false);\r
+        $db->gpu_log->primary('pk_gpu_log', 'gpu', 'rgpu', 'date');\r
+\r
+        try {\r
+            $dbi = new CubeDbStruct($this->con);\r
+            $dbi->synchronize($db);\r
+        } catch (Exception $e) {\r
+\r
+        }\r
+\r
+        $this->views->createView('equipiers', 'SELECT * FROM utilisateurs WHERE grade>0');\r
+        $this->views->createView('gerants', 'SELECT * FROM utilisateurs WHERE grade=2');\r
+        $this->views->createView('impayes_entreprises', 'SELECT SUM(total_ht) AS impaye, u.entreprise AS entreprise '\r
+            . 'FROM utilisateurs u LEFT JOIN projets p ON u.utilisateur_id=p.client LEFT JOIN factures f ON f.projet=p.projet_id '\r
+            . 'WHERE f.status=1 GROUP BY u.entreprise');\r
+        $this->views->createView('entreprises_inter', 'SELECT e.*,'\r
+            . 'SUM(f.total_ht) AS ca '\r
+            . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND grade=0 '\r
+            . 'LEFT JOIN projets p ON p.client=u.utilisateur_id '\r
+            . 'LEFT JOIN factures f ON f.projet=p.projet_id AND f.status IN(1,2) '\r
+            . 'GROUP BY e.entreprise_id');\r
+        $this->views->createView('entreprises_vue', 'SELECT e.*,i.impaye AS impaye '\r
+            . 'FROM entreprises_inter e LEFT JOIN impayes_entreprises i ON e.entreprise_id=i.entreprise');\r
+//        $this->views->createView('entreprises_ws', 'SELECT e.*, a.prenom AS administrateur, r.nom AS revendeur,a.utilisateur_id AS ws_super_admin, fb.ca AS ca\r
+//FROM entreprises e\r
+//LEFT JOIN ws_entreprises_tree ri ON ri.entreprise_id=e.entreprise_id\r
+//LEFT JOIN utilisateurs ur ON e.ws_admin=ur.utilisateur_id\r
+//LEFT JOIN entreprises r ON ur.entreprise=r.entreprise_id\r
+//LEFT JOIN ws_entreprises_tree wet ON wet.entreprise_id=r.entreprise_id\r
+//LEFT JOIN ca_fluidbook fb ON e.entreprise_id=fb.client\r
+//LEFT JOIN utilisateurs a ON ri.administrateur_id=a.utilisateur_id');\r
+        $this->views->createView('clients_entreprise', 'SELECT u.*,e.nom AS rs, e.adresse_facturation AS adresse_facturation, e.site AS site, e.type AS type '\r
+            . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND u.grade=0');\r
+        $this->views->createView('utilisateurs_entreprise', 'SELECT u.*,e.nom AS rs, e.adresse_facturation AS adresse_facturation, '\r
+            . 'e.ws_grade, e.ws_admin, e.ws_signatures AS ws_signatures, e.site AS site '\r
+            . 'FROM entreprises e LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id');\r
+        $this->views->createView('clients', 'SELECT u.*,e.nom AS rs, e.adresse_facturation AS adresse_facturation, e.site AS site, e.tva_intra AS tva_intra, i.impaye, '\r
+            . 'SUM(f.total_ht) AS ca '\r
+            . 'FROM entreprises e LEFT JOIN impayes_entreprises i ON e.entreprise_id=i.entreprise LEFT JOIN utilisateurs u ON u.entreprise=e.entreprise_id AND u.grade=0 LEFT JOIN projets p ON p.client=u.utilisateur_id LEFT JOIN factures f ON f.projet=p.projet_id AND f.status IN(1,2) '\r
+            . 'GROUP BY u.utilisateur_id', 'TEMPTABLE');\r
+        $this->views->createView('taches_books', 'SELECT tache,GROUP_CONCAT(book_id ORDER BY book_id ASC SEPARATOR ",") AS books FROM books WHERE tache>0 GROUP BY tache');\r
+        $this->views->createView('taches_vue', 'SELECT taches.tache_id,taches.nom,taches.categorie,taches.type,taches.budget,taches.projet,taches.taux_journalier,tb.books, '\r
+            . '(SUM(timereport.heures)/' . JOURNEE . ') AS jours_consommes, ((SUM(timereport.heures)/' . JOURNEE . ')/(taches.budget/taches.taux_journalier))*100 AS progression,(taches.budget/taches.taux_journalier) AS jours_prevus '\r
+            . 'FROM taches LEFT JOIN timereport ON taches.tache_id=timereport.tache_id '\r
+            . 'LEFT JOIN taches_books tb ON tb.tache=taches.tache_id '\r
+            . 'GROUP BY taches.tache_id');\r
+        $this->views->createView('taches_projet', 'SELECT projet, '\r
+            . 'SUM(jours_prevus) AS jours_prevus,SUM(budget) AS budget, '\r
+            . 'SUM(jours_consommes) AS jours_consommes, (SUM(jours_consommes)/SUM(jours_prevus))*100 AS progression '\r
+            . 'FROM taches_vue GROUP BY projet');\r
+\r
+        $this->views->createView('taches_projet_hf', 'SELECT projet, '\r
+            . 'SUM(jours_prevus) AS jours_prevus,SUM(budget) AS budget, '\r
+            . 'SUM(jours_consommes) AS jours_consommes, (SUM(jours_consommes)/SUM(jours_prevus))*100 AS progression '\r
+            . 'FROM taches_vue WHERE categorie!=8 GROUP BY projet');\r
+\r
+        $this->views->createView('devis_vue', 'SELECT devis.devis_id,devis.nom,devis.lignes,devis.status,devis.total_ht,devis.date_creation,devis.email,clients.utilisateur_id AS client_id,clients.rs AS client,equipiers.prenom AS createur,equipiers.utilisateur_id AS createur_id,devis.adresse '\r
+            . 'FROM devis,clients,equipiers '\r
+            . 'WHERE devis.client=clients.utilisateur_id AND devis.createur=equipiers.utilisateur_id');\r
+        $this->views->createView('factures_payees', 'SELECT * FROM factures WHERE status=2');\r
+        $this->views->createView('factures_valides', 'SELECT * FROM factures WHERE status IN(1,2,5)');\r
+        $this->views->createView('projets_inter', 'SELECT projets.projet_id,projets.nom,projets.status,projets.date_debut,projets.date_fin,projets.date_creation,projets.deadline,projets.devis,'\r
+            . 'YEAR(FROM_UNIXTIME(projets.date_debut)) AS annee_debut,'\r
+            . 'IF(date_fin=0,YEAR(NOW()),YEAR(FROM_UNIXTIME(projets.date_fin))) AS annee_fin,'\r
+            . 'clients.rs AS client,equipiers.prenom AS chef,equipiers.utilisateur_id AS chef_id,clients.utilisateur_id AS client_id '\r
+            . 'FROM projets JOIN clients_entreprise clients ON projets.client=clients.utilisateur_id '\r
+            . 'JOIN equipiers ON projets.chef=equipiers.utilisateur_id');\r
+        $this->views->createView('projets_facturation', 'SELECT projet,SUM(IF(status IN(1,2,5),total_ht,0)) AS montant_facture, SUM(IF(status=2,total_ht,0)) AS montant_paye FROM factures GROUP BY projet');\r
+        $this->views->createView('projets_vue', 'SELECT p.*,f.montant_facture,f.montant_paye, '\r
+            . 't.jours_prevus,t.jours_consommes,t.progression,t.budget AS budget, '\r
+            . 'IF(t.budget>0,f.montant_paye/t.budget,1) AS rapport_paiement, '\r
+            . 'IF(t.budget>0,f.montant_facture/t.budget,1) AS rapport_facturation '\r
+            . 'FROM projets_inter p '\r
+            . 'LEFT JOIN projets_facturation f ON  f.projet=p.projet_id '\r
+            . 'LEFT JOIN taches_projet t ON p.projet_id=t.projet');\r
+\r
+        $this->views->createView('projets_vue_hf', 'SELECT p.*,f.montant_facture,f.montant_paye, '\r
+            . 't.jours_prevus,t.jours_consommes,t.progression,t.budget AS budget, '\r
+            . 'IF(t.budget>0,f.montant_paye/t.budget,1) AS rapport_paiement, '\r
+            . 'IF(t.budget>0,f.montant_facture/t.budget,1) AS rapport_facturation '\r
+            . 'FROM projets_inter p '\r
+            . 'LEFT JOIN projets_facturation f ON  f.projet=p.projet_id '\r
+            . 'LEFT JOIN taches_projet_hf t ON p.projet_id=t.projet');\r
+\r
+        $this->views->createView('factures_vue', 'SELECT factures.facture_id,factures.nom,factures.lignes,factures.status,factures.total_ht,factures.date_creation,factures.texte_complementaire,factures.informations_paiement,factures.date_paiement,factures.adresse,factures.avoir,'\r
+            . 'projets.projet_id AS projet_id,projets.nom AS projet,clients.utilisateur_id AS client_id,clients.rs as client,equipiers.prenom AS createur,equipiers.utilisateur_id AS createur_id '\r
+            . 'FROM factures,projets,equipiers,clients '\r
+            . 'WHERE factures.projet=projets.projet_id AND clients.utilisateur_id=projets.client AND factures.createur=equipiers.utilisateur_id AND (factures.facture_id>=0 OR factures.status=1)  ');\r
+        $this->views->createView('projets_timereport', 'SELECT * FROM projets_vue WHERE status=0');\r
+        $this->views->createView('order_timereport', 'SELECT utilisateur_id,projet AS projet_id,MAX(date) AS derniere_activite FROM timereport,taches,projets WHERE taches.tache_id=timereport.tache_id AND taches.projet=projets.projet_id AND projets.status=0 GROUP BY utilisateur_id,taches.projet ORDER BY utilisateur_id ASC,MAX(date) DESC');\r
+        $this->views->createView('catype', 'SELECT SUM(total_ht) AS ca, YEAR(FROM_UNIXTIME(date_creation)) annee FROM factures_vue WHERE status BETWEEN 1 AND 4 GROUP BY annee');\r
+        $this->views->createView('ca', 'SELECT SUM(total_ht) AS ca, YEAR(FROM_UNIXTIME(date_creation)) annee FROM factures WHERE status BETWEEN 1 AND 4 GROUP BY annee');\r
+        $this->views->createView('cai', 'SELECT SUM(total_ht) AS ca, YEAR(FROM_UNIXTIME(date_creation)) annee FROM factures WHERE status = 5 GROUP BY annee');\r
+        $this->views->createView('cam', 'SELECT SUM(total_ht) AS ca, DATE_FORMAT(FROM_UNIXTIME(date_creation),\'%Y-%m\') mois FROM factures WHERE status BETWEEN 1 AND 4 GROUP BY mois');\r
+        $this->views->createView('cat', 'SELECT SUM(total_ht) AS ca, CONCAT_WS(\'-\',YEAR(FROM_UNIXTIME(date_creation)),QUARTER(FROM_UNIXTIME(date_creation))) trimestre FROM factures WHERE status BETWEEN 1 AND 4 GROUP BY trimestre');\r
+        $this->views->createView('ftpaccess', 'SELECT email AS userid,password AS passwd,utilisateur_id AS uid,'\r
+            . '\'1000\' AS gid,CONCAT(\'' . FTPROOT . '\',utilisateur_id) AS homedir, \'/bin/false\' AS shell '\r
+            . 'FROM utilisateurs WHERE grade=0 '\r
+            . 'UNION '\r
+            . 'SELECT email AS userid,ws_password AS passwd,utilisateur_id AS uid,'\r
+            . '\'1000\' AS gid,CONCAT(\'' . FTPROOT . '\',utilisateur_id) AS homedir, \'/bin/false\' AS shell '\r
+            . 'FROM utilisateurs WHERE grade=0 AND ws_password!=\'\'');\r
+        $this->views->createView('chiffres_categories', 'SELECT p.annee_fin AS annee, t.categorie, SUM(t.budget) AS ca '\r
+            . 'FROM projets_vue p, taches_vue t '\r
+            . 'WHERE t.projet=p.projet_id '\r
+            . 'GROUP BY t.categorie,p.annee_fin');\r
+\r
+        $this->views->createView('temps_categories', 'SELECT p.annee_fin AS annee, t.categorie, SUM(t.jours_consommes) AS jours_consommes,SUM(t.jours_prevus) AS jours_prevus '\r
+            . 'FROM projets_vue p, taches_vue t '\r
+            . 'WHERE t.projet=p.projet_id '\r
+            . 'GROUP BY t.categorie,p.annee_fin');\r
+\r
+        $this->views->createView('collections_vue', 'SELECT b.*,b.proprietaire AS proprietaire_id,'\r
+            . 'CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS proprietaire_nom,'\r
+            . 'CONCAT(c.prenom,\' \',c.nom) AS proprietaire_utilisateur '\r
+            . 'FROM book_collection b '\r
+            . 'LEFT JOIN utilisateurs_entreprise c ON b.proprietaire=c.utilisateur_id ');\r
+        $this->views->createView('books_vue', 'SELECT b.*,b.proprietaire AS proprietaire_id,'\r
+            . 'CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS proprietaire_nom,'\r
+            . 'CONCAT(c.prenom,\' \',c.nom) AS proprietaire_utilisateur,c.ws_admin,'\r
+            . 'f.rs AS facturable, t.facturable_id AS facturable_id, ta.projet AS projet,'\r
+            . 'IF(c.ws_grade>=5,c.utilisateur_id,a.utilisateur_id) AS super_admin '\r
+            . 'FROM books b '\r
+            . 'LEFT JOIN utilisateurs_entreprise c ON b.proprietaire=c.utilisateur_id '\r
+            . 'LEFT JOIN ws_users_tree t ON t.utilisateur_id=c.utilisateur_id '\r
+            . 'LEFT JOIN utilisateurs a ON t.administrateur_id=a.utilisateur_id '\r
+            . 'LEFT JOIN utilisateurs_entreprise f ON t.facturable_id=f.utilisateur_id '\r
+            . 'LEFT JOIN taches ta ON ta.tache_id=b.tache', 'TEMPTABLE');\r
+        $this->views->createView('books_nbpages_vue', 'SELECT book_id, MAX(book_page) AS nb_pages '\r
+            . 'FROM book_pages '\r
+            . 'GROUP BY book_id');\r
+        $this->views->createView('books_analysis', 'SELECT b.book_id,p.nb_pages '\r
+            . 'FROM books_vue b LEFT JOIN books_nbpages_vue p ON b.book_id=p.book_id '\r
+            . 'WHERE b.nom NOT LIKE \'%demo%\' AND b.status>0');\r
+        $this->views->createView('themes_books_nb', 'SELECT theme,COUNT(*) AS nb FROM books GROUP BY theme');\r
+        $this->views->createView('themes_vue', 'SELECT t.*, b.nb as nbBooks, CONCAT(e.prenom,\' \',e.nom,\' (\',e.rs,\')\') AS proprietaire_nom '\r
+            . 'FROM themes t '\r
+            . 'LEFT JOIN themes_books_nb b ON t.theme_id=b.theme '\r
+            . 'LEFT JOIN utilisateurs_entreprise e ON t.proprietaire=e.utilisateur_id');\r
+        $this->views->createView('demandes_vue', 'SELECT d.*, CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS utilisateur_nom, CONCAT(r.rs,\' (\',r.prenom,\' \',r.nom,\')\') AS revendeur_nom, c.entreprise AS entreprise, a.prenom AS administrateur_nom '\r
+            . 'FROM demandes d '\r
+            . 'LEFT JOIN utilisateurs_entreprise r ON d.revendeur=r.utilisateur_id '\r
+            . 'LEFT JOIN utilisateurs_entreprise c ON d.utilisateur=c.utilisateur_id '\r
+            . 'LEFT JOIN utilisateurs a ON d.administrateur=a.utilisateur_id');\r
+        $this->views->createView('chiffres_types', 'SELECT p.annee_fin AS annee, e.type, SUM(p.budget) AS ca '\r
+            . 'FROM projets_vue p, clients_entreprise e '\r
+            . 'WHERE p.client_id=e.utilisateur_id '\r
+            . 'GROUP BY e.type, p.annee_fin');\r
+        $this->views->createView('chiffres_types_hf', 'SELECT p.annee_fin AS annee, e.type, SUM(p.budget) AS ca '\r
+            . 'FROM projets_vue_hf p, clients_entreprise e '\r
+            . 'WHERE p.client_id=e.utilisateur_id '\r
+            . 'GROUP BY e.type, p.annee_fin');\r
+        $this->views->createView('ca_fluidbook', 'SELECT u.entreprise AS client, SUM(t.budget) AS ca FROM taches t LEFT JOIN projets p ON t.projet=p.projet_id LEFT JOIN utilisateurs u ON p.client=u.utilisateur_id WHERE t.categorie=8 AND t.budget>0 GROUP BY u.entreprise');\r
+\r
+\r
+        //cubeDb::mysqlConvert($this->con, 'UTF8', 'utf8_general_ci', 'MYISAM');\r
+        touch($cache);\r
+    }\r
+\r
+    public function sauvePreferencesUtilisateur()\r
+    {\r
+        $dao = new commonDAOUtilisateur($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
+    public function loadExtranetClasses()\r
+    {\r
+        global $__autoload;\r
+        require_once(dirname(__FILE__) . '/../extranet/Metier/_common.php');\r
+        require_once(dirname(__FILE__) . '/../extranet/Controlleur/_common.php');\r
+        require_once(dirname(__FILE__) . '/../extranet/DAO/_common.php');\r
+    }\r
+\r
+    public function loadWSClasses()\r
+    {\r
+        global $__autoload;\r
+        require_once(dirname(__FILE__) . '/../ws/Metier/_common.php');\r
+        require_once(dirname(__FILE__) . '/../ws/Controlleur/_common.php');\r
+        require_once(dirname(__FILE__) . '/../ws/DAO/_common.php');\r
+    }\r
 \r
 }
\ No newline at end of file
index 81ab50061f6785f0c77182bb50cb796bed137065..fdc1eb3153f728d9a658074035843a2e1e8e881d 100644 (file)
@@ -1761,9 +1761,10 @@ html.tall{height:150%}' . "\n";
         $res .= '<th>' . commonUrl::orderby(__('Raison sociale'), 'nom', $settings, 'sort' . $change) . '</th>';
         $res .= '<th>' . __('Contacts') . '</th>';
         if ($admin) {
-            $res .= '<th>' . commonUrl::orderby(__('Grade'), 'ws_grade', $settings, 'sort', $change) . '</th>';
-            $res .= '<th>' . commonUrl::orderby(__('Revendeur'), 'revendeur', $settings, 'sort', $change) . '</th>';
-            $res .= '<th>' . commonUrl::orderby(__('Administrateur'), 'administrateur', $settings, 'sort', $change) . '</th>';
+            $res .= '<th>' . commonUrl::orderby(__('Grade'), 'ws_grade', $settings, 'sort' . $change) . '</th>';
+            $res .= '<th>' . commonUrl::orderby(__('Revendeur'), 'revendeur', $settings, 'sort' . $change) . '</th>';
+            $res .= '<th>' . commonUrl::orderby(__('Administrateur'), 'administrateur', $settings, 'sort' . $change) . '</th>';
+            $res .= '<th>' . commonUrl::orderby(__('CA'), 'ca', $settings, 'sort' . $change) . '</th>';
         }
         $res .= '<th class="min"></th><th class="min"></th></tr>';
         $i = 0;
@@ -1794,6 +1795,7 @@ html.tall{height:150%}' . "\n";
                 $res .= '<td>' . $core->ws_grades[$client->ws_grade] . '</td>';
                 $res .= '<td>' . $rev . '</td>';
                 $res .= '<td>' . $adm . '</td>';
+                $res .= '<td>' . $client->ca . '</td>';
             }
 
             $res .= '<td class="nowrap">';