diff options
| author | lsces <lester@lsces.co.uk> | 2025-08-27 17:26:04 +0100 |
|---|---|---|
| committer | lsces <lester@lsces.co.uk> | 2025-08-27 17:26:04 +0100 |
| commit | a57c635d8319f914f82eb5937eedd79aabba46e8 (patch) | |
| tree | 9a527e565fa932705d8360f620d3bc0267a8a949 /includes | |
| parent | e4091e0a8778d65dbf0a8252c362aea9644fbf8c (diff) | |
| download | stats-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.php | 47 | ||||
| -rw-r--r-- | includes/classes/Statistics.php | 123 |
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; } } -?> |
