Marius Cramer
2013-11-14 7fe908c50c8dbc5cc05f571dbe11d66141caacd4
interface/lib/classes/tools_sites.inc.php
@@ -29,147 +29,148 @@
class tools_sites {
    function replacePrefix($name, $dataRecord) {
        // No input -> no possible output -> go out!
        if ($name=="") return "";
   function replacePrefix($name, $dataRecord) {
      // No input -> no possible output -> go out!
      if ($name=="") return "";
        // Array containing keys to search
        $keywordlist=array('CLIENTNAME','CLIENTID','DOMAINID');
      // Array containing keys to search
      $keywordlist=array('CLIENTNAME', 'CLIENTID', 'DOMAINID');
        // Try to match the key within the string
        foreach ($keywordlist as $keyword) {
            if (substr_count($name, '['.$keyword.']') > 0) {
                switch ($keyword) {
                    case 'CLIENTNAME':
                        $name=str_replace('['.$keyword.']', $this->getClientName($dataRecord),$name);
                    break;
                    case 'CLIENTID':
                        $name=str_replace('['.$keyword.']', $this->getClientID($dataRecord),$name);
                    break;
                    case 'DOMAINID':
                        $name=str_replace('['.$keyword.']', $dataRecord['parent_domain_id'],$name);
                    break;
                }
            }
        }
        return $name;
    }
    function removePrefix($name, $currentPrefix, $globalPrefix) {
        if($name == "") return "";
        if($currentPrefix === '') return $name; // empty prefix, do not change name
        if($currentPrefix === '#') $currentPrefix = $globalPrefix; // entry has no prefix set, maybe it was created before this function was introduced
        if($currentPrefix === '') return $name; // no current prefix and global prefix is empty -> nothing to remove here.
        return preg_replace('/^' . preg_quote($currentPrefix, '/') . '/', '', $name); // return name without prefix
    }
    function getPrefix($currentPrefix, $userPrefix, $adminPrefix = false) {
        global $app;
        if($currentPrefix !== '#') return $currentPrefix; // return the currently set prefix for this entry (# = no prefix set yet)
        if($adminPrefix === false) $adminPrefix = $userPrefix;
        if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) return $adminPrefix;
        else return $userPrefix;
    }
    function getClientName($dataRecord) {
        global $app, $conf;
        if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) {
            // Get the group-id of the user if the logged in user is neither admin nor reseller
            $client_group_id = $_SESSION["s"]["user"]["default_group"];
        } else {
            // Get the group-id from the data itself
            if(isset($dataRecord['client_group_id'])) {
                $client_group_id = $dataRecord['client_group_id'];
            } elseif (isset($dataRecord['parent_domain_id'])) {
                $tmp = $app->db->queryOneRecord("SELECT sys_groupid FROM web_domain WHERE domain_id = " . $dataRecord['parent_domain_id']);
                $client_group_id = $tmp['sys_groupid'];
            } elseif(isset($dataRecord['sys_groupid'])) {
                $client_group_id = $dataRecord['sys_groupid'];
            } else {
                $client_group_id = 0;
            }
        }
        $tmp = $app->db->queryOneRecord("SELECT name FROM sys_group WHERE groupid = " . $app->functions->intval($client_group_id));
        $clientName = $tmp['name'];
        if ($clientName == "") $clientName = 'default';
        $clientName = $this->convertClientName($clientName);
        return $clientName;
    }
      // Try to match the key within the string
      foreach ($keywordlist as $keyword) {
         if (substr_count($name, '['.$keyword.']') > 0) {
            switch ($keyword) {
            case 'CLIENTNAME':
               $name=str_replace('['.$keyword.']', $this->getClientName($dataRecord), $name);
               break;
            case 'CLIENTID':
               $name=str_replace('['.$keyword.']', $this->getClientID($dataRecord), $name);
               break;
            case 'DOMAINID':
               $name=str_replace('['.$keyword.']', $dataRecord['parent_domain_id'], $name);
               break;
            }
         }
      }
      return $name;
   }
    function getClientID($dataRecord) {
        global $app, $conf;
   function removePrefix($name, $currentPrefix, $globalPrefix) {
      if($name == "") return "";
        if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) {
            // Get the group-id of the user
            $client_group_id = $_SESSION["s"]["user"]["default_group"];
        } else {
            // Get the group-id from the data itself
            if(isset($dataRecord['client_group_id'])) {
                $client_group_id = $dataRecord['client_group_id'];
            } elseif (isset($dataRecord['parent_domain_id']) && $dataRecord['parent_domain_id'] != 0) {
                $tmp = $app->db->queryOneRecord("SELECT sys_groupid FROM web_domain WHERE domain_id = " . $dataRecord['parent_domain_id']);
                $client_group_id = $tmp['sys_groupid'];
            } elseif(isset($dataRecord['sys_groupid'])) {
                $client_group_id = $dataRecord['sys_groupid'];
            } else {
                $client_group_id = 0;
            }
        }
        $tmp = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = " . $app->functions->intval($client_group_id));
        $clientID = $tmp['client_id'];
        if ($clientID == '') $clientID = '0';
        return $clientID;
    }
    function convertClientName($name){
        $allowed = 'abcdefghijklmnopqrstuvwxyz0123456789_';
        $res = '';
        $name = strtolower(trim($name));
        for ($i=0; $i < strlen($name); $i++){
            if ($name[$i] == ' ') continue;
            if (strpos($allowed, $name[$i]) !== false){
                $res .= $name[$i];
            }
            else {
                $res .= '_';
            }
        }
        return $res;
    }
    function getDomainModuleDomains() {
        global $app;
        $sql = "SELECT domain_id, domain FROM domain WHERE";
        if ($_SESSION["s"]["user"]["typ"] == 'admin') {
            $sql .= " 1";
        } else {
            $groups = ( $_SESSION["s"]["user"]["groups"] ) ? $_SESSION["s"]["user"]["groups"] : 0;
            $sql .= " sys_groupid IN (".$groups.")";
        }
        $sql .= " ORDER BY domain";
        return $app->db->queryAllRecords($sql);
    }
    function checkDomainModuleDomain($domain_id) {
        global $app;
        $sql = "SELECT domain_id, domain FROM domain WHERE domain_id = " . $app->functions->intval($domain_id);
        if ($_SESSION["s"]["user"]["typ"] != 'admin') {
            $groups = ( $_SESSION["s"]["user"]["groups"] ) ? $_SESSION["s"]["user"]["groups"] : 0;
            $sql .= " AND sys_groupid IN (".$groups.")";
        }
        $domain = $app->db->queryOneRecord($sql);
        if(!$domain || !$domain['domain_id']) return false;
        return $domain['domain'];
    }
      if($currentPrefix === '') return $name; // empty prefix, do not change name
      if($currentPrefix === '#') $currentPrefix = $globalPrefix; // entry has no prefix set, maybe it was created before this function was introduced
      if($currentPrefix === '') return $name; // no current prefix and global prefix is empty -> nothing to remove here.
      return preg_replace('/^' . preg_quote($currentPrefix, '/') . '/', '', $name); // return name without prefix
   }
   function getPrefix($currentPrefix, $userPrefix, $adminPrefix = false) {
      global $app;
      if($currentPrefix !== '#') return $currentPrefix; // return the currently set prefix for this entry (# = no prefix set yet)
      if($adminPrefix === false) $adminPrefix = $userPrefix;
      if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) return $adminPrefix;
      else return $userPrefix;
   }
   function getClientName($dataRecord) {
      global $app, $conf;
      if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) {
         // Get the group-id of the user if the logged in user is neither admin nor reseller
         $client_group_id = $_SESSION["s"]["user"]["default_group"];
      } else {
         // Get the group-id from the data itself
         if(isset($dataRecord['client_group_id'])) {
            $client_group_id = $dataRecord['client_group_id'];
         } elseif (isset($dataRecord['parent_domain_id'])) {
            $tmp = $app->db->queryOneRecord("SELECT sys_groupid FROM web_domain WHERE domain_id = " . $dataRecord['parent_domain_id']);
            $client_group_id = $tmp['sys_groupid'];
         } elseif(isset($dataRecord['sys_groupid'])) {
            $client_group_id = $dataRecord['sys_groupid'];
         } else {
            $client_group_id = 0;
         }
      }
      $tmp = $app->db->queryOneRecord("SELECT name FROM sys_group WHERE groupid = " . $app->functions->intval($client_group_id));
      $clientName = $tmp['name'];
      if ($clientName == "") $clientName = 'default';
      $clientName = $this->convertClientName($clientName);
      return $clientName;
   }
   function getClientID($dataRecord) {
      global $app, $conf;
      if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) {
         // Get the group-id of the user
         $client_group_id = $_SESSION["s"]["user"]["default_group"];
      } else {
         // Get the group-id from the data itself
         if(isset($dataRecord['client_group_id'])) {
            $client_group_id = $dataRecord['client_group_id'];
         } elseif (isset($dataRecord['parent_domain_id']) && $dataRecord['parent_domain_id'] != 0) {
            $tmp = $app->db->queryOneRecord("SELECT sys_groupid FROM web_domain WHERE domain_id = " . $dataRecord['parent_domain_id']);
            $client_group_id = $tmp['sys_groupid'];
         } elseif(isset($dataRecord['sys_groupid'])) {
            $client_group_id = $dataRecord['sys_groupid'];
         } else {
            $client_group_id = 0;
         }
      }
      $tmp = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = " . $app->functions->intval($client_group_id));
      $clientID = $tmp['client_id'];
      if ($clientID == '') $clientID = '0';
      return $clientID;
   }
   function convertClientName($name){
      $allowed = 'abcdefghijklmnopqrstuvwxyz0123456789_';
      $res = '';
      $name = strtolower(trim($name));
      for ($i=0; $i < strlen($name); $i++){
         if ($name[$i] == ' ') continue;
         if (strpos($allowed, $name[$i]) !== false){
            $res .= $name[$i];
         }
         else {
            $res .= '_';
         }
      }
      return $res;
   }
   function getDomainModuleDomains() {
      global $app;
      $sql = "SELECT domain_id, domain FROM domain WHERE";
      if ($_SESSION["s"]["user"]["typ"] == 'admin') {
         $sql .= " 1";
      } else {
         $groups = ( $_SESSION["s"]["user"]["groups"] ) ? $_SESSION["s"]["user"]["groups"] : 0;
         $sql .= " sys_groupid IN (".$groups.")";
      }
      $sql .= " ORDER BY domain";
      return $app->db->queryAllRecords($sql);
   }
   function checkDomainModuleDomain($domain_id) {
      global $app;
      $sql = "SELECT domain_id, domain FROM domain WHERE domain_id = " . $app->functions->intval($domain_id);
      if ($_SESSION["s"]["user"]["typ"] != 'admin') {
         $groups = ( $_SESSION["s"]["user"]["groups"] ) ? $_SESSION["s"]["user"]["groups"] : 0;
         $sql .= " AND sys_groupid IN (".$groups.")";
      }
      $domain = $app->db->queryOneRecord($sql);
      if(!$domain || !$domain['domain_id']) return false;
      return $domain['domain'];
   }
}
?>