123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- /**
- * Show the thumbnail
- */
- // won"t be able to serve anything if no guid
- if (!isset($_GET["guid"]) || !isset($_GET["group_guid"])) {
- header("HTTP/1.1 404 Not Found");
- exit;
- }
- $icontime = (int) $_GET["icontime"];
- $size = strtolower($_GET["size"]);
- $guid = (int) $_GET["guid"];
- $group_guid = (int) $_GET["group_guid"];
- // If is the same ETag, content didn"t changed.
- $etag = md5($icontime . $size . $group_guid . $guid);
- if (isset($_SERVER["HTTP_IF_NONE_MATCH"])) {
- list ($etag_header) = explode("-", trim($_SERVER["HTTP_IF_NONE_MATCH"], "\""));
- if ($etag_header === $etag) {
- header("HTTP/1.1 304 Not Modified");
- exit;
- }
- }
- $base_dir = dirname(dirname(dirname(dirname(dirname(__FILE__)))));
- // Get DB settings
- require_once $base_dir . '/engine/settings.php';
- require_once $base_dir . '/vendor/autoload.php';
- global $CONFIG;
- if (isset($CONFIG->dataroot)) {
- $data_root = $CONFIG->dataroot;
- }
- if (!isset($data_root)) {
- $db_config = new \Elgg\Database\Config($CONFIG);
- if ($db_config->isDatabaseSplit()) {
- $read_settings = $db_config->getConnectionConfig(\Elgg\Database\Config::READ);
- } else {
- $read_settings = $db_config->getConnectionConfig(\Elgg\Database\Config::READ_WRITE);
- }
-
- $mysql_dblink = @mysql_connect($read_settings["host"], $read_settings["user"], $read_settings["password"], true);
- if ($mysql_dblink) {
- if (@mysql_select_db($read_settings["database"], $mysql_dblink)) {
- $q = "SELECT name, value FROM {$db_config->getTablePrefix()}datalists WHERE name = 'dataroot'";
-
- $result = mysql_query($q, $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)) {
-
- $locator = new \Elgg\EntityDirLocator($guid);
- $entity_path = $data_root . $locator->getPath();
-
- $filename = $entity_path . "groups/{$group_guid}{$size}.jpg";
- $filecontents = @file_get_contents($filename);
- // try fallback size
- if (!$filecontents && $size !== "medium") {
- $filename = $entity_path . "groups/{$group_guid}medium.jpg";
- $filecontents = @file_get_contents($filename);
- }
-
- if ($filecontents) {
- $filesize = strlen($filecontents);
-
- 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: $filesize");
- header("ETag: \"$etag\"");
-
- echo $filecontents;
- exit;
- }
- }
- // something went wrong so 404
- header("HTTP/1.1 404 Not Found");
- exit;
|