Нема описа

class-notices.php 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. * Admin notices, on the fly.
  4. *
  5. * @example
  6. * WPForms_Admin_Notice::success( 'All is good!' );
  7. *
  8. * @example
  9. * WPForms_Admin_Notice::warning( 'Do something please.' );
  10. *
  11. * @since 1.3.9
  12. */
  13. class WPForms_Admin_Notice {
  14. /**
  15. * Single instance holder.
  16. *
  17. * @since 1.3.9
  18. * @var mixed
  19. */
  20. private static $_instance = null;
  21. /**
  22. * Added notices.
  23. *
  24. * @since 1.3.9
  25. * @var array
  26. */
  27. public $notices = array();
  28. /**
  29. * Get the instance.
  30. *
  31. * @since 1.3.9
  32. * @return WPForms_Admin_Notice
  33. */
  34. public static function getInstance() {
  35. if ( is_null( self::$_instance ) ) {
  36. self::$_instance = new WPForms_Admin_Notice();
  37. }
  38. return self::$_instance;
  39. }
  40. /**
  41. * Hook when called.
  42. *
  43. * @since 1.3.9
  44. */
  45. public function __construct() {
  46. add_action( 'admin_notices', array( &$this, 'display' ) );
  47. }
  48. /**
  49. * Display the notices.
  50. *
  51. * @since 1.3.9
  52. */
  53. public function display() {
  54. // At least one WPForms capability is needed to see admin notices.
  55. if ( ! wpforms_current_user_can( 'any' ) ) {
  56. return;
  57. }
  58. echo implode( ' ', $this->notices );
  59. }
  60. /**
  61. * Add notice to instance property.
  62. *
  63. * @since 1.3.9
  64. *
  65. * @param string $message Message to display.
  66. * @param string $type Type of the notice (default: '').
  67. */
  68. public static function add( $message, $type = '' ) {
  69. $instance = self::getInstance();
  70. $id = 'wpforms-notice-' . ( count( $instance->notices ) + 1 );
  71. $type = ! empty( $type ) ? 'notice-' . $type : '';
  72. $notice = sprintf( '<div class="notice wpforms-notice %s" id="%s">%s</div>', $type, $id, wpautop( $message ) );
  73. $instance->notices[] = $notice;
  74. }
  75. /**
  76. * Add Info notice.
  77. *
  78. * @since 1.3.9
  79. *
  80. * @param string $message Message to display.
  81. */
  82. public static function info( $message ) {
  83. self::add( $message, 'info' );
  84. }
  85. /**
  86. * Add Error notice.
  87. *
  88. * @since 1.3.9
  89. *
  90. * @param string $message Message to display.
  91. */
  92. public static function error( $message ) {
  93. self::add( $message, 'error' );
  94. }
  95. /**
  96. * Add Success notice.
  97. *
  98. * @since 1.3.9
  99. *
  100. * @param string $message Message to display.
  101. */
  102. public static function success( $message ) {
  103. self::add( $message, 'success' );
  104. }
  105. /**
  106. * Add Warning notice.
  107. *
  108. * @since 1.3.9
  109. *
  110. * @param string $message Message to display.
  111. */
  112. public static function warning( $message ) {
  113. self::add( $message, 'warning' );
  114. }
  115. }