<?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 *
* 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 *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009, 2010 by Mailer Developer Team *
* For more information visit: http://www.mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), '/inc') + 4) . '/security.php';
- require($INC);
-}
+ die();
+} // END - if
// Add description as navigation point
-ADD_DESCR('guest', __FILE__);
+addMenuDescription('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')));
+if (!isGetRequestParameterSet('mode')) setGetRequestParameter('mode', strtolower(getConfig('guest_stats')));
+
+// Set config temporarily
+setConfigEntry('guest_stats', strtoupper(getRequestParameter('mode')));
-switch (REQUEST_GET('mode')) {
+switch (getRequestParameter('mode')) {
case 'members' :
- setConfigEntry('guest_stats', 'MEMBERS');
$lmode = 'modules';
- $ltitle = getMessage('GUEST_STATS_MODULES');
break;
case 'modules' :
- setConfigEntry('guest_stats', 'MODULES');
$lmode = 'members';
- $ltitle = getMessage('GUEST_STATS_MEMBERS');
break;
case 'inactive':
- setConfigEntry('guest_stats', 'INACTIVE');
$lmode = 'inactive';
- $ltitle = getMessage('GUEST_STATS_INACTIVE');
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 >= ".getConfig('START_YDAY')." AND `last_online` < ".getConfig('START_TDAY')." AND `status`='CONFIRMED'", __FILE__, __LINE__));
- $tmem = SQL_NUMROWS(SQL_QUERY("SELECT userid FROM `{!_MYSQL_PREFIX!}_user_data` WHERE last_online >= ".getConfig('START_TDAY')." AND `status`='CONFIRMED'", __FILE__, __LINE__));
+ default:
+ // Unsupported mode
+ debug_report_bug(__FILE__, __LINE__, sprintf("Unsupported mode <span class=\"data\">%s</span> detected.", secureString(getRequestParameter('mode'))));
+ break;
+}
- // Yesterday / today registered
- $yreg = SQL_NUMROWS(SQL_QUERY("SELECT userid FROM `{!_MYSQL_PREFIX!}_user_data` WHERE joined >= ".getConfig('START_YDAY')." AND joined < ".getConfig('START_TDAY'), __FILE__, __LINE__));
- $treg = SQL_NUMROWS(SQL_QUERY("SELECT userid FROM `{!_MYSQL_PREFIX!}_user_data` WHERE joined >= ".getConfig('START_TDAY'), __FILE__, __LINE__));
+// Set link title
+$ltitle = '{--GUEST_STATS_' . strtoupper($lmode) . '--}';
+// @TODO This can be rewritten in a dynamic include
+switch (getConfig('guest_stats')) {
+ case 'MEMBERS': // Statistics about your members
// 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;
+ $male = countSumTotalData('M', 'user_data', 'userid', 'gender', true, " AND `status`='CONFIRMED'");
+ $female = countSumTotalData('F', 'user_data', 'userid', 'gender', true, " AND `status`='CONFIRMED'");
// List every month
$months = array();
$month = $idx;
// Append leading zero
- if ($idx < 10) $month = '0'.$idx;
+ if ($idx < 10) $month = '0' . $idx;
// Count months
- $months[$month] = GET_TOTAL_DATA(bigintval($month), 'user_data', 'userid', 'birth_month', true, " AND `status`='CONFIRMED'");
- }
+ $months[$month] = countSumTotalData(bigintval($month), 'user_data', 'userid', 'birth_month', true, " AND `status`='CONFIRMED'");
+ } // END - for
// Members in categories
- $result = SQL_QUERY("SELECT id, cat FROM `{!_MYSQL_PREFIX!}_cats` WHERE `visible`='Y' ORDER BY `id`", __FILE__, __LINE__);
+ $result = SQL_QUERY("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 = SQL_FETCHARRAY($result)) {
// Simple...
$cats[$content['id']] = $content['cat'];
- }
+ } // END - while
// 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);
- }
+ $cat_cnt[$id] = countSumTotalData(bigintval($id), 'user_cats', 'id', 'cat_id', true);
+ } // END - foreach
// 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);
+ $content['total_users'] = ($male + $female);
+ $content['unconfirmed'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `status` != 'CONFIRMED'", __FILE__, __LINE__));
+ $content['total_males'] = $male;
+ $content['total_females'] = $female;
+ $content['tmem_count'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `last_online` >= {?START_TDAY?} AND `status`='CONFIRMED'", __FILE__, __LINE__));
+ $content['ymem_count'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `last_online` >= {?START_YDAY?} AND `last_online` < {?START_TDAY?} AND `status`='CONFIRMED'", __FILE__, __LINE__));
+ $content['treg_count'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `joined` >= {?START_TDAY?}", __FILE__, __LINE__));
+ $content['yreg_count'] = SQL_NUMROWS(SQL_QUERY("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `joined` >= {?START_YDAY?} AND `joined` < {?START_TDAY?}", __FILE__, __LINE__));
+ $content['lmode'] = $lmode;
+ $content['ltitle'] = $ltitle;
// Generate monthly stats
- $SW = 2; $r2 = ' right2'; $l = 'll'; $r = 'lr'; $OUT = '';
+ $SW = 2; $r2 = ' right'; $l = 'll'; $r = 'lr'; $OUT = '';
foreach ($months as $month => $cnt) {
- if ($SW == 2) $OUT .= "<tr>\n";
+ if ($SW == 2) $OUT .= '<tr>';
// Prepare data for template
- $content = array(
- 'l_class' => $l,
- 'm_descr' => $GLOBALS['month_descr'][$month],
- 'r_class' => $r,
- 'r2_class' => $r2,
- 'cnt' => $cnt
+ $data = 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);
+ $OUT .= loadTemplate('guest_stats_month_row', true, $data);
if ($SW == 2) {
$r2 = '';
$l = 'rl'; $r = 'rr';
} else {
- $OUT .= "</tr>\n";
- $r2 = ' right2';
+ $OUT .= '</tr>';
+ $r2 = ' right';
$l = 'll'; $r = 'lr';
}
$SW = 3 - $SW;
- }
- define('__MONTH_STATS_ROWS', $OUT);
+ } // END - foreach
+ $content['month_rows'] = $OUT;
// Generate category stats
- $OUT = ''; $SW = 2;
+ $OUT = '';
foreach ($cat_cnt as $id => $cnt) {
// Prepare data for the template
- $content = array(
- 'sw' => $SW,
- 'cat' => $cats[$id],
- 'cnt' => $cnt,
+ $data = array(
+ '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);
+ $OUT .= loadTemplate('guest_stats_cats_row', true, $data);
+ } // END - foreach
+ $content['cats_rows'] = $OUT;
// Load final template
- LOAD_TEMPLATE('guest_stats_member');
+ loadTemplate('guest_stats_member', false, $content);
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>");
- }
+ // Admins may see all menus
+ $AND = " AND `locked`='N' AND `visible`='Y'";
+ if (isAdmin()) $AND = '';
- 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']." </td>
- <td class=\"switch_sw".$SW." bottom2\" width=\"50\"> ".$content['counter']."</td>
-</tr>");
- $SW = 3 - $SW;
- }
- }
+ // Query for guest and member menus
+ $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) {
+ if (!SQL_HASZERONUMS($guest_t10)) {
// Guest clicks
- OUTPUT_HTML("<tr>
- <td align=\"center\" class=\"guest_title2 bottom2\" colspan=\"2\">{--GUEST_TOP_MEMBER_STATS--}</td>
-</tr>");
- $SW = 2;
+ $OUT .= loadTemplate('guest_stats_header', true, '{--GUEST_TOP_GUEST_STATS--}');
+ while ($content = SQL_FETCHARRAY($guest_t10)) {
+ // Load row template
+ $OUT .= loadTemplate('guest_stats_row', true, $content);
+ } // END - while
+ } // END - if
+
+ if (!SQL_HASZERONUMS($mem_t10)) {
+ // Member clicks
+ $OUT .= loadTemplate('guest_stats_header', true, '{--GUEST_TOP_MEMBER_STATS--}');
while ($content = SQL_FETCHARRAY($mem_t10)) {
- OUTPUT_HTML("<tr>
- <td class=\"switch_sw".$SW." bottom2 right2\" align=\"right\" width=\"250\">".$content['title']." </td>
- <td class=\"switch_sw".$SW." bottom2\" width=\"50\"> ".$content['counter']."</td>
-</tr>");
- $SW = 3 - $SW;
- }
- }
+ // Load row template
+ $OUT .= loadTemplate('guest_stats_row', true, $content);
+ } // END - while
+ } // END - if
- 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&what=stats&mode=".$lmode."\">".$ltitle."</a>
- </td>
-</tr>
-</table>");
+ if ((!SQL_HASZERONUMS($guest_t10)) || (!SQL_HASZERONUMS($mem_t10))) {
+ // Prepare content
+ $content = array(
+ 'rows' => $OUT,
+ 'lmode' => $lmode,
+ 'ltitle' => $ltitle
+ );
+
+ // Load final template
+ loadTemplate('guest_stats_table', false, $content);
+ } else {
+ // No clicks detected
+ loadTemplate('admin_settings_saved', false, '{--GUEST_STATS_NO_CLICKS--}');
}
break;
case 'INACTIVE': // Deactivated stats
- LOAD_TEMPLATE('admin_settings_saved', false, "<strong>{--GUEST_STATS_DEACTIVATED--}</strong>");
+ loadTemplate('admin_settings_saved', false, '{--GUEST_STATS_DEACTIVATED--}');
break;
-}
+} // END - switch
-//
+// [EOF]
?>