| @@ -9,17 +9,21 @@ | ||
| 9 | 9 | defined('ABSPATH') || die('No direct access.'); |
| 10 | 10 | |
| 11 | 11 | use Extendify\Config; |
| 12 | 12 | use Extendify\PartnerData; |
| 13 | +use Extendify\Notifications\Availability; | |
| 13 | 14 | use Extendify\Shared\Controllers\UserSelectionController; |
| 14 | -use Extendify\Shared\DataProvider\PartnerNotificationData; | |
| 15 | +use Extendify\Shared\DataProvider\NotificationData; | |
| 15 | 16 | use Extendify\Shared\DataProvider\ResourceData; |
| 16 | 17 | use Extendify\Shared\Services\AdminMenuList; |
| 17 | 18 | use Extendify\Shared\Services\ApexDomain\ApexDomain; |
| 18 | 19 | use Extendify\Shared\Services\Escaper; |
| 19 | 20 | use Extendify\Shared\Services\PluginDependencies\SimplyBook; |
| 21 | +use Extendify\Shared\Services\PluginsActivation\Imagify as ImagifyActivation; | |
| 20 | 22 | use Extendify\Shared\Services\PluginsActivation\Metricool as MetricoolActivation; |
| 21 | 23 | use Extendify\Shared\Services\PluginsActivation\SimplyBook as SimplyBookActivation; |
| 24 | +use Extendify\Shared\Services\PluginsActivation\TranslatePress as TranslatePressActivation; | |
| 25 | +use Extendify\Shared\Services\SiteImages; | |
| 22 | 26 | use Extendify\SiteSettings; |
| 23 | 27 | use Extendify\Shared\Controllers\ImageGenerationController; |
| 24 | 28 | use Extendify\Shared\DataProvider\ProductsData; |
| 25 | 29 | |
| @@ -156,12 +160,24 @@ | ||
| 156 | 160 | return in_array($plugin['slug'], $activePluginSlugs); |
| 157 | 161 | } |
| 158 | 162 | ); |
| 159 | 163 | |
| 160 | - $productActivationPlugins = array_map(function ($plugin) { | |
| 161 | - foreach ([MetricoolActivation::class, SimplyBookActivation::class] as $activation) { | |
| 164 | + $activations = [ | |
| 165 | + ImagifyActivation::class, | |
| 166 | + MetricoolActivation::class, | |
| 167 | + SimplyBookActivation::class, | |
| 168 | + TranslatePressActivation::class, | |
| 169 | + ]; | |
| 170 | + | |
| 171 | + $productActivationPlugins = array_map(function ($plugin) use ($activations) { | |
| 172 | + foreach ($activations as $activation) { | |
| 162 | 173 | if ($plugin['slug'] === $activation::slug()) { |
| 163 | - return array_merge($plugin, ['scriptData' => $activation::scriptData()]); | |
| 174 | + return array_merge($plugin, [ | |
| 175 | + 'scriptData' => $activation::scriptData(), | |
| 176 | + 'eligible' => $activation::isEligible(), | |
| 177 | + 'endpoint' => Config::$slug . '/' . Config::$apiVersion | |
| 178 | + . $activation::createAccountRoute(), | |
| 179 | + ]); | |
| 164 | 180 | } |
| 165 | 181 | } |
| 166 | 182 | |
| 167 | 183 | return $plugin; |
| @@ -206,9 +222,9 @@ | ||
| 206 | 222 | 'version' => \esc_attr(Config::$version), |
| 207 | 223 | 'siteTitle' => \esc_attr(\get_bloginfo('name')), |
| 208 | 224 | 'siteProfile' => \get_option('extendify_site_profile', []), |
| 209 | 225 | // Empty when the launch-time image fetch failed. |
| 210 | - 'siteImages' => \get_option('extendify_site_images', []), | |
| 226 | + 'siteImages' => SiteImages::normalize(\get_option('extendify_site_images', [])), | |
| 211 | 227 | 'wpLanguage' => \esc_attr(\get_locale()), |
| 212 | 228 | 'aiImageLabel' => $aiImageLabel, |
| 213 | 229 | 'aiImageAltPattern' => $aiImageAltPattern, |
| 214 | 230 | 'wpVersion' => \esc_attr(\get_bloginfo('version')), |
| @@ -222,14 +238,16 @@ | ||
| 222 | 238 | 'partnerId' => \esc_attr(PartnerData::$id), |
| 223 | 239 | 'partnerName' => \esc_attr(PartnerData::$name), |
| 224 | 240 | 'launchDataLegacy' => \wp_json_encode((UserSelectionController::get()->get_data() ?? [])), |
| 225 | 241 | 'resourceData' => \wp_json_encode((new ResourceData())->getData()), |
| 226 | - 'partnerNotifications' => \wp_json_encode(PartnerNotificationData::get()), | |
| 227 | - 'notifications' => \get_user_meta( | |
| 242 | + 'notifications' => \wp_json_encode( | |
| 243 | + Availability::available(NotificationData::get()) | |
| 244 | + ), | |
| 245 | + 'notificationState' => \get_user_meta( | |
| 228 | 246 | \get_current_user_id(), |
| 229 | - 'extendify_notifications', | |
| 247 | + 'extendify_notification_state', | |
| 230 | 248 | true |
| 231 | - ) ?: ['dismissed' => [], 'viewed' => []], | |
| 249 | + ) ?: ['cards' => []], | |
| 232 | 250 | 'showAIConsent' => isset($partnerData['showAIConsent']) ? (bool) $partnerData['showAIConsent'] : false, |
| 233 | 251 | 'showChat' => (bool) (PartnerData::setting('showChat') || constant('EXTENDIFY_DEVMODE')), |
| 234 | 252 | 'useAgentOnboarding' => (bool) ( |
| 235 | 253 | PartnerData::setting('useAgentOnboarding') || |