Sebastien JEAN
2013-11-18 f19308703c8769cd943dfcef416484c3353fd5fb
interface/lib/classes/validate_client.inc.php
@@ -36,7 +36,13 @@
   function username_unique($field_name, $field_value, $validator) {
      global $app;
      
      if($app->tform->primary_id == 0) {
      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'];
@@ -47,7 +53,7 @@
               }
                }
        } 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);
           $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = '".$app->db->quote($field_value)."' AND client_id != ".$client_id);
         if($num_rec["number"] > 0) {
               $errmsg = $validator['errmsg'];
                if(isset($app->tform->wordbook[$errmsg])) {
@@ -59,6 +65,77 @@
      }
   }
   
   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";
            }
           }
      }
   }