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/apklausos/application/models/SurveyDeactivator.php
<?php

/**
 * Service class to deactivate survey.
 * @todo Move to models/services/survey/ folder.
 */

class SurveyDeactivator
{
    /** @var Survey */
    protected $survey;

    /** @var array */
    protected $tableDefinition = [];

    /** @var array */
    protected $timingsTableDefinition = [];

    /** @var string */
    protected $error;

    public function __construct($survey = null)
    {
        $this->survey = $survey;
    }

    /**
     * @param Survey $survey
     * @return SurveyDeactivator
     */
    public function setSurvey(Survey $survey)
    {
        $this->survey = $survey;
        return $this;
    }

    /**
     * Prepares a survey to Set it into "deactivate" state.
     * Fires events "beforeSurveyDeactivate"
     *
     * @return PluginEvent
     * @throws CException
     */
    public function beforeDeactivate()
    {
        EmCacheHelper::init(['sid' => $this->survey->sid, 'active' => 'Y']);
        EmCacheHelper::flush();

        // Fire event beforeSurveyDeactivate
        $beforeSurveyDeactivate = new PluginEvent('beforeSurveyDeactivate');
        $beforeSurveyDeactivate->set('surveyId', $this->survey->sid);
        App()->getPluginManager()->dispatchEvent($beforeSurveyDeactivate);
        return $beforeSurveyDeactivate;
    }

    /**
     * Performs work after a survey was Set it into "deactivate" state.
     * Archives necessary tables "responseTable", "timingTable".
     * Fires events "afterSurveyDeactivate"
     *
     * @return PluginEvent
     * @throws CException
     */
    public function afterDeactivate()
    {
        $event = new PluginEvent('afterSurveyDeactivate');
        $event->set('surveyId', $this->survey->sid);
        App()->getPluginManager()->dispatchEvent($event);
        return $event;
    }
}