<?php

namespace wcf\data\easyads3\intext;

use wcf\data\DatabaseObjectEditor;
use wcf\system\database\util\PreparedStatementConditionBuilder;
use wcf\system\WCF;

/**
 * Provides functions to edit intext adsense.
 *
 * @author     Cr@@gle, Olaf Braun
 * @copyright  2013-2023 Olaf Braun - Software Development
 * @license    WBB-Elite.de License <https://lizenz.wbb-elite.de/lizenz.html>
 * @package    com.cls.easyads
 * @method        InTextAdsense        getDecoratedObject()
 * @mixin        InTextAdsense
 */
class InTextAdsenseEditor extends DatabaseObjectEditor
{

    /**
     * @inheritDoc
     */
    protected static $baseClass = InTextAdsense::class;

    /**
     * @inheritDoc
     */
    public static function create(array $parameters = [])
    {
        //insert empty text if not provided
        if (!isset($parameters["synonym"])) {
            $parameters["synonym"] = "";
        }

        return parent::create($parameters);
    }

    #[\Override]
    public function delete()
    {
        $sql = "DELETE FROM wcf1_easyads_thesaurus
				WHERE	   itemID = ?";
        $statement = WCF::getDB()->prepare($sql);
        $statement->execute([$this->itemID]);

        $this->deleteFiles();
    }

    /**
     * @inheritDoc
     */
    public static function deleteAll(array $objectIDs = [])
    {
        // delete files first
        $conditionBuilder = new PreparedStatementConditionBuilder();
        $conditionBuilder->add("itemID IN (?)", [$objectIDs]);

        $sql = "SELECT  *
				FROM	wcf1_easyads_thesaurus
				" . $conditionBuilder;
        $statement = WCF::getDB()->prepare($sql);
        $statement->execute($conditionBuilder->getParameters());
        while ($inTextAdsense = $statement->fetchObject(static::$baseClass)) {
            $editor = new self($inTextAdsense);
            $editor->deleteFiles();
        }

        return parent::deleteAll($objectIDs);
    }

    /**
     * Delete the uploaded file
     */
    public function deleteFiles()
    {
        if ($this->isExternal) {
            return;
        }
        @\unlink($this->getPicturePath());
    }
}
