Move 'isvalid_email' into platal.inc.php
[platal.git] / include / banana / hooks.inc.php
index 1ce979d..b74933c 100644 (file)
@@ -28,7 +28,7 @@ function hook_formatDisplayHeader($_header, $_text, $in_spool = false)
         $addresses = preg_split("/ *, */", $_text);
         $text = '';
         foreach ($addresses as $address) {
-            $address = BananaMessage::formatFrom(trim($address));
+            $address = BananaMessage::formatFrom(trim($address), Banana::$message->getHeaderValue('subject'));
             if ($_header == 'from') {
                 if ($id = Banana::$message->getHeaderValue('x-org-id')) {
                     return $address . ' <a href="profile/' . $id . '" class="popup2" title="' . $id . '">'
@@ -69,6 +69,16 @@ function hook_formatDisplayHeader($_header, $_text, $in_spool = false)
     return null;
 }
 
+function hook_platalRSS($group)
+{
+    if ($group) {
+        $group .= '/';
+    } else {
+        $group = '';
+    }
+    return '/rss/' . $group . S::v('forlife') . '/' . S::v('core_rss_hash') . '/rss.xml';
+}
+
 function hook_platalMessageLink($params)
 {
     $base = '';
@@ -103,7 +113,8 @@ function hook_platalMessageLink($params)
 
 function hook_makeImg($img, $alt, $height, $width)
 {
-    $url = 'images/banana/' . $img;
+    global $globals;
+    $url = $globals->baseurl . '/images/banana/' . $img;
 
     if (!is_null($width)) {
         $width = ' width="' . $width . '"';
@@ -115,5 +126,107 @@ function hook_makeImg($img, $alt, $height, $width)
     return '<img src="' . $url . '"' . $height . $width . ' alt="' . $alt . '" />';
 }
 
+if (!function_exists('hook_makeLink')) {
+function hook_makeLink($params)
+{
+    global $globals, $platal;
+    $xnet = !empty($GLOBALS['IS_XNET_SITE']);
+    $feed = (@$params['action'] == 'rss' || @$params['action'] == 'rss2' || @$params['action'] == 'atom');
+    if (Banana::$protocole->name() == 'NNTP' && !$xnet) {
+        $base = $globals->baseurl . '/banana';
+        if ($feed) {
+            return $base . hook_platalRSS(@$params['group']);
+        }
+        if (isset($params['page'])) {
+            return $base . '/' . $params['page'];
+        }
+        if (@$params['action'] == 'subscribe') {
+            return $base . '/subscription';
+        }
+    
+        if (!isset($params['group'])) {
+            return $base;
+        }
+        $base .= '/' . $params['group'];
+    } else if (Banana::$protocole->name() == 'NNTP' && $xnet) {
+        if ($feed) {
+            return 'http://www.polytechnique.org/banana' . hook_platalRSS(@$params['group']);
+        }   
+        $base = $globals->baseurl . '/' . $platal->ns . 'forum';        
+    } else if (Banana::$protocole->name() == 'MLArchives') {
+        $base = $globals->baseurl . '/' . $platal->ns . 'lists/archives';
+        if ($feed) {
+            return $base . hook_platalRSS(MLBanana::$listname);
+        }
+        $base .= '/' . MLBanana::$listname;
+    }
+    $base = $base . hook_platalMessageLink($params);
+    if (@$params['action'] == 'showext') {
+        $base .= '?action=showext';
+    }
+    return $base;
+}
+}
+
+function hook_makeJs($src)
+{
+    global $page;
+    $page->addJsLink("$src.js");
+    return ' ';
+}
+
+function get_banana_params(array &$get, $group = null, $action = null, $artid = null)
+{
+    if (!is_null($group)) {
+        $get['group'] = $group;
+    }
+    if (!is_null($action)) {
+        if ($action == 'new') {
+            $get['action'] = 'new'; 
+        } elseif (!is_null($artid)) {
+            $get['artid'] = $artid; 
+            if ($action == 'reply') {
+                $get['action'] = 'new';
+            } elseif ($action == 'cancel') {
+                $get['action'] = $action;
+            } elseif ($action == 'from') {
+                $get['first'] = $artid;
+                unset($get['artid']);
+            } elseif ($action == 'read') {
+                $get['part']  = @$_GET['part'];
+            } elseif ($action == 'source') {
+                $get['part'] = 'source';
+            } elseif ($action == 'xface') {
+                $get['part']  = 'xface';
+            } elseif ($action) {
+                $get['part'] = str_replace('.', '/', $action);
+            }
+            if (Get::v('action') == 'showext') { 
+                $get['action'] = 'showext'; 
+            }   
+        }
+    }
+}
+
+function run_banana(&$page, $class, array $args)
+{
+    $banana = new $class(S::v('forlife'), $args);
+    $page->assign('banana', $banana->run());
+    $page->addCssInline($banana->css());
+    $page->addCssLink('banana.css');
+    $rss = $banana->feed();
+    if ($rss) {
+        if (Banana::$group) {
+            $page->setRssLink('Banana :: ' . Banana::$group, $rss);
+        } else {
+            $page->setRssLink('Banana :: Abonnements', $rss);
+        }
+    }
+    $bt = $banana->backtrace();
+    if ($bt) {
+        new PlBacktrace(Banana::$protocole->name(), $banana->backtrace(), 'response', 'time');
+    }    
+}
+
 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
 ?>