aboutsummaryrefslogtreecommitdiffstats
path: root/mod
diff options
context:
space:
mode:
Diffstat (limited to 'mod')
-rw-r--r--mod/item.php49
-rw-r--r--mod/manage.php12
2 files changed, 60 insertions, 1 deletions
diff --git a/mod/item.php b/mod/item.php
index 3069bfa4d..f47180f19 100644
--- a/mod/item.php
+++ b/mod/item.php
@@ -71,7 +71,17 @@ function item_post(&$a) {
$webpage = ((x($_REQUEST,'webpage')) ? intval($_REQUEST['webpage']) : 0);
$pagetitle = ((x($_REQUEST,'pagetitle')) ? escape_tags($_REQUEST['pagetitle']) : '');
$layout_mid = ((x($_REQUEST,'layout_mid')) ? escape_tags($_REQUEST['layout_mid']): '');
-
+ /*
+ Check service class limits
+ */
+ if (local_user() && !(x($_REQUEST,'parent')) && !(x($_REQUEST,'post_id'))) {
+ $ret=item_check_service_class(local_user(),x($_REQUEST,'webpage'));
+ if (!$ret['success']) {
+ notice( t($ret['message']) . EOL) ;
+ goaway($a->get_baseurl() . "/" . $return_path );
+ killme();
+ }
+ }
if($pagetitle) {
require_once('library/urlify/URLify.php');
$pagetitle = strtolower(URLify::transliterate($pagetitle));
@@ -1115,3 +1125,40 @@ function fix_attached_file_permissions($channel,$observer_hash,$body,
}
}
}
+function item_check_service_class($channel_id,$iswebpage) {
+ $ret = array('success' => false, $message => '');
+ if ($iswebpage) {
+ $r = q("select count(i.id) as total from item i
+ right join channel c on (i.author_xchan=c.channel_hash and i.uid=c.channel_id )
+ and i.parent=i.id and (i.item_restrict & %d) and i.uid= %d ",
+ intval(ITEM_WEBPAGE),
+ intval($channel_id)
+ );
+ }
+ else {
+ $r = q("select count(i.id) as total from item i
+ right join channel c on (i.author_xchan=c.channel_hash and i.uid=c.channel_id )
+ and i.parent=i.id and (i.item_restrict=0) and i.uid= %d ",
+ intval($channel_id)
+ );
+ }
+ if(! ($r && count($r))) {
+ $ret['message'] = t('Unable to obtain identity information from database');
+ return $ret;
+ }
+ if (!$iswebpage) {
+ if(! service_class_allows($channel_id,'total_items',$r[0]['total'])) {
+ $result['message'] .= upgrade_message().sprintf(t("You have reached your limit of %1$.0f top level posts."),$r[0]['total']);
+ return $result;
+ }
+ }
+ else {
+ if(! service_class_allows($channel_id,'total_pages',$r[0]['total'])) {
+ $result['message'] .= upgrade_message().sprintf(t("You have reached your limit of %1$.0f webpages."),$r[0]['total']);
+ return $result;
+ }
+ }
+
+ $ret['success'] = true;
+ return $ret;
+}
diff --git a/mod/manage.php b/mod/manage.php
index 2cdfce115..fad359535 100644
--- a/mod/manage.php
+++ b/mod/manage.php
@@ -53,6 +53,17 @@ function manage_content(&$a) {
$channels[$x]['default_links'] = '1';
}
}
+
+ $r = q("select count(channel_id) as total from channel where channel_account_id = %d ",
+ intval($account)
+ );
+ $limit = service_class_fetch(local_user(),'total_identities');
+ if($limit !== false) {
+ $channel_usage_message = sprintf( t("You have created %1$.0f of %2$.0f allowed channels."), $r[0]['total'], $limit);
+ }
+ else {
+ $channel_usage_message = '';
+ }
}
$links = array(
@@ -69,6 +80,7 @@ function manage_content(&$a) {
'$msg_make_default' => t('Make Default'),
'$links' => $links,
'$all_channels' => $channels,
+ '$channel_usage_message' => $channel_usage_message,
));