Wikini

DiscussionsActionOwnerPages

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-54-242-96-240.compute-1.amazonaws.com

OwnerPages


Introduction


J'ai lu plusieurs fois que l'implémentation d'une action permettant d'afficher les pages dont le propriétaire de la page courante dirige 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'ActionMyPages, en l'adaptant pour retourner les pages dont le possesseur de la page courante est propriétaire.
J'ai utilisé les commentaires de LordFarquaad pour écrire et optimiser cette action, à savoir :

Commentaires de LordFarquaad sur l'ActionMyPages :
  1. Le code source de cette fonction n'est vraiment pas optimisée, déjà elle charge toutes les pages rien que pour avoir leur tag...
  2. ensuite elle vérifie pour chaque page si la personne en est le propriétaire...
  3. Elle utilise aussi une syntaxe 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 censé être un NomWiki...) mais lui permet d'être encore une minuscule (ou une virgule !) dans le preg_match() !!!
  4. Le preg_match, lui, sert à vérifier si la première lettre est bien une... lettre (re-alors que c'est censé...).
  5. Pour finir elle soupçonne que le wiki n'ait pas encore de pages... mais qu'est-on en train d'afficher alors ? Un aperçu ? Peut-être mais il faudrait avoir supprimé toutes les pages même la PagePrincipale... Enfin c'est juste quelques lignes de code inutiles quoi...
  6. Je suggère aussi de permettre 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 OwnerPages pour afficher les pages du propriétaire.
Cela affichera les mêmes informations que l'ActionMyPages 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

/**
 * OwnerPages 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-24
 * @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.
$op_owner $this->GetPageOwner($this->GetPageTag());

if (!
$op_owner
{
  echo 
$this->Format('**Cette page ne possède pas de propriétaire.**---');
}
else 
{
  echo 
$this->Format('**Liste des pages dont '.$op_owner.' est le propriétaire.**--- ---');
  
  
// Récupération des pages.
  
$op_pages $this->LoadAll("SELECT DISTINCT tag FROM ".$this->config["table_prefix"]."pages WHERE owner='".$op_owner."' ORDER BY tag");
  
  foreach (
$op_pages as $op_page)
  {
    if (!
preg_match("/^Comment/"$op_page["tag"]))
    {
      
$op_first_char $op_page["tag"][0];
      
      if (
$op_first_char != $op_current_char) {
        if (
$op_current_char)
          echo 
$this->Format('---');
        
        echo 
$this->Format('**'.$op_first_char.'**---');
        
$op_current_char $op_first_char;
      }
      echo 
$this->Format('""'.$this->ComposeLinkToPage($op_page["tag"]).'""---');
    }
  }
}

?>


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 demanderais 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

Pour une prochaine révision, je vais probablement ajouter les paramêtres 'exclude`, et 'user`.
Lors de la programmation de cette action, j'ai utilisé la documentation développeur (qui est génial :)) et j'ai remarqué l'absence d'une méthode qui pourrait être utile dans wakka.php : LoadPageByOwner?. J'ai codé une première esquisse à partir de OwnerPages :
<?php
/**
 * Chargement des pages par propriétaire.
 * 
 * Charge toutes les pages dont le propriétaire est $owner.
 *
 * @return array 
 * @parameter string $owner Nom du propriétaire.
 */
function LoadPageByOwner($owner)
{
  return 
$this>LoadSingle("select distinct tag from ".$this->config["table_prefix"]."pages where owner = '".mysql_escape_string($owner)."' order by tag");
}
?>

Si ca peut intéresser les développeurs, l'inconvénient étant qu'on ne récupère que le champ 'tag`.
-- MickaelMenu
Commentaires [Cacher commentaires/formulaire]