ftimme
2012-04-25 c56ca0d827134a1062d5a7df13fb848fd2f39335
interface/web/client/tools.inc.php
@@ -28,7 +28,7 @@
*/
function applyClientTemplates($clientId){
   global $app;
   global $app,$page;
   /*
    * Get the master-template for the client
    */
@@ -44,7 +44,7 @@
      $sql = "SELECT * FROM client_template WHERE template_id = " . intval($masterTemplateId);
      $limits = $app->db->queryOneRecord($sql);
   } else {
      $limits = $this->dataRecord;
      $limits = $page->dataRecord;
   }
   /*
@@ -59,12 +59,58 @@
         /* maybe the template is deleted in the meantime */
         if (is_array($addLimits)){
            foreach($addLimits as $k => $v){
               if ($limits[$k] > -1){
                  if ($v == -1) {
                     $limits[$k] = -1;
               /* we can remove this condition, but it is easier to debug with it (don't add ids and other non-limit values) */
               if (strpos($k, 'limit') !== false){
                  /* process the numerical limits */
                  if (is_numeric($v)){
                     /* switch for special cases */
                     switch ($k){
                     case 'limit_cron_frequency':
                        if ($v < $limits[$k]) $limits[$k] = $v;
                        /* silent adjustment of the minimum cron frequency to 1 minute */
                        /* maybe this control test should be done via validator definition in tform.php file, but I don't know how */
                        if ($limits[$k] < 1) $limits[$k] = 1;
                     break;
                     default:
                        if ($limits[$k] > -1){
                           if ($v == -1){
                              $limits[$k] = -1;
                           }
                           else {
                              $limits[$k] += $v;
                           }
                        }
                     }
                  }
                  else {
                     $limits[$k] += $v;
                  /* process the string limits (CHECKBOXARRAY, SELECT etc.) */
                  elseif (is_string($v)){
                     switch ($app->tform->formDef["tabs"]["limits"]["fields"][$k]['formtype']){
                     case 'CHECKBOXARRAY':
                        if (!isset($limits[$k])){
                           $limits[$k] = array();
                        }
                        $limits_values = $limits[$k];
                        if (is_string($limits[$k])){
                           $limits_values = explode($app->tform->formDef["tabs"]["limits"]["fields"][$k]["separator"],$limits[$k]);
                        }
                        $additional_values = explode($app->tform->formDef["tabs"]["limits"]["fields"][$k]["separator"],$v);
                        /* unification of limits_values (master template) and additional_values (additional template) */
                        $limits_unified = array();
                        foreach($app->tform->formDef["tabs"]["limits"]["fields"][$k]["value"] as $key => $val){
                           if (in_array($key,$limits_values) || in_array($key,$additional_values)) $limits_unified[] = $key;
                        }
                        $limits[$k] = implode($app->tform->formDef["tabs"]["limits"]["fields"][$k]["separator"],$limits_unified);
                     break;
                     case 'SELECT':
                        $limit_values = array_keys($app->tform->formDef["tabs"]["limits"]["fields"][$k]["value"]);
                        /* choose the lower index of the two SELECT items */
                        $limits[$k] = $limit_values[min(array_search($limits[$k], $limit_values), array_search($v, $limit_values))];
                     break;
                     }
                  }
               }
            }
@@ -77,12 +123,12 @@
    */
   $update = '';
   foreach($limits as $k => $v){
      if (strpos($k, 'limit') !== false){
      if ((strpos($k, 'limit') !== false or $k == 'ssh_chroot' or $k == 'web_php_options') && !is_array($v)){
         if ($update != '') $update .= ', ';
         $update .= '`' . $k . "`='" . $v . "'";
      }
   }
   $sql = 'UPDATE client SET ' . $update . " WHERE client_id = " . intval($clientId);
   if($update != '') $sql = 'UPDATE client SET ' . $update . " WHERE client_id = " . intval($clientId);
   $app->db->query($sql);
}
?>