Wikini

DiscussionsActionOwnerChanges

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-184-72-177-47.compute-1.amazonaws.com

OwnerChanges


Introduction


J'ai lu plusieurs fois que l'implémentation d'une action permettant d'afficher les dernières modifications effectuées par le propriétaire de la page courante serait bienvenue. Je me suis mis en tête de proposer une solution à cette demande (si elle n'existe pas déjà). Je me suis en fait inspiré de l'ActionMyChanges, en l'adaptant pour retourner les derniers changements par le possesseur de la page courante.
J'ai utilisé les commentaires de LordFarquaad pour écrire et optimiser cette action, à savoir :

Commentaires de LordFarquaad sur l'ActionMyChanges :
  1. Le code source de cette fonction n'est vraiment pas optimisé...
  2. Elle utilise aussi une synthaxe dépréciée pour avoir la première lettre du nom de chaque page, elle met cette lettre en majuscule (alors que c'est sensé être un NomWiki...) mais lui permet d'être encore une minuscule (ou une vigule !) dans le preg_match() !!!
  3. Le preg_match, lui, sert à vérifier si la première lettre est bien une... lettre (re-alors que c'est sensé...).
  4. Je suggère aussi d'ajouter des paramètres (comme une limite...), et d'envisager une fonction de ce genre pour afficher les pages de celui qui possède la page sur laquelle elle est appelée... En fait dans son utilisation actuelle, je n'en vois pas trop l'intérêt... -- LordFarquaad

-- MickaelMenu (MickaelMenuASuivre)


Nouvelles



Utilisation


Il faut utiliser l'action OwnerChanges pour afficher les modifications du propriétaire.
Cela affichera les mêmes informations que l'ActionMyChanges mais pour le propriétaire de la page. L'affichage pourrait donc ressembler à ceci :

Vous n'êtes pas identifié : impossible d'afficher la liste des pages que vous avez modifiées.

Installation


L'installation est très simple puisqu'aucun fichier de WikiNi ne doit être modifié.


<?php

/**
 * OwnerChanges pour WikiNi - GNU General Public License
 * 
 * @author Mickaël Menu <mickael.menu@gmail.com> 
 * @copyright Copyright (c) 2005 Mickal Menu
 * @category actions
 * @version 0.0.1
 * @since 2005-03-26
 * @license http://www.gnu.org/licenses/gpl.html GNU General Public License
 * @link http://www.wikini.net/
 */

if (!defined("WIKINI_VERSION"))
{
  exit();
}

// Récupération du propriétaire de la page.
$oc_owner $this->GetPageOwner($this->GetPageTag());

if (!
$oc_owner
{
  echo 
$this->Format('**Cette page ne possède pas de propriétaire.**---');
}
else 
{
  
$oc_count 0;

  
// Récupération des paramètres.
  
$oc_bydate $this->GetParameter('bydate');
  
  if (
$oc_bydate)
  {
    echo 
$this->Format('**Liste des pages que '.$oc_owner.' a modifié, triées par date de modification.**--- ---');

    
// Récupération des pages.
    
$oc_pages $this->LoadAll("SELECT tag, time FROM ".$this->config["table_prefix"]."pages WHERE user='".$oc_owner."' AND tag NOT LIKE 'Comment%' ORDER BY time ASC, tag ASC");

    if (
$oc_pages)
    {
      foreach (
$oc_pages as $oc_page)
      {
        
$oc_edited_pages[$oc_page["tag"]] = $oc_page["time"];
      }
      
      
arsort($oc_edited_pages);
      
      foreach (
$oc_edited_pages as $oc_page["tag"] => $oc_page["time"])
      {
        
// Affichage de la date.
        
list($oc_day$oc_time) = explode(" "$oc_page["time"]);
        if (
$oc_day != $oc_current_day)
        {
          if (
$oc_current_day)
            echo 
$this->Format('---');
          echo 
$this->Format('**'.$oc_day.':**---');
          
$oc_current_day $oc_day;
        }
        
        
// Affichage des pages.
        
echo "&nbsp;&nbsp;&nbsp;($oc_time) (",$this->ComposeLinkToPage($oc_page["tag"], "revisions""history"0),") ",$this->ComposeLinkToPage($oc_page["tag"], """"0),"<br />\n";
        
$oc_count++;      
      }

      if (
$oc_count == 0)
      {
        echo 
$this->Format('//'.oc_owner.' n\'a pas modifié de page.//');
      }
    }
    else
    {
      echo 
$this->Format('//Aucune page trouvée.//');
    }
  }
  else
  {
    echo 
$this->Format('**Liste des pages que '.$oc_owner.' a modifié, triées par ordre alphabétique.**--- ---');

    
// Récupération des pages.
    
$oc_pages $this->LoadAll("SELECT tag, time FROM ".$this->config["table_prefix"]."pages WHERE user='".$oc_owner."' AND tag NOT LIKE 'Comment%' ORDER BY tag ASC, time DESC");

    if (
$oc_pages)
    {
      foreach (
$oc_pages as $oc_page)
      {
        if (
$oc_last_tag != $oc_page["tag"])
        {
          
$oc_last_tag $oc_page["tag"];
          
$oc_first_char $oc_page["tag"][0];
          
          if (
$oc_first_char != $oc_current_char)
          {
            if (
$oc_current_char)
              echo 
$this->Format('---');
            echo 
$this->Format('**'.$oc_first_char.'**---');
            
$oc_current_char $oc_first_char;
          }
                    
          
// Affichage des pages.
          
echo "&nbsp;&nbsp;&nbsp;(",$oc_page["time"],") (",$this->ComposeLinkToPage($oc_page["tag"], "revisions""history"0),") ",$this->ComposeLinkToPage($oc_page["tag"], """"0),"<br />\n";
        
          
$oc_count++;
        }
        
        if (
$oc_count == 0)
        {
          echo 
$this->Format('//'.oc_owner.' n\'a pas modifié de page.//');
        }
      }
    }
    else
    {
      echo 
$this->Format('//Aucune page trouvée.//');
    }
  }
}

?>


Bogues


Aucun bogues connus à l'heure actuelle, réfèrencez-les ici

Suggestions


Je suis ouvert à toute suggestion d'amélioration de cette action, et n'hésitez pas à publier sur cette page vos modifications. Je vous demanderai juste de respecter la charte du site lors de vos réponses. A savoir : organisez proprement votre texte et signez-le.
Pour me contacter directement : MickaelMenu
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]