/home/ivoiecob/email.hirewise-va.com/system/Module/Decorator.php
<?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\System\Module;

/**
 * @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) 2019, Afterlogic Corp.
 *
 * @package Api
 */
class Decorator
{
    /**
     *
     * @var string
     */
    protected $sModuleName;

    /**
     *
     * @param string $sModuleName
     */
    public function __construct($sModuleName)
    {
        $this->sModuleName = $sModuleName;
    }

    /**
     *
     * @param string $sMethodName
     * @param array $aArguments
     * @return mixed
     */
    public function __call($sMethodName, $aArguments)
    {
        $mResult = false;
        $oModule = \Aurora\System\Api::GetModule($this->sModuleName);
        if ($oModule instanceof AbstractModule) {
            $mResult = $oModule->CallMethod($sMethodName, $aArguments);
        }

        return $mResult;
    }

    public function GetSettings()
    {
        $mResult = null;

        $oModule = \Aurora\System\Api::GetModule($this->sModuleName);
        if ($oModule instanceof AbstractModule) {
            $mResult = $oModule->GetSettings();
        }

        return $mResult;
    }

    public function GetErrors()
    {
        $mResult = null;

        $oModule = \Aurora\System\Api::GetModule($this->sModuleName);
        if ($oModule instanceof AbstractModule) {
            $mResult = $oModule->GetErrors();
        }

        return $mResult;
    }

    public function GetAdditionalEntityFieldsToEdit()
    {
        $mResult = null;

        $oModule = \Aurora\System\Api::GetModule($this->sModuleName);
        if ($oModule instanceof AbstractModule) {
            $mResult = $oModule->GetAdditionalEntityFieldsToEdit();
        }

        return $mResult;
    }
}

function Decorator()
{
    echo 'Decorator';
}