Fork me on GitHub




(1) 2 3 »


Re: News 1.4 et vrais modérateurs
Guest_
Citation :

Pourrais-tu proposer ce hack sur le forum avec un zip des fichiers modifés en y incluant la structure des dossiers ?


Et hop:
http://imputrescibles.googlepages.com/Hack_news1.50.zip

Posté le : 04/12/2006 12:09
Partager Twitter Partagez cette article sur GG+
Re: News 1.4 et vrais modérateurs
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
Merci Bob.

Pourrais-tu proposer ce hack sur le forum avec un zip des fichiers modifés en y incluant la structure des dossiers ?

Merci à toi en tout cas pour ces précisions.

Posté le : 04/12/2006 10:44

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: News 1.4 et vrais modérateurs
Guest_
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.

Posté le : 04/12/2006 10:34
Partager Twitter Partagez cette article sur GG+
Re: News 1.4 et vrais modérateurs
Guest_
Il semblerait que ce Hack, qui marchait très bien avec la version précédente ne fonctionne plus avec la 1.50.
En effet, j'obtiens ça:
Fatal error: Call to undefined function: getmoduleoption() in /home/www/region/midi-pyrenees/portail/modules/news/article.php on line 287


Posté le : 04/12/2006 10:14
Partager Twitter Partagez cette article sur GG+
Re: News 1.4 et vrais modérateurs
Aspirant
Inscrit: 13/02/2003 11:29
Messages: 45
Pour moi également c'est un véritable probleme.
Le soucis c'est que dans le module droits d'approbation $ droit d'administration.
Je suis alors parti sur la regle :
droit d'approbation = droit d'édition ou d'effacement.
Aprés plusieurs modifs, je suis arrivé à mes fin, chaque groupe peut approuver, editer,effacer les articles des catégories dont ils ont les droits d'approbation sans passer par l'administrtion.
Dans mon cas j'utilise le groupe des articles en attentes en haute de toutes les pages pour informer chaque groupe d'utilisateurs sur les articles qu'il doit approuver.

Voici la liste des modifications effectuées (attention c'est parti)

/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);
            
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(
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')) || (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à, ouf, c'est tout...
J'espère que cela vous conviendra autant qu'a moi

Posté le : 24/10/2005 00:59
Partager Twitter Partagez cette article sur GG+
Re: News 1.4 et vrais modérateurs
Régulier
Inscrit: 14/06/2004 13:20
Messages: 374
Salut,

en ce qui me concerne hervé, je trouve cette fonctionnalité essentielle. Surtout dans le domaine associatif ...
Allez laisse toi aller

Posté le : 22/10/2005 21:00

Baronxoops d'accord, mais loin d'être le roi
Partager Twitter Partagez cette article sur GG+
Re: News 1.4 et vrais modérateurs
Xoops accro
Inscrit: 04/02/2003 01:54
De Le Mans
Messages: 12273
Citation :
ca mérite réflexion.
Pour ceux qui auraient pas compris, Alain si j'ai pas ma dose je ne sais pas si je pourrai réfléchir assez longtemps pour aboutir à la solution que tu souhaites :

Open in new window

Posté le : 30/09/2005 21:35
Partager Twitter Partagez cette article sur GG+
Re: News 1.4 et vrais modérateurs
Guest_
ca mérite réflexion.

Posté le : 30/09/2005 19:45
Partager Twitter Partagez cette article sur GG+
Re: News 1.4 et vrais modérateurs
Admin Frxoops
Inscrit: 16/05/2003 18:10
De Rhone-Alpes
Messages: 4051
Sur un aspect pratique oui, par contre les modérateurs ne sont pas tous mordus d'informatique et ne sont pas à l'abri de fausses manips...

Je souhaite juste qu'ils valident / modifient / suppriment les articles en attente.

Posté le : 30/09/2005 19:34

Open in new window
Partager Twitter Partagez cette article sur GG+
Re: News 1.4 et vrais modérateurs
Guest_
Rien ne me le confirme effectivement.
Par contre être modérateur est avant tout une question de confiance

Posté le : 30/09/2005 19:29
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 3 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

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