plugins/AdminAlerts.php
changeset 0 f166d28a778d
child 1 133e54e4f21d
equal deleted inserted replaced
-1:000000000000 0:f166d28a778d
       
     1 <?php
       
     2 /*
       
     3 Plugin Name: Administrator's alerts
       
     4 Plugin URI: http://enanocms.org/
       
     5 Description: Provides a sidebar block with information on unapproved comments, inactive users, and pages with deletion votes
       
     6 Author: Dan Fuhry
       
     7 Version: 1.0.1
       
     8 Author URI: http://enanocms.org/
       
     9 */
       
    10 
       
    11 /*
       
    12  * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
       
    13  * Version 1.0.1 (Loch Ness)
       
    14  * Copyright (C) 2006-2007 Dan Fuhry
       
    15  *
       
    16  * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
       
    17  * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
       
    18  *
       
    19  * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
       
    20  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
       
    21  */
       
    22  
       
    23 global $db, $session, $paths, $template, $plugins; // Common objects
       
    24 
       
    25 $plugins->attachHook('common_post', 'adminalerts_setup();');
       
    26 
       
    27 function adminalerts_setup()
       
    28 {
       
    29   global $db, $session, $paths, $template, $plugins; // Common objects
       
    30   
       
    31   // restrict this block to administrators
       
    32   $content = '{restrict auth_admin}';
       
    33   
       
    34   $content .= '<p style="margin: 0; padding: 0;"><b>Unapproved comments:</b><br />';
       
    35   
       
    36   // unapproved comments
       
    37   $q = $db->sql_query('SELECT comment_id, page_id, namespace, user_id, name, comment_data, subject, time FROM '.table_prefix.'comments WHERE approved=0 ORDER BY time ASC;');
       
    38   if ( !$q )
       
    39     $db->_die();
       
    40   
       
    41   if ( $db->numrows() < 1 )
       
    42   {
       
    43     $content .= 'No unapproved comments.';
       
    44   }
       
    45   else
       
    46   {
       
    47     $content .= '<div class="tblholder" style="max-height: 100px; clip: rect(0px,auto,auto,0px); overflow: auto;">
       
    48                  <table border="0" cellspacing="1" cellpadding="2">';
       
    49     $class = 'row3';
       
    50     while ( $row = $db->fetchrow() )
       
    51     {
       
    52       $class = ( $class == 'row1' ) ? 'row3' : 'row1';
       
    53       $preview = substr($row['comment_data'], 0, 100);
       
    54       $preview = htmlspecialchars($preview);
       
    55       $subj = substr($row['subject'], 0, 20);
       
    56       if ( $subj != $row['subject'] )
       
    57         $subj .= '...';
       
    58       $subj = htmlspecialchars($subj);
       
    59       if ( $row['user_id'] == 1 )
       
    60       {
       
    61         $name_link = htmlspecialchars($row['name']) . ' [G]';
       
    62       }
       
    63       else
       
    64       {
       
    65         $memberlist_link = makeUrlNS('Special', 'Memberlist', 'finduser=' . urlencode($row['name']), true);
       
    66         $name = urlencode($row['name']);
       
    67         $name_link = "<a href=\"$memberlist_link\">$name</a>";
       
    68       }
       
    69       
       
    70       $page_url = makeUrlNS($row['namespace'], sanitize_page_id($row['page_id']));
       
    71       $title    = get_page_title_ns($row['page_id'], $row['namespace']);
       
    72       $page_link = "<a href=\"$page_url#do:comments\">$title</a>";
       
    73       $timestamp = date('n/j H:i', intval($row['time']));
       
    74       
       
    75       $content .= '<tr><td title="' . $preview . '" class="' . $class . '">';
       
    76       
       
    77       $content .= '<b>' . $subj . '</b> by ' . $name_link . '<br />';
       
    78       $content .= "$page_link, $timestamp";
       
    79       
       
    80       $content .= '</td></tr>';
       
    81     }
       
    82     $content .= '</table></div>';
       
    83   }
       
    84   $db->free_result();
       
    85   
       
    86   $content .= '</p>';
       
    87   
       
    88   // Inactive users
       
    89   
       
    90   $content .= '<p style="margin: 3px 0 0 0; padding: 0;"><b>Inactive user accounts:</b><br />';
       
    91   
       
    92   $q = $db->sql_query('SELECT username,reg_time FROM '.table_prefix.'users WHERE account_active=0 AND user_id > 1;');
       
    93   if ( !$q )
       
    94     $db->_die();
       
    95   
       
    96   if ( $db->numrows() < 1 )
       
    97   {
       
    98     $content .= 'No inactive users.';
       
    99   }
       
   100   else
       
   101   {
       
   102     $users = array();
       
   103     while ( $row = $db->fetchrow() )
       
   104     {
       
   105       $url  = makeUrlNS('Special', 'Administration', 'module=' . $paths->nslist['Admin'] . 'UserManager&src=get&username=' . urlencode($row['username']), true);
       
   106       $uname= htmlspecialchars($row['username']);
       
   107       $uname_js = addslashes($row['username']);
       
   108       $link = "<a href=\"$url\" onclick=\"ajaxAdminUser('$uname_js'); return false;\">$uname</a>";
       
   109       $users[] = $link;
       
   110     }
       
   111     $content .= implode(', ', $users);
       
   112   }
       
   113   $db->free_result();
       
   114   
       
   115   $content .= '</p>';
       
   116   
       
   117   // Pages with deletion requests
       
   118   
       
   119   $content .= '<p style="margin: 3px 0 0 0; padding: 0;"><b>Pages voted for deletion:</b><br />';
       
   120   
       
   121   $q = $db->sql_query('SELECT name, urlname, namespace, delvotes FROM '.table_prefix.'pages WHERE delvotes > 0 ORDER BY delvotes DESC;');
       
   122   if ( !$q )
       
   123     $db->_die();
       
   124   
       
   125   if ( $db->numrows() < 1 )
       
   126   {
       
   127     $content .= 'No pages nominated for deletion.';
       
   128   }
       
   129   else
       
   130   {
       
   131     $pages = array();
       
   132     while ( $row = $db->fetchrow() )
       
   133     {
       
   134       $url = makeUrlNS($row['namespace'], sanitize_page_id($row['urlname']), false, true);
       
   135       $name = htmlspecialchars($row['name']);
       
   136       $link = "<a href=\"$url\">$name</a> ({$row['delvotes']})";
       
   137       $pages[] = $link;
       
   138     }
       
   139     $content .= implode("<br />\n      ", $pages);
       
   140   }
       
   141   $db->free_result();
       
   142   
       
   143   $content .= '</p>';
       
   144   
       
   145   $template->sidebar_widget('Administrator alerts', '<div style="padding: 5px; font-size: smaller;">' . $content . '</div>');
       
   146 }
       
   147 
       
   148 ?>