403Webshell
Server IP : 38.190.208.107  /  Your IP : 216.73.217.46
Web Server : nginx/1.28.1
System : Linux ht2026040333114 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64
User : root ( 0)
PHP Version : 8.2.28
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv,eval,assert,passthru,system,exec,shell_exec,popen,proc_open
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /www/wwwroot/wp.3/wp-content/plugins/wp-statistics/src/Service/Database/Managers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/wwwroot/wp.3/wp-content/plugins/wp-statistics/src/Service/Database/Managers/TableHandler.php
<?php

namespace WP_Statistics\Service\Database\Managers;

use WP_Statistics\Core\CoreFactory;
use WP_STATISTICS\Option;
use WP_Statistics\Service\Database\DatabaseFactory;
use WP_Statistics\Service\Database\Schema\Manager;


/**
 * Handles database table operations, including creation, inspection,
 * and deletion of tables.
 *
 * This class provides methods to create all tables, create individual tables,
 * drop individual tables, and drop all tables as required for managing
 * the database schema in WP Statistics.
 */
class TableHandler
{
    /**
     * Create all database tables if they do not already exist.
     *
     * This method iterates through all known table names, inspects each table,
     * and creates it if it is missing using the predefined schema.
     *
     * @return void
     * @throws \RuntimeException If a table creation or inspection fails.
     */
    public static function createAllTables()
    {
        $tableNames = Manager::getAllTableNames();

        foreach ($tableNames as $tableName) {
            try {
                $inspect = DatabaseFactory::table('inspect')
                    ->setName($tableName)
                    ->execute();

                if (!$inspect->getResult()) {
                    $schema = Manager::getSchemaForTable($tableName);

                    DatabaseFactory::table('create')
                        ->setName($tableName)
                        ->setArgs($schema)
                        ->execute();
                }
            } catch (\Exception $e) {
                throw new \RuntimeException("Failed to inspect or create table `$tableName`: " . $e->getMessage(), 0, $e);
            }
        }

        Option::saveOptionGroup('check', false, 'db');

        if (CoreFactory::isFresh()) {
            Option::saveOptionGroup('migrated', true, 'db');
            Option::saveOptionGroup('version', WP_STATISTICS_VERSION, 'db');
            return;
        }

        Option::saveOptionGroup('migrated', false, 'db');
        Option::saveOptionGroup('migration_status_detail', null, 'db');
        Option::saveOptionGroup('completed', false, 'queue_background_process');
        Option::saveOptionGroup('status', null, 'queue_background_process');

        $ajaxMigrationOption = Option::getOptionGroup('ajax_background_process', 'jobs', []);
        $ajaxIsDone          = Option::getOptionGroup('ajax_background_process', 'is_done', false);

        if ($ajaxIsDone || in_array('visitor_columns_migrate', $ajaxMigrationOption, true)) {
            Option::saveOptionGroup('visitor_columns_migrator_initiated', true, 'jobs');
        }

        $dismissedNotices = get_option('wp_statistics_dismissed_notices', []);

        if (in_array('database_manual_migration_progress', $dismissedNotices, true)) {
            $dismissedNotices = array_diff($dismissedNotices, ['database_manual_migration_progress']);

            update_option('wp_statistics_dismissed_notices', $dismissedNotices);
        }
    }

    /**
     * Create a single table.
     *
     * @param string $tableName The name of the table to create.
     * @param array $schema The schema for the table.
     * @return void
     * @throws \RuntimeException If the table creation fails.
     */
    public static function createTable(string $tableName, array $schema)
    {
        try {
            $createOperation = DatabaseFactory::table('create');
            $createOperation
                ->setName($tableName)
                ->setArgs($schema)
                ->execute();
        } catch (\Exception $e) {
            throw new \RuntimeException("Failed to create table `$tableName`: " . $e->getMessage(), 0, $e);
        }
    }

    /**
     * Drop a single table.
     *
     * @param string $tableName The name of the table to drop.
     * @return void
     * @throws \RuntimeException If the table drop operation fails.
     */
    public static function dropTable(string $tableName)
    {
        try {
            DatabaseFactory::table('drop')
                ->setName($tableName)
                ->execute();
        } catch (\Exception $e) {
            throw new \RuntimeException("Failed to drop table `$tableName`: " . $e->getMessage(), 0, $e);
        }
    }

    /**
     * Drop all known tables.
     *
     * @return void
     * @throws \RuntimeException If any table drop operation fails.
     */
    public static function dropAllTables()
    {
        $tableNames = Manager::getAllTableNames();

        foreach ($tableNames as $tableName) {
            try {
                self::dropTable($tableName);
            } catch (\Exception $e) {
                throw new \RuntimeException("Failed to drop table `$tableName`: " . $e->getMessage(), 0, $e);
            }
        }
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit