escape_string($mail).'"'; if($rs = $conn->query($sql)) { if($n = $conn->num_rows($rs)>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='".$conn->escape_string($mail)."'" . " AND usr_login" . " NOT LIKE '(#deleted_%)#%' AND invite='0'"; $bases = implode(',',array_keys(whatCanIAdmin($usr,$ses))); if($rs = $conn->query($sql)) { while($row = $conn->fetch_assoc($rs)) { $row['base'] = $row['watermark'] = $row['canpreview'] = array(); $sql = 'SELECT base_id, needwatermark, canpreview FROM basusr WHERE usr_id="'.$conn->escape_string($row['usr_id']).'" AND base_id IN ('.$bases.') AND actif="1"'; if($rsR = $conn->query($sql)) { while($raw = $conn->fetch_assoc($rsR)) { $row['base'][$raw['base_id']] = '1'; $row['watermark'][$raw['base_id']] = $raw['needwatermark']; $row['canpreview'][$raw['base_id']] = $raw['canpreview']; } } $ret[$row['usr_id']] = $row; } $conn->free_result($rs); } if($out=='HTML') $ret = formatUsrForm($usr,$ses,$lng,$usr_id,$ret); return $ret; } function formatUsrForm($usr,$ses,$lng,$usr_id,$datas) { require_once(GV_RootPath.'lib/countries.php'); $ctry = getCountries($lng); $canAdmin = whatCanIAdmin($usr,$ses); $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'=>'' ,'canpreview'=>'' ,'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,$ses,$lst) { $conn = connection::getInstance(); if(!(phrasea_open_session($ses,$usr))) return; $ret = array(); $bases = array(); foreach($lst as $basrec) { $basrec = explode('_',$basrec); if(count($basrec)==2) { $bases[] = $basrec[0]; } } $bases = implode(',',array_unique($bases)); if($bases != '') { $sql = 'SELECT base_id, candwnldhd FROM basusr WHERE usr_id = "'.$conn->escape_string($usr).'" AND base_id IN ('.$bases.') AND actif="1" AND candwnldhd="1" '; if($rs = $conn->query($sql)) { while($row = $conn->fetch_assoc($rs)) { $ret[] = $row['base_id']; } $conn->free_result($rs); } } return $ret; } function whatCanIAdmin($usr,$ses) { $conn = connection::getInstance(); if(!($ph_session = phrasea_open_session($ses,$usr))) return; $baseNames = array(); foreach($ph_session['bases'] as $base) foreach($base['collections'] as $coll) $baseNames[$coll['base_id']] = $coll['name']; $canAdmin = array(); $sql = "SELECT bu.canAdmin,bu.base_id FROM basusr bu, bas b WHERE bu.usr_id='".$conn->escape_string($usr)."' AND b.base_id=bu.base_id AND b.active='1'"; if($rs = $conn->query($sql)) { while($row = $conn->fetch_assoc($rs) ) { if($row["canAdmin"]=="1" && isset($baseNames[$row['base_id']])) $canAdmin[$row['base_id']] = $baseNames[$row['base_id']]; } $conn->free_result($rs); } return $canAdmin; } function getPushLanguage($usr,$ses,$lng) { if(!($ph_session = phrasea_open_session($ses,$usr))) return; $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,$ses,$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::getInstance(); if(!($ph_session = phrasea_open_session($ses,$usr))) return; $n = 1; if($ident == "" && !is_numeric($id)){ if($nom == ""){ $ident = explode('@',$mail); $ident = $ident[0]; }else $ident = $nom; }else $n = 0; while($n != 0){ $sql = "SELECT USR_ID FROM usr WHERE usr_login='".$conn->escape_string($ident)."'"; $rs = $conn->query($sql); $n = $conn->num_rows($rs); if($n != 0) $ident.=rand(0,9); } if(is_numeric($id)) { $sql = 'SELECT usr_id FROM usr WHERE usr_id="'.$conn->escape_string($id).'" AND usr_mail="'.$conn->escape_string($mail).'" AND usr_login="'.$conn->escape_string($ident).'"'; if($rs = $conn->query($sql)) { if(($conn->num_rows($rs))==0) return '-23'; else $id = $id; $conn->free_result($rs); } // 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,$ses,'',$mail,'','PHP'))!=0) { return '-24'; } $newid= $conn->getId("usr"); $pass = random::generatePassword(); $sql = 'INSERT INTO usr' . ' (usr_id, usr_login, usr_password, usr_mail, usr_nom, usr_prenom, usr_sexe, societe, fonction,' . ' activite, pays, usr_creationdate, usr_modificationdate, code8, model_of)' . ' values ' . '("'.$conn->escape_string($newid).'","'.$conn->escape_string($ident).'","'.$conn->escape_string($pass).'","'.$conn->escape_string($mail).'","'.$conn->escape_string($nom).'","'.$conn->escape_string($prenom).'","'.$conn->escape_string($sexe).'","'.$conn->escape_string($societe).'","'.$conn->escape_string($fonction).'",' . '"'.$conn->escape_string($activite).'","'.$conn->escape_string($country).'", now(), now(), "0", "0" )'; if(!$conn->query($sql)) return '-2'; else $id = $newid; } 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 ('".$conn->escape_string($base)."', '".$conn->escape_string($id)."', '1',now(),'".$conn->escape_string($timeLimit)."','".$conn->escape_string($limitedTo)."')"; $conn->query($sql); $sql = "INSERT INTO sbasusr" . " (sbas_id, usr_id)" . " VALUES ('".phrasea::sbasFromBas($base)."', '".$conn->escape_string($id)."')"; $conn->query($sql); } } foreach($arrayPrev as $base){ if(is_numeric($base) && in_array($base,$arrayBases)){ $sql = "UPDATE basusr" . " SET canpreview='1' WHERE usr_id='".$conn->escape_string($id)."' AND base_id='".$conn->escape_string($base)."'"; $conn->query($sql); } } foreach($arrayWm as $base){ if(is_numeric($base) && in_array($base,$arrayBases)){ $sql = "UPDATE basusr" . " SET needwatermark='1' WHERE usr_id='".$conn->escape_string($id)."' AND base_id='".$conn->escape_string($base)."'"; $conn->query($sql); } } return $id; } function whatCanIPush($usr,$ses,$lst) { $newlst = array(); $user = user::getInstance($usr); foreach($lst as $basrec) { $basrec = explode('_',$basrec); if(count($basrec) != 2) continue; if(!isset($user->_rights_bas[$basrec[0]]) || !$user->_rights_bas[$basrec[0]]['canpush']) continue; $newlst[] = implode('_',$basrec); } return $newlst; } function loadUsers($usr,$ses,$token,$filters) { $session = session::getInstance(); require_once(GV_RootPath.'lib/countries.php'); if(!($ph_session = phrasea_open_session($ses,$usr))) return; $conn = connection::getInstance(); $out = array(); $sql = sqlFromFilters($usr,$ses,$filters); $ret = 0; if($rs = $conn->query($sql)) { if(isset($session->prod['push'][$token])) { $push_datas = $session->prod; while($row = $conn->fetch_assoc($rs)) { $push_datas['push'][$token]['usrs'][$row['usr_id']] = array('HD'=>0); } $session->prod = $push_datas; $ret = count($session->prod['push'][$token]['usrs']); } } return $ret; } function unloadUsers($usr,$ses,$token,$filters) { $session = session::getInstance(); require_once(GV_RootPath.'lib/countries.php'); if(!($ph_session = phrasea_open_session($ses,$usr))) return; $conn = connection::getInstance(); $out = array(); $ret = -1; if(isset($session->prod['push'][$token])) { $push_datas = $session->prod; $push_datas['push'][$token]['usrs'] = array(); $session->prod = $push_datas; $ret = count($session->prod['push'][$token]['usrs']); } return $ret; } function addUser($usr,$ses,$token,$usr_ids) { $session = session::getInstance(); if(!($ph_session = phrasea_open_session($ses,$usr))) return; $ret = array('result'=>array(),'selected'=>0); $conn = connection::getInstance(); $sql = sqlFromFilters($usr,$ses,''); if(isset($session->prod['push'][$token])) { $push_datas = $session->prod; $usr_ids = json_decode(stripslashes($usr_ids)); $result = array(); foreach($usr_ids as $usr_id=>$add) { $zsql = $sql.' AND usr.usr_id = "'.$usr_id.'"'; if($rs = $conn->query($zsql)) { if($conn->num_rows($rs) == 1) { //on peut ajouter if($add->sel == '0') { unset($push_datas['push'][$token]['usrs'][$usr_id]); $result[$usr_id] = 0; } if($add->sel == '1') { $hd_value = '0'; if($add->hd=='1') $hd_value = '1'; $push_datas['push'][$token]['usrs'][$usr_id] = array('HD'=>$hd_value); $result[$usr_id] = 1; } } } } $session->prod = $push_datas; $ret = array('result'=>$result, 'selected'=>count($session->prod['push'][$token]['usrs'])); } return p4string::jsonencode($ret); } function sqlFromFilters($usr,$ses,$filters) { if(!($ph_session = phrasea_open_session($ses,$usr))) return; $conn = connection::getInstance(); $baslist = array(); $sql = 'SELECT DISTINCT(b.base_id) FROM (bas b, basusr u)' . ' WHERE u.usr_id="'.$conn->escape_string($usr).'"' . ' AND b.base_id =u.base_id' . ' AND u.canpush="1"' . ' AND u.actif="1"' . ' AND b.active="1"'; if($rs = $conn->query($sql)) { while($row = $conn->fetch_assoc($rs) ) { $baslist[] = $row['base_id']; } $baslist = implode(',',$baslist); $conn->free_result($rs); } $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." '$start".$conn->escape_string($filter->fieldsearch)."$end' COLLATE utf8_general_ci )"; break; case "NAME" : $precise.=" ((usr_nom ".$like." '$start".$conn->escape_string($filter->fieldsearch)."$end' OR usr_prenom like '$start".$conn->escape_string($filter->fieldsearch)."$end' ) )"; break; case "COMPANY" : $precise.=" (usr.societe ".$like." '$start".$conn->escape_string($filter->fieldsearch)."$end' )"; break; case "MAIL" : $precise.=" (usr.usr_mail ".$like." '$start".$conn->escape_string($filter->fieldsearch)."$end' )"; break; case "FCT" : $precise.=" (usr.fonction ".$like." '$start".$conn->escape_string($filter->fieldsearch)."$end' )"; break; case "ACT" : $precise.=" (usr.activite ".$like." '$start".$conn->escape_string($filter->fieldsearch)."$end' )"; break; case "LASTMODEL" : $precise.=" (usr.lastModel ".$like." '$start".$conn->escape_string($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="'.$conn->escape_string($usr).'" AND ul.list_id IN ('.implode(',',$filters->lists).') AND ul.list_id = ulu.list_id) '; } if(count($filters->countries)>0 && trim($filters->countries[0])!='') { $precise.=" AND usr.pays IN ('".implode("','",str_replace("'","''",$filters->countries))."')"; } if(count($filters->activite)>0 && trim($filters->activite[0])!='') { $precise.=" AND usr.activite IN ('".implode("','",str_replace("'","''",$filters->activite))."')"; } if(count($filters->fonction)>0 && trim($filters->fonction[0])!='') { $precise.=" AND usr.fonction IN ('".implode("','",str_replace("'","''",$filters->fonction))."')"; } if(count($filters->societe)>0 && trim($filters->societe[0])!='') { $precise.=" AND usr.societe IN ('".implode("','",str_replace("'","''",$filters->societe))."')"; } if(count($filters->template)>0 && trim($filters->template[0])!='') { $precise.=" AND usr.lastModel IN ('".implode("','",str_replace("'","''",$filters->template))."')"; } } $sqlGhost = ''; if(count(whatCanIAdmin($usr,$ses))>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' . // ' left join demand on usr.usr_id=demand.usr_id' . ' WHERE (b.base_id IN ('.$baslist.') '.$sqlGhost.' )' . ' AND usr_login not like "(#deleted_%" '.// AND isnull(demand.base_id)' . ' AND usr.model_of=0 '.$precise.' AND invite="0" AND usr_login!="invite" AND usr_login!="autoregister"' ; return $sql; } function hd_user($usr,$ses,$token,$usrs,$value) { $session = session::getInstance(); if(isset($session->prod['push'][$token])) { $push_datas = $session->prod; foreach($usrs as $u) { if(isset($push_datas['push'][$token]['usrs'][$u])) { $push_datas['push'][$token]['usrs'][$u]['HD'] = $value; } } $session->prod = $push_datas; } } function whoCanIPush($usr,$ses,$lng,$token,$view,$filters,$page=1,$sort='LA',$perPage='') { $session = session::getInstance(); require_once(GV_RootPath.'lib/countries.php'); if(!($ph_session = phrasea_open_session($ses,$usr))) return; $ctry = getCountries($lng); $conn = connection::getInstance(); $out = ''; if($view == 'current') $filters = ''; $sql = sqlFromFilters($usr,$ses,$filters); if($view == 'search' && count($session->prod['push'][$token]['usrs'])) $sql .= ' AND usr.usr_id NOT IN ('.implode(',',array_keys($session->prod['push'][$token]['usrs'])).') '; if($view == 'current') $sql .= ' AND usr.usr_id IN ('.implode(',',array_keys($session->prod['push'][$token]['usrs'])).') '; $nPage = $nresult = 0; if($rs = $conn->query($sql)) { $nPage = ceil(($nresult = $conn->num_rows($rs))/$perPage); } if($page>$nPage) $page = $nPage; if(!isset($session->prod['push'][$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).''; $sql .= ' LIMIT '.(($page-1)*$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; if($rs = $conn->query($sql)) { while(($row = $conn->fetch_assoc($rs))) { // if((($page-1)*300)<=$ilig && $ilig<($page*300)) // { $sel = $hd_checked = ''; if(array_key_exists($row["usr_id"],$session->prod['push'][$token]['usrs'])) { $sel = 'selected'; if($session->prod['push'][$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++; } $conn->free_result($rs); } 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($session->prod['push'][$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,$ses,$lng,$name,$token,$filters) { require_once(GV_RootPath.'lib/countries.php'); $ret = -1; if(!($ph_session = phrasea_open_session($ses,$usr))) return $ret; $conn = connection::getInstance(); $ilists = new stdClass(); $sql = 'SELECT push_list FROM usr WHERE usr_id="'.$conn->escape_string($usr).'"'; if($rs = $conn->query($sql)) { if($row = $conn->fetch_assoc($rs)) { if($row['push_list'] != '') $ilists = json_decode($row['push_list']); } $conn->free_result($rs); } 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="'.$conn->escape_string(p4string::jsonencode($ilists)).'" WHERE usr_id="'.$conn->escape_string($usr).'"'; if($conn->query($sql)) { $ret = loadILists($usr,$ses,$lng,$label); } } return $ret; } function loadILists($usr,$ses,$lng,$name='') { if(!($ph_session = phrasea_open_session($ses,$usr))) return; $conn = connection::getInstance(); $lists = array(); $html = ''; $sql = 'SELECT push_list FROM usr WHERE usr_id = "'.$conn->escape_string($usr).'"'; if($rs = $conn->query($sql)) { if($row = $conn->fetch_assoc($rs)) { if($ilists = json_decode($row['push_list'])) { foreach($ilists as $k=>$v) { $sel = ""; if($k == $name) $sel = 'selected="selected"'; $html .= ""; } } } $conn->free_result($rs); } return $html; } function loadIList($name) { $session = session::getInstance(); $ses = $session->ses_id; $usr = $session->usr_id; if(!($ph_session = phrasea_open_session($ses,$usr))) return; $conn = connection::getInstance(); $sql = 'SELECT push_list FROM usr WHERE usr_id = "'.$conn->escape_string($usr).'"'; if($rs = $conn->query($sql)) { if($row = $conn->fetch_assoc($rs)) { 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() ); } } $conn->free_result($rs); } return p4string::jsonencode($ret); } function saveList($usr,$ses,$lng,$name,$token) { $session = session::getInstance(); require_once(GV_RootPath.'lib/countries.php'); $ret = '-1'.'ses'; if(!($ph_session = phrasea_open_session($ses,$usr))) return $ret; $conn = connection::getInstance(); $label = $name; $sql = 'SELECT label FROM usrlist WHERE usr_id="'.$conn->escape_string($usr).'" AND label = "'.$conn->escape_string($label).'"'; if($rs = $conn->query($sql)) { $n =2; while($conn->num_rows($rs)>0) { $label = $name.'#'.$n; $sql = 'SELECT label FROM usrlist WHERE usr_id="'.$conn->escape_string($usr).'" AND label = "'.$conn->escape_string($label).'"'; $rs = $conn->query($sql); $n++; } } $ret = '-1'; if(isset($session->prod['push'][$token]) && count($session->prod['push'][$token]['usrs'])>0) { $sql = 'INSERT into usrlist (list_id, usr_id, label) VALUES (null, "'.$conn->escape_string($usr).'", "'.$conn->escape_string($label).'")'; if($conn->query($sql)) { $sql = 'SELECT LAST_INSERT_ID() as list_id FROM usrlist'; if($rs = $conn->query($sql)) { if($row = $conn->fetch_assoc($rs)) { $list_id = $row['list_id']; foreach($session->prod['push'][$token]['usrs'] as $usr_id=>$cool) { $sql = 'INSERT INTO usrlistusers (list_id, usr_id) VALUES ("'.$conn->escape_string($list_id).'","'.$conn->escape_string($usr_id).'")'; $conn->query($sql); } $ret = loadLists($usr,$ses,$lng); } } } } return $ret; } function loadLists($usr,$ses,$lng,$name='') { require_once(GV_RootPath.'lib/countries.php'); if(!($ph_session = phrasea_open_session($ses,$usr))) return; $conn = connection::getInstance(); $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 = "'.$conn->escape_string($usr).'" AND s.usr_login NOT LIKE "(#deleted_%" GROUP BY l.label ORDER BY l.label ASC'; if($rs = $conn->query($sql)) { while($row = $conn->fetch_assoc($rs)) { $sel = ""; if($name != '' && $row['label'] == $name) $sel = "selected='selected'"; $html .= ""; } } return $html; } function deleteList($usr,$ses,$lists,$lng) { require_once(GV_RootPath.'lib/countries.php'); if(!($ph_session = phrasea_open_session($ses,$usr))) return; $conn = connection::getInstance(); $lists = json_decode($lists); foreach($lists as $list) { $sql = "DELETE FROM usrlist WHERE list_id='".$conn->escape_string($list)."' AND usr_id='".$conn->escape_string($usr)."'"; if($conn->query($sql)) { $sql = 'DELETE FROM usrlistusers WHERE list_id="'.$conn->escape_string($list).'"'; $conn->query($sql); } } return loadLists($usr,$ses, $lng); return $html; } function deleteiList($usr,$ses,$name,$lng) { if(!($ph_session = phrasea_open_session($ses,$usr))) return; $conn = connection::getInstance(); $sql = sprintf("SELECT push_list FROM usr WHERE usr_id = '%d'", $conn->escape_string($usr)); if($rs = $conn->query($sql)) { if($row = $conn->fetch_assoc($rs)) { $lists = json_decode($row['push_list']); if(isset($lists->$name)) { unset($lists->$name); } $sql = 'UPDATE usr SET push_list="'.$conn->escape_string(p4string::jsonencode($lists)).'" WHERE usr_id="'.$conn->escape_string($usr).'"'; $conn->query($sql); } $conn->free_result($rs); } $ret = loadiLists($usr,$ses,$lng); return $ret; } function getUsrInfos($usr,$ses,$arrayUsrs) { if(!($ph_session = phrasea_open_session($ses,$usr))) return; $conn = connection::getInstance(); $usrs = array(); $sql = 'SELECT usr_id,usr_mail, usr_login, usr_password, usr_nom, usr_prenom FROM usr WHERE usr_id IN ('.implode(',',$arrayUsrs).')'; if($rs = $conn->query($sql)) { while($row = $conn->fetch_assoc($rs)) $usrs[$row['usr_id']] = $row ; $conn->free_result($rs); } return $usrs; } function pushIt($usr,$ses,$newBask,$parmLST,$users,$mail_content,$lng,$accuse) { $session = session::getInstance(); $finalUsers = array(); $conn = connection::getInstance(); $nbMail = 0; $nbchu = 0; $my_link=""; $usrs = getUsrInfos($usr,$ses,array_merge(array_keys($users),array($usr))); $me = user::getInstance($session->usr_id); $reading_confirm_to = false; if($accuse == '1') { $reading_confirm_to = $me->email; } foreach($users as $oneuser=>$rights) { $new_basket = null; try { $user = user::getInstance($oneuser); if($new_basket = new basket()) { $new_basket->name = $newBask; $new_basket->pusher = $usr; $new_basket->usr_id = $user->id; $new_basket->save(); $nbchu++; $new_basket->push_list($parmLST, false); $finalUsers[] = $user->id; $canSendHD = sendHdOk($usr,$ses,$parmLST); if($canSendHD && $rights['canHD']) { $canSendHD = implode(',',$canSendHD); $sql = 'UPDATE sselcont SET canHD="1" WHERE ssel_id="'.$new_basket->ssel_id.'" AND base_id IN ('.$canSendHD.')'; $conn->query($sql); $cache_user = cache_user::getInstance(); $cache_user->delete($oneuser); } set_time_limit(60); $from = trim($me->email) != "" ? $me->email : false; $url = GV_ServerName.'lightbox/index.php?LOG='.random::getUrlToken('view',$user->id,false,$new_basket->ssel_id); if($me->id == $user->id) $my_link = $url; $name = user::getInfos($user->id); $params = array( 'from' => $session->usr_id ,'from_email' => $from ,'to' => $user->id ,'to_email' => $user->email ,'to_name' => $name ,'url' => $url ,'accuse' => $reading_confirm_to ,'message' => $mail_content ,'ssel_id' => $new_basket->ssel_id ); $evt_mngr = eventsmanager::getInstance(); $evt_mngr->trigger('__PUSH_DATAS__', $params); } } catch(Exception $e) { } } return array('nbchu'=>$nbchu,'mylink'=>$my_link, 'users'=>$finalUsers); } function pushValidation($usr,$ses,$ssel_id,$listUsrs,$time,$mail_content, $accuse) { $session = session::getInstance(); $finalUsers = array(); $my_link = ''; $me = user::getInstance($session->usr_id); $reading_confirm_to = false; if($accuse == '1') { $reading_confirm_to = $me->email; } if($time != 0) { $expires_obj = new DateTime('+'.(int)$time.' day'. ((int)$time>1 ? 's':'')); $expires = phraseadate::format_mysql($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; } $basket = basket::getInstance($ssel_id); foreach($listUsrs as $oneuser=>$rights) { $user = user::getInstance($oneuser); if(!$user->id) continue; $from = trim($me->email) != "" ? $me->email : false; $message = $mail_content."
\n
\n"; $url = GV_ServerName.'lightbox/index.php?LOG='.random::getUrlToken('validate',$user->id,$expires, $ssel_id); $name = user::getInfos($user->id); $params = array( 'from' => $session->usr_id ,'from_email' => $from ,'to' => $user->id ,'to_email' => $user->email ,'to_name' => $name ,'message' => $mail_content ,'url' => $url ,'ssel_id' => $ssel_id ,'accuse' => $reading_confirm_to ); $evt_mngr = eventsmanager::getInstance(); $evt_mngr->trigger('__PUSH_VALIDATION__', $params); if($me->id == $user->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($expires, $oneuser, $rights['canAgree'], $rights['canSeeOther'], $rights['canHD']); $finalUsers[] = $oneuser; } return array('mylink'=>$my_link, 'users'=>$finalUsers); } ?>