Marius Cramer
2015-08-06 37b29231e47a0c4458dc1c15d98588f16f07e1e2
interface/lib/classes/validate_client.inc.php
@@ -29,60 +29,60 @@
*/
class validate_client {
   /*
      Validator function to check if a username is unique.
   */
   function username_unique($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;
      }
      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";
               } 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 != ".$client_id);
         $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM sys_user WHERE username = ?", $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 = ? AND client_id != ?", $field_value, $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') {
      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";
@@ -90,10 +90,10 @@
            return $errmsg."<br>\r\n";
         }
      }
   }
   function check_used_servers($field_name, $field_value, $validator)
@@ -105,38 +105,122 @@
         $client_id = intval($_POST['id']);
         $used_servers = null;
         switch ($field_name)
         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 '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 = ? AND server_id NOT IN ?', $client_id, $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 '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 = ? AND server_id NOT IN ?', $client_id, $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 '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 = ? AND server_id NOT IN ?', $client_id, $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;
         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 = ? AND server_id NOT IN ?', $client_id, $field_value);
            break;
            case 'xmpp_servers':
                $used_servers = $app->db->queryAllRecords('SELECT domain_id FROM xmpp_domain INNER JOIN sys_user ON xmpp_domain.sys_userid = sys_user.userid WHERE client_id = ? AND server_id NOT IN ?', $client_id, $field_value);
                break;
         }
           if ($used_servers === null || count($used_servers))
           {
         if ($used_servers === null || count($used_servers))
         {
            $errmsg = $validator['errmsg'];
              if(isset($app->tform->wordbook[$errmsg])) {
            if(isset($app->tform->wordbook[$errmsg])) {
               return $app->tform->wordbook[$errmsg]."<br>\r\n";
            } else {
               return $errmsg."<br>\r\n";
            }
           }
         }
      }
   }
}
   function check_vat_id ($field_name, $field_value, $validator){
      global $app, $page;
      $vatid = trim($field_value);
      if(isset($app->remoting_lib->primary_id)) {
         $country = $app->remoting_lib->dataRecord['country'];
      } else {
         $country = $page->dataRecord['country'];
      }
      // check if country is member of EU
      $country_details = $app->db->queryOneRecord("SELECT * FROM country WHERE iso = ?", $country);
      if($country_details['eu'] == 'y' && $vatid != ''){
         $vatid = preg_replace('/\s+/', '', $vatid);
         $vatid = str_replace(array('.', '-', ','), '', $vatid);
         $cc = substr($vatid, 0, 2);
         $vn = substr($vatid, 2);
         // Test if the country of the VAT-ID matches the country of the customer
         if($country != ''){
            // Greece
            if($country == 'GR') $country = 'EL';
            if(strtoupper($cc) != $country){
               $errmsg = $validator['errmsg'];
               if(isset($app->tform->wordbook[$errmsg])) {
                  return $app->tform->wordbook[$errmsg]."<br>\r\n";
               } else {
                  return $errmsg."<br>\r\n";
               }
            }
         }
         $client = new SoapClient("http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl");
         if($client){
            $params = array('countryCode' => $cc, 'vatNumber' => $vn);
            try{
               $r = $client->checkVat($params);
               if($r->valid == true){
               } else {
                  $errmsg = $validator['errmsg'];
                     if(isset($app->tform->wordbook[$errmsg])) {
                        return $app->tform->wordbook[$errmsg]."<br>\r\n";
                     } else {
                        return $errmsg."<br>\r\n";
                     }
               }
               // This foreach shows every single line of the returned information
               /*
               foreach($r as $k=>$prop){
                  echo $k . ': ' . $prop;
               }
               */
            } catch(SoapFault $e) {
               //echo 'Error, see message: '.$e->faultstring;
               switch ($e->faultstring) {
                  case 'INVALID_INPUT':
                     $errmsg = $validator['errmsg'];
                     if(isset($app->tform->wordbook[$errmsg])) {
                        return $app->tform->wordbook[$errmsg]."<br>\r\n";
                     } else {
                        return $errmsg."<br>\r\n";
                     }
                     break;
                  // the following cases shouldn't be the user's fault, so we return no error
                  case 'SERVICE_UNAVAILABLE':
                  case 'MS_UNAVAILABLE':
                  case 'TIMEOUT':
                  case 'SERVER_BUSY':
                     break;
               }
            }
         } else {
            // Connection to host not possible, europe.eu down?
            // this shouldn't be the user's fault, so we return no error
         }
      }
   }
}