<?php
/**
 * This code is licensed under AGPLv3 license or Afterlogic Software License
 * if commercial version of the product was purchased.
 * For full statements of the licenses see LICENSE-AFTERLOGIC and LICENSE-AGPL3 files.
 */

namespace Aurora\Modules\FilesTableviewWebclientPlugin;

/**
 * Replaces folders and files list view template in Files module for displaying items in table.
 *
 * @license https://www.gnu.org/licenses/agpl-3.0.html AGPL-3.0
 * @license https://afterlogic.com/products/common-licensing Afterlogic Software License
 * @copyright Copyright (c) 2023, Afterlogic Corp.
 *
 * @property Settings $oModuleSettings
 *
 * @package Modules
 */
class Module extends \Aurora\System\Module\AbstractWebclientModule
{
    public function init() {}

    /**
     * @return Module
     */
    public static function getInstance()
    {
        return parent::getInstance();
    }

    /**
     * @return Module
     */
    public static function Decorator()
    {
        return parent::Decorator();
    }

    /**
     * @return Settings
     */
    public function getModuleSettings()
    {
        return $this->oModuleSettings;
    }

    /**
     * Obtains list of module settings for authenticated user.
     *
     * @return array
     */
    public function GetSettings()
    {
        \Aurora\System\Api::checkUserRoleIsAtLeast(\Aurora\System\Enums\UserRole::NormalUser);

        $oUser = \Aurora\System\Api::getAuthenticatedUser();
        if ($oUser && $oUser->isNormalOrTenant()) {
            return array(
                'EnableModule' => $oUser->getExtendedProp(self::GetName() . '::EnableModule'),
                'EnablePreviewPane' => $oUser->getExtendedProp(self::GetName() . '::EnablePreviewPane')
            );
        }

        return [];
    }

    /**
     * Updates settings of the Simple Chat Module.
     *
     * @param boolean $EnableModule indicates if user turned on Simple Chat Module.
     * @return boolean
     */
    public function UpdateSettings($EnableModule, $EnablePreviewPane)
    {
        \Aurora\System\Api::checkUserRoleIsAtLeast(\Aurora\System\Enums\UserRole::NormalUser);

        $iUserId = \Aurora\System\Api::getAuthenticatedUserId();
        if (0 < $iUserId) {
            $oUser = \Aurora\Api::getUserById($iUserId);
            if ($EnableModule !== null) {
                $oUser->setExtendedProp(self::GetName() . '::EnableModule', $EnableModule);
            }
            if ($EnablePreviewPane !== null) {
                $oUser->setExtendedProp(self::GetName() . '::EnablePreviewPane', $EnablePreviewPane);
            }
            \Aurora\Modules\Core\Module::Decorator()->UpdateUserObject($oUser);
        }
        return true;
    }
}
