aboutsummaryrefslogtreecommitdiff
path: root/thumbnail.php
diff options
context:
space:
mode:
Diffstat (limited to 'thumbnail.php')
-rw-r--r--thumbnail.php77
1 files changed, 53 insertions, 24 deletions
diff --git a/thumbnail.php b/thumbnail.php
index bd93f8e63..7a4ca8b6c 100644
--- a/thumbnail.php
+++ b/thumbnail.php
@@ -1,35 +1,64 @@
<?php
/**
- * Elgg file thumbnail
- *
- * @package ElggFile
+ * Elgg profile icon cache/bypass
+ *
+ *
+ * @package ElggProfile
*/
-// Get engine
-require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
-
-// Get videolist item GUID
-$guid = (int) get_input('guid', 0);
+// Get DB settings
+require_once(dirname(dirname(dirname(__FILE__))). '/engine/settings.php');
-// Get file thumbnail size
-$size = get_input('size', 'small');
+global $CONFIG;
-$item = get_entity($guid);
-if (!$item || $item->getSubtype() != "videolist_item") {
+// won't be able to serve anything if no joindate or guid
+if (!isset($_GET['joindate']) || !isset($_GET['guid'])) {
+ header("HTTP/1.1 404 Not Found");
exit;
}
-$readfile = new ElggFile();
-$readfile->owner_guid = $item->owner_guid;
-$readfile->setFilename("videolist/{$item->guid}.jpg");
-$contents = $readfile->grabFile();
+$join_date = (int)$_GET['joindate'];
+$owner_guid = (int)$_GET['owner_guid'];
+$guid = (int)$_GET['guid'];
+
+$mysql_dblink = @mysql_connect($CONFIG->dbhost, $CONFIG->dbuser, $CONFIG->dbpass, true);
+if ($mysql_dblink) {
+ if (@mysql_select_db($CONFIG->dbname, $mysql_dblink)) {
+ $result = mysql_query("select name, value from {$CONFIG->dbprefix}datalists where name='dataroot'", $mysql_dblink);
+ if ($result) {
+ $row = mysql_fetch_object($result);
+ while ($row) {
+ if ($row->name == 'dataroot') {
+ $data_root = $row->value;
+ }
+ $row = mysql_fetch_object($result);
+ }
+ }
+
+ @mysql_close($mysql_dblink);
+
+ if (isset($data_root)) {
-// caching images for 10 days
-header("Content-type: image/jpeg");
-header('Expires: ' . date('r',time() + 864000));
-header("Pragma: public", true);
-header("Cache-Control: public", true);
-header("Content-Length: " . strlen($contents));
+ // this depends on ElggDiskFilestore::makeFileMatrix()
+ $user_path = date('Y/m/d/', $join_date) . $owner_guid;
-echo $contents;
-exit;
+ $filename = "$data_root$user_path/videolist/{$guid}.jpg";
+ $size = @filesize($filename);
+ if ($size) {
+ header("Content-type: image/jpeg");
+ header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+6 months")), true);
+ header("Pragma: public");
+ header("Cache-Control: public");
+ header("Content-Length: $size");
+ readfile($filename);
+ exit;
+ }
+ }
+ }
+
+}
+
+// something went wrong so load engine and try to forward to default icon
+require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
+elgg_log("Profile icon direct failed.", "WARNING");
+forward("mod/videolist/graphics/videolist_icon_{$size}.png");