]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
added disk quota for users and groups
authorCash Costello <cash.costello@gmail.com>
Sat, 13 Jun 2009 23:53:17 +0000 (23:53 +0000)
committerCash Costello <cash.costello@gmail.com>
Sat, 13 Jun 2009 23:53:17 +0000 (23:53 +0000)
actions/delete.php
actions/upload.php
languages/en.php
views/default/tidypics/forms/admin.php

index f6b677c550b4ba4471978127dc7fd65967f2bafb..3deb69c5bfa8d5f18148dd746ca35c6ded04dc17 100644 (file)
                register_error(elgg_echo("file:deletefailed"));\r
                forward($forward_url);\r
        }\r
-       \r
+\r
+       $owner_guid = 0; // group or user\r
        if ($subtype == 'image') { //deleting an image\r
+               $album = get_entity($entity->container_guid);\r
+               $owner_guid = $album->container_guid;\r
                $forward_url = $container->getURL(); //forward back to album after deleting pictures\r
                $images = array($entity);\r
                // plugins can register to be told when a Tidypics image has been deleted\r
                trigger_elgg_event('upload', 'tp_album', $entity);\r
        } else { //deleting an album\r
+               $owner_guid = $entity->container_guid;\r
                $forward_url = 'pg/photos/owned/' . $container->username;\r
                //get all the images from this album as long as less than 999 images\r
                $images = get_entities("object", "image", $guid, '', 999); \r
                trigger_elgg_event('upload', 'tp_album', $entity);\r
        }\r
 \r
+       // make sure we decrease the repo size for the size quota\r
+       $image_repo_size_md = get_metadata_byname($owner_guid, "image_repo_size");\r
+       $image_repo_size = (int)$image_repo_size_md->value;\r
+\r
        //loop through all images and delete them\r
        foreach($images as $im) {\r
                $thumbnail = $im->thumbnail;\r
@@ -72,6 +80,8 @@
                        $delfile = new ElggFile($im->getGUID());\r
                        $delfile->owner_guid = $im->getOwner();\r
                        //$delfile->setFilename($im->originalfilename);\r
+                       $image_repo_size -= $delfile->size();\r
+                       \r
                        if (!$delfile->delete()) {\r
                                if ($subtype=='image') register_error(elgg_echo("file:deletefailed")); //unable to delete object\r
                        } else {\r
                }\r
        } //end of delete album\r
 \r
+       create_metadata($owner_guid, "image_repo_size", $image_repo_size, 'integer', $owner_guid);\r
 \r
        forward($forward_url);\r
 \r
index 5dacd5feca3954ffb1ad4a246877d9ddd2c42eeb..e7c78c17895c56a0cef896809ea5ff6d7625bb62 100644 (file)
        if (!$container_guid)\r
                $container_guid == $_SESSION['user']->getGUID();\r
 \r
+       $album = get_entity($container_guid);\r
+\r
        $maxfilesize = get_plugin_setting('maxfilesize','tidypics'); \r
        if (!$maxfilesize)\r
                $maxfilesize = 5; // default to 5 MB if not set \r
        $maxfilesize = 1024 * 1024 * $maxfilesize; // convert to bytes from MBs\r
 \r
+       $quota = get_plugin_setting('quota','tidypics');\r
+       $quota = 1024 * 1024 * $quota;\r
+       $image_repo_size_md = get_metadata_byname($album->container_guid, "image_repo_size");\r
+       $image_repo_size = (int)$image_repo_size_md->value;\r
+\r
        $image_lib = get_plugin_setting('image_lib', 'tidypics');\r
        if (!$image_lib)\r
                $image_lib = 'GD';\r
                        continue;\r
                }\r
 \r
+               // check quota\r
+               if ($quota) {\r
+                       if ($image_repo_size + $sent_file['size'] > $quota) {\r
+                               array_push($not_uploaded, $sent_file['name']);\r
+                               array_push($error_msgs, elgg_echo('tidypics:exceed_quota'));\r
+                               continue;\r
+                       }\r
+               }\r
+               \r
                // make sure file does not exceed memory limit\r
                if ($sent_file['size'] > $maxfilesize) {\r
                        array_push($not_uploaded, $sent_file['name']);\r
                td_get_exif($file);\r
                array_push($uploaded_images, $file->guid);\r
 \r
+               // update user/group size for checking quota\r
+               $image_repo_size += $sent_file['size'];\r
+\r
                if($river_view == "all") {\r
                        add_to_river('river/object/image/create', 'create', $file->getObjectOwnerGUID(), $file->getGUID());\r
                }\r
        }\r
 \r
        // successful upload so check if this is a new album and throw river event if so\r
-       $album = get_entity($container_guid);\r
        if ($album->new_album == TP_NEW_ALBUM) {\r
                if (function_exists('add_to_river'))\r
                        add_to_river('river/object/album/create', 'create', $album->owner_guid, $album->guid);\r
                        add_to_river('river/object/image/create', 'create', $file_for_river->getObjectOwnerGUID(), $file_for_river->getGUID());\r
                }\r
        }\r
-                       \r
+       \r
+       // update image repo size\r
+       create_metadata($album->container_guid, "image_repo_size", $image_repo_size, 'integer', $album->container_guid);\r
+       \r
        // plugins can register to be told when a Tidypics album has had images added\r
        trigger_elgg_event('upload', 'tp_album', $album);\r
        \r
index bbeb9a634758fce86359751504ef2e9ad1d321d3..c5f4dd99f6b0c65238450323902b38b0348438ce 100644 (file)
@@ -50,6 +50,7 @@
                        'tidypics:settings:exif' => "Show EXIF data",\r
                        'tidypics:settings:grp_perm_override' => "Allow group members full access to group albums",\r
                        'tidypics:settings:maxfilesize' => "Maximum image size in megabytes (MB):",\r
+                       'tidypics:settings:quota' => "User/Group Quota (MB) - 0 equals no quota",\r
                        'tidypics:settings:watermark' => "Enter text to appear in the watermark - ImageMagick Cmdline must be selected for the image library",\r
                        'tidypics:settings:im_path' => "Enter the path to your ImageMagick commands",\r
                        'tidypics:settings:river_view' => "How many entries in river for each batch of uploaded images",\r
                        'image:deletefailed' => "Your image could not be deleted at this time.",\r
                        'image:downloadfailed' => "Sorry; this image is not available at this time.",\r
                        'tidypics:nosettings' => "Admin of this site has not set photo album settings.",\r
-                       \r
+                       'tidypics:exceed_quota' => "You have exceeded the quota set by the administrator",\r
                        'images:notedited' => "Not all images were successfully updated",\r
                 \r
                        'album:none' => "No albums have been created yet.",\r
index c5d71409c61e7d4d1626a1648fd854b7aa9802c0..d2d676290d822250161afc675aeca9877cd87a07 100644 (file)
        $form_body .= "<p>" . elgg_echo('tidypics:settings:maxfilesize') . "<br />";\r
        $form_body .= elgg_view("input/text",array('internalname' => 'params[maxfilesize]', 'value' => $maxfilesize)) . "</p>";\r
 \r
+       // Quota Size\r
+       $quota = $plugin->quota;\r
+       if (!$quota) $quota = 0;\r
+       $form_body .= "<p>" . elgg_echo('tidypics:settings:quota') . "<br />";\r
+       $form_body .= elgg_view("input/text",array('internalname' => 'params[quota]', 'value' => $quota)) . "</p>";\r
+\r
        // River options\r
        $river_view = $plugin->river_view;\r
        if (!$river_view) $river_view = '1';\r