Fork me on GitHub

Rapport de message :*
 

Re: News 1.68 block moderate

Titre du sujet : Re: News 1.68 block moderate
par lima91150 sur 20/02/2013 11:13:19

Les modification présenté sont repris du post suivant :
https://www.frxoops.org/modules/newbb/ ... t&order=DESC&type=&mode=0

et adapter pour la version 1.68 du module news.

les principales modification ont été de rajouter "news_" devant les fonctions suivantes:

news_updateCache();

news_getmoduleoption('authoredit')

news_is_admin_group


Fichier /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 ligne     $storyarray NewsStory :: getAllSubmitted(0truenews_getmoduleoption('restrictindex')); Par la ligne     $storyarray NewsStory :: getAllSubmitted(0truetrue);


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=edit&amp;storyid=" $newstory->storyid() . "'>" _EDIT"</a> - <a href='" XOOPS_URL "/modules/news/admin/index.php?op=delete&amp;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 134: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']);             }         }


Et a la fin de la page on y ajoute la case delete pour le block moderate :
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);             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;



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 :


Remplacer les lignes (a partir de la 243)

if(
is_object($xoopsUser)) {
   if( 
$xoopsUser->isAdmin($xoopsModule->getVar('mid')) || (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')) || (news_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();
        }
        }
    }


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;           }        }



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')) || (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')) || (news_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();         }         }     }



Voila ! J'obtient maitenant un vrai service de moderateur !!
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

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