* @link http://www.oxidmodule.com */ namespace D3\ModCfg\Application\Controller\Admin; use D3\ModCfg\Application\Model\Constants; use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException; use Doctrine\DBAL\Exception as DBALException; use Exception; use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController; use D3\ModCfg\Application\Model\Shopcompatibility\d3shopversionconverter; use D3\ModCfg\Application\Model\Log\d3log; use D3\ModCfg\Application\Model\Configuration\d3_cfg_mod; use D3\ModCfg\Application\Model\Install\d3install; use D3\ModCfg\Application\Model\Installcheck\d3installcheck; use D3\ModCfg\Application\Model\d3utils; use D3\ModCfg\Application\Model\d3filesystem; use D3\ModCfg\Application\Model\d3str; use D3\ModCfg\Application\Model\d3feeds; use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception; use OxidEsales\Eshop\Core\ConfigFile; use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException; use OxidEsales\Eshop\Core\Exception\DatabaseErrorException; use OxidEsales\Eshop\Core\Exception\StandardException; use OxidEsales\Eshop\Core\Request; use OxidEsales\Eshop\Core\Registry; use OxidEsales\Eshop\Core\Exception\DatabaseException; use stdClass; class d3_cfg_mod_licence extends AdminDetailsController { protected $_sThisTemplate = '@'.Constants::OXID_MODULE_ID.'/admin/base_license'; protected $_sModId = Constants::OXID_MODULE_ID; protected $_hasLicence = false; protected $_hasUpdate = true; protected $_hasNewsletterForm = false; protected $_modUseCurl = false; protected $_sMenuItemTitle = 'd3mxcfg'; protected $_sMenuSubItemTitle = 'd3tbcllib_support'; protected $_sBlogFeed = "https://blog.oxidmodule.com/index.php?/feeds/index.rss2"; protected $_sLogType = d3log::EMERGENCY; protected $_oInfoMail; public $mBlogContent; public $sHelpURL; public $oUpdateData; public $oNewestData; public $sAction; protected $_aMessages = []; /** * @var string */ protected $_sDefaultHelpLinkAdd = 'Modul-Connector/'; /** * additional multilang item, which will added as last part to help url * * @var string */ protected $_sHelpLinkMLAdd = 'D3MODCFG_LIB_HELPLINK_SUPPORT'; /** * @return string * @throws DatabaseConnectionException * @throws DatabaseErrorException */ public function render() { if ((bool) Registry::get(ConfigFile::class)->getVar('iDebug')) { startProfile(__METHOD__); } $sRet = parent::render(); $this->addTplParam('edit', $this->d3GetSet()); $this->addTplParam('oxid', $this->d3GetSet()->getId()); if ((bool) Registry::get(ConfigFile::class)->getVar('iDebug')) { stopProfile(__METHOD__); } return $sRet; } /** * @return d3_cfg_mod */ /** * @return d3_cfg_mod * @throws DatabaseConnectionException * @throws DatabaseErrorException */ public function d3GetSet() { return d3_cfg_mod::get($this->d3getModId()); } /** * @return string */ public function d3getModId() { return $this->_sModId; } /** * ruft oxutils-Funktion auf, die vom Template aus nicht verfuegbar ist * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException * @throws d3ShopCompatibilityAdapterException * @throws StandardException * @throws d3_cfg_mod_exception */ public function save() { $this->d3GetSet()->prepareSaveData(); $this->d3GetSet()->save(); return; } /** * @return bool */ public function getInstallClass() { if (class_exists(d3install::class)) { return true; } return false; } /** * @return bool * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException * @throws StandardException * @throws d3ShopCompatibilityAdapterException * @throws d3_cfg_mod_exception * @throws Exception */ public function checkUpdate() { if ((bool) Registry::get(ConfigFile::class)->getVar('iDebug')) { startProfile(__METHOD__); } $oInstall = d3install::getInstance(); $oUpdateServer = $oInstall->getFromUpdateServer(); $oModCfg = $this->d3GetSet(); if ($oModCfg->getModCfgError()) { return false; } if ($this->d3GetSet()->getLicenseData('modversion')) { $oUpdateServer->setParameter('sLicModVersion', $this->d3GetSet()->getLicenseData('modversion')); } /** @var d3shopversionconverter $oShopVersionConverter */ $oShopVersionConverter = oxNew(d3shopversionconverter::class); $oUpdateServer->setParameter('sModId', $this->d3getModId()); $oUpdateServer->setParameter( 'sEdition', $oShopVersionConverter->fixEditionToDefaultEdition($this->getShopEdition()) ); $oUpdateServer->setParameter( 'sShopVersion', $oShopVersionConverter->fixVersionToDefaultEdition($this->getShopVersion()) ); $aUpdateData = $oUpdateServer->getRemoteModuleVersion(); $this->sAction = 'versionCheck'; if (version_compare( $aUpdateData['availableversion']['version'], $oInstall->getInstalledModVersion($this->d3getModId()), '>' )) { $this->oUpdateData = $aUpdateData['availableversion']; } if ($aUpdateData['newestversion'] && is_array($aUpdateData['newestversion']) && count($aUpdateData['newestversion']) ) { $this->oNewestData = $aUpdateData['newestversion']; } if ((bool) Registry::get(ConfigFile::class)->getVar('iDebug')) { stopProfile(__METHOD__); } return false; } /** * @return string */ public function getAction() { return $this->sAction; } /** * @param $sPart * @return mixed */ public function getUpdateData($sPart) { return $this->oUpdateData[$sPart]; } /** * @param $sPart * @return mixed */ public function getNewestModuleData($sPart) { return $this->oNewestData[$sPart]; } public function installMod() { $this->addTplParam('sInstallModId', Registry::get(Request::class)->getRequestEscapedParameter('modid')); } /** * request newsletter form */ public function setInfoMail() { $this->_oInfoMail = new stdClass(); $oInfoMailXML = false; $iError = false; // $aParams = oxConfig::getParameter("service"); // $sEMail = trim($aParams['d3_cfg_mod__s_updateinfomail']); // $blActive = (bool)$aParams['d3_cfg_mod__bl_updateinfo']; /* if (strlen($sEMail) && !d3_oxUtils_cfg::getInstance()->D3checkEmail($sEMail)) { $this->_oInfoMail->iError = 1; return false; } */ //d3_oxUtils_cfg::getInstance()->setModInfoMail($this->soxId, $oInfoMailXML, $iError, $sEMail, $blActive); $this->_oInfoMail->iError = $iError; $this->_oInfoMail->oXML = $oInfoMailXML; //if ($iError) return; // is removed // d3_oxUtils_cfg::getInstance()->SaveModCfg($this->soxId); //$this->d3GetSet()->d3_cfg_mod__importer_supdateinfomail = new oxField($sEMail, oxField::T_RAW); //$this->d3GetSet()->d3_cfg_mod__importer_blupdateinfo = new oxField($blActive, oxField::T_RAW); //$this->d3GetSet()->Save(); //dumpvar($_POST); } /** * schreibt Lizenzkey in Modulconfig * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException * @throws StandardException * @throws d3ShopCompatibilityAdapterException * @throws d3_cfg_mod_exception */ public function submit_licensekey() { if (false == $this->hasDemoShopMode()) { $this->d3GetSet()->setSerial(Registry::get(Request::class)->getRequestEscapedParameter('licensekey')); $this->d3GetSet()->save(); } } /** * @return bool */ public function hasDemoShopMode() { return d3utils::getInstance()->hasDemoShopMode(); } public function image_logo() { $img_data = "R0lGODlhRgBHAPf/AAB+5M3i9gCS+ACN9LPb+hp61oK567jh/ZvV/UKS3gB43vP5/tLr/QB02gCC6ACA5gCG7QCI7qPV+qjP8rza9crh9gB84sLe90eq9LHV9QBs2Emj7QCF8QB23ACL8gB64ACK8DOX6XW68iid9HTE/Hy67gCR/eX0/nvF+gCQ9mzB/Mvl+gCW/4rG9T2k8sLk/BGd/lK2/Pr9/yaK4pPO+lml5yKl/i6F2TaL3ABq0IvL+uDy/gCQ+G+z7Tyt+wB65ACK9gCB7ez1/QyV+J3N9QB+6a/a+gCN+AyT9QBmz0SV4dzx/gBy3avR84XD9AuM7mC6+lmy9COT6xKK6QCU/qXK7g6Z+Uaa5Tat/gB24cXg97jW8y2q/jKh9FWs8cje9VSc4RuE33nI/mK39gea/6vX+Wq/+wB44QBp1ACA6gBy21Cl7Fq7/JLG8m2q5QCU/Kra/Oby+2W59xOT8huT7gCJ7wBo0ABm0Ryc9/3+/wCE7r7f+k21/F2p6QB446/f/z6w/QCG7+Ty/AB+5g2e/wBo0gB75LfZ98Lf+DKm+ABr0gCC6wCA6ACT+tjs+xie+gBv1wB23oLJ+wqd/wWS9wCK8wB12wBw2Q593gCI8hSG5G6t6VCw9wB64gBz3gBv3AOY/wB75wBw1gCU+gBv1QBy2ABs0gBx1wBz2QBu1ABt0wCV+wCX/QCW/ACF6wCZ/wCE6gCY/gBy2QBz2ABt1ABw1wCE6wCW+wBx1gCF6gCY/wCW/QCY/QBr0QCU+wBu1QBv1AB22wBu0wBs0wCV+gCX/ABt0gCK7wBw1Q+Y+ACD6QB02QCG6wGZ/wCT+XCr5QBy1wR84RyO6QVt0WWl4y2P5AOW+xWi/1e6/QSN9Vi2+gSU+XzA9gOC6BOZ9xyX8qbS9QBs1gCR+2m28m+58s/s/zSd7wyc/wOM8gaN8gOI7QaU9+74/hiJ5waI7A2G5yin/lWj5lim6QV53WCu7geB5ff7/j+p9qzY+ajc/4vB8ACZ/n/G+kKe6////87i9iH5BAEAAP8ALAAAAABGAEcAAAj/AP8JHEiwoMGDCBMirHBIUgxAXLDwUWGkgsKLGAMgKiNBhxk+gADxMaNDQhlEARAGoMEFFIuXunTBBIQIo02CiCSowDKp2UsWsV69kvmy2SQsKiTUHFghxkuhUKOysJHypsIKEmIQokKFBatYYMPG2hdLF1hWLLgSiiGhQgUfVKLqigqVCgqrCC9IssH1q9i/gMWy4goPAZeuQ1mQmUSGhVR4FvEy5Qej61demFlpxsxL8+VYnkF3jkUFiz8ZCPiC0oHoAiJsjoXqgkFB8r8AEvju8sy7t+/fmk0g8EfcnhgaBI3EfsWCS2SrWrBx3V1M867qrHZr382qGPfqrbBn/2/FRgwJEmLEmNEyUMJyKiQkG3lkopX9+/jz69+P34T//yZYgc8/BNgwF3NksGeVDo28scotqzz4YCsS3gKhfRauQmGEE2ZoX4QZariKLyoc8AcMsbEACgFWBcCPOL5wKOOMNNZoI42+WMMAcfmcw4Iu17B4UwAq8DDKkUiO4osvoxBDjJJJRinlkU8i+aQvTzbyCDvE+fOHj5OQUNVFAZBwRCNTRokmkmum6WaSPPjQJXF/NCacTToc4cyefPbp55+ABirAoIQ6I8Aj2phxQJcIvITFmAiVccSgfApg6J6WGpoppZlqyumfAgyRTDJWlLqNoUcAwcMLXZJggg3PHf+kxRA8EGrroDykwMOuvPba66238vAIAyfsYOwJPkw6KBDDEScDIFQlFAAGygIrACWjZqvttqOuI0CqQByRAqFHJDIncTEAMegRQywxZzkqKEQDECnUa6+9QECxwAn89uvvv0swcAACZiRCCRADCDCAuececDAQ3sBxrj97JKQFEgPcqzEQNEzs8cd5OCIJHgjjweW5jkgAxwkT7zCCggbJQa/G9w7A6sc4T7wACtlkQkDOE2vDgRwHHTLA0UgnncIASOwA9NNdHpBNF/ZAnYcZlRx9iEFjZJ3015WMIAPUZB+QCSdV58zAPZkcXckYBVWAztd0n0323fwEMYIEQkz/fIIRnKTTNtLoxNoCBx4krvjiHnDAzd1kLzACB5nM4UIUcozBSRdIZII44xy0MFAAI4DA+OmBSJBzHjK0DrkOiIPgOQe0Z2L66R6AMEJVhwQCwu/ABw9CHXWskLME34wwwuU0sAw0A+jUIfz00wey9T9O6BE88SAcQ3wdgczRN85jBBHI+XoEMQc+QMswgu/df1/HMd5L3/3vdejhxG0u6CH//8TTQxeA1r8IyE8PT3AE0DDgPwA68HuBcEEALvCECFjwghi0YBCikDN20EEPGYxAEB6XsygEIYQozOATtJCBRUDghTCM4QuD4AS1qUOGM9wA0EyIwx7KcBEZaIEL/30Iw0X8DGf4SEMPF2GOBSqRiD5cRAtEkAZXWPGKWHSFLdyxI5xxowhYZIYV0+ACAlYxi1kUYxbTIAIvpAEWttAiLHKRC1fU0RZpoMMCcuaFIuQCFnacoy2K4IWc2UMKabDFHLVoR1s40hZ0VCQcbeEAL5hjEbBQBiw2yUlOFqGMOMtDCIrQSU+SI2eCmMIbS8lKVjrAHFJwgDJmSctaKiMU40DlFGRpy1sSIWd7YEQvh9lLB0hhlw5IpjKX6YBQ/BJnL3gAM5XZDePhzAmhmKY2tTkFZG7TAQ8YxB5yRoRsTjMUIchDzjZgzm9+cwrSeIA850nPcL5DEDkjhx/qKf9PP9QQZ6kcBD8HOlBphAAACE2oQgFgCCmMDWcb+AFCH5BQQ7QDnzgjgkQBQNGFetSjIdiAIT6aUD+swZBSGOlCs9AGoPXDDySNaUU30AOYxjQLJciZI+qhUoRaIAv0ABoiLCDTovqhBwboxEeJ+lNw5OwQZ7CAVDuRhU704KE4W0MWFkrUoia0EwZoQhakStayStWaH3PCJ7Jwhg9oYg2IeFoGomrWutqVrFloAgWi8YG7nkET4/vYCojQhEOsILA5E8IMxnrXxpL1A9GgQACqoYAPWPaylo1ECCBHtj4wAbOgDa1oFVCNlPTAEwqobGUvy4Q+cPZpJUDtZVf7AdX/Wpa2qlWtJ3ogkCagNrXATe0n9PHanJWACcFNrnKXm1pPNEEgXwhDJJbriQwU12NCkAdymctd5UYiDF8YSA+2G9wOzEOB1+2SDIgQhk90973BZQJvB0IBNXTgvvhVQxj2mF5BtKEal7AvfgdM4AIbWA21Gd0V1BCMYFjCwZe4wmtlEIcL6OMKmNDAJSzB4Q48mMMOtoSHQ8zhDjvYwx5WwxUg9Y8JbLjEllDDDPpQgxrb+MY4jscVZoAJNWgAEqiAsZCHTGQiX2ICBgmAEi7RgCY3+RIaiLKUp0xlKV9CFqhwspa3zOUuc/kSSmCxQLYACSyj4sxoTrOa07yMBqwZ/xXLePOZ4yznN8sCEltIyCY0MItSzAIVspiFLErhZ0H3+c+oELQssEzoRf+50IvG8iwmvWhAlyLQhIY0Kgg96XBs4iphgESmR03qUpMaGqZOtapLDYkwxOogGUBDLU5B61rb+ta0hgaud83rXtu6FuHIgE0MIGtciEIUp6hFLY6d7GOLwtinMLYolL3sZSfb2Ms2Ni6wfextbzvatYD2KUSBBgMMCQxocLa6183udrv73e5GAxjELK0EoIEU+CYFMiCR73wjw9/97je/Ay5wfA884MhAQwLofRUcFAIY+E4FMFLxC4hTnBQQJ8UvAg6MX2ycFBfneL5TofF8Q7wQOP949U2+oIRCpOLlMI+5zGdO85rXvBBKCK9tBBIAMNxBFamghSpUQQthED0VwqAFLZA+9KQLPelIV7rQh670lxNd6EpXxR3mvXOCBMAAhVDE0MdO9rKb/exoH7siCmEAhttmAgVIgthNQXdTDIPuw7j7MIxhDFP03e91r7sq6p53uvf9DgVActcR8gU35MAOgY+85CdPebrbIQdu0PniE7KFBNjBDr2gey8UYYpemF4Roy+9KUgfeNKHPvSK+HwC8rz5jFQhATlIQg5Mz/ve+/73ps99DhJQBbfXPslbcEPck3D53u/+9zmIvh2SkIQCuGELxj9+Qr5QhWfcYBrUp/4r5aP/+PAnYRo3eEYVNK/9xVeAAlUwADXAgIMC2L8AOAADNQxQBQqovOsBAQA7"; header("Content-type: image/gif"); echo base64_decode($img_data); exit; } /** * @return mixed */ public function getLogoUrl() { $aParams = [ 'cl' => $this->getClassKey(), 'fnc' => 'image_logo', ]; $sURL = Registry::get(d3utils::class)->getAdminClassUrl($aParams); return $sURL; } /** * @return bool */ public function hasLicense() { return $this->_hasLicence; } /** * @return bool * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException */ public function hasLicenseKey() { if ($this->d3GetSet()->getFieldData('oxserial')) { return true; } return false; } /** * @return bool * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException * @throws StandardException * @throws d3ShopCompatibilityAdapterException * @throws d3_cfg_mod_exception */ public function hasUpdate() { if (class_exists(d3install::class)) { $oModCfg = $this->d3GetSet(); if ($oModCfg->getModCfgError()) { return false; } return true; } return false; } /** * @return bool */ public function hasNewsletterForm() { return $this->_hasNewsletterForm; } /** * @return string * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException */ public function checkModuleVersion() { if (ip2long($this->d3GetSet()->getFieldData('oxversion')) == $this->d3GetSet()->getFieldData('oxversionnum')) { return 'OK'; } return 'NOK'; } /** * @return bool */ public function d3CheckCurl() { if (false == function_exists('curl_init')) { return false; } else { return true; } } /** * @return bool */ public function d3ModUseCurl() { return $this->_modUseCurl; } /** * @param $sShopVersion * @return mixed * @throws Exception */ public function check4ShopUpdate($sShopVersion) { /** @var d3shopversionconverter $oShopVersionConverter */ $oShopVersionConverter = oxNew(d3shopversionconverter::class); return version_compare( $oShopVersionConverter->fixVersionToDefaultEdition($this->getShopVersion()), $sShopVersion, "<" ); } /** * @param $sModId * @param $sModVersion * @return bool * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException * @throws StandardException * @throws d3ShopCompatibilityAdapterException * @throws d3_cfg_mod_exception */ public function check4LicenseUpdate($sModId, $sModVersion) { /** @var d3str $oStr */ $oStr = oxNew(d3str::class); if ($this->d3GetSet()->getLicenseData('modversion')) { if ($oStr->versionToInt($sModVersion, 999) > $oStr->versionToInt(d3_cfg_mod::get($sModId)->getLicenseData('modversion'), 999) ) { return true; } } return false; } /** * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException * @throws StandardException * @throws d3ShopCompatibilityAdapterException * @throws d3_cfg_mod_exception */ public function filedownload() { if (! Registry::get(d3utils::class)->hasDemoshopMode()) { $this->checkUpdate(); /** @var d3filesystem $oFS */ $oFS = oxNew(d3filesystem::class); if (strtolower(Registry::get(Request::class)->getRequestEscapedParameter('type')) == 'newest') { if ($this->getNewestModuleData($this->getPhpVersionDownloadField(true)) && $this->getInstallClass()) { $oFS->startDirectDownload($this->getNewestModuleData($this->getPhpVersionDownloadField(true))); } elseif ($this->getNewestModuleData($this->getPhpVersionDownloadField()) && $this->getInstallClass()) { $oFS->startDirectDownload($this->getNewestModuleData($this->getPhpVersionDownloadField())); } } elseif ($this->getUpdateData($this->getPhpVersionDownloadField(true)) && $this->getInstallClass()) { $oFS->startDirectDownload($this->getUpdateData($this->getPhpVersionDownloadField(true))); } elseif ($this->getUpdateData($this->getPhpVersionDownloadField()) && $this->getInstallClass()) { $oFS->startDirectDownload($this->getUpdateData($this->getPhpVersionDownloadField())); } } } /** * @return string */ public function d3GetMenuItemTitle() { return $this->_sMenuItemTitle; } /** * @return string */ public function d3GetMenuSubItemTitle() { return $this->_sMenuSubItemTitle; } /** * @return string * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException */ public function getHelpURL() { if ($this->sHelpURL === null) { $this->sHelpURL = false; if ((bool) Registry::get(ConfigFile::class)->getVar('iDebug')) { startProfile(__METHOD__); } $sUrl = $this->d3GetSet()->getHelpURL(); /** @var d3filesystem $oFS */ $oFS = oxNew(d3filesystem::class); if (false == $this->d3GetSet()->getHelpUrlAdd()) { $sUrl .= $oFS->unprefixedslashit($this->_sDefaultHelpLinkAdd); } if ($this->_sHelpLinkMLAdd) { $sUrl .= $oFS->unprefixedslashit(Registry::getLang()->TranslateString($this->_sHelpLinkMLAdd)); } $aFileName = $oFS->splitFilename($sUrl); // has no extension if (false == $aFileName['ext']) { $sUrl = $oFS->trailingslashit($sUrl); } if ((bool) Registry::get(ConfigFile::class)->getVar('iDebug')) { stopProfile(__METHOD__); } $this->sHelpURL = $sUrl; } return $this->sHelpURL; } /** * @return bool|mixed * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException * @throws StandardException * @throws DatabaseException * @throws d3ShopCompatibilityAdapterException * @throws d3_cfg_mod_exception */ public function hasBlogContent() { if ($this->mBlogContent === null) { $this->mBlogContent = false; if ((bool) Registry::get(ConfigFile::class)->getVar('iDebug')) { startProfile(__METHOD__); } $oModCfgSet = d3_cfg_mod::get('d3modcfg_lib'); if (! $oModCfgSet->getValue('blModCfg_noSupportBlogInfo') || ! $this->d3GetSet()->getValue('blModCfg_noSupportBlogInfo') ) { /** @var d3feeds $oFeed */ $oFeed = oxNew(d3feeds::class); $this->mBlogContent = $oFeed->getAdminSupportContent($this->_sBlogFeed); } if ((bool) Registry::get(ConfigFile::class)->getVar('iDebug')) { stopProfile(__METHOD__); } } return $this->mBlogContent; } /** * @return string */ public function getBlogBaseUrl() { /** @var d3feeds $oFeed */ $oFeed = oxNew(d3feeds::class); return $oFeed->getBlogBaseUrl(); } /** * @return string * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException * @throws StandardException * @throws d3ShopCompatibilityAdapterException * @throws d3_cfg_mod_exception */ public function getExpireSpanString() { if ($this->d3GetSet()->isExpired()) { return Registry::getLang()->translateString('D3_CFG_MOD_STATUS_EXPIRED'); } return sprintf( Registry::getLang()->translateString("D3_CFG_MOD_STATUS_EXPIRES_IN"), $this->d3GetSet()->getExpireTimeSpan() ); } /** * @param bool $blForceIonCube * @return bool|string */ public function getPhpVersionDownloadField($blForceIonCube = false) { return d3install::getInstance()->getPhpVersionDownloadField($blForceIonCube); } /** * @return array */ public function getUserMessages() { return $this->_aMessages; } /** * @param $sModId * @return mixed */ public function getLicenceFrameUrl($sModId) { $aParams = [ 'cl' => 'd3mod_activation', # don't use d3mod_activation::class 'modid' => $sModId, 'bgcolor' => '#F0F0F0', ]; return Registry::get(d3utils::class)->getAdminClassUrl($aParams); } /** * @return d3installcheck * @throws DBALException * @throws DatabaseConnectionException * @throws DatabaseErrorException */ public function getInstallCheck() { $oInstallCheck = oxNew(d3installcheck::class, $this->d3GetSet()); return $oInstallCheck; } /** * @return string */ public function getLink() { return ''; } }