pending commit, finished during MQ/S download ...
[platal.git] / include / banana.inc.php
index 84d50f3..0529996 100644 (file)
 
 require_once('banana/banana.inc.php');
 
-function hook_formatDisplayHeader($_header,$_text) {
-    global $globals;
-    if ($_header == 'x-org-id') {
-        return $_text . ' [<a href="' . $globals->baseurl . '/profile/' 
-             . $_text . '" class="popup2">fiche</a>]';
+function hook_formatDisplayHeader($_header, $_text) {
+    global $globals, $banana;
+    if ($_header == 'from') {
+        $id = $banana->post->headers['x-org-id'];
+        $_text = formatFrom($_text);
+        return $_text . ' <a href="' . $globals->baseurl . '/profile/' 
+             . $id . '" class="popup2" title="' . $id . '">'
+             . '<img src="' . $globals->baseurl . '/images/loupe.gif" alt="fiche" title="fiche" />'
+             . '</a>';
     }
 }
 
-function hook_headerTranslate($hdr) {
-    if ($hdr == 'x-org-id') {
-        return 'Identité';
-    }
+function hook_checkcancel($_headers) {
+    return ($_headers['x-org-id'] == S::v('forlife') or S::has_perms());
 }
 
-function hook_checkcancel($_headers) {
-    return ($_headers['x-org-id'] == Session::get('forlife') or has_perms());
+function hook_shortcuts()
+{
+    global $globals;
+    return Array('profile' => Array('<a href="' . $globals->baseurl . '/banana/profile">Préférences</a>',
+                                    'Préférences'));
 }
 
 function hook_makeLink($params) {
@@ -46,7 +51,7 @@ function hook_makeLink($params) {
         return $base . '/subscription';
     }
     if (isset($params['xface'])) {
-        return $base . '/xface/' . $params['xface'];
+        return $base . '/xface/' . strtr(base64_encode($params['xface']), '+/', '.:');
     }
 
     if (!isset($params['group'])) {
@@ -77,7 +82,7 @@ function hook_makeLink($params) {
 function hook_makeImg($img, $alt, $height, $width)
 {
     global $globals;
-    $url = $globals->baseurl . '/images/banana/' . $img . '.gif';
+    $url = $globals->baseurl . '/images/banana/' . $img;
 
     if (!is_null($width)) {
         $width = ' width="' . $width . '"';
@@ -89,6 +94,20 @@ function hook_makeImg($img, $alt, $height, $width)
     return '<img src="' . $url . '"' . $height . $width . ' alt="' . $alt . '" />';
 }
 
+function hook_getSubject(&$subject)
+{
+    if (preg_match('!(.*\S)\s*\[=> ([^\]\s]+)\]!', $subject, $matches)) {
+        $subject = $matches[1];
+        global $banana;
+        if ($banana->state['group'] == $matches[2]) {
+            return ' [=> ' . $matches[2] . ']';
+        } else {
+            return ' [=> ' . makeHREF(Array('group' => $matches[2]), $matches[2]) . ']';
+        }
+    }
+    return null;
+}
+
 class PlatalBanana extends Banana
 {
     var $profile    = Array( 'name' => '', 'sig'  => '', 'org'  => 'Utilisateur de Polytechnique.org',
@@ -99,16 +118,16 @@ class PlatalBanana extends Banana
     {
         global $globals;
     
-        $uid = Session::getInt('uid');
-        $req = $globals->xdb->query(
+        $uid = S::v('uid');
+        $req = XDB::query(
                 "SELECT  nom, mail, sig, FIND_IN_SET('threads',flags), FIND_IN_SET('automaj',flags)
                    FROM  {$globals->banana->table_prefix}profils
                   WHERE  uid={?}", $uid);
 
         if (!(list($nom,$mail,$sig,$disp,$maj) = $req->fetchOneRow())) {
-            $nom  = Session::get('prenom')." ".Session::get('nom');
-            $mail = Session::get('forlife')."@polytechnique.org";
-            $sig  = $nom." (".Session::getInt('promo').")";
+            $nom  = S::v('prenom')." ".S::v('nom');
+            $mail = S::v('forlife')."@polytechnique.org";
+            $sig  = $nom." (".S::v('promo').")";
             $disp = 0;
             $maj  = 1;
         }
@@ -116,23 +135,23 @@ class PlatalBanana extends Banana
         $this->profile['sig']       = $sig;
         $this->profile['display']   = $disp;
         $this->profile['autoup']    = $maj;
-        $this->profile['lastnews']  = Session::get('banana_last');
+        $this->profile['lastnews']  = S::v('banana_last');
         
         if ($maj) {
-            $globals->xdb->execute("UPDATE auth_user_quick SET banana_last={?} WHERE user_id={?}", gmdate("YmdHis"), $uid);
+            XDB::execute("UPDATE auth_user_quick SET banana_last={?} WHERE user_id={?}", gmdate("YmdHis"), $uid);
         }
 
-        $req = $globals->xdb->query("
+        $req = XDB::query("
                  SELECT  nom
                    FROM  {$globals->banana->table_prefix}abos
               LEFT JOIN  {$globals->banana->table_prefix}list ON list.fid=abos.fid
                   WHERE  uid={?}", $uid);
         $this->profile['subscribe'] = $req->fetchColumn();
 
-        array_splice($this->show_hdr,  count($this->show_hdr)  - 2, 0, 'x-org-id');
+        array_splice($this->show_hdr,  count($this->show_hdr)  - 2, 0);
         array_splice($this->parse_hdr, count($this->parse_hdr) - 2, 0, 'x-org-id');
 
-        $this->host = 'news://web_'.Session::get('forlife')
+        $this->host = 'news://web_'.S::v('forlife')
             .":{$globals->banana->password}@{$globals->banana->server}:{$globals->banana->port}/";
 
         parent::Banana();
@@ -140,11 +159,11 @@ class PlatalBanana extends Banana
 
     function run($params = null)
     {
-        global $banana, $globals;
+        global $banana;
 
         if (Get::get('banana') == 'updateall'
                 || (!is_null($params) && isset($params['banana']) && $params['banana'] == 'updateall')) {
-            $globals->xdb->execute('UPDATE auth_user_quick SET banana_last={?} WHERE user_id={?}', gmdate('YmdHis'), Session::getInt('uid'));
+            XDB::execute('UPDATE auth_user_quick SET banana_last={?} WHERE user_id={?}', gmdate('YmdHis'), S::v('uid'));
             $_SESSION['banana_last'] = time();
         }
         return Banana::run('PlatalBanana', $params);
@@ -153,15 +172,15 @@ class PlatalBanana extends Banana
     function action_saveSubs()
     {
         global $globals;
-        $uid = Session::getInt('uid');
+        $uid = S::v('uid');
 
         $this->profile['subscribe'] = Array();
-        $globals->xdb->execute("DELETE FROM {$globals->banana->table_prefix}abos WHERE uid={?}", $uid);
+        XDB::execute("DELETE FROM {$globals->banana->table_prefix}abos WHERE uid={?}", $uid);
         if (!count($_POST['subscribe'])) {
             return true;
         }
         
-        $req  = $globals->xdb->iterRow("SELECT fid,nom FROM {$globals->banana->table_prefix}list");
+        $req  = XDB::iterRow("SELECT fid,nom FROM {$globals->banana->table_prefix}list");
         $fids = array();
         while (list($fid,$fnom) = $req->next()) {
             $fids[$fnom] = $fid;
@@ -169,12 +188,12 @@ class PlatalBanana extends Banana
 
         $diff = array_diff($_POST['subscribe'], array_keys($fids));
         foreach ($diff as $g) {
-            $globals->xdb->execute("INSERT INTO {$globals->banana->table_prefix}list (nom) VALUES ({?})", $g);
+            XDB::execute("INSERT INTO {$globals->banana->table_prefix}list (nom) VALUES ({?})", $g);
             $fids[$g] = mysql_insert_id();
         }
 
         foreach ($_POST['subscribe'] as $g) {
-            $globals->xdb->execute("INSERT INTO {$globals->banana->table_prefix}abos (fid,uid) VALUES ({?},{?})", $fids[$g], $uid);
+            XDB::execute("INSERT INTO {$globals->banana->table_prefix}abos (fid,uid) VALUES ({?},{?})", $fids[$g], $uid);
             $this->profile['subscribe'][] = $g;
         }
     }