"TYPO3 4.0.1: typo3_src-4.0.1/typo3/sysext/sys_action/class.tx_sysaction.php Source File", "datetime" => "Sat Dec 2 19:22:34 2006", "date" => "2 Dec 2006", "doxygenversion" => "1.4.6", "projectname" => "TYPO3 4.0.1", "projectnumber" => "4.0.1" ); get_header($doxygen_vars); ?>

class.tx_sysaction.php

00001 <?php
00002 /***************************************************************
00003 *  Copyright notice
00004 *
00005 *  (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
00006 *  All rights reserved
00007 *
00008 *  This script is part of the TYPO3 project. The TYPO3 project is
00009 *  free software; you can redistribute it and/or modify
00010 *  it under the terms of the GNU General Public License as published by
00011 *  the Free Software Foundation; either version 2 of the License, or
00012 *  (at your option) any later version.
00013 *
00014 *  The GNU General Public License can be found at
00015 *  http://www.gnu.org/copyleft/gpl.html.
00016 *  A copy is found in the textfile GPL.txt and important notices to the license
00017 *  from the author is found in LICENSE.txt distributed with these scripts.
00018 *
00019 *
00020 *  This script is distributed in the hope that it will be useful,
00021 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00022 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00023 *  GNU General Public License for more details.
00024 *
00025 *  This copyright notice MUST APPEAR in all copies of the script!
00026 ***************************************************************/
00031 require_once(PATH_t3lib."class.t3lib_tceforms.php");
00032 require_once(PATH_t3lib."class.t3lib_tcemain.php");
00033 
00034 require_once(PATH_t3lib."class.t3lib_fullsearch.php");
00035 require_once(PATH_t3lib."class.t3lib_xml.php");
00036 require_once(PATH_t3lib."class.t3lib_loaddbgroup.php");
00037 
00038 class tx_sysaction extends mod_user_task {
00039         var $todoTypesCache = array();
00040         var $insCounter=0;
00041         var $xCol;
00042         var $t3lib_TCEforms;
00043 
00044         function overview_main()        {
00045                 $mC = $this->renderActionList();
00046                 if ($mC)        {
00047                         $icon = '<img src="'.$this->backPath.t3lib_extMgm::extRelPath("sys_action").'ext_icon.gif" width=18 height=16 class="absmiddle">';
00048                         return $this->mkMenuConfig($icon.$this->headLink("tx_sysaction",1),'',$mC);
00049                 }
00050         }
00051         function main() {
00052                 global $SOBE,$BE_USER,$LANG,$BACK_PATH,$TCA_DESCR,$TCA,$CLIENT,$TYPO3_CONF_VARS;
00053 
00054                 return $this->renderActions();
00055         }
00056         function JScode()       {
00057                 $this->t3lib_TCEforms = t3lib_div::makeInstance("t3lib_TCEforms");
00058                 $this->t3lib_TCEforms->backPath = $GLOBALS["BACK_PATH"];
00059                 return $this->t3lib_TCEforms->dbFileCon();
00060         }
00061 
00062         // ************************
00063         // ACTIONS
00064         // ***********************
00065         function renderActions()        {
00066                 global $LANG;
00067                 $uid = t3lib_div::intInRange(t3lib_div::_GP("sys_action_uid"),0);
00068                 $out="";
00069                 $header="";
00070                 if ($uid)       {
00071                         $res = $this->getActionResPointer($uid);
00072                         if($actionRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))    {
00073 
00074                                         // Action header:
00075                                 $header = t3lib_iconworks::getIconImage("sys_action",$actionRow,$this->backPath,'hspace="2" class="absmiddle"').'<b>'.$actionRow["title"].'</b>';
00076                                 $out.='<table border=0 cellpadding=0 cellspacing=1 width=100%>
00077                                         <tr><td colspan=2 class="bgColor5">'.fw($header).'</td></tr>
00078                                         <tr>
00079                                                 <td width=1% valign=top class="bgColor4">'.fw($LANG->sL(t3lib_BEfunc::getItemLabel("sys_action","type"))."&nbsp;").'</td>
00080                                                 <td valign=top class="bgColor4">'.fw(htmlspecialchars(t3lib_BEfunc::getProcessedValue("sys_action","type",$actionRow["type"]))).'</td>
00081                                         </tr>
00082                                         <tr>
00083                                                 <td width=1% valign=top class="bgColor4">'.fw($LANG->sL(t3lib_BEfunc::getItemLabel("sys_action","description"))."&nbsp;").'</td>
00084                                                 <td valign=top class="bgColor4">'.fw(nl2br($actionRow["description"])).'</td>
00085                                         </tr>';
00086                                 $out.='</table>';
00087                                 $theCode = $this->pObj->doc->section("",$out,0,1);
00088 
00089 
00090 
00091                                         // Types of actions:
00092                                 switch($actionRow["type"])      {
00093                                         case 1: // new BE user
00094                                                 $actionContent="";
00095                                                 $beRec = t3lib_BEfunc::getRecord("be_users",intval($actionRow["t1_copy_of_user"]));
00096                                                 if (is_array($beRec))   {
00097                                                         // Create or update:
00098                                                         $inData = t3lib_div::_GP("data");
00099 //      debug($inData);
00100                                                         $userRecord="";
00101                                                         $newFlag=0;
00102                                                         if (is_array($inData["be_users"]))      {
00103                                                                 $nId = $this->action_t1_createUpdateBeUser($inData["be_users"],$actionRow);
00104                                                                 $userRecord=t3lib_BEfunc::getRecord("be_users",$nId);
00105                                                         }
00106                                                         if (t3lib_div::_GP("be_users_uid"))     {
00107                                                                 $userRecord=t3lib_BEfunc::getRecord("be_users",t3lib_div::_GP("be_users_uid"));
00108                                                         }
00109                                                         if (!is_array($userRecord))     {
00110                                                                 $userRecord=array();
00111                                                                 if (is_array($inData["be_users"]["NEW"]))       {       $userRecord=$inData["be_users"]["NEW"];         }
00112                                                                 $userRecord["uid"]="NEW";
00113                                                                 $newFlag=1;
00114                                                         }
00115 
00116                                                                 // List of users...
00117                                                         $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'be_users', 'pid=0 AND cruser_id='.intval($this->BE_USER->user['uid']).' AND createdByAction='.intval($actionRow['uid']).t3lib_BEfunc::deleteClause('be_users'), '', 'username');
00118                                                         $lines = array();
00119                                                         while($uRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))      {
00120                                                                 $lines[] = "<nobr>".($uRow["uid"]==$userRecord["uid"]?"<b>":"").$this->action_linkUserName(t3lib_iconworks::getIconImage("be_users",$uRow,$this->backPath,'title="uid='.$uRow["uid"].'" hspace="2" align="top"').$uRow["username"]." (".$uRow["realName"].")".($uRow["uid"]==$userRecord["uid"]?"</b>":"")."</nobr>",$actionRow["uid"],$uRow["uid"])."<br>";
00121                                                         }
00122                                                         if (count($lines))      {
00123                                                                 $theCode.= $this->pObj->doc->section($LANG->getLL("action_t1_listOfUsers"),implode("",$lines),0,1);
00124                                                         }
00125 
00126                                                         $formA=Array();
00127                                                         $opt=array();
00128 
00129                                                         $grList = t3lib_div::trimExplode(",",$actionRow["t1_allowed_groups"],1);
00130                                                         reset($grList);
00131                                                         $opt[]='<option value=""></option>';
00132                                                         while(list(,$gu)=each($grList)) {
00133                                                                 $checkGr = t3lib_BEfunc::getRecord("be_groups",$gu);
00134                                                                 if (is_array($checkGr)) $opt[]='<option value="'.$checkGr["uid"].'"'.(t3lib_div::inList($userRecord["usergroup"],$checkGr["uid"])?" selected":"").'>'.htmlspecialchars($checkGr["title"]).'</option>';
00135                                                         }
00136 
00137                                                         $formA[]=array($LANG->getLL("action_BEu_hidden").":&nbsp;", '<input type="checkbox" name="data[be_users]['.$userRecord["uid"].'][disable]" value=1'.($userRecord["disable"]?" checked":"").'>');
00138                                                         $formA[]=array($LANG->getLL("action_BEu_username").":&nbsp;", '<input type="text" name="data[be_users]['.$userRecord["uid"].'][username]" max=15 value="'.htmlspecialchars($userRecord["username"]).'"'.$this->pObj->doc->formWidth(15).'>');
00139                                                         $formA[]=array($LANG->getLL("action_BEu_password").":&nbsp;", '<input type="password" name="data[be_users]['.$userRecord["uid"].'][password]" max=40'.$this->pObj->doc->formWidth(15).'>');
00140                                                         $formA[]=array($LANG->getLL("action_BEu_realName").":&nbsp;", '<input type="text" name="data[be_users]['.$userRecord["uid"].'][realName]" value="'.htmlspecialchars($userRecord["realName"]).'"'.$this->pObj->doc->formWidth(30).'>');
00141                                                         $formA[]=array($LANG->getLL("action_BEu_email").":&nbsp;", '<input type="text" name="data[be_users]['.$userRecord["uid"].'][email]" value="'.htmlspecialchars($userRecord["email"]).'"'.$this->pObj->doc->formWidth(30).'>');
00142                                                         if (count($grList)) {
00143                                                                 $formA[]=array($LANG->getLL("action_BEu_usergroups").":&nbsp;", '<select size='.t3lib_div::intInRange(count($opt),2).' multiple name="data[be_users]['.$userRecord["uid"].'][usergroups][]">'.implode("",$opt).'</select>');
00144                                                         }
00145                                                                 // DB mounts:
00146                                                         $loadDB = t3lib_div::makeInstance("t3lib_loadDBGroup");
00147                                                         $loadDB->start($userRecord["db_mountpoints"],"pages");
00148                                                         $params=array(
00149                                                                 "size" => 3
00150                                                         );
00151                                                         $formA[]=array($LANG->getLL("action_BEu_db_mount").":&nbsp;", $this->t3lib_TCEforms->dbFileIcons('data[be_users]['.$userRecord["uid"].'][db_mountpoints]','db','pages',$loadDB->itemArray,"",$params));
00152 
00153                                                         $formA[]=array("&nbsp;","&nbsp;");
00154                                                         $formA[]=array("&nbsp;", '<input type=hidden value="'.$uid.'" name="sys_action_uid"><input type=hidden value="'.t3lib_div::_GP("be_users_uid").'" name="be_users_uid"><input type=hidden value="'.$uid.'" name="sys_action_uid"><input type="submit" name="submit" value="'.$LANG->getLL($newFlag?"lCreate":"lUpdate").'">'.(!$newFlag?' <input type="submit" name="_delete_" value="'.$LANG->getLL("lDelete").'" onClick="return confirm('.$GLOBALS['LANG']->JScharCode($LANG->getLL("lDelete_warning")).');">':''));
00155 
00156                                                         if (!$newFlag)  {
00157                                                                 $p = 'uid='.$userRecord["uid"].", ".$LANG->getLL("lHomedir").": ";
00158                                                                 $hPath=$this->action_getUserMainDir();
00159                                                                 if ($hPath && @is_dir($hPath.$userRecord["uid"]."/"))   {
00160                                                                         $p.= $hPath;
00161                                                                 } else {
00162                                                                         $p.= $LANG->getLL("lNone");
00163                                                                 }
00164                                                                 $actionContent.=t3lib_iconworks::getIconImage("be_users",$userRecord,$this->backPath,'title="'.htmlspecialchars($p).'" hspace=2 align=top').$userRecord["username"]." (".$userRecord["realName"].")";
00165                                                         }
00166                                                         $actionContent.=$this->pObj->doc->table($formA);
00167                                                         $theCode.= $this->pObj->doc->section($LANG->getLL($newFlag?"action_Create":"action_Update"),$actionContent,0,1);
00168                                                 } else {
00169                                                         $theCode.= $this->pObj->doc->section($LANG->getLL("action_error"),'<span class="typo3-red">'.$LANG->getLL("action_notReady").'</span>',0,1);
00170                                                 }
00171                                         break;
00172                                         case 2: //SQL query
00173                                                 if (t3lib_extMgm::isLoaded("lowlevel")) {
00174                                                         $sql_query = unserialize($actionRow["t2_data"]);
00175                                                         if (is_array($sql_query) && strtoupper(substr(trim($sql_query["qSelect"]),0,6))=="SELECT")      {
00176                                                                 $fullsearch = t3lib_div::makeInstance("t3lib_fullsearch");
00177                                                                 $fullsearch->formW = 40;
00178                                                                 $fullsearch->noDownloadB=1;
00179                                                                 $actionContent="";
00180         //              debug($sql_query);
00181                                                                 $type = $sql_query["qC"]["search_query_makeQuery"];
00182                                                                 $res = $GLOBALS['TYPO3_DB']->sql(TYPO3_db,$sql_query["qSelect"]);
00183                                                                 if (!$GLOBALS['TYPO3_DB']->sql_error()) {
00184                                                                         $fullsearch->formW=48;
00185                                                                         $cP=$fullsearch->getQueryResultCode($type,$res,$sql_query["qC"]["queryTable"]);
00186                                                                         $actionContent=$cP["content"];
00187                                                                         if ($type=="csv" || $type=="xml")       {
00188                                                                                 $actionContent.='<BR><BR><a href="'.t3lib_div::getIndpEnv("REQUEST_URI").'&download_file=1"><strong>'.$LANG->getLL("action_download_file").'</strong></a>';
00189                                                                         }
00190                                                                 } else {
00191                                                                         $actionContent.=$GLOBALS['TYPO3_DB']->sql_error();
00192                                                                 }
00193                                                                 if ($this->BE_USER->isAdmin())  {
00194                                                                         $actionContent.="<HR>".$fullsearch->tableWrap($sql_query["qSelect"]);
00195                                                                         $actionContent.='<BR><strong><a href="'.$this->backPath.t3lib_extMgm::extRelPath("lowlevel").'dbint/index.php?id='.
00196                                                                                 '&SET[function]=search'.
00197                                                                                 '&SET[search]=query'.
00198                                                                                 '&storeControl[STORE]=-'.$actionRow["uid"].
00199                                                                                 '&storeControl[LOAD]=1'.
00200                                                                                 '">Edit Query</a></strong>';
00201                                                                 }
00202                                                                 $theCode.= $this->pObj->doc->section($LANG->getLL("action_t2_result"),$actionContent,0,1);
00203                                                         } else {
00204                                                                 $theCode.= $this->pObj->doc->section($LANG->getLL("action_error"),'<span class="typo3-red">'.$LANG->getLL("action_notReady").'</span>',0,1);
00205                                                         }
00206                                                 } else {
00207                                                         $theCode.= $this->pObj->doc->section($LANG->getLL("action_error"),'<span class="typo3-red">The extension "lowlevel" must be installed in order to create a quiry</span>',0,1);
00208                                                 }
00209                                         break;
00210                                         case 3: //list records
00211                                                 return htmlspecialchars($this->headLInk('tx_taskcenterrootlist', 1)). '<br />'. $this->urlInIframe($this->backPath."db_list.php?id=".intval($actionRow["t3_listPid"])."&table=".$actionRow["t3_tables"],1);
00212                                         break;
00213                                         case 4: //edit records
00214                                                 $dbAnalysis = t3lib_div::makeInstance("t3lib_loadDBGroup");
00215                                                 $dbAnalysis->fromTC=0;
00216                                                 $dbAnalysis->start($actionRow["t4_recordsToEdit"],"*");
00217                                                 $dbAnalysis->getFromDB();
00218 
00219                                                 $lines=array();
00220                                                 reset($dbAnalysis->itemArray);
00221                                                 while(list(,$el)=each($dbAnalysis->itemArray))  {
00222                                                         $path = t3lib_BEfunc::getRecordPath ($el["id"],$this->perms_clause,$this->BE_USER->uc["titleLen"]);
00223                                                         $lines[]='<tr>
00224                                                                 <td nowrap class="bgColor4">'.
00225                                                                         '<a href="'.$this->backPath.'alt_doc.php?returnUrl='.rawurlencode(t3lib_div::getIndpEnv("REQUEST_URI")).'&edit['.$el["table"].']['.$el["id"].']=edit">'.
00226                                                                         t3lib_iconworks::getIconImage($el["table"],$dbAnalysis->results[$el["table"]][$el["id"]],$this->backPath,'hspace="2" align="top" title="'.htmlspecialchars($path).'"').
00227                                                                         t3lib_BEfunc::getRecordTitle($el["table"],$dbAnalysis->results[$el["table"]][$el["id"]],1).'</a></td>
00228                                                                 </tr>';
00229                                                 }
00230                                                 $actionContent = '<table border=0 cellpadding=0 cellspacing=2>'.implode("",$lines).'</table>';
00231                                                 $theCode.= $this->pObj->doc->section($LANG->getLL("action_t4_edit"),$actionContent,0,1);
00232                                         break;
00233                                         case 5: //new record
00234                                                 return htmlspecialchars($this->headLInk('tx_taskcenterrootlist', 1)). '<br />'. $this->urlInIframe($this->backPath.'alt_doc.php?returnUrl='.rawurlencode('db_list.php?id='.intval($actionRow['t3_listPid']).'&table='.$actionRow['t3_tables']).'&edit['.$actionRow['t3_tables'].']['.intval($actionRow['t3_listPid']).']=new',1);
00235                                         break;
00236                                         default:
00237                                                 $theCode.= $this->pObj->doc->section($LANG->getLL("action_error"),'<span class="typo3-red">'.$LANG->getLL("action_noType").'</span>',0,1);
00238                                         break;
00239                                 }
00240 
00241                         }
00242                 }
00243                 return $theCode;
00244         }
00245         function getActionResPointer($uid=0)    {
00246                 if ($this->BE_USER->isAdmin())  {
00247                         $wQ='';
00248                         if (intval($uid)>0)     $wQ.=' AND sys_action.uid='.intval($uid);
00249 
00250                         $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'sys_action', 'sys_action.pid=0'.$wQ, '', 'sys_action.sorting');
00251                 } else {
00252                         $wQ = 'be_groups.uid IN ('.($this->BE_USER->groupList?$this->BE_USER->groupList:0).')';
00253                         $hQ = 'AND sys_action.hidden=0 ';
00254                         if (intval($uid)>0)     $wQ.=' AND sys_action.uid='.intval($uid);
00255 
00256                         $res = $GLOBALS['TYPO3_DB']->exec_SELECT_mm_query(
00257                                                 'sys_action.*',
00258                                                 'sys_action',
00259                                                 'sys_action_asgr_mm',
00260                                                 'be_groups',
00261                                                 ' AND '.$wQ.' AND sys_action.pid=0 '.$hQ,
00262                                                 'sys_action.uid',
00263                                                 'sys_action.sorting'
00264                                         );
00265                 }
00266 
00267                 return $res;
00268         }
00269         function renderActionList()     {
00270                 global $LANG;
00271 
00272                 $res = $this->getActionResPointer();
00273                 $lines=array();
00274                 while($actionRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
00275                         $lines[]='<nobr>'.t3lib_iconworks::getIconImage("sys_action",$actionRow,$this->backPath,'hspace="2" align="top"').$this->action_link($this->fixed_lgd($actionRow["title"]),$actionRow["uid"],$actionRow["description"]).'</nobr><BR>';
00276                 }
00277                 $out = implode("",$lines);
00278                 return $out;
00279         }
00280         function action_link($str,$id,$title="")        {
00281                 $str='<a href="index.php?SET[function]=tx_sysaction&sys_action_uid='.$id.'" onClick="this.blur();" title="'.htmlspecialchars($title).'">'.$str.'</a>';
00282                 return $str;
00283         }
00284         function action_linkUserName($str,$id,$bid)     {
00285                 $str='<a href="index.php?sys_action_uid='.$id.'&be_users_uid='.$bid.'" onClick="this.blur();">'.$str.'</a>';
00286                 return $str;
00287         }
00288         function action_t1_createUpdateBeUser($arr,$actionRow=array())  {
00289                 reset($arr);
00290                 $key = key($arr);
00291                 $data="";
00292                 $nId=0;
00293                 $BEuid = $actionRow["t1_copy_of_user"];
00294                 if ($key=="NEW")        {
00295                         $beRec = t3lib_BEfunc::getRecord("be_users",intval($BEuid));
00296                         if (is_array($beRec) && trim($arr[$key]["password"]) && $this->fixUsername($arr[$key]["username"],$actionRow["t1_userprefix"])) {
00297 //                              debug($arr[$key]);
00298                                 $data=array();
00299                                 $data["be_users"][$key]=$beRec;
00300                                 $data["be_users"][$key]["username"]=$this->fixUsername($arr[$key]["username"],$actionRow["t1_userprefix"]);
00301                                 $data["be_users"][$key]["password"]=md5(trim($arr[$key]["password"]));
00302                                 $data["be_users"][$key]["realName"]=$arr[$key]["realName"];
00303                                 $data["be_users"][$key]["email"]=$arr[$key]["email"];
00304                                 $data["be_users"][$key]["disable"]=intval($arr[$key]["disable"]);
00305                                 $data["be_users"][$key]["admin"]=0;
00306                                 $data["be_users"][$key]["usergroup"] = $this->fixUserGroup($data["be_users"][$key]["usergroup"],$actionRow["t1_allowed_groups"],$arr[$key]["usergroups"]);
00307                                 $data["be_users"][$key]["db_mountpoints"]=$arr[$key]["db_mountpoints"];
00308                                 $data["be_users"][$key]["createdByAction"]=$actionRow["uid"];
00309                         }
00310                 } else {
00311                         $beRec = t3lib_BEfunc::getRecord("be_users",intval($key));
00312                         if (is_array($beRec) && $beRec["cruser_id"]==$this->BE_USER->user["uid"])       {
00313                                 if (t3lib_div::_GP("_delete_")) {
00314                                                 // delete... ?
00315                                         $cmd=array();
00316                                         $cmd["be_users"][$key]["delete"]=1;
00317 
00318                                         $tce = t3lib_div::makeInstance("t3lib_TCEmain");
00319                                         $tce->stripslashes_values=0;
00320                                         $tce->start(Array(),$cmd,$this->BE_USER);
00321                                         $tce->admin=1;
00322                                         $tce->process_cmdmap();
00323 //                                      debug($cmd);
00324                                         $nId = 0;
00325                                 } elseif ($this->fixUsername($arr[$key]["username"],$actionRow["t1_userprefix"]))       {
00326                                         // check ownership...
00327                                         $data=array();
00328                                         $data["be_users"][$key]["username"]=$this->fixUsername($arr[$key]["username"],$actionRow["t1_userprefix"]);
00329                                         if (trim($arr[$key]["password"]))       {$data["be_users"][$key]["password"]=md5(trim($arr[$key]["password"]));}
00330 
00331                                         $data["be_users"][$key]["realName"]=$arr[$key]["realName"];
00332                                         $data["be_users"][$key]["email"]=$arr[$key]["email"];
00333                                         $data["be_users"][$key]["disable"]=intval($arr[$key]["disable"]);
00334                                         $data["be_users"][$key]["admin"]=0;
00335                                         $data["be_users"][$key]["usergroup"] = $this->fixUserGroup($beRec["usergroup"],$actionRow["t1_allowed_groups"],$arr[$key]["usergroups"]);
00336                                         $data["be_users"][$key]["db_mountpoints"]=$arr[$key]["db_mountpoints"];
00337                                         $nId=$key;
00338                                 }
00339                         }
00340                 }
00341 
00342 
00343                 if (is_array($data))    {
00344                         $tce = t3lib_div::makeInstance("t3lib_TCEmain");
00345                         $tce->stripslashes_values=0;
00346                         $tce->start($data,Array(),$this->BE_USER);
00347                         $tce->admin=1;
00348                         $tce->process_datamap();
00349                         $nId = intval($tce->substNEWwithIDs["NEW"]);
00350                         if ($nId)       {       // Create
00351                                 $this->action_createDir($nId);
00352                         } else {        // update
00353                                 $nId=intval($key);
00354                         }
00355                         unset($tce);
00356                 }
00357                 return $nId;
00358         }
00359         function fixUsername($username,$prefix) {
00360                 $username=trim($username);
00361                 $prefix=trim($prefix);
00362                 $username=ereg_replace("^".quotemeta($prefix),"",$username);
00363 
00364                 if ($username)  {
00365                         return $prefix.$username;
00366                 } else return false;
00367         }
00368         function fixUserGroup($curUserGroup,$allowedGroups,$inGroups)   {
00369                         // User group:
00370                         // All current groups:
00371                 $cGroups = array_flip(t3lib_div::trimExplode(",",$curUserGroup,1));
00372                 $grList = t3lib_div::intExplode(",",$allowedGroups);
00373                 reset($grList);
00374                 while(list(,$gu)=each($grList)) {
00375                         unset($cGroups[$gu]);   // Remove the group if it's in the array for some reason...
00376                 }
00377                         // reverse array again and set incoming groups:
00378                 $cGroups=array_keys($cGroups);
00379                 if (is_array($inGroups))        {
00380                         reset($inGroups);
00381                         while(list(,$gu)=each($inGroups))       {
00382                                 $checkGr = t3lib_BEfunc::getRecord("be_groups",$gu);
00383                                 if (is_array($checkGr) && in_array($gu,$grList))        {
00384                                         $cGroups[]=$gu;
00385                                 }
00386                         }
00387                 }
00388                 return implode(",",$cGroups);
00389         }
00390         function action_createDir($uid) {
00391                 $path = $this->action_getUserMainDir();
00392                 if ($path)      {
00393                         @mkdir($path.$uid,0755);
00394                         @mkdir($path.$uid."/_temp_",0755);
00395 //                      debug($path);
00396                 }
00397         }
00398         function action_getUserMainDir()        {
00399                 $path = $GLOBALS["TYPO3_CONF_VARS"]["BE"]["userHomePath"];
00400                 if ($path && @is_dir($path) &&
00401                                 $GLOBALS["TYPO3_CONF_VARS"]["BE"]["lockRootPath"] &&
00402                                 t3lib_div::isFirstPartOfStr($path,$GLOBALS["TYPO3_CONF_VARS"]["BE"]["lockRootPath"]) &&
00403                                 substr($path,-1)=="/"
00404                         )       {
00405                         return $path;
00406                 }
00407         }
00408 }
00409 
00410 if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/sys_action/class.tx_sysaction.php"])   {
00411         include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/sys_action/class.tx_sysaction.php"]);
00412 }
00413 
00414 ?>