From: vincent@cubedesigners.com Date: Tue, 30 Aug 2011 14:05:07 +0000 (+0000) Subject: (no commit message) X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=c7beaf6ac64ed2917d184f54b4bc8dfc50140478;p=cubeextranet.git --- diff --git a/inc/commons/class.common.core.php b/inc/commons/class.common.core.php index 34b180072..a313f92e5 100644 --- a/inc/commons/class.common.core.php +++ b/inc/commons/class.common.core.php @@ -376,6 +376,8 @@ class commonCore extends cubeCore { $db->books->compiledate('integer', 0, false); $db->books->version('integer', 0, false, 2); $db->books->composition_update('integer', 0, false); + $db->books->dir_references('varchar', 256, false); + $db->books->dir_hosting('varchar', 256, false); // Clés $db->books->primary('pk_books', 'book_id'); $db->books->index('index_books_nom', 'BTREE', 'nom'); diff --git a/inc/ws/Controlleur/class.ws.ajax.php b/inc/ws/Controlleur/class.ws.ajax.php index c0064b9de..9f1a95ec7 100644 --- a/inc/ws/Controlleur/class.ws.ajax.php +++ b/inc/ws/Controlleur/class.ws.ajax.php @@ -218,6 +218,61 @@ class wsAjax extends cubeAjax { $x->addRedirection($url); } + public static function instbook($args, &$x) { + global $core; + $book_id = $args[1]; + $server = $args[2]; + + $dao = new wsDAOBook($core->con); + $book = $dao->selectById($book_id); + + if (!in_array($book->proprietaire_id, explode(',', $core->user->ws_rights))) { + commonDroits::error(); + } + if (!isset($_POST['dir'])) { + $popup = commonAjax::form('instbook/' . $book_id . '/' . $server, __('Installation du Fluidbook'), wsUrl::formInstall($book, $server), __('Installer'), 2, '', '', true); + $x->addOpenPopup($popup); + return; + } + + $package = wsPackager::package($book_id, 'html', false); + + if ($server == 'references') { + $root = '/home/fluidbook/dev/references'; + $url = 'http://www.fluidbook.com/references/'; + } else if ($server == 'hosting') { + $root = '/home/fluidbook/hosting'; + $url = 'http://hosting.fluidbook.com/'; + } + + $e = explode('/', $_POST['dir']); + $f = array(); + foreach ($e as $d) { + if ($d == '..' || $d == '') { + continue; + } + $f[] = cubeText::str2URL($d); + } + $dir = implode('/', $f); + + $dao->setInstallDir($book_id, $dir, $server); + + $finalDir = $root . '/' . $dir; + if (!file_exists($finalDir)) { + mkdir($finalDir, 0777, true); + } + + $cp = new cubeCommandLine('cp'); + $cp->setPath(CONVERTER_PATH); + $cp->setArg('r'); + $cp->setArg(null, $package . '*'); + $cp->setArg(null, $finalDir); + $cp->execute(); + + $x->addClosePopup(); + $x->addTruePopup($url . $dir.'/'); + } + public static function statusBook($args, &$x) { global $core; @@ -457,9 +512,9 @@ class wsAjax extends cubeAjax { if (!isset($_POST['detail'])) { $_POST['detail'] = $_POST['details']; } - - if(!isset($_POST['site'])){ - $_POST['site']=$_POST['site_internet']; + + if (!isset($_POST['site'])) { + $_POST['site'] = $_POST['site_internet']; } file_put_contents(ROOT . '/cache/demandeDevis.txt', print_r($_POST, true)); // Validation des champs de formulaires @@ -543,35 +598,9 @@ class wsAjax extends cubeAjax { $mail->from = FROM_NAME . '<' . FROM_EMAIL . '>'; $mail->subject = '[' . EMAIL_SUBJECT . '] ' . __('Demande de devis'); - $body = "\r\n---- " . __('Demande') . ' ----' . "\r\n"; - $fields = array('type' => __('Type'), - 'pages' => __('Pages'), - 'liens' => __('Liens'), - 'langues' => __('Langues'), - 'details' => __('Commentaires')); - foreach ($fields as $p => $t) { - if ($demande->$p != '') { - $body .= ' * ' . $t . ' : ' . $demande->$p . "\r\n"; - } - } + $demande->type = $core->demandes_type[$demande->type]; - $body .= "\r\n" . '---- ' . __('Coordonnées') . ' ----' . "\r\n"; - $fields = array('prenom' => __('Prenom'), - 'nom' => __('Nom'), - 'rs' => __('Entreprise'), - 'adresse' => __('Adresse'), - 'code_postal' => __('Code postal'), - 'ville' => __('Ville'), - 'pays' => 'Pays'); - foreach ($fields as $p => $t) { - if ($utilisateur->$p != '') { - if ($p == 'pays') { - $body .= ' * ' . $t . ' : ' . cubeCountry::getCountry($utilisateur->$p, $revendeur->lang) . "\r\n"; - } else { - $body .= ' * ' . $t . ' : ' . $utilisateur->$p . "\r\n"; - } - } - } + $body = wsDemande::asMailBody($demande, $utilisateur); $body .= "\r\n"; $body .= __('Afin de nous confirmer que vous prenez en compte cette demande, veuillez cliquer sur le lien ci-dessous') . " : \r\n"; @@ -580,9 +609,8 @@ class wsAjax extends cubeAjax { $body .= __("Si dans un délai de deux jours ouvrés, vous n'avez pas accepté cette demande, nous nous réservons le droit de la prendre en charge.") . "\r\n"; $mail->body = $body; - //$mail->to = 'tech@fluidbook.com'; - $mail->to = $r->email; - $mail->bcc='tech@fluidbook.com'; + $mail->to = $revendeur->email; + $mail->bcc = 'tech@fluidbook.com'; $mail->send(); } @@ -606,9 +634,12 @@ class wsAjax extends cubeAjax { $dao->accepteDemande($demande_id, $revendeur_id); } - $x->addAlert(__('Votre choix a bien été prise en compte.')); if (!isset($args[4])) { - $x->addRedirection(SITE_PATH); + if ($response == '0') { + $x->addRedirection(SITE_PATH); + } else { + $x->addReload(); + } } else { $x->addContent('listeDemandes', wsUrl::listeDemandes()); } diff --git a/inc/ws/Controlleur/class.ws.url.php b/inc/ws/Controlleur/class.ws.url.php index 89e8d773f..ebae1ddc6 100644 --- a/inc/ws/Controlleur/class.ws.url.php +++ b/inc/ws/Controlleur/class.ws.url.php @@ -58,13 +58,14 @@ class wsUrl { $res = ''; - $res .= self::contextBookDownload($context_download_id); + $res .= self::contextBookDownload($context_download_id, $droits); $res .= self::contextBookStatus($context_status_id); $res .= self::contextBookView($context_view_id); $res .= ''; $res .= ''; $res .= ''; + $res .= ''; $res .= ''; $res .= ''; if ($droits->revendeur) { @@ -96,6 +97,7 @@ class wsUrl { $res .= ''; $res .= ''; $res .= ''; + $res .= ''; $res .= ''; $res .= ''; @@ -149,7 +151,7 @@ class wsUrl { if (!isset($settings['search']) || is_null($settings['search'])) { $odd = cubeMath::isOdd($i) ? ' class="odd"' : ''; - $res .= ''; @@ -158,7 +160,7 @@ class wsUrl { return $res; } - public static function contextBookDownload($id) { + public static function contextBookDownload($id, $droits) { global $core; $versions = array(); @@ -168,12 +170,23 @@ class wsUrl { $versions['mac-exe'] = array('title' => __('Version offline') . ' - ' . __('Exécutable Mac OS X'), 'icon' => cubeMedia::image(IMG . '/macos.png')); $versions['win-cd'] = array('title' => __('Version offline') . ' - ' . __('CD-ROM') . ' / ' . __('Clé USB'), 'icon' => cubeMedia::silk('cd.png')); + $res = '
'; $res .= '
'; return $res; } @@ -540,7 +553,7 @@ html{height:100%}' . "\n"; exit; } - public static function editComposition($book_id,$hash) { + public static function editComposition($book_id, $hash) { $fv = array(session_name() => session_id(), 'book_id' => $book_id, @@ -863,12 +876,30 @@ html{height:100%}' . "\n"; public static function valideDownload() { global $core; - $res .= ''; + $res = ''; $res .= ''; return $res; } + public static function formInstall($book, $server) { + if ($server == 'references') { + $s = __('Espace des références'); + $dir = $book->dir_references; + } elseif ($server == 'hosting') { + $s = __("Serveur d'hébergement"); + $dir = $book->dir_hosting; + } + + if ($dir == '') { + $dir = cubeText::str2URL($book->parametres->title); + } + + $res = ''; + $res.=''; + return $res; + } + public static function testAS($args) { global $core; commonDroits::min(5); @@ -1402,11 +1433,13 @@ html{height:100%}' . "\n"; $res .= '

' . $core->typo->Titre(__('Prendre en charge une demande de devis')) . '

'; $res .= '

'; - if ($demande->revendeur != $revendeur_id || $demande->revendeur != $core->user->utilisateur_id) { + if ($demande->revendeur != $revendeur_id || $demande->revendeur != $core->user->utilisateur_id || $demande->status == 0) { $res.='

' . __('Cette demande de devis ne vous est pas adressée.') . '

'; + } else if ($demande->status == 2) { + $res.='

' . __('Merci ! Nous avons bien pris en compte votre réponse.') . '

'; + $res.='' . __("Ouvrir l'email de réponse") . ''; + $res.='

'; } else { - - $res .= '

' . __('Si vous acceptez de traiter la demande suivante, veuillez cliquer sur le bouton "Accepter la demande" situé à droite de la description.'); $res .= ' ' . __('Vous avez également la possibilité de décliner la demande en cliquant sur le bouton "Décliner la demande"') . "

"; $res .= '

'; @@ -1415,11 +1448,12 @@ html{height:100%}' . "\n"; $res .= ''; $res .= ''; $res .= ''; - $res .= ''; - $res .= ''; + $res .= ''; $res .= ''; $res .= ''; - $res .= ''; + $res .= ''; + $res .= ''; + $res .=''; $res .= ''; $res .= ''; $res .= ''; diff --git a/inc/ws/DAO/class.ws.dao.book.php b/inc/ws/DAO/class.ws.dao.book.php index b9617e1b0..081cd310c 100644 --- a/inc/ws/DAO/class.ws.dao.book.php +++ b/inc/ws/DAO/class.ws.dao.book.php @@ -38,6 +38,8 @@ class wsDAOBook extends commonDAO { $book->projet = $r->projet; $book->version = $r->version; $book->composition_update = $r->composition_update; + $book->dir_references = $r->dir_references; + $book->dir_hosting = $r->dir_hosting; return $book; } @@ -536,7 +538,7 @@ class wsDAOBook extends commonDAO { return false; } - $checks = array($r->changedate, cubeFiles::filemtimeRecursive(WS_COMPILE_ASSETS . '/_html5'), cubeFiles::filemtimeRecursive(ROOT.'/inc/ws/Util/html5')); + $checks = array($r->changedate, cubeFiles::filemtimeRecursive(WS_COMPILE_ASSETS . '/_html5'), cubeFiles::filemtimeRecursive(ROOT . '/inc/ws/Util/html5')); $reffile = WS_BOOKS . '/html5/' . $book_id; if (!file_exists($reffile)) { @@ -600,6 +602,14 @@ class wsDAOBook extends commonDAO { $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); } + public function setInstallDir($book_id, $dir, $server) { + $col = 'dir_' . $server; + + $c = $this->con->openCursor('books'); + $c->$col = $dir; + $c->update('WHERE book_id=\'' . $this->con->escape($book_id) . '\''); + } + public function makeTextsIndexes($book_id, &$index, &$textes) { $pages = $this->getPagesOfBook($book_id); $index = array(); diff --git a/inc/ws/DAO/class.ws.dao.demande.php b/inc/ws/DAO/class.ws.dao.demande.php index 44867a15a..d61869589 100644 --- a/inc/ws/DAO/class.ws.dao.demande.php +++ b/inc/ws/DAO/class.ws.dao.demande.php @@ -1,10 +1,13 @@ demande_id = $r->demande_id; $demande->type = $r->type; + $demande->type_nom = $core->demandes_type[$r->type]; $demande->pages = $r->pages; $demande->liens = $r->liens; $demande->langues = $r->langues; @@ -23,20 +26,17 @@ class wsDAODemande extends commonDAO { return $demande; } - protected function getNextId() - { + protected function getNextId() { $r = $this->con->select('SELECT MAX(demande_id) AS demande_id FROM demandes'); return $r->demande_id + 1; } - public function selectById($demande_id = null) - { + public function selectById($demande_id = null) { $r = $this->con->select('SELECT * FROM demandes_vue WHERE demande_id=\'' . $this->con->escape($demande_id) . '\' LIMIT 1'); return $this->singleton($r); } - public function getListe($orderby = null, $sens = null, $limit = null) - { + public function getListe($orderby = null, $sens = null, $limit = null) { global $core; if (!is_null($this->q)) { $where = ''; @@ -48,17 +48,16 @@ class wsDAODemande extends commonDAO { $where = $this->makeWhereFromFiltres(); } - $orderby = is_null($orderby)?'demande_id':$orderby; - $sens = is_null($sens)?'DESC':$sens; - $limit = is_null($limit)?'':$this->con->limit($limit[0], $limit[1]); + $orderby = is_null($orderby) ? 'demande_id' : $orderby; + $sens = is_null($sens) ? 'DESC' : $sens; + $limit = is_null($limit) ? '' : $this->con->limit($limit[0], $limit[1]); $sql = 'SELECT * FROM demandes_vue WHERE ' . $where . ' ORDER BY ' . $orderby . ' ' . $sens . ' ' . $limit; $r = $this->con->select($sql); return $this->factory($r); } - public function sauve($data) - { + public function sauve($data) { global $core; $c = $this->con->openCursor('demandes'); @@ -84,15 +83,27 @@ class wsDAODemande extends commonDAO { return $this->selectById($demande_id); } - public function setAdministrateur($demande_id, $administrateur) - { + public function getMailto($demande_id) { + + $demande = $this->selectById($demande_id); + + $daoUtilisateur = new commonDAOClient($this->con); + $user = $daoUtilisateur->selectById($demande->utilisateur); + + $res = 'mailto:'; + $res .= rawurlencode($user->prenom . ' ' . $user->nom . '<' . $user->email . '>'); + $res.='?subject=' . rawurlencode('Re: [Fluidbook] ' . __('Demande de devis')); + $res.='&body=' . rawurlencode(wsDemande::asMailBody($demande, $user)); + return $res; + } + + public function setAdministrateur($demande_id, $administrateur) { $c = $this->con->openCursor('demandes'); $c->administrateur = $administrateur; $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); } - public function reinitDemande($demande_id) - { + public function reinitDemande($demande_id) { $c = $this->con->openCursor('demandes'); $c->administrateur = 0; $c->revendeur = 0; @@ -100,8 +111,7 @@ class wsDAODemande extends commonDAO { $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); } - public function accepteDemande($demande_id, $revendeur) - { + public function accepteDemande($demande_id, $revendeur) { $c = $this->con->openCursor('demandes'); $c->status = 2; $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); @@ -113,8 +123,7 @@ class wsDAODemande extends commonDAO { return $demande; } - public function setRevendeur($demande_id, $revendeur) - { + public function setRevendeur($demande_id, $revendeur) { // Mets à jour l'entreprise $c = $this->con->openCursor('demandes'); $c->revendeur = $revendeur; @@ -125,19 +134,16 @@ class wsDAODemande extends commonDAO { return $demande; } - public function count() - { + public function count() { $r = $this->con->select('SELECT COUNT(*) AS nb FROM demandes WHERE ' . $this->makeWhereFromFiltres()); return $r->nb; } - public function supprime($demande_id) - { + public function supprime($demande_id) { $this->con->execute('DELETE FROM demandes WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); } - protected function makeWhereFromFiltres() - { + protected function makeWhereFromFiltres() { global $core; if (!is_null($this->filtres)) { $w = array('1=1'); @@ -147,7 +153,7 @@ class wsDAODemande extends commonDAO { if (commonFiltre::test('demande_moi', $this->filtres)) { $keys = array_keys($this->filtres['demande_moi']); - foreach($keys as $k) { + foreach ($keys as $k) { if ($k == 'moi') { $w[] = 'revendeur=' . $core->user->utilisateur_id; } elseif ($k == 'autres') { @@ -160,6 +166,7 @@ class wsDAODemande extends commonDAO { return '1=1'; } } + } ?> \ No newline at end of file diff --git a/inc/ws/Metier/class.ws.book.php b/inc/ws/Metier/class.ws.book.php index 131840c1a..bf14ca7c6 100644 --- a/inc/ws/Metier/class.ws.book.php +++ b/inc/ws/Metier/class.ws.book.php @@ -30,7 +30,8 @@ class wsBook extends cubeMetier { protected $compiledate; protected $composition_update; protected $version; - + protected $dir_references; + protected $dir_hosting; public function __get($varname) { if (!property_exists($this, $varname)) { @@ -39,8 +40,8 @@ class wsBook extends cubeMetier { throw new Exception($msg); } - $classic = array('chapters', 'specialLinks','specialRulers', 'traductions'); - $assoc=array('specialLinks','specialRulers'); + $classic = array('chapters', 'specialLinks', 'specialRulers', 'traductions'); + $assoc = array('specialLinks', 'specialRulers'); if (in_array($varname, $classic)) { if (is_array($this->$varname) || is_object($this->$varname)) { @@ -49,7 +50,7 @@ class wsBook extends cubeMetier { if ($this->$varname == '') { $this->$varname = array(); } else { - $this->$varname = json_decode($this->$varname,in_array($varname,$assoc)); + $this->$varname = json_decode($this->$varname, in_array($varname, $assoc)); } return $this->$varname; } diff --git a/inc/ws/Metier/class.ws.demande.php b/inc/ws/Metier/class.ws.demande.php index a04f7d04f..30bd75acc 100644 --- a/inc/ws/Metier/class.ws.demande.php +++ b/inc/ws/Metier/class.ws.demande.php @@ -1,23 +1,54 @@ __('Type'), + 'pages' => __('Pages'), + 'liens' => __('Liens'), + 'langues' => __('Langues'), + 'details' => __('Commentaires')); + foreach ($fields as $p => $t) { + if ($demande->$p != '') { + $body .= ' * ' . $t . ' : ' . $demande->$p . "\r\n"; + } + } + + $body .= "\r\n" . '---- ' . __('Coordonnées') . ' ----' . "\r\n"; + $fields = array('email' => __('Email'), + 'prenom' => __('Prenom'), + 'nom' => __('Nom'), + 'rs' => __('Entreprise'), + 'adresse' => __('Adresse'), + 'code_postal' => __('Code postal'), + 'ville' => __('Ville'), + 'pays' => 'Pays'); + foreach ($fields as $p => $t) { + if ($utilisateur->$p != '') { + $body .= ' * ' . $t . ' : ' . $utilisateur->$p . "\r\n"; + } + } + return $body; + } + } ?> \ No newline at end of file diff --git a/inc/ws/Util/packager/class.ws.packager.html.php b/inc/ws/Util/packager/class.ws.packager.html.php index 75df04b9d..f31b6bc23 100644 --- a/inc/ws/Util/packager/class.ws.packager.html.php +++ b/inc/ws/Util/packager/class.ws.packager.html.php @@ -1,20 +1,20 @@ version = 'html'; } - protected function preparePackage() - { + protected function preparePackage() { parent::preparePackage(); if ($this->book->parametres->offlineExport) { $versions = array('win-ins' => 'exe', 'mac-exe' => 'zip'); - foreach($versions as $v => $ext) { + foreach ($versions as $v => $ext) { $a = wsPackager::package($this->book_id, $v); rename(ROOT . $a, $this->vdir . '/data/document.' . $ext); } @@ -55,7 +55,7 @@ class wsPackagerHTML extends wsPackager { $nav = $this->makeHTMLNav(false); $footer = $this->makeHTMLFooter(); - foreach($this->pages as $page => $infos) { + foreach ($this->pages as $page => $infos) { $pathToIndex = 'index.swf'; $pathToGetflash = 'getflash.gif'; $redirectScript = ''; @@ -83,7 +83,7 @@ class wsPackagerHTML extends wsPackager { } $alt .= $footer; - $data = str_replace('$alt', $alt , $this->origHTML); + $data = str_replace('$alt', $alt, $this->origHTML); $data = str_replace('$pathToIndex', $pathToIndex, $data); $data = str_replace('$pathToGetflash', $pathToGetflash, $data); $data = str_replace('$redirectScript', $redirectScript, $data); @@ -92,16 +92,17 @@ class wsPackagerHTML extends wsPackager { } } - public function makePackage() - { - parent::makePackage(); - return $this->zip(); + public function makePackage($zip) { + parent::makePackage($zip); + if ($zip) { + return $this->zip(); + } + return $this->vdir; } - protected function makeHTMLNav($root) - { + protected function makeHTMLNav($root) { $res = '
' . commonUrl::orderby('#', 'book_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Titre de la publication'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Date'), 'date', $settings, 'sort' . $change) . '' . commonUrl::orderby(__(''), 'lang', $settings, 'sort' . $change) . '' . __('Pages') . '' . $book->book_id . '' . html::escapeHTML($book->nom) . '' . date('Y-m-d', $book->date) . '' . mb_strtoupper($book->lang) . '' . $book->parametres->pages . ''; + $res .= ''; $res .= commonPage::pager($settings['page'], $dao->count($core->user), $settings['par_page'], 'page' . $change . '/%d'); $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('publications'), false); $res .= '
' . __("Le téléchargement du fluidbook implique qu'il a été testé et définitivement validé.") . '
' . __("Si vous le téléchargez, il vous sera facturé selon les conditions stipulées dans votre contrat.") . '
' . __("Le téléchargement du fluidbook implique qu'il a été testé et définitivement validé.") . '
' . __("Si vous le téléchargez, il vous sera facturé selon les conditions stipulées dans votre contrat.") . '
' . __("Dossier d'installation") . '' . $s . ' / ' . form::field('dir', 50, 50, $dir) . '
' . __("A l'issue de l'installation, vous serez dirigé vers le serveur sur lequel la publication a été installée") . '
' . __("Détails de la demande") . '' . __('Votre action') . '
' . __('Numéro de demande') . '' . $demande->demande_id . '' . '' . cubeMedia::cssRollover($core->typo->BookTelecharger(__('Accepter la demande'), '', false)) . '' . '
' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . '' . '' . cubeMedia::cssRollover($core->typo->Supprimer(__('Décliner la demande'), '', false)) . '' . '
' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . '
' . __('Client') . ' / ' . __('Prospect') . '' . $demande->utilisateur_nom . '
' . __('Nombre de pages') . '' . $demande->pages . '
' . __('Nombre de pages') . '' . $demande->pages . '' . '' . cubeMedia::cssRollover($core->typo->Supprimer(__('Décliner la demande'), '', false)) . '' . '
' . __('Nombre de liens') . '' . $demande->liens . '
' . __('Nombre de langues') . '' . $demande->langues . '
' . __('Détails') . '' . $demande->details . '