diff options
author | friendica <info@friendica.com> | 2014-09-03 19:07:14 -0700 |
---|---|---|
committer | friendica <info@friendica.com> | 2014-09-03 19:07:14 -0700 |
commit | 844087bc71f333719c1e08d807874f3ae3a7053e (patch) | |
tree | 795180dfb37bdec9a9f161b242f742896f672b65 /include/account.php | |
parent | d93f7d688ddf5a0f1295a93a4c84123e9e1b252f (diff) | |
download | volse-hubzilla-844087bc71f333719c1e08d807874f3ae3a7053e.tar.gz volse-hubzilla-844087bc71f333719c1e08d807874f3ae3a7053e.tar.bz2 volse-hubzilla-844087bc71f333719c1e08d807874f3ae3a7053e.zip |
implement service class for feed polling frequenecy, fixed a service class bug, moved service class stuff from plugin to account.php where it belongs and load that by default instead of on demand
Diffstat (limited to 'include/account.php')
-rw-r--r-- | include/account.php | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/include/account.php b/include/account.php index 4ded069d5..6cc203dc8 100644 --- a/include/account.php +++ b/include/account.php @@ -547,3 +547,91 @@ function downgrade_accounts() { } } + + +// 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) { + $a = get_app(); + if($uid == local_user()) { + $service_class = $a->account['account_service_class']; + } + else { + $r = q("select account_service_class as service_class + from channel c, account a + where c.channel_account_id=a.account_id and c.channel_id= %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) { + $a = get_app(); + if($uid == local_user()) { + $service_class = $a->account['account_service_class']; + } + else { + $r = q("select account_service_class as service_class + from channel c, account a + where c.channel_account_id=a.account_id and c.channel_id= %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($bbcode = false) { + $l = get_config('service_class','upgrade_link'); + if(! $l) + return ''; + if($bbcode) + $t = sprintf('[zrl=%s]' . t('Click here to upgrade.') . '[/zrl]', $l); + else + $t = sprintf('<a href="%s">' . t('Click here to upgrade.') . '</div>', $l); + return $t; +} + +function upgrade_message($bbcode = false) { + $x = upgrade_link($bbcode); + return t('This action exceeds the limits set by your subscription plan.') . (($x) ? ' ' . $x : '') ; +} + +function upgrade_bool_message($bbcode = false) { + $x = upgrade_link($bbcode); + return t('This action is not available under your subscription plan.') . (($x) ? ' ' . $x : '') ; +} |