vendor/city-mountain/cmtool-bundle/src/Utils/OperationTool.php line 39

Open in your IDE?
  1. <?php
  2. namespace CityMountain\ToolBundle\Utils;
  3. //use Contao\Versions; use CityMountain\ToolBundle\Utils\OperationTool;
  4. use CityMountain\ToolBundle\Utils\Settings;
  5. class OperationTool
  6. {    
  7.     
  8.     public function __construct()
  9.     {
  10.         
  11.     }
  12.     
  13.     public static function getMasterdataValues($idSelect=0,$key,$includeDisable=0,$addWhere=array())
  14.     {
  15.         $arrRes = array();
  16.         
  17.         if(!\Database::getInstance()->tableExists('tl_zMasterdataValue'nulltrue))return $arrRes;
  18.         
  19.         if($idSelect=="" || $idSelect==null)$idSelect=0;
  20.         if(is_array($idSelect)&&array_values($idSelect)[0]<>'')$idSelect implode(",",$idSelect);
  21.         
  22.         $objValues \Database::getInstance()->prepare("SELECT * 
  23.                                                           FROM tl_zMasterdataValue 
  24.                                                          WHERE mvKey=?
  25.                                                            AND ".($includeDisable==0?"( disable<>1 || id IN (".$idSelect."))":"1=1")."
  26.                                                                ".(is_array($addWhere)&&count($addWhere)?implode(" ",$addWhere):'')."
  27.                                                       ORDER BY mvDefault DESC, mvOrder, mvName")->execute($key);
  28.         //\System::log('DATA '.$objValues->query, __METHOD__, "TL_ELS");
  29.         while($objValues->next())
  30.         {   //\System::log('1 getMasterdataValues '.$objValues->id.$objValues->mvName, __METHOD__, "TL_ELS");
  31.             $arrRes[$objValues->id] = $objValues->mvName;
  32.         }//\System::log('2 getMasterdataValues '.print_r(,true), __METHOD__, "TL_ELS");
  33.         return $arrRes;
  34.     }    
  35.     
  36.     public static function getMasterdataValuesData($idSelect=0,$key,$includeDisable=0,$addWhere=array())
  37.     {
  38.         $arrRes['keyMasterdataValue'] = array();
  39.         $arrRes['keyValueMapping'] = array();
  40.         
  41.         if($idSelect=="")$idSelect=0;
  42.         if(is_array($idSelect))$idSelect implode(",",$idSelect);
  43.         
  44.         $objValues \Database::getInstance()->prepare("SELECT * 
  45.                                                           FROM tl_zMasterdataValue 
  46.                                                          WHERE mvKey=?
  47.                                                            AND ".($includeDisable==0?"( disable<>1 || id IN (".$idSelect."))":"1=1")."
  48.                                                                ".(is_array($addWhere)&&count($addWhere)?implode(" ",$addWhere):'')."
  49.                                                       ORDER BY mvDefault DESC, mvOrder, mvName")->execute($key);
  50.         while($objValues->next())
  51.         {
  52.             $arrRes['keyMasterdataValue'][$objValues->id] = $objValues->row();
  53.             $arrRes['keyValueMapping'][$objValues->mvValueMapping] = $objValues->row();
  54.         }
  55.         return $arrRes;
  56.     }
  57.     
  58.     public static function getMasterdataValueData($idSelect=0,$getObject=false)
  59.     {
  60.         $arrRes = array();
  61.         
  62.         $objValue \Database::getInstance()->prepare("SELECT * FROM tl_zMasterdataValue WHERE id=? ")->limit(1)->execute($idSelect);
  63.         $arrRes $objValue->fetchAssoc();
  64.         if($getObject)return $objValue;
  65.         return $arrRes;
  66.     }    
  67.     
  68.     
  69.     
  70.     public static function getRightModuleActions($idSelect=0,$idModul=0,$includeDisable=0,$getData=0)
  71.     {
  72.         $res = array();
  73.         $tmpRightData Settings::getRightData();
  74.         if($idModul<>'' && $idModul!==0)return $tmpRightData[$idModul]['right'];
  75.         if($idModul===0){
  76.             foreach($tmpRightData as $keyMod=>$arrMod){
  77.                 $res array_merge($res,$arrMod['right']);
  78.             }
  79.         }
  80.         return $res;
  81.     }
  82.     
  83.     public static function getRightModules($idSelect=0,$includeDisable=0,$getData=0)
  84.     {
  85.         $res = array();
  86.         $tmpRightData Settings::getRightData();
  87.         foreach($tmpRightData as $keyMod=>$arrMod){
  88.             $res[$keyMod] = $arrMod['name'];
  89.         }
  90.         return $res;
  91.     }
  92.     
  93.     public static function getMemberRights($idSelect=0,$getData=0,$addWhere=array())
  94.     {
  95.         if($getData==1){
  96.             $arrRes['entry'] = array();
  97.             $arrRes['entryUnitList'] = array();
  98.             $arrRes['module'] = array();
  99.         }else{
  100.             $arrRes = array();
  101.         }
  102.         
  103.         $objRights \Database::getInstance()->prepare("
  104.                                 SELECT * 
  105.                                   FROM tl_zLinkMemberRight 
  106.                                  WHERE pid=?
  107.                                       ".(is_array($addWhere)&&count($addWhere)?implode(" ",$addWhere):'')."
  108.                               ORDER BY fkModuleAction, fkUnit")->execute($idSelect);
  109.         
  110.         while($objRights->next())
  111.         {
  112.             if($getData==1){
  113.                 $arrRes['entry'][$objRights->id] = $objRights->row();
  114.                 $arrRes['entryUnitList'][$objRights->fkUnit] = $objRights->fkUnit;
  115.                 $arrRes['module'][$objRights->fkModule][$objRights->fkModuleAction][$objRights->fkUnit] = $objRights->fkUnit;
  116.             }else{
  117.                 $tmpRightData Settings::getRightData();
  118.                 $arrRes[$objRights->id] = $tmpRightData[$objRights->fkModule]['right'][$objRights->fkModuleAction
  119.                 ." (".$tmpRightData[$objRights->fkModule]['name'].")"
  120.             }            
  121.         }
  122.         return $arrRes;
  123.     }
  124.     
  125.     public static function getUserRights($idSelect=0,$getData=0,$addWhere=array())
  126.     {
  127.         if($getData==1){
  128.             $arrRes['entry'] = array();
  129.             $arrRes['entryUnitList'] = array();
  130.             $arrRes['module'] = array();
  131.         }else{
  132.             $arrRes = array();
  133.         }
  134.         
  135.         $objRights \Database::getInstance()->prepare("
  136.                                 SELECT * 
  137.                                   FROM tl_zLinkUserRight 
  138.                                  WHERE pid=?
  139.                                       ".(is_array($addWhere)&&count($addWhere)?implode(" ",$addWhere):'')."
  140.                               ORDER BY fkModuleAction, fkUnit")->execute($idSelect);
  141.         
  142.         while($objRights->next())
  143.         {
  144.             if($getData==1){
  145.                 $arrRes['entry'][$objRights->id] = $objRights->row();
  146.                 $arrRes['entryUnitList'][$objRights->fkUnit] = $objRights->fkUnit;
  147.                 $arrRes['module'][$objRights->fkModule][$objRights->fkModuleAction][$objRights->fkUnit] = $objRights->fkUnit;
  148.             }else{
  149.                 $tmpRightData Settings::getRightData();
  150.                 $arrRes[$objRights->id] = $tmpRightData[$objRights->fkModule]['right'][$objRights->fkModuleAction
  151.                 ." (".$tmpRightData[$objRights->fkModule]['name'].")"
  152.             }            
  153.         }
  154.         return $arrRes;
  155.     }
  156.     
  157.     public static function getUnitsFromRights($idUnit,$userType='member',$arrModuleAction=array())
  158.     {        
  159.         $arrRes = array();
  160.         
  161.         if($userType=='user'){
  162.             $objRights OperationTool::getUserRights(\BackendUser::getInstance()->id,1,array("AND fkModuleAction IN ('".implode("','",$arrModuleAction)."')"));
  163.         }else{
  164.             $objRights OperationTool::getMemberRights(\BackendUser::getInstance()->id,1,array("AND fkModuleAction IN ('".implode("','",$arrModuleAction)."')"));
  165.         }
  166.         
  167.         if (count($objRights['entry'])>0)
  168.         {
  169.             $arrIDs = array();
  170.             foreach($objRights['entry'] as $arrRight){
  171.                 $arrIDs[$arrRight['fkUnit']] = '';
  172.             }
  173.             $arrRes = static::getUnitsHierarchy($arrIDs);
  174.         }
  175.         
  176.         if($idUnit<>&& !array_key_exists($idUnit,$arrRes)){
  177.             $objUnit = static::getUnit($idUnit,true);
  178.             $arrRes[$objUnit->id] = $objUnit->uName;
  179.         }
  180.         
  181.         return $arrRes;
  182.     }
  183.     
  184.     public static function getUnitsTop()
  185.     {
  186.         $res = array();
  187.         
  188.         $objNodes \Database::getInstance()->prepare("SELECT id FROM tl_zUnit WHERE pid = 0 AND disable<>1 ")->execute();
  189.         while($objNodes->next())
  190.         {
  191.             $res[$objNodes->id] = $objNodes->id;
  192.         }
  193.         return $res;
  194.     }
  195.     
  196.     public static function getUnitsHierarchy(array $idsUnit)
  197.     {
  198.         $return = array();
  199.         //Alle ID's vom Array durchlaufen
  200.         foreach($idsUnit as $id => $value)
  201.         {
  202.             if(array_search($id$return) === false){
  203.                 //mit dieser Verknüpfung werden die index'es beibehalten
  204.                 if($id)$return $return + static::renderUnitTree($id);
  205.             }
  206.         }
  207.         asort($return);
  208.         return $return;
  209.     }
  210.     protected static function renderUnitTree($id)
  211.     {
  212.         $objUnit \Database::getInstance()->prepare("
  213.             SELECT id, uName, disable
  214.               FROM tl_zUnit
  215.              WHERE id = ?")
  216.             ->limit(1)
  217.             ->execute($id);
  218.         // Zurück wenn kein Resultat gefunden wurde (erster Fall)
  219.         if ($objUnit->numRows 1)
  220.         {            
  221.             return array();
  222.         }
  223.         // aktuelle ID ins Array setzen, da dieses in der DB ist.
  224.         //$return[] = $id;
  225.         $return[$objUnit->id] = $objUnit->uName . ($objUnit->disable?' deaktivert':'');
  226.             
  227.         $childs = array();
  228.         // prüfen ob es Kinder hat
  229.         $objNodes \Database::getInstance()->prepare("SELECT id FROM tl_zUnit WHERE pid=? ORDER BY sorting")->execute($id);
  230.         if ($objNodes->numRows)
  231.         {
  232.             $childs $objNodes->fetchEach('id');
  233.         }
  234.         // rekursion Start
  235.         if (count($childs))
  236.         {
  237.             for ($k=0$k<count($childs); $k++)
  238.             {
  239.                 //$return = array_merge($return, $this->renderUnitTree($childs[$k]));
  240.                 $return $return + static::renderUnitTree($childs[$k]);
  241.             }
  242.         }
  243.         return $return;
  244.     }
  245.     
  246.     
  247.     
  248.     public static function getRightMember($idMember=0,$idUser=0)
  249.     {
  250.         $arrRes = array();
  251.         $arrRes['StandardUnitId'] = 0;
  252.         //$arrRes['StandardUnitId'] = 2;
  253.         $arrRes['ListUnitsId'] = array();
  254.         //$arrRes['ListUnitsId'] = array(2);
  255.         
  256.         if($idMember==19 || $idMember==68 || $idUser<>0){
  257.             //$arrRes['ListUnitsId'][] = 1;
  258.         }
  259.         
  260.         
  261.         if($idMember<>0){
  262.             $objRights \Database::getInstance()->prepare("SELECT fkUnit,lmuDefault FROM tl_zLinkMemberUnit WHERE pid=? ")->execute($idMember);
  263.             if($objRights->numRows==0){
  264.                 $objMembers \Database::getInstance()->prepare("SELECT username, lastname FROM tl_member WHERE id=? ")->limit(1)->execute($idMember);
  265.                 \System::log('Keine Berechtigungen dem Mitglied '.($idMember==0?'':$objMembers->username." ".$objMembers->lastname).' ('.$idMember.') zugewiesen.'__METHOD__TL_ACCESS);
  266.             }
  267.         }elseif($idUser<>0){
  268.             $objRights \Database::getInstance()->prepare("SELECT fkUnit,lmuDefault FROM tl_zLinkMemberUnit 
  269.                                                         WHERE pid = (
  270.                                                                     SELECT tl_member.id 
  271.                                                                       FROM tl_member,tl_user 
  272.                                                                      WHERE tl_user.username=tl_member.username
  273.                                                                        AND tl_user.id=?) ")->execute($idUser);
  274.             if($objRights->numRows==0)\System::log('Keine Berechtigungen dem User '.static::getUser($idUser,true)->username.' ('.$idUser.') zugewiesen.'__METHOD__TL_ACCESS);
  275.         }else{
  276.             //\System::log('Keine Mitglieder oder User ID für Berechtigung. ID Member:'.$idMember." ID User:".$idUser, __METHOD__, TL_ACCESS);
  277.         }        
  278.         if(is_object($objRights)){
  279.             while($objRights->next())
  280.             {
  281.                 $arrRes['ListUnitsId'][] = $objRights->fkUnit;
  282.                 if($objRights->lmuDefault)$arrRes['StandardUnitId'] = $objRights->fkUnit;
  283.             }
  284.             if($arrRes['StandardUnitId']==''&&count($arrRes['ListUnitsId'])==1)$arrRes['StandardUnitId'] = $arrRes['ListUnitsId'][0];
  285.         }
  286.         return $arrRes;
  287.     }
  288.     
  289.     public static function checkRightMember($checkUnitID,$idMember=0,$idUser=0,$arrRights=array())
  290.     {
  291.         $objUser null;
  292.         if($idMember<>0){
  293.             $objUser \Database::getInstance()->prepare("SELECT * FROM tl_member WHERE id=? ")->execute($idMember);
  294.             if(count($arrRights)==0)$arrRights=static::getRightMember($idMember);
  295.         }elseif($idUser<>0){
  296.             $tmpObjUser \Database::getInstance()->prepare("SELECT * FROM tl_user WHERE id=? ")->execute($idUser);
  297.             if(count($arrRights)==0)$arrRights=static::getRightMember(0,$idUser);
  298.             if($tmpObjUser->username){
  299.                 $objUser \Database::getInstance()->prepare("SELECT * FROM tl_member WHERE username=? ")->execute($tmpObjUser->username);
  300.             }
  301.         }
  302.         
  303.         if($objUser<>NULL && $objUser->id<>'' && count($arrRights)){
  304.             if(in_array($checkUnitID,$arrRights['ListUnitsId'])){
  305.                 return true;
  306.             }
  307.         }
  308.         
  309.         \System::log('Zugriff von User '.$objUser->username.' ('.$objUser->id.')'.' auf VE '.$checkUnitID.' verwehrt'__METHOD__TL_ACCESS);
  310.         return false;
  311.     }
  312.     
  313.     public static function getMembers($idSelect=0,$idsUnit=array(),$includeDisable=0,$getReference=0,$addWhere=array())
  314.     {
  315.         $arrRes = array();
  316.         $selMem "";
  317.         
  318.         if($idSelect==NULL)$idSelect=0;
  319.         if($idsUnit==|| !is_array($idsUnit))$idsUnit=array();
  320.         
  321.         if(count($idsUnit)){//All from the units    
  322.             $selMem "( id in ( SELECT pid FROM tl_zLinkMemberUnit WHERE fkUnit IN (".implode(","$idsUnit).") )".(!$includeDisable?" AND disable<>1 ":'').")";
  323.         }
  324.         
  325.         if($getReference){//all function
  326.             $selMem "1=1";
  327.             if(!$includeDisable)$selMem 'disable<>1';
  328.         }
  329.         if($selMem=="")$selMem "1=1";
  330.         
  331.         //Explizit auch dabei
  332.         if($idSelect<>0)$selMem .= ' OR id='.$idSelect;
  333.         
  334.         //Abfrage
  335.         $objMembers \Database::getInstance()->prepare("SELECT id, lastname, firstname 
  336.                                                            FROM tl_member 
  337.                                                           WHERE ".$selMem."
  338.                                                                   ".(is_array($addWhere)&&count($addWhere)?implode(" ",$addWhere):'')."
  339.                                                        ORDER BY lastname, firstname")->execute();
  340.         while($objMembers->next())
  341.         {
  342.             $arrRes[$objMembers->id] = $objMembers->lastname." ".$objMembers->firstname;
  343.         }
  344.         return $arrRes;
  345.     }    
  346.     
  347.     public static function getUsers($idSelect=0,$idsUnit=array(),$includeDisable=0,$getReference=0,$addWhere=array())
  348.     {
  349.         $arrRes = array();
  350.         $selMem "";
  351.         
  352.         if($idSelect==NULL)$idSelect=0;
  353.         if($idsUnit==|| !is_array($idsUnit))$idsUnit=array();
  354.         
  355.         if(count($idsUnit)){//All from the units    
  356.             $selMem "( id in ( SELECT pid FROM tl_zLinkUserUnit WHERE fkUnit IN (".implode(","$idsUnit).") )".(!$includeDisable?" AND disable<>1 ":'').")";
  357.         }
  358.         
  359.         if($getReference){//all function
  360.             $selMem "1=1";
  361.             if(!$includeDisable)$selMem 'disable<>1';
  362.         }
  363.         if($selMem=="")$selMem "1=1";
  364.         
  365.         //Explizit auch dabei
  366.         if($idSelect<>0)$selMem .= ' OR id='.$idSelect;
  367.         
  368.         //Abfrage
  369.         $objMembers \Database::getInstance()->prepare("SELECT id, name 
  370.                                                            FROM tl_user 
  371.                                                           WHERE ".$selMem."
  372.                                                                   ".(is_array($addWhere)&&count($addWhere)?implode(" ",$addWhere):'')."
  373.                                                        ORDER BY name")->execute();
  374.         while($objMembers->next())
  375.         {
  376.             $arrRes[$objMembers->id] = $objMembers->name;
  377.         }
  378.         return $arrRes;
  379.     }    
  380.     
  381.     public static function getMemberByUsername($name,$getObject=false)
  382.     {
  383.         $objMember \Database::getInstance()->prepare("SELECT id FROM tl_member WHERE username=? ")->limit(1)->execute($name);
  384.         
  385.         return static::getMemberByID($objMember->id,$getObject);
  386.     }
  387.     
  388.     public static function getMemberByID($memberID,$getObject=false)
  389.     {
  390.         $arrRes = array();
  391.         \System::loadLanguageFile('default');
  392.         $objMember \Database::getInstance()->prepare("SELECT id FROM tl_member WHERE id=? ")->limit(1)->execute($memberID);
  393.         
  394.         $arrRes = static::getGenericEntry($objMember->id,'tl_member',false);
  395.         $arrRes['salutationDirect'] = $GLOBALS['TL_LANG']['cmglobal']['salutationDirect'][$arrRes['gender']];
  396.         if($arrRes['id'])$arrRes['fullName'] = $arrRes['lastname']." ".$arrRes['firstname'];
  397.         if($arrRes['id'])$arrRes array_merge($arrRes,static::getRightMember($arrRes['id']));
  398.         if($getObject)return (Object)$arrRes;
  399.         
  400.         return $arrRes;
  401.     }
  402.     
  403.     public static function getUser($idSelect,$getObject=false)
  404.     {
  405.         $arrRes = array();
  406.         $objMembers \Database::getInstance()->prepare("SELECT * FROM tl_user WHERE id=? ")->limit(1)->execute($idSelect);
  407.         if($getObject)return $objMembers;
  408.         $arrRes $objMembers->fetchAssoc();
  409.         return $arrRes;
  410.     }    
  411.     
  412.     public static function getUnits($idSelect=0,$includeDisable=0,$arrIDs=0)//$arrIDs muss ein array sein!
  413.     {
  414.         $arrRes = array();
  415.         
  416.         if(!\Database::getInstance()->tableExists('tl_zUnit'nulltrue))return $arrRes;
  417.         
  418.         if($idSelect=="")$idSelect=0;
  419.         
  420.         //wenn, arrIDs abgefragt wird und dies leer ist, wir eine leere Antwort gegeben, da diese Person keine Berechtigung hat.
  421.         if(is_array($arrIDs) && count($arrIDs)==0)return $arrRes;
  422.         //wenn arrIDs nicht gesetzt ist und kein Array ist, dann wird es ein Array
  423.         if(!is_array($arrIDs))$arrIDs=array();
  424.             
  425.         $objUnits \Database::getInstance()->prepare("SELECT * 
  426.                                                          FROM tl_zUnit 
  427.                                                         WHERE 
  428.                                                           ".($includeDisable==0?"( disable<>1 || id=".$idSelect.")":"1=1").
  429.                                                           ".(count($arrIDs)>0?"AND id IN(".implode(",",$arrIDs).")":"")."
  430.                                                      ORDER BY uName")->execute();
  431.         
  432.         while($objUnits->next())
  433.         {
  434.             $arrRes[$objUnits->id] = $objUnits->uName;
  435.         }
  436.         return $arrRes;
  437.     }
  438.     
  439.     public static function getUnit($idSelect,$getObject=false)
  440.     {
  441.         $arrRes = array();
  442.         $objUnits \Database::getInstance()->prepare("SELECT * FROM tl_zUnit WHERE id=? ")->limit(1)->execute($idSelect);
  443.         $arrRes $objUnits->fetchAssoc();
  444.         
  445.         if($getObject)return (Object)$arrRes;
  446.         
  447.         return $arrRes;
  448.     }
  449.     
  450.     public static function getUnitDefault()
  451.     {
  452.          $objUnit \Database::getInstance()->prepare("SELECT id FROM tl_zUnit 
  453.                                                            WHERE uDefault=1")->limit(1)->execute();
  454.         return $objUnit->id;
  455.     }
  456.     
  457.     public static function getUnitDefaultMaster()
  458.     {
  459.          $objUnit \Database::getInstance()->prepare("SELECT id FROM tl_zUnit 
  460.                                                            WHERE uDefaultMaster=1")->limit(1)->execute();
  461.         return $objUnit->id;
  462.     }
  463.     
  464.     public static function getGenericEntries($idSelect=0,$includeDisabled=0,$getReference=0,$addWhere=array(),$addOrder="ORDER BY aEventTime DESC")
  465.     {
  466.         $arrRes = array();
  467.         /*if(!\Database::getInstance()->tableExists('tl_zAccident', null, true))return $arrRes;
  468.         
  469.         if($idSelect==NULL)$idSelect=0;
  470.         
  471.         //Abfrage
  472.         $objAccidents = \Database::getInstance()->prepare("SELECT id, aLastname,aFirstname,aEventTime  
  473.                                                            FROM tl_zAccident 
  474.                                                           WHERE ".($includeDisabled==0?"( aStatusHR<>1 || aStatusSafety<>1 || id=".$idSelect.")":"1=1")."
  475.                                                                   ".(is_array($addWhere)&&count($addWhere)?implode(" ",$addWhere):'')."
  476.                                                                 ".$addOrder."
  477.                                                        ")->execute();
  478.         //dump($objAccidents);
  479.         while($objAccidents->next())
  480.         {
  481.             if($getReference){
  482.                 $arrRes[$objAccidents->id] = $objAccidents->aLastname." ".$objAccidents->aFirstname." ".date("d.m.Y H:i",$objAccidents->aEventTime);
  483.             }else{
  484.                 $arrRes[$objAccidents->id] = static::getAccident($objAccidents->id);//$objAccidents->row()
  485.             }
  486.             
  487.         }*/
  488.         return $arrRes;
  489.     }    
  490.     
  491.     public static function getGenericEntry($idSelect,$table,$getObject=false)
  492.     {
  493.         $arrRes = array();
  494.         
  495.         $objRes \Database::getInstance()->prepare("SELECT * FROM ".$table." WHERE id=? ")
  496.             ->limit(1)->execute($idSelect);
  497.         //dump($objRes);
  498.         if($objRes->numRows<>0){
  499.             $arrRes $objRes->fetchAssoc();
  500.             foreach($arrRes as $id=>$value){
  501.                 $arrRes[$id] = deserialize($value);
  502.                 $arrRes[$id.'Text'] = \Haste\Util\Format::dcaValue($table$id$value);
  503.             }
  504.         }
  505.         
  506.         if($getObject)return (Object)$arrRes;
  507.         return $arrRes;
  508.     }
  509.     
  510.     public static function encodeRand($str$seed=0) {
  511.         if($seed==0)$seed=\Config::get('elsKey');
  512.         if($seed==0||$seed==NULL){
  513.             $seed mt_rand(1000000,9999999);
  514.             $config \Config::getInstance();
  515.             $config->add("\$GLOBALS['TL_CONFIG']['elsKey']",$seed);
  516.             \System::log('Neuer elsKey wurd egesetzt'__METHOD__TL_ACCESS); 
  517.         }        
  518.         
  519.         mt_srand($seed);
  520.         $out = array();
  521.         for ($x=0$l=strlen($str); $x<$l$x++) {
  522.             $out[$x] = (ord($str[$x]) * 3) + mt_rand(35016000);
  523.         }
  524.          
  525.         mt_srand();
  526.         return implode('-'$out);
  527.     }
  528.      
  529.     public static function decodeRand($str$seed=0) {
  530.         if($seed==0)$seed=\Config::get('elsKey');
  531.         mt_srand($seed);
  532.         $blocks explode('-'$str);
  533.         $out = array();
  534.         foreach ($blocks as $block) {
  535.             $ord = (intval($block) - mt_rand(35016000)) / 3;
  536.             $out[] = chr($ord);
  537.         }
  538.          
  539.         mt_srand();
  540.         return implode(''$out);
  541.     }
  542.     
  543. }