/**
  * Envoie un minimail
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2005/10/18
  * @param string title Titre du minimail
  * @param string message Corps du minimail
  * @param integer from_id Id utilisateur de l'exp�diteur
  * @param array destin Id tableau avec les destinataires (cl� = id user)
  * @return mixed Id du message cr�� ou NULL si erreur
  */
 public function sendMinimail($title, $message, $from_id, $destin, $format)
 {
     $res = NULL;
     $DAOminimail_from = _dao("minimail|minimail_from");
     $DAOminimail_to = _dao("minimail|minimail_to");
     $newMp = _record("minimail|minimail_from");
     $newMp->title = $title;
     $newMp->message = $message;
     $newMp->format = $format;
     $newMp->date_send = date("Y-m-d H:i:s");
     $newMp->from_id = $from_id;
     $newMp->is_deleted = 0;
     $DAOminimail_from->insert($newMp);
     if ($newMp->id !== NULL) {
         //print_r($newMp);
         // On parcourt chaque destinataire
         while (list($to_id, ) = each($destin)) {
             // print_r("to_id=$to_id / to_login=$to_login");
             $newDest = _record("minimail|minimail_to");
             $newDest->id_message = $newMp->id;
             $newDest->to_id = $to_id;
             $newDest->date_read = 0;
             $newDest->is_read = 0;
             $newDest->is_replied = 0;
             $newDest->is_deleted = 0;
             $DAOminimail_to->insert($newDest);
             // ======= Alerte mail ===============
             // On vérifie que l'envoi de mails est activé, qu'un serveur SMTP est configuré, que le destinataire a coché l'option "etre prêvenu par mail" et qu'il a renseigné un mail
             if ($newDest->id2 && CopixConfig::get('|mailEnabled') == 1 && CopixConfig::get('|mailSmtpHost')) {
                 $prefs = Prefs::getPrefs($to_id);
                 if (isset($prefs['prefs']['alerte_mail_email']) && isset($prefs['minimail']['alerte_minimail']) && $prefs['prefs']['alerte_mail_email'] && $prefs['minimail']['alerte_minimail'] == 1) {
                     $userInfoFrom = Kernel::getUserInfo("ID", $from_id);
                     //print_r($userInfoFrom);
                     $to = $prefs['prefs']['alerte_mail_email'];
                     $auteur = utf8_decode($userInfoFrom['prenom'] . ' ' . $userInfoFrom['nom'] . ' (' . $userInfoFrom['login'] . ')');
                     $subject = CopixI18N::get('minimail|minimail.mail.alert.subject', array($auteur));
                     $message = str_replace('<br />', "\n", CopixI18N::get('minimail|minimail.mail.alert.body', array($auteur, CopixUrl::get('minimail||getMessage', array('id' => $newMp->id)), CopixUrl::get())));
                     $from = CopixConfig::get('default|mailFrom');
                     $fromName = CopixConfig::get('default|mailFromName');
                     $cc = $cci = '';
                     $monMail = new CopixTextEMail($to, $cc, $cci, $subject, $message);
                     $send = $monMail->send($from, $fromName);
                 }
             }
             // ======= Fin alerte mail ===============
         }
         $res = $newMp->id;
         if ($res) {
             $plugStats = CopixPluginRegistry::get("stats|stats");
             $plugStats->setParams(array('module' => 'minimail', 'action' => 'sendMinimail', 'objet_a' => $res));
         }
     }
     return $res;
 }
 public function _createContent(&$toReturn)
 {
     $tpl = new CopixTpl();
     $blog = $this->getParam('blog', '');
     $comment = $this->getParam('comment', NULL);
     //on récupère l'ensemble des articles du blog
     $dao = _dao('blog|blogarticle');
     //$article = $dao->getArticleByUrl($blog->id_blog, $this->getParam('article', ''));
     list($id_bact, ) = explode("-", $this->getParam('article', ''));
     $article = $dao->getArticleById($blog->id_blog, $id_bact);
     if (!$article) {
         $toReturn = '{/}' . $tpl->fetch('showarticle.tpl');
         return true;
     }
     //encodage des URL des catégories pour caractères spéciaux
     if (is_array($article->categories)) {
         foreach ($article->categories as $key => $categorie) {
             $article->categories[$key]->url_bacg = urlencode($categorie->url_bacg);
         }
     }
     $tpl->assign('article', $article);
     // Recherche de tous les commentaires associés à cet article
     $commentDAO = _dao('blog|blogarticlecomment');
     $res = $commentDAO->findCommentOrderBy($article->id_bact, 1);
     $listComment = array();
     foreach ($res as $r) {
         $r->time_bacc = BDToTime($r->time_bacc);
         array_push($listComment, $r);
     }
     if ($comment) {
         $toEdit = $comment;
     } else {
         // On récupère l'utilisateur connecté
         $user = BlogAuth::getUserInfos();
         $toEdit = _record('blogarticlecomment');
         $toEdit->authorid_bacc = $user->userId;
         $toEdit->authorname_bacc = $user->name;
         $toEdit->authoremail_bacc = $user->email;
         $toEdit->authorweb_bacc = $user->web;
     }
     $tpl->assign('blog', $blog);
     $tpl->assign('toEdit', $toEdit);
     $tpl->assign('listComment', $listComment);
     $tpl->assign('errors', $this->getParam('errors', null));
     $tpl->assign('showErrors', $this->getParam('showErrors', false));
     $tpl->assign('canComment', BlogAuth::canComment($blog->id_blog));
     $plugStats = CopixPluginRegistry::get("stats|stats");
     $plugStats->setParams(array('objet_a' => $article->id_bact));
     // retour de la fonction :
     $toReturn = $article->name_bact . '{/}' . $tpl->fetch('showarticle.tpl');
     return true;
 }
 /**
  * Ajout d'un plugin dans la liste
  */
 public function processAddPlugin()
 {
     //on vérifie que le plugin demandé existe bien dans la liste des plugins disponibles
     if (in_array($pluginName = CopixRequest::get('plugin'), CopixPluginregistry::getAvailable())) {
         //si le plugin n'est pas déjà activé, on l'active
         if (!CopixPluginRegistry::isRegistered($pluginName)) {
             //on récupère la liste des plugins enregistrés et on ajoute le nouveau plugin
             $arPlugins = CopixConfig::instance()->plugin_getRegistered();
             $arPlugins[] = $pluginName;
             //écriture du fichier
             _class('PluginsConfigurationFile')->write($arPlugins);
         }
     }
     //création du tableau des plugins à enregistrer plus le plugin en question
     return _arRedirect(_url('plugin|'));
 }
 public function _createContent(&$toReturn)
 {
     if (!CopixPluginRegistry::isRegistered('themechooser|themechooser')) {
         $toReturn = "";
         return true;
     }
     $tpl = new CopixTpl();
     $arThemes = CopixPluginRegistry::getConfig('themechooser|themechooser')->getThemeList();
     $arThemesToReturn = array();
     foreach ($arThemes as $theme) {
         $arThemesToReturn[] = CopixTpl::getThemeInformations($theme);
     }
     $selectedTheme = CopixSession::get('themechooser|theme');
     $tpl->assign('selectedTheme', $selectedTheme);
     $tpl->assign('arThemes', $arThemesToReturn);
     $toReturn = $tpl->fetch('combo.list.tpl');
     return true;
 }
 public function _createContent(&$toReturn)
 {
     $tpl = new CopixTpl();
     $blog = $this->getParam('blog', '');
     //on récupère l'ensemble des articles du blog
     $dao = _dao('blog|blogpage');
     $page = $dao->getPageByUrl($blog->id_blog, $this->getParam('page', ''));
     if (!$page) {
         $toReturn = $tpl->fetch('showpage.tpl');
         return true;
     }
     $tpl->assign('page', $page);
     $plugStats = CopixPluginRegistry::get("stats|stats");
     $plugStats->setParams(array('objet_a' => $page->id_bpge));
     // retour de la fonction :
     $toReturn = $tpl->fetch('showpage.tpl');
     return true;
 }
 /**
  * Affiche un minimail en d�tail
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2005/10/18
  * @param integer $id Id du minimail
  */
 public function getMessage()
 {
     $this->addJs('js/iconito/module_minimail.js');
     $MinimailService =& CopixClassesFactory::Create('minimail|MinimailService');
     // 2 DAO -> 2 assign
     $idUser = _currentUser()->getId();
     $idMessage = _request("id");
     $errors = array();
     $daoFrom = CopixDAOFactory::create("minimail_from");
     $daoTo = CopixDAOFactory::create("minimail_to");
     $message = $daoFrom->getMessage($idMessage);
     $dest = $daoTo->selectDestFromId($idMessage);
     $isRecv = $isSend = false;
     if ($message) {
         $message->prev = NULL;
         $message->next = NULL;
     }
     if ($message && $message->from_id == $idUser) {
         // Message qu'il a envoy�
         $message->type = "send";
         $prev = $daoFrom->getFromPrevMessage($message->date_send, $idUser);
         if ($prev) {
             $message->prev = $prev->id;
         }
         $next = $daoFrom->getFromNextMessage($message->date_send, $idUser);
         if ($next) {
             $message->next = $next->id;
         }
         $isSend = true;
     } else {
         // Il en est peut-�tre destinataire
         $isDest = $daoTo->selectDestFromIdAndToUser($idMessage, $idUser);
         // Test s'il est dans les destin
         if ($isDest) {
             $serv = CopixClassesFactory::create("MinimailService");
             $serv->markMinimailAsRead($dest, $idUser);
             $message->type = "recv";
             $prev = $daoTo->getToPrevMessage($message->date_send, $idUser);
             if ($prev) {
                 $message->prev = $prev->id;
             }
             $next = $daoTo->getToNextMessage($message->date_send, $idUser);
             if ($next) {
                 $message->next = $next->id;
             }
             $isRecv = true;
         } else {
             // Il tente d'afficher un message qu'il n'a pas envoy� ni re�u !
             $errors[] = CopixI18N::get('minimail.error.cantDisplay');
         }
     }
     if ($errors) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $errors), 'back' => CopixUrl::get('minimail||')));
     } else {
         $userInfo = Kernel::getUserInfo("ID", $message->from_id);
         $message->from = $userInfo;
         $message->from_id_infos = $userInfo["prenom"] . " " . $userInfo["nom"] . " (" . $userInfo["login"] . ")";
         foreach ($dest as $j => $null) {
             //print_r($dest[$j]->to_id);
             $userInfo = Kernel::getUserInfo("ID", $dest[$j]->to_id);
             $dest[$j]->to = $userInfo;
             $dest[$j]->to_id_infos = $userInfo["prenom"] . " " . $userInfo["nom"] . " (" . $userInfo["login"] . ")";
         }
         // Avatar de l'exp�diteur
         $avatar = Prefs::get('prefs', 'avatar', $message->from_id);
         $message->avatar = $avatar ? CopixConfig::get('prefs|avatar_path') . $avatar : '';
         $tpl = new CopixTpl();
         $tpl->assign('TITLE_PAGE', $message->title);
         $menu = array();
         $menu[] = array('txt' => CopixI18N::get('minimail.mess_recv'), 'url' => CopixUrl::get('minimail||getListRecv'), 'current' => $isRecv);
         $menu[] = array('txt' => CopixI18N::get('minimail.mess_send'), 'url' => CopixUrl::get('minimail||getListSend'), 'current' => $isSend);
         $menu[] = array('txt' => CopixI18N::get('minimail.mess_write'), 'url' => CopixUrl::get('minimail||getNewForm'));
         $tpl->assign('MENU', $menu);
         $message->attachment1IsImage = $MinimailService->isAttachmentImage($message->attachment1);
         $message->attachment2IsImage = $MinimailService->isAttachmentImage($message->attachment2);
         $message->attachment3IsImage = $MinimailService->isAttachmentImage($message->attachment3);
         $message->attachment1Name = $MinimailService->getAttachmentName($message->attachment1);
         $message->attachment2Name = $MinimailService->getAttachmentName($message->attachment2);
         $message->attachment3Name = $MinimailService->getAttachmentName($message->attachment3);
         //print_r($message);
         $tplListe = new CopixTpl();
         $tplListe->assign('message', $message);
         $tplListe->assign('dest', $dest);
         $result = $tplListe->fetch('getmessage.tpl');
         $tpl->assign('MAIN', $result);
         $plugStats = CopixPluginRegistry::get("stats|stats");
         $plugStats->setParams(array('objet_a' => $idMessage));
         return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
     }
 }
 /**
  * création d'une connection.
  * @access private
  * @param string  $named  nom du profil de connection
  * @return CopixLdapConnection  l'objet de connection
  */
 private function _createConnection($profilName)
 {
     $profil =& CopixLdapFactory::_getProfil($profilName);
     //Création de l'objet
     $obj = new CopixLdapConnection();
     if ($profil->shared) {
         $GLOBALS['COPIX']['LDAP'][$profilName] =& $obj;
     }
     if (CopixPluginRegistry::getConf('CopixLdap', 'showLdapQueryEnabled') && isset($_GET['showLdapQuery']) && $_GET['showLdapQuery'] == '1') {
         $obj->_debugQuery = true;
     }
     $obj->connect($profil);
     return $obj;
 }
 /**
  * Validation des modification sur le profil de log
  */
 public function processValid()
 {
     $profile = CopixSession::get('admin|log|edit');
     if (_request('enabled')) {
         $profile['enabled'] = true;
     } else {
         $profile['enabled'] = false;
     }
     $profile['strategy'] = _request('strategy');
     if (_request('strategy_class', null, true)) {
         $profile['strategy'] = _request('strategy_class');
     }
     $profile['level'] = _request('level');
     if ($handle = _request('handle', null, true)) {
         if (is_array($profile['handle'])) {
             if (!in_array($handle, $profile['handle'])) {
                 $profile['handle'][] = $handle;
             }
         } else {
             $profile['handle'] = array($handle);
         }
     }
     if (!isset($profile['handleExcept'])) {
         $profile['handleExcept'] = array();
     }
     if (!is_array($profile['handle'])) {
         if ($handleExcept = _request('handleExcept', null, true)) {
             if (is_array($profile['handleExcept'])) {
                 if (!in_array($handleExcept, $profile['handleExcept'])) {
                     $profile['handleExcept'][] = $handleExcept;
                 }
             } else {
                 $profile['handleExcept'] = array($handleExcept);
             }
         }
     } else {
         if (is_array($profile['handleExcept'])) {
             unset($profile['handleExcept']);
         }
     }
     // email de destination dans le cas d'une stratégie de profil de type email
     if ($profile['strategy'] == 'email') {
         $emails = explode(';', _request('email'));
         foreach ($emails as $email) {
             try {
                 $email = CopixFormatter::getMail($email);
             } catch (CopixException $e) {
                 return _arRedirect(_url('log|edit', array('profile' => $profile['name'], 'error' => 'invalidEMail')));
             }
         }
         $profile['email'] = _request('email');
     }
     CopixSession::set('admin|log|edit', $profile);
     if (_request('save')) {
         $profiles = CopixConfig::instance()->copixlog_getRegisteredProfiles();
         $profiles[$profile['name']] = $profile;
         _class('LogConfigurationFile')->write($profiles);
         CopixSession::set('admin|log|edit', null);
         if (strtoupper($profile['strategy']) == "FIREBUG") {
             if (!CopixPluginRegistry::isRegistered("admin|firebug")) {
                 //on récupère la liste des plugins enregistrés et on ajoute le nouveau plugin
                 $arPlugins = CopixConfig::instance()->plugin_getRegistered();
                 $arPlugins[] = "admin|firebug";
                 //écriture du fichier
                 _class('PluginsConfigurationFile')->write($arPlugins);
             }
         }
         return _arRedirect(_url('log|admin'));
     } else {
         return _arRedirect(_url('log|edit'));
     }
 }
 /**
  * Affichage de LA PAGE demand� pour le blog.
  */
 public function getPage()
 {
     if (!_request('blog')) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('blog.error.missingParameters'), 'back' => CopixUrl::get('')));
     }
     //On verifit que le blog existe (on r�cup�re le blog avec son nom)
     $dao = CopixDAOFactory::create('blog|blog');
     if (!($blog = $dao->getBlogByName(_request('blog')))) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('blog.error.unableToFindBlog'), 'back' => CopixUrl::get('')));
     }
     // On v�rifie que le droit de lecture est pr�sent
     if (!BlogAuth::canMakeInBlog('READ', $blog)) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.noRights'), 'back' => CopixUrl::get('')));
     }
     if (!_request('page')) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('blog.error.missingParameters'), 'back' => CopixUrl::get('blog||', array('blog' => _request('blog')))));
     }
     //		$menu = array();
     $parent = Kernel::getModParentInfo("MOD_BLOG", $blog->id_blog);
     //print_r($parent);
     $blog->parent = $parent;
     /*
             if ($parent['type']=='CLUB') {
                 $droit = Kernel::getLevel($parent['type'], $parent['id']);
                 //print_r($droit);
                 if (GroupeService::canMakeInGroupe('VIEW_HOME', $droit))
                     $menu[] = array('url'=>CopixUrl::get ('groupe||getHome', array("id"=>$parent['id'])), 'txt'=>CopixI18N::get ('blog.menuToGroup'));
             }
             if (BlogAuth::canMakeInBlog('ACCESS_ADMIN',$blog))
                 $menu[] = array('url'=>CopixUrl::get ('admin|showBlog', array("id_blog"=>$blog->id_blog)), 'txt'=>CopixI18N::get ('blog.menuAdmin'));
     */
     $menu = array();
     if (BlogAuth::canMakeInBlog('ACCESS_ADMIN', $blog)) {
         $menu = getBlogAdminMenu($blog);
     }
     CopixHTMLHeader::addCSSLink(CopixUrl::get('blog||getBlogCss', array('id_blog' => $blog->id_blog)));
     $tpl = new CopixTpl();
     $tpl->assign('TITLE_PAGE', $blog->name_blog);
     $tpl->assign('blog', $blog);
     $tpl->assign('MENU', $menu);
     $tpl->assign('Page', CopixZone::process('ShowPage', array('blog' => $blog, 'page' => _request('page'))));
     $tpl->assign('ListLink', CopixZone::process('ListLink', array('blog' => $blog)));
     $tpl->assign('ListCategory', CopixZone::process('ListCategory', array('blog' => $blog)));
     $tpl->assign('ListArchive', CopixZone::process('ListArchive', array('blog' => $blog)));
     $tpl->assign('ListPage', CopixZone::process('ListPage', array('blog' => $blog)));
     $tpl->assign('ListSearch', CopixZone::process('ListSearch', array('blog' => $blog)));
     $tpl->assign('ListFluxRss', CopixZone::process('ListFluxRss', array('blog' => $blog)));
     CopixHtmlHeader::addOthers('<link rel="alternate" href="' . CopixUrl::get('blog||rss', array("blog" => $blog->url_blog)) . '" type="application/rss+xml" title="' . htmlentities($blog->name_blog) . '" />');
     if ($blog->template) {
         $MAIN = $tpl->fetch($blog->template);
     } else {
         $MAIN = $tpl->fetch('blog_main.tpl');
     }
     $tpl->assign('MAIN', $MAIN);
     $tpl->assign('HEADER_MODE', 'compact');
     $plugStats = CopixPluginRegistry::get("stats|stats");
     $plugStats->setParams(array('module_id' => $blog->id_blog, 'parent_type' => $parent['type'], 'parent_id' => $parent['id']));
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
 /**
  * Est ce que le plugin magicquote est installé?
  *
  * @return boolean
  */
 public function magicquotesPluginInstalled()
 {
     return CopixPluginRegistry::isRegistered('default|magicquotes');
 }
 /**
  * Définition du thème à utiliser
  */
 public function processDoSelectTheme()
 {
     CopixSession::set('themechooser|theme', CopixRequest::getInArray('id_ctpt', CopixPluginRegistry::getConfig('themechooser|themechooser', true)->getThemeList(), true));
     return _arRedirect(_url());
 }
 /**
  * Réalise les derniers traitements (généralement d'affichage ou de redirection).
  *
  * En fonction du code retour de l'action CopixActionReturn::CONST, Copix réalise
  * un certain nombre de traitements pour terminer la requête en cours.
  *
  * @param	CopixActionReturn      $pToProcess   Ce qui a été retourné par CopixActionGroup::process ()
  * @see CopixActionGroup
  */
 protected function _processResult($toProcess)
 {
     $config = CopixConfig::instance();
     //appel les plugins de post-processing.
     foreach (CopixPluginRegistry::getRegistered() as $name => $plugin) {
         $plugin->afterProcess($toProcess);
     }
     //Analyse du résultat du process
     switch ($toProcess->code) {
         case CopixActionReturn::ERROR:
             //erreur
             header("Content-Type: text/html");
             $tpl = new CopixTpl();
             if (($assignedTitlePage = $tpl->getAssigned('TITLE_PAGE')) !== null) {
                 $tpl->assign('TITLE_PAGE', '[' . _i18n('copix:common.messages.error') . ']' . $assignedTitlePage);
             } else {
                 $tpl->assign('TITLE_PAGE', '[' . _i18n('copix:common.messages.error') . ']');
             }
             $this->_processStandard($tpl);
             $tpl->assign('HTML_HEAD', '<$HTML_HEAD />');
             $tpl->assign('MAIN', $toProcess->data);
             $content = $tpl->fetch('|error.tpl');
             CopixContext::clear();
             $this->_beforeDisplay($content);
             echo $content;
             break;
         case CopixActionReturn::DISPLAY:
             $charset = CopixI18N::getCharset();
             header("Content-Type: text/html;charset=" . $charset);
             $this->_processStandard($toProcess->data);
             //appel de la méthode de préparation de la page standard.
             $toProcess->data->assign('HTML_HEAD', '<$HTML_HEAD />');
             //Par ex, bandeaux de pub, menus dynamiques, ... (propres aux projets.)
             CopixContext::clear();
             $content = $toProcess->data->fetch($config->mainTemplate);
             $this->_beforeDisplay($content);
             echo $content;
             break;
         case CopixActionReturn::DISPLAY_IN:
             $charset = CopixI18N::getCharset();
             header("Content-Type: text/html;charset=" . $charset);
             $this->_processStandard($toProcess->data);
             //appel de la méthode de préparation de la page standard.
             $toProcess->data->assign('HTML_HEAD', '<$HTML_HEAD />');
             //Par ex, bandeaux de pub, menus dynamiques, ... (propres aux projets.)
             $content = $toProcess->data->fetch($toProcess->more);
             $this->_beforeDisplay($content);
             echo $content;
             break;
         case CopixActionReturn::FILE:
         case CopixActionReturn::CONTENT:
             $contentDisposition = 'inline';
             $contentTransfertEnconding = 'binary';
             $contentType = null;
             $fileNameOnly = null;
             if ($toProcess->code == CopixActionReturn::FILE) {
                 $fileName = $toProcess->data;
                 $fileNameOnly = explode('/', str_replace('\\', '/', $fileName));
                 $fileNameOnly = $fileNameOnly[count($fileNameOnly) - 1];
             }
             if (is_array($toProcess->more)) {
                 if (isset($toProcess->more['content-disposition'])) {
                     $contentDisposition = $toProcess->more['content-disposition'];
                 }
                 if (isset($toProcess->more['filename'])) {
                     $fileNameOnly = $toProcess->more['filename'];
                 }
                 if (isset($toProcess->more['content-type'])) {
                     $contentType = $toProcess->more['content-type'];
                 }
                 if (isset($toProcess->more['content-transfer-encoding'])) {
                     $contentTransfertEnconding = $toProcess->more['content-transfer-encoding'];
                 }
             } elseif (strlen(trim($toProcess->more))) {
                 $contentType = $toProcess->more;
             }
             if ($contentType === null) {
                 $contentType = CopixMIMETypes::getFromFileName($fileNameOnly);
             }
             header("Pragma: public");
             header("Expires: 0");
             header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
             header("Cache-Control: protected", false);
             header("Content-Type: " . $contentType);
             header("Content-Disposition: " . $contentDisposition . "; filename=\"" . $fileNameOnly . "\";");
             header("Content-Transfer-Encoding: " . $contentTransfertEnconding);
             header("Content-Length: " . ($toProcess->code == CopixActionReturn::FILE ? filesize($fileName) : strlen($toProcess->data)));
             if ($toProcess->code == CopixActionReturn::FILE) {
                 readfile($fileName);
             } else {
                 echo $toProcess->data;
             }
             flush();
             break;
         case CopixActionReturn::PPO:
             $contentType = 'text/html';
             $cacheControl = false;
             $mainTemplate = $config->mainTemplate;
             $charset = CopixI18N::getCharset();
             if (is_array($toProcess->more)) {
                 $template = $toProcess->more['template'];
                 if (isset($toProcess->more['content-type'])) {
                     $contentType = $toProcess->more['content-type'];
                 }
                 if (array_key_exists('mainTemplate', $toProcess->more)) {
                     $mainTemplate = $toProcess->more['mainTemplate'];
                 }
                 if (isset($toProcess->more['charset'])) {
                     $charset = $toProcess->more['charset'];
                 }
                 if (isset($toProcess->more['cache-control'])) {
                     $cacheControl = $toProcess->more['cache-control'];
                 }
             } else {
                 $template = $toProcess->more;
             }
             $tplContent = new CopixTpl();
             $tplContent->assign('ppo', $toProcess->data);
             header("Content-Type: " . $contentType . ";charset=" . $charset);
             if ($cacheControl !== false) {
                 header('Cache-Control: ' . $cacheControl);
             }
             if ($mainTemplate !== null) {
                 $tplMain = new CopixTpl();
                 $tplMain->assign('TITLE_PAGE', isset($toProcess->data->TITLE_PAGE) ? $toProcess->data->TITLE_PAGE : null);
                 $tplMain->assign('TITLE_BAR', isset($toProcess->data->TITLE_BAR) ? $toProcess->data->TITLE_BAR : null);
                 $tplMain->assign('POPUP', isset($toProcess->data->POPUP) ? $toProcess->data->POPUP : null);
                 $tplMain->assign('MENU', isset($toProcess->data->MENU) ? $toProcess->data->MENU : null);
                 $tplMain->assign('CAN_CLOSE', isset($toProcess->data->CAN_CLOSE) ? $toProcess->data->CAN_CLOSE : null);
                 $tplMain->assign('BODY_ON_LOAD', isset($toProcess->data->BODY_ON_LOAD) ? $toProcess->data->BODY_ON_LOAD : null);
                 $tplMain->assign('BODY_ON_UNLOAD', isset($toProcess->data->BODY_ON_UNLOAD) ? $toProcess->data->BODY_ON_UNLOAD : null);
                 $tplMain->assign('MAIN', $tplContent->fetch($template));
                 $tplContent = null;
                 //on libère la mémoire
                 $tplMain->assign('ppo', $toProcess->data);
                 $this->_processStandard($tplMain);
                 $tplMain->assign('HTML_HEAD', '<$HTML_HEAD />');
                 $content = $tplMain->fetch($mainTemplate);
             } else {
                 $tplContent->assign('TITLE_PAGE', isset($toProcess->data->TITLE_PAGE) ? $toProcess->data->TITLE_PAGE : null);
                 $tplContent->assign('TITLE_BAR', isset($toProcess->data->TITLE_BAR) ? $toProcess->data->TITLE_BAR : null);
                 $tplContent->assign('BODY_ON_LOAD', isset($toProcess->data->BODY_ON_LOAD) ? $toProcess->data->BODY_ON_LOAD : null);
                 $tplContent->assign('BODY_ON_UNLOAD', isset($toProcess->data->BODY_ON_UNLOAD) ? $toProcess->data->BODY_ON_UNLOAD : null);
                 $this->_processStandard($tplContent);
                 $tplContent->assign('HTML_HEAD', '<$HTML_HEAD />');
                 $content = $tplContent->fetch($template);
             }
             CopixContext::clear();
             $this->_beforeDisplay($content);
             echo $content;
             break;
         case CopixActionReturn::REDIRECT:
             //redirection standard, message http.
             header('location: ' . $toProcess->data);
             break;
         case CopixActionReturn::HTTPCODE:
             foreach ($toProcess->data as $code) {
                 header($code);
             }
             echo $toProcess->more;
             break;
         case CopixActionReturn::NONE:
             break;
     }
     //Appel des méthodes afterDisplay des plugins
     foreach (CopixPluginRegistry::getRegistered() as $name => $plugin) {
         $plugin->afterDisplay();
     }
     session_write_close();
 }
 /**
  * Page d'accueil d'un groupe
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2005/11/15
  * @param integer $id Id du groupe
  */
 public function getHome()
 {
     $kernel_service =& CopixClassesFactory::Create('kernel|kernel');
     $groupeService =& CopixClassesFactory::Create('groupe|groupeService');
     $id = $this->getRequest('id', null);
     $errors = array();
     $dao = CopixDAOFactory::create("groupe");
     $groupe = $dao->getGroupe($id);
     if (!$groupe) {
         $errors[] = CopixI18N::get('groupe|groupe.error.noGroup');
     }
     $mondroit = $kernel_service->getLevel("CLUB", $id);
     //print_r("mondroit=$mondroit");
     if (!$groupeService->canMakeInGroupe('VIEW_HOME', $mondroit)) {
         $errors[] = CopixI18N::get('kernel|kernel.error.noRights');
     }
     if ($errors) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $errors), 'back' => CopixUrl::get('groupe||')));
     } else {
         // On r�cup�re les modules du groupe
         $his_modules = $kernel_service->getModEnabled("club", $id);
         foreach ($his_modules as $k => $node) {
             //print_r(explode("_",$node->module_type));
             list($tmp, $module) = explode("_", $node->module_type);
             $module = strtolower($module);
             $classeModule = CopixClassesFactory::create("{$module}|Kernel{$module}");
             $infos = $classeModule->getStats($node->module_id);
             //print_r($infos);
             $his_modules[$k]->infos = $infos;
             $his_modules[$k]->module_nom = Kernel::Code2Name($node->module_type);
         }
         // Infos du groupe
         $classeModule = CopixClassesFactory::create("groupe|Kernelgroupe");
         $infos = $classeModule->getStats($id);
         $groupe[0]->infos = $infos;
         $groupe[0]->nbMembers = $infos['nbMembers']['name'];
         $userInfo = $kernel_service->getUserInfo("ID", $groupe[0]->createur);
         $groupe[0]->createur_nom = $userInfo["prenom"] . " " . $userInfo["nom"];
         $groupe[0]->createur_infos = $userInfo;
         //print_r($groupe[0]);
         $tpl = new CopixTpl();
         $tpl->assign('TITLE_PAGE', $groupe[0]->titre);
         // $tpl->assign ('MENU', '<a href="'.CopixUrl::get ('groupe||getListMy').'">'.CopixI18N::get ('groupe|groupe.backMy').'</a>');
         $menu = array();
         //$menu[] = array('url' => CopixUrl::get ('groupe||getListMy'), 'txt'=>CopixI18N::get ('groupe|groupe.backMy'), 'size'=>120);
         $tpl->assign('MENU', $menu);
         $tplHome = new CopixTpl();
         $tplHome->assign('groupe', $groupe[0]);
         $tplHome->assign('canViewAdmin', $groupeService->canMakeInGroupe('ADMIN', $mondroit) ? 1 : 0);
         $tplHome->assign('canUnsubscribeHimself', $groupeService->canMakeInGroupe('UNSUBSCRIBE_HIMSELF', $mondroit) ? 1 : 0);
         $tplHome->assign('his_modules', $his_modules);
         $result = $tplHome->fetch('gethome.tpl');
         $tpl->assign('MAIN', $result);
         $plugStats = CopixPluginRegistry::get("stats|stats");
         $plugStats->setParams(array('module_id' => $groupe[0]->id));
         return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
     }
 }