pluginSlug = plugin_basename(dirname(__DIR__).'/index.php'); add_filter('pre_set_site_transient_update_plugins', [$this, 'checkUpdates'], 10, 1); add_filter('site_transient_update_plugins', [$this, 'checkUpdates'], 10, 1); add_filter('upgrader_package_options', [$this, 'checkDownloadUrl']); add_action('upgrader_process_complete', [$this, 'afterUpdate'], 20, 2); } public function checkDownloadUrl($options) { if (empty($options['hook_extra']['plugin']) || $options['hook_extra']['plugin'] !== $this->pluginSlug || !acym_level(ACYM_ESSENTIAL)) { return $options; } if (isset($options['package']) && strpos($options['package'], 'wordpress.org') !== false) { $this->checkVersion(true); $config = acym_config(true); $options['package'] = $config->get('downloadurl', ''); } return $options; } public function checkUpdates($transient) { $this->checkVersion(); if ($this->cancelUpdate) { if (!empty($transient->response[$this->pluginSlug])) { unset($transient->response[$this->pluginSlug]); } return $transient; } if (!acym_level(ACYM_ESSENTIAL) || !empty($transient->no_update[$this->pluginSlug]) || empty($transient->response[$this->pluginSlug])) { return $transient; } $config = acym_config(); $downloadURL = $config->get('downloadurl', ''); if (strpos($downloadURL, 'http') === false) { $downloadURL = ''; add_action('admin_notices', [$this, 'noticeUpdate'], 110); } $transient->response[$this->pluginSlug]->package = $downloadURL; return $transient; } public function afterUpdate($upgrader_object, $options): void { if ($options['action'] !== 'update' || $options['type'] !== 'plugin') { return; } if (!empty($options['plugin']) && $options['plugin'] === $this->pluginSlug) { $this->resetUpdateData(); } elseif (!empty($options['plugins'])) { foreach ($options['plugins'] as $onePluginSlug) { if ($onePluginSlug !== $this->pluginSlug) { continue; } $this->resetUpdateData(); break; } } } public function noticeUpdate() { global $pagenow; if (!in_array($pagenow, ['update-core.php', 'plugins.php'])) { return; } echo '
AcyMailing: '.acym_translation('ACYM_PAID_VERSION_NEED_UPDATE_ERROR_LICENSE_ATTACH').'