From 2c77d95a232d8e92783ae5ec039a51cc5ae01319 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Tue, 24 Nov 2020 19:36:55 +0000 Subject: [PATCH] wip #3753 @3 --- inc/commons/class.common.core.php | 7 +- inc/commons/class.common.tools.php | 45 ++- inc/ws/Controlleur/class.ws.maintenance.php | 66 +++- inc/ws/Controlleur/class.ws.url.php | 7 +- inc/ws/Controlleur/class.ws.users.tree.php | 15 + inc/ws/DAO/class.ws.dao.demande.php | 349 ++++++++++---------- inc/ws/Metier/class.ws.demande.php | 5 +- 7 files changed, 308 insertions(+), 186 deletions(-) diff --git a/inc/commons/class.common.core.php b/inc/commons/class.common.core.php index b9d2d3f84..31bf0feb1 100644 --- a/inc/commons/class.common.core.php +++ b/inc/commons/class.common.core.php @@ -150,6 +150,7 @@ class commonCore extends cubeCore $db->utilisateurs->ws_settings('text', 0, false); $db->utilisateurs->ws_rights('text', 0, false); $db->utilisateurs->ws_domains('text', 0, false); + $db->utilisateurs->ws_count('integer', 0, false); $db->utilisateurs->enabled('integer', 0, false, '1'); // Clés $db->utilisateurs->primary('pk_utilisateurs', 'utilisateur_id'); @@ -465,6 +466,7 @@ class commonCore extends cubeCore $db->demandes->revendeur('integer', 0, false); $db->demandes->utilisateur('integer', 0, false); $db->demandes->administrateur('integer', 0, false); + $db->demandes->gclid('varchar', 256, false); // Clés $db->demandes->primary('pk_demandes', 'demande_id'); @@ -532,9 +534,8 @@ class commonCore extends cubeCore } - $this->views->createView('e2_u', 'SELECT id AS utilisateur_id, enabled, email, password, e1_ws_password AS ws_password, firstname AS prenom, lastname AS nom, phone AS telephone,e1_mobile AS mobile,e1_fax as fax, locale AS lang, - e1_ws_settings AS ws_settings, e1_settings AS settings, e1_ws_rights AS ws_rights, e1_ws_domains AS ws_domains, e1_login AS login,e1_grade AS grade,e1_resetpassword AS reset_password, + e1_ws_settings AS ws_settings, e1_settings AS settings, e1_ws_rights AS ws_rights, e1_ws_domains AS ws_domains, e1_ws_count AS ws_count, e1_login AS login,e1_grade AS grade,e1_resetpassword AS reset_password, JSON_UNQUOTE(address->"$.address") AS adresse, JSON_UNQUOTE(address->"$.postcode") AS code_postal, JSON_UNQUOTE(address->"$.country") AS pays, @@ -680,7 +681,7 @@ LEFT JOIN e2_u a ON ri.administrateur_id=a.utilisateur_id'); . 'FROM themes t ' . 'LEFT JOIN themes_books_nb b ON t.theme_id=b.theme ' . 'LEFT JOIN utilisateurs_entreprise e ON t.proprietaire=e.utilisateur_id'); - $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 ' + $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, c.ws_count AS fluidbooks, IF(d.gclid=\'\',\'Organic\',\'Paid\') AS origin ' . 'FROM demandes d ' . 'LEFT JOIN utilisateurs_entreprise r ON d.revendeur=r.utilisateur_id ' . 'LEFT JOIN utilisateurs_entreprise c ON d.utilisateur=c.utilisateur_id ' diff --git a/inc/commons/class.common.tools.php b/inc/commons/class.common.tools.php index 4d8f0105a..5aec2d6bc 100644 --- a/inc/commons/class.common.tools.php +++ b/inc/commons/class.common.tools.php @@ -1187,7 +1187,7 @@ class commonTools 'ascocelda' => 'Asco & Celda', 'wesco' => 'Wesco', 'mopec' => 'Mopec', - 'intex'=>'Intex']; + 'intex' => 'Intex']; $options = array_flip($options); ksort($options); @@ -1389,7 +1389,7 @@ class commonTools $res = commonPage::barre(); $res .= commonPage::tMain(); $res .= commonPage::bh(); - $res .= '
'; + $res .= ''; $res .= ''; $res .= ''; $res .= ''; @@ -1421,6 +1421,16 @@ class commonTools die(json_encode($res)); } + public static function convertXlsxToColumnKeysJson($args) + { + require_once ROOT . '/inc/ws/Util/class.ws.util.php'; + $res = wsUtil::excelToArrayKeyVars($_FILES['file']['tmp_name']); + + ob_end_clean(); + header('Content-Type: application/json'); + die(json_encode($res)); + } + public static function convertXlsxToKeyValueJson($args) { new PHPExcel(); @@ -1646,6 +1656,37 @@ class commonTools return $res; } + + public function optimizeImages() + { + global $core; + + commonDroits::min(1); + + if (is_array($error)) { + $errorMessage = ''; + } else { + $errorMessage = $error; + } + + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= ''; + $res .= '
' . __('Convertir un xlsx en json') . '
' . __('Charger un fichier excel') . '
'; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= '
' . __('Optimiser des images') . '
Images source
Format
' . $core->typo->BoutonOK(__('Genérer la bibliothèque')) . '
'; + $res .= '
'; + $res .= ''; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function buildIpGlobal() { diff --git a/inc/ws/Controlleur/class.ws.maintenance.php b/inc/ws/Controlleur/class.ws.maintenance.php index d76a03d28..25f8dc1f6 100644 --- a/inc/ws/Controlleur/class.ws.maintenance.php +++ b/inc/ws/Controlleur/class.ws.maintenance.php @@ -186,6 +186,12 @@ class wsMaintenance // $core->refreshWSUsersTree(); // } + public static function refreshUsersTree() + { + global $core; + $core->refreshWSUsersTree(); + } + public static function exportSommaire($args) { global $core; @@ -1119,6 +1125,17 @@ class wsMaintenance exit; } + public static function installPetzl() + { + CubeIT_Util_PHP::neverStop(); + $langs = ['FR' => 19014, 'EN' => 19092, 'IT' => 19099, 'JP' => 19101, 'KR' => 19103, 'NL' => 19104, 'PL' => 19105, 'RU' => 19106, 'CN' => 19107, 'CZ' => 19108, 'DE' => 19109, 'ES' => 19111, 'HU' => 19112]; + foreach ($langs as $lang => $fbid) { + $exporter = new wsExporter(); + $exporter->export($fbid, $x, 'install_hosting', 'online', "Petzl/Petzl-pro-catalog-2021/" . $lang, ''); + } + exit; + } + public static function fixStats($args) { // commonDroits::min(5); @@ -1369,17 +1386,26 @@ class wsMaintenance } } - public static function makeWSexe() + public static function makeWSexe($args) { + $platform = $args[0] ?: 'windows'; + + if ($platform === 'windows') { + $p = 'windows-x32'; + $exe = 'workshop'; + } else if ($platform === 'mac') { + $p = 'mac-x64'; + $exe = 'Fluidbook Workshop'; + } $path = ROOT . '/desktop'; - $outpath = $path . '/windows'; + $outpath = $path . '/' . $platform; $cl = new CubeIT_CommandLine('/usr/local/web2exe/web2exe-linux'); $cl->setPath(CONVERTER_PATH); $cl->setEnv('TMPDIR', '/home/extranetfiles/tmp'); $cl->setLongArgumentSeparator(' '); - $cl->setArg('export-to', 'windows-x32'); + $cl->setArg('export-to', $p); $cl->setArg('uncompressed-folder'); $cl->setArg('title', 'Fluidbook Workshop'); $cl->setArg('output-dir', $outpath); @@ -1387,13 +1413,16 @@ class wsMaintenance //$cl->setArg('sdk-build'); $cl->setArg('main', 'index.html'); $cl->setArg('package-json'); - $cl->setArg('name', 'FluidbookWorkshop.exe'); - //$cl->setArg('mac-icon', $this->vdir . 'icon.icns'); - $cl->setArg('exe-icon', $path . '/assets/fluidbook.ico'); + //$cl->setArg('name', 'FluidbookWorkshop.exe'); + if ($platform === 'mac') { + $cl->setArg('mac-icon', $path . '/assets/fluidbook.icns'); + } else if ($platform === 'windows') { + $cl->setArg('exe-icon', $path . '/assets/fluidbook.ico'); + } $cl->setArg('icon', $path . '/assets/fluidbook.png'); $cl->setArg('width', 1600); $cl->setArg('height', 800); - $cl->setArg('app-name', 'workshop'); + $cl->setArg('app-name', $exe); $cl->setArg('version', '1.0'); $cl->setArg('id', 'com.fluidbook.workshop'); $cl->setArg('verbose'); @@ -1405,10 +1434,25 @@ class wsMaintenance echo $cl->commande . "\n"; echo $cl->output . "\n"; - copy(WS_COMPILE_ASSETS . '/_exehtml/_ffmpeg/ffmpeg.dll', $outpath . '/workshop/windows-x32/ffmpeg.dll'); - $pepper = $path . '/assets/PepperFlash'; - `cp -r $pepper $outpath/workshop/windows-x32/`; - + if ($platform === 'windows') { + copy(WS_COMPILE_ASSETS . '/_exehtml/_ffmpeg/ffmpeg.dll', $outpath . '/workshop/' . $p . '/ffmpeg.dll'); + $pepper = $path . '/assets/PepperFlash'; + `cp -r $pepper $outpath/workshop/windows-x32/`; + } else if ($platform === 'mac') { + $appContainer = $outpath . '/' . $exe . '/' . $p; + $appPath = $appContainer . '/' . $exe . '.app'; +// $current = $appPath . '/Contents/Frameworks/nwjs Framework.framework/Versions/86.0.4240.111'; +// $pepper = $path . '/assets/mac/PepperFlash'; +// $dest = $current . '/Internet Plug-Ins/'; +// if (!file_exists($dest)) { +// mkdir($dest, 0777, true); +// } +// echo `cp -rv $pepper "$dest"`; + //copy(WS_COMPILE_ASSETS . '/_exehtml/_ffmpeg/libffmpeg.dylib', $current . '/libffmpeg.dylib'); + echo wsPackagerMacEXEHTML::_signApp($appPath, false); + //unlink($appContainer . '/credits.html'); + //CubeIT_Util_Zip::archive($appContainer, $appPath . '.zip'); + } } } diff --git a/inc/ws/Controlleur/class.ws.url.php b/inc/ws/Controlleur/class.ws.url.php index 08b54660f..314b937d4 100644 --- a/inc/ws/Controlleur/class.ws.url.php +++ b/inc/ws/Controlleur/class.ws.url.php @@ -1802,6 +1802,7 @@ html,body{height:100%;cursor: wait;font-family: "Open Sans", Arial;background-co $filtres = array(); $filtres[] = new commonFiltre(__('Statut'), 'status_demande', $settings['filtres']); $filtres[] = new commonFiltre(__('Confiées à'), 'demande_moi', $settings['filtres']); + // $filtres[] = new commonFiltre(__('Origine'), 'demande_origine', $settings['filtres']); $res = commonPage::barre($filtres, 'filtreDemandes', 'demandes', $shortcuts); $res .= commonPage::tMain(); @@ -1830,11 +1831,12 @@ html,body{height:100%;cursor: wait;font-family: "Open Sans", Arial;background-co $res = ''; $res .= ''; $res .= ''; - $res .= ''; $res .= ''; $res .= ''; $res .= ''; $res .= ''; + $res .= ''; + $res .= ''; $res .= ''; $i = 0; foreach ($liste as $id => $demande) { @@ -1842,7 +1844,6 @@ html,body{height:100%;cursor: wait;font-family: "Open Sans", Arial;background-co $res .= ''; $res .= ''; $res .= ''; - $res .= ''; $res .= ''; $revendeur = $demande->revendeur == 0 ? '-' : $demande->revendeur_nom; $res .= ''; @@ -1859,6 +1860,8 @@ html,body{height:100%;cursor: wait;font-family: "Open Sans", Arial;background-co $res .= ''; } } + $res .= ''; + $res .= ''; // On ne peut éditer que si la facture est non traitée et qu'elle n'a pas commencé à être éditée par un autre administrateur if (($demande->administrateur == 0 || $demande->administrateur == $core->user->utilisateur_id) && $demande->status == 0) { $res .= ''; diff --git a/inc/ws/Controlleur/class.ws.users.tree.php b/inc/ws/Controlleur/class.ws.users.tree.php index e3f8066e4..c175a7048 100644 --- a/inc/ws/Controlleur/class.ws.users.tree.php +++ b/inc/ws/Controlleur/class.ws.users.tree.php @@ -46,6 +46,16 @@ class wsUsersTree $this->domains[$r->utilisateur_id] = mb_strtolower($d[1]); } + $daoBook = new wsDAOBook($this->con); + $books = $daoBook->selectAll(); + $owners = []; + foreach ($books as $book) { + if (!isset($owners[$book->proprietaire_id])) { + $owners[$book->proprietaire_id] = 0; + } + $owners[$book->proprietaire_id]++; + } + $this->facturables = $this->getFacturables(); // Fabrication de l'arbre $c = $this->con->openCursor('ws_users_tree'); @@ -131,6 +141,11 @@ class wsUsersTree $c = $this->con->openCursor('extranet_users.user'); foreach ($this->admins as $admin => $list) { + $wscount = 0; + foreach ($list as $item) { + $wscount += $owners[$item]; + } + $c->e1_ws_count = $wscount; $c->e1_ws_rights = implode(',', $list); $c->e1_ws_domains = implode(',', $adom[$admin]); $c->update('WHERE id=\'' . $this->con->escape($admin) . '\''); diff --git a/inc/ws/DAO/class.ws.dao.demande.php b/inc/ws/DAO/class.ws.dao.demande.php index d61869589..af7e74455 100644 --- a/inc/ws/DAO/class.ws.dao.demande.php +++ b/inc/ws/DAO/class.ws.dao.demande.php @@ -1,171 +1,188 @@ 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; - $demande->details = $r->details; - $demande->date = $r->date; - $demande->utilisateur = $r->utilisateur; - $demande->status = $r->status; - $demande->revendeur = $r->revendeur; - $demande->administrateur = $r->administrateur; - - $demande->utilisateur_nom = $r->utilisateur_nom; - $demande->revendeur_nom = $r->revendeur_nom; - $demande->entreprise = $r->entreprise; - $demande->administrateur_nom = $r->administrateur_nom; - - return $demande; - } - - 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) { - $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) { - global $core; - if (!is_null($this->q)) { - $where = ''; - $where .= 'demande_id=\'' . $this->con->escape($this->q) . '\' OR '; - $where .= 'utilisateur_nom LIKE \'%' . $this->con->escape($this->q) . '%\' OR '; - $where .= 'revendeur_nom LIKE \'%' . $this->con->escape($this->q) . '%\' OR '; - $limit = null; - } else { - $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]); - - $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) { - global $core; - - $c = $this->con->openCursor('demandes'); - $c->type = $data['type']; - $c->pages = $data['pages']; - $c->liens = $data['liens']; - $c->langues = $data['langues']; - $c->details = $data['details']; - $c->utilisateur = $data['utilisateur']; - $c->revendeur = $data['revendeur']; - $c->administrateur = $data['administrateur']; - $c->status = $data['status']; - - if ($data['demande_id'] == 'new' || $data['demande_id'] == '') { - $c->date = TIME; - $demande_id = $c->demande_id = $this->getNextId(); - $c->insert(); - } else { - $demande_id = $data['demande_id']; - $c->update('WHERE demande_id=\'' . $this->con->escape($data['demande_id']) . '\''); - } - - return $this->selectById($demande_id); - } - - 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) { - $c = $this->con->openCursor('demandes'); - $c->administrateur = 0; - $c->revendeur = 0; - $c->status = 0; - $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); - } - - public function accepteDemande($demande_id, $revendeur) { - $c = $this->con->openCursor('demandes'); - $c->status = 2; - $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); - - $demande = $this->selectById($demande_id); - // Mets également à jour l'entreprise afin d'associer client et revendeur - $daoEntreprise = new commonDAOEntreprise($this->con); - $daoEntreprise->setWSAdmin($demande->entreprise, $revendeur); - return $demande; - } - - public function setRevendeur($demande_id, $revendeur) { - // Mets à jour l'entreprise - $c = $this->con->openCursor('demandes'); - $c->revendeur = $revendeur; - $c->status = 1; - $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); - - $demande = $this->selectById($demande_id); - return $demande; - } - - public function count() { - $r = $this->con->select('SELECT COUNT(*) AS nb FROM demandes WHERE ' . $this->makeWhereFromFiltres()); - return $r->nb; - } - - public function supprime($demande_id) { - $this->con->execute('DELETE FROM demandes WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); - } - - protected function makeWhereFromFiltres() { - global $core; - if (!is_null($this->filtres)) { - $w = array('1=1'); - if (commonFiltre::test('status_demande', $this->filtres)) { - $w[] = 'status IN(' . implode(',', array_keys($this->filtres['status_demande'])) . ')'; - } - if (commonFiltre::test('demande_moi', $this->filtres)) { - $keys = array_keys($this->filtres['demande_moi']); - - foreach ($keys as $k) { - if ($k == 'moi') { - $w[] = 'revendeur=' . $core->user->utilisateur_id; - } elseif ($k == 'autres') { - $w[] = 'revendeur!=' . $core->user->utilisateur_id; - } - } - } - return implode(' AND ', $w); - } else { - return '1=1'; - } - } +class wsDAODemande extends commonDAO +{ + + protected function singleton($r) + { + global $core; + $demande = new wsDemande(); + $demande->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; + $demande->details = $r->details; + $demande->date = $r->date; + $demande->utilisateur = $r->utilisateur; + $demande->status = $r->status; + $demande->revendeur = $r->revendeur; + $demande->administrateur = $r->administrateur; + + $demande->utilisateur_nom = $r->utilisateur_nom; + $demande->revendeur_nom = $r->revendeur_nom; + $demande->entreprise = $r->entreprise; + $demande->administrateur_nom = $r->administrateur_nom; + $demande->origin = $r->origin; + $demande->fluidbooks = $r->fluidbooks; + + return $demande; + } + + 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) + { + $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) + { + global $core; + if (!is_null($this->q)) { + $where = ''; + $where .= 'demande_id=\'' . $this->con->escape($this->q) . '\' OR '; + $where .= 'utilisateur_nom LIKE \'%' . $this->con->escape($this->q) . '%\' OR '; + $where .= 'revendeur_nom LIKE \'%' . $this->con->escape($this->q) . '%\' OR '; + $limit = null; + } else { + $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]); + + $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) + { + global $core; + + $c = $this->con->openCursor('demandes'); + $c->type = $data['type']; + $c->pages = $data['pages']; + $c->liens = $data['liens']; + $c->langues = $data['langues']; + $c->details = $data['details']; + $c->utilisateur = $data['utilisateur']; + $c->revendeur = $data['revendeur']; + $c->administrateur = $data['administrateur']; + $c->status = $data['status']; + $c->gclid = $data['gclid']; + + if ($data['demande_id'] == 'new' || $data['demande_id'] == '') { + $c->date = TIME; + $demande_id = $c->demande_id = $this->getNextId(); + $c->insert(); + } else { + $demande_id = $data['demande_id']; + $c->update('WHERE demande_id=\'' . $this->con->escape($data['demande_id']) . '\''); + } + + return $this->selectById($demande_id); + } + + 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) + { + $c = $this->con->openCursor('demandes'); + $c->administrateur = 0; + $c->revendeur = 0; + $c->status = 0; + $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); + } + + public function accepteDemande($demande_id, $revendeur) + { + $c = $this->con->openCursor('demandes'); + $c->status = 2; + $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); + + $demande = $this->selectById($demande_id); + // Mets également à jour l'entreprise afin d'associer client et revendeur + $daoEntreprise = new commonDAOEntreprise($this->con); + $daoEntreprise->setWSAdmin($demande->entreprise, $revendeur); + return $demande; + } + + public function setRevendeur($demande_id, $revendeur) + { + // Mets à jour l'entreprise + $c = $this->con->openCursor('demandes'); + $c->revendeur = $revendeur; + $c->status = 1; + $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); + + $demande = $this->selectById($demande_id); + return $demande; + } + + public function count() + { + $r = $this->con->select('SELECT COUNT(*) AS nb FROM demandes WHERE ' . $this->makeWhereFromFiltres()); + return $r->nb; + } + + public function supprime($demande_id) + { + $this->con->execute('DELETE FROM demandes WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); + } + + protected function makeWhereFromFiltres() + { + global $core; + if (!is_null($this->filtres)) { + $w = array('1=1'); + if (commonFiltre::test('status_demande', $this->filtres)) { + $w[] = 'status IN(' . implode(',', array_keys($this->filtres['status_demande'])) . ')'; + } + if (commonFiltre::test('demande_moi', $this->filtres)) { + $keys = array_keys($this->filtres['demande_moi']); + + foreach ($keys as $k) { + if ($k == 'moi') { + $w[] = 'revendeur=' . $core->user->utilisateur_id; + } elseif ($k == 'autres') { + $w[] = 'revendeur!=' . $core->user->utilisateur_id; + } + } + } + return implode(' AND ', $w); + } else { + return '1=1'; + } + } } diff --git a/inc/ws/Metier/class.ws.demande.php b/inc/ws/Metier/class.ws.demande.php index d6eb47096..a9ddd1fb6 100644 --- a/inc/ws/Metier/class.ws.demande.php +++ b/inc/ws/Metier/class.ws.demande.php @@ -18,6 +18,9 @@ class wsDemande extends cubeMetier { protected $revendeur_nom; protected $entreprise; protected $administrateur_nom; + protected $gclid; + protected $origin; + protected $fluidbooks; public static function asMailBody($demande, $utilisateur) { $body = "\r\n---- " . __('Demande') . ' ----' . "\r\n"; @@ -54,5 +57,3 @@ class wsDemande extends cubeMetier { } } - -?> \ No newline at end of file -- 2.39.5
' . commonUrl::orderby('#', 'demande_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Date'), 'date', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Type'), 'type', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Prospect') . '/' . __('Client'), 'utilisateur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Confiée à'), 'revendeur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Gérée par'), 'administrateur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Statut'), 'status', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Origine'), 'origin', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Fluidbooks'), 'fluidbooks', $settings, 'sort' . $change) . '
' . $demande->demande_id . '' . date(__('d/m/Y H:i'), $demande->date) . '' . $core->demandes_type[$demande->type] . '' . $demande->utilisateur_nom . '' . $revendeur . '' . $core->demandes_status[$demande->status] . ' (x)' . $demande->origin . '' . $demande->fluidbooks . '' . cubeMedia::image(IMG . '/edit.png') . '