of course ;-)...... here the ext.stats.php , it is intended easier, but for us it is ok
$data = array(
'name' => 'System stats',
'about' => 'Displays different types of system statistics.',
'author' => 'VLD Interactive',
'email' => 'support@vldpersonals.com',
'help' => 'http://www.vldpersonals.com/downloads/extensions/',
'website' => 'http://www.vldpersonals.com',
);
function vldext_stats ($params = array())
{
global $DB, $CACHE, $PREFS, $SESSION;
$count = isset($params['count']) ? $params['count'] : "";
$online = isset($params['online']) ? $params['online'] : 0;
$timeframe = isset($params['timeframe']) ? $params['timeframe'] : "";
$group_id = isset($params['group_id']) && $params['group_id'] ? intval($params['group_id']) : 0;
$cache_time = isset($params['cache_time']) && $params['cache_time'] ? intval($params['cache_time']) : 10;
$cache_name = (isset($params['cache_name']) && $params['cache_name'] ? "_".$params['cache_name'] : "")."_".$count;
$cache_enable = isset($params['cache_enable']) ? intval($params['cache_enable']) : 1;
// any profile fields?
$profile_fields = array();
foreach ( $params as $key => $value ) {
if ( strpos($key, 'profile_') !== false && $value ) {
$profile_fields[] = "data_".substr($key, 8)."='".mysql_real_escape_string($value)."'";
}
}
$type_label = $PREFS->conf['profile_types'][$PREFS->conf['default_profile_type']]['type_label'];
if ( !$cache_enable || ($total = $CACHE->get("ext", "stats".$cache_name)) === false ) {
$sql = '';
$where = array();
switch ( $count ) {
case 'members':
switch ( $timeframe ) {
case 'day':
$where[] = "joindate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "joindate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "joindate>=".(time()-60*60*24*30);
break;
}
if ( $group_id ) {
$where[] = "group_id=$group_id";
}
if ( $online ) {
$where[] = "lastvisit>=".(time()-$PREFS->conf['user_timeout']*60);
}
if ( $profile_fields ) {
$where[] = implode(" AND ", $profile_fields);
}
break;
case 'friends':
switch ( $timeframe ) {
case 'day':
$where[] = "request_date>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "request_date>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "request_date>=".(time()-60*60*24*30);
break;
}
$where[] = "pending=0";
break;
case 'albums':
case 'audios':
case 'pictures':
case 'videos':
switch ( $timeframe ) {
case 'day':
$where[] = "dateadded>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "dateadded>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "dateadded>=".(time()-60*60*24*30);
break;
}
break;
case 'blogs':
case 'guestbooks':
switch ( $timeframe ) {
case 'day':
$where[] = "postdate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "postdate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "postdate>=".(time()-60*60*24*30);
break;
}
break;
case 'messages':
switch ( $timeframe ) {
case 'day':
$where[] = "senddate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "senddate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "senddate>=".(time()-60*60*24*30);
break;
}
break;
case 'messages_gifts':
switch ( $timeframe ) {
case 'day':
$where[] = "senddate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "senddate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "senddate>=".(time()-60*60*24*30);
break;
}
break;
case 'statuses':
switch ( $timeframe ) {
case 'day':
$where[] = "statusdate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "statusdate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "statusdate>=".(time()-60*60*24*30);
break;
}
break;
case 'visitors':
switch ( $timeframe ) {
case 'day':
$where[] = "visitdate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "visitdate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "visitdate>=".(time()-60*60*24*30);
break;
}
break;
case 'orders':
switch ( $timeframe ) {
case 'day':
$where[] = "paymentdate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "paymentdate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "paymentdate>=".(time()-60*60*24*30);
break;
}
break;
case 'notifications':
switch ( $timeframe ) {
case 'day':
$where[] = "postdate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "postdate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "postdate>=".(time()-60*60*24*30);
break;
}
break;
case 'votes':
switch ( $timeframe ) {
case 'day':
$where[] = "postdate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "postdate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "postdate>=".(time()-60*60*24*30);
break;
}
break;
case 'news':
switch ( $timeframe ) {
case 'day':
$where[] = "postdate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "postdate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "postdate>=".(time()-60*60*24*30);
break;
}
break;
case 'events':
switch ( $timeframe ) {
case 'day':
$where[] = "dateadded >=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "dateadded >=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "dateadded >=".(time()-60*60*24*30);
break;
}
break;
case 'blogs_comments':
case 'pictures_comments':
case 'videos_comments':
switch ( $timeframe ) {
case 'day':
$where[] = "postdate>=".(time()-60*60*24*1);
break;
case 'week':
$where[] = "postdate>=".(time()-60*60*24*7);
break;
case 'month':
$where[] = "postdate>=".(time()-60*60*24*30);
break;
}
break;
default:
$sql = 'skip';
}
if ( $sql != 'skip' ) {
$sql = "SELECT COUNT(*) as totalrows FROM " . DB_PREFIX . $count;
$where = implode(" AND ", $where);
if ( $profile_fields ) {
$sql = $sql.($where ? " as m, " . DB_PREFIX . "members_data_". $type_label ." as d WHERE m.member_id=d.data_id ".($where ? " AND $where" : "") : "");
}
else {
$sql = $sql.($where ? " WHERE $where" : "");
}
$result = $DB->query($sql);
$obj = $DB->fetch_array($result, MYSQL_ASSOC);
$total = $obj['totalrows'];
}
if ( $cache_enable ) {
$CACHE->put("ext", "stats".$cache_name, $cache_time, $total);
}
}
echo $total;
}
?>
best regards
Last edited by woody (2011-05-06 13:52:01)