aboutsummaryrefslogtreecommitdiff
path: root/mod/groups/icon.php
diff options
context:
space:
mode:
Diffstat (limited to 'mod/groups/icon.php')
-rw-r--r--mod/groups/icon.php54
1 files changed, 54 insertions, 0 deletions
diff --git a/mod/groups/icon.php b/mod/groups/icon.php
new file mode 100644
index 000000000..ebdc1eb6d
--- /dev/null
+++ b/mod/groups/icon.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Icon display
+ *
+ * @package ElggGroups
+ */
+
+require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+
+$group_guid = get_input('group_guid');
+
+/* @var ElggGroup $group */
+$group = get_entity($group_guid);
+if (!($group instanceof ElggGroup)) {
+ header("HTTP/1.1 404 Not Found");
+ exit;
+}
+
+// If is the same ETag, content didn't changed.
+$etag = $group->icontime . $group_guid;
+if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == "\"$etag\"") {
+ header("HTTP/1.1 304 Not Modified");
+ exit;
+}
+
+$size = strtolower(get_input('size'));
+if (!in_array($size, array('large', 'medium', 'small', 'tiny', 'master', 'topbar')))
+ $size = "medium";
+
+$success = false;
+
+$filehandler = new ElggFile();
+$filehandler->owner_guid = $group->owner_guid;
+$filehandler->setFilename("groups/" . $group->guid . $size . ".jpg");
+
+$success = false;
+if ($filehandler->open("read")) {
+ if ($contents = $filehandler->read($filehandler->size())) {
+ $success = true;
+ }
+}
+
+if (!$success) {
+ $location = elgg_get_plugins_path() . "groups/graphics/default{$size}.gif";
+ $contents = @file_get_contents($location);
+}
+
+header("Content-type: image/jpeg");
+header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+10 days")), true);
+header("Pragma: public");
+header("Cache-Control: public");
+header("Content-Length: " . strlen($contents));
+header("ETag: \"$etag\"");
+echo $contents;