__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.10: ~ $
<?php

namespace WP_Statistics\Service\Database\Operations;

/**
 * Handles database repair operations.
 *
 * This class provides functionality to fix database structure issues,
 * particularly focusing on adding or modifying columns and indexes
 * based on the schema definition.
 */
class Repair extends AbstractTableOperation
{
    /**
     * Execute the repair operation.
     *
     * @return self
     * @throws \RuntimeException
     */
    public function execute()
    {
        try {
            $this->ensureConnection();
            $this->validateTableName();
            $this->validateArgs();
            $this->setFullTableName();

            return $this->transactionHandler->executeInTransaction([$this, 'repairTable']);
        } catch (\Exception $e) {
            throw new \RuntimeException(
                sprintf("Failed to repair table `%s`: %s", $this->tableName, $e->getMessage())
            );
        }
    }

    /**
     * Repair table operation to be executed in transaction.
     *
     * @return self
     * @throws \RuntimeException
     */
    public function repairTable()
    {
        if (!empty($this->args['column']) && !empty($this->args['definition'])) {
            $this->addColumn($this->args['column'], $this->args['definition']);
        }

        return $this;
    }

    /**
     * Add a new column to the table.
     *
     * @param string $columnName The name of the column to add
     * @param string $definition The column definition
     * @throws \RuntimeException If the operation fails
     */
    private function addColumn($columnName, $definition)
    {
        $sql = sprintf(
            "ALTER TABLE `%s` ADD COLUMN `%s` %s",
            $this->fullName,
            $columnName,
            $definition
        );

        if ($this->wpdb->query($sql) === false) {
            throw new \RuntimeException(
                sprintf('MySQL Error: %s', $this->wpdb->last_error)
            );
        }

        if (!empty($this->args['indexDefinition'])) {
            $this->addIndex($this->args['indexDefinition']);
        }
    }

    /**
     * Add a new index to the table.
     *
     * @param string $indexDefinition The complete index definition
     * @throws \RuntimeException If the operation fails
     */
    private function addIndex($indexDefinition)
    {
        $sql = sprintf(
            "ALTER TABLE `%s` ADD %s",
            $this->fullName,
            $indexDefinition
        );

        if ($this->wpdb->query($sql) === false) {
            throw new \RuntimeException(
                sprintf('MySQL Error: %s', $this->wpdb->last_error)
            );
        }
    }

    /**
     * Validate the operation arguments.
     *
     * @return void
     * @throws \RuntimeException
     */
    protected function validateArgs()
    {
        if (empty($this->args)) {
            throw new \RuntimeException('Arguments are required for repair operation');
        }

        $hasColumn = isset($this->args['column'], $this->args['definition']);
        $hasIndex  = isset($this->args['indexDefinition']);

        if (!$hasColumn && !$hasIndex) {
            throw new \RuntimeException('Either column or index definition is required');
        }

    }
}

Filemanager

Name Type Size Permission Actions
AbstractTableOperation.php File 1.76 KB 0644
Create.php File 2.18 KB 0644
Drop.php File 1.28 KB 0644
Insert.php File 6.22 KB 0644
Inspect.php File 1.34 KB 0644
InspectColumns.php File 1.82 KB 0644
Repair.php File 3.17 KB 0644
Select.php File 5.97 KB 0644
Update.php File 5.25 KB 0644
Filemanager