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}; } } }
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; }
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; } } }