€€€Œ$QBfBfiDà1}9ofBf\ݬ}9of´ž@5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1´9ofBf\ݬ}9ofNB5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1´9ofBf\ݬ´9of(@55€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1¹9ofBf\ݬ´9of¤çá95€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1¹9ofBf\ݬ¹9ofð¬5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1õ9ofBf\ݬ¹9ofk¶p5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1õ9ofBf\ݬõ9of¬m5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1ö9ofBf\ݬõ9of†Ÿ 5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1ö9ofBf\ݬö9ofY›Ï25€€€ƒX€€€‡@$€€€Œ$QBfBfiDà11:ofBf\ݬö9ofÕB”75€€€ƒX€€€‡@$€€€Œ$QBfBfiDà11:ofBf\ݬ1:ofZœ5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà12:ofBf\ݬ1:of•a 5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà12:ofBf\ݬ2:ofÂʶ15€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1h:ofBf\ݬ2:ofÜi>65€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1h:ofBf\ݬh:of´ùx$5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1l:ofBf\ݬh:ofΘ)5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1l:ofBf\ݬl:of`495€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1¤:ofBf\ݬm:of”=^5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1¥:ofBf\ݬ¥:ofˆÿ;5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1©:ofBf\ݬ¥:of§5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1©:ofBf\ݬ©:ofDn45€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1ä:ofBf\ݬ©:of65€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1ä:ofBf\ݬä:of$Ú’05€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1æ:ofBf\ݬä:ofŸW55€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1æ:ofBf\ݬæ:of>¢"5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1 ;ofBf\ݬæ:ofR'5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1!;ofBf\ݬ!;of ü5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1!;ofBf\ݬ!;ofUÂ:5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1!;ofBf\ݬ!;of.r< 5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1\;ofBf\ݬ!;ofé‡5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1\;ofBf\ݬ\;ofñW45€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1^;ofBf\ݬ\;ofk­95€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1^;ofBf\ݬ^;of)a±"5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1”;ofBf\ݬ^;of³'5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1”;ofBf\ݬ”;of*×®45€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1™;ofBf\ݬ”;of¤~s95€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1™;ofBf\ݬ™;ofc<ˆ5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1Ô;ofBf\ݬ™;ofÝãL5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1Ô;ofBf\ݬÔ;ofT‘“35€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1Ö;ofBf\ݬÔ;ofíQ95€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1Ö;ofBf\ݬÖ;ofãzû%5€€€ƒX€€€‡@$€€€Œ$QBfBfiDà1integrations as $class ) { if ( ! $this->conditionals_are_met( $class ) ) { continue; } $integration = $this->get_class( $class ); if ( $integration === null ) { continue; } $integration->register_hooks(); } } /** * Loads all registered routes if their conditionals are met. * * @return void */ public function load_routes() { foreach ( $this->routes as $class ) { if ( ! $this->conditionals_are_met( $class ) ) { continue; } $route = $this->get_class( $class ); if ( $route === null ) { continue; } $route->register_routes(); } } /** * Checks if all conditionals of a given loadable are met. * * @param string $loadable_class The class name of the loadable. * * @return bool Whether all conditionals of the loadable are met. */ protected function conditionals_are_met( $loadable_class ) { // In production environments do not fatal if the class does not exist but log and fail gracefully. if ( \YOAST_ENVIRONMENT === 'production' && ! \class_exists( $loadable_class ) ) { if ( \defined( 'WP_DEBUG' ) && \WP_DEBUG ) { // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log \error_log( \sprintf( /* translators: %1$s expands to Yoast SEO, %2$s expands to the name of the class that could not be found. */ \__( '%1$s attempted to load the class %2$s but it could not be found.', 'wordpress-seo' ), 'Yoast SEO', $loadable_class ) ); } return false; } $conditionals = $loadable_class::get_conditionals(); foreach ( $conditionals as $class ) { $conditional = $this->get_class( $class ); if ( $conditional === null || ! $conditional->is_met() ) { return false; } } return true; } /** * Gets a class from the container. * * @param string $class The class name. * * @return object|null The class or, in production environments, null if it does not exist. * * @throws Throwable If the class does not exist in development environments. * @throws Exception If the class does not exist in development environments. */ protected function get_class( $class ) { try { return $this->container->get( $class ); } catch ( Throwable $e ) { // In production environments do not fatal if the class could not be constructed but log and fail gracefully. if ( \YOAST_ENVIRONMENT === 'production' ) { if ( \defined( 'WP_DEBUG' ) && \WP_DEBUG ) { // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log \error_log( $e->getMessage() ); } return null; } throw $e; } } }