HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/studis.kauko.lt/wp-content/plugins/wp-statistics/src/Service/Database/Operations/Drop.php
<?php

namespace WP_Statistics\Service\Database\Operations;

/**
 * Handles the dropping of database tables.
 *
 * This class provides methods to safely execute table drop operations
 * while ensuring transactional integrity.
 */
class Drop extends AbstractTableOperation
{
    /**
     * Execute the table drop operation.
     *
     * @return self
     * @throws \RuntimeException
     */
    public function execute()
    {
        try {
            $this->ensureConnection();
            $this->validateTableName();
            $this->setFullTableName();

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

    /**
     * Drop table operation to be executed in transaction.
     *
     * @return self
     * @throws \RuntimeException
     */
    public function dropTable()
    {
        $sql = sprintf("DROP TABLE IF EXISTS `%s`", $this->fullName);

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

        return $this;
    }
}