diff options
author | Zvi ben Yaakov (a.k.a rdc) <coderzvi@infosoc.net> | 2012-06-25 13:59:53 +0300 |
---|---|---|
committer | Zvi ben Yaakov (a.k.a rdc) <coderzvi@infosoc.net> | 2012-06-25 13:59:53 +0300 |
commit | 94f895e98df73efe32a7c986a4b7844b0ab8fc01 (patch) | |
tree | 92324c19bb13025d8f2f0087212348a039acbec6 /include/plugin.php | |
parent | 00668aaa71336f48b141c443749a66c58a555503 (diff) | |
parent | 7ea5917bf794c431fe304fa25380f19a6927cf63 (diff) | |
download | volse-hubzilla-94f895e98df73efe32a7c986a4b7844b0ab8fc01.tar.gz volse-hubzilla-94f895e98df73efe32a7c986a4b7844b0ab8fc01.tar.bz2 volse-hubzilla-94f895e98df73efe32a7c986a4b7844b0ab8fc01.zip |
Merge git://github.com/friendica/friendica
Diffstat (limited to 'include/plugin.php')
-rw-r--r-- | include/plugin.php | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/include/plugin.php b/include/plugin.php index c6b61ae6e..d762e8717 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -316,3 +316,84 @@ function get_theme_screenshot($theme) { } return($a->get_baseurl() . '/images/blank.png'); } + + +// check service_class restrictions. If there are no service_classes defined, everything is allowed. +// if $usage is supplied, we check against a maximum count and return true if the current usage is +// less than the subscriber plan allows. Otherwise we return boolean true or false if the property +// is allowed (or not) in this subscriber plan. An unset property for this service plan means +// the property is allowed, so it is only necessary to provide negative properties for each plan, +// or what the subscriber is not allowed to do. + + +function service_class_allows($uid,$property,$usage = false) { + + if($uid == local_user()) { + $service_class = $a->user['service_class']; + } + else { + $r = q("select service_class from user where uid = %d limit 1", + intval($uid) + ); + if($r !== false and count($r)) { + $service_class = $r[0]['service_class']; + } + } + if(! x($service_class)) + return true; // everything is allowed + + $arr = get_config('service_class',$service_class); + if(! is_array($arr) || (! count($arr))) + return true; + + if($usage === false) + return ((x($arr[$property])) ? (bool) $arr['property'] : true); + else { + if(! array_key_exists($property,$arr)) + return true; + return (((intval($usage)) < intval($arr[$property])) ? true : false); + } +} + + +function service_class_fetch($uid,$property) { + + if($uid == local_user()) { + $service_class = $a->user['service_class']; + } + else { + $r = q("select service_class from user where uid = %d limit 1", + intval($uid) + ); + if($r !== false and count($r)) { + $service_class = $r[0]['service_class']; + } + } + if(! x($service_class)) + return false; // everything is allowed + + $arr = get_config('service_class',$service_class); + if(! is_array($arr) || (! count($arr))) + return false; + + return((array_key_exists($property,$arr)) ? $arr[$property] : false); + +} + +function upgrade_link() { + $l = get_config('service_class','upgrade_link'); + $t = sprintf('<a href="%s">' . t('Click here to upgrade.') . '</div>', $l); + if($l) + return $t; + return ''; +} + +function upgrade_message() { + $x = upgrade_link(); + return t('This action exceeds the limits set by your subscription plan.') . (($x) ? ' ' . $x : '') ; +} + +function upgrade_bool_message() { + $x = upgrade_link(); + return t('This action is not available under your subscription plan.') . (($x) ? ' ' . $x : '') ; +} |