summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorlsces <lester@lsces.co.uk>2025-08-27 17:26:04 +0100
committerlsces <lester@lsces.co.uk>2025-08-27 17:26:04 +0100
commita57c635d8319f914f82eb5937eedd79aabba46e8 (patch)
tree9a527e565fa932705d8360f620d3bc0267a8a949 /includes
parente4091e0a8778d65dbf0a8252c362aea9644fbf8c (diff)
downloadstats-a57c635d8319f914f82eb5937eedd79aabba46e8.tar.gz
stats-a57c635d8319f914f82eb5937eedd79aabba46e8.tar.bz2
stats-a57c635d8319f914f82eb5937eedd79aabba46e8.zip
Code updated to PHP8.4 and namespace
Diffstat (limited to 'includes')
-rw-r--r--includes/bit_setup_inc.php47
-rw-r--r--includes/classes/Statistics.php123
2 files changed, 88 insertions, 82 deletions
diff --git a/includes/bit_setup_inc.php b/includes/bit_setup_inc.php
index adb5695..a408412 100644
--- a/includes/bit_setup_inc.php
+++ b/includes/bit_setup_inc.php
@@ -1,28 +1,39 @@
<?php
+use Bitweaver\Stats\Statistics;
+
global $gBitSystem, $gBitUser ;
-$registerHash = array(
+$pRegisterHash = [
'package_name' => 'stats',
- 'package_path' => dirname( dirname( __FILE__ ) ).'/',
-);
-$gBitSystem->registerPackage( $registerHash );
+ 'package_path' => dirname( dirname( __FILE__ ) ) . '/',
+];
+
+// fix to quieten down VS Code which can't see the dynamic creation of these ...
+define( 'STATS_PKG_NAME', $pRegisterHash['package_name'] );
+define( 'STATS_PKG_URL', BIT_ROOT_URL . basename( $pRegisterHash['package_path'] ) . '/' );
+define( 'STATS_PKG_PATH', BIT_ROOT_PATH . basename( $pRegisterHash['package_path'] ) . '/' );
+define( 'STATS_PKG_INCLUDE_PATH', BIT_ROOT_PATH . basename( $pRegisterHash['package_path'] ) . '/includes/');
+define( 'STATS_PKG_CLASS_PATH', BIT_ROOT_PATH . basename( $pRegisterHash['package_path'] ) . '/includes/classes/');
+define( 'STATS_PKG_ADMIN_PATH', BIT_ROOT_PATH . basename( $pRegisterHash['package_path'] ) . '/admin/');
+
+$gBitSystem->registerPackage( $pRegisterHash );
if( $gBitSystem->isPackageActive( 'stats' )) {
if( $gBitUser->hasPermission( 'p_stats_view' ) || $gBitUser->hasPermission( 'p_stats_view_referer' ) ) {
- $menuHash = array(
+ $menuHash = [
'package_name' => STATS_PKG_NAME,
- 'index_url' => STATS_PKG_URL.'index.php',
+ 'index_url' => STATS_PKG_URL . 'index.php',
'menu_template' => 'bitpackage:stats/menu_stats.tpl',
- );
+ ];
$gBitSystem->registerAppMenu( $menuHash );
}
- $gLibertySystem->registerService( STATS_PKG_NAME, STATS_PKG_NAME, array(
- 'users_expunge_function' => 'stats_user_expunge',
- 'users_register_function' => 'stats_user_register',
- ) );
+ $gLibertySystem->registerService( STATS_PKG_NAME, STATS_PKG_NAME, [
+ 'users_expunge_function' => 'stats_user_expunge',
+ 'users_register_function' => 'stats_user_register',
+ ] );
- require_once( STATS_PKG_CLASS_PATH.'Statistics.php' );
+ require_once STATS_PKG_CLASS_PATH . 'Statistics.php';
$stats = new Statistics();
if( $gBitSystem->isFeatureActive('stats_pageviews') ) {
$stats->addPageview();
@@ -49,7 +60,7 @@ if( $gBitSystem->isPackageActive( 'stats' )) {
function stats_user_expunge( &$pObject ) {
if( is_a( $pObject, 'BitUser' ) && !empty( $pObject->mUserId ) ) {
$pObject->StartTrans();
- $pObject->mDb->query( "DELETE FROM `".BIT_DB_PREFIX."stats_referer_users_map` WHERE user_id=?", array( $pObject->mUserId ) );
+ $pObject->mDb->query( "DELETE FROM `".BIT_DB_PREFIX."stats_referer_users_map` WHERE user_id=?", [ $pObject->mUserId ] );
$pObject->CompleteTrans();
}
}
@@ -57,11 +68,11 @@ if( $gBitSystem->isPackageActive( 'stats' )) {
function stats_user_register( &$pObject ) {
if( !empty( $_COOKIE['referer_url'] ) && is_a( $pObject, 'BitUser' ) && !empty( $pObject->mUserId ) ) {
$pObject->StartTrans();
- if( !$refererId = $pObject->mDb->getOne( "SELECT `referer_url_id` FROM `".BIT_DB_PREFIX."stats_referer_urls` WHERE `referer_url`=?", array( $_COOKIE['referer_url'] ) ) ) {
+ if( !$refererId = $pObject->mDb->getOne( "SELECT `referer_url_id` FROM `".BIT_DB_PREFIX."stats_referer_urls` WHERE `referer_url`=?", [ $_COOKIE['referer_url'] ] ) ) {
$refererId = $pObject->mDb->GenID( 'stats_referer_url_id_seq' );
- $pObject->mDb->query( "INSERT INTO `".BIT_DB_PREFIX."stats_referer_urls` (`referer_url_id`,`referer_url`) VALUES(?,?)", array( $refererId, $_COOKIE['referer_url'] ) );
+ $pObject->mDb->query( "INSERT INTO `".BIT_DB_PREFIX."stats_referer_urls` (`referer_url_id`,`referer_url`) VALUES(?,?)", [ $refererId, $_COOKIE['referer_url'] ] );
}
- $pObject->mDb->query( "INSERT INTO `".BIT_DB_PREFIX."stats_referer_users_map` (`user_id`,`referer_url_id`) VALUES(?,?)", array( $pObject->mUserId, $refererId ) );
+ $pObject->mDb->query( "INSERT INTO `".BIT_DB_PREFIX."stats_referer_users_map` (`user_id`,`referer_url_id`) VALUES(?,?)", [ $pObject->mUserId, $refererId ] );
$pObject->CompleteTrans();
}
}
@@ -71,10 +82,10 @@ if( $gBitSystem->isPackageActive( 'stats' )) {
if( ($urlHash = parse_url( $pRefererUrl )) && !empty( $urlHash['host'] ) ) {
$ret = $urlHash['host'];
// q= google and bing search param, p= yahoo search param
- $searchStrings = array( 'q', 'p' );
+ $searchStrings = [ 'q', 'p' ];
foreach( $searchStrings as $param ) {
if( !empty( $urlHash['query'] ) && strpos( $urlHash['query'], $param.'=' ) !== FALSE ) {
- $result = array();
+ $result = [];
parse_str( $urlHash['query'], $result );
if( !empty( $result[$param] ) ) {
$ret .= '/...'.$param.'='.$result[$param];
diff --git a/includes/classes/Statistics.php b/includes/classes/Statistics.php
index 4c222cf..1deb893 100644
--- a/includes/classes/Statistics.php
+++ b/includes/classes/Statistics.php
@@ -4,15 +4,26 @@
*
* $Id$
* @package stats
- */
+**/
/**
* @package stats
* @subpackage Stats
- */
+**/
+namespace Bitweaver\Stats;
+use Bitweaver\BitBase;
+use Bitweaver\Liberty\LibertyContent;
+use Bitweaver\BitDb;
+
+
class Statistics extends BitBase {
- public static function prepGetList( &$pListHash ) {
+ /**
+ * Summary of prepGetList
+ * @param array $pListHash
+ * @return void
+ */
+ public static function prepGetList( &$pListHash ): void {
if( !empty( $pListHash['period'] ) ) {
$pListHash['period_format'] = BitDb::getPeriodFormat( $pListHash['period'] );
@@ -25,14 +36,13 @@ class Statistics extends BitBase {
* getRefererList gets a list of referers
*
* @param array $pListHash
- * @access public
* @return array of referers
*/
- function getRefererList( &$pListHash ) {
+ public function getRefererList( &$pListHash ) {
global $gBitSystem;
$hashKey = '';
- $ret = $bindVars = array();
+ $ret = $bindVars = [];
$selectSql = $joinSql = $whereSql = $groupSql = "";
$hashSql = "uu.`user_id` AS `hash_key`, ";
@@ -72,7 +82,7 @@ class Statistics extends BitBase {
LEFT JOIN `".BIT_DB_PREFIX."stats_referer_users_map` srum ON(uu.`user_id`=srum.`user_id`)
LEFT JOIN `".BIT_DB_PREFIX."stats_referer_urls` sru ON (sru.`referer_url_id`=srum.`referer_url_id`)
$whereSql ORDER BY ".$this->mDb->convertSortmode( $pListHash['sort_mode'] );
- if( $rs = $this->mDb->query( $query, $bindVars, -1, $pListHash['offset'], ($gBitSystem->isLive() ? 3600 : BIT_QUERY_DEFAULT) ) ) {
+ if( $rs = $this->mDb->query( $query, $bindVars, -1, $pListHash['offset'], $gBitSystem->isLive() ? 3600 : BIT_QUERY_DEFAULT ) ) {
while( $row = $rs->fetchRow() ) {
$key = $row['hash_key'];
@@ -96,33 +106,31 @@ class Statistics extends BitBase {
LibertyContent::postGetList( $pListHash );
if( $hashKey == 'host' ) {
- uasort( $ret, array( $this, 'sortRefererHash' ) );
+ uasort( $ret, [ $this, 'sortRefererHash' ] );
}
return $ret;
}
- function sortRefererHash( $a, $b ) {
+ public function sortRefererHash( $a, $b ) {
return count( $a ) < count( $b );
}
/**
* expungeReferers will remove all referers unconditionally
*
- * @access public
- * @return TRUE on success, FALSE on failure
+ * @return bool TRUE on success, FALSE on failure
*/
- function expungeReferers() {
- return( $this->mDb->query( "DELETE FROM `".BIT_DB_PREFIX."stats_referers`" ));
+ public function expungeReferers() {
+ return $this->mDb->query( "DELETE FROM `" . BIT_DB_PREFIX . "stats_referers`" );
}
/**
* storeReferer will insert new record in referer table
*
- * @access public
- * @return TRUE on success, FALSE on failure - mErrors will contain reason for failure
+ * @return bool TRUE on success, FALSE on failure - mErrors will contain reason for failure
*/
- function storeReferer() {
+ public function storeReferer() {
global $gBitSystem;
if( !empty( $_SERVER['HTTP_REFERER'] ) && $parsed = parse_url( $_SERVER['HTTP_REFERER'] )) {
@@ -134,12 +142,12 @@ class Statistics extends BitBase {
$this->StartTrans();
$query = "UPDATE `".BIT_DB_PREFIX."stats_referers` SET `hits`=`hits`+1,`last`=? WHERE `referer`=?";
- $this->mDb->query( $query, array( $now, $store ));
+ $this->mDb->query( $query, [ $now, $store ]);
// if the above didn't affect the db, we know that the entry doesn't exist yet.
if( !$this->mDb->Affected_Rows() ) {
$query = "INSERT INTO `".BIT_DB_PREFIX."stats_referers`( `last`, `referer`, `hits` ) VALUES( ?, ?, ? )";
- $this->mDb->query( $query, array( $now, $store, 1 ));
+ $this->mDb->query( $query, [ $now, $store, 1 ]);
}
$this->CompleteTrans();
}
@@ -151,18 +159,17 @@ class Statistics extends BitBase {
/**
* addPageview to the pageview count
*
- * @access public
* @return void
*/
- function addPageview() {
+ public function addPageview() {
$dayzero = mktime( 0, 0, 0, date( "m" ), date( "d" ), date( "Y" ));
$this->mDb->StartTrans(); // base method StartTrans will clearFromCache
$query = "UPDATE `".BIT_DB_PREFIX."stats_pageviews` SET `pageviews`=`pageviews`+1 WHERE `stats_day`=?";
- $this->mDb->query( $query, array( $dayzero ));
+ $this->mDb->query( $query, [ $dayzero ]);
// if the above didn't affect the db, we know that the entry doesn't exist yet.
if( !$this->mDb->Affected_Rows() ) {
$query = "INSERT INTO `".BIT_DB_PREFIX."stats_pageviews`( `pageviews`, `stats_day` ) VALUES( ?, ? )";
- $this->mDb->query( $query, array( 1, $dayzero ));
+ $this->mDb->query( $query, [ 1, $dayzero ]);
}
$this->mDb->CompleteTrans();
}
@@ -171,10 +178,9 @@ class Statistics extends BitBase {
* registrationStats
*
* @param array $pPeriod
- * @access public
- * @return TRUE on success, FALSE on failure - mErrors will contain reason for failure
+ * @return array|bool TRUE on success, FALSE on failure - mErrors will contain reason for failure
*/
- function registrationStats( $pPeriodFormat ) {
+ public function registrationStats( $pPeriodFormat ) {
global $gBitDbType;
$sqlPeriod = $this->mDb->SQLDate( $pPeriodFormat, $this->mDb->SQLIntToTimestamp( 'registration_date' ));
@@ -192,14 +198,13 @@ class Statistics extends BitBase {
/**
* getSiteStats will get a brief overview over the site
*
- * @access public
* @return array with site stats
*/
- function getSiteStats() {
+ public function getSiteStats() {
$ret["started"] = $this->mDb->getOne( "SELECT MIN(`stats_day`) FROM `".BIT_DB_PREFIX."stats_pageviews`" );
$ret["days"] = $this->mDb->getOne( "SELECT COUNT(*) FROM `".BIT_DB_PREFIX."stats_pageviews`" );
$ret["pageviews"] = $this->mDb->getOne( "SELECT SUM(`pageviews`) FROM `".BIT_DB_PREFIX."stats_pageviews`" );
- $ret["ppd"] = ( $ret["days"] ? $ret["pageviews"] / $ret["days"] : 0 );
+ $ret["ppd"] = $ret["days"] ? $ret["pageviews"] / $ret["days"] : 0;
$ret["bestpvs"] = $this->mDb->getOne( "SELECT MAX(`pageviews`) FROM `".BIT_DB_PREFIX."stats_pageviews`" );
$ret["bestday"] = $this->mDb->getOne( "SELECT `stats_day` FROM `".BIT_DB_PREFIX."stats_pageviews` WHERE `pageviews`=?",array( (int)$ret["bestpvs"] ));
$ret["worstpvs"] = $this->mDb->getOne( "SELECT MIN(`pageviews`) FROM `".BIT_DB_PREFIX."stats_pageviews`" );
@@ -211,10 +216,9 @@ class Statistics extends BitBase {
* getContentOverview will get a simple overview based on stats available available in liberty
*
* @param array $pParamHash
- * @access public
* @return array with content type stats
*/
- function getContentOverview( $pParamHash = NULL ) {
+ public function getContentOverview( $pParamHash = NULL ) {
global $gLibertySystem;
if( empty( $pParamHash['sort_mode'] )) {
@@ -234,13 +238,12 @@ class Statistics extends BitBase {
/**
* getContentStats will check all available content for the method Object::getStats() and will call and include the data
*
- * @access public
* @return array with content-specific stats
*/
- function getContentStats() {
+ public function getContentStats() {
global $gLibertySystem;
- $ret = array();
+ $ret = [];
foreach( $gLibertySystem->mContentTypes as $guid => $type ) {
if( $typeClass = $gLibertySystem->getContentClassName( $guid )) {
$object = new $typeClass();
@@ -257,32 +260,27 @@ class Statistics extends BitBase {
* getPageviewChartData will fetch all data needed to create a graph with PHPlot
*
* @param numeric $pDays Number of days we will use to create a graph
- * @access public
* @return array for PHPlot graph
*/
- function getPageviewChartData( $pDays = 7 ) {
+ public function getPageviewChartData( $pDays = 7 ) {
$now = mktime( 0, 0, 0, date( "m" ), date( "d" ), date( "Y" ));
$dfrom = 0;
- if( $pDays != 0 ) $dfrom = $now - ( $pDays * 24 * 60 * 60 );
+ if( $pDays != 0 ) $dfrom = $now - $pDays * 24 * 60 * 60;
$query = "SELECT `stats_day`, `pageviews` FROM `".BIT_DB_PREFIX."stats_pageviews` WHERE `stats_day`<=? AND `stats_day`>=? ORDER BY `stats_day` ASC";
$result = $this->mDb->query( $query,array( ( int )$now, ( int )$dfrom ));
- $ret = array();
+ $ret = [];
$n = ceil( $result->numRows() / 20 );
$i = 0;
while( $res = $result->fetchRow() ) {
- if( $i % $n == 0 ) {
- $data = array(
- date( "j M Y", $res["stats_day"] ),
- $res["pageviews"]
- );
- } else {
- $data = array(
- "",
- $res["pageviews"]
- );
- }
+ $data = ( $i % $n == 0 ) ? [
+ date( "j M Y", $res["stats_day"] ),
+ $res["pageviews"],
+ ] : [
+ "",
+ $res["pageviews"],
+ ];
$ret[] = $data;
$i++;
}
@@ -293,10 +291,9 @@ class Statistics extends BitBase {
/**
* getUsageChartData will fetch all data needed to create a graph with PHPlot
*
- * @access public
* @return array for PHPlot graph
*/
- function getUsageChartData() {
+ public function getUsageChartData() {
global $gBitSystem, $gLibertySystem;
$ret['data'][0][] = 'a';
foreach( $gLibertySystem->mContentTypes as $contentType ) {
@@ -307,7 +304,7 @@ class Statistics extends BitBase {
FROM `".BIT_DB_PREFIX."liberty_content` lc
LEFT OUTER JOIN `".BIT_DB_PREFIX."liberty_content_hits` liberty_content_hits
ON (lc.`content_id` = liberty_content_hits.`content_id`)
- WHERE content_type_guid=?", array( $guid )
+ WHERE content_type_guid=?", [ $guid ]
);
if( !empty( $hits )) {
$ret['legend'][] = $gLibertySystem->getContentTypeName( $guid );
@@ -321,13 +318,12 @@ class Statistics extends BitBase {
/**
* getContentTypeChartData will fetch all data needed to create a graph with PHPlot
*
- * @param array $pContentTypeGuid specify the content_type_guid you want to create a graph for
- * @access public
+ * @param string $pContentTypeGuid specify the content_type_guid you want to create a graph for
* @return array for PHPlot graph
*/
- function getContentTypeChartData( $pContentTypeGuid=NULL ) {
+ public function getContentTypeChartData( $pContentTypeGuid = '' ) {
global $gLibertySystem;
- $ret['data'] = array();
+ $ret['data'] = [];
if( in_array( $pContentTypeGuid, array_keys( $gLibertySystem->mContentTypes ))) {
$query = "
@@ -337,14 +333,14 @@ class Statistics extends BitBase {
ON (lc.`content_id` = liberty_content_hits.`content_id`)
WHERE `content_type_guid`=?
ORDER BY `hits` DESC";
- $result = $this->mDb->query( $query, array( $pContentTypeGuid ), 40 );
- $tmpHash = array();
+ $result = $this->mDb->query( $query, [ $pContentTypeGuid ], 40 );
+ $tmpHash = [];
// this is needed to ensure all arrays have same size
while( $res = $result->fetchRow() ) {
- $tmpHash = array(
+ $tmpHash = [
$res['title'],
$res['hits'],
- );
+ ];
}
$ret['data'][$pContentTypeGuid] = array_chunk( $tmpHash, 40 );
$ret['title'] = $gLibertySystem->getContentTypeName( $pContentTypeGuid );
@@ -357,15 +353,15 @@ class Statistics extends BitBase {
ON (lc.`content_id` = liberty_content_hits.`content_id`)
WHERE `content_type_guid`=?
ORDER BY `hits` DESC";
- $result = $this->mDb->query( $query, array( $contentType['content_type_guid'] ), 40 );
+ $result = $this->mDb->query( $query, [ $contentType['content_type_guid'] ], 40 );
// this is needed to ensure all arrays have same size
$i = 0;
- $tmpHash = array( NULL, NULL );
+ $tmpHash = [ null, null ];
while( $res = $result->fetchRow() ) {
- $tmpHash = array(
+ $tmpHash = [
$res['title'],
$res['hits'],
- );
+ ];
}
$ret['data'][$contentType['content_type_guid']] = array_chunk( $tmpHash, 40 );
}
@@ -374,4 +370,3 @@ class Statistics extends BitBase {
return $ret;
}
}
-?>