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