WikiNi

DiscussionsActionActivity

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.191.84
Nom de la contribution : Action Activity
Description : action légère permettant de visualiser quels sont les sujets les plus actifs du moments (une sorte de SujetDuMoment généré dynamiquement)
Page de discussions : DiscussionsActionActivity
Type de contribution : Action
Fonctionne avec : WikiNi > 0.1.1 (en principe)
Intégration technique : sauver le code fourni dans un fichier nommé activity.php et le placer dans le dossier actions/
Mainteneur : LordFarquaad (ProjetsDeLordFarquaadPourWikiNi)
Licence : GPL
Dernière version : 0.1.1
Dernière livraison : 2006-01-18
Accès au code et mise en oeuvre : la page DiscussionsActionActivity
Démonstration :
Intégration au projet WikiNi : souhaitée par LordFarquaad: je trouve que cette action aurait bien sa place dans le tableau de bord
Bugs : [signaler ici les bugs connus]

L'action {{activity}} permet d'afficher la liste des pages les plus modifiées au cours des derniers jours, elle peut prendre plusieurs paramètres:

Changelog

2006-01-18
2006-01-16

Code source de l'action

<?php
// auteur: Didier Loiseau
// license: GPL

$days = (int) $this->GetParameter('days');
$maxdays = (int) $this->GetConfigValue('pages_purge_time');
$days $days $days 7;
if (
$maxdays && $days $maxdays)
{
    echo 
'<strong>ActionActivity</strong>: Attention la valeur de ' $days ' jours est trop grande ' .
            
'car la période de purge est de ' $maxdays ' jours, cette valeur sera donc employée.<br />';
    
$days $maxdays;
}

$max = (int) $this->GetParameter('max');
$max $max 50 || $max 10 $max;

$user trim($this->GetParameter('user'));
$user_sql $user 'AND user = "' addslashes($user) . '"' '';

$exclude trim($this->GetParameter('exclude'));
$excl_sql '';
if (
$exclude// we have to create an exclusion list
{
    
$excl_sql 'AND tag NOT IN (';
    
$excl_list explode(','$exclude);
    
$first true;
    foreach (
$excl_list as $excl)
    {
        if (!
$excl trim($excl))
        {
            continue;
        }
        if (
$first)
        {
            
$first false;
        }
        else
        {
            
$excl_sql .= ', ';
        }
        
        
$excl_sql .= '"' addslashes($excl) . '"';
    }
    if (
$first// empty list
    
{
        
$excl_sql '';
    }
    else 
// close the list
    
{
        
$excl_sql .= ')';
    }
}

$prefix $this->GetConfigValue('table_prefix');

$sql "SELECT tag, count(*) count, max(time) max_time " .
        
"FROM {$prefix}pages " .
        
"WHERE comment_on = '' $excl_sql $user_sql AND time > date_sub(now(), INTERVAL '$days' DAY) " .
        
"GROUP BY tag " .
        
"ORDER BY count DESC, max_time DESC " .
        
"LIMIT $max";
        
if (
$pages $this->LoadAll($sql))
{
    
/*
    echo 'Pages les plus actives des ' . $days . ' derniers jours';
    if ($user)
    {
        echo ' pour l\'utilisateur ', $this->ComposeLinkToPage($user);
    }
    */
    
echo "<ul>\n";
    foreach (
$pages as $page)
    {
        echo 
'<li>';
        echo 
$this->ComposeLinkToPage($page['tag']);
        echo 
' . . . . ' $page['count'] . " &eacute;dition(s), derni&egrave;re le $page[max_time]</li>\n";
    }
    echo 
"</ul>";
}

?>


juste un rajout du pluriel sur le mot édition uniquement lorsque nécessaire, l'auteur intègre ou pas... code ci-dessous destiné à être supprimé. --Xf75013
<?php
/*    auteur: Didier Loiseau
    micromodif Xf75013 (rajout du pluriel)

    license: GPL

    {{activity days="paramètre" max="paramètre" exclude="paramètre" user="paramètre"}}
*/

$days = (int) $this->GetParameter('days');
$maxdays = (int) $this->GetConfigValue('pages_purge_time');
$days $days $days 7;
if (
$maxdays && $days $maxdays)
{
    echo 
'<strong>ActionActivity</strong>: Attention la valeur de ' $days ' jours est trop grande ' .
            
'car la période de purge est de ' $maxdays ' jours, cette valeur sera donc employée.<br />';
    
$days $maxdays;
}

$max = (int) $this->GetParameter('max');
$max $max 50 || $max 10 $max;

$user trim($this->GetParameter('user'));
$user_sql $user 'AND user = "' addslashes($user) . '"' '';

$exclude trim($this->GetParameter('exclude'));
$excl_sql '';
if (
$exclude// we have to create an exclusion list
{
    
$excl_sql 'AND tag NOT IN (';
    
$excl_list explode(','$exclude);
    
$first true;
    foreach (
$excl_list as $excl)
    {
        if (!
$excl trim($excl))
        {
            continue;
        }
        if (
$first)
        {
            
$first false;
        }
        else
        {
            
$excl_sql .= ', ';
        }
        
        
$excl_sql .= '"' addslashes($excl) . '"';
    }
    if (
$first// empty list
    
{
        
$excl_sql '';
    }
    else 
// close the list
    
{
        
$excl_sql .= ')';
    }
}

$prefix $this->GetConfigValue('table_prefix');

$sql "SELECT tag, count(*) count, max(time) max_time " .
        
"FROM {$prefix}pages " .
        
"WHERE comment_on = '' $excl_sql $user_sql AND time > date_sub(now(), INTERVAL '$days' DAY) " .
        
"GROUP BY tag " .
        
"ORDER BY count DESC, max_time DESC " .
        
"LIMIT $max";
        
if (
$pages $this->LoadAll($sql))
{
    
/*
    echo 'Pages les plus actives des ' . $days . ' derniers jours';
    if ($user)
    {
        echo ' pour l\'utilisateur ', $this->ComposeLinkToPage($user);
    }
    */
    
echo "<ul>\n";
    foreach (
$pages as $page)
    {
        
$pluriel '';
        if (
$page['count'] > 1)
        {
            
$pluriel 's';
        }
            echo 
'<li>';
            echo 
$this->ComposeLinkToPage($page['tag']);
            echo 
' . . . . ' $page['count'] . " &eacute;dition" $pluriel ", derni&egrave;re le $page[max_time]</li>\n";
    }
    echo 
"</ul>";
}

?>

Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]