Completed
Push — master ( d07982...cb7231 )
by Dan
05:09
created

Sensei_Notices::maybe_print_notices()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 18
Code Lines 8

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 18
rs 9.4285
cc 3
eloc 8
nc 2
nop 0
1
<?php
2
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
3
4
/**
5
 * Sensei Notices Class
6
 *
7
 * All functionality pertaining to displaying of various notices on the frontend.
8
 *
9
 * @package Core
10
 * @author Automattic
11
 *
12
 * @since 1.6.3
13
 */
14
class Sensei_Notices{
15
16
	/**
17
	*  @var $notices
18
	*/
19
	protected $notices;
20
21
	/**
22
	 * @var boolean $has_printed
23
	 */
24
	protected $has_printed;
25
26
	/**
27
	*  constructor 
28
 	*/
29
	public function __construct(){
30
		//initialize the notices variable
31
		$this->notices = array();
32
		$this->has_printed = false;
33
	}
34
35
	/**
36
	 *  Add a notice to the array of notices for display at a later stage.
37
	 *
38
	 *
39
	 * @param string $content
40
	 * @param string $type defaults to alert options( alert, tick , download , info   )
41
	 *
42
	 * @return void
43
	 */
44
45
	public function add_notice( $content ,  $type = 'alert'   ){
46
		// append the new notice
47
		$this->notices[] = array('content' => $content , 'type'=> $type );
48
49
		// if a notice is added after we've printed print it immediately.
50
		if( $this->has_printed  ){
51
			$this->maybe_print_notices();
52
		}
53
54
	} // end add_notice()
55
56
	/**
57
	 * Output all notices added
58
	 *
59
	 * @return void
60
	 */
61
62
	public function maybe_print_notices(){
63
		if(  count( $this->notices ) > 0  ){
64
			foreach ($this->notices  as  $notice) {
65
66
				$classes = 'sensei-message '. $notice['type'];
67
				$html = '<div class="'. $classes . '">'. $notice['content'] . '</div>';
68
69
				echo $html; 
70
			}
71
			// empty the notice queue to avoid reprinting the same notices
72
			$this->clear_notices();
73
74
		}
75
76
		// set this to print immediately if notices are added after the notices were printed
77
		$this->has_printed = true;
78
79
	} // end print_notice()
80
81
	/**
82
	*  Clear all notices  
83
	* 
84
	* @return void
85
	*/
86
	public function clear_notices(){
87
		// assign an empty array to clear all existing notices
88
		$this->notices = array();
89
	} // end clear_notices()
90
91
} // end Woothemes_Sensei_Notices
92
93
/**
94
 * Class Woothemes_Sensei_Notices
95
 * @ignore only for backward compatibility
96
 * @since 1.9.0
97
 */
98
class Woothemes_Sensei_Notices extends Sensei_Notices{}
99