X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=banana%2Fbanana.inc.php.in;h=a70aa460b5f5b8c13b985965e42e5c4977f25707;hb=4666b7b489b248ea80482583bdf9d64e5369fd5f;hp=29408522cd1991199418d7ab4c3d22c57be98ffc;hpb=47117a0e64c8cd9cbcc30ae3399b113324c2d283;p=banana.git diff --git a/banana/banana.inc.php.in b/banana/banana.inc.php.in index 2940852..a70aa46 100644 --- a/banana/banana.inc.php.in +++ b/banana/banana.inc.php.in @@ -53,7 +53,7 @@ class Banana * $matches[2] = "http://www.polytechnique.org" * $matches[3] = "]" */ - var $url_regexp = '(["\[])?((?:https?|ftp|news)://(?:&|,?[a-z@0-9.~%$£µ&i#\-+=_/\?])*)(["\]])?'; + var $url_regexp = '(["\[])?((?:https?|ftp|news)://(?:&|,*[a-z@0-9.~%$£µ&i#\-+=_/\?])*)(["\]])?'; /** Boundary for multipart messages @@ -115,15 +115,17 @@ class Banana } if (!$banana->nntp) { - return '

'._b_('Impossible de contacter le serveur').'

'; + $banana->state['page'] = 'error'; + return makeTable('

'._b_('Impossible de contacter le serveur').'

'); } $group = empty($banana->get['group']) ? null : $banana->get['group']; if (!is_null($group) && isset($banana->grp_pattern) && !preg_match('/' . $banana->grp_pattern . '/', $group)) { - return '

' + $banana->state['page'] = 'error'; + return makeTable('

' . $group . _b_(' : ce newsgroup n\'existe pas ou vous n\'avez pas l\'autorisation d\'y accéder') - . '

'; + . '

'); } $artid = empty($banana->get['artid']) ? null : strtolower($banana->get['artid']); $partid = !isset($banana->get['part']) ? -1 : $banana->get['part']; @@ -132,19 +134,23 @@ class Banana if (is_null($group)) { if (isset($banana->get['subscribe'])) { - return $banana->action_listSubs(); + $banana->state['page'] = 'subscribe'; + return makeTable($banana->action_listSubs()); } elseif (isset($_POST['validsubs'])) { $banana->action_saveSubs(); } - return $banana->action_listGroups(); + $banana->state['page'] = 'forums'; + return makeTable($banana->action_listGroups()); } elseif (is_null($artid)) { if (isset($_POST['action']) && $_POST['action'] == 'new') { - return $banana->action_doFup($group, isset($_POST['artid']) ? intval($_POST['artid']) : -1); + return makeTable($banana->action_doFup($group, isset($_POST['artid']) ? intval($_POST['artid']) : -1)); } elseif ($action == 'new') { - return $banana->action_newFup($group); + $banana->state['page'] = 'action'; + return makeTable($banana->action_newFup($group)); } else { - return $banana->action_showThread($group, isset($banana->get['first']) ? intval($banana->get['first']) : 1); + $banana->state['page'] = 'group'; + return makeTable($banana->action_showThread($group, isset($banana->get['first']) ? intval($banana->get['first']) : 1)); } } else { @@ -155,6 +161,7 @@ class Banana } if (!is_null($action)) { + $banana->state['page'] = 'action'; switch ($action) { case 'cancel': $res .= $banana->action_showArticle($group, $artid, $partid); @@ -167,12 +174,12 @@ class Banana . '' . '' . '

'; - return $form.$res; + return makeTable($form . $res); } - return $res; + return makeTable("" . $res); case 'new': - return $banana->action_newFup($group, $artid); + return makeTable($banana->action_newFup($group, $artid)); } } @@ -182,13 +189,11 @@ class Banana $view = true; } $att = $banana->action_getAttachment($group, $artid, $banana->get['pj'], $view); - if ($att != "") { - return $res.$att; - } - return ""; + return makeTable($res . $att); } - return $res . $banana->action_showArticle($group, $artid, $partid); + $banana->state['page'] = 'message'; + return makeTable($banana->action_showArticle($group, $artid, $partid)); } } @@ -205,15 +210,14 @@ class Banana { $this->_newGroup(); - $cuts = displayshortcuts(); - $res = '

'._b_('Les forums de Banana').'

'.$cuts.$this->groups->to_html(); + $res = $this->groups->to_html(); if (count($this->newgroups->overview)) { $res .= '

'._b_('Les forums suivants ont été créés depuis ton dernier passage :').'

'; $res .= $this->newgroups->to_html(); } $this->nntp->quit(); - return $res.$cuts; + return $res; } function action_listSubs() @@ -221,8 +225,7 @@ class Banana $this->_require('groups'); $this->groups = new BananaGroups(BANANA_GROUP_ALL); - $cuts = displayshortcuts(); - $res = '

'._b_('Abonnements').'

'.$cuts.$this->groups->to_html(true).$cuts; + $res = $this->groups->to_html(true); $this->nntp->quit(); return $res; @@ -239,15 +242,13 @@ class Banana } $first = $first - ($first % $this->tmax) + 1; - - $cuts = displayshortcuts($first); - $res = '

'.$group.'

'.$cuts; - $res .= $this->spool->to_html($first, $first+$this->tmax); + $pages = displayPages($first); + $res = $pages . $this->spool->to_html($first, $first+$this->tmax) . $pages; $this->nntp->quit(); - return $res.$cuts; + return $res; } function action_showArticle($group, $id, $part) @@ -261,16 +262,14 @@ class Banana $this->spool->delid($id); } $this->nntp->quit(); - return displayshortcuts().'

'._b_('Impossible d\'accéder au message. Le message a peut-être été annulé').'

'; + return '

'._b_('Impossible d\'accéder au message. Le message a peut-être été annulé').'

'; } - $cuts = displayshortcuts(); - $res = '

'._b_('Message').'

'.$cuts; - $res .= $this->post->to_html($part); + $res = $this->post->to_html($part); $this->nntp->quit(); - return $res.$cuts; + return $res; } function action_getAttachment($group, $id, $pjid, $action) @@ -284,14 +283,14 @@ class Banana $this->spool->delid($id); } $this->nntp->quit(); - return displayshortcuts().'

'._b_('Impossible d\'accéder au message. Le message a peut-être été annulé').'

'; + return '

'._b_('Impossible d\'accéder au message. Le message a peut-être été annulé').'

'; } $this->nntp->quit(); if ($this->post->get_attachment($pjid, $action)) { return ""; } else { - return displayshortcuts().'

'._b_('Impossible d\'accéder à la pièce jointe.').'

'; + return '

'._b_('Impossible d\'accéder à la pièce jointe.').'

'; } } @@ -317,10 +316,14 @@ class Banana . "\n" . "Message canceled with Banana"; if ($this->nntp->post($msg)) { + $ndx = $this->spool->getndx($artid) - 1; + if ($ndx > 50) { + $ndx = 0; + } $this->spool->delid($id); $this->nntp->quit(); redirectInBanana(Array('group' => $group, - 'first' => $id)); + 'first' => $ndx)); } else { return '

'._b_('Impossible d\'annuler le message').'

'; } @@ -331,54 +334,75 @@ class Banana $subject = $body = ''; $target = $group; - if ($id > 0) { + if (@$_POST['action'] == 'new') { + $subject = $_POST['subject']; + $body = $_POST['body']; + $target = $_POST['newsgroups']; + $followup = $_POST['followup']; + $this->state['page'] = 'action'; + $this->state['group'] = $group; + $this->state['action'] = 'new'; + if ($id != -1) { + $this->state['artid'] = $id; + } + } elseif ($id > 0) { $this->nntp->group($group); if ($this->_newPost($id)) { - $subject = preg_replace("/^re\s*:\s*/i", '', 'Re: '.$this->post->headers['subject']); - $body = utf8_encode($this->post->name." "._b_("a écrit"))." :\n".wrap($this->post->get_body(), "> "); - $target = isset($this->post->headers['followup-to']) ? $this->post->headers['followup-to'] : $this->post->headers['newsgroups']; + $subject = 'Re: ' . preg_replace("/^re\s*:\s*/i", '', $this->post->headers['subject']); + $body = to_entities(utf8_encode($this->post->name." "._b_("a écrit"))." :\n" + . wrap($this->post->get_body(), "> ") + . ($this->profile['sig'] ? "\n\n-- \n". $this->profile['sig'] : '')); + $target = isset($this->post->headers['followup-to']) ? + $this->post->headers['followup-to'] : $this->post->headers['newsgroups']; + $followup = null; } + } else { + $targe = $group; + $subject = $followup = null; + $body = $this->profile['sig'] ? "\n\n-- \n". $this->profile['sig'] : ''; } $this->nntp->quit(); - $cuts = displayshortcuts(); - $html = '

