PATH:
var
/
www
/
clients
/
client1
/
web1
/
web
/
wp-content
/
sitepress-multilingual-cms
/
classes
/
notices
<?php /** * @author OnTheGo Systems */ class WPML_Notice { private $display_callbacks = array(); private $id; private $text; private $collapsed_text; private $group = 'default'; private $restricted_to_user_ids = array(); private $actions = array(); /** * @see \WPML_Notice::set_css_class_types * @var array */ private $css_class_types = array(); private $css_classes = array(); private $dismissible = false; private $exclude_from_pages = array(); private $hideable = false; private $collapsable = false; private $restrict_to_pages = array(); private $restrict_to_page_prefixes = array(); private $restrict_to_screen_ids = array(); private $hide_if_notice_exists = null; private $dismissible_for_different_text = true; private $default_group_name = 'default'; private $capabilities = array(); private $dismiss_reset = false; /* * @var bool * @since 4.1.0 */ private $flash = false; /** * @var string */ private $nonce_action; /** @var bool */ private $text_only = false; /** * WPML_Admin_Notification constructor. * * @param int|string $id * @param string $text * @param string $group */ public function __construct( $id, $text, $group = 'default' ) { $this->id = $id; $this->text = $text; $this->group = $group ? $group : $this->default_group_name; } public function add_action( WPML_Notice_Action $action ) { $this->actions[] = $action; if ( $action->can_dismiss() ) { $this->dismissible = true; } if ( ! $action->can_dismiss_different_text() ) { $this->dismissible_for_different_text = false; } if ( $action->can_hide() ) { $this->hideable = true; } } public function add_exclude_from_page( $page ) { $this->exclude_from_pages[] = $page; } public function add_restrict_to_page( $page ) { $this->restrict_to_pages[] = $page; } /** @param int $user_id */ public function add_user_restriction( $user_id ) { $user_id = (int) $user_id; $this->restricted_to_user_ids[ $user_id ] = $user_id; } /** @param int $user_id */ public function remove_user_restriction( $user_id ) { unset( $this->restricted_to_user_ids[ (int) $user_id ] ); } /** @return array */ public function get_restricted_user_ids() { return $this->restricted_to_user_ids; } /** @return bool */ public function is_user_restricted() { return (bool) $this->restricted_to_user_ids; } /** @return bool */ public function is_for_current_user() { return ! $this->restricted_to_user_ids || array_key_exists( get_current_user_id(), $this->restricted_to_user_ids ); } /** * @return bool */ public function is_user_cap_allowed() { $user_can = true; foreach ( $this->capabilities as $cap ) { $user_can = current_user_can( $cap ); if ( $user_can ) { break; } } return $user_can; } public function can_be_dismissed() { return $this->dismissible; } public function can_be_dismissed_for_different_text() { return $this->dismissible_for_different_text; } public function can_be_hidden() { return $this->hideable; } /** * @return bool */ public function can_be_collapsed() { return $this->collapsable; } /** * As the notice is supposed to be serialized and stored into the DB, * the callback should be only a function or a static method. * * Before to use a callback, please check the existing options with: * - add_exclude_from_page * - add_restrict_to_page * - add_user_restriction * - add_capability_check * * @param callable $callback */ public function add_display_callback( $callback ) { if ( ! is_callable( $callback ) ) { throw new UnexpectedValueException( '\WPML_Notice::add_display_callback expects a callable', 1 ); } $this->display_callbacks[] = $callback; } public function add_capability_check( array $cap ) { $this->capabilities = $cap; } public function get_display_callbacks() { return $this->display_callbacks; } /** * @return array<\WPML_Notice_Action> */ public function get_actions() { return $this->actions; } public function get_css_classes() { return $this->css_classes; } /** * @param string|array $css_classes */ public function set_css_classes( $css_classes ) { if ( ! is_array( $css_classes ) ) { $css_classes = explode( ' ', $css_classes ); } $this->css_classes = $css_classes; } public function get_exclude_from_pages() { return $this->exclude_from_pages; } /** * @return string */ public function get_group() { return $this->group; } /** * @return int|string */ public function get_id() { return $this->id; } public function set_restrict_to_page_prefixes( array $page_prefixes ) { $this->restrict_to_page_prefixes = $page_prefixes; } /** * @return array */ public function get_restrict_to_page_prefixes() { return $this->restrict_to_page_prefixes; } public function get_restrict_to_pages() { return $this->restrict_to_pages; } public function set_restrict_to_screen_ids( array $screens ) { $this->restrict_to_screen_ids = $screens; } /** * @return array */ public function get_restrict_to_screen_ids() { return $this->restrict_to_screen_ids; } public function get_nonce_action() { return $this->nonce_action; } /** * @return string */ public function get_text() { $notice = array( 'id' => $this->get_id(), 'group' => $this->get_group(), ); $this->text = apply_filters( 'wpml_notice_text', $this->text, $notice ); return $this->text; } public function get_css_class_types() { return $this->css_class_types; } /** * @return string */ public function get_collapsed_text() { return $this->collapsed_text; } /** * Use this to set the look of the notice. * WordPress recognize these values: * - notice-error * - notice-warning * - notice-success * - notice-info * You can use the above values with or without the "notice-" prefix: * the prefix will be added automatically in the HTML, if missing. * * @see https://codex.wordpress.org/Plugin_API/Action_Reference/admin_notices for more details * * @param string|array $types Accepts either a space separated values string, or an array of values. * @return WPML_Notice */ public function set_css_class_types( $types ) { $this->css_class_types = is_array( $types ) ? $types : explode( ' ', $types ); return $this; } /** * @param bool $dismissible */ public function set_dismissible( $dismissible ) { $this->dismissible = $dismissible; } public function set_exclude_from_pages( array $pages ) { $this->exclude_from_pages = $pages; } public function set_hide_if_notice_exists( $notice_id, $notice_group = null ) { $this->hide_if_notice_exists = array( 'id' => $notice_id, 'group' => $notice_group, ); } public function get_hide_if_notice_exists() { return $this->hide_if_notice_exists; } /** * @param bool $hideable */ public function set_hideable( $hideable ) { $this->hideable = $hideable; } /** * @param bool $collapsable */ public function set_collapsable( $collapsable ) { $this->collapsable = $collapsable; } /** * @param string $action */ public function set_nonce_action( $action ) { $this->nonce_action = $action; } /** * @param string $collapsed_text */ public function set_collapsed_text( $collapsed_text ) { $this->collapsed_text = $collapsed_text; } public function set_restrict_to_pages( array $pages ) { $this->restrict_to_pages = $pages; } public function reset_dismiss() { $this->dismiss_reset = true; } public function must_reset_dismiss() { return $this->dismiss_reset; } public function is_different( WPML_Notice $other_notice ) { return serialize( $this ) !== serialize( $other_notice ); } /** * Set notice to only display once. * * @param bool $flash * * @return WPML_Notice * @since 4.1.0 */ public function set_flash( $flash = true ) { $this->flash = (bool) $flash; return $this; } /** * @return bool * @since 4.1.0 */ public function is_flash() { return $this->flash; } /** * @return bool */ public function should_be_text_only() { return $this->text_only; } /** * @param bool $text_only */ public function set_text_only( $text_only ) { $this->text_only = $text_only; } /** * @param int|string $id * @param string $text * @param string $group * * @return WPML_Notice */ public static function make( $id, $text, $group = 'default' ) { return new WPML_Notice( $id, $text, $group ); } }
[-] DismissNotices.php
[edit]
[-] AteLockNotice.php
[edit]
[+]
pages
[-] class-wpml-notice.php
[edit]
[+]
translation-service-instruction
[+]
translation-jobs-migration
[-] class-wpml-notices.php
[edit]
[-] wpml-tm-post-edit-notices.php
[edit]
[-] class-wpml-notice-render.php
[edit]
[-] wpml-tm-post-edit-notices-factory.php
[edit]
[+]
..
[-] class-wpml-notice-action.php
[edit]