support embedding in application/xhtml+xml pages
[phorkie.git] / src / phorkie / HtmlHelper.php
index ea21ab59cafa6706f37387543cbd4143535569cc..0a8b926888fca70554bbd56f0d3c2da47957aeca 100644 (file)
@@ -3,6 +3,25 @@ namespace phorkie;
 
 class HtmlHelper
 {
+    public function getIconUrl($email, $size = 32)
+    {
+        if ($email == 'anonymous@phorkie'
+            || !$GLOBALS['phorkie']['cfg']['avatars']
+        ) {
+            return 'phorkie/anonymous.png';
+        }
+
+        $s = new \Services_Libravatar();
+        $s->detectHttps();
+        return $s->url(
+            $email,
+            array(
+                'size'    => $size,
+                'default' => Tools::fullUrl('phorkie/anonymous.png')
+            )
+        );
+    }
+
     public function getLanguageOptions(File $file = null)
     {
         $html = '<option value="_auto_">* automatic *</option>';
@@ -23,6 +42,45 @@ class HtmlHelper
         }
         return $html;
     }
+
+    public function getDomain($url)
+    {
+        return parse_url($url, PHP_URL_HOST);
+    }
+
+    public function fullUrl($path = '')
+    {
+        return Tools::fullUrl($path);
+    }
+
+    public function mayWriteLocally()
+    {
+        if ($GLOBALS['phorkie']['auth']['securityLevel'] == 0) {
+            //everyone may do everything
+            return true;
+        }
+
+        $logged_in = false;
+        if (!isset($_SESSION['identity'])) {
+            //not logged in
+        } else if ($GLOBALS['phorkie']['auth']['listedUsersOnly']) {
+            if (in_array($_SESSION['identity'], $GLOBALS['phorkie']['auth']['users'])) {
+                $logged_in = true;
+            }
+        } else {
+            //session identity exists, no special checks required
+            $logged_in = true;
+        }
+
+        return $logged_in;
+    }
+
+    public function getRepositoryEmbedCode(Repository $repo)
+    {
+        return '<script src="' . $repo->getLink('embed', null, true) . '"'
+            . ' id="phork-script-' . $repo->id . '"'
+            . ' type="text/javascript"></script>';
+    }
 }
 
 ?>