Файловый менеджер - Редактировать - /home/freeclou/app.optimyar.com/front-web/build/assets/resources/agGrid/alerts.zip
Назад
PK ew[�#�Ib b 7 application/default-seo-data/default-seo-data-alert.phpnu ȯ�� <?php // phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure. namespace Yoast\WP\SEO\Alerts\Application\Default_SEO_Data; use Yoast\WP\SEO\Alerts\Infrastructure\Default_SEO_Data\Default_SEO_Data_Collector; use Yoast\WP\SEO\Conditionals\Admin_Conditional; use Yoast\WP\SEO\Helpers\Indexable_Helper; use Yoast\WP\SEO\Helpers\Post_Type_Helper; use Yoast\WP\SEO\Helpers\Product_Helper; use Yoast\WP\SEO\Helpers\Short_Link_Helper; use Yoast\WP\SEO\Integrations\Integration_Interface; use Yoast_Notification; use Yoast_Notification_Center; /** * Default_SEO_Data_Alert class. */ class Default_SEO_Data_Alert implements Integration_Interface { public const NOTIFICATION_ID = 'wpseo-default-seo-data'; /** * The notifications center. * * @var Yoast_Notification_Center */ private $notification_center; /** * The default SEO data collector. * * @var Default_SEO_Data_Collector */ private $default_seo_data_collector; /** * The short link helper. * * @var Short_Link_Helper */ private $short_link_helper; /** * The product helper. * * @var Product_Helper */ private $product_helper; /** * The indexable helper. * * @var Indexable_Helper */ private $indexable_helper; /** * The post type helper. * * @var Post_Type_Helper */ private $post_type_helper; /** * Default_SEO_Data_Alert constructor. * * @param Yoast_Notification_Center $notification_center The notification center. * @param Default_SEO_Data_Collector $default_seo_data_collector The default SEO data collector. * @param Short_Link_Helper $short_link_helper The short link helper. * @param Product_Helper $product_helper The product helper. * @param Indexable_Helper $indexable_helper The indexable helper. * @param Post_Type_Helper $post_type_helper The post type helper. */ public function __construct( Yoast_Notification_Center $notification_center, Default_SEO_Data_Collector $default_seo_data_collector, Short_Link_Helper $short_link_helper, Product_Helper $product_helper, Indexable_Helper $indexable_helper, Post_Type_Helper $post_type_helper ) { $this->notification_center = $notification_center; $this->default_seo_data_collector = $default_seo_data_collector; $this->short_link_helper = $short_link_helper; $this->product_helper = $product_helper; $this->indexable_helper = $indexable_helper; $this->post_type_helper = $post_type_helper; } /** * Returns the conditionals based on which this loadable should be active. * * @return array<string> */ public static function get_conditionals() { return [ Admin_Conditional::class ]; } /** * Initializes the integration. * * @return void */ public function register_hooks() { \add_action( 'admin_init', [ $this, 'add_notifications' ] ); } /** * Adds notifications (when necessary). * * We want to show this notification only when there are enough posts that have the default SEO title or meta description, or both. * If this is not the case we will not show the notification at all since it does not serve a purpose yet. * * @return void */ public function add_notifications() { if ( ! $this->indexable_helper->should_index_indexables() ) { // Do not show the notification when indexables are disabled. $this->notification_center->remove_notification_by_id( self::NOTIFICATION_ID ); return; } if ( ! $this->post_type_helper->is_indexable( 'post' ) || ! $this->post_type_helper->has_metabox( 'post' ) ) { // Do not show the notification when posts are not indexable or have no metabox. $this->notification_center->remove_notification_by_id( self::NOTIFICATION_ID ); return; } $posts_with_default_seo_title = $this->default_seo_data_collector->get_posts_with_default_seo_title(); $posts_with_default_seo_description = $this->default_seo_data_collector->get_posts_with_default_seo_description(); $has_enough_posts_with_default_title = \count( $posts_with_default_seo_title ) > 4; $has_enough_posts_with_default_desc = \count( $posts_with_default_seo_description ) > 4; if ( ! $has_enough_posts_with_default_title && ! $has_enough_posts_with_default_desc ) { $this->notification_center->remove_notification_by_id( self::NOTIFICATION_ID ); return; } $notification = $this->get_default_seo_data_notification( $has_enough_posts_with_default_title, $has_enough_posts_with_default_desc ); $this->notification_center->add_notification( $notification ); } /** * Build the default SEO data notification. * * @param bool $has_enough_posts_with_default_title Whether there are content types with default SEO title in their most recent posts. * @param bool $has_enough_posts_with_default_desc Whether there are content types with default SEO description in their most recent posts. * * @return Yoast_Notification The notification containing the suggested plugin. */ private function get_default_seo_data_notification( $has_enough_posts_with_default_title, $has_enough_posts_with_default_desc ): Yoast_Notification { $message = $this->get_default_seo_data_message( $has_enough_posts_with_default_title, $has_enough_posts_with_default_desc ); return new Yoast_Notification( $message, [ 'id' => self::NOTIFICATION_ID, 'type' => Yoast_Notification::WARNING, 'capabilities' => [ 'wpseo_manage_options' ], ] ); } /** * Creates a message to inform users that they are using only default SEO data lately. * * @param bool $has_enough_posts_with_default_title Whether there are content types with default SEO title in their most recent posts. * @param bool $has_enough_posts_with_default_desc Whether there are content types with default SEO description in their most recent posts. * * @return string The default SEO data message. */ private function get_default_seo_data_message( $has_enough_posts_with_default_title, $has_enough_posts_with_default_desc ): string { $shortlink = ( $this->product_helper->is_premium() ) ? $this->short_link_helper->get( 'https://yoa.st/ai-generate-alert-premium/' ) : $this->short_link_helper->get( 'https://yoa.st/ai-generate-alert-free/' ); if ( $has_enough_posts_with_default_title && $has_enough_posts_with_default_desc ) { $default_seo_data = \esc_html__( 'SEO titles and meta descriptions', 'wordpress-seo' ); } elseif ( $has_enough_posts_with_default_title ) { $default_seo_data = \esc_html__( 'SEO titles', 'wordpress-seo' ); } elseif ( $has_enough_posts_with_default_desc ) { $default_seo_data = \esc_html__( 'meta descriptions', 'wordpress-seo' ); } else { $default_seo_data = \esc_html__( 'SEO data', 'wordpress-seo' ); } /* translators: %1$s expands to "SEO title" or "meta description", %2$s expands to an opening link tag, %3$s expands to an opening strong tag, %4$s expands to a closing strong tag, %5$s expands to a closing link tag. */ $message = ( $this->product_helper->is_premium() ) ? \esc_html__( 'Your recent posts are using default %1$s, which can make them easy to overlook in search results. Update them manually or %2$sfind out how %3$sYoast AI Generate%4$s can improve them for you.%5$s', 'wordpress-seo' ) : \esc_html__( 'Your recent posts are using default %1$s, which can make them easy to overlook in search results. Update them for better visibility or %2$stry %3$sYoast AI Generate%4$s for free to do it faster.%5$s', 'wordpress-seo' ); return \sprintf( $message, $default_seo_data, '<a href="' . \esc_url( $shortlink ) . '" target="_blank">', '<strong>', '</strong>', '</a>' ); } } PK ew[�S 9 application/ping-other-admins/ping-other-admins-alert.phpnu ȯ�� <?php // phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure. namespace Yoast\WP\SEO\Alerts\Application\Ping_Other_Admins; use Yoast\WP\SEO\Conditionals\Admin_Conditional; use Yoast\WP\SEO\Helpers\Options_Helper; use Yoast\WP\SEO\Helpers\Product_Helper; use Yoast\WP\SEO\Helpers\Short_Link_Helper; use Yoast\WP\SEO\Helpers\User_Helper; use Yoast\WP\SEO\Integrations\Integration_Interface; use Yoast_Notification; use Yoast_Notification_Center; /** * Ping_Other_Admins_Alert class. */ class Ping_Other_Admins_Alert implements Integration_Interface { public const NOTIFICATION_ID = 'wpseo-ping-other-admins'; /** * The notifications center. * * @var Yoast_Notification_Center */ private $notification_center; /** * The short link helper. * * @var Short_Link_Helper */ private $short_link_helper; /** * The product helper. * * @var Product_Helper */ private $product_helper; /** * The options helper. * * @var Options_Helper */ private $options_helper; /** * The user helper. * * @var User_Helper */ private $user_helper; /** * Ping_Other_Admins_Alert constructor. * * @param Yoast_Notification_Center $notification_center The notification center. * @param Short_Link_Helper $short_link_helper The short link helper. * @param Product_Helper $product_helper The product helper. * @param Options_Helper $options_helper The options helper. * @param User_Helper $user_helper The user helper. */ public function __construct( Yoast_Notification_Center $notification_center, Short_Link_Helper $short_link_helper, Product_Helper $product_helper, Options_Helper $options_helper, User_Helper $user_helper ) { $this->notification_center = $notification_center; $this->short_link_helper = $short_link_helper; $this->product_helper = $product_helper; $this->options_helper = $options_helper; $this->user_helper = $user_helper; } /** * Returns the conditionals based on which this loadable should be active. * * @return array<string> */ public static function get_conditionals() { return [ Admin_Conditional::class ]; } /** * Initializes the integration. * * @return void */ public function register_hooks() { // @phpcs:ignore Squiz.PHP.CommentedOutCode.Found, Squiz.Commenting.InlineComment.InvalidEndChar -- we're gonna postpone this notification until we're actually ready for it. // \add_action( 'admin_init', [ $this, 'add_notifications' ] ); } /** * Adds notification when user has not installed Yoast SEO themselves and has not resolved the notification yet. * * @return void */ public function add_notifications() { if ( $this->has_user_installed_yoast() ) { $this->notification_center->remove_notification_by_id( self::NOTIFICATION_ID ); return; } if ( $this->has_notification_been_resolved() ) { $this->notification_center->remove_notification_by_id( self::NOTIFICATION_ID ); return; } $notification = $this->get_ping_other_admins_notification(); $this->notification_center->add_notification( $notification ); } /** * Returns whether user has installed Yoast SEO themselves. * * @return bool Whether the user has installed Yoast SEO themselves. */ private function has_user_installed_yoast(): bool { $first_activated_by = $this->options_helper->get( 'first_activated_by', 0 ); if ( $first_activated_by === 0 ) { return true; // We cannot be sure, so we assume they did. } if ( \get_current_user_id() === $first_activated_by ) { return true; } return false; } /** * Returns whether the alert has been resolved before. * * @return bool Whether the alert has been resolved before. */ private function has_notification_been_resolved(): bool { return $this->user_helper->get_meta( \get_current_user_id(), self::NOTIFICATION_ID . '_resolved', true ) === '1'; } /** * Build the ping-other-admins notification. * * @return Yoast_Notification The ping-other-admins notification. */ private function get_ping_other_admins_notification(): Yoast_Notification { $message = $this->get_message(); return new Yoast_Notification( $message, [ 'id' => self::NOTIFICATION_ID, 'type' => Yoast_Notification::WARNING, 'capabilities' => [ 'wpseo_manage_options' ], 'priority' => 20, ] ); } /** * Returns the notification as an HTML string. * * @return string The HTML string representation of the notification. */ private function get_message() { $shortlink = $this->short_link_helper->get( 'https://yoa.st/new-admin-newsletter-sign-up/' ); $message = \sprintf( /* translators: %1$s and %3$s expands to "Yoast SEO" , %2$s expands to an opening link tag, %4$s expands to a closing link tag. */ \esc_html__( 'Looks like you’re new here. %1$s makes it easy to optimize your website for search engines. Want to keep your site healthy and easier to find? %2$sSign up for the %3$s newsletter for short, practical weekly tips%4$s.', 'wordpress-seo' ), 'Yoast SEO', '<a href="' . \esc_url( $shortlink ) . '" target="_blank">', 'Yoast SEO', '</a>' ); $notification_text = '<p>' . $message . '</p>'; $notification_text .= '<a class="button wpseo-resolve-alert" href="#" data-alert-id="' . \esc_attr( self::NOTIFICATION_ID ) . '" data-nonce="' . \esc_attr( \wp_create_nonce( 'wpseo-resolve-alert-nonce' ) ) . '">'; $notification_text .= \esc_html__( 'Dismiss', 'wordpress-seo' ); $notification_text .= '</a>'; return $notification_text; } } PK ew[�х+� � >