diff --git a/modules/gravatar/application/controllers/IndexController.php b/modules/gravatar/application/controllers/IndexController.php new file mode 100644 index 000000000..a04853846 --- /dev/null +++ b/modules/gravatar/application/controllers/IndexController.php @@ -0,0 +1,49 @@ +_helper->viewRenderer->setNoRender(true); + $this->_helper->layout()->disableLayout(); + } + + public function indexAction() + { + $cache = FileCache::instance(); + $filename = md5(strtolower(trim($this->_request->getParam('email')))); + $cacheFile = 'gravatar-' . $filename; + header('Cache-Control: public'); + header('Pragma: cache'); + if ($etag = $cache->etagMatchesCachedFile($cacheFile)) { + header("HTTP/1.1 304 Not Modified"); + return; + } + + header('Content-Type: image/jpg'); + if ($cache->has($cacheFile)) { + header('ETag: "' . $cache->etagForCachedFile($cacheFile) . '"'); + $cache->send($cacheFile); + return; + } + $img = file_get_contents('http://www.gravatar.com/avatar/' . $filename . '?s=120&d=mm'); + $cache->store($cacheFile, $img); + header('ETag: "' . $cache->etagForCachedFile($cacheFile) . '"'); + + return $img; + } +} diff --git a/modules/gravatar/library/Gravatar/Gravatar.php b/modules/gravatar/library/Gravatar/Gravatar.php new file mode 100644 index 000000000..6e597340f --- /dev/null +++ b/modules/gravatar/library/Gravatar/Gravatar.php @@ -0,0 +1,22 @@ +getView()->baseUrl(); + + return $baseUrl . '/gravatar/?email=' . $email; + } +} diff --git a/modules/gravatar/module.info b/modules/gravatar/module.info new file mode 100644 index 000000000..9ddac8bda --- /dev/null +++ b/modules/gravatar/module.info @@ -0,0 +1,4 @@ +Module: gravatar +Version: 2.0.0-rc1 +Description: Gravatar module + User images provided by Gravatar. diff --git a/modules/gravatar/run.php b/modules/gravatar/run.php new file mode 100644 index 000000000..fadd4d72a --- /dev/null +++ b/modules/gravatar/run.php @@ -0,0 +1,3 @@ +registerHook('gravatar', '\\Icinga\\Module\\Gravatar\\Gravatar');