Updated header block; plugin now generates content only if current user is an admin (doh, save some resources already)
authorDan
Sat, 29 Nov 2008 01:21:21 -0500
changeset 1 133e54e4f21d
parent 0 f166d28a778d
child 2 a63e0337a68e
Updated header block; plugin now generates content only if current user is an admin (doh, save some resources already)
plugins/AdminAlerts.php
--- a/plugins/AdminAlerts.php	Sat Nov 29 00:58:09 2008 -0500
+++ b/plugins/AdminAlerts.php	Sat Nov 29 01:21:21 2008 -0500
@@ -1,17 +1,19 @@
 <?php
-/*
-Plugin Name: Administrator's alerts
-Plugin URI: http://enanocms.org/
-Description: Provides a sidebar block with information on unapproved comments, inactive users, and pages with deletion votes
-Author: Dan Fuhry
-Version: 1.0.1
-Author URI: http://enanocms.org/
-*/
+/**!info**
+{
+  "Plugin Name"  : "Administrators' Alerts",
+  "Plugin URI"   : "http://enanocms.org/plugin/admin-alerts",
+  "Description"  : "Provides a sidebar block with information on unapproved comments, inactive users, and pages with deletion votes",
+  "Author"       : "Dan Fuhry",
+  "Version"      : "0.1",
+  "Author URI"   : "http://enanocms.org/"
+}
+**!*/
 
 /*
- * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
- * Version 1.0.1 (Loch Ness)
- * Copyright (C) 2006-2007 Dan Fuhry
+ * Administrators' Alerts plugin for Enano CMS
+ * Version 0.1
+ * Copyright (C) 2006-2008 Dan Fuhry
  *
  * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
@@ -31,116 +33,120 @@
   // restrict this block to administrators
   $content = '{restrict auth_admin}';
   
-  $content .= '<p style="margin: 0; padding: 0;"><b>Unapproved comments:</b><br />';
-  
-  // unapproved comments
-  $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;');
-  if ( !$q )
-    $db->_die();
-  
-  if ( $db->numrows() < 1 )
+  if ( $session->user_level >= USER_LEVEL_ADMIN )
   {
-    $content .= 'No unapproved comments.';
-  }
-  else
-  {
-    $content .= '<div class="tblholder" style="max-height: 100px; clip: rect(0px,auto,auto,0px); overflow: auto;">
-                 <table border="0" cellspacing="1" cellpadding="2">';
-    $class = 'row3';
-    while ( $row = $db->fetchrow() )
+    
+    $content .= '<p style="margin: 0; padding: 0;"><b>Unapproved comments:</b><br />';
+    
+    // unapproved comments
+    $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;');
+    if ( !$q )
+      $db->_die();
+    
+    if ( $db->numrows() < 1 )
+    {
+      $content .= 'No unapproved comments.';
+    }
+    else
     {
-      $class = ( $class == 'row1' ) ? 'row3' : 'row1';
-      $preview = substr($row['comment_data'], 0, 100);
-      $preview = htmlspecialchars($preview);
-      $subj = substr($row['subject'], 0, 20);
-      if ( $subj != $row['subject'] )
-        $subj .= '...';
-      $subj = htmlspecialchars($subj);
-      if ( $row['user_id'] == 1 )
-      {
-        $name_link = htmlspecialchars($row['name']) . ' [G]';
-      }
-      else
+      $content .= '<div class="tblholder" style="max-height: 100px; clip: rect(0px,auto,auto,0px); overflow: auto;">
+                   <table border="0" cellspacing="1" cellpadding="2">';
+      $class = 'row3';
+      while ( $row = $db->fetchrow() )
       {
-        $memberlist_link = makeUrlNS('Special', 'Memberlist', 'finduser=' . urlencode($row['name']), true);
-        $name = urlencode($row['name']);
-        $name_link = "<a href=\"$memberlist_link\">$name</a>";
+        $class = ( $class == 'row1' ) ? 'row3' : 'row1';
+        $preview = substr($row['comment_data'], 0, 100);
+        $preview = htmlspecialchars($preview);
+        $subj = substr($row['subject'], 0, 20);
+        if ( $subj != $row['subject'] )
+          $subj .= '...';
+        $subj = htmlspecialchars($subj);
+        if ( $row['user_id'] == 1 )
+        {
+          $name_link = htmlspecialchars($row['name']) . ' [G]';
+        }
+        else
+        {
+          $memberlist_link = makeUrlNS('Special', 'Memberlist', 'finduser=' . urlencode($row['name']), true);
+          $name = urlencode($row['name']);
+          $name_link = "<a href=\"$memberlist_link\">$name</a>";
+        }
+        
+        $page_url = makeUrlNS($row['namespace'], sanitize_page_id($row['page_id']));
+        $title    = get_page_title_ns($row['page_id'], $row['namespace']);
+        $page_link = "<a href=\"$page_url#do:comments\">$title</a>";
+        $timestamp = date('n/j H:i', intval($row['time']));
+        
+        $content .= '<tr><td title="' . $preview . '" class="' . $class . '">';
+        
+        $content .= '<b>' . $subj . '</b> by ' . $name_link . '<br />';
+        $content .= "$page_link, $timestamp";
+        
+        $content .= '</td></tr>';
       }
-      
-      $page_url = makeUrlNS($row['namespace'], sanitize_page_id($row['page_id']));
-      $title    = get_page_title_ns($row['page_id'], $row['namespace']);
-      $page_link = "<a href=\"$page_url#do:comments\">$title</a>";
-      $timestamp = date('n/j H:i', intval($row['time']));
-      
-      $content .= '<tr><td title="' . $preview . '" class="' . $class . '">';
-      
-      $content .= '<b>' . $subj . '</b> by ' . $name_link . '<br />';
-      $content .= "$page_link, $timestamp";
-      
-      $content .= '</td></tr>';
+      $content .= '</table></div>';
+    }
+    $db->free_result();
+    
+    $content .= '</p>';
+    
+    // Inactive users
+    
+    $content .= '<p style="margin: 3px 0 0 0; padding: 0;"><b>Inactive user accounts:</b><br />';
+    
+    $q = $db->sql_query('SELECT username,reg_time FROM '.table_prefix.'users WHERE account_active=0 AND user_id > 1;');
+    if ( !$q )
+      $db->_die();
+    
+    if ( $db->numrows() < 1 )
+    {
+      $content .= 'No inactive users.';
+    }
+    else
+    {
+      $users = array();
+      while ( $row = $db->fetchrow() )
+      {
+        $url  = makeUrlNS('Special', 'Administration', 'module=' . $paths->nslist['Admin'] . 'UserManager&src=get&username=' . urlencode($row['username']), true);
+        $uname= htmlspecialchars($row['username']);
+        $uname_js = addslashes($row['username']);
+        $link = "<a href=\"$url\" onclick=\"ajaxAdminUser('$uname_js'); return false;\">$uname</a>";
+        $users[] = $link;
+      }
+      $content .= implode(', ', $users);
     }
-    $content .= '</table></div>';
+    $db->free_result();
+    
+    $content .= '</p>';
+    
+    // Pages with deletion requests
+    
+    $content .= '<p style="margin: 3px 0 0 0; padding: 0;"><b>Pages voted for deletion:</b><br />';
+    
+    $q = $db->sql_query('SELECT name, urlname, namespace, delvotes FROM '.table_prefix.'pages WHERE delvotes > 0 ORDER BY delvotes DESC;');
+    if ( !$q )
+      $db->_die();
+    
+    if ( $db->numrows() < 1 )
+    {
+      $content .= 'No pages nominated for deletion.';
+    }
+    else
+    {
+      $pages = array();
+      while ( $row = $db->fetchrow() )
+      {
+        $url = makeUrlNS($row['namespace'], sanitize_page_id($row['urlname']), false, true);
+        $name = htmlspecialchars($row['name']);
+        $link = "<a href=\"$url\">$name</a> ({$row['delvotes']})";
+        $pages[] = $link;
+      }
+      $content .= implode("<br />\n      ", $pages);
+    }
+    $db->free_result();
+    
+    $content .= '</p>';
   }
-  $db->free_result();
-  
-  $content .= '</p>';
-  
-  // Inactive users
-  
-  $content .= '<p style="margin: 3px 0 0 0; padding: 0;"><b>Inactive user accounts:</b><br />';
-  
-  $q = $db->sql_query('SELECT username,reg_time FROM '.table_prefix.'users WHERE account_active=0 AND user_id > 1;');
-  if ( !$q )
-    $db->_die();
-  
-  if ( $db->numrows() < 1 )
-  {
-    $content .= 'No inactive users.';
-  }
-  else
-  {
-    $users = array();
-    while ( $row = $db->fetchrow() )
-    {
-      $url  = makeUrlNS('Special', 'Administration', 'module=' . $paths->nslist['Admin'] . 'UserManager&src=get&username=' . urlencode($row['username']), true);
-      $uname= htmlspecialchars($row['username']);
-      $uname_js = addslashes($row['username']);
-      $link = "<a href=\"$url\" onclick=\"ajaxAdminUser('$uname_js'); return false;\">$uname</a>";
-      $users[] = $link;
-    }
-    $content .= implode(', ', $users);
-  }
-  $db->free_result();
-  
-  $content .= '</p>';
-  
-  // Pages with deletion requests
-  
-  $content .= '<p style="margin: 3px 0 0 0; padding: 0;"><b>Pages voted for deletion:</b><br />';
-  
-  $q = $db->sql_query('SELECT name, urlname, namespace, delvotes FROM '.table_prefix.'pages WHERE delvotes > 0 ORDER BY delvotes DESC;');
-  if ( !$q )
-    $db->_die();
-  
-  if ( $db->numrows() < 1 )
-  {
-    $content .= 'No pages nominated for deletion.';
-  }
-  else
-  {
-    $pages = array();
-    while ( $row = $db->fetchrow() )
-    {
-      $url = makeUrlNS($row['namespace'], sanitize_page_id($row['urlname']), false, true);
-      $name = htmlspecialchars($row['name']);
-      $link = "<a href=\"$url\">$name</a> ({$row['delvotes']})";
-      $pages[] = $link;
-    }
-    $content .= implode("<br />\n      ", $pages);
-  }
-  $db->free_result();
-  
-  $content .= '</p>';
   
   $template->sidebar_widget('Administrator alerts', '<div style="padding: 5px; font-size: smaller;">' . $content . '</div>');
 }