tbrehm
2009-11-18 80e7b0d7d17b0e9581fa56be484b8772d82261de
interface/lib/classes/tform.inc.php
@@ -160,11 +160,11 @@
                        foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
                                switch ($field['datatype']) {
                                case 'VARCHAR':
                                        $new_record[$key] = stripslashes($record[$key]);
                                        $new_record[$key] = $record[$key];
                                break;
                                case 'TEXT':
                                        $new_record[$key] = stripslashes($record[$key]);
                                        $new_record[$key] = $record[$key];
                                break;
                                case 'DATE':
@@ -186,7 +186,7 @@
                                break;
                                default:
                                        $new_record[$key] = stripslashes($record[$key]);
                                        $new_record[$key] = $record[$key];
                                }
                        }
@@ -275,6 +275,33 @@
               $allowed = explode(',',$client['lm']);
            }
         }
         //* values are limited to a field in the reseller settings
         if($limit_parts[0] == 'reseller') {
            if($_SESSION["s"]["user"]["typ"] == 'admin') {
               return $values;
            } else {
               //* Get the limits of the client that is currently logged in
               $client_group_id = $_SESSION["s"]["user"]["default_group"];
               $client = $app->db->queryOneRecord("SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
               //echo "SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id";
               //* If the client belongs to a reseller, we will check against the reseller Limit too
               if($client['parent_client_id'] != 0) {
                  //* first we need to know the groups of this reseller
                  $tmp = $app->db->queryOneRecord("SELECT userid, groups FROM sys_user WHERE client_id = ".$client['parent_client_id']);
                  $reseller_groups = $tmp["groups"];
                  $reseller_userid = $tmp["userid"];
                  // Get the limits of the reseller of the logged in client
                  $client_group_id = $_SESSION["s"]["user"]["default_group"];
                  $reseller = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM client WHERE client_id = ".$client['parent_client_id']);
                  $allowed = explode(',',$reseller['lm']);
               } else {
                  return $values;
               }
            } // end if admin
         } // end if reseller
         
         //* values are limited to a field in the system settings
         if($limit_parts[0] == 'system') {
@@ -1148,6 +1175,87 @@
         }
         
      }
      function checkClientLimit($limit_name,$sql_where = '') {
         global $app;
         $check_passed = true;
         $limit_name = $app->db->quote($limit_name);
         if($limit_name == '') $app->error('Limit name missing in function checkClientLimit.');
         // Get the limits of the client that is currently logged in
         $client_group_id = $_SESSION["s"]["user"]["default_group"];
         $client = $app->db->queryOneRecord("SELECT $limit_name as number, parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
         // Check if the user may add another item
         if($client["number"] >= 0) {
            $sql = "SELECT count(".$this->formDef['db_table_idx'].") as number FROM ".$this->formDef['db_table']." WHERE ".$this->getAuthSQL('u');
            if($sql_where != '') $sql .= ' and '.$sql_where;
            $tmp = $app->db->queryOneRecord($sql);
            if($tmp["number"] >= $client["number"]) $check_passed = false;
         }
         return $check_passed;
      }
      function checkResellerLimit($limit_name,$sql_where = '') {
         global $app;
         $check_passed = true;
         $limit_name = $app->db->quote($limit_name);
         if($limit_name == '') $app->error('Limit name missing in function checkClientLimit.');
         // Get the limits of the client that is currently logged in
         $client_group_id = $_SESSION["s"]["user"]["default_group"];
         $client = $app->db->queryOneRecord("SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
         //* If the client belongs to a reseller, we will check against the reseller Limit too
         if($client['parent_client_id'] != 0) {
            //* first we need to know the groups of this reseller
            $tmp = $app->db->queryOneRecord("SELECT userid, groups FROM sys_user WHERE client_id = ".$client['parent_client_id']);
            $reseller_groups = $tmp["groups"];
            $reseller_userid = $tmp["userid"];
            // Get the limits of the reseller of the logged in client
            $client_group_id = $_SESSION["s"]["user"]["default_group"];
            $reseller = $app->db->queryOneRecord("SELECT $limit_name as number FROM client WHERE client_id = ".$client['parent_client_id']);
            // Check if the user may add another item
            if($reseller["number"] >= 0) {
               $sql = "SELECT count(".$this->formDef['db_table_idx'].") as number FROM ".$this->formDef['db_table']." WHERE (sys_groupid IN (".$reseller_groups.") or sys_userid = ".$reseller_userid.")";
               if($sql_where != '') $sql .= ' and '.$sql_where;
               $tmp = $app->db->queryOneRecord($sql);
               if($tmp["number"] >= $reseller["number"]) $check_passed = false;
            }
         }
         return $check_passed;
      }
      //* get the difference record of two arrays
      function getDiffRecord($record_old,$record_new) {
         if(is_array($record_new) && count($record_new) > 0) {
         foreach($record_new as $key => $val) {
            if(@$record_old[$key] != $val) {
               // Record has changed
               $diffrec[$key] = array(   'old' => @$record_old[$key],
                                 'new' => $val);
               }
            }
         } elseif(is_array($record_old)) {
            foreach($record_old as $key => $val) {
               if($record_new[$key] != $val) {
                  // Record has changed
                  $diffrec[$key] = array(   'new' => $record_new[$key],
                                    'old' => $val);
                  }
               }
            }
         return $diffrec;
      }
}