Rewrote some parts:
[mailer.git] / inc / modules / guest / what-stats.php
index 2727c2d9dc3a3f47f66374fa67e0f0a16bfc5ee8..24193fda39ceff6acfcf80e74d9c62009b5b9cad 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /************************************************************************
- * MXChange v0.2.1                                    Start: 12/14/2003 *
- * ================                             Last change: 08/22/2004 *
+ * Mailer v0.2.1-FINAL                                Start: 12/14/2003 *
+ * ===================                          Last change: 08/22/2004 *
  *                                                                      *
  * -------------------------------------------------------------------- *
  * File              : what-stats.php                                   *
  * $Date::                                                            $ *
  * $Tag:: 0.2.1-FINAL                                                 $ *
  * $Author::                                                          $ *
- * Needs to be in all Files and every File needs "svn propset           *
- * svn:keywords Date Revision" (autoprobset!) at least!!!!!!            *
  * -------------------------------------------------------------------- *
- * Copyright (c) 2003 - 2008 by Roland Haeder                           *
- * For more information visit: http://www.mxchange.org                  *
+ * Copyright (c) 2003 - 2009 by Roland Haeder                           *
+ * Copyright (c) 2009 - 2013 by Mailer Developer Team                   *
+ * For more information visit: http://mxchange.org                      *
  *                                                                      *
  * This program is free software; you can redistribute it and/or modify *
  * it under the terms of the GNU General Public License as published by *
 
 // Some security stuff...
 if (!defined('__SECURITY')) {
-       $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), '/inc') + 4) . '/security.php';
-       require($INC);
-}
+       exit();
+} // END - if
 
 // Add description as navigation point
-ADD_DESCR('guest', __FILE__);
-
-// Derterminate which stats we want and set mode and title for the link below stats block
-if (!REQUEST_ISSET_GET(('mode'))) REQUEST_SET_GET('mode', strtolower(getConfig('guest_stats')));
+addYouAreHereLink('guest', __FILE__);
+
+// This part only works if ext-user is active
+if ((!isExtensionActive('user')) && (!isAdmin())) {
+       displayMessage('{%pipe,generateExtensionInactiveNotInstalledMessage=user%}');
+       return;
+} // END - if
+
+// Default mode is from config
+$do = getConfig('guest_stats');
+
+// Determine which stats are wanted and set mode and title for the link below stats block
+if (isGetRequestElementSet('do')) {
+       // Use it from get value
+       $do = strtoupper(getRequestElement('do'));
+} // END - if
+
+switch ($do) {
+       case 'MEMBERS' :
+               $lmode = 'MODULES';
+               break;
 
-switch (REQUEST_GET('mode')) {
-       case "members" :
-               setConfigEntry('guest_stats', "MEMBERS");
-               $lmode = "modules";
-               $ltitle = getMessage('GUEST_STATS_MODULES');
+       case 'MODULES' :
+               $lmode = 'MEMBERS';
                break;
 
-       case "modules" :
-               setConfigEntry('guest_stats', "MODULES");
-               $lmode = "members";
-               $ltitle = getMessage('GUEST_STATS_MEMBERS');
+       case 'INACTIVE':
+               $lmode = 'INACTIVE';
                break;
 
-       case "inactive":
-               setConfigEntry('guest_stats', "INACTIVE");
-               $lmode = "inactive";
-               $ltitle = getMessage('GUEST_STATS_INACTIVE');
+       default:
+               // Unsupported mode
+               reportBug(__FILE__, __LINE__, sprintf('Unsupported mode <span class="data">%s</span> detected.', sqlEscapeString($do)));
                break;
-}
-
-switch (getConfig('guest_stats'))
-{
-case "MEMBERS": // Statistics about your members
-       // Members yesterday / today online
-       $ymem = SQL_NUMROWS(SQL_QUERY("SELECT userid FROM `{!_MYSQL_PREFIX!}_user_data` WHERE last_online >= ".constant('START_YDAY')." AND last_online < ".constant('START_TDAY')." AND `status`='CONFIRMED'", __FILE__, __LINE__));
-       $tmem = SQL_NUMROWS(SQL_QUERY("SELECT userid FROM `{!_MYSQL_PREFIX!}_user_data` WHERE last_online >= ".constant('START_TDAY')." AND `status`='CONFIRMED'", __FILE__, __LINE__));
-
-       // Yesterday / today registered
-       $yreg = SQL_NUMROWS(SQL_QUERY("SELECT userid FROM `{!_MYSQL_PREFIX!}_user_data` WHERE joined >= ".constant('START_YDAY')." AND joined < ".constant('START_TDAY'), __FILE__, __LINE__));
-       $treg = SQL_NUMROWS(SQL_QUERY("SELECT userid FROM `{!_MYSQL_PREFIX!}_user_data` WHERE joined >= ".constant('START_TDAY'), __FILE__, __LINE__));
-
-       // Only males / females
-       $male   = GET_TOTAL_DATA("M", "user_data", 'userid', "gender", true, " AND `status`='CONFIRMED'");
-       $female = GET_TOTAL_DATA("F", "user_data", 'userid', "gender", true, " AND `status`='CONFIRMED'");
-
-       // Unconfirmed accounts
-       $unconfirmed = SQL_NUMROWS(SQL_QUERY("SELECT userid FROM `{!_MYSQL_PREFIX!}_user_data` WHERE status != 'CONFIRMED'", __FILE__, __LINE__));
-
-       // Total members
-       $total = $male + $female;
-
-       // List every month
-       $months = array();
-       for ($idx = 1; $idx < 13; $idx++) {
-               // Copy it so we don't touch the for() loop index
-               $month = $idx;
-
-               // Append leading zero
-               if ($idx < 10) $month = "0".$idx;
-
-               // Count months
-               $months[$month] = GET_TOTAL_DATA(bigintval($month), "user_data", 'userid', "birth_month", true, " AND `status`='CONFIRMED'");
-       }
-
-       // Members in categories
-       $result = SQL_QUERY("SELECT id, cat FROM `{!_MYSQL_PREFIX!}_cats` WHERE `visible`='Y' ORDER BY `id`", __FILE__, __LINE__);
-
-       // Load categories first
-       $cats = array(); $cat_cnt = array();
-       // @TODO This can be somehow rewritten
-       while ($content = SQL_FETCHARRAY($result)) {
-               // Simple...
-               $cats[$content['id']] = $content['cat'];
-       }
-
-       // Now we have all categories loaded, count members
-       foreach ($cats as $id => $dummy) {
-               // We only need id and nothing more to count...
-               $cat_cnt[$id] = GET_TOTAL_DATA(bigintval($id), "user_cats", "id", "cat_id", true);
-       }
-
-       // Prepare data for the template
-       // @TODO Rewrite all these constants
-       define('__TOTAL_USERS' , $total);
-       define('__UNCONFIRMED' , $unconfirmed);
-       define('__MALE_COUNT'  , $male);
-       define('__FEMALE_COUNT', $female);
-       define('__TMEM_COUNT'  , $tmem);
-       define('__YMEM_COUNT'  , $ymem);
-       define('__TREG_COUNT'  , $treg);
-       define('__YREG_COUNT'  , $yreg);
-       define('__LMODE_VALUE' , $lmode);
-       define('__LINK_TITLE'  , $ltitle);
-
-       // Generate monthly stats
-       $SW = 2; $r2 = " right2"; $l = "ll"; $r = "lr"; $OUT = '';
-       foreach ($months as $month => $cnt) {
-               if ($SW == 2) $OUT .= "<tr>\n";
-
-               // Prepare data for template
-               $content = array(
-                       'l_class'  => $l,
-                       'm_descr'  => $GLOBALS['month_descr'][$month],
-                       'r_class'  => $r,
-                       'r2_class' => $r2,
-                       'cnt'      => $cnt
-               );
-
-               // Load row template
-               $OUT .= LOAD_TEMPLATE("guest_stats_month_row", true, $content);
-
-               if ($SW == 2) {
-                       $r2 = '';
-                       $l = "rl"; $r = "rr";
-               } else {
-                       $OUT .= "</tr>\n";
-                       $r2 = " right2";
-                       $l = "ll"; $r = "lr";
-               }
-               $SW = 3 - $SW;
-       }
-       define('__MONTH_STATS_ROWS', $OUT);
+} // END - switch
+
+// Set link title
+$ltitle = '{--GUEST_STATS_' . $lmode . '--}';
+
+// @TODO This can be rewritten in a dynamic include
+switch (strtoupper($do)) {
+       case 'MEMBERS': // Statistics about your members
+               // Only males / females
+               $male   = countSumTotalData('M', 'user_data', 'userid', 'gender', TRUE, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"));
+               $female = countSumTotalData('F', 'user_data', 'userid', 'gender', TRUE, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"));
+
+               // List every month
+               $months = array();
+               for ($idx = 1; $idx < 13; $idx++) {
+                       // Copy it so we don't touch the for() loop index
+                       $month = $idx;
+
+                       // Append leading zero
+                       if ($idx < 10) {
+                               $month = '0' . $idx;
+                       } // END - if
+
+                       // Count months
+                       $months[$month] = countSumTotalData(bigintval($month), 'user_data', 'userid', 'birth_month', TRUE, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"));
+               } // END - for
+
+               // Members in categories
+               $result = sqlQuery("SELECT `id`, `cat` FROM `{?_MYSQL_PREFIX?}_cats` WHERE `visible`='Y' ORDER BY `id` ASC", __FILE__, __LINE__);
+
+               // Load categories first
+               $cats = array(); $cat_cnt = array();
+
+               // @TODO This can be somehow rewritten
+               while ($content = sqlFetchArray($result)) {
+                       // Simple...
+                       $cats[$content['id']] = $content['cat'];
+               } // END - while
+
+               // Now all categories have been loaded, count members
+               foreach ($cats as $id => $dummy) {
+                       // Only the id needs to be counted
+                       // @TODO This doesn't exclude tester accounts
+                       $cat_cnt[$id] = countSumTotalData(bigintval($id), 'user_cats', 'id', 'cat_id', TRUE);
+               } // END - foreach
 
-       // Generate category stats
-       $OUT = ''; $SW = 2;
-       foreach ($cat_cnt as $id => $cnt) {
                // Prepare data for the template
-               $content = array(
-                       'sw'  => $SW,
-                       'cat' => $cats[$id],
-                       'cnt' => $cnt,
-               );
-
-               // Load row template and switch colors
-               $OUT .= LOAD_TEMPLATE("guest_stats_cats_row", true, $content);
-               $SW = 3 - $SW;
-       }
-       define('__CATS_STATS_ROWS', $OUT);
-
-       // Load final template
-       LOAD_TEMPLATE("guest_stats_member");
-       break;
-
-case "MODULES": // TOP10 module clicks
-       $AND = '';
-       if (!IS_ADMIN()) $AND = " AND `locked`='N' AND `visible`='Y'";
-       $guest_t10 = SQL_QUERY("SELECT counter, title FROM `{!_MYSQL_PREFIX!}_guest_menu` WHERE counter > 0".$AND." ORDER BY counter DESC LIMIT 0,10", __FILE__, __LINE__);
-       $mem_t10   = SQL_QUERY("SELECT counter, title FROM `{!_MYSQL_PREFIX!}_member_menu` WHERE counter > 0".$AND." ORDER BY counter DESC LIMIT 0,10", __FILE__, __LINE__);
-       $OUT = '';
-       if ((SQL_NUMROWS($guest_t10) > 0) || (SQL_NUMROWS($mem_t10) > 0)) {
-               // Output header
-               // @TODO Rewrite this to one template and $OUT .= ....
-               OUTPUT_HTML("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"guest_table dashed\" width=\"310\">
-<tr>
-  <td align=\"center\" class=\"guest_stats_title bottom2\" colspan=\"2\"><strong>{--GUEST_TOPTEN_STATS--}</strong></td>
-</tr>");
-       }
-
-       if (SQL_NUMROWS($guest_t10) > 0) {
-               // Guest clicks
-               OUTPUT_HTML("<tr>
-  <td align=\"center\" class=\"guest_title2 bottom2\" colspan=\"2\">{--GUEST_TOP_GUEST_STATS--}</td>
-</tr>");
-               $SW = 2;
-               while ($content = SQL_FETCHARRAY($guest_t10)) {
-                       OUTPUT_HTML("<tr>
-  <td class=\"switch_sw".$SW." bottom2 right2\" align=\"right\" width=\"250\">".$content['title']."&nbsp;</td>
-  <td class=\"switch_sw".$SW." bottom2\" width=\"50\">&nbsp;".$content['counter']."</td>
-</tr>");
-                       $SW = 3 - $SW;
-               }
-       }
-
-       if (SQL_NUMROWS($guest_t10) > 0) {
-               // Guest clicks
-               OUTPUT_HTML("<tr>
-  <td align=\"center\" class=\"guest_title2 bottom2\" colspan=\"2\">{--GUEST_TOP_MEMBER_STATS--}</td>
-</tr>");
-               $SW = 2;
-               while ($content = SQL_FETCHARRAY($mem_t10)) {
-                       OUTPUT_HTML("<tr>
-  <td class=\"switch_sw".$SW." bottom2 right2\" align=\"right\" width=\"250\">".$content['title']."&nbsp;</td>
-  <td class=\"switch_sw".$SW." bottom2\" width=\"50\">&nbsp;".$content['counter']."</td>
-</tr>");
+               $content['total_users']   = ($male + $female);
+               $content['unconfirmed']   = sqlNumRows(sqlQuery("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status` != 'CONFIRMED'" . runFilterChain('user_exclusion_sql', ' '), __FILE__, __LINE__));
+               $content['total_males']   = $male;
+               $content['total_females'] = $female;
+               $content['tmem_count']    = sqlNumRows(sqlQuery("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `last_online` >= {?START_TDAY?}" . runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"), __FILE__, __LINE__));
+               $content['ymem_count']    = sqlNumRows(sqlQuery("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `last_online` >= {?START_YDAY?} AND `last_online` < {?START_TDAY?}" . runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED'"), __FILE__, __LINE__));
+               $content['treg_count']    = sqlNumRows(sqlQuery("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `joined` >= {?START_TDAY?}" . runFilterChain('user_exclusion_sql', ' '), __FILE__, __LINE__));
+               $content['yreg_count']    = sqlNumRows(sqlQuery("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `joined` >= {?START_YDAY?} AND `joined` < {?START_TDAY?}" . runFilterChain('user_exclusion_sql', ' '), __FILE__, __LINE__));
+               $content['lmode']         = $lmode;
+               $content['ltitle']        = $ltitle;
+
+               // Generate monthly stats
+               $SW = 2; $r2 = ' right'; $l = 'll'; $r = 'lr'; $OUT = '';
+               foreach ($months as $month => $count) {
+                       if ($SW == 2) $OUT .= '<tr>';
+
+                       // Prepare data for template
+                       $row = array(
+                               'l_class'  => $l,
+                               'm_descr'  => $GLOBALS['month_descr'][$month],
+                               'r_class'  => $r,
+                               'r2_class' => $r2,
+                               'count'    => $count
+                       );
+
+                       // Load row template
+                       $OUT .= loadTemplate('guest_stats_month_row', TRUE, $row);
+
+                       if ($SW == 2) {
+                               $r2 = '';
+                               $l = 'rl'; $r = 'rr';
+                       } else {
+                               $OUT .= '</tr>';
+                               $r2 = ' right';
+                               $l = 'll'; $r = 'lr';
+                       }
                        $SW = 3 - $SW;
+               } // END - foreach
+               $content['month_rows'] = $OUT;
+
+               // Generate category stats
+               $OUT = '';
+               foreach ($cat_cnt as $id => $count) {
+                       // Prepare data for the template
+                       $row = array(
+                               'cat'   => $cats[$id],
+                               'count' => $count,
+                       );
+
+                       // Load row template and switch colors
+                       $OUT .= loadTemplate('guest_stats_cats_row', TRUE, $row);
+               } // END - foreach
+               $content['cats_rows'] = $OUT;
+
+               // Load final template
+               loadTemplate('guest_stats_member', FALSE, $content);
+               break;
+
+       case 'MODULES': // TOP10 module clicks
+               // Admins may see all menus
+               $AND = " AND `locked`='N' AND `visible`='Y'";
+               if (isAdmin()) $AND = '';
+
+               // Query for guest and member menus
+               $guest_t10 = sqlQuery('SELECT `counter`, `title` FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `counter` > 0' . $AND . ' ORDER BY `counter` DESC LIMIT 0,10', __FILE__, __LINE__);
+               $mem_t10   = sqlQuery('SELECT `counter`, `title` FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `counter` > 0' . $AND . ' ORDER BY `counter` DESC LIMIT 0,10', __FILE__, __LINE__);
+               $OUT = '';
+
+               if (!ifSqlHasZeroNums($guest_t10)) {
+                       // Guest clicks
+                       $OUT .= loadTemplate('guest_stats_header', TRUE, '{--GUEST_TOP_GUEST_STATS--}');
+                       while ($content = sqlFetchArray($guest_t10)) {
+                               // Load row template
+                               $OUT .= loadTemplate('guest_stats_row', TRUE, $content);
+                       } // END - while
+               } // END - if
+
+               if (!ifSqlHasZeroNums($mem_t10)) {
+                       // Member clicks
+                       $OUT .= loadTemplate('guest_stats_header', TRUE, '{--GUEST_TOP_MEMBER_STATS--}');
+                       while ($content = sqlFetchArray($mem_t10)) {
+                               // Load row template
+                               $OUT .= loadTemplate('guest_stats_row', TRUE, $content);
+                       } // END - while
+               } // END - if
+
+               // Is something generated?
+               if (!empty($OUT)) {
+                       // Prepare content
+                       $content = array(
+                               'rows'   => $OUT,
+                               'lmode'  => $lmode,
+                               'ltitle' => $ltitle
+                       );
+
+                       // Load final template
+                       loadTemplate('guest_stats_table', FALSE, $content);
+               } else {
+                       // No clicks detected
+                       displayMessage('{--GUEST_STATS_NO_CLICKS--}');
                }
-       }
-
-       if ((SQL_NUMROWS($guest_t10) > 0) || (SQL_NUMROWS($mem_t10) > 0)) {
-               // Output footer
-               OUTPUT_HTML("<tr>
-  <td align=\"center\" class=\"guest_stats_footer\" colspan=\"2\">
-    <a href=\"{!URL!}/modules.php?module=index&amp;what=stats&amp;mode=".$lmode."\">".$ltitle."</a>
-  </td>
-</tr>
-</table>");
-       }
-       break;
-
-case "INACTIVE": // Deactivated stats
-       LOAD_TEMPLATE('admin_settings_saved', false, "<strong>{--GUEST_STATS_DEACTIVATED--}</strong>");
-       break;
-}
-
-//
+               break;
+
+       case 'INACTIVE': // Deactivated stats
+               displayMessage('{--GUEST_STATS_DEACTIVATED--}');
+               break;
+} // END - switch
+
+// [EOF]
 ?>