From 35a098e0dc7940974132d8d65bbc4418d92fb204 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 25 Jun 2012 01:37:44 -0700 Subject: [PATCH] service limits for photo uploads --- include/plugin.php | 25 +++++++++++++++++++++++ mod/photos.php | 33 ++++++++++++++++++++++++++++++- view/photos_upload.tpl | 3 +++ view/theme/duepuntozero/style.css | 3 +++ 4 files changed, 63 insertions(+), 1 deletion(-) diff --git a/include/plugin.php b/include/plugin.php index 89715485e..e8fec4cbe 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -355,6 +355,31 @@ function service_class_allows($uid,$property,$usage = 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('' . t('Click here to upgrade.') . '', $l); diff --git a/mod/photos.php b/mod/photos.php index 31046565d..ea4d7f81f 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -711,6 +711,24 @@ function photos_post(&$a) { logger('mod/photos.php: photos_post(): loading the contents of ' . $src , LOGGER_DEBUG); $imagedata = @file_get_contents($src); + + + + $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ", + intval($a->data['user']['uid']) + ); + + $limit = service_class_fetch($a->data['user']['uid'],'photo_upload_limit'); + + if(($limit !== false) && (($r[0]['total'] + strlen($imagedata)) > $limit)) { + notice( upgrade_message() . EOL ); + @unlink($src); + $foo = 0; + call_hooks('photo_post_end',$foo); + killme(); + } + + $ph = new Photo($imagedata, $type); if(! $ph->is_valid()) { @@ -968,12 +986,25 @@ function photos_content(&$a) { '; - + $r = q("select sum(octet_length(data)) as total from photo where uid = %d and scale = 0 and album != 'Contact Photos' ", + intval($a->data['user']['uid']) + ); + + + $limit = service_class_fetch($a->data['user']['uid'],'photo_upload_limit'); + if($limit !== false) { + $usage_message = sprintf( t("You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."), $r[0]['total'] / 1024000, $limit / 1024000 ); + } + else { + $usage_message = sprintf( t('You have used %1$.2f Mbytes of photo storage.'), $r[0]['total'] / 1024000 ); + } + $tpl = get_markup_template('photos_upload.tpl'); $o .= replace_macros($tpl,array( '$pagename' => t('Upload Photos'), '$sessid' => session_id(), + '$usage' => $usage_message, '$nickname' => $a->data['user']['nickname'], '$newalbum' => t('New album name: '), '$existalbumtext' => t('or existing album name: '), diff --git a/view/photos_upload.tpl b/view/photos_upload.tpl index 318a92427..706b3398d 100644 --- a/view/photos_upload.tpl +++ b/view/photos_upload.tpl @@ -1,4 +1,7 @@

$pagename

+ +
$usage
+
diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index de366210b..ea3a2da9c 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -1644,6 +1644,9 @@ input#dfrn-url { display:block!important; } +#photos-usage-message { + margin-bottom: 15px; +} #acl-wrapper {