$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->ws_count('integer', 0, false);\r
$db->utilisateurs->enabled('integer', 0, false, '1');\r
// Clés\r
$db->utilisateurs->primary('pk_utilisateurs', 'utilisateur_id');\r
$db->demandes->revendeur('integer', 0, false);\r
$db->demandes->utilisateur('integer', 0, false);\r
$db->demandes->administrateur('integer', 0, false);\r
+ $db->demandes->gclid('varchar', 256, false);\r
// Clés\r
$db->demandes->primary('pk_demandes', 'demande_id');\r
\r
\r
}\r
\r
-\r
$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,\r
- 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,\r
+ 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,\r
JSON_UNQUOTE(address->"$.address") AS adresse,\r
JSON_UNQUOTE(address->"$.postcode") AS code_postal,\r
JSON_UNQUOTE(address->"$.country") AS pays,\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
+ $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 '\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
'ascocelda' => 'Asco & Celda',
'wesco' => 'Wesco',
'mopec' => 'Mopec',
- 'intex'=>'Intex'];
+ 'intex' => 'Intex'];
$options = array_flip($options);
ksort($options);
$res = commonPage::barre();
$res .= commonPage::tMain();
$res .= commonPage::bh();
- $res .= '<form action="' . SITE_PATH . 'tools/convertXlsxToJson" method="post" class="notajax" enctype="multipart/form-data">';
+ $res .= '<form action="' . SITE_PATH . 'tools/convertXlsxToColumnKeysJson" method="post" class="notajax" enctype="multipart/form-data">';
$res .= '<table class="liste">';
$res .= '<tr><th><strong>' . __('Convertir un xlsx en json') . '</strong></th></tr>';
$res .= '<tr><td>' . __('Charger un fichier excel') . '</td></tr>';
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();
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 .= '<form action="' . SITE_PATH . 'tools/optimizeImages" method="post" class="notajax" enctype="multipart/form-data">';
+ $res .= '<table class="liste">';
+ $res .= '<tr><th><strong>' . __('Optimiser des images') . '</strong></th></tr>';
+ $res .= '<tr class="odd"><td>Images source</td><td><input type="file" name="file[]" multiple /></td></tr>';
+ $res .= '<tr class="odd"><td>Format</td><td><select name="format"><option></option></select> </td></tr>';
+ $res .= '<tr><td class="right"><a href="#" class="submit">' . $core->typo->BoutonOK(__('Genérer la bibliothèque')) . '</a></td></td>';
+ $res .= '</table>';
+ $res .= '</form>';
+ $res .= '</div>';
+ $res .= commonPage::bf();
+ $res .= commonPage::bMain();
+ return $res;
+ }
+
+
public static function buildIpGlobal()
{
// $core->refreshWSUsersTree();
// }
+ public static function refreshUsersTree()
+ {
+ global $core;
+ $core->refreshWSUsersTree();
+ }
+
public static function exportSommaire($args)
{
global $core;
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);
}
}
- 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);
//$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');
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');
+ }
}
}
$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();
$res = '<table class="liste">';
$res .= '<tr><th>' . commonUrl::orderby('#', 'demande_id', $settings, 'sort' . $change) . '</th>';
$res .= '<th>' . commonUrl::orderby(__('Date'), 'date', $settings, 'sort' . $change) . '</th>';
- $res .= '<th>' . commonUrl::orderby(__('Type'), 'type', $settings, 'sort' . $change) . '</th>';
$res .= '<th>' . commonUrl::orderby(__('Prospect') . '/' . __('Client'), 'utilisateur_nom', $settings, 'sort' . $change) . '</th>';
$res .= '<th>' . commonUrl::orderby(__('Confiée à'), 'revendeur_nom', $settings, 'sort' . $change) . '</th>';
$res .= '<th>' . commonUrl::orderby(__('Gérée par'), 'administrateur_nom', $settings, 'sort' . $change) . '</th>';
$res .= '<th>' . commonUrl::orderby(__('Statut'), 'status', $settings, 'sort' . $change) . '</th>';
+ $res .= '<th>' . commonUrl::orderby(__('Origine'), 'origin', $settings, 'sort' . $change) . '</th>';
+ $res .= '<th>' . commonUrl::orderby(__('Fluidbooks'), 'fluidbooks', $settings, 'sort' . $change) . '</th>';
$res .= '<th class="min"></th><th class="min"></th></tr>';
$i = 0;
foreach ($liste as $id => $demande) {
$res .= '<tr' . $odd . '>';
$res .= '<td>' . $demande->demande_id . '</td>';
$res .= '<td>' . date(__('d/m/Y H:i'), $demande->date) . '</td>';
- $res .= '<td>' . $core->demandes_type[$demande->type] . '</td>';
$res .= '<td><a href="#" class="popup" rel="formClient/' . $demande->entreprise . '">' . $demande->utilisateur_nom . '</a></td>';
$revendeur = $demande->revendeur == 0 ? '-' : $demande->revendeur_nom;
$res .= '<td>' . $revendeur . '</td>';
$res .= '<td>' . $core->demandes_status[$demande->status] . ' (<a href="#" class="ajax" rel="resetDemande/' . $demande->demande_id . '" title="' . __('Réinitialiser la demande') . '">x</a>)</td>';
}
}
+ $res .= '<td>' . $demande->origin . '</td>';
+ $res .= '<td>' . $demande->fluidbooks . '</td>';
// 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 .= '<td class="action"><a href="#" class="popup" rel="formDemande/' . $demande->demande_id . '">' . cubeMedia::image(IMG . '/edit.png') . '</a></td>';
$this->domains[$r->utilisateur_id] = mb_strtolower($d[1]);\r
}\r
\r
+ $daoBook = new wsDAOBook($this->con);\r
+ $books = $daoBook->selectAll();\r
+ $owners = [];\r
+ foreach ($books as $book) {\r
+ if (!isset($owners[$book->proprietaire_id])) {\r
+ $owners[$book->proprietaire_id] = 0;\r
+ }\r
+ $owners[$book->proprietaire_id]++;\r
+ }\r
+\r
$this->facturables = $this->getFacturables();\r
// Fabrication de l'arbre\r
$c = $this->con->openCursor('ws_users_tree');\r
\r
$c = $this->con->openCursor('extranet_users.user');\r
foreach ($this->admins as $admin => $list) {\r
+ $wscount = 0;\r
+ foreach ($list as $item) {\r
+ $wscount += $owners[$item];\r
+ }\r
+ $c->e1_ws_count = $wscount;\r
$c->e1_ws_rights = implode(',', $list);\r
$c->e1_ws_domains = implode(',', $adom[$admin]);\r
$c->update('WHERE id=\'' . $this->con->escape($admin) . '\'');\r
<?php\r
\r
-class wsDAODemande extends commonDAO {\r
-\r
- protected function singleton($r) {\r
- global $core;\r
- $demande = new wsDemande();\r
- $demande->demande_id = $r->demande_id;\r
- $demande->type = $r->type;\r
- $demande->type_nom = $core->demandes_type[$r->type];\r
- $demande->pages = $r->pages;\r
- $demande->liens = $r->liens;\r
- $demande->langues = $r->langues;\r
- $demande->details = $r->details;\r
- $demande->date = $r->date;\r
- $demande->utilisateur = $r->utilisateur;\r
- $demande->status = $r->status;\r
- $demande->revendeur = $r->revendeur;\r
- $demande->administrateur = $r->administrateur;\r
-\r
- $demande->utilisateur_nom = $r->utilisateur_nom;\r
- $demande->revendeur_nom = $r->revendeur_nom;\r
- $demande->entreprise = $r->entreprise;\r
- $demande->administrateur_nom = $r->administrateur_nom;\r
-\r
- return $demande;\r
- }\r
-\r
- protected function getNextId() {\r
- $r = $this->con->select('SELECT MAX(demande_id) AS demande_id FROM demandes');\r
- return $r->demande_id + 1;\r
- }\r
-\r
- public function selectById($demande_id = null) {\r
- $r = $this->con->select('SELECT * FROM demandes_vue WHERE demande_id=\'' . $this->con->escape($demande_id) . '\' LIMIT 1');\r
- return $this->singleton($r);\r
- }\r
-\r
- public function getListe($orderby = null, $sens = null, $limit = null) {\r
- global $core;\r
- if (!is_null($this->q)) {\r
- $where = '';\r
- $where .= 'demande_id=\'' . $this->con->escape($this->q) . '\' OR ';\r
- $where .= 'utilisateur_nom LIKE \'%' . $this->con->escape($this->q) . '%\' OR ';\r
- $where .= 'revendeur_nom LIKE \'%' . $this->con->escape($this->q) . '%\' OR ';\r
- $limit = null;\r
- } else {\r
- $where = $this->makeWhereFromFiltres();\r
- }\r
-\r
- $orderby = is_null($orderby) ? 'demande_id' : $orderby;\r
- $sens = is_null($sens) ? 'DESC' : $sens;\r
- $limit = is_null($limit) ? '' : $this->con->limit($limit[0], $limit[1]);\r
-\r
- $sql = 'SELECT * FROM demandes_vue WHERE ' . $where . ' ORDER BY ' . $orderby . ' ' . $sens . ' ' . $limit;\r
- $r = $this->con->select($sql);\r
- return $this->factory($r);\r
- }\r
-\r
- public function sauve($data) {\r
- global $core;\r
-\r
- $c = $this->con->openCursor('demandes');\r
- $c->type = $data['type'];\r
- $c->pages = $data['pages'];\r
- $c->liens = $data['liens'];\r
- $c->langues = $data['langues'];\r
- $c->details = $data['details'];\r
- $c->utilisateur = $data['utilisateur'];\r
- $c->revendeur = $data['revendeur'];\r
- $c->administrateur = $data['administrateur'];\r
- $c->status = $data['status'];\r
-\r
- if ($data['demande_id'] == 'new' || $data['demande_id'] == '') {\r
- $c->date = TIME;\r
- $demande_id = $c->demande_id = $this->getNextId();\r
- $c->insert();\r
- } else {\r
- $demande_id = $data['demande_id'];\r
- $c->update('WHERE demande_id=\'' . $this->con->escape($data['demande_id']) . '\'');\r
- }\r
-\r
- return $this->selectById($demande_id);\r
- }\r
-\r
- public function getMailto($demande_id) {\r
-\r
- $demande = $this->selectById($demande_id);\r
-\r
- $daoUtilisateur = new commonDAOClient($this->con);\r
- $user = $daoUtilisateur->selectById($demande->utilisateur);\r
-\r
- $res = 'mailto:';\r
- $res .= rawurlencode($user->prenom . ' ' . $user->nom . '<' . $user->email . '>');\r
- $res.='?subject=' . rawurlencode('Re: [Fluidbook] ' . __('Demande de devis'));\r
- $res.='&body=' . rawurlencode(wsDemande::asMailBody($demande, $user));\r
- return $res;\r
- }\r
-\r
- public function setAdministrateur($demande_id, $administrateur) {\r
- $c = $this->con->openCursor('demandes');\r
- $c->administrateur = $administrateur;\r
- $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\'');\r
- }\r
-\r
- public function reinitDemande($demande_id) {\r
- $c = $this->con->openCursor('demandes');\r
- $c->administrateur = 0;\r
- $c->revendeur = 0;\r
- $c->status = 0;\r
- $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\'');\r
- }\r
-\r
- public function accepteDemande($demande_id, $revendeur) {\r
- $c = $this->con->openCursor('demandes');\r
- $c->status = 2;\r
- $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\'');\r
-\r
- $demande = $this->selectById($demande_id);\r
- // Mets également à jour l'entreprise afin d'associer client et revendeur\r
- $daoEntreprise = new commonDAOEntreprise($this->con);\r
- $daoEntreprise->setWSAdmin($demande->entreprise, $revendeur);\r
- return $demande;\r
- }\r
-\r
- public function setRevendeur($demande_id, $revendeur) {\r
- // Mets à jour l'entreprise\r
- $c = $this->con->openCursor('demandes');\r
- $c->revendeur = $revendeur;\r
- $c->status = 1;\r
- $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\'');\r
-\r
- $demande = $this->selectById($demande_id);\r
- return $demande;\r
- }\r
-\r
- public function count() {\r
- $r = $this->con->select('SELECT COUNT(*) AS nb FROM demandes WHERE ' . $this->makeWhereFromFiltres());\r
- return $r->nb;\r
- }\r
-\r
- public function supprime($demande_id) {\r
- $this->con->execute('DELETE FROM demandes WHERE demande_id=\'' . $this->con->escape($demande_id) . '\'');\r
- }\r
-\r
- protected function makeWhereFromFiltres() {\r
- global $core;\r
- if (!is_null($this->filtres)) {\r
- $w = array('1=1');\r
- if (commonFiltre::test('status_demande', $this->filtres)) {\r
- $w[] = 'status IN(' . implode(',', array_keys($this->filtres['status_demande'])) . ')';\r
- }\r
- if (commonFiltre::test('demande_moi', $this->filtres)) {\r
- $keys = array_keys($this->filtres['demande_moi']);\r
-\r
- foreach ($keys as $k) {\r
- if ($k == 'moi') {\r
- $w[] = 'revendeur=' . $core->user->utilisateur_id;\r
- } elseif ($k == 'autres') {\r
- $w[] = 'revendeur!=' . $core->user->utilisateur_id;\r
- }\r
- }\r
- }\r
- return implode(' AND ', $w);\r
- } else {\r
- return '1=1';\r
- }\r
- }\r
+class wsDAODemande extends commonDAO\r
+{\r
+\r
+ protected function singleton($r)\r
+ {\r
+ global $core;\r
+ $demande = new wsDemande();\r
+ $demande->demande_id = $r->demande_id;\r
+ $demande->type = $r->type;\r
+ $demande->type_nom = $core->demandes_type[$r->type];\r
+ $demande->pages = $r->pages;\r
+ $demande->liens = $r->liens;\r
+ $demande->langues = $r->langues;\r
+ $demande->details = $r->details;\r
+ $demande->date = $r->date;\r
+ $demande->utilisateur = $r->utilisateur;\r
+ $demande->status = $r->status;\r
+ $demande->revendeur = $r->revendeur;\r
+ $demande->administrateur = $r->administrateur;\r
+\r
+ $demande->utilisateur_nom = $r->utilisateur_nom;\r
+ $demande->revendeur_nom = $r->revendeur_nom;\r
+ $demande->entreprise = $r->entreprise;\r
+ $demande->administrateur_nom = $r->administrateur_nom;\r
+ $demande->origin = $r->origin;\r
+ $demande->fluidbooks = $r->fluidbooks;\r
+\r
+ return $demande;\r
+ }\r
+\r
+ protected function getNextId()\r
+ {\r
+ $r = $this->con->select('SELECT MAX(demande_id) AS demande_id FROM demandes');\r
+ return $r->demande_id + 1;\r
+ }\r
+\r
+ public function selectById($demande_id = null)\r
+ {\r
+ $r = $this->con->select('SELECT * FROM demandes_vue WHERE demande_id=\'' . $this->con->escape($demande_id) . '\' LIMIT 1');\r
+ return $this->singleton($r);\r
+ }\r
+\r
+ public function getListe($orderby = null, $sens = null, $limit = null)\r
+ {\r
+ global $core;\r
+ if (!is_null($this->q)) {\r
+ $where = '';\r
+ $where .= 'demande_id=\'' . $this->con->escape($this->q) . '\' OR ';\r
+ $where .= 'utilisateur_nom LIKE \'%' . $this->con->escape($this->q) . '%\' OR ';\r
+ $where .= 'revendeur_nom LIKE \'%' . $this->con->escape($this->q) . '%\' OR ';\r
+ $limit = null;\r
+ } else {\r
+ $where = $this->makeWhereFromFiltres();\r
+ }\r
+\r
+ $orderby = is_null($orderby) ? 'demande_id' : $orderby;\r
+ $sens = is_null($sens) ? 'DESC' : $sens;\r
+ $limit = is_null($limit) ? '' : $this->con->limit($limit[0], $limit[1]);\r
+\r
+ $sql = 'SELECT * FROM demandes_vue WHERE ' . $where . ' ORDER BY ' . $orderby . ' ' . $sens . ' ' . $limit;\r
+ $r = $this->con->select($sql);\r
+ return $this->factory($r);\r
+ }\r
+\r
+ public function sauve($data)\r
+ {\r
+ global $core;\r
+\r
+ $c = $this->con->openCursor('demandes');\r
+ $c->type = $data['type'];\r
+ $c->pages = $data['pages'];\r
+ $c->liens = $data['liens'];\r
+ $c->langues = $data['langues'];\r
+ $c->details = $data['details'];\r
+ $c->utilisateur = $data['utilisateur'];\r
+ $c->revendeur = $data['revendeur'];\r
+ $c->administrateur = $data['administrateur'];\r
+ $c->status = $data['status'];\r
+ $c->gclid = $data['gclid'];\r
+\r
+ if ($data['demande_id'] == 'new' || $data['demande_id'] == '') {\r
+ $c->date = TIME;\r
+ $demande_id = $c->demande_id = $this->getNextId();\r
+ $c->insert();\r
+ } else {\r
+ $demande_id = $data['demande_id'];\r
+ $c->update('WHERE demande_id=\'' . $this->con->escape($data['demande_id']) . '\'');\r
+ }\r
+\r
+ return $this->selectById($demande_id);\r
+ }\r
+\r
+ public function getMailto($demande_id)\r
+ {\r
+\r
+ $demande = $this->selectById($demande_id);\r
+\r
+ $daoUtilisateur = new commonDAOClient($this->con);\r
+ $user = $daoUtilisateur->selectById($demande->utilisateur);\r
+\r
+ $res = 'mailto:';\r
+ $res .= rawurlencode($user->prenom . ' ' . $user->nom . '<' . $user->email . '>');\r
+ $res .= '?subject=' . rawurlencode('Re: [Fluidbook] ' . __('Demande de devis'));\r
+ $res .= '&body=' . rawurlencode(wsDemande::asMailBody($demande, $user));\r
+ return $res;\r
+ }\r
+\r
+ public function setAdministrateur($demande_id, $administrateur)\r
+ {\r
+ $c = $this->con->openCursor('demandes');\r
+ $c->administrateur = $administrateur;\r
+ $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\'');\r
+ }\r
+\r
+ public function reinitDemande($demande_id)\r
+ {\r
+ $c = $this->con->openCursor('demandes');\r
+ $c->administrateur = 0;\r
+ $c->revendeur = 0;\r
+ $c->status = 0;\r
+ $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\'');\r
+ }\r
+\r
+ public function accepteDemande($demande_id, $revendeur)\r
+ {\r
+ $c = $this->con->openCursor('demandes');\r
+ $c->status = 2;\r
+ $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\'');\r
+\r
+ $demande = $this->selectById($demande_id);\r
+ // Mets également à jour l'entreprise afin d'associer client et revendeur\r
+ $daoEntreprise = new commonDAOEntreprise($this->con);\r
+ $daoEntreprise->setWSAdmin($demande->entreprise, $revendeur);\r
+ return $demande;\r
+ }\r
+\r
+ public function setRevendeur($demande_id, $revendeur)\r
+ {\r
+ // Mets à jour l'entreprise\r
+ $c = $this->con->openCursor('demandes');\r
+ $c->revendeur = $revendeur;\r
+ $c->status = 1;\r
+ $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\'');\r
+\r
+ $demande = $this->selectById($demande_id);\r
+ return $demande;\r
+ }\r
+\r
+ public function count()\r
+ {\r
+ $r = $this->con->select('SELECT COUNT(*) AS nb FROM demandes WHERE ' . $this->makeWhereFromFiltres());\r
+ return $r->nb;\r
+ }\r
+\r
+ public function supprime($demande_id)\r
+ {\r
+ $this->con->execute('DELETE FROM demandes WHERE demande_id=\'' . $this->con->escape($demande_id) . '\'');\r
+ }\r
+\r
+ protected function makeWhereFromFiltres()\r
+ {\r
+ global $core;\r
+ if (!is_null($this->filtres)) {\r
+ $w = array('1=1');\r
+ if (commonFiltre::test('status_demande', $this->filtres)) {\r
+ $w[] = 'status IN(' . implode(',', array_keys($this->filtres['status_demande'])) . ')';\r
+ }\r
+ if (commonFiltre::test('demande_moi', $this->filtres)) {\r
+ $keys = array_keys($this->filtres['demande_moi']);\r
+\r
+ foreach ($keys as $k) {\r
+ if ($k == 'moi') {\r
+ $w[] = 'revendeur=' . $core->user->utilisateur_id;\r
+ } elseif ($k == 'autres') {\r
+ $w[] = 'revendeur!=' . $core->user->utilisateur_id;\r
+ }\r
+ }\r
+ }\r
+ return implode(' AND ', $w);\r
+ } else {\r
+ return '1=1';\r
+ }\r
+ }\r
\r
}\r
\r
protected $revendeur_nom;\r
protected $entreprise;\r
protected $administrateur_nom;\r
+ protected $gclid;\r
+ protected $origin;\r
+ protected $fluidbooks;\r
\r
public static function asMailBody($demande, $utilisateur) {\r
$body = "\r\n---- " . __('Demande') . ' ----' . "\r\n";\r
}\r
\r
}\r
-\r
-?>
\ No newline at end of file