示例#1
0
 function getEffectivePriv($k, $class)
 {
     if (is_unlimited($this->priv->{$k})) {
         return 'Unlimited';
     } else {
         if (isHardQuotaVariableInClass($class, $k)) {
             return $this->priv->{$k} - $this->used->{$k};
         } else {
             return $this->priv->{$k};
         }
     }
 }
示例#2
0
 function object_variable_quota($parent, $stuff, $variable)
 {
     global $gbl, $sgbl, $ghtml;
     $parent = $parent->getClientParentO();
     $value = null;
     $this->fix_stuff_or_class($stuff, $variable, $class, $value);
     $descr = $this->get_classvar_description_after_overload($class, $variable);
     $cvar = $variable;
     if ($value === 'Unlimited') {
         $value = null;
     }
     $check = trim($value) !== "" ? 'no' : 'yes';
     if (is_object($stuff)) {
         if (isOn($value)) {
             $chval = 'yes';
         } else {
             $chval = 'no';
         }
     } else {
         $cl = get_name_without_template($stuff);
         if (isOn(exec_class_method($cl, "getDefaultValue", $variable))) {
             $chval = 'yes';
         } else {
             $chval = "no";
         }
     }
     if (cse($variable, "_flag")) {
         $rvr = new FormVar();
         $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_checkname";
         $rvr->desc = $descr[2];
         $rvr->type = "hidden";
         $rvr->value = "off";
         $ret[] = $rvr;
         if ($parent->priv->isOn($variable)) {
             $rvr = new FormVar();
             $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_checked";
             $rvr->desc = $descr[2];
             $rvr->type = "checkbox";
             $rvr->checked = $chval;
             $rvr->value = "on";
             $ret[] = $rvr;
         } else {
             $rvr = new FormVar();
             $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_checked";
             $rvr->desc = $descr[2];
             $rvr->type = "checkbox";
             $rvr->checked = "disabled";
             $rvr->value = "off";
             $ret[] = $rvr;
         }
         return $ret;
     }
     if (is_unlimited($parent->priv->{$cvar})) {
         $rvr = new FormVar();
         $rvr->name = "frm_{$class}_c_{$variable}";
         $rvr->type = "checkboxwithtext";
         $rvr->desc = $descr[2];
         $rvr->mode = "or";
         $text = new FormVar();
         $text->name = "frm_{$class}_c_priv_s_{$variable}_aaa_quotaname";
         $text->value = $value;
         $rvr->text = $text;
         $checkbox = new FormVar();
         $checkbox->desc = "Unlimited";
         $checkbox->name = "frm_{$class}_c_priv_s_{$variable}_aaa_unlimited";
         $checkbox->checked = $check;
         $checkbox->value = "yes";
         $rvr->checkbox = $checkbox;
         $ret[] = $rvr;
         $rvr = new FormVar();
         $rvr->type = "hidden";
         $rvr->value = "Unlimited";
         $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_quotamax";
         $ret[] = $rvr;
     } else {
         $quotaleft = $parent->getEffectivePriv($cvar, $class);
         if (isHardQuotaVariableInClass($class, $cvar)) {
             $quotaleft += $value;
         }
         $totalstring = null;
         $totalstring = "Total: " . $parent->priv->{$cvar};
         if (cse($class, "template")) {
             $totalstring = null;
             $quotaleft = $parent->priv->{$cvar};
         }
         if ($value === "") {
             $value = $quotaleft;
         }
         $rvr = new FormVar();
         $rvr->type = "modify";
         $rvr->texttype = "text";
         $rvr->value = $value;
         $rvr->desc = $descr[2];
         $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_quotaname";
         $rvr->posttext = "Max {$quotaleft} {$totalstring}";
         $rvr->format = "integer";
         $ret[] = $rvr;
         $rvr = new FormVar();
         $rvr->type = "hidden";
         $rvr->value = $quotaleft;
         $rvr->name = "frm_{$class}_c_priv_s_{$variable}_aaa_quotamax";
         $ret[] = $rvr;
     }
     return $ret;
 }
示例#3
0
function check_priv($parent, $class, $pvar, $v)
{
    if (cse($class, "template")) {
        foreach ($v as $pk => $pv) {
            $pvar->{$pk} = $pv;
        }
        return;
    }
    $parent = $parent->getClientParentO();
    foreach ($v as $pk => $pv) {
        if (cse($pk, "_time")) {
            $pvar->{$pk} = $pv;
            continue;
        }
        if (!$parent->isQuotaVariable($pk) && !$parent->isDeadQuotaVariable($pk)) {
            continue;
        }
        if (cse($pk, "_flag")) {
            if ($parent->priv->isOn($pk)) {
                $pvar->{$pk} = $pv;
                continue;
            }
            if (isOn($pv)) {
                throw new lxException("Parent Doesnt Have Permission for {$pk}", "frm_{$class}_c_priv_s_{$pk}", null);
            }
            $pvar->{$pk} = $pv;
            continue;
        }
        if (cse($pk, "_num") || cse($pk, "_usage")) {
            $tmp = $pv;
            if ($tmp < 0) {
                throw new lxException('has_to_be_greater_than_zero', "priv_s_{$pk}");
            }
            if (is_unlimited($parent->priv->{$pk})) {
                if (isHardQuotaVariableInClass($class, $pk)) {
                    $parent->used->{$pk} -= $pvar->{$pk};
                    $parent->used->{$pk} += $pv;
                    $parent->setUpdateSubaction();
                }
                $pvar->{$pk} = $pv;
                continue;
            }
            if (is_unlimited($pv)) {
                $desc = getNthToken(get_v_descr($parent, $pk), 2);
                if (!$desc) {
                    $desc = $pk;
                }
                throw new lxException("quota_exceeded", "priv_s_{$pk}", $desc);
            }
            if (isHardQuotaVariableInClass($class, $pk)) {
                $parent->used->{$pk} -= $pvar->{$pk};
            }
            dprintr($parent->used);
            if ($tmp > $parent->getEffectivePriv($pk, $class)) {
                dprint("After throw");
                $desc = getNthToken(get_v_descr($parent, $pk), 1);
                if (!$desc) {
                    $desc = $pk;
                }
                throw new lxException("quota_exceeded", "priv_s_{$pk}", $desc);
            }
            dprint("No throw.. {$tmp} <br> ");
            if (isHardQuotaVariableInClass($class, $pk)) {
                $parent->used->{$pk} += $pv;
                $parent->setUpdateSubaction();
            }
            $pvar->{$pk} = $pv;
        }
    }
}