85 lines
1.9 KiB
PHP
85 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace DgoraWcas\Analytics;
|
|
|
|
use DgoraWcas\Helpers;
|
|
|
|
// Exit if accessed directly
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
class Analytics {
|
|
public function init() {
|
|
|
|
$allowByConstant = defined( 'DGWT_WCAS_ANALYTICS_ENABLE' ) && DGWT_WCAS_ANALYTICS_ENABLE;
|
|
|
|
// Publish this module conditionally in v1.18.0 and for everyone in v1.19.0
|
|
if ( ! $this->isModuleEnabled()
|
|
&& version_compare( DGWT_WCAS_VERSION, '1.18.99' ) < 0
|
|
&& ! $allowByConstant
|
|
) {
|
|
return;
|
|
}
|
|
|
|
if ( is_admin() ) {
|
|
// Load user interface
|
|
$ui = new UserInterface( $this );
|
|
$ui->init();
|
|
|
|
$widget = new Widget( $this, $ui );
|
|
$widget->init();
|
|
}
|
|
|
|
// Database
|
|
Database::registerTables();
|
|
$this->maybeInstallDatabase();
|
|
|
|
// Maintenance.
|
|
$maintenance = new Maintenance();
|
|
if ( $this->isModuleEnabled() ) {
|
|
$maintenance->init();
|
|
} else {
|
|
$maintenance->unschedule();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check if the Analytics module is enabled
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isModuleEnabled() {
|
|
return DGWT_WCAS()->settings->getOption( 'analytics_enabled', 'off' ) === 'on';
|
|
}
|
|
|
|
/**
|
|
* Create the database table if necessary
|
|
*
|
|
* @return void
|
|
*/
|
|
public function maybeInstallDatabase() {
|
|
// Try to create tables after enabling Search Analytics module
|
|
add_action( 'update_option_' . DGWT_WCAS_SETTINGS_KEY, function ( $oldValue, $newValue ) {
|
|
|
|
$key = 'analytics_enabled';
|
|
|
|
$nowEnabled = isset( $newValue[ $key ] ) && $newValue[ $key ] === 'on';
|
|
$wasDisabled = ! isset( $oldValue[ $key ] ) || ( isset( $oldValue[ $key ] ) && $oldValue[ $key ] !== 'on' );
|
|
|
|
if ( $nowEnabled && $wasDisabled ) {
|
|
Database::maybeInstall();
|
|
}
|
|
|
|
}, 10, 2 );
|
|
|
|
// Try to create tables when Search Analytics module is created, but from some reasons the table wasn't created
|
|
if ( Helpers::isSettingsPage()
|
|
&& $this->isModuleEnabled()
|
|
&& ! Database::exist()
|
|
) {
|
|
Database::maybeInstall();
|
|
}
|
|
}
|
|
}
|