checked)) { return $transient; } $settingsService = new SettingsService(new SettingsStorage()); /** @var string $purchaseCode */ $purchaseCode = $settingsService->getSetting('activation', 'purchaseCodeStore'); /** @var string $envatoTokenEmail */ $envatoTokenEmail = $settingsService->getSetting('activation', 'envatoTokenEmail'); // Get the remote info $remoteInformation = self::getRemoteInformation($purchaseCode, $envatoTokenEmail); // If a newer version is available, add the update if ($remoteInformation) { if (isset($remoteInformation->force_deactivate) && $remoteInformation->force_deactivate === true) { $settingsService->setSetting('activation', 'active', false); $settingsService->setSetting('activation', 'purchaseCodeStore', ''); $settingsService->setSetting('activation', 'envatoTokenEmail', ''); } if ($remoteInformation && version_compare(AMELIA_VERSION, $remoteInformation->new_version, '<')) { $transient->response[AMELIA_PLUGIN_SLUG] = $remoteInformation; } } return $transient; } /** * Add our self-hosted description to the filter * * @param bool $response * @param array $action * @param $args * * @return bool|object */ public static function checkInfo($response, $action, $args) { if ('plugin_information' !== $action) { return $response; } if (empty($args->slug)) { return $response; } $settingsService = new SettingsService(new SettingsStorage()); /** @var string $purchaseCode */ $purchaseCode = $settingsService->getSetting('activation', 'purchaseCodeStore'); /** @var string $envatoTokenEmail */ $envatoTokenEmail = $settingsService->getSetting('activation', 'envatoTokenEmail'); if ($args->slug === AMELIA_PLUGIN_SLUG) { return self::getRemoteInformation($purchaseCode, $envatoTokenEmail); } return $response; } /** * Add a message for unavailable auto update on plugins page if plugin is not activated */ public static function addMessageOnPluginsPage() { /** @var SettingsService $settingsService */ $settingsService = new SettingsService(new SettingsStorage()); /** @var bool $activated */ $activated = $settingsService->getSetting('activation', 'active'); /** @var array $settingsStrings */ $settingsStrings = BackendStrings::getSettingsStrings(); /** @var string $url */ $url = AMELIA_SITE_URL . '/wp-admin/admin.php?page=wpamelia-settings&activeSetting=activation'; /** @var string $redirect */ $redirect = '' . $settingsStrings['settings_lower'] . ''; if (!$activated) { echo sprintf(' ' . $settingsStrings['plugin_not_activated'], $redirect); } } /** * Add error message on plugin update if plugin is not activated * * @param bool $reply * @param string $package * @param WP_Upgrader $updater * * @return WP_Error|string|bool * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public static function addMessageOnUpdate($reply, $package, $updater) { /** @var array $settingsStrings */ $settingsStrings = BackendStrings::getSettingsStrings(); /** @var string $url */ $url = AMELIA_SITE_URL . '/wp-admin/admin.php?page=wpamelia-settings&activeSetting=activation'; /** @var string $redirect */ $redirect = '' . $settingsStrings['settings_lower'] . ''; if (!$package) { return new WP_Error( 'amelia_not_activated', sprintf(' ' . $settingsStrings['plugin_not_activated'], $redirect) ); } return $reply; } /** * Get information about the remote version * * @param string $purchaseCode * @param string $envatoTokenEmail * * @return bool|object */ private static function getRemoteInformation($purchaseCode, $envatoTokenEmail) { $request = wp_remote_post( AMELIA_STORE_API_URL . 'autoupdate/info', [ 'body' => [ 'slug' => 'ameliabooking', 'purchaseCode' => $purchaseCode, 'envatoTokenEmail' => $envatoTokenEmail, 'domain' => self::extractDomain( filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING) ), 'subdomain' => self::extractSubdomain( filter_input(INPUT_SERVER, 'SERVER_NAME', FILTER_SANITIZE_STRING) ) ] ] ); if (!is_wp_error($request) || wp_remote_retrieve_response_code($request) === 200) { return unserialize(json_decode($request['body'])->info); } return false; } /** * @param $domain * * @return mixed */ private static function extractDomain($domain) { if (preg_match("/(?P[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i", $domain, $matches)) { return $matches['domain']; } return $domain; } /** * @param $domain * * @return string */ private static function extractSubdomain($domain) { $subdomains = $domain; $domain = self::extractDomain($subdomains); $subdomains = rtrim(strstr($subdomains, $domain, true), '.'); return $subdomains; } }