/class.xmoduser2.inc
PHP | 678 lines | 590 code | 44 blank | 44 comment | 92 complexity | 43fc767467c06a72968147075b71a007 MD5 | raw file
Possible License(s): LGPL-2.0, LGPL-2.1, GPL-3.0, Apache-2.0, BSD-3-Clause
- <?php
- class XModUser2 extends XModUserAndGroup {
- public $lost_password=true;
- public $account_request=false;
- public $choose_lang_on_login = true;
- public $send_account_request_to_email=NULL;
- function __construct($ar=NULL) {
- parent::__construct($ar);
- if($GLOBALS['XUSER'] && !empty($this->xset->desc['BO']) && empty($this->fieldssec['BO'])){
- $rwv=$this->secure('',':rwv');
- if(!$rwv) $this->fieldssec['BO']='ro';
- }
- XLabels::loadLabels('xmoduser2');
- $this->group=XLabels::getSysLabel("general","systemproperties","text");
- $this->modulename=XLabels::getSysLabel("xmoduser2","modulename","text");
- if(!$this->xset->fieldExists('PUBLISH')) $this->account_request=false;
- }
- /// Initialisation des propriétés
- public function initOptions() {
- parent::initOptions();
- $alabel = XLabels::getSysLabel('xmoduser2.modulename');
- $this->_options->setOpt(XLabels::getSysLabel('xmodtable','composed_fullnam'),'composed_fullnam','text',NULL,NULL,$alabel);
- $this->_options->setOpt(XLabels::getSysLabel('xmoduser2','lost_password'),'lost_password','boolean',NULL,NULL,$alabel);
- $this->_options->setOpt(XLabels::getSysLabel('xmoduser2','account_request'),'account_request','boolean',NULL,NULL,$alabel);
- $this->_options->setOpt(XLabels::getSysLabel('xmoduser2','choose_lang_on_login'),'choose_lang_on_login','boolean',NULL,NULL,$alabel);
- $this->_options->setComment(XLabels::getSysLabel('xmoduser2','account_request_comment'),'account_request');
- $this->_options->setOpt(XLabels::getSysLabel('xmoduser2','send_account_request_to_email'),'send_account_request_to_email','text',NULL,NULL,$alabel);
- }
- /// securite des fonctions accessibles par le web
- function secGroups($function, $group=NULL) {
- $g=array(
- 'setbackuid'=>array('none','admin'),
- 'editPref'=>array('admin'),
- 'setuid'=>array('admin'),
- 'getBookmarks'=>array('none','admin'),
- 'getBookmark'=>array('none','admin'),
- 'insertBookmark'=>array('none','admin'),
- 'procInsertBookmark'=>array('none','admin'),
- 'editBookmark'=>array('none','admin'),
- 'delBookmark'=>array('none','admin'),
- 'procEditBookmark'=>array('none','admin'),
- 'procEditPref'=>array('admin'),
- 'sendPasswords'=>array('rw','rwv','admin'),
- 'browseSelection'=>array('none','list','ro','rw','rwv','admin'),
- 'myAccount'=>array('none','list','ro','rw','rwv','admin'),
- 'procEditMyAccount'=>array('none','list','ro','rw','rwv','admin'),
- 'getPreferences'=>array('none','list','ro','rw','rwv','admin'),
- 'requestAnAccount'=>array('none'),
- 'procRequestAnAccount'=>array('none'),
- );
- if(isset($g[$function])) {
- if(!empty($group)) return in_array($group, $g[$function]);
- return $g[$function];
- }
- return parent::secGroups($function,$group);
- }
-
- /// Edition des propriétés du module
- function procEditProperties($ar=NULL){
- $ret=parent::procEditProperties($ar);
- if($this->account_request && !$this->xset->fieldExists('PUBLISH')){
- $this->xset->createField('PUBLISH','Actif','XBoolDef','0','1','0','1','0','1','0','0');
- updateQuery('update USERS set UPD=UPD,PUBLISH=1');
- }
- return $ret;
- }
- /// Prépare une demande de compte
- function requestAnAccount($ar=NULL){
- $this->captcha=true;
- if(empty($ar['selectedfields'])){
- $ar['selectedfields']=array_diff(array_keys($this->xset->desc),array('alias','GRP','GRPA','ldata','luser','passwd','DATEF','DATET',($this->composed_fullnam?'fullnam':'')));
- }
- // Désactive toutes les listbox
- foreach($this->xset->desc as $f){
- $f->listbox=false;
- }
- return $this->insert($ar);
- }
- /// Enregistre une demande de compte
- function procRequestAnAccount($ar=NULL){
- $p=new XParam($ar,NULL);
- $this->captcha=true;
- $ar['PUBLISH']=2;
- $ar['alias']='user'.uniqid();
- $ar['ldata']=XShell::getLangUser();
- $ar['luser']=XShell::getLangUser();
- $ret=$this->procInsert($ar);
-
- if(!empty($ret) && !empty($ret['oid']) && !empty($this->send_account_request_to_email)) {
- $olduser=$GLOBALS['XUSER'];
- $GLOBALS['XUSER']=new XUser(array("UID"=>'root'));
- setSessionVar("UID",$GLOBALS['XUSER']->_curoid);
- $this->procSendACopyTo(array('oid'=>$ret['oid'],
- 'sendinmail' => array($ret['oid']=>true),
- 'showdest'=>false,
- 'dest_aemails' => $this->send_account_request_to_email,
- 'asubject' => 'Account request : '.$p->get('fullnam'),
- 'amessage' => 'You have received a new account request',
- 'tplentry' => TZR_RETURN_DATA, '_local'=>true), TZR_SENDER_ADDRESS);
- if(!empty($olduser)) {
- setSessionVar("UID",$olduser->uid());
- $GLOBALS["XUSER"]=$olduser;
- }
-
- }
- return $r;
- }
- /// Edite le compte de l'utilisateur courant
- function myAccount($ar=NULL){
- $ar['oid']=XUser::get_current_user_uid();
- if(!is_array($ar['fieldssec'])){
- foreach(array('DATET','DATEF','alias','GRP','GRPA','BO','bohome') as $f){
- $ar['fieldssec'][$f]='ro';
- }
- }
- return $this->edit($ar);
- }
- /// Valide l'édition du compte de l'utilisateur courant
- function procEditMyAccount($ar=NULL){
- $p=new XParam($ar,NULL);
- $ar['oid']=XUser::get_current_user_uid();
- if(!is_array($ar['fieldssec'])){
- foreach(array('DATET','DATEF','alias','GRP','GRPA','BO','bohome') as $f){
- $ar['fieldssec'][$f]='ro';
- }
- }
- $ret=$this->procEdit($ar);
- $d=$this->display(array('oid'=>$ar['oid'],'tplentry'=>TZR_RETURN_DATA,'selectedfields'=>array('fullnam','email')));
- setSessionVar('FullName',$d['ofullnam']->raw);
- setSessionVar('Email',$d['oemail']->raw);
- return $ret;
- }
- /// Recupère les préferences de l'utilisateur sur chaque module
- function getPreferences($ar=NULL){
- $p=new XParam($ar,NULL);
- $tplentry=$p->get('tplentry');
- $modlist=XModule::modlist(array('tplentry'=>TZR_RETURN_DATA));
- foreach($modlist['lines_oid'] as $i=>$moid){
- $mod=XModule::objectFactory(array('moid'=>$moid,'tplentry'=>TZR_RETURN_DATA));
- $prefs=$mod->editPrefs();
- if(!empty($prefs)) $modlist['lines_prefs'][$i]=$prefs;
- }
- return XShell::toScreen1($tplentry,$modlist);
- }
- /// Rempli le fullname dans le cas ou il est composé d'autres champs
- function getComposedFullnam(&$ar){
- $p = new XParam($ar,array());
- $oid = $p->get('oid');
- if(!is_array($oid) && !empty($this->composed_fullnam)){
- $tab=explode(',',$this->composed_fullnam);
- $ok=false;
- // On verifie qu'au moins un des champs qui composent le nom existe
- foreach($tab as $f){
- if($p->is_set($f)){
- $ok=true;
- }
- }
- if($ok){
- $fullnam='';
- foreach($tab as $f){
- if($p->is_set($f)){
- $v=$p->get($f);
- }else{
- if(empty($d)) $d=$this->display(array('tplentry'=>TZR_RETURN_DATA,'oid'=>$oid,'selectedfields'=>$tab));
- $v=$d['o'.$f]->raw;
- }
- $fullnam.=$v;
- if(!empty($v)) $fullnam.=' ';
- }
- if(substr($fullnam,-1)==' ') $fullnam=substr($fullnam,0,-1);
- if(!empty($fullnam)) $ar['fullnam']=$fullnam;
- }
- }
- }
- /// Sauvegarde un compte utilisateur
- function procEdit($ar=NULL){
- $this->getComposedFullnam($ar);
- return parent::procEdit($ar);
- }
- /// Duplication d'un compte utilisateur
- function procEditDup($ar){
- $r=parent::procEditDup($ar);
- if(!empty($r['oid'])){
- $d1=$this->display(array('oid'=>$r['oid'], 'tplentry'=>TZR_RETURN_DATA));
- $groups=XDataSource::objectFactoryHelper8('BCLASS=XDSTable&SPECS='.'GRP');
- foreach($d1['oGRP']->oidcollection as $groupoid) {
- $d2=&$groups->rDisplay($groupoid);
- if(!empty($d2['oprefs']->raw)) {
- // on duplique le contenu des préférences stockées dans la table OPTS
- $templateoid=$d2['oprefs']->raw;
- $useroid=$r['oid'];
- $rs2=selectQuery('select * from OPTS where user="'.$templateoid.'"');
- $opts=XDataSource::objectFactoryHelper8('BCLASS=XDSTable&SPECS='.'OPTS');
- while($rs2 && ($ors2=$rs2->fetch())) {
- $opts->procInput(array('user'=>$useroid, 'specs'=>$ors2['specs'], 'modid'=>$ors2['modid'],
- 'dtype'=>$ors2['dtype']));
- }
- }
- }
- }
- return $r;
- }
- /// creation d'un nouvel utilisateur
- function procInsert($ar) {
- $this->getComposedFullnam($ar);
- $p=new XParam($ar,array());
- $passwd=$p->get('passwd');
- if($passwd==TZR_UNCHANGED || !$passwd) {
- $ar['passwd']=newPassword();
- }
- $r=parent::procInsert($ar);
- if(!empty($r['oid'])) {
- $d1=$this->display(array('oid'=>$r['oid'], 'tplentry'=>TZR_RETURN_DATA));
- $groups=XDataSource::objectFactoryHelper8('BCLASS=XDSTable&SPECS='.'GRP');
- foreach($d1['oGRP']->oidcollection as $groupoid) {
- $d2=&$groups->rDisplay($groupoid);
- if(!empty($d2['oprefs']->raw)) {
- // on duplique le contenu des préférences stockées dans la table OPTS
- $templateoid=$d2['oprefs']->raw;
- $useroid=$r['oid'];
- $rs2=selectQuery('select * from OPTS where user="'.$templateoid.'"');
- $opts=XDataSource::objectFactoryHelper8('BCLASS=XDSTable&SPECS='.'OPTS');
- while($rs2 && ($ors2=$rs2->fetch())) {
- $opts->procInput(array('user'=>$useroid, 'specs'=>$ors2['specs'], 'modid'=>$ors2['modid'],
- 'dtype'=>$ors2['dtype']));
- }
- return $r;
- }
- }
- }
- return $r;
- }
-
- function browse_actions(&$r) {
- $self=$GLOBALS['TZR_SESSION_MANAGER']::complete_self();
- $self=$self."&moid=".$this->_moid."&oid=<oid>&tplentry=br&function=";
- if(!is_array($r['lines_oid'])) return;
- $viewico=XLabels::getSysLabel('general','view');
- $viewtxt=XLabels::getSysLabel('general','view','text');
- $editico=XLabels::getSysLabel('general','edit');
- $edittxt=XLabels::getSysLabel('general','edit','text');
- $delico=XLabels::getSysLabel('general','delete');
- $deltxt=XLabels::getSysLabel('general','delete','text');
- $secico=XLabels::getSysLabel('general','security');
- $sectxt=XLabels::getSysLabel('general','security','text');
- $moveico=XLabels::getSysLabel('general','move');
- $movetxt=XLabels::getSysLabel('general','move','text');
- $editlvl=$this->secGroups('edit');
- $dellvl=$this->secGroups('del');
- $seclvl=$this->secGroups('editSec');
- $sec2lvl=$this->secGroups('setuid');
- $moidadmin=XModule::getMoid(XMODADMIN_TOID);
- foreach($r['lines_oid'] as $i =>$oid) {
- $oidlvl=array_keys($r['objects_sec'][$i]);
- $self1=str_replace('<oid>',$oid,$self);
- $r['actions'][$i][0]='<a class="cv8-ajaxlink cv8-dispaction" href="'.$self1.'display&template=xmodtable/view.html" title="'.$viewtxt.'">'.$viewico.'</a>';
- $r['actions_label'][$i][0]=$viewico;
- $r['actions_url'][$i][0]=$self1.'display&template=xmodtable/view.html';
- // edition
- $inter=array_intersect($editlvl,$oidlvl);
- if(!empty($inter)){
- $url=$self1.'edit&template=xmodtable/edit.html';
- $r['actions'][$i][1]='<a class="cv8-ajaxlink cv8-editaction" href="'.$url.'" title="'.$edittxt.'">'.$editico.'</a>';
- $r['actions_url'][$i][1]=$url;
- $r['actions_label'][$i][1]=$editico;
- }
- // suppression
- $inter=array_intersect($dellvl,$oidlvl);
- if(!empty($inter)){
- $url=$self1.'del&template=basic/message.html';
- $r['actions'][$i][2]='<a class="cv8-delaction" href="'.$url.'" title="'.$deltxt.'">'.$delico.'</a>';
- $r['actions_url'][$i][2]=$url;
- $r['actions_label'][$i][2]=$deltxt;
- }
- // securité
- $inter=array_intersect($seclvl,$oidlvl);
- if(!empty($inter)){
- $url=$self1.'editSec&moid='.$this->_moid."&oid=$oid&template=xmoduser2/secedit.html&tplentry=br";
- $r['actions'][$i][3]='<a class="cv8-ajaxlink" href="'.$url.'" title="'.$sectxt.'">'.$secico.'</a>';
- $r['actions_url'][$i][3]=$url;
- $r['actions_label'][$i][3]=$sectxt;
- }
- // changer user
- $inter=array_intersect($sec2lvl,$oidlvl);
- if(!empty($inter)){
- $url2='&function=portail&template=home.html&moid='.$moidadmin;
- $url=$self1.'setuid&moid='.$this->_moid."&oid=$oid&template=xmoduser2/secedit.html&tplentry=br&_next=".urlencode($url2);
- $r['actions'][$i][4]='<a href="'.$url.'" title="'.$movetxt.'">'.$moveico.'</a>';
- $r['actions_url'][$i][4]=$url;
- }
- }
- }
-
- /// Controle si une édition est valide
- function procEditCtrl($ar=NULL) {
- if(!parent::procEditCtrl($ar)) return false;
- $p=new XParam($ar,array());
- $alias=$p->get('alias');
- if(!empty($alias) && !preg_match('/^([a-z0-9@\._-]{3,30})$/i',$alias)) {
- XShell::toScreen2('','message','Username must be 3 to 30 characters long and must contain a-z, 0-9 and _, - characters only');
- return false;
- }
- $cnt=0;
- $oid=$p->get('oid');
- if(!empty($oid) && !empty($alias)) $cnt=countSelectQuery('select COUNT(*) from '.$this->table.' where alias="'.$alias.'" and KOID!="'.$oid.'"');
- elseif(!empty($alias)) $cnt=countSelectQuery('select COUNT(*) from '.$this->table.' where alias="'.$alias.'"');
- if($cnt) {
- XShell::toScreen2('','message',XLabels::getSysLabel('xmoduser2','existing_user','text'));
- return false;
- }
- // Verifie que les nouveaux droits ne sont pas supérieurs aux droits de l'utilisateur actuel
- $grp=$p->get('GRP');
- if(false && !empty($grp) && !XShell::isRoot()){
- $grp=$this->xset->desc['GRP']->post_edit($grp,array('GRP_HID'=>$p->get('GRP_HID'),'GRP_FMT'=>$p->get('GRP_FMT')));
- if(!empty($grp)){
- $rs=&selectQuery('select * from MODULES');
- while($rs && $ors=$rs->fetch()){
- foreach($GLOBALS['TZR_LANGUAGES'] as $lang=>$foo){
- $nlvl=XUser::secure8maxlevel($ors['MOID'],'',$grp->raw,$lang);
- $alvl=XUser::secure8maxlevel($ors['MOID'],'',null,$lang);
- if(XUser::compareSecLevels($ors['MOID'],$nlvl,$alvl,'>')){
- XShell::toScreen2('','message',XLabels::getSysLabel('security','noauthtosetsec'));;
- return false;
- }
- }
- }
- }
- }
- return true;
- }
- /// suppression d'un utilisateur
- function del($ar) {
- if(parent::del($ar)) {
- $p = new XParam($ar, array());
- $oid = $p->get('oid');
- // suppression des abonnements
- updateQuery("delete from OPTS where user like '$oid'");
- // suppression des regles de secuite inutiles
- updateQuery("delete from ACL4 where AGRP like '$oid'");
- // suppression des enregistrements dans les logs
- XArchives::appendOid($oid, 'LOGS.user', true);
- XArchives::appendOid($oid, 'LOGS.object', true);
- if(!empty($GLOBALS['XLOCK'])) {
- $GLOBALS['XLOCK']->cleanLocksForUser($oid);
- }
- }
- }
- /// Obtenir la liste des bookmarks de l'utilisateur connecté ou de l'utilisateur dont l'oid est passé dans le paramètre
- function &getBookmarks($ar) {
- $p=new XParam($ar,array());
- $oid=$p->get('oid','norequest');
- if(empty($oid)) $oid=XUser::get_current_user_uid();
- $tplentry=$p->get('tplentry');
- $r1=XOpts::getOpt($oid, $this->_moid, 'book');
- $sortarray=array();
- foreach($r1 as $k=>&$v1) {
- $sortarray[$k]=$v1['group'].$v1['title'];
- $v1['key']=$k;
- $v1['text']=nl2br(htmlspecialchars(strip_tags($v1['text'])));
- $v1['group']=htmlspecialchars(strip_tags($v1['group']));
- $v1['title']=htmlspecialchars(strip_tags($v1['title']));
- $v1['autostart']=@$v1['autostart'];
- $v1['viewhome']=@$v1['viewhome'];
- }
- array_multisort($sortarray,SORT_ASC,$r1);
- if($tplentry==TZR_RETURN_DATA) return $r1;
- else{
- $r2['bks']=&$r1;
- XShell::toScreen1($tplentry,$r2);
- }
- }
- /// Recupere les parametres d'un bookmark
- function &getBookmark($ar) {
- $p=new XParam($ar,array());
- $oid=$p->get('oid','norequest');
- if(empty($oid)) $oid=XUser::get_current_user_uid();
- $tplentry=$p->get('tplentry');
- $key=$p->get('key');
- $r1=XOpts::getOpt($oid, $this->_moid, 'book');
- $v1=$r1[$key];
- // Assure compatibilité <V8
- if(!is_array($v1['urls'])) $v1['urls']=array($v1['url']);
- $v1['key']=$key;
- $v1['text']=htmlspecialchars(strip_tags($v1['text']));
- $v1['group']=htmlspecialchars(strip_tags($v1['group']));
- $v1['title']=htmlspecialchars(strip_tags($v1['title']));
- $v1['autostart']=@$v1['autostart'];
- $v1['viewhome']=@$v1['viewhome'];
- return XShell::toScreen1($tplentry,$v1);
- }
- /// Modifie l'intégralité des bookmarks d'un utilisateur
- function &setBookmarks($ar) {
- $p=new XParam($ar,array());
- $oid=$p->get('oid','norequest');
- if(empty($oid)) $oid=XUser::get_current_user_uid();
- $specs=$p->get('specs');
- XOpts::setOpt($oid, $this->_moid, 'book', $specs);
- }
- /// Suppression d'un bookmark
- function delBookmark($ar) {
- $p=new XParam($ar,array('oid'=>XUser::get_current_user_uid()));
- $oid=$p->get('oid','norequest');
- if(!($oid==XUser::get_current_user_uid() || XShell::isRoot()))
- securityWarning('XModUser2::delBookmark: user '.$oid.' cannot apply');
- $tplentry=$p->get('tplentry');
- $key=$p->get('key');
- $r1=XOpts::unsetSubOpt($oid, $this->_moid, 'book', $key);
- }
- /// Prépare l'insertion d'un nouveau bookmark
- function insertBookmark($ar=NULL){
- $p=new XParam($ar,NULL);
- $urls=XModUser2::_normalizeBookmark($p->get('urls'));
- $titles=$p->get('titles');
- $comments=$p->get('comments');
- $tplentry=$p->get('tplentry');
- $ret=array('urls'=>$urls,'titles'=>$titles,'comments'=>$comments);
- XShell::toScreen1($tplentry,$ret);
- }
- /// Enregistre un nouveau bookmark
- function procInsertBookmark($ar=NULL){
- return $this->procEditBookmark($ar);
- }
- /// Modification d'un bookmark, préparation de l'écran
- function editBookmark($ar) {
- $p=new XParam($ar,array('oid'=>XUser::get_current_user_uid()));
- $oid=$p->get('oid','norequest');
- if(!($oid==XUser::get_current_user_uid() || XShell::isRoot()))
- securityWarning('XModUser2::editBookmark: user '.$oid.' cannot apply');
- $tplentry=$p->get('tplentry');
- $key=$p->get('key');
- $r1=XOpts::getOpt($oid, $this->_moid, 'book');
- $r2=$r1[$key];
- // Assure compatibilité <V8
- if(!is_array($r2['urls'])) $r2['urls']=array($r2['url']);
- $r2['key']=$key;
- return XShell::toScreen1($tplentry, $r2);
- }
- /// Normalisation des bookmarks: on essaie de transformer les bookmarks en url generiques par defaut
- static public function _normalizeBookmark($urls) {
- if(!is_array($urls)){
- $urls=array($urls);
- $one=true;
- }
- foreach($urls as &$url){
- $url=strip_tags(trim($url));
- $url=preg_replace('/^(javascript[^&]*)/','',$url);
- $url=preg_replace('/^(http[^&]*)/','',$url);
- $url=preg_replace('@^(/[^&]*)@','',$url);
- $url=preg_replace('/'.session_name().'=[a-z0-9]+/i','',$url);
- $url=preg_replace('/_bdx=[a-z0-9_]+/i','',$url);
- $url=preg_replace('/&_nohistory=./i','',$url);
- $url=preg_replace('/&_raw=./i','',$url);
- $url=preg_replace('/&_ajax=./i','',$url);
- $url=preg_replace('/&_bdxnewstack=./i','',$url);
- $url=preg_replace('/&_=[^&]+/i','',$url);
- $url=str_replace('&&','&',$url);
- }
- if($one) return $urls[0];
- else return $urls;
- }
- /// Enregistres les modifications d'un bookmark
- function procEditBookmark($ar) {
- $p=new XParam($ar,array('oid'=>XUser::get_current_user_uid()));
- $oid=$p->get('oid','norequest');
- if(!($oid==XUser::get_current_user_uid() || XShell::isRoot()))
- securityWarning('XModUser2::procEditBookmark: user '.$oid.' cannot apply');
- $tplentry=$p->get('tplentry');
- $key=$p->get('key');
- $group=strip_tags($p->get('group'));
- $title=strip_tags($p->get('title'));
- $text=strip_tags($p->get('text'));
- $autostart=$p->get('autostart');
- $viewhome=$p->get('viewhome');
- $titles=$p->get('titles');
- $comms=$p->get('comments');
- $urls=XModUser2::_normalizeBookmark($p->get('urls'));
- $r1=XOpts::getOpt($oid, $this->_moid, 'book');
- $new=array('title'=>$title,'text'=>$text,'group'=>$group,'urls'=>$urls,'titles'=>$titles,'comments'=>$comms,'autostart'=>$autostart,
- 'viewhome'=>$viewhome);
- if(isset($key)) $r1[$key]=$new;
- else $r1[]=$new;
- XOpts::setOpt($oid, $this->_moid, 'book', $r1);
- }
- /* Fin gestion des bookmarks */
-
- /// Envoie du mot de passe aux utilisteurs spécifiés
- function sendPasswords($ar=NULL) {
- $p=new XParam($ar, array());
- $_selected=$p->get('_selected');
- $adminonly=$p->get('adminonly');
- if(empty($_selected)) $_selected=array($p->get('oid')=>1);
- $fields=array('KOID','alias','fullnam','email');
- if($this->xset->fieldExists('ldata')) $fields[]="ldata";
- if($this->xset->fieldExists('luser')) $fields[]="luser";
- $actlangdata=XShell::getLangData();
- $actreqlangdata=$_REQUEST['LANG_DATA'];
- $actreqlanguser=$_REQUEST['LANG_USER'];
- foreach($_selected as $oid=>$foo) {
- $rs=selectQuery("select distinct ".implode(',',$fields)." from USERS where KOID='$oid'");
- if($ors=$rs->fetch()) {
- if($this->xset->fieldExists('ldata')){
- XShell::getLangData($ors['ldata'],true);
- $_REQUEST['LANG_DATA']=$ors['ldata'];
- }
- if($this->xset->fieldExists('luser')){
- $_REQUEST['LANG_USER']=$ors['luser'];
- $GLOBALS['XSHELL']->labels->reloadLabels();
- }
- $alias=$ors['alias'];
- $pwd=newPassword();
- $text=$GLOBALS['XSHELL']->labels->getCustomSysLabel('xsession.messages','login_msg','mail');
- $text=sprintf($text,$alias,$pwd);
- updateQuery('update USERS set passwd=MD5("'.$pwd.'") where alias="'.$alias.'"');
- $subject=$GLOBALS['XSHELL']->labels->getCustomSysLabel('xsession.messages','login_sub','mail');
- if(empty($adminonly)) $this->sendMail2User($subject, $text,$ors['email'],$this->sender);
- $this->sendMail2User($subject, $text,TZR_DEBUG_ADDRESS, $this->sender);
- $rs->closeCursor();
- }
- }
- if($this->xset->fieldExists('ldata')){
- XShell::getLangData($actlangdata,true);
- $_REQUEST['LANG_DATA']=$actreqlangdata;
- }
- if($this->xset->fieldExists('luser')){
- $_REQUEST['LANG_USER']=$actreqlanguser;
- $GLOBALS['XSHELL']->labels->reloadLabels();
- }
- }
- protected function _actionlist(&$my) {
- parent::_actionlist($my);
- $moid=$this->_moid;
- $oid=@$_REQUEST['oid'];
- $uniqid=XShell::uniqid();
- if($this->secure('','sendPasswords')) {
- if(in_array(XShell::_function(),array('edit','display'))) {
- $o1=new XModuleAction($this,'sendaccount',XLabels::getSysLabel('xmoduser2','sendaccount','text'),
- '&moid='.$moid.'&oid='.$oid.'&_function=sendPasswords&template=basic/message.html&tplentry=br','edit');
- $o1->menuable=true;
- $my['sendaccount']=$o1;
- }elseif(in_array(XShell::_function(),array('browse','procQuery'))) {
- $message=addslashes(XLabels::getSysLabel('general','operation_succeeded','text'));
- $o1=new XModuleAction($this,'sendaccount',XLabels::getSysLabel('xmoduser2','sendaccount','text'),
- 'javascript:TZR.applySelected("sendPasswords",document.browse'.$uniqid.',"'.$message.'",'.
- '"basic/message.html",0,"'.addslashes(XLabels::getSysLabel('general','error_select_object','text')).'");',
- 'edit');
- $o1->menuable=true;
- $my['sendaccount']=$o1;
- }
- }
- $goid=XModule::getMoid(XMODGROUP_TOID);
- $ri=XUser::secure8maxlevel($goid);
- if(in_array($ri, array('admin', 'rwv', 'rw', 'ro'))){
- $o1=new XModuleAction($this,'groups',XLabels::getSysLabel('xmodgroup','groups','text'),
- '&function=browse&moid='.$goid.'&template=xmodtable/browse.html&tplentry=br','display');
- $o1->menuable=true;
- $o1->setToolbar('xmodgroup','groups');
- $my['groups']=$o1;
- }
- }
- function al_browse(&$my){
- parent::al_browse($my);
- $uniqid='v'.XShell::uniqid();
- if($this->secure('','editSec')){
- $o1=new XModuleAction($this,'editsec',XLabels::getSysLabel('general','security','text'),
- 'javascript:'.$uniqid.'.applyfunction("editSec","",{template:"xmoduser2/secedit.html"},true,true);','edit');
- $o1->setToolbar('general','security');
- $o1->order=4;
- $my['editsec']=$o1;
- }
- }
- function setbackuid($ar) {
- $this->setuid($ar);
-
- }
- function setuid($ar) {
- $p=new XParam($ar,array());
- $oid=$p->get('oid');
- $suid=getSessionVar('SUID');
-
- $c=$GLOBALS['TZR_SESSION_MANAGER'];
- $sess=new $c();
- $params = array(
- '_options' => array('local' => 1),
- 'suid' => 1,
- 'admini' => getSessionVar('ADMINI'));
- if (empty($suid)){
- $params['uid'] = $oid;
- $sess->procAuth($params);
- } else {
- $params['uid'] = $suid;
- $sess->procAuth($params);
- }
- }
- /* Gestion de la selection */
- /// Ajoute des données à la selection
- function addToSelection($moid,$data){
- $sel=getSessionVar('selection');
- if(empty($sel[$moid])) $sel[$moid]=array();
- $sel[$moid]=array_merge($sel[$moid],$data);
- setSessionVar('selection',$sel);
- }
- /// Ajoute des données à la selection
- function delToSelection($moid,$data){
- $sel=getSessionVar('selection');
- foreach($data as $oid=>&$foo){
- unset($sel[$moid][$oid]);
- }
- if(empty($sel[$moid])) unset($sel[$moid]);
- setSessionVar('selection',$sel);
- }
- /// Parcours toute la selection
- function browseSelection($ar=NULL){
- $p=new XParam($ar,NULL);
- $tplentry=$p->get('tplentry');
- $details=$p->get('details');
- $sel=getSessionVar('selection');
- $result=array();
- $names=array();
- if(is_array($sel)) {
- foreach($sel as $moid=>&$data){
- $mod=XModule::objectFactory(array('moid'=>$moid,'tplentry'=>TZR_RETURN_DATA));
- $br=&$mod->browseUserSelection(array('tplentry'=>TZR_RETURN_DATA));
- $br['_actions']=$mod->userSelectionActions();
- if(empty($br['_count'])){
- unset($sel[$moid]);
- continue;
- }
- $result[]=$br;
- $names[]=$br['_modulename'];
- }
- setSessionVar('selection',$sel);
- array_multisort($names,$result);
- }
- return XShell::toScreen2($tplentry,'selections',$result);
- }
- /// Rend l'accessibilite du module avec l'oid donne
- function secure($oid, $func, $user=NULL, $lang=TZR_DEFAULT_LANG) {
- if(($func=='requestAnAccount' || $func=='procRequestAnAccount') && !$this->account_request) return false;
- return parent::secure($oid,$func,$user,$lang);
- }
- }
- ?>