From 94fb9c240661a9cd2b7199a648e9c5b4f9b69e8d Mon Sep 17 00:00:00 2001 From: Christian Vogeley Date: Sun, 8 Sep 2013 00:21:42 +0200 Subject: Service class identity, follow, photo upload, att upload --- include/contact_widgets.php | 19 +++++++++++++++++-- include/identity.php | 7 +++++-- include/plugin.php | 19 ++++++++++++------- mod/manage.php | 12 ++++++++++++ view/tpl/channels.tpl | 5 +++++ view/tpl/follow.tpl | 3 +++ view/tpl/photos_upload.tpl | 2 +- 7 files changed, 55 insertions(+), 12 deletions(-) diff --git a/include/contact_widgets.php b/include/contact_widgets.php index e5f778e49..cc7d92508 100644 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -1,12 +1,27 @@ channel['channel_id']; + $r = q("select count(*) as total from abook where abook_channel = %d and not (abook_flags & %d) ", + intval($uid), + intval(ABOOK_FLAG_SELF) + ); + if($r) + $total_channels = $r[0]['total']; + $limit = service_class_fetch($uid,'total_channels'); + if($limit !== false) { + $abook_usage_message = sprintf( t("You have %1$.0f of %2$.0f allowed connections."), $total_channels, $limit); + } + else { + $abook_usage_message = ''; + } return replace_macros(get_markup_template('follow.tpl'),array( '$connect' => t('Add New Connection'), '$desc' => t('Enter the channel address'), '$hint' => t('Example: bob@example.com, http://example.com/barbara'), - '$follow' => t('Connect') + '$follow' => t('Connect'), + '$abook_usage_message' => $abook_usage_message )); } diff --git a/include/identity.php b/include/identity.php index 8db6355c0..98209c8ae 100644 --- a/include/identity.php +++ b/include/identity.php @@ -7,7 +7,7 @@ require_once('include/crypto.php'); function identity_check_service_class($account_id) { $ret = array('success' => false, $message => ''); - $r = q("select count(channel_id) as total from channel were channel_account_id = %d ", + $r = q("select count(channel_id) as total from channel where channel_account_id = %d ", intval($account_id) ); if(! ($r && count($r))) { @@ -80,7 +80,10 @@ function create_identity($arr) { $ret['message'] = t('No account identifier'); return $ret; } - + $ret=identity_check_service_class($arr['account_id']); + if (!$ret['success']) { + return $ret; + } $nick = mb_strtolower(trim($arr['nickname'])); $name = escape_tags($arr['name']); $pageflags = ((x($arr,'pageflags')) ? intval($arr['pageflags']) : PAGE_NORMAL); diff --git a/include/plugin.php b/include/plugin.php index 01ee99786..ea88a61df 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -374,12 +374,14 @@ function get_theme_screenshot($theme) { function service_class_allows($uid,$property,$usage = false) { - + $a = get_app(); if($uid == local_user()) { - $service_class = $a->user['service_class']; + $service_class = $a->account['account_service_class']; } else { - $r = q("select service_class from user where uid = %d limit 1", + $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)) { @@ -404,13 +406,15 @@ function service_class_allows($uid,$property,$usage = false) { function service_class_fetch($uid,$property) { - + $a = get_app(); if($uid == local_user()) { - $service_class = $a->user['service_class']; + $service_class = $a->account['account_service_class']; } else { - $r = q("select service_class from user where uid = %d limit 1", - intval($uid) + $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']; @@ -420,6 +424,7 @@ function service_class_fetch($uid,$property) { return false; // everything is allowed $arr = get_config('service_class',$service_class); + if(! is_array($arr) || (! count($arr))) return false; 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, )); diff --git a/view/tpl/channels.tpl b/view/tpl/channels.tpl index 317384661..af6b36b1d 100755 --- a/view/tpl/channels.tpl +++ b/view/tpl/channels.tpl @@ -7,6 +7,11 @@ {{/foreach}} {{/if}} +{{if $channel_usage_message}} +
+{{$channel_usage_message}} +
+{{/if}} {{if $selected}}
{{$msg_selected}}
diff --git a/view/tpl/follow.tpl b/view/tpl/follow.tpl index 350f8d910..b0597e9b6 100755 --- a/view/tpl/follow.tpl +++ b/view/tpl/follow.tpl @@ -4,5 +4,8 @@
+ {{if $abook_usage_message}} +
{{$abook_usage_message}}
+ {{/if}}
diff --git a/view/tpl/photos_upload.tpl b/view/tpl/photos_upload.tpl index 707024cb9..102c4d872 100755 --- a/view/tpl/photos_upload.tpl +++ b/view/tpl/photos_upload.tpl @@ -1,6 +1,6 @@

{{$pagename}}

-
{{$usage}}
+
{{$usage}}
-- cgit v1.2.3 From f4dfb90dbc9b7590d9b8bf84df9ca746f1aa1d6f Mon Sep 17 00:00:00 2001 From: Christian Vogeley Date: Sun, 8 Sep 2013 17:19:09 +0200 Subject: Service class items Items / webpages /attachment message --- include/attach.php | 2 +- mod/item.php | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/include/attach.php b/include/attach.php index 46d406f4b..da08154c6 100644 --- a/include/attach.php +++ b/include/attach.php @@ -339,7 +339,7 @@ function attach_store($channel,$observer_hash,$options = '',$arr = null) { intval($channel_id) ); if(($r) && (($r[0]['total'] + $filesize) > ($limit - $existing_size))) { - $ret['message'] = upgrade_message(true); + $ret['message'] = upgrade_message(true).sprintf(t("You have reached your limit of %1$.0f Mbytes attachment storage."),$limit / 1024000); @unlink($src); return $ret; } diff --git a/mod/item.php b/mod/item.php index 1893a6ef4..695fdb7bb 100644 --- a/mod/item.php +++ b/mod/item.php @@ -71,7 +71,18 @@ function item_post(&$a) { $webpage = ((x($_REQUEST,'webpage')) ? intval($_REQUEST['webpage']) : 0); $pagetitle = ((x($_REQUEST,'pagetitle')) ? escape_tags($_REQUEST['pagetitle']): ''); $buildblock = ((x($_REQUEST,'buildblock')) ? intval($_REQUEST['buildblock']) : 0); + /* + 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)); @@ -1081,3 +1092,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; +} -- cgit v1.2.3