prepare($sql); $stmt->execute(); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); return $rs; } function get_distinct_fonction(array $baslist) { $conn = connection::getPDOConnection(); $sql = 'SELECT DISTINCT usr.fonction' . ' FROM usr' . ' LEFT JOIN basusr b ON b.usr_id=usr.usr_id' . ' left join demand on usr.usr_id=demand.usr_id' . ' WHERE ((b.base_id="' . implode('" OR b.base_id="', $baslist) . '"))' . ' AND usr_login not like "(#deleted_%" AND isnull(demand.base_id)' . ' AND usr.model_of=0 ORDER BY usr.activite ASC'; $stmt = $conn->prepare($sql); $stmt->execute(); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); return $rs; } function get_distinct_pays($baslist) { $conn = connection::getPDOConnection(); $sql = 'SELECT DISTINCT usr.pays' . ' FROM usr' . ' LEFT JOIN basusr b ON b.usr_id=usr.usr_id' . ' left join demand on usr.usr_id=demand.usr_id' . ' WHERE ((b.base_id="' . implode('" OR b.base_id="', $baslist) . '"))' . ' AND usr_login not like "(#deleted_%" AND isnull(demand.base_id)' . ' AND usr.model_of=0 '; $stmt = $conn->prepare($sql); $stmt->execute(); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); return $rs; } function get_distinct_societe($baslist) { $conn = connection::getPDOConnection(); $sql = 'SELECT DISTINCT usr.societe' . ' FROM usr' . ' LEFT JOIN basusr b ON b.usr_id=usr.usr_id' . ' left join demand on usr.usr_id=demand.usr_id' . ' WHERE ((b.base_id="' . implode('" OR b.base_id="', $baslist) . '"))' . ' AND usr_login not like "(#deleted_%" AND isnull(demand.base_id)' . ' AND usr.model_of=0 ORDER BY usr.societe ASC'; $stmt = $conn->prepare($sql); $stmt->execute(); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); return $rs; } function get_distinct_model($baslist) { $conn = connection::getPDOConnection(); $sql = 'SELECT DISTINCT usr.lastModel' . ' FROM usr' . ' LEFT JOIN basusr b ON b.usr_id=usr.usr_id' . ' left join demand on usr.usr_id=demand.usr_id' . ' WHERE ((b.base_id="' . implode('" OR b.base_id="', $baslist) . '"))' . ' AND usr_login not like "(#deleted_%" AND isnull(demand.base_id)' . ' AND usr.model_of=0 ORDER BY usr.lastModel ASC'; $stmt = $conn->prepare($sql); $stmt->execute(); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); return $rs; } function newUserCheckMail($usr, $lng, $mail, $usr_id, $out='HTML') { $conn = connection::getPDOConnection(); $datas = sqlFromFilters($usr, ''); $sql = $datas['sql']; $params = $datas['params']; $sql .= ' AND usr.usr_mail = :extra_usr_mail'; $params[':extra_usr_mail'] = $mail; $stmt = $conn->prepare($sql); $stmt->execute($params); $n = $stmt->rowCount(); $stmt->closeCursor(); if ($n > 0) { return '
' . sprintf(_('push:: %d utilisateurs accessible via le formulaire de recherche ont ete trouves. Vous ne pouvez pas ajouter d\'utilisateur portant cette adresse email'), $n) . '
'; } $ret = array(); $sql = "SELECT usr_id, usr_mail, usr_login, usr_nom, usr_prenom, activite, societe, fonction, pays, usr_sexe" . " FROM usr" . " WHERE usr_mail = :usr_mail" . " AND usr_login" . " NOT LIKE '(#deleted_%)#%' AND invite='0'"; $bases = implode(',', array_keys(whatCanIAdmin($usr))); $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_mail' => $mail)); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); foreach ($rs as $row) { $row['base'] = $row['watermark'] = $row['candwnldpreview'] = array(); $sql = 'SELECT base_id, nowatermark, candwnldpreview FROM basusr WHERE usr_id = :usr_id AND base_id IN (' . $bases . ') AND actif="1"'; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $row['usr_id'])); $rsR = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); foreach ($rsR as $raw) { $row['base'][$raw['base_id']] = '1'; $row['watermark'][$raw['base_id']] = ($raw['nowatermark'] ? 0 : 1); $row['candwnldpreview'][$raw['base_id']] = $raw['candwnldpreview']; } $ret[$row['usr_id']] = $row; } if ($out == 'HTML') $ret = formatUsrForm($usr, $lng, $usr_id, $ret); return $ret; } function formatUsrForm($usr, $lng, $usr_id, $datas) { $registry = registry::get_instance(); require_once($registry->get('GV_RootPath') . 'lib/classes/deprecated/countries.php'); $ctry = getCountries($lng); $canAdmin = whatCanIAdmin($usr); $out = '
'; if (count($datas) > 1) { $out .= '
' . _('push :: Plusieurs utilisateurs correspondant a cette addresse email ont ete trouves dans la base.') . _('push:: Ces utilisateurs ne sont pas presentes car ils n\'ont pas encore acces a une des collections que vous administrez ou parce qu\'ils sont fantomes.') . _('push:: Trouvez le profil correspondant a la personne que vous recherchez et donner lui acces a au moin l\'une de vos collection pour lui transmettre des documents') . '
'; } if (count($datas) == 1) { $usr_id = implode('', array_keys($datas)); $out .= '
' . _('push :: Cet utilisateur a ete trouve dans la base, il correspond a l\'adresse email que vous avez renseigne') . '
'; } $out .= '
'; if ($usr_id != '' && isset($datas[$usr_id])) { $part = $datas[$usr_id]; } else { $part = array( 'usr_login' => '' , 'usr_nom' => '' , 'usr_prenom' => '' , 'usr_sexe' => '' , 'activite' => '' , 'fonction' => '' , 'pays' => '' , 'usr_mail' => '' , 'watermark' => '' , 'candwnldpreview' => '' , 'base' => '' , 'societe' => '' , 'usr_id' => '' ); } if ((count($datas) > 1 && $usr_id != '') || count($datas) <= 1) { $out .= ' '; $out.= ' '; foreach ($canAdmin as $base => $basename) $out.= ' '; $out .= '
'; $out .= '
' . _('push::L\'utilisateur cree doit pouvoir acceder a au moins l\'une de ces bases') . '
' . _('push::Acces') . ' ' . _('push::preview') . ' ' . _('push::watermark') . '
' . $basename . '"
'; } return $out; } function sendHdOk($usr, $lst) { $conn = connection::getPDOConnection(); $ret = array(); $bases = array(); foreach ($lst as $basrec) { $basrec = explode('_', $basrec); if (count($basrec) == 2) { $record = new record_adapter($basrec[0], $basrec[1]); $bases[] = $record->get_base_id(); unset($record); } } $bases = implode(',', array_unique($bases)); if ($bases != '') { $sql = 'SELECT base_id, candwnldhd FROM basusr WHERE usr_id = :usr_id AND base_id IN (' . $bases . ') AND actif="1" AND candwnldhd="1" '; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr)); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); foreach ($rs as $row) { $ret[] = $row['base_id']; } } return $ret; } function whatCanIAdmin($usr) { $conn = connection::getPDOConnection(); $canAdmin = array(); $sql = "SELECT bu.canAdmin,bu.base_id FROM basusr bu, bas b WHERE bu.usr_id = :usr_id AND b.base_id=bu.base_id AND b.active='1'"; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr)); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); foreach ($rs as $row) { if ($row["canAdmin"] == "1") $canAdmin[$row['base_id']] = phrasea::bas_names($row['base_id']); } return $canAdmin; } function getPushLanguage($usr, $lng) { $ret = array(); $str = array( "selNameEmptyVal" , "notInList" , "userssel" , "wrongmail" , "noUsersSel" , "selNameEmpty" ); $ret["selNameEmptyVal"] = _('push::alertjs: un panier doit etre cree pour votre envoi, merci de specifier un nom'); $ret["notInList"] = _('push::alertjs: vous n\'etes pas dans la liste des personne validant, voulez vous etre ajoute ?'); $ret["userssel"] = _('phraseanet::utilisateurs selectionnes'); $ret["wrongmail"] = _('phraseanet:: email invalide'); $ret["noUsersSel"] = _('push::alertjs: aucun utilisateur n\'est selectionne'); $ret["selNameEmpty"] = _('push::alertjs: vous devez specifier un nom de panier'); $ret['removeIlist'] = _('push:: supprimer la recherche'); $ret['removeList'] = _('push:: supprimer la(es) liste(s) selectionnee(s)'); return p4string::jsonencode($ret); } function createUserOnFly($usr, $arrayUsr, $arrayBases, $arrayPrev=array(), $arrayWm=array()) { $id = trim(stripslashes(urldecode($arrayUsr['ID']))); $ident = trim(urldecode($arrayUsr['IDENT'])); $mail = trim(urldecode($arrayUsr['MAIL'])); $nom = trim(urldecode($arrayUsr['NOM'])); $prenom = trim(urldecode($arrayUsr['PREN'])); $societe = trim(urldecode($arrayUsr['SOCIE'])); $fonction = trim(urldecode($arrayUsr['FUNC'])); $activite = trim(urldecode($arrayUsr['ACTI'])); $country = trim(urldecode($arrayUsr['COUNTRY'])); $dateEnd = trim(urldecode($arrayUsr['DATE_END'])); $sexe = $arrayUsr['CIV']; $conn = connection::getPDOConnection(); $n = 1; if ($ident == "" && !is_numeric($id)) { if ($nom == "") { $ident = explode('@', $mail); $ident = $ident[0]; }else $ident = $nom; }else $n = 0; while ($n != 0) { $usr_id = User_Adapter::get_usr_id_from_login($ident); if($usr_id) { $n = 1; $ident.=rand(0, 9); } } if (is_numeric($id)) { $sql = 'SELECT usr_id FROM usr WHERE usr_id = :usr_id AND usr_mail = :usr_mail AND usr_login = :usr_login'; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $id, ':usr_mail' => $mail, ':usr_login' => $ident)); $num_rows = $stmt->rowCount(); $stmt->closeCursor(); if ($num_rows == 0) return '-23'; else $id = $id; // verifier que jai bien le droit dediter ce mec } else { //verifier que ya tjrs pas d'user avec le meme mail if (count(newUserCheckMail($usr, '', $mail, '', 'PHP')) != 0) { return '-24'; } try { $appbox = appbox::get_instance(); $password = random::generatePassword(24); $user = User_Adapter::create($appbox, $ident, $password, $mail, false, false); $user->set_company($societe) ->set_job($activite) ->set_position($fonction) ->set_gender($sexe) ->set_firstname($prenom) ->set_lastname($nom); return $user->get_id(); } catch (Exception $e) { return '-2'; } } foreach ($arrayBases as $base) { if (is_numeric($base)) { $timeLimit = '0'; $limitedTo = '0000-00-00 00:00:00'; if ($dateEnd != '') { $timeLimit = '1'; $limitedTo = $dateEnd; } $sql = "INSERT INTO basusr" . " (base_id, usr_id, actif, creationdate,time_limited,limited_to )" . " VALUES (:base_id, :usr_id, '1',now() ,:time_limited ,:time_limit_to)"; $params = array( ':base_id' => $base , ':usr_id' => $id , ':time_limited' => $timeLimit , ':time_limit_to' => $limitedTo ); $stmt = $conn->prepare($sql); $stmt->execute($params); $stmt->closeCursor(); $sql = "INSERT INTO sbasusr (sbas_id, usr_id) VALUES (:sbas_id, :usr_id)"; $params = array(':sbas_id' => phrasea::sbasFromBas($base), ':usr_id' => $id); $stmt = $conn->prepare($sql); $stmt->execute($params); $stmt->closeCursor(); } } foreach ($arrayPrev as $base) { if (is_numeric($base) && in_array($base, $arrayBases)) { $sql = "UPDATE basusr SET candwnldpreview='1' WHERE usr_id = :usr_id AND base_id = :base_id"; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $id, ':base_id' => $base)); $stmt->closeCursor(); } } foreach ($arrayWm as $base) { if (is_numeric($base) && in_array($base, $arrayBases)) { $sql = "UPDATE basusr SET nowatermark='0' WHERE usr_id = :usr_id AND base_id = :base_id"; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $id, ':base_id' => $base)); $stmt->closeCursor(); } } return $id; } function whatCanIPush($usr, $lst) { $newlst = array(); $user = User_Adapter::getInstance($usr, appbox::get_instance()); foreach ($lst as $basrec) { $basrec = explode('_', $basrec); if (count($basrec) != 2) continue; $sbas_id = $basrec[0]; try { $record = new record_adapter($sbas_id, $basrec[1]); } catch(Exception $e) { continue; } $base_id = $record->get_base_id(); if (!$user->ACL()->has_right_on_base($base_id, 'canpush')) continue; if ($record->is_grouping()) { foreach ($record->get_children() as $tmpl) $newlst[] = sprintf("%s_%s", $tmpl->get_base_id(), $tmpl->get_record_id()); } else { $newlst[] = implode('_', $basrec); } unset($record); } return $newlst; } function loadUsers($usr, $token, $filters) { $appbox = appbox::get_instance(); $session = $appbox->get_session(); $registry = $appbox->get_registry(); require_once($registry->get('GV_RootPath') . 'lib/classes/deprecated/countries.php'); $conn = $appbox->get_connection(); $out = array(); $datas = sqlFromFilters($usr, $filters); $sql = $datas['sql']; $params = $datas['params']; $ret = 0; $push_datas = $session->storage()->get('push', array()); if (isset($push_datas[$token])) { $stmt = $conn->prepare($sql); $stmt->execute($params); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); foreach ($rs as $row) { $push_datas[$token]['usrs'][$row['usr_id']] = array('HD' => 0); } $session->storage()->set('push', $push_datas); $ret = count($push_datas[$token]['usrs']); } return $ret; } function unloadUsers($usr, $token, $filters) { $appbox = appbox::get_instance(); $session = $appbox->get_session(); $registry = $appbox->get_registry(); require_once($registry->get('GV_RootPath') . 'lib/classes/deprecated/countries.php'); $out = array(); $ret = -1; $push_datas = $session->storage()->get('push', array()); if (isset($push_datas[$token])) { $push_datas[$token]['usrs'] = array(); $session->storage()->set('push', $push_datas); $ret = count($push_datas[$token]['usrs']); } return $ret; } function addUser($usr, $token, $usr_ids) { $appbox = appbox::get_instance(); $session = $appbox->get_session(); $ret = array('result' => array(), 'selected' => 0); $conn = $appbox->get_connection(); $datas = sqlFromFilters($usr, ''); $sql = $datas['sql']; $params = $datas['params']; $push_datas = $session->storage()->get('push', array()); if (isset($push_datas[$token])) { $usr_ids = json_decode(stripslashes($usr_ids)); $result = array(); foreach ($usr_ids as $usr_id => $add) { $zsql = $sql . ' AND usr.usr_id = :extra_usr_id'; $params[':extra_usr_id'] = $usr_id; $stmt = $conn->prepare($zsql); $stmt->execute($params); $num_rows = $stmt->rowCount(); $stmt->closeCursor(); if ($num_rows == 1) { if ($add->sel == '0') { unset($push_datas[$token]['usrs'][$usr_id]); $result[$usr_id] = 0; } if ($add->sel == '1') { $hd_value = '0'; if ($add->hd == '1') $hd_value = '1'; $push_datas[$token]['usrs'][$usr_id] = array('HD' => $hd_value); $result[$usr_id] = 1; } } } $session->storage()->set('push', $push_datas); $ret = array('result' => $result, 'selected' => count($push_datas[$token]['usrs'])); } return p4string::jsonencode($ret); } function sqlFromFilters($usr, $filters) { $conn = connection::getPDOConnection(); $params = array(); $baslist = array(); $sql = 'SELECT DISTINCT(b.base_id) FROM (bas b, basusr u)' . ' WHERE u.usr_id = :usr_id' . ' AND b.base_id =u.base_id' . ' AND u.canpush="1"' . ' AND u.actif="1"' . ' AND b.active="1"'; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr)); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); foreach ($rs as $row) { $baslist[] = $row['base_id']; } $baslist = implode(',', $baslist); $precise = ''; $filters = $filters != '' ? json_decode(urldecode($filters)) : false; if ($filters) { foreach ($filters->strings as $filter) { if (trim($filter->fieldsearch) == '') continue; $like = ' LIKE '; switch ($filter->operator) { case 'and': $precise .= ' AND '; break; case 'or': $precise .= ' OR '; break; case 'except': $precise .= ' AND '; $like = ' NOT LIKE '; break; } switch ($filter->fieldlike) { case 'BEGIN': $start = ''; $end = '%'; break; case 'CONT': $start = '%'; $end = '%'; break; case 'END': $start = '%'; $end = ''; break; } switch ($filter->field) { case "LOGIN" : $precise.=" (usr_login " . $like . " :like1 COLLATE utf8_general_ci )"; $params[':like1'] = $start . $filter->fieldsearch . $end; break; case "NAME" : $precise.=" (usr_nom " . $like . " :like2 OR usr_prenom like :like2bis)"; $params[':like2'] = $start . $filter->fieldsearch . $end; $params[':like2bis'] = $start . $filter->fieldsearch . $end; break; case "COMPANY" : $precise.=" (usr.societe " . $like . " :like3)"; $params[':like3'] = $start . $filter->fieldsearch . $end; break; case "MAIL" : $precise.=" (usr.usr_mail " . $like . " :like4)"; $params[':like4'] = $start . $filter->fieldsearch . $end; break; case "FCT" : $precise.=" (usr.fonction " . $like . " :like5)"; $params[':like5'] = $start . $filter->fieldsearch . $end; break; case "ACT" : $precise.=" (usr.activite " . $like . " :like6)"; $params[':like6'] = $start . $filter->fieldsearch . $end; break; case "LASTMODEL" : $precise.=" (usr.lastModel " . $like . " :like7)"; $params[':like7'] = $start . $filter->fieldsearch . $end; break; } } if (count($filters->lists) > 0 && trim($filters->lists[0]) != '') { $precise.=' AND usr.usr_id IN (SELECT ulu.usr_id FROM usrlistusers ulu, usrlist ul WHERE ul.usr_id = :usr_id_list AND ul.list_id IN (' . implode(',', $filters->lists) . ') AND ul.list_id = ulu.list_id) '; $params[':usr_id_list'] = $usr; } if (count($filters->countries) > 0 && trim($filters->countries[0]) != '') { $c = array(); $n = 0; foreach ($filters->countries as $country) { $c['country' . $n] = $country; $n++; } $precise.=" AND usr.pays IN (:" . implode(", :", array_keys($c)) . ")"; $params = array_merge($params, $c); } if (count($filters->activite) > 0 && trim($filters->activite[0]) != '') { $c = array(); $n = 0; foreach ($filters->activite as $activite) { $c['activite' . $n] = $activite; $n++; } $precise.=" AND usr.activite IN (:" . implode(", :", array_keys($c)) . ")"; $params = array_merge($params, $c); } if (count($filters->fonction) > 0 && trim($filters->fonction[0]) != '') { $c = array(); $n = 0; foreach ($filters->fonction as $fonction) { $c['fonction' . $n] = $fonction; $n++; } $precise.=" AND usr.fonction IN (:" . implode(", :", array_keys($c)) . ")"; $params = array_merge($params, $c); } if (count($filters->societe) > 0 && trim($filters->societe[0]) != '') { $c = array(); $n = 0; foreach ($filters->societe as $societe) { $c['societe' . $n] = $societe; $n++; } $precise.=" AND usr.societe IN (:" . implode(", :", array_keys($c)) . ")"; $params = array_merge($params, $c); } if (count($filters->template) > 0 && trim($filters->template[0]) != '') { $c = array(); $n = 0; foreach ($filters->template as $template) { $c['template' . $n] = $template; $n++; } $precise.=" AND usr.lastModel IN (:" . implode(", :", array_keys($c)) . ")"; $params = array_merge($params, $c); } } $sqlGhost = ''; if (count(whatCanIAdmin($usr)) > 0) $sqlGhost = ' OR (isnull(b.base_id)) '; $sql = 'SELECT DISTINCT usr.usr_id,usr_login, usr_mail ,CONCAT_WS(" ",usr_nom,usr_prenom) as usr_nomprenom,societe, fonction,activite,pays,lastModel FROM usr LEFT JOIN basusr b ON b.usr_id=usr.usr_id WHERE (b.base_id IN (' . $baslist . ') ' . $sqlGhost . ' ) AND usr_login not like "(#deleted_%" AND usr.model_of=0 ' . $precise . ' AND invite="0" AND usr_login!="invite" AND usr_login!="autoregister"'; return array('sql' => $sql, 'params' => $params); } function hd_user($usr, $token, $usrs, $value) { $appbox = appbox::get_instance(); $session = $appbox->get_session(); $push_datas = $session->storage()->get('push', array()); if (isset($push_datas[$token])) { foreach ($usrs as $u) { if (isset($push_datas[$token]['usrs'][$u])) { $push_datas[$token]['usrs'][$u]['HD'] = $value; } } $session->storage()->set('push', $push_datas); } } function whoCanIPush($usr, $lng, $token, $view, $filters, $page=1, $sort='LA', $perPage='') { $appbox = appbox::get_instance(); $session = $appbox->get_session(); $registry = $appbox->get_registry(); require_once($registry->get('GV_RootPath') . 'lib/classes/deprecated/countries.php'); $ctry = getCountries($lng); $conn = $appbox->get_connection(); $out = ''; if ($view == 'current') $filters = ''; $datas = sqlFromFilters($usr, $filters); $sql = $datas['sql']; $params = $datas['params']; $push_datas = $session->storage()->get('push', array()); if ($view == 'search' && count($push_datas[$token]['usrs'])) { $sql .= ' AND usr.usr_id NOT IN (' . implode(',', array_keys($push_datas[$token]['usrs'])) . ') '; } if ($view == 'current') { $sql .= ' AND usr.usr_id IN (' . implode(',', array_keys($push_datas[$token]['usrs'])) . ') '; } $nPage = $nresult = 0; $stmt = $conn->prepare($sql); $stmt->execute($params); $nresult = $stmt->rowCount(); $stmt->closeCursor(); $nPage = ceil($nresult / $perPage); if ($page > $nPage) $page = $nPage; if (!isset($push_datas[$token])) return; $orderBy = array(); $sort = $sort != '' ? json_decode(urldecode($sort)) : array(); $lact = $lsort = $nact = $nsort = $mact = $msort = $sact = $ssort = $jact = $jsort = $aact = $asort = $cact = $csort = $tact = $tsort = ''; foreach ($sort as $s) { switch ($s) { case 'MA'; $orderBy[] = 'usr_mail ASC'; $mact = 'active'; $msort = 'SortUp'; break; case 'MD'; $orderBy[] = 'usr_mail DESC'; $mact = 'active'; $msort = 'SortDown'; break; case 'NA'; $orderBy[] = 'usr_nomprenom ASC'; $nact = 'active'; $nsort = 'SortUp'; break; case 'ND'; $orderBy[] = 'usr_nomprenom DESC'; $nact = 'active'; $nlsort = 'SortDown'; break; case 'LA'; $orderBy[] = 'usr_login ASC'; $lact = 'active'; $lsort = 'SortUp'; break; case 'LD'; $orderBy[] = 'usr_login DESC'; $lact = 'active'; $lsort = 'SortDown'; break; case 'SA'; $orderBy[] = 'societe ASC'; $sact = 'active'; $ssort = 'SortUp'; break; case 'SD'; $orderBy[] = 'societe DESC'; $sact = 'active'; $ssort = 'SortDown'; break; case 'JA'; $orderBy[] = 'fonction ASC'; $jact = 'active'; $jsort = 'SortUp'; break; case 'JD'; $orderBy[] = 'fonction DESC'; $jact = 'active'; $jsort = 'SortDown'; break; case 'AA'; $orderBy[] = 'activite ASC'; $aact = 'active'; $asort = 'SortUp'; break; case 'AD'; $orderBy[] = 'activite DESC'; $aact = 'active'; $asort = 'SortDown'; break; case 'CA'; $orderBy[] = 'pays ASC'; $cact = 'active'; $csort = 'SortUp'; break; case 'CD'; $orderBy[] = 'pays DESC'; $cact = 'active'; $csort = 'SortDown'; break; case 'TA'; $orderBy[] = 'lastModel ASC'; $tact = 'active'; $tsort = 'SortUp'; break; case 'TD'; $orderBy[] = 'lastModel DESC'; $tact = 'active'; $tsort = 'SortDown'; break; } } if (count($orderBy) > 0) $sql .= ' ORDER BY ' . implode(', ', $orderBy) . ''; $start_offset = ($page - 1) >= 0 ? ($page - 1) : 0; $sql .= ' LIMIT ' . ($start_offset * $perPage) . ', ' . $perPage . ''; $out .= '
0 ? ("onclick='specialsearch(false," . ($page - 1) . ")'") : "") . ' src="/skins/icons/prev.png"/> $nPage ? "" : "onclick='specialsearch(false," . ($page + 1) . ")'") . ' src="/skins/icons/next.png"/> '; $out .= '
'; $out .= "
"; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $ilig = 0; $stmt = $conn->prepare($sql); $stmt->execute($params); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); foreach ($rs as $row) { $sel = $hd_checked = ''; if (array_key_exists($row["usr_id"], $push_datas[$token]['usrs'])) { $sel = 'selected'; if ($push_datas[$token]['usrs'][$row["usr_id"]]['HD'] == '1') $hd_checked = 'checked'; if ($view == 'search') continue; } else { if ($view == 'current') continue; } $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $pays = ""; if (isset($ctry[trim($row["pays"])])) $pays = $ctry[trim($row["pays"])]; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $ilig++; } if ($ilig > 11) { $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; $out .= ""; } $out .= ""; $out .= "
" . sprintf(_('push:: %d resultats'), $nresult) . " - " . _('push:: tous les ajouter') . " --- " . sprintf(_("push:: %s selectionnes"), "" . count($push_datas[$token]['usrs']) . "") . " - " . _('push:: enregistrer cette liste') . " / " . _('push:: tout deselectionner') . " --- " . _('push:: afficher :') . "
" . _('admin::compte-utilisateur identifiant') . "" . _('admin::compte-utilisateur nom') . '/' . _('admin::compte-utilisateur prenom') . "" . _('admin::compte-utilisateur email') . "" . _('admin::compte-utilisateur societe') . "" . _('admin::compte-utilisateur poste') . "" . _('admin::compte-utilisateur activite') . "" . _('admin::compte-utilisateur pays') . "" . _('admin::compte-utilisateur dernier modele applique') . "
" . $row["usr_login"] . "" . $row["usr_nomprenom"] . "" . $row["usr_mail"] . "" . $row["societe"] . "" . $row["fonction"] . "" . $row["activite"] . "" . $pays . "" . $row["lastModel"] . "
" . _('admin::compte-utilisateur identifiant') . "" . _('admin::compte-utilisateur nom') . '/' . _('admin::compte-utilisateur prenom') . "" . _('admin::compte-utilisateur email') . "" . _('admin::compte-utilisateur societe') . "" . _('admin::compte-utilisateur poste') . "" . _('admin::compte-utilisateur activite') . "" . _('admin::compte-utilisateur pays') . "" . _('admin::compte-utilisateur dernier modele applique') . "
" . ""; $out .= ""; return $out; } function saveiList($usr, $lng, $name, $token, $filters) { $registry = registry::get_instance(); require_once($registry->get('GV_RootPath') . 'lib/classes/deprecated/countries.php'); $ret = -1; $conn = connection::getPDOConnection(); $ilists = new stdClass(); $sql = 'SELECT push_list FROM usr WHERE usr_id = :usr_id'; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr)); $row = $stmt->fetch(PDO::FETCH_ASSOC); $stmt->closeCursor(); if ($row && $row['push_list'] != '') { $ilists = json_decode($row['push_list']); } if (($filters = json_decode($filters)) !== false) { $label = $name; $n = 2; while (isset($ilists->$label)) { $label = $name . '#' . $n; $n++; } $ilists->$label = $filters; $sql = 'UPDATE usr SET push_list = :ilists WHERE usr_id = :usr_id'; $stmt = $conn->prepare($sql); $stmt->execute(array(':ilists' => p4string::jsonencode($ilists), ':usr_id' => $usr)); $stmt->closeCursor(); $ret = loadILists($usr, $lng, $label); } return $ret; } function loadILists($usr, $lng, $name='') { $conn = connection::getPDOConnection(); $lists = array(); $html = ''; $sql = 'SELECT push_list FROM usr WHERE usr_id = :usr_id'; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr)); $row = $stmt->fetch(PDO::FETCH_ASSOC); $stmt->closeCursor(); if ($row) { if ($ilists = json_decode($row['push_list'])) { foreach ($ilists as $k => $v) { $sel = ""; if ($k == $name) $sel = 'selected="selected"'; $html .= ""; } } } return $html; } function loadIList($name) { $appbox = appbox::get_instance(); $session = $appbox->get_session(); $usr = $session->get_usr_id(); $conn = $appbox->get_connection(); $sql = 'SELECT push_list FROM usr WHERE usr_id = :usr_id'; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr)); $row = $stmt->fetch(PDO::FETCH_ASSOC); $stmt->closeCursor(); if ($row) { if ($ilists = json_decode($row['push_list'])) { if (isset($ilists->$name)) $ret = $ilists->$name; else $ret = array( 'strings' => array() , 'countries' => array() , 'fonction' => array() , 'activite' => array() , 'lists' => array() , 'societe' => array() , 'template' => array() ); } } return p4string::jsonencode($ret); } function saveList($usr, $lng, $name, $token) { $appbox = appbox::get_instance(); $session = $appbox->get_session(); $registry = $appbox->get_registry(); require_once($registry->get('GV_RootPath') . 'lib/classes/deprecated/countries.php'); $ret = '-1' . 'ses'; $conn = $appbox->get_connection(); $label = $name; $sql = 'SELECT label FROM usrlist WHERE usr_id = :usr_id AND label = :label'; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr, ':label' => $label)); $n = $stmt->rowCount(); $stmt->closeCursor(); $m = 2; while ($n > 0) { $label = $name . '#' . $m; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr, ':label' => $label)); $n = $stmt->rowCount(); $stmt->closeCursor(); $m++; } $ret = '-1'; $push_datas = $session->storage()->get('push', array()); if (isset($push_datas[$token]) && count($push_datas[$token]['usrs']) > 0) { $sql = 'INSERT into usrlist (list_id, usr_id, label) VALUES (null, :usr_id, :label)'; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr, ':label' => $label)); $stmt->closeCursor(); $list_id = $conn->lastInsertId(); $sql = 'INSERT INTO usrlistusers (list_id, usr_id) VALUES (:list_id,:usr_id)'; $stmt = $conn->prepare($sql); foreach ($push_datas[$token]['usrs'] as $usr_id => $cool) { $stmt->execute(array(':list_id' => $list_id, ':usr_id' => $usr_id)); } $stmt->closeCursor(); $ret = loadLists($usr, $lng); } return $ret; } function loadLists($usr, $lng, $name='') { $registry = registry::get_instance(); require_once($registry->get('GV_RootPath') . 'lib/classes/deprecated/countries.php'); $conn = connection::getPDOConnection(); $lists = array(); $html = ''; $sql = 'SELECT l.label, l.list_id, COUNT(u.usr_id) as nusr FROM (usr s, usrlist l) LEFT JOIN usrlistusers u ON (l.list_id = u.list_id AND u.usr_id = s.usr_id) WHERE l.usr_id = :usr_id AND s.usr_login NOT LIKE "(#deleted_%" GROUP BY l.label ORDER BY l.label ASC'; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr)); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); foreach ($rs as $row) { $sel = ""; if ($name != '' && $row['label'] == $name) $sel = "selected='selected'"; $html .= ""; } return $html; } function deleteList($usr, $lists, $lng) { $registry = registry::get_instance(); require_once($registry->get('GV_RootPath') . 'lib/classes/deprecated/countries.php'); $conn = connection::getPDOConnection(); $lists = json_decode($lists); foreach ($lists as $list) { $sql = "DELETE FROM usrlist WHERE list_id = :list_id AND usr_id = :usr_id"; $stmt = $conn->prepare($sql); $stmt->execute(array(':list_id' => $list, ':usr_id' => $usr)); $stmt->closeCursor(); $sql = 'DELETE FROM usrlistusers WHERE list_id = :list_id'; $stmt = $conn->prepare($sql); $stmt->execute(array(':list_id' => $list)); $stmt->closeCursor(); } return loadLists($usr, $lng); return $html; } function deleteiList($usr, $name, $lng) { $conn = connection::getPDOConnection(); $sql = "SELECT push_list FROM usr WHERE usr_id = :usr_id"; $stmt = $conn->prepare($sql); $stmt->execute(array(':usr_id' => $usr)); $row = $stmt->fetch(PDO::FETCH_ASSOC); $stmt->closeCursor(); if ($row) { $lists = json_decode($row['push_list']); if (isset($lists->$name)) { unset($lists->$name); } $sql = 'UPDATE usr SET push_list = :lists WHERE usr_id = :usr_id'; $stmt = $conn->prepare($sql); $stmt->execute(array(':lists' => p4string::jsonencode($lists), ':usr_id' => $usr)); $stmt->closeCursor(); } $ret = loadiLists($usr, $lng); return $ret; } function getUsrInfos($usr, $arrayUsrs) { $conn = connection::getPDOConnection(); $usrs = array(); $sql = 'SELECT usr_id,usr_mail, usr_login, usr_password, usr_nom, usr_prenom FROM usr WHERE usr_id IN (' . implode(',', $arrayUsrs) . ')'; $stmt = $conn->prepare($sql); $stmt->execute(); $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); $stmt->closeCursor(); foreach ($rs as $row) { $usrs[$row['usr_id']] = $row; } return $usrs; } function pushIt($usr, $newBask, $parmLST, $users, $mail_content, $lng, $accuse) { $Core = bootstrap::getCore(); $appbox = appbox::get_instance(); $session = $appbox->get_session(); $registry = $appbox->get_registry(); $finalUsers = array(); $conn = $appbox->get_connection(); $nbMail = 0; $nbchu = 0; $my_link = ""; $usrs = getUsrInfos($usr, array_merge(array_keys($users), array($usr))); $me = User_Adapter::getInstance($session->get_usr_id(), $appbox); $reading_confirm_to = false; if ($accuse == '1') { $reading_confirm_to = $me->get_email(); } $em = $Core->getEntityManager(); foreach ($users as $oneuser => $rights) { $new_basket = null; try { $user = User_Adapter::getInstance($oneuser, $appbox); $pusher = User_Adapter::getInstance($usr, $appbox); $new_basket = new \Entities\Basket(); $new_basket->setName($newBask); $new_basket->setIsRead(false); $new_basket->setPusher($pusher); $new_basket->setOwner($user); $em->persist($new_basket); $nbchu++; foreach($parmLST as $basrec) { $basrec = explode('_', $basrec); $record = new record_adapter($basrec[0], $basrec[1]); $BasketElement = new Entities\BasketElement(); $BasketElement->setRecord($record); $BasketElement->setBasket($new_basket); $em->persist($BasketElement); $new_basket->addBasketElement($BasketElement); } $em->flush(); $finalUsers[] = $user->get_id(); $canSendHD = sendHdOk($usr, $parmLST); foreach ($new_basket->getElements() as $element) { $record = $element->getRecord(); if ($rights['canHD'] && in_array($record->get_base_id(), $canSendHD)) $user->ACL()->grant_hd_on($record, $me, 'push'); else $user->ACL()->grant_preview_on($record, $me, 'push'); } set_time_limit(60); $from = trim($me->get_email()) != "" ? $me->get_email() : false; $url = $registry->get('GV_ServerName') . 'lightbox/index.php?LOG=' . random::getUrlToken('view', $user->get_id(), null, $new_basket->getId()); if ($me->get_id() == $user->get_id()) $my_link = $url; $name = User_Adapter::getInstance($user->get_id(), $appbox)->get_display_name(); $params = array( 'from' => $session->get_usr_id() , 'from_email' => $from , 'to' => $user->get_id() , 'to_email' => $user->get_email() , 'to_name' => $name , 'url' => $url , 'accuse' => $reading_confirm_to , 'message' => $mail_content , 'ssel_id' => $new_basket->getId() ); $evt_mngr = eventsmanager_broker::getInstance($appbox, $Core); $evt_mngr->trigger('__PUSH_DATAS__', $params); } catch (Exception $e) { } } return array('nbchu' => $nbchu, 'mylink' => $my_link, 'users' => $finalUsers); } function pushValidation($usr, $ssel_id, $listUsrs, $time, $mail_content, $accuse) { $Core = bootstrap::getCore(); $appbox = appbox::get_instance(); $session = $appbox->get_session(); $registry = $appbox->get_registry(); $finalUsers = array(); $my_link = ''; $me = User_Adapter::getInstance($session->get_usr_id(), $appbox); $reading_confirm_to = false; if ($accuse == '1') { $reading_confirm_to = $me->get_email(); } if ($time != 0) { $expires_obj = new DateTime('+' . (int) $time . ' day' . ((int) $time > 1 ? 's' : '')); $expires = $expires_obj; if ($time > 1) $mail_content .= '

' . sprintf(_('Vous avez %d jours pour confirmer votre validation'), $time) . '


'; else $mail_content .= '

' . _('Vous avez une journee pour confirmer votre validation') . '


'; } else { $expires = null; } $em = $Core->getEntityManager(); $repository = $em->getRepository('\Entities\Basket'); $basket = $repository->findUserBasket($ssel_id, $Core->getAuthenticatedUser()); $basket->setIsRead(false); $em->merge($basket); $em->flush(); foreach ($listUsrs as $oneuser => $rights) { $user = User_Adapter::getInstance($oneuser, appbox::get_instance()); if (!$user->get_id()) continue; $from = trim($me->get_email()) != "" ? $me->get_email() : false; $message = $mail_content . "
\n
\n"; $url = $registry->get('GV_ServerName') . 'lightbox/index.php?LOG=' . random::getUrlToken('validate', $user->get_id(), $expires, $ssel_id); $name = $user->get_display_name(); $params = array( 'from' => $session->get_usr_id() , 'from_email' => $from , 'to' => $user->get_id() , 'to_email' => $user->get_email() , 'to_name' => $name , 'message' => $mail_content , 'url' => $url , 'ssel_id' => $ssel_id , 'accuse' => $reading_confirm_to ); $evt_mngr = eventsmanager_broker::getInstance($appbox, $Core); $evt_mngr->trigger('__PUSH_VALIDATION__', $params); if ($me->get_id() == $user->get_id()) $my_link = $url; if ($time != 0) $message .= '
\n
\n' . sprintf(_('push:: %d jours restent pour finir cette validation'), (int) $time) . "
\n"; $basket->validation_to_users($user, $rights['canAgree'], $rights['canSeeOther'], $rights['canHD'], $expires); $finalUsers[] = $oneuser; } return array('mylink' => $my_link, 'users' => $finalUsers); } ?>