aboutsummaryrefslogtreecommitdiff
path: root/plugin.php
blob: 96afab1b5c7120eca7b1caff44956337e8d5f61f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php

class kch42_gravatar extends RatatoeskrPlugin
{
	public function ste_tag_kch42_gravatar($ste, $params, $sub)
	{
		if(!isset($params["comment"]))
			throw new \ste\RuntimeError("ste:kch42_gravatar needs the comment parameter.");

		$ste_comment = $ste->get_var_by_name($params["comment"]);

		if(isset($ste_comment["__obj"]))
			$comment = $ste_comment["__obj"];
		else
			$comment = Comment::by_id($ste_comment["id"]);

		$mail_hash = md5(strtolower(trim($comment->author_mail)));

		$gravatar_args = array("default" => "identicon", "rating" => "g", "size" => "80");
		$query_fragments = array();
		foreach($gravatar_args as $key => &$value)
		{
			if(isset($params[$key]))
				$value = $params[$key];
			$value = htmlspecialchars(urlencode($value));
			$query_fragments[] = "$key=$value";
		}

		$styles = "width: {$gravatar_args["size"]}px; height: {$gravatar_args["size"]}px;" . (isset($params["style"]) ? " " . $params["style"] : "");

		$protocol = ((!empty($_SERVER["HTTPS"])) and ($_SERVER["HTTPS"] == "on")) ? "https" : "http";

		return "<img src=\"$protocol://www.gravatar.com/avatar/$mail_hash?" . implode("&", $query_fragments) . "\" style=\"" . htmlspecialchars($styles) . "\" alt=\"\" />";
	}

	public function init()
	{
		$this->ste->register_tag("kch42_gravatar", array($this, "ste_tag_kch42_gravatar"));
	}
}