'._b_('Nouveau message').'

'.$cuts; - $html .= '
'; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; + . '" method="post" accept-charset="utf-8">' + . '
'._b_('En-têtes').'
'._b_('Nom').''.htmlentities($this->profile['name']).'
'._b_('Sujet').'
'._b_('Forums').'
'._b_('Suivi à').'
'._b_('Organisation').''.$this->profile['org'].'
'._b_('Corps').'
' + . '' + . '' + . '' + . '' + . '' + . '' + . '' + . '' + . '' + . '' + . '' + . '' + . ''; if ($this->can_attach) { - $html .= ''; - $html .= ''; + $html .= '' + . ''; } $html .= ''; - $html .= '
' . _b_('En-têtes') . '
' . _b_('Nom') . '' . htmlentities($this->profile['name']) . '
' . _b_('Sujet') . '
' . _b_('Forums') . '
' . _b_('Suivi à') . '
' . _b_('Organisation') . '' . $this->profile['org'] . '
' . _b_('Corps') . '
'._b_('Pièce jointe').'
'; - $html .= '
' . _b_('Pièce jointe') . '
' + . '' + . '
'; - if ($id > 0) { - $html .= ''; + if ($id != -1) { + $html .= ''; } - $html .= ''; - $html .= '
'; + $html .= '' + . '' + . ''; - return $html.$cuts; + return $html; } function action_doFup($group, $artid = -1) { - if ( ! ( is_utf8($_POST['subject']) && is_utf8($_POST['name']) - && is_utf8($_POST['org']) && is_utf8($_POST['body']) ) - ) { - foreach(array('subject', 'name', 'org', 'body') as $key) { + if ( ! (is_utf8($_POST['subject']) && is_utf8($_POST['body']))) { + foreach(Array('subject', 'body') as $key) { $_POST[$key] = utf8_encode($_POST[$key]); } } @@ -455,12 +479,13 @@ class Banana if ($this->nntp->post($msg)) { $dir = Array('group' => $group); if ($artid != -1) { - $dir['first'] = $artid; + $dir['artid'] = $artid; } redirectInBanana($dir); } else { - return '

' . _b_('Impossible de poster le message') . '

' - . $this->action_showThread($group, $artid); + return '

' . _b_('Impossible de poster le message. Le serveur a retourné l\'erreur :') . '

' + . '
' . utf8_encode($this->nntp->lasterrortext) .'
' + . $this->action_newFup($group, $artid); } }