From: Pierre Habouzit (MadCoder Date: Fri, 7 Jan 2005 21:35:00 +0000 (+0000) Subject: ahem X-Git-Tag: 1.8~315 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=abd0915aaba96d3871dbb2fcf2cdfb350950cde1;p=banana.git ahem git-archimport-id: opensource@polytechnique.org--2005/banana--mainline--1.0--patch-9 --- diff --git a/banana/.arch-inventory b/banana/.arch-inventory index 03a4700..66526ae 100644 --- a/banana/.arch-inventory +++ b/banana/.arch-inventory @@ -1 +1 @@ -precious ^banana.inc.php +precious ^banana.inc.php$ diff --git a/banana/banana.inc.php.in b/banana/banana.inc.php.in new file mode 100644 index 0000000..1aa3772 --- /dev/null +++ b/banana/banana.inc.php.in @@ -0,0 +1,311 @@ + 'Anonymous ', 'sig' => '', 'org' => '', + 'customhdr' =>'', 'display' => 0, 'lastnews' => 0, 'locale' => 'fr_FR', 'subscribe' => array()); + + var $state = Array('group' => null, 'artid' => null); + var $nntp; + var $groups; + var $newgroups; + var $post; + var $spool; + + function Banana() + { + $this->_require('NetNNTP'); + setlocale(LC_ALL, $this->profile['locale']); + $this->nntp = new nntp($this->host); + } + + function run($class = 'Banana') + { + global $banana; + Banana::_require('misc'); + $banana = new $class(); + + if (!$banana->nntp) { + return '

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

'; + } + + $group = empty($_GET['group']) ? null : strtolower($_GET['group']); + $artid = empty($_GET['artid']) ? null : strtolower($_GET['artid']); + $banana->state = Array ('group' => $group, 'artid' => $artid); + + if (is_null($group)) { + + if (isset($_GET['subscribe'])) { + return $banana->action_listSubs(); + } elseif (isset($_POST['subscribe'])) { + $banana->action_saveSubs(); + } + return $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); + } elseif (isset($_GET['action']) && $_GET['action'] == 'new') { + return $banana->action_newFup($group); + } else { + return $banana->action_showThread($group, isset($_GET['first']) ? intval($_GET['first']) : 1); + } + + } else { + + if (isset($_POST['action']) && $_POST['action']=='cancel') { + $res = $banana->action_cancelArticle($group, $artid); + } else { + $res = ''; + } + + if (isset($_GET['action'])) { + switch ($_GET['action']) { + case 'cancel': + $res .= $banana->action_showArticle($group, $artid); + if ($banana->post->checkcancel()) { + $form = '

'._b_('Voulez-vous vraiment annuler ce message ?').'

' + . "

" + . '' + . '' + . '

'; + return $form.$res; + } + return $res; + + case 'new': + return $banana->action_newFup($group, $artid); + } + } + return $res . $banana->action_showArticle($group, $artid); + } + } + + /**************************************************************************/ + /* actions */ + /**************************************************************************/ + + function action_saveSubs() + { + return; + } + + function action_listGroups() + { + $this->_newGroup(); + + $cuts = displayshortcuts(); + $res = '

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

'.$cuts.$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; + } + + function action_listSubs() + { + $this->_require('groups'); + $this->groups = new BananaGroups(BANANA_GROUP_ALL); + + $cuts = displayshortcuts(); + $res = '

'._b_('Abonnements').'

'.$cuts.$this->groups->to_html(true).$cuts; + + $this->nntp->quit(); + return $res; + } + + function action_showThread($group, $first) + { + $this->_newSpool($group, $this->profile['display'], $this->profile['lastnews']); + + if ($first > count($this->spool->overview)) { + $first = count($this->spool->overview); + } + + $first = $first - ($first % $this->tmax) + 1; + + $cuts = displayshortcuts($first); + + $res = '

'.$group.'

'.$cuts; + $res .= $this->spool->to_html($first, $first+$this->tmax); + + $this->nntp->quit(); + + return $res.$cuts; + } + + function action_showArticle($group, $id) + { + $this->_newSpool($group, $this->profile['display'], $this->profile['lastnews']); + $this->_newPost($id); + if (!$this->post) { + if ($this->nntp->lasterrorcode == "423") { + $this->spool->delid($id); + } + $this->nntp->quit(); + return displayshortcuts().'

'._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(); + + $this->nntp->quit(); + + return $res.$cuts; + } + + function action_cancelArticle($group, $id) + { + $this->_newSpool($group, $this->profile['display'], $this->profile['lastnews']); + $this->_newPost($id); + $mid = array_search($id, $this->spool->ids); + + if (!$this->post->checkcancel()) { + return '

'._b_('Vous n\'avez pas les permissions pour annuler ce message').'

'; + } + $msg = 'From: '.$this->profile['name']."\n" + . "Newsgroups: $group\n" + . "Subject: cmsg $mid\n" + . $this->custom + . "Control: cancel $mid\n" + . "\n" + . "Message canceled with Banana"; + if ($this->nntp->post($msg)) { + $this->spool->delid($id); + $this->nntp->quit(); + header("Location: ?group=$group&first=$id"); + } else { + return '

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

'; + } + } + + function action_newFup($group, $id = -1) + { + $subject = $body = ''; + $target = $group; + + if ($id > 0) { + $this->nntp->group($group); + $this->_newPost($id); + if ($this->post) { + $subject = preg_replace("/^re\s*:\s*/i", 'Re: ', $this->post->headers['subject']); + $body = $this->post->name." "._b_("a écrit")." :\n".wrap($this->post->body, "> "); + $target = isset($this->post->headers['followup-to']) ? $this->post->headers['followup-to'] : $this->post->headers['newsgroups']; + } + } + + $this->nntp->quit(); + + $cuts = displayshortcuts(); + $html = '

'._b_('Nouveau message').'

'.$cuts; + $html .= '
'; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $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').'
'; + if ($id > 0) { + $html .= ''; + } + $html .= ''; + $html .= '
'; + + return $html.$cuts; + } + + function action_doFup($group, $artid = -1) + { + $this->_newSpool($group, $this->profile['display'], $this->profile['lastnews']); + $body = preg_replace("/\n\.[ \t\r]*\n/m", "\n..\n", $_POST['body']); + $msg = 'From: '.$this->profile['name']."\n" + . "Newsgroups: ".$_POST['newsgroups']."\n" + . "Subject: ".$_POST['subject']."\n" + . (empty($this->profile['org']) ? '' : "Organization: {$this->profile['org']}\n") + . (empty($_POST['followup']) ? '' : 'Followup-To: '.$_POST['followup']."\n"); + + if ($artid != -1) { + $this->_require('post'); + $post = new BananaPost($artid); + $refs = ( isset($post->headers['references']) ? $post->headers['references']." " : "" ); + $msg .= "References: $refs{$post->headers['message-id']}\n"; + } + + $msg .= $this->custom.$this->profile['customhdr']."\n".wrap($body, "", $this->wrap); + + if ($this->nntp->post($msg)) { + header("Location: ?group=$group".($artid==-1 ? '' : "&first=$artid")); + } else { + return "

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

".$this->action_showThread($group, $artid); + } + } + + /**************************************************************************/ + /* Private functions */ + /**************************************************************************/ + + function _newSpool($group, $disp=0, $since='') { + $this->_require('spool'); + if (!$this->spool || $this->spool->group != $group) { + $this->spool = new BananaSpool($group, $disp, $since); + } + } + + function _newPost($id) + { + $this->_require('post'); + $this->post = new BananaPost($id); + } + + function _newGroup() + { + $this->_require('groups'); + $this->groups = new BananaGroups(BANANA_GROUP_SUB); + if ($this->groups->type == BANANA_GROUP_SUB) { + $this->newgroups = new BananaGroups(BANANA_GROUP_NEW); + } + } + + function _require($file) + { + require_once (dirname(__FILE__).'/'.$file.'.inc.php'); + } +} + +?> diff --git a/po/banana.pot b/po/banana.pot index 56a58cc..ee9e309 100644 --- a/po/banana.pot +++ b/po/banana.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-01-07 20:31+0100\n" +"POT-Creation-Date: 2005-01-07 22:34+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n"