Fork me on GitHub

Rapport de message :*
 

Re: News 1.4 et vrais modérateurs

Titre du sujet : Re: News 1.4 et vrais modérateurs
par Anonyme sur 04/12/2006 10:34:47

OK, en fait, le problème vient juste du fait que certaines fonctions ont changé de nom.
Je met en gras les modifs à effectuer pour que tout cela marche avec la version 1.50.
(Tant qu'à faire, je reprend toutes les modifs ici pour ceux qui ne les avaient pas appliquées et qui voudraient le faire directement pour la 1.50.)
Citation :


/modules/news/blocks/news_moderate.php

Ligne 38: Modification pour que le bloc des articles en attente de modération n'affiche que ceux que l'utilisateur
connecté peut approuvé
Remplacement de la igne
$storyarray 
NewsStory :: getAllSubmitted(0truegetmoduleoption('restrictindex'));
Par la ligne
$storyarray 
NewsStory :: getAllSubmitted(0truetrue);


Ligne 59 et 61: Modification des liens pour ne plus les faire ouvrir dans une nouvelle fenêtre (suppression du target=_blank)

Ligne 67: Modification du lien permettant d'effacer un article, afin que seul les groupes ayant les droits d'approbation sur un sujet puisse faire cette opération sans pour autant qu'ils aient les droits d'administration
Remplacement de la ligne 
$story
['action'] = "<a href='" XOOPS_URL "/modules/news/admin/index.php?op=delete&storyid=" $newstory->storyid() . "'>" _MB_DELETE "</a>";
Par la ligne
$story
['action'] = "<a href='" XOOPS_URL "/modules/news/submit.php?op=delete&storyid=" $newstory->storyid() . "'>" _MB_DELETE "</a>";



Fichier /modules/news/submit.php

Ligne 85 à 88 Mise en commentaire, du test d'admin dans le cas où les utilisateurs ne peuvent pas éditer leurs articles

Ligne 149 : Modification, pour autoriser la modification d'un post qu'au groupe d'utilisateur ayant les droits
d'approbation sur le sujet de l'article
Remplacement de la igne
if (!$gperm_handler->checkRight("news_view"$story->topicid(), $groups$module_id)) {
Par la ligne
if (!$gperm_handler->checkRight("news_approve"$story->topicid(), $groups$module_id)) {


Dans le swith ($op) (fin du script) ajout d'une réponse à l'opération delete qui demande la confirmation puis effectue l'effacement.
case 'delete':
        if (!
$approveprivilege) {
            
redirect_header(XOOPS_URL.'/modules/news/index.php'3_NOPERM);
            exit();
            break;
        }
        
$story = new NewsStory($storyid);
        if (!
$gperm_handler->checkRight("news_approve"$story->topicid(), $groups$module_id)) {
            
redirect_header(XOOPS_URL.'/modules/news/index.php'3_NOPERM);
            exit();
            break;
        }
        if (!empty(
$_POST['ok'])) {
            if (empty(
$storyid)) {
                
redirect_header(XOOPS_URL.'/modules/news/index.php',3_AM_EMPTYNODELETE );
                exit();
            }
            
$story->delete();
            
$sfiles = new sFiles();
            
$filesarr=Array();
            
$filesarr=$sfiles->getAllbyStory($storyid);
            if(
count($filesarr)>0) {
               foreach (
$filesarr as $onefile) {
                  
$onefile->delete();
               }
            }
            
xoops_comment_delete($xoopsModule->getVar('mid'),$storyid);
            
xoops_notification_deletebyitem($xoopsModule->getVar('mid'), 'story'$storyid);
            [
b]news_[/b]updateCache();
            
redirect_header(XOOPS_URL.'/modules/news/index.php'1_AM_DBUPDATED );
            exit();
        } else {
            
//xoops_cp_header();
            
echo "<h4>" _AM_CONFIG "</h4>";
            
xoops_confirm(array('op' => 'delete''storyid' => $storyid'ok' => 1), XOOPS_URL.'/modules/news/submit.php'_AM_RUSUREDEL .'<br />' $story->title());
        }
        break;


Le code de confirmation, envoyant des POST et non des GET, on ajoute juste avant le switch($op) le elseif suivant (le précedent ne faisait
que des test sur le $_GET (Uniquement pour répondre à la confirmation de suppression)
elseif ( isset($_POST['op']) && isset($_POST['storyid'])) {
   if (
$approveprivilege && $_POST['op'] == 'delete') {
      
$op 'delete';
      
$storyid intval($_POST['storyid']);
   }
}



Fichier \modules\news\class\class.newsstory.php

Modification de la méthode AdminLink pour adapter le lien delete dans le cas où l'on n'est pas admin
Dans ce cas pour faire un delete on utilise le script submit.php modifié précédement
function adminlink()
   {
      if([
b]news_[/b]is_admin_group())
         
$ret "&nbsp;[ <a href='".XOOPS_URL."/modules/news/submit.php?op=edit&storyid=".$this->storyid()."'>"._EDIT."</a> | <a href='".XOOPS_URL."/modules/news/admin/index.php?op=delete&storyid=".$this->storyid()."'>"._DELETE."</a> ]&nbsp;";
      else
         
$ret "&nbsp;[ <a href='".XOOPS_URL."/modules/news/submit.php?op=edit&storyid=".$this->storyid()."'>"._EDIT."</a> | <a href='".XOOPS_URL."/modules/news/submit.php?op=delete&storyid=".$this->storyid()."'>"._DELETE."</a> ]&nbsp;";
      return 
$ret;
   }


Pour afficher les lien editer/effacer sur la page d'index listant les articles pour lequel l'utilisateur à le droit d'approbation
Localiser les lignes
       
if ($approveprivilege) {
           
$story['adminlink'] = $this->adminlink();
       }

Et y Insérer
      
if ($approveprivilege==0) {
          global 
$xoopsModule,$xoopsConfig;
          
$gperm_handler =& xoops_gethandler('groupperm');
          if (
is_object($xoopsUser)) {
             
$groups $xoopsUser->getGroups();
          } else {
             
$groups XOOPS_GROUP_ANONYMOUS;
          }
          if (
$gperm_handler->checkRight("news_approve"$this->topicid(), $groups$xoopsModule->getVar('mid'))) {
                
$approveprivilege=1;
          }
       }



Fichier /modules/news/article.php

Pour afficher les liens éditer/effacer sur la page de consultation d'un article
Remplacer les lignes (a partir de la 243)
if(
is_object($xoopsUser)) {
   if( 
$xoopsUser->isAdmin($xoopsModule->getVar('mid')) || ([b]news_[/b]getmoduleoption('authoredit') && $article->uid() == $xoopsUser->getVar('uid')) ) {
       
$isadmin true;
       
$story['adminlink'] = $article->adminlink();
    }
}
Par les lignes
if(is_object($xoopsUser)) {
   if( 
$xoopsUser->isAdmin($xoopsModule->getVar('mid')) || (getmoduleoption('authoredit') && $article->uid() == $xoopsUser->getVar('uid')) ) {
       
$isadmin true;
       
$story['adminlink'] = $article->adminlink();
    }
    else {
       if (
$gperm_handler->checkRight("news_approve"$article->topicid(), $groups$xoopsModule->getVar('mid'))) {
           
$story['adminlink'] = $article->adminlink();
       }
    }
}



Voilà, normalement, maintenant ça remarche.
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

105 Personne(s) en ligne (93 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 105 | Plus ...