Florian Schaal
2013-11-24 03200f17fb330b13f2ca9a13057fb97c672cdf1d
interface/lib/classes/validate_client.inc.php
@@ -1,7 +1,7 @@
<?php
/*
Copyright (c) 2007, Till Brehm, Falko Timme, projektfarm Gmbh
Copyright (c) 2007, Till Brehm, projektfarm Gmbh
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
@@ -28,39 +28,115 @@
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
class validate_client {
   /*
      Validator function to check if a username is unique.
   */
   function username_unique($field_name, $field_value, $validator) {
      global $app;
      if($app->tform->action == 'NEW') {
           $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = '".$app->db->quote($field_value)."'");
               if($num_rec["number"] > 0) {
                   $errmsg = $validator['errmsg'];
               if(isset($this->wordbook[$errmsg])) {
                       return $app->tform->wordbook[$errmsg]."<br>\r\n";
               } else {
                  return $errmsg."<br>\r\n";
               }
                }
        } else {
           $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = '".$app->db->quote($field_value)."' AND client_id != ".$app->tform->primary_id);
      if(isset($app->remoting_lib->primary_id)) {
         $client_id = $app->remoting_lib->primary_id;
      } else {
         $client_id = $app->tform->primary_id;
      }
      if($client_id == 0) {
         $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = '".$app->db->quote($field_value)."'");
         if($num_rec["number"] > 0) {
               $errmsg = $validator['errmsg'];
                if(isset($app->tform->wordbook[$errmsg])) {
                   return $app->tform->wordbook[$errmsg]."<br>\r\n";
            $errmsg = $validator['errmsg'];
            if(isset($app->tform->wordbook[$errmsg])) {
               return $app->tform->wordbook[$errmsg]."<br>\r\n";
            } else {
               return $errmsg."<br>\r\n";
            }
         }
      } else {
         $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = '".$app->db->quote($field_value)."' AND client_id != ".$app->functions->intval($client_id));
         if($num_rec["number"] > 0) {
            $errmsg = $validator['errmsg'];
            if(isset($app->tform->wordbook[$errmsg])) {
               return $app->tform->wordbook[$errmsg]."<br>\r\n";
            } else {
               return $errmsg."<br>\r\n";
            }
         }
      }
   }
}
   function username_collision($field_name, $field_value, $validator) {
      global $app;
      if(isset($app->remoting_lib->primary_id)) {
         $client_id = $app->remoting_lib->primary_id;
      } else {
         $client_id = $app->tform->primary_id;
      }
      $app->uses('getconf');
      $global_config = $app->getconf->get_global_config('sites');
      if((trim($field_value) == 'web' || preg_match('/^web[0-9]/', $field_value)) &&
         ($global_config['ftpuser_prefix'] == '[CLIENTNAME]' ||
            $global_config['ftpuser_prefix'] == '' ||
            $global_config['shelluser_prefix'] == '[CLIENTNAME]' ||
            $global_config['shelluser_prefix'] == '' ) &&
         $global_config['client_username_web_check_disabled'] == 'n') {
         $errmsg = $validator['errmsg'];
         if(isset($app->tform->wordbook[$errmsg])) {
            return $app->tform->wordbook[$errmsg]."<br>\r\n";
         } else {
            return $errmsg."<br>\r\n";
         }
      }
   }
   function check_used_servers($field_name, $field_value, $validator)
   {
      global $app;
      if (is_array($field_value))
      {
         $client_id = intval($_POST['id']);
         $used_servers = null;
         switch ($field_name)
         {
         case 'web_servers':
            $used_servers = $app->db->queryAllRecords('SELECT domain_id FROM web_domain INNER JOIN sys_user ON web_domain.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
            break;
         case 'dns_servers':
            $used_servers = $app->db->queryAllRecords('SELECT id FROM dns_rr INNER JOIN sys_user ON dns_rr.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
            break;
         case 'db_servers':
            $used_servers = $app->db->queryAllRecords('SELECT database_id FROM web_database INNER JOIN sys_user ON web_database.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
            break;
         case 'mail_servers':
            $used_servers = $app->db->queryAllRecords('SELECT domain_id FROM mail_domain INNER JOIN sys_user ON mail_domain.sys_userid = sys_user.userid WHERE client_id = ' . $client_id . ' AND server_id NOT IN (' . implode(', ', $field_value) . ');');
            break;
         }
         if ($used_servers === null || count($used_servers))
         {
            $errmsg = $validator['errmsg'];
            if(isset($app->tform->wordbook[$errmsg])) {
               return $app->tform->wordbook[$errmsg]."<br>\r\n";
            } else {
               return $errmsg."<br>\r\n";
            }
         }
      }
   }
}