/**
  * test du clear en cascade
  *
  */
 public function testCascadeClear()
 {
     CopixCache::write('myval', 'test', 'unittestfile');
     $this->assertTrue(CopixCache::exists('myval', 'unittestfile'));
     CopixCache::write('myval', 'test', 'unittestcascaded1');
     $this->assertTrue(CopixCache::exists('myval', 'unittestcascaded1'));
     CopixCache::write('myval', 'test', 'unittestcascaded2');
     $this->assertTrue(CopixCache::exists('myval', 'unittestcascaded2'));
     CopixCache::write('myval', 'test', 'unittestcascaded3');
     $this->assertTrue(CopixCache::exists('myval', 'unittestcascaded3'));
     CopixCache::clear(null, 'unittestfile');
     $this->assertTrue(!CopixCache::exists('myval', 'unittestcascaded1'));
     $this->assertTrue(!CopixCache::exists('myval', 'unittestcascaded2'));
     $this->assertTrue(!CopixCache::exists('myval', 'unittestcascaded3'));
 }
 /**
  * Effectue une demande d'inscription � un groupe pour l'utilisateur courant
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2005/11/16
  * @param integer $id Id du groupe
  */
 public function doJoin()
 {
     if (!Kernel::is_connected()) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('kernel|kernel.error.nologin'), 'back' => CopixUrl::get('auth|default|login')));
     }
     $dao = CopixDAOFactory::create("groupe");
     $kernel_service =& CopixClassesFactory::Create('kernel|kernel');
     $minimail_service =& CopixClassesFactory::Create('minimail|minimailservice');
     $groupeService =& CopixClassesFactory::Create('groupe|groupeService');
     $id = $this->getRequest('id', null);
     $errors = $oks = array();
     $groupe = $dao->getGroupe($id);
     if (!$groupe) {
         $errors[] = CopixI18N::get('groupe|groupe.error.noGroup');
     } elseif (!$groupe[0]->is_open) {
         $errors[] = CopixI18N::get('groupe|groupe.error.private');
     }
     $mondroit = $kernel_service->getLevel("CLUB", $id);
     if ($mondroit) {
         $errors[] = CopixI18N::get('groupe|groupe.error.alreadyMember');
     }
     if ($errors) {
         if (!CopixConfig::exists('|can_group_showlist') || CopixConfig::get('|can_group_showlist')) {
             return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $errors), 'back' => CopixUrl::get('groupe||getListPublic')));
         } else {
             return CopixActionGroup::process('genericTools|Messages::getError', array('message' => implode('<br/>', $errors), 'back' => CopixUrl::get('||')));
         }
     } else {
         $kernel_service->setLevel("CLUB", $id, _currentUser()->getExtra('type'), _currentUser()->getExtra('id'), PROFILE_CCV_SHOW);
         CopixCache::clear(_currentUser()->getExtra('type') . '-' . _currentUser()->getExtra('id'), 'getnodeparents');
         CopixCache::clear(_currentUser()->getExtra('type') . '-' . _currentUser()->getExtra('id'), 'getmynodes');
         // On r�cup�re le propri�taire, afin de lui envoyer un message
         $childs = $kernel_service->getNodeChilds("CLUB", $id);
         $trouve = false;
         foreach ($childs as $child) {
             if ($trouve) {
                 continue;
             }
             if ($groupeService->canMakeInGroupe('ADMIN', $child["droit"])) {
                 // Propri�taire trouv� !
                 $trouve = $child;
             }
         }
         //var_dump($trouve);
         /*
         while (!$trouve && list(,$child)=each($childs)) {
         if ($groupeService->canMakeInGroupe('ADMIN',$child["droit"])) // Propri�taire trouv� !
         $trouve = $child;
         }
         */
         if ($trouve) {
             $userInfo = $kernel_service->getUserInfo($trouve["type"], $trouve["id"]);
             //print_r2($userInfo);
             if ($userInfo && $userInfo["user_id"]) {
                 $his_nom = _currentUser()->getExtra('prenom') . " " . _currentUser()->getExtra('nom') . " (" . _currentUser()->getExtra('type') . ")";
                 $msg_from_login = _currentUser()->getLogin();
                 $msg_title = CopixI18N::get('groupe|groupe.msgJoin.title', array($groupe[0]->titre));
                 $format = CopixConfig::get('minimail|default_format');
                 if ($format == 'dokuwiki' || $format == 'wiki') {
                     $msg_body = CopixI18N::get('groupe|groupe.msgJoin.body', array(CopixUrl::get('groupe||getHomeAdminMembers', array("id" => $id)), $his_nom));
                     $msg_body = str_replace("\\n", "\n", $msg_body);
                 } else {
                     $msg_body = CopixI18N::get('groupe|groupe.msgJoin.bodyHtml', array(CopixUrl::get('groupe||getHomeAdminMembers', array("id" => $id)), $his_nom));
                 }
                 //print_r($msg_body);
                 //die();
                 $msg_from_id = _currentUser()->getId();
                 $msg_destin = array($userInfo["user_id"] => 1);
                 $send = $minimail_service->sendMinimail($msg_title, $msg_body, $msg_from_id, $msg_destin, $format);
                 if ($send) {
                     $oks[] = CopixI18N::get('groupe|groupe.msgJoin.Ok');
                 } else {
                     $errors[] = CopixI18N::get('groupe|groupe.error.sendJoin');
                 }
             } else {
                 $errors[] = CopixI18N::get('groupe|groupe.error.owner');
             }
         } else {
             // Pas de proprio, c'est pas normal
             $errors[] = CopixI18N::get('groupe|groupe.error.noOwner');
         }
         $tpl = new CopixTpl();
         $tpl->assign('TITLE_PAGE', $groupe[0]->titre);
         // $tpl->assign ('MENU', '<a href="'.CopixUrl::get ('groupe||getListPublic').'">'.CopixI18N::get ('groupe|groupe.annuaire').'</a> :: <a href="'.CopixUrl::get ('groupe||getListMy').'">'.CopixI18N::get ('groupe|groupe.my').'</a>');
         $tplHome = new CopixTpl();
         $tplHome->assign('groupe', $groupe[0]);
         $tplHome->assign('errors', $errors);
         $tplHome->assign('oks', $oks);
         if (!CopixConfig::exists('|can_group_showlist') || CopixConfig::get('|can_group_showlist')) {
             $tplHome->assign('can_group_showlist', 1);
         } else {
             $tplHome->assign('can_group_showlist', 0);
         }
         $result = $tplHome->fetch('dojoin.tpl');
         $tpl->assign('MAIN', $result);
         return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
     }
 }
 /**
  * Suppression des droits atribués à des membres sur un blog
  *
  * @author Christophe Beyer <*****@*****.**>
  * @since 2007/06/04
  * @param integer $id Id du blog
  * @param integer $kind Numéro générique de la rubrique (ne pas y toucher)
  * @param array $membres Les membres à désinscrire (les valeurs sont de type USER_TYPE|USER_ID)
  */
 public function doUnsubscribe()
 {
     $id = $this->getRequest('id', null);
     $kind = $this->getRequest('kind', null);
     $membres = $this->getRequest('membres', array());
     $groupeService =& CopixClassesFactory::Create('groupe|groupeService');
     $blogDAO = CopixDAOFactory::create('blog|blog');
     $blog = $blogDAO->get($id);
     $errors = array();
     if (!$blog || !$kind) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('blog.error.param'), 'back' => $blog ? CopixUrl::get('|', array('blog' => $blog->url_blog)) : CopixUrl::get('||')));
     }
     if (!BlogAuth::canMakeInBlog('ADMIN_DROITS', $blog)) {
         return CopixActionGroup::process('genericTools|Messages::getError', array('message' => CopixI18N::get('blog.error.cannotManageBlog'), 'back' => $blog ? CopixUrl::get('|', array('blog' => $blog->url_blog)) : CopixUrl::get('||')));
     }
     if (!$errors) {
         foreach ($membres as $membre) {
             list($user_type, $user_id) = explode("|", $membre);
             if ($user_type && $user_id) {
                 //print ("user_type=$user_type / user_id=$user_id");
                 Kernel::setLevel("MOD_BLOG", $id, $user_type, $user_id, 0);
                 CopixCache::clear($user_type . '-' . $user_id, 'getnodeparents');
                 CopixCache::clear($user_type . '-' . $user_id, 'getmynodes');
             }
         }
         $back = CopixUrl::get('blog|admin|showBlog', array("id_blog" => $id, 'kind' => $kind));
         return new CopixActionReturn(COPIX_AR_REDIRECT, $back);
     }
 }
 /**
  * Méthode qui efface le cache de la zone
  * @param array  $pParams les paramètres de contexte pour la zone.
  * @return   boolean  si tout s'est bien passé
  * @access private
  */
 protected function _clear($pParams)
 {
     $this->_params = $pParams;
     if ($this->_useCache) {
         $module = CopixContext::get();
         CopixCache::clear($this->_makeId(), 'zones|' . $module . get_class($this));
     }
     return true;
 }