Completed
Branch dependabot/npm_and_yarn/wordpr... (563a96)
by
unknown
57:01 queued 49:08
created
core/db_models/fields/EE_WP_Post_Status_Field.php 3 patches
Doc Comments   -2 removed lines patch added patch discarded remove patch
@@ -32,8 +32,6 @@
 block discarded – undo
32 32
      *                                    )
33 33
      *                                    )
34 34
      * @link http://codex.wordpress.org/Function_Reference/register_post_status for more info
35
-     * @param boolean $store_in_db_as_int By default, enums are stored as STRINGS in the DB. However, if this var is
36
-     *                                    set to true, it will be stored as an INT
37 35
      */
38 36
     public function __construct($table_column, $nicename, $nullable, $default_value, $new_stati = array())
39 37
     {
Please login to merge, or discard this patch.
Indentation   +97 added lines, -97 removed lines patch added patch discarded remove patch
@@ -3,114 +3,114 @@
 block discarded – undo
3 3
 class EE_WP_Post_Status_Field extends EE_Enum_Text_Field
4 4
 {
5 5
 
6
-    protected $_wp_post_stati;
6
+	protected $_wp_post_stati;
7 7
 
8 8
 
9
-    /**
10
-     * constructor
11
-     *
12
-     * @param string  $table_column       column on table
13
-     * @param string  $nicename           nice name for column(field)
14
-     * @param bool    $nullable           is this field nullable
15
-     * @param string  $default_value      default status
16
-     * @param array   $new_stati          If additional stati are to be used other than the default WP statuses then
17
-     *                                    they can be registered via this property.  The format of the array should be
18
-     *                                    as follows: array(
19
-     *                                    'status_reference' => array(
20
-     *                                    'label' => __('Status Reference Label', 'event_espresso')
21
-     *                                    'public' => true, //'Whether posts of this status should be shown on the
22
-     *                                    frontend of the site'
23
-     *                                    'exclude_from_search' => false, //'Whether posts of this status should be
24
-     *                                    excluded from wp searches'
25
-     *                                    'show_in_admin_all_list' => true, //whether posts of this status are included
26
-     *                                    in queries for the admin "all" view in list table views.
27
-     *                                    'show_in_admin_status_list' => true, //Show in the list of statuses with post
28
-     *                                    counts at the top of the admin list tables (i.e. Status Reference(2) )
29
-     *                                    'label_count' => _n_noop( 'Status Reference <span class="count">(%s)</span>',
30
-     *                                    'Status References <span class="count">(%s)</span>' ), //the text to display
31
-     *                                    on the admin screen( or you won't see your status count ).
32
-     *                                    )
33
-     *                                    )
34
-     * @link http://codex.wordpress.org/Function_Reference/register_post_status for more info
35
-     * @param boolean $store_in_db_as_int By default, enums are stored as STRINGS in the DB. However, if this var is
36
-     *                                    set to true, it will be stored as an INT
37
-     */
38
-    public function __construct($table_column, $nicename, $nullable, $default_value, $new_stati = array())
39
-    {
40
-        $this->_register_new_stati($new_stati);
41
-        $this->_set_allowed_enum_values();
42
-        parent::__construct($table_column, $nicename, $nullable, $default_value, $this->_allowed_enum_values);
43
-    }
9
+	/**
10
+	 * constructor
11
+	 *
12
+	 * @param string  $table_column       column on table
13
+	 * @param string  $nicename           nice name for column(field)
14
+	 * @param bool    $nullable           is this field nullable
15
+	 * @param string  $default_value      default status
16
+	 * @param array   $new_stati          If additional stati are to be used other than the default WP statuses then
17
+	 *                                    they can be registered via this property.  The format of the array should be
18
+	 *                                    as follows: array(
19
+	 *                                    'status_reference' => array(
20
+	 *                                    'label' => __('Status Reference Label', 'event_espresso')
21
+	 *                                    'public' => true, //'Whether posts of this status should be shown on the
22
+	 *                                    frontend of the site'
23
+	 *                                    'exclude_from_search' => false, //'Whether posts of this status should be
24
+	 *                                    excluded from wp searches'
25
+	 *                                    'show_in_admin_all_list' => true, //whether posts of this status are included
26
+	 *                                    in queries for the admin "all" view in list table views.
27
+	 *                                    'show_in_admin_status_list' => true, //Show in the list of statuses with post
28
+	 *                                    counts at the top of the admin list tables (i.e. Status Reference(2) )
29
+	 *                                    'label_count' => _n_noop( 'Status Reference <span class="count">(%s)</span>',
30
+	 *                                    'Status References <span class="count">(%s)</span>' ), //the text to display
31
+	 *                                    on the admin screen( or you won't see your status count ).
32
+	 *                                    )
33
+	 *                                    )
34
+	 * @link http://codex.wordpress.org/Function_Reference/register_post_status for more info
35
+	 * @param boolean $store_in_db_as_int By default, enums are stored as STRINGS in the DB. However, if this var is
36
+	 *                                    set to true, it will be stored as an INT
37
+	 */
38
+	public function __construct($table_column, $nicename, $nullable, $default_value, $new_stati = array())
39
+	{
40
+		$this->_register_new_stati($new_stati);
41
+		$this->_set_allowed_enum_values();
42
+		parent::__construct($table_column, $nicename, $nullable, $default_value, $this->_allowed_enum_values);
43
+	}
44 44
 
45 45
 
46
-    /**
47
-     * This registers any new statuses sent via the $new_stati array on construct
48
-     *
49
-     * @access protected
50
-     * @param  array $new_stati statuses
51
-     * @return void
52
-     */
53
-    protected function _register_new_stati($new_stati)
54
-    {
46
+	/**
47
+	 * This registers any new statuses sent via the $new_stati array on construct
48
+	 *
49
+	 * @access protected
50
+	 * @param  array $new_stati statuses
51
+	 * @return void
52
+	 */
53
+	protected function _register_new_stati($new_stati)
54
+	{
55 55
 
56
-        foreach ((array) $new_stati as $status_key => $status_args) {
57
-            $args = array(
58
-                'label'                     => isset($status_args['label']) ? $status_args['label'] : $status_key,
59
-                'public'                    => isset($status_args['public']) && is_bool($status_args['public']) ? $status_args['public'] : true,
60
-                'exclude_from_search'       => isset($status_args['exclude_from_search']) && is_bool($status_args['exclude_from_search']) ? $status_args['exclude_from_search'] : false,
61
-                'show_in_admin_all_list'    => isset($status_args['show_in_admin_all_list']) && is_bool($status_args['show_in_admin_all_list']) ? $status_args['show_in_admin_all_list'] : false,
62
-                'show_in_admin_status_list' => isset($status_args['show_in_admin_status_list']) && is_bool($status_args['show_in_admin_status_list']) ? $status_args['show_in_admin_status_list'] : true,
63
-                'label_count'               => isset($status_args['label_count']) ? $status_args['label_count'] : '',
64
-            );
65
-            register_post_status($status_key, $status_args);
66
-        }
67
-    }
56
+		foreach ((array) $new_stati as $status_key => $status_args) {
57
+			$args = array(
58
+				'label'                     => isset($status_args['label']) ? $status_args['label'] : $status_key,
59
+				'public'                    => isset($status_args['public']) && is_bool($status_args['public']) ? $status_args['public'] : true,
60
+				'exclude_from_search'       => isset($status_args['exclude_from_search']) && is_bool($status_args['exclude_from_search']) ? $status_args['exclude_from_search'] : false,
61
+				'show_in_admin_all_list'    => isset($status_args['show_in_admin_all_list']) && is_bool($status_args['show_in_admin_all_list']) ? $status_args['show_in_admin_all_list'] : false,
62
+				'show_in_admin_status_list' => isset($status_args['show_in_admin_status_list']) && is_bool($status_args['show_in_admin_status_list']) ? $status_args['show_in_admin_status_list'] : true,
63
+				'label_count'               => isset($status_args['label_count']) ? $status_args['label_count'] : '',
64
+			);
65
+			register_post_status($status_key, $status_args);
66
+		}
67
+	}
68 68
 
69 69
 
70
-    /**
71
-     * This sets the _allowed_enum_values property using the $wp_post_stati array
72
-     *
73
-     * @access protected
74
-     * @regurn void
75
-     */
76
-    protected function _set_allowed_enum_values()
77
-    {
78
-        // first let's get the post_statuses
79
-        global $wp_post_statuses;
80
-        $this->_wp_post_stati = $wp_post_statuses;
70
+	/**
71
+	 * This sets the _allowed_enum_values property using the $wp_post_stati array
72
+	 *
73
+	 * @access protected
74
+	 * @regurn void
75
+	 */
76
+	protected function _set_allowed_enum_values()
77
+	{
78
+		// first let's get the post_statuses
79
+		global $wp_post_statuses;
80
+		$this->_wp_post_stati = $wp_post_statuses;
81 81
 
82
-        foreach ($this->_wp_post_stati as $post_status => $args_object) {
83
-            $this->_allowed_enum_values[ $post_status ] = $args_object->label;
84
-        }
85
-    }
82
+		foreach ($this->_wp_post_stati as $post_status => $args_object) {
83
+			$this->_allowed_enum_values[ $post_status ] = $args_object->label;
84
+		}
85
+	}
86 86
 
87
-    /**
88
-     * Before calling parent, first double-checks our list of acceptable post
89
-     * types is up-to-date
90
-     *
91
-     * @param string $value_inputted_for_field_on_model_object
92
-     * @return string
93
-     */
94
-    public function prepare_for_set($value_inputted_for_field_on_model_object)
95
-    {
96
-        $this->_set_allowed_enum_values();
97
-        return parent::prepare_for_set($value_inputted_for_field_on_model_object);
98
-    }
87
+	/**
88
+	 * Before calling parent, first double-checks our list of acceptable post
89
+	 * types is up-to-date
90
+	 *
91
+	 * @param string $value_inputted_for_field_on_model_object
92
+	 * @return string
93
+	 */
94
+	public function prepare_for_set($value_inputted_for_field_on_model_object)
95
+	{
96
+		$this->_set_allowed_enum_values();
97
+		return parent::prepare_for_set($value_inputted_for_field_on_model_object);
98
+	}
99 99
 
100 100
 
101 101
 
102
-    // helper methods for getting various $wp_post_statuses stuff.
102
+	// helper methods for getting various $wp_post_statuses stuff.
103 103
 
104
-    /**
105
-     * This just returns the status object for the given status
106
-     *
107
-     * @access public
108
-     * @see    wp_register_post_status in wp-includes/post.php for a list of properties of the status object
109
-     * @param  string $status What status object you want
110
-     * @return std_object         the status object or FALSE if it doesn't exist.
111
-     */
112
-    public function get_status_object($status)
113
-    {
114
-        return isset($this->_wp_post_stati[ $status ]) ? $this->_wp_post_stati[ $status ] : false;
115
-    }
104
+	/**
105
+	 * This just returns the status object for the given status
106
+	 *
107
+	 * @access public
108
+	 * @see    wp_register_post_status in wp-includes/post.php for a list of properties of the status object
109
+	 * @param  string $status What status object you want
110
+	 * @return std_object         the status object or FALSE if it doesn't exist.
111
+	 */
112
+	public function get_status_object($status)
113
+	{
114
+		return isset($this->_wp_post_stati[ $status ]) ? $this->_wp_post_stati[ $status ] : false;
115
+	}
116 116
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -80,7 +80,7 @@  discard block
 block discarded – undo
80 80
         $this->_wp_post_stati = $wp_post_statuses;
81 81
 
82 82
         foreach ($this->_wp_post_stati as $post_status => $args_object) {
83
-            $this->_allowed_enum_values[ $post_status ] = $args_object->label;
83
+            $this->_allowed_enum_values[$post_status] = $args_object->label;
84 84
         }
85 85
     }
86 86
 
@@ -111,6 +111,6 @@  discard block
 block discarded – undo
111 111
      */
112 112
     public function get_status_object($status)
113 113
     {
114
-        return isset($this->_wp_post_stati[ $status ]) ? $this->_wp_post_stati[ $status ] : false;
114
+        return isset($this->_wp_post_stati[$status]) ? $this->_wp_post_stati[$status] : false;
115 115
     }
116 116
 }
Please login to merge, or discard this patch.
core/db_models/helpers/EE_Model_Query_Info_Carrier.php 3 patches
Doc Comments   +14 added lines, -1 removed lines patch added patch discarded remove patch
@@ -44,19 +44,33 @@  discard block
 block discarded – undo
44 44
    
45 45
     private $_group_by_sql;
46 46
    
47
+    /**
48
+     * @param string $limit_sql
49
+     */
47 50
     public function set_limit_sql($limit_sql)
48 51
     {
49 52
         $this->_limit_sql = $limit_sql;
50 53
     }
51 54
     
55
+    /**
56
+     * @param string $order_by_sql
57
+     */
52 58
     public function set_order_by_sql($order_by_sql)
53 59
     {
54 60
         $this->_order_by_sql = $order_by_sql;
55 61
     }
62
+
63
+    /**
64
+     * @param string $group_by_sql
65
+     */
56 66
     public function set_group_by_sql($group_by_sql)
57 67
     {
58 68
         $this->_group_by_sql = $group_by_sql;
59 69
     }
70
+
71
+    /**
72
+     * @param string $having_sql
73
+     */
60 74
     public function set_having_sql($having_sql)
61 75
     {
62 76
         $this->_having_sql = $having_sql;
@@ -81,7 +95,6 @@  discard block
 block discarded – undo
81 95
     *
82 96
     * @param type $model_included_name
83 97
     * @param type $join_sql
84
-    * @param type $data_types
85 98
     */
86 99
     public function __construct($model_included_name = array(), $join_sql = '')
87 100
     {
Please login to merge, or discard this patch.
Indentation   +90 added lines, -90 removed lines patch added patch discarded remove patch
@@ -14,141 +14,141 @@  discard block
 block discarded – undo
14 14
    /**
15 15
     * @var string SQL for performing joins (Eg, "INNER JOIN blah ON blah=blah INNER JOIN FOO ON foo=foo...")
16 16
     */
17
-    private $_join_sql;
17
+	private $_join_sql;
18 18
    /**
19 19
     *
20 20
     * @var array stating all the models that have been included thus far,so we don't get duplicates.
21 21
     * Keys are the model relation chains to them from the queried model
22 22
     * (eg, "Registration.Transaction.Payment"), and valuesare model names (eg "Payment")
23 23
     */
24
-    private $_models_included;
24
+	private $_models_included;
25 25
    
26 26
    /**
27 27
     * After we've acquired all the data types, we can create this sql.
28 28
     * @var string
29 29
     */
30
-    private $_where_sql;
30
+	private $_where_sql;
31 31
    /**
32 32
     * Full join sql. Eg, in a select query, that's everything after the "FROM", and before the "WHERE", so it includes
33 33
     * the declaration of the main model's tables, and then appends all the joining sql to other models
34 34
     * @var string
35 35
     */
36
-    private $_main_join_sql;
36
+	private $_main_join_sql;
37 37
    
38 38
    
39
-    private $_limit_sql;
39
+	private $_limit_sql;
40 40
    
41
-    private $_order_by_sql;
41
+	private $_order_by_sql;
42 42
    
43
-    private $_having_sql;
43
+	private $_having_sql;
44 44
    
45
-    private $_group_by_sql;
45
+	private $_group_by_sql;
46 46
    
47
-    public function set_limit_sql($limit_sql)
48
-    {
49
-        $this->_limit_sql = $limit_sql;
50
-    }
47
+	public function set_limit_sql($limit_sql)
48
+	{
49
+		$this->_limit_sql = $limit_sql;
50
+	}
51 51
     
52
-    public function set_order_by_sql($order_by_sql)
53
-    {
54
-        $this->_order_by_sql = $order_by_sql;
55
-    }
56
-    public function set_group_by_sql($group_by_sql)
57
-    {
58
-        $this->_group_by_sql = $group_by_sql;
59
-    }
60
-    public function set_having_sql($having_sql)
61
-    {
62
-        $this->_having_sql = $having_sql;
63
-    }
64
-    public function get_limit_sql()
65
-    {
66
-        return $this->_limit_sql;
67
-    }
68
-    public function get_order_by_sql()
69
-    {
70
-        return $this->_order_by_sql;
71
-    }
72
-    public function get_group_by_sql()
73
-    {
74
-        return $this->_group_by_sql;
75
-    }
76
-    public function get_having_sql()
77
-    {
78
-        return $this->_having_sql;
79
-    }
52
+	public function set_order_by_sql($order_by_sql)
53
+	{
54
+		$this->_order_by_sql = $order_by_sql;
55
+	}
56
+	public function set_group_by_sql($group_by_sql)
57
+	{
58
+		$this->_group_by_sql = $group_by_sql;
59
+	}
60
+	public function set_having_sql($having_sql)
61
+	{
62
+		$this->_having_sql = $having_sql;
63
+	}
64
+	public function get_limit_sql()
65
+	{
66
+		return $this->_limit_sql;
67
+	}
68
+	public function get_order_by_sql()
69
+	{
70
+		return $this->_order_by_sql;
71
+	}
72
+	public function get_group_by_sql()
73
+	{
74
+		return $this->_group_by_sql;
75
+	}
76
+	public function get_having_sql()
77
+	{
78
+		return $this->_having_sql;
79
+	}
80 80
    /**
81 81
     *
82 82
     * @param type $model_included_name
83 83
     * @param type $join_sql
84 84
     * @param type $data_types
85 85
     */
86
-    public function __construct($model_included_name = array(), $join_sql = '')
87
-    {
88
-        $this->_models_included = $model_included_name;
89
-        $this->_join_sql = $join_sql;
90
-    }
86
+	public function __construct($model_included_name = array(), $join_sql = '')
87
+	{
88
+		$this->_models_included = $model_included_name;
89
+		$this->_join_sql = $join_sql;
90
+	}
91 91
    
92 92
    /**
93 93
     * Merges info from the other EEM_Related_Model_Info_Carrier into this one.
94 94
     * @param EE_Model_Query_Info_Carrier $other_model_query_info_carrier
95 95
     */
96
-    public function merge($other_model_query_info_carrier)
97
-    {
98
-        if ($other_model_query_info_carrier && ! $this->_have_already_included_one_of_these_models($other_model_query_info_carrier->get_model_names_included())) {
99
-            $model_included_on_other_join_sql_and_data_types_carrier =  $other_model_query_info_carrier->get_model_names_included();
100
-            $this->_models_included = array_merge($this->_models_included, $model_included_on_other_join_sql_and_data_types_carrier);
101
-            $this->_join_sql .= $other_model_query_info_carrier->_join_sql;
102
-        }
103
-        // otherwise don't merge our data.
104
-        // yes, this means that we must immediately merge any model data into our grand list
105
-        // as soon as we get some from ONE model, or else we could reject a EEM_Related_Model_Info_Carrier
106
-        // which is carrying info from two models WHERE one is already included but the other is NOT
107
-    }
96
+	public function merge($other_model_query_info_carrier)
97
+	{
98
+		if ($other_model_query_info_carrier && ! $this->_have_already_included_one_of_these_models($other_model_query_info_carrier->get_model_names_included())) {
99
+			$model_included_on_other_join_sql_and_data_types_carrier =  $other_model_query_info_carrier->get_model_names_included();
100
+			$this->_models_included = array_merge($this->_models_included, $model_included_on_other_join_sql_and_data_types_carrier);
101
+			$this->_join_sql .= $other_model_query_info_carrier->_join_sql;
102
+		}
103
+		// otherwise don't merge our data.
104
+		// yes, this means that we must immediately merge any model data into our grand list
105
+		// as soon as we get some from ONE model, or else we could reject a EEM_Related_Model_Info_Carrier
106
+		// which is carrying info from two models WHERE one is already included but the other is NOT
107
+	}
108 108
    /**
109 109
     * Checks whether or not we have already included all the models mentione din $model_names on the query info varrier
110 110
     * @param array $model_names just like EE_MOdel_QUery_Info_Carrier::_models_included: keys are model chain paths, values are the model names only
111 111
     * @return boolean
112 112
     */
113
-    protected function _have_already_included_one_of_these_models($model_names)
114
-    {
115
-        foreach ($this->_models_included as $model_relation_path => $model_included) {
116
-            if (array_key_exists($model_relation_path, $model_names)) {
117
-                return true;
118
-            }
119
-        }
120
-        return false;
121
-    }
113
+	protected function _have_already_included_one_of_these_models($model_names)
114
+	{
115
+		foreach ($this->_models_included as $model_relation_path => $model_included) {
116
+			if (array_key_exists($model_relation_path, $model_names)) {
117
+				return true;
118
+			}
119
+		}
120
+		return false;
121
+	}
122 122
    /**
123 123
     * Array keys are model names, values are "model relation paths". See EE_Model_Query_Info_Carrier::_models_included for details
124 124
     * @return array like EE_Model_Query_Info_Carrier::_models_included
125 125
     */
126
-    public function get_model_names_included()
127
-    {
128
-        return $this->_models_included;
129
-    }
126
+	public function get_model_names_included()
127
+	{
128
+		return $this->_models_included;
129
+	}
130 130
    /**
131 131
     * sets the $where_sql for later use from client code
132 132
     * @param string $where_sql
133 133
     */
134
-    public function set_where_sql($where_sql)
135
-    {
136
-        $this->_where_sql = $where_sql;
137
-    }
138
-    public function get_where_sql()
139
-    {
140
-        return $this->_where_sql;
141
-    }
134
+	public function set_where_sql($where_sql)
135
+	{
136
+		$this->_where_sql = $where_sql;
137
+	}
138
+	public function get_where_sql()
139
+	{
140
+		return $this->_where_sql;
141
+	}
142 142
 
143 143
    /**
144 144
     * Gets the SQL for joining the main model to other models involves in the query, which was set earlier on
145 145
     * the EE_Model_Query_info_Carrier by calling set_main_model_join_sql()
146 146
     * @return string
147 147
     */
148
-    public function get_main_model_join_sql()
149
-    {
150
-        return $this->_main_join_sql;
151
-    }
148
+	public function get_main_model_join_sql()
149
+	{
150
+		return $this->_main_join_sql;
151
+	}
152 152
 
153 153
 
154 154
    /**
@@ -158,12 +158,12 @@  discard block
 block discarded – undo
158 158
     * after the FROM and before the WHERE.)
159 159
     * @param string $join_sql
160 160
     */
161
-    public function set_main_model_join_sql($join_sql)
162
-    {
163
-        $this->_main_join_sql = $join_sql;
164
-    }
165
-    public function get_full_join_sql()
166
-    {
167
-        return $this->_main_join_sql . $this->_join_sql;
168
-    }
161
+	public function set_main_model_join_sql($join_sql)
162
+	{
163
+		$this->_main_join_sql = $join_sql;
164
+	}
165
+	public function get_full_join_sql()
166
+	{
167
+		return $this->_main_join_sql . $this->_join_sql;
168
+	}
169 169
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -96,7 +96,7 @@  discard block
 block discarded – undo
96 96
     public function merge($other_model_query_info_carrier)
97 97
     {
98 98
         if ($other_model_query_info_carrier && ! $this->_have_already_included_one_of_these_models($other_model_query_info_carrier->get_model_names_included())) {
99
-            $model_included_on_other_join_sql_and_data_types_carrier =  $other_model_query_info_carrier->get_model_names_included();
99
+            $model_included_on_other_join_sql_and_data_types_carrier = $other_model_query_info_carrier->get_model_names_included();
100 100
             $this->_models_included = array_merge($this->_models_included, $model_included_on_other_join_sql_and_data_types_carrier);
101 101
             $this->_join_sql .= $other_model_query_info_carrier->_join_sql;
102 102
         }
@@ -164,6 +164,6 @@  discard block
 block discarded – undo
164 164
     }
165 165
     public function get_full_join_sql()
166 166
     {
167
-        return $this->_main_join_sql . $this->_join_sql;
167
+        return $this->_main_join_sql.$this->_join_sql;
168 168
     }
169 169
 }
Please login to merge, or discard this patch.
core/db_models/helpers/EE_Secondary_Table.php 3 patches
Doc Comments   +2 added lines, -1 removed lines patch added patch discarded remove patch
@@ -54,7 +54,7 @@  discard block
 block discarded – undo
54 54
      * creates join statement FROM primary table
55 55
      * gets SQL like "LEFT JOIN table_name AS table_alias ON other_table_alias.pk = table_alias.fk
56 56
      *
57
-     * @param string $table allows us to set special conditions on the $table_name portion of the join query (i.e. doing a subquery)
57
+     * @param string $primary_table_alias_with_model_chain_prefix
58 58
      * @return string of SQL
59 59
      */
60 60
     public function get_join_sql($primary_table_alias_with_model_chain_prefix)
@@ -78,6 +78,7 @@  discard block
 block discarded – undo
78 78
      * " LEFT JOIN secondary_table_table AS Secondary ON ..." like get_join_sql, this function returns
79 79
      * " LEFT JOIN primary_table AS Primary ON ...".
80 80
      * This is useful if the secondary table is already included in the SQL, but the primary table is not yet.
81
+     * @param string $secondary_table_alias_with_model_chain_prefix
81 82
      * @return string
82 83
      */
83 84
     public function get_inverse_join_sql($secondary_table_alias_with_model_chain_prefix)
Please login to merge, or discard this patch.
Indentation   +105 added lines, -105 removed lines patch added patch discarded remove patch
@@ -7,118 +7,118 @@
 block discarded – undo
7 7
  */
8 8
 class EE_Secondary_Table extends EE_Table_Base
9 9
 {
10
-    protected $_extra_join_conditions;
10
+	protected $_extra_join_conditions;
11 11
 
12
-    /**
13
-     *
14
-     * @global type $wpdb
15
-     * @param string $table_name with or without wpdb prefix
16
-     * @param string $pk_column name of primary key column on THIS table
17
-     * @param string $fk_column the name of the COLUMN that is a foreign key to the primary table's primary key
18
-     * @param string $extra_join_conditions string for additional SQL to add onto the join statement's ON condition
19
-     * @param boolean $global whether the table is "global" as in there is only 1 table on an entire multisite install,
20
-     *                  or whether each site on a multisite install has a copy of this table
21
-     */
22
-    public function __construct($table_name, $pk_column, $fk_column = null, $extra_join_conditions = null, $global = false)
23
-    {
24
-        $this->_fk_on_table = $fk_column;
25
-        $this->_extra_join_conditions = $extra_join_conditions;
26
-        parent::__construct($table_name, $pk_column, $global);
27
-    }
28
-    public function get_fk_on_table()
29
-    {
30
-        return $this->_fk_on_table;
31
-    }
32
-    public function _construct_finalize_set_table_to_join_with(EE_Table_Base $table)
33
-    {
34
-        $this->_table_to_join_with = $table;
35
-    }
36
-    /**
37
-     *
38
-     * @return string of sql like "Event.post_type = 'event'", which gets added to
39
-     * the end of the join statement with the primary table
40
-     */
41
-    public function get_extra_join_conditions()
42
-    {
43
-        return $this->_extra_join_conditions;
44
-    }
45
-    /**
46
-     *
47
-     * @return EE_Primary_Table
48
-     */
49
-    public function get_table_to_join_with()
50
-    {
51
-        return $this->_table_to_join_with;
52
-    }
53
-    /**
54
-     * creates join statement FROM primary table
55
-     * gets SQL like "LEFT JOIN table_name AS table_alias ON other_table_alias.pk = table_alias.fk
56
-     *
57
-     * @param string $table allows us to set special conditions on the $table_name portion of the join query (i.e. doing a subquery)
58
-     * @return string of SQL
59
-     */
60
-    public function get_join_sql($primary_table_alias_with_model_chain_prefix)
61
-    {
12
+	/**
13
+	 *
14
+	 * @global type $wpdb
15
+	 * @param string $table_name with or without wpdb prefix
16
+	 * @param string $pk_column name of primary key column on THIS table
17
+	 * @param string $fk_column the name of the COLUMN that is a foreign key to the primary table's primary key
18
+	 * @param string $extra_join_conditions string for additional SQL to add onto the join statement's ON condition
19
+	 * @param boolean $global whether the table is "global" as in there is only 1 table on an entire multisite install,
20
+	 *                  or whether each site on a multisite install has a copy of this table
21
+	 */
22
+	public function __construct($table_name, $pk_column, $fk_column = null, $extra_join_conditions = null, $global = false)
23
+	{
24
+		$this->_fk_on_table = $fk_column;
25
+		$this->_extra_join_conditions = $extra_join_conditions;
26
+		parent::__construct($table_name, $pk_column, $global);
27
+	}
28
+	public function get_fk_on_table()
29
+	{
30
+		return $this->_fk_on_table;
31
+	}
32
+	public function _construct_finalize_set_table_to_join_with(EE_Table_Base $table)
33
+	{
34
+		$this->_table_to_join_with = $table;
35
+	}
36
+	/**
37
+	 *
38
+	 * @return string of sql like "Event.post_type = 'event'", which gets added to
39
+	 * the end of the join statement with the primary table
40
+	 */
41
+	public function get_extra_join_conditions()
42
+	{
43
+		return $this->_extra_join_conditions;
44
+	}
45
+	/**
46
+	 *
47
+	 * @return EE_Primary_Table
48
+	 */
49
+	public function get_table_to_join_with()
50
+	{
51
+		return $this->_table_to_join_with;
52
+	}
53
+	/**
54
+	 * creates join statement FROM primary table
55
+	 * gets SQL like "LEFT JOIN table_name AS table_alias ON other_table_alias.pk = table_alias.fk
56
+	 *
57
+	 * @param string $table allows us to set special conditions on the $table_name portion of the join query (i.e. doing a subquery)
58
+	 * @return string of SQL
59
+	 */
60
+	public function get_join_sql($primary_table_alias_with_model_chain_prefix)
61
+	{
62 62
 
63
-        $table_name = $this->get_table_name();
64
-        $secondary_table_alias = EE_Model_Parser::get_prefix_from_table_alias_with_model_relation_chain_prefix($primary_table_alias_with_model_chain_prefix) . $this->get_table_alias();
65
-        $other_table_pk = $this->get_table_to_join_with()->get_pk_column();
66
-        $fk = $this->get_fk_on_table();
67
-        $join_sql = " LEFT JOIN $table_name AS $secondary_table_alias ON $primary_table_alias_with_model_chain_prefix.$other_table_pk = $secondary_table_alias.$fk ";
68
-        if ($this->get_extra_join_conditions()) {
69
-            $join_sql.="AND ".$this->get_extra_join_conditions();
70
-        }
71
-        return $join_sql;
72
-    }
63
+		$table_name = $this->get_table_name();
64
+		$secondary_table_alias = EE_Model_Parser::get_prefix_from_table_alias_with_model_relation_chain_prefix($primary_table_alias_with_model_chain_prefix) . $this->get_table_alias();
65
+		$other_table_pk = $this->get_table_to_join_with()->get_pk_column();
66
+		$fk = $this->get_fk_on_table();
67
+		$join_sql = " LEFT JOIN $table_name AS $secondary_table_alias ON $primary_table_alias_with_model_chain_prefix.$other_table_pk = $secondary_table_alias.$fk ";
68
+		if ($this->get_extra_join_conditions()) {
69
+			$join_sql.="AND ".$this->get_extra_join_conditions();
70
+		}
71
+		return $join_sql;
72
+	}
73 73
 
74 74
 
75
-    /**
76
-     * Produces join SQL like get_join_sql, except instead of joining the primary table to the
77
-     * secondary table, does the inverse: joins the secondary table to the primary one. (Eg, isntead of
78
-     * " LEFT JOIN secondary_table_table AS Secondary ON ..." like get_join_sql, this function returns
79
-     * " LEFT JOIN primary_table AS Primary ON ...".
80
-     * This is useful if the secondary table is already included in the SQL, but the primary table is not yet.
81
-     * @return string
82
-     */
83
-    public function get_inverse_join_sql($secondary_table_alias_with_model_chain_prefix)
84
-    {
85
-        $primary_table_name =$this->get_table_to_join_with()->get_table_name();
86
-        $primary_table_alias = EE_Model_Parser::get_prefix_from_table_alias_with_model_relation_chain_prefix($secondary_table_alias_with_model_chain_prefix) . $this->get_table_to_join_with()->get_table_alias();
87
-        $primary_table_pk = $this->get_table_to_join_with()->get_pk_column();// $this->get_pk_column();
88
-        $fk = $this->get_fk_on_table();
89
-        $join_sql = " LEFT JOIN $primary_table_name AS $primary_table_alias ON $primary_table_alias.$primary_table_pk = $secondary_table_alias_with_model_chain_prefix.$fk ";
90
-        if ($this->get_extra_join_conditions()) {
91
-            $join_sql.="AND ".$this->get_extra_join_conditions();
92
-        }
93
-        return $join_sql;
94
-    }
75
+	/**
76
+	 * Produces join SQL like get_join_sql, except instead of joining the primary table to the
77
+	 * secondary table, does the inverse: joins the secondary table to the primary one. (Eg, isntead of
78
+	 * " LEFT JOIN secondary_table_table AS Secondary ON ..." like get_join_sql, this function returns
79
+	 * " LEFT JOIN primary_table AS Primary ON ...".
80
+	 * This is useful if the secondary table is already included in the SQL, but the primary table is not yet.
81
+	 * @return string
82
+	 */
83
+	public function get_inverse_join_sql($secondary_table_alias_with_model_chain_prefix)
84
+	{
85
+		$primary_table_name =$this->get_table_to_join_with()->get_table_name();
86
+		$primary_table_alias = EE_Model_Parser::get_prefix_from_table_alias_with_model_relation_chain_prefix($secondary_table_alias_with_model_chain_prefix) . $this->get_table_to_join_with()->get_table_alias();
87
+		$primary_table_pk = $this->get_table_to_join_with()->get_pk_column();// $this->get_pk_column();
88
+		$fk = $this->get_fk_on_table();
89
+		$join_sql = " LEFT JOIN $primary_table_name AS $primary_table_alias ON $primary_table_alias.$primary_table_pk = $secondary_table_alias_with_model_chain_prefix.$fk ";
90
+		if ($this->get_extra_join_conditions()) {
91
+			$join_sql.="AND ".$this->get_extra_join_conditions();
92
+		}
93
+		return $join_sql;
94
+	}
95 95
 
96
-    /**
97
-     * This prepares the join on the other table using a select with a internal limit.
98
-     * @param  mixed (array|string) $limit limit
99
-     * @return string                       SQL to return
100
-     */
101
-    public function get_select_join_limit_join($limit)
102
-    {
103
-        // first get the select
104
-        $select = $this->get_select_join_limit($limit);
105
-        $join_sql = $this->get_join_sql($select);
106
-        return $join_sql;
107
-    }
96
+	/**
97
+	 * This prepares the join on the other table using a select with a internal limit.
98
+	 * @param  mixed (array|string) $limit limit
99
+	 * @return string                       SQL to return
100
+	 */
101
+	public function get_select_join_limit_join($limit)
102
+	{
103
+		// first get the select
104
+		$select = $this->get_select_join_limit($limit);
105
+		$join_sql = $this->get_join_sql($select);
106
+		return $join_sql;
107
+	}
108 108
 
109 109
 
110 110
 
111
-    public function get_fully_qualified_fk_column()
112
-    {
113
-        $table_alias = $this->get_table_alias();
114
-        $fk = $this->get_fk_on_table();
115
-        return $table_alias . '.' . $fk;
116
-    }
111
+	public function get_fully_qualified_fk_column()
112
+	{
113
+		$table_alias = $this->get_table_alias();
114
+		$fk = $this->get_fk_on_table();
115
+		return $table_alias . '.' . $fk;
116
+	}
117 117
 
118
-    public function get_fully_qualified_pk_on_fk_table()
119
-    {
120
-        $table_alias = $this->get_table_to_join_with()->get_table_alias();
121
-        $pk = $this->get_table_to_join_with()->get_pk_column();
122
-        return $table_alias . '.' . $pk;
123
-    }
118
+	public function get_fully_qualified_pk_on_fk_table()
119
+	{
120
+		$table_alias = $this->get_table_to_join_with()->get_table_alias();
121
+		$pk = $this->get_table_to_join_with()->get_pk_column();
122
+		return $table_alias . '.' . $pk;
123
+	}
124 124
 }
Please login to merge, or discard this patch.
Spacing   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -61,12 +61,12 @@  discard block
 block discarded – undo
61 61
     {
62 62
 
63 63
         $table_name = $this->get_table_name();
64
-        $secondary_table_alias = EE_Model_Parser::get_prefix_from_table_alias_with_model_relation_chain_prefix($primary_table_alias_with_model_chain_prefix) . $this->get_table_alias();
64
+        $secondary_table_alias = EE_Model_Parser::get_prefix_from_table_alias_with_model_relation_chain_prefix($primary_table_alias_with_model_chain_prefix).$this->get_table_alias();
65 65
         $other_table_pk = $this->get_table_to_join_with()->get_pk_column();
66 66
         $fk = $this->get_fk_on_table();
67 67
         $join_sql = " LEFT JOIN $table_name AS $secondary_table_alias ON $primary_table_alias_with_model_chain_prefix.$other_table_pk = $secondary_table_alias.$fk ";
68 68
         if ($this->get_extra_join_conditions()) {
69
-            $join_sql.="AND ".$this->get_extra_join_conditions();
69
+            $join_sql .= "AND ".$this->get_extra_join_conditions();
70 70
         }
71 71
         return $join_sql;
72 72
     }
@@ -82,13 +82,13 @@  discard block
 block discarded – undo
82 82
      */
83 83
     public function get_inverse_join_sql($secondary_table_alias_with_model_chain_prefix)
84 84
     {
85
-        $primary_table_name =$this->get_table_to_join_with()->get_table_name();
86
-        $primary_table_alias = EE_Model_Parser::get_prefix_from_table_alias_with_model_relation_chain_prefix($secondary_table_alias_with_model_chain_prefix) . $this->get_table_to_join_with()->get_table_alias();
87
-        $primary_table_pk = $this->get_table_to_join_with()->get_pk_column();// $this->get_pk_column();
85
+        $primary_table_name = $this->get_table_to_join_with()->get_table_name();
86
+        $primary_table_alias = EE_Model_Parser::get_prefix_from_table_alias_with_model_relation_chain_prefix($secondary_table_alias_with_model_chain_prefix).$this->get_table_to_join_with()->get_table_alias();
87
+        $primary_table_pk = $this->get_table_to_join_with()->get_pk_column(); // $this->get_pk_column();
88 88
         $fk = $this->get_fk_on_table();
89 89
         $join_sql = " LEFT JOIN $primary_table_name AS $primary_table_alias ON $primary_table_alias.$primary_table_pk = $secondary_table_alias_with_model_chain_prefix.$fk ";
90 90
         if ($this->get_extra_join_conditions()) {
91
-            $join_sql.="AND ".$this->get_extra_join_conditions();
91
+            $join_sql .= "AND ".$this->get_extra_join_conditions();
92 92
         }
93 93
         return $join_sql;
94 94
     }
@@ -112,13 +112,13 @@  discard block
 block discarded – undo
112 112
     {
113 113
         $table_alias = $this->get_table_alias();
114 114
         $fk = $this->get_fk_on_table();
115
-        return $table_alias . '.' . $fk;
115
+        return $table_alias.'.'.$fk;
116 116
     }
117 117
 
118 118
     public function get_fully_qualified_pk_on_fk_table()
119 119
     {
120 120
         $table_alias = $this->get_table_to_join_with()->get_table_alias();
121 121
         $pk = $this->get_table_to_join_with()->get_pk_column();
122
-        return $table_alias . '.' . $pk;
122
+        return $table_alias.'.'.$pk;
123 123
     }
124 124
 }
Please login to merge, or discard this patch.
core/EE_Deprecated.core.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1049,7 +1049,7 @@
 block discarded – undo
1049 1049
 
1050 1050
     /**
1051 1051
      * @deprecated 4.9.0
1052
-     * @return array
1052
+     * @return EE_messenger[]
1053 1053
      */
1054 1054
     public function get_installed_messengers()
1055 1055
     {
Please login to merge, or discard this patch.
Spacing   +30 added lines, -30 removed lines patch added patch discarded remove patch
@@ -84,20 +84,20 @@  discard block
 block discarded – undo
84 84
     // loop thru and call doing_it_wrong() or remove any that aren't being used
85 85
     foreach ($deprecated_filters as $deprecated_filter => $on) {
86 86
         // was this filter called ?
87
-        if (has_action('FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__' . $deprecated_filter)) {
87
+        if (has_action('FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__'.$deprecated_filter)) {
88 88
             // only display doing_it_wrong() notice to Event Admins during non-AJAX requests
89 89
             if (EE_Registry::instance()->CAP->current_user_can(
90 90
                     'ee_read_ee',
91 91
                     'hide_doing_it_wrong_for_deprecated_SPCO_filter'
92 92
                 ) && ! defined('DOING_AJAX')) {
93 93
                 EE_Error::doing_it_wrong(
94
-                    'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__' . $deprecated_filter,
94
+                    'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__'.$deprecated_filter,
95 95
                     sprintf(
96 96
                         __(
97 97
                             'The %1$s filter is deprecated.  It *may* work as an attempt to build in backwards compatibility.  However, it is recommended to use the following new filter: %2$s"%3$s" found in "%4$s"',
98 98
                             'event_espresso'
99 99
                         ),
100
-                        'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__' . $deprecated_filter,
100
+                        'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__'.$deprecated_filter,
101 101
                         '<br />',
102 102
                         'FHEE__EE_SPCO_Reg_Step__set_submit_button_text___submit_button_text',
103 103
                         '/modules/single_page_checkout/inc/EE_SPCO_Reg_Step.class.php'
@@ -106,10 +106,10 @@  discard block
 block discarded – undo
106 106
                 );
107 107
             }
108 108
         } else {
109
-            unset($deprecated_filters[ $deprecated_filter ]);
109
+            unset($deprecated_filters[$deprecated_filter]);
110 110
         }
111 111
     }
112
-    if (! empty($deprecated_filters)) {
112
+    if ( ! empty($deprecated_filters)) {
113 113
 
114 114
         if ($checkout->current_step->slug(
115 115
             ) == 'attendee_information' && $checkout->revisit && isset($deprecated_filters['update_registration_details'])) {
@@ -143,7 +143,7 @@  discard block
 block discarded – undo
143 143
                 $submit_button_text = apply_filters(
144 144
                                           'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__proceed_to',
145 145
                                           $submit_button_text
146
-                                      ) . $checkout->next_step->name();
146
+                                      ).$checkout->next_step->name();
147 147
             }
148 148
         }
149 149
 
@@ -327,7 +327,7 @@  discard block
 block discarded – undo
327 327
             'event_espresso'
328 328
         );
329 329
         EE_Error::doing_it_wrong(
330
-            __CLASS__ . '::' . __FUNCTION__,
330
+            __CLASS__.'::'.__FUNCTION__,
331 331
             $msg,
332 332
             '4.8.32.rc.000'
333 333
         );
@@ -354,7 +354,7 @@  discard block
 block discarded – undo
354 354
 function ee_deprecated_update_attendee_registration_form_old($admin_page)
355 355
 {
356 356
     // check if the old hooks are in use. If not, do the default
357
-    if (! ee_deprecated_using_old_registration_admin_custom_questions_form_hooks()
357
+    if ( ! ee_deprecated_using_old_registration_admin_custom_questions_form_hooks()
358 358
         || ! $admin_page instanceof EE_Admin_Page) {
359 359
         return;
360 360
     }
@@ -362,7 +362,7 @@  discard block
 block discarded – undo
362 362
     $qstns = isset($req_data['qstn']) ? $req_data['qstn'] : false;
363 363
     $REG_ID = isset($req_data['_REG_ID']) ? absint($req_data['_REG_ID']) : false;
364 364
     $qstns = apply_filters('FHEE__Registrations_Admin_Page___update_attendee_registration_form__qstns', $qstns);
365
-    if (! $REG_ID || ! $qstns) {
365
+    if ( ! $REG_ID || ! $qstns) {
366 366
         EE_Error::add_error(
367 367
             __('An error occurred. No registration ID and/or registration questions were received.', 'event_espresso'),
368 368
             __FILE__,
@@ -382,7 +382,7 @@  discard block
 block discarded – undo
382 382
 
383 383
     foreach ($qstns as $QST_ID => $qstn) {
384 384
         // if $qstn isn't an array then it doesn't already have an answer, so let's create the answer
385
-        if (! is_array($qstn)) {
385
+        if ( ! is_array($qstn)) {
386 386
             $success = $this->_save_new_answer($REG_ID, $QST_ID, $qstn);
387 387
             continue;
388 388
         }
@@ -399,7 +399,7 @@  discard block
 block discarded – undo
399 399
             );
400 400
             $answer = EEM_Answer::instance()->get_one($query_params);
401 401
             // this MAY be an array but NOT have an answer because its multi select.  If so then we need to create the answer
402
-            if (! $answer instanceof EE_Answer) {
402
+            if ( ! $answer instanceof EE_Answer) {
403 403
                 $set_values = array(
404 404
                     'QST_ID'    => $QST_ID,
405 405
                     'REG_ID'    => $REG_ID,
@@ -440,7 +440,7 @@  discard block
 block discarded – undo
440 440
 function ee_deprecated_reg_questions_meta_box_old($do_default_action, $admin_page, $registration)
441 441
 {
442 442
     // check if the old hooks are in use. If not, do the default
443
-    if (! ee_deprecated_using_old_registration_admin_custom_questions_form_hooks()
443
+    if ( ! ee_deprecated_using_old_registration_admin_custom_questions_form_hooks()
444 444
         || ! $admin_page instanceof EE_Admin_Page) {
445 445
         return $do_default_action;
446 446
     }
@@ -472,7 +472,7 @@  discard block
 block discarded – undo
472 472
         'reg_questions_form_action' => 'edit_registration',
473 473
         'REG_ID'                    => $registration->ID(),
474 474
     );
475
-    $template_path = REG_TEMPLATE_PATH . 'reg_admin_details_main_meta_box_reg_questions.template.php';
475
+    $template_path = REG_TEMPLATE_PATH.'reg_admin_details_main_meta_box_reg_questions.template.php';
476 476
     echo EEH_Template::display_template($template_path, $template_args, true);
477 477
     // indicate that we should not do the default admin page code
478 478
     return false;
@@ -590,7 +590,7 @@  discard block
 block discarded – undo
590 590
     public function _class_is_deprecated($method)
591 591
     {
592 592
         EE_Error::doing_it_wrong(
593
-            'EE_messages::' . $method,
593
+            'EE_messages::'.$method,
594 594
             __('EE_messages has been deprecated.  Please use EE_Message_Resource_Manager instead.'),
595 595
             '4.9.0',
596 596
             '4.10.0.p'
@@ -729,7 +729,7 @@  discard block
 block discarded – undo
729 729
         $error = false;
730 730
         // try to intelligently determine what method we'll call based on the incoming data.
731 731
         // if generating and sending are different then generate and send immediately.
732
-        if (! empty($sending_messenger) && $sending_messenger != $generating_messenger && $send) {
732
+        if ( ! empty($sending_messenger) && $sending_messenger != $generating_messenger && $send) {
733 733
             // in the legacy system, when generating and sending were different, that means all the
734 734
             // vars are already in the request object.  So let's just use that.
735 735
             try {
@@ -742,7 +742,7 @@  discard block
 block discarded – undo
742 742
                     'event_espresso'
743 743
                 );
744 744
                 // add specific message for developers if WP_DEBUG in on
745
-                $error_msg .= '||' . $e->getMessage();
745
+                $error_msg .= '||'.$e->getMessage();
746 746
                 EE_Error::add_error($error_msg, __FILE__, __FUNCTION__, __LINE__);
747 747
                 $error = true;
748 748
             }
@@ -816,7 +816,7 @@  discard block
 block discarded – undo
816 816
             }
817 817
         }
818 818
         // if no error then return the generated message(s).
819
-        if (! $error && ! $send) {
819
+        if ( ! $error && ! $send) {
820 820
             $generated_queue = $processor->generate_queue(false);
821 821
             // get message and return.
822 822
             $generated_queue->get_message_repository()->rewind();
@@ -875,7 +875,7 @@  discard block
 block discarded – undo
875 875
         /** @type EE_Messages_Queue $queue */
876 876
         $queue = EE_Registry::instance()->load_lib('Messages_Queue');
877 877
         // make sure we have a proper message object
878
-        if (! $message instanceof EE_Message && is_object($message) && isset($message->content)) {
878
+        if ( ! $message instanceof EE_Message && is_object($message) && isset($message->content)) {
879 879
             $msg = EE_Message_Factory::create(
880 880
                 array(
881 881
                     'MSG_messenger'    => $messenger,
@@ -887,11 +887,11 @@  discard block
 block discarded – undo
887 887
         } else {
888 888
             $msg = $message;
889 889
         }
890
-        if (! $msg instanceof EE_Message) {
890
+        if ( ! $msg instanceof EE_Message) {
891 891
             return false;
892 892
         }
893 893
         // make sure any content in a content property (if not empty) is set on the MSG_content.
894
-        if (! empty($msg->content)) {
894
+        if ( ! empty($msg->content)) {
895 895
             $msg->set('MSG_content', $msg->content);
896 896
         }
897 897
         $queue->add($msg);
@@ -1130,8 +1130,8 @@  discard block
 block discarded – undo
1130 1130
 
1131 1131
 add_filter(
1132 1132
     'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__css',
1133
-    function ($event_list_iframe_css) {
1134
-        if (! has_filter('FHEE__EventsArchiveIframe__event_list_iframe__css')) {
1133
+    function($event_list_iframe_css) {
1134
+        if ( ! has_filter('FHEE__EventsArchiveIframe__event_list_iframe__css')) {
1135 1135
             return $event_list_iframe_css;
1136 1136
         }
1137 1137
         deprecated_espresso_action_or_filter_doing_it_wrong(
@@ -1150,8 +1150,8 @@  discard block
 block discarded – undo
1150 1150
 );
1151 1151
 add_filter(
1152 1152
     'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__js',
1153
-    function ($event_list_iframe_js) {
1154
-        if (! has_filter('FHEE__EED_Ticket_Selector__ticket_selector_iframe__js')) {
1153
+    function($event_list_iframe_js) {
1154
+        if ( ! has_filter('FHEE__EED_Ticket_Selector__ticket_selector_iframe__js')) {
1155 1155
             return $event_list_iframe_js;
1156 1156
         }
1157 1157
         deprecated_espresso_action_or_filter_doing_it_wrong(
@@ -1170,8 +1170,8 @@  discard block
 block discarded – undo
1170 1170
 );
1171 1171
 add_action(
1172 1172
     'AHEE__EE_Capabilities__addCaps__complete',
1173
-    function ($capabilities_map) {
1174
-        if (! has_action('AHEE__EE_Capabilities__init_role_caps__complete')) {
1173
+    function($capabilities_map) {
1174
+        if ( ! has_action('AHEE__EE_Capabilities__init_role_caps__complete')) {
1175 1175
             return;
1176 1176
         }
1177 1177
         deprecated_espresso_action_or_filter_doing_it_wrong(
@@ -1190,8 +1190,8 @@  discard block
 block discarded – undo
1190 1190
 
1191 1191
 add_filter(
1192 1192
     'FHEE_EventEspresso_core_services_commands_attendee_CreateAttendeeCommandHandler__findExistingAttendee__existing_attendee',
1193
-    function ($existing_attendee, $registration, $attendee_data) {
1194
-        if (! has_filter('FHEE_EE_Single_Page_Checkout__save_registration_items__find_existing_attendee')) {
1193
+    function($existing_attendee, $registration, $attendee_data) {
1194
+        if ( ! has_filter('FHEE_EE_Single_Page_Checkout__save_registration_items__find_existing_attendee')) {
1195 1195
             return $existing_attendee;
1196 1196
         }
1197 1197
         deprecated_espresso_action_or_filter_doing_it_wrong(
@@ -1274,7 +1274,7 @@  discard block
 block discarded – undo
1274 1274
      */
1275 1275
     public function event_list_title($event_list_title = '')
1276 1276
     {
1277
-        if (! empty($this->title)) {
1277
+        if ( ! empty($this->title)) {
1278 1278
             return $this->title;
1279 1279
         }
1280 1280
         return $event_list_title;
@@ -1417,7 +1417,7 @@  discard block
 block discarded – undo
1417 1417
             foreach ($model_fields as $field) {
1418 1418
                 if ($label === EEH_Export::get_column_name_for_field($field)) {
1419 1419
                     // re-add the old field name
1420
-                    $new_label = $label . '[' . $field->get_name() . ']';
1420
+                    $new_label = $label.'['.$field->get_name().']';
1421 1421
                     break;
1422 1422
                 }
1423 1423
             }
Please login to merge, or discard this patch.
Indentation   +1217 added lines, -1217 removed lines patch added patch discarded remove patch
@@ -39,31 +39,31 @@  discard block
 block discarded – undo
39 39
  * @param string $action_or_filter
40 40
  */
41 41
 function deprecated_espresso_action_or_filter_doing_it_wrong(
42
-    $deprecated_filter,
43
-    $replacement,
44
-    $replacement_location,
45
-    $version_deprecated,
46
-    $version_applies,
47
-    $action_or_filter = 'action'
42
+	$deprecated_filter,
43
+	$replacement,
44
+	$replacement_location,
45
+	$version_deprecated,
46
+	$version_applies,
47
+	$action_or_filter = 'action'
48 48
 ) {
49
-    $action_or_filter = $action_or_filter === 'action'
50
-        ? esc_html__('action', 'event_espresso')
51
-        : esc_html__('filter', 'event_espresso');
52
-    EE_Error::doing_it_wrong(
53
-        $deprecated_filter,
54
-        sprintf(
55
-            __(
56
-                'This %1$s is deprecated.  It *may* work as an attempt to build in backwards compatibility.  However, it is recommended to use the following new %1$s: %4$s"%2$s" found in "%3$s"',
57
-                'event_espresso'
58
-            ),
59
-            $action_or_filter,
60
-            $replacement,
61
-            $replacement_location,
62
-            '<br />'
63
-        ),
64
-        $version_deprecated,
65
-        $version_applies
66
-    );
49
+	$action_or_filter = $action_or_filter === 'action'
50
+		? esc_html__('action', 'event_espresso')
51
+		: esc_html__('filter', 'event_espresso');
52
+	EE_Error::doing_it_wrong(
53
+		$deprecated_filter,
54
+		sprintf(
55
+			__(
56
+				'This %1$s is deprecated.  It *may* work as an attempt to build in backwards compatibility.  However, it is recommended to use the following new %1$s: %4$s"%2$s" found in "%3$s"',
57
+				'event_espresso'
58
+			),
59
+			$action_or_filter,
60
+			$replacement,
61
+			$replacement_location,
62
+			'<br />'
63
+		),
64
+		$version_deprecated,
65
+		$version_applies
66
+	);
67 67
 }
68 68
 
69 69
 /**
@@ -75,90 +75,90 @@  discard block
 block discarded – undo
75 75
  */
76 76
 function ee_deprecated__registration_checkout__button_text($submit_button_text, EE_Checkout $checkout)
77 77
 {
78
-    // list of old filters
79
-    $deprecated_filters = array(
80
-        'update_registration_details' => true,
81
-        'process_payment'             => true,
82
-        'finalize_registration'       => true,
83
-        'and_proceed_to_payment'      => true,
84
-        'proceed_to'                  => true,
85
-    );
86
-    // loop thru and call doing_it_wrong() or remove any that aren't being used
87
-    foreach ($deprecated_filters as $deprecated_filter => $on) {
88
-        // was this filter called ?
89
-        if (has_action('FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__' . $deprecated_filter)) {
90
-            // only display doing_it_wrong() notice to Event Admins during non-AJAX requests
91
-            if (EE_Registry::instance()->CAP->current_user_can(
92
-                    'ee_read_ee',
93
-                    'hide_doing_it_wrong_for_deprecated_SPCO_filter'
94
-                ) && ! defined('DOING_AJAX')) {
95
-                EE_Error::doing_it_wrong(
96
-                    'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__' . $deprecated_filter,
97
-                    sprintf(
98
-                        __(
99
-                            'The %1$s filter is deprecated.  It *may* work as an attempt to build in backwards compatibility.  However, it is recommended to use the following new filter: %2$s"%3$s" found in "%4$s"',
100
-                            'event_espresso'
101
-                        ),
102
-                        'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__' . $deprecated_filter,
103
-                        '<br />',
104
-                        'FHEE__EE_SPCO_Reg_Step__set_submit_button_text___submit_button_text',
105
-                        '/modules/single_page_checkout/inc/EE_SPCO_Reg_Step.class.php'
106
-                    ),
107
-                    '4.6.10'
108
-                );
109
-            }
110
-        } else {
111
-            unset($deprecated_filters[ $deprecated_filter ]);
112
-        }
113
-    }
114
-    if (! empty($deprecated_filters)) {
115
-
116
-        if ($checkout->current_step->slug(
117
-            ) == 'attendee_information' && $checkout->revisit && isset($deprecated_filters['update_registration_details'])) {
118
-            $submit_button_text = apply_filters(
119
-                'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__update_registration_details',
120
-                $submit_button_text
121
-            );
122
-        } elseif ($checkout->current_step->slug(
123
-            ) == 'payment_options' && $checkout->revisit && isset($deprecated_filters['process_payment'])) {
124
-            $submit_button_text = apply_filters(
125
-                'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__process_payment',
126
-                $submit_button_text
127
-            );
128
-        } elseif ($checkout->next_step instanceof EE_SPCO_Reg_Step && $checkout->next_step->slug(
129
-            ) == 'finalize_registration' && isset($deprecated_filters['finalize_registration'])) {
130
-            $submit_button_text = apply_filters(
131
-                'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__finalize_registration',
132
-                $submit_button_text
133
-            );
134
-        }
135
-        if ($checkout->next_step instanceof EE_SPCO_Reg_Step) {
136
-            if ($checkout->payment_required() && $checkout->next_step->slug(
137
-                ) == 'payment_options' && isset($deprecated_filters['and_proceed_to_payment'])) {
138
-                $submit_button_text .= apply_filters(
139
-                    'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__and_proceed_to_payment',
140
-                    $submit_button_text
141
-                );
142
-            }
143
-            if ($checkout->next_step->slug(
144
-                ) != 'finalize_registration' && ! $checkout->revisit && isset($deprecated_filters['proceed_to'])) {
145
-                $submit_button_text = apply_filters(
146
-                                          'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__proceed_to',
147
-                                          $submit_button_text
148
-                                      ) . $checkout->next_step->name();
149
-            }
150
-        }
151
-
152
-    }
153
-    return $submit_button_text;
78
+	// list of old filters
79
+	$deprecated_filters = array(
80
+		'update_registration_details' => true,
81
+		'process_payment'             => true,
82
+		'finalize_registration'       => true,
83
+		'and_proceed_to_payment'      => true,
84
+		'proceed_to'                  => true,
85
+	);
86
+	// loop thru and call doing_it_wrong() or remove any that aren't being used
87
+	foreach ($deprecated_filters as $deprecated_filter => $on) {
88
+		// was this filter called ?
89
+		if (has_action('FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__' . $deprecated_filter)) {
90
+			// only display doing_it_wrong() notice to Event Admins during non-AJAX requests
91
+			if (EE_Registry::instance()->CAP->current_user_can(
92
+					'ee_read_ee',
93
+					'hide_doing_it_wrong_for_deprecated_SPCO_filter'
94
+				) && ! defined('DOING_AJAX')) {
95
+				EE_Error::doing_it_wrong(
96
+					'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__' . $deprecated_filter,
97
+					sprintf(
98
+						__(
99
+							'The %1$s filter is deprecated.  It *may* work as an attempt to build in backwards compatibility.  However, it is recommended to use the following new filter: %2$s"%3$s" found in "%4$s"',
100
+							'event_espresso'
101
+						),
102
+						'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__' . $deprecated_filter,
103
+						'<br />',
104
+						'FHEE__EE_SPCO_Reg_Step__set_submit_button_text___submit_button_text',
105
+						'/modules/single_page_checkout/inc/EE_SPCO_Reg_Step.class.php'
106
+					),
107
+					'4.6.10'
108
+				);
109
+			}
110
+		} else {
111
+			unset($deprecated_filters[ $deprecated_filter ]);
112
+		}
113
+	}
114
+	if (! empty($deprecated_filters)) {
115
+
116
+		if ($checkout->current_step->slug(
117
+			) == 'attendee_information' && $checkout->revisit && isset($deprecated_filters['update_registration_details'])) {
118
+			$submit_button_text = apply_filters(
119
+				'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__update_registration_details',
120
+				$submit_button_text
121
+			);
122
+		} elseif ($checkout->current_step->slug(
123
+			) == 'payment_options' && $checkout->revisit && isset($deprecated_filters['process_payment'])) {
124
+			$submit_button_text = apply_filters(
125
+				'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__process_payment',
126
+				$submit_button_text
127
+			);
128
+		} elseif ($checkout->next_step instanceof EE_SPCO_Reg_Step && $checkout->next_step->slug(
129
+			) == 'finalize_registration' && isset($deprecated_filters['finalize_registration'])) {
130
+			$submit_button_text = apply_filters(
131
+				'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__finalize_registration',
132
+				$submit_button_text
133
+			);
134
+		}
135
+		if ($checkout->next_step instanceof EE_SPCO_Reg_Step) {
136
+			if ($checkout->payment_required() && $checkout->next_step->slug(
137
+				) == 'payment_options' && isset($deprecated_filters['and_proceed_to_payment'])) {
138
+				$submit_button_text .= apply_filters(
139
+					'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__and_proceed_to_payment',
140
+					$submit_button_text
141
+				);
142
+			}
143
+			if ($checkout->next_step->slug(
144
+				) != 'finalize_registration' && ! $checkout->revisit && isset($deprecated_filters['proceed_to'])) {
145
+				$submit_button_text = apply_filters(
146
+										  'FHEE__EED_Single_Page_Checkout__registration_checkout__button_text__proceed_to',
147
+										  $submit_button_text
148
+									  ) . $checkout->next_step->name();
149
+			}
150
+		}
151
+
152
+	}
153
+	return $submit_button_text;
154 154
 
155 155
 }
156 156
 
157 157
 add_filter(
158
-    'FHEE__EE_SPCO_Reg_Step__set_submit_button_text___submit_button_text',
159
-    'ee_deprecated__registration_checkout__button_text',
160
-    10,
161
-    2
158
+	'FHEE__EE_SPCO_Reg_Step__set_submit_button_text___submit_button_text',
159
+	'ee_deprecated__registration_checkout__button_text',
160
+	10,
161
+	2
162 162
 );
163 163
 
164 164
 
@@ -170,54 +170,54 @@  discard block
 block discarded – undo
170 170
  */
171 171
 function ee_deprecated_finalize_transaction(EE_Checkout $checkout, $status_updates)
172 172
 {
173
-    $action_ref = null;
174
-    $action_ref = has_action('AHEE__EE_Transaction__finalize__new_transaction')
175
-        ? 'AHEE__EE_Transaction__finalize__new_transaction' : $action_ref;
176
-    $action_ref = has_action('AHEE__EE_Transaction__finalize__all_transaction')
177
-        ? 'AHEE__EE_Transaction__finalize__all_transaction' : $action_ref;
178
-    if ($action_ref) {
179
-
180
-        EE_Error::doing_it_wrong(
181
-            $action_ref,
182
-            sprintf(
183
-                __(
184
-                    'This action is deprecated.  It *may* work as an attempt to build in backwards compatibility.  However, it is recommended to use one of the following new actions: %1$s"%3$s" found in "%2$s" %1$s"%4$s" found in "%2$s" %1$s"%5$s" found in "%2$s" %1$s"%6$s" found in "%2$s"',
185
-                    'event_espresso'
186
-                ),
187
-                '<br />',
188
-                '/core/business/EE_Transaction_Processor.class.php',
189
-                'AHEE__EE_Transaction_Processor__finalize',
190
-                'AHEE__EE_Transaction_Processor__manually_update_registration_statuses',
191
-                'AHEE__EE_Transaction_Processor__toggle_registration_statuses_for_default_approved_events',
192
-                'AHEE__EE_Transaction_Processor__toggle_registration_statuses_if_no_monies_owing'
193
-            ),
194
-            '4.6.0'
195
-        );
196
-        switch ($action_ref) {
197
-            case 'AHEE__EE_Transaction__finalize__new_transaction' :
198
-                do_action(
199
-                    'AHEE__EE_Transaction__finalize__new_transaction',
200
-                    $checkout->transaction,
201
-                    $checkout->admin_request
202
-                );
203
-                break;
204
-            case 'AHEE__EE_Transaction__finalize__all_transaction' :
205
-                do_action(
206
-                    'AHEE__EE_Transaction__finalize__new_transaction',
207
-                    $checkout->transaction,
208
-                    array('new_reg' => ! $checkout->revisit, 'to_approved' => $status_updates),
209
-                    $checkout->admin_request
210
-                );
211
-                break;
212
-        }
213
-    }
173
+	$action_ref = null;
174
+	$action_ref = has_action('AHEE__EE_Transaction__finalize__new_transaction')
175
+		? 'AHEE__EE_Transaction__finalize__new_transaction' : $action_ref;
176
+	$action_ref = has_action('AHEE__EE_Transaction__finalize__all_transaction')
177
+		? 'AHEE__EE_Transaction__finalize__all_transaction' : $action_ref;
178
+	if ($action_ref) {
179
+
180
+		EE_Error::doing_it_wrong(
181
+			$action_ref,
182
+			sprintf(
183
+				__(
184
+					'This action is deprecated.  It *may* work as an attempt to build in backwards compatibility.  However, it is recommended to use one of the following new actions: %1$s"%3$s" found in "%2$s" %1$s"%4$s" found in "%2$s" %1$s"%5$s" found in "%2$s" %1$s"%6$s" found in "%2$s"',
185
+					'event_espresso'
186
+				),
187
+				'<br />',
188
+				'/core/business/EE_Transaction_Processor.class.php',
189
+				'AHEE__EE_Transaction_Processor__finalize',
190
+				'AHEE__EE_Transaction_Processor__manually_update_registration_statuses',
191
+				'AHEE__EE_Transaction_Processor__toggle_registration_statuses_for_default_approved_events',
192
+				'AHEE__EE_Transaction_Processor__toggle_registration_statuses_if_no_monies_owing'
193
+			),
194
+			'4.6.0'
195
+		);
196
+		switch ($action_ref) {
197
+			case 'AHEE__EE_Transaction__finalize__new_transaction' :
198
+				do_action(
199
+					'AHEE__EE_Transaction__finalize__new_transaction',
200
+					$checkout->transaction,
201
+					$checkout->admin_request
202
+				);
203
+				break;
204
+			case 'AHEE__EE_Transaction__finalize__all_transaction' :
205
+				do_action(
206
+					'AHEE__EE_Transaction__finalize__new_transaction',
207
+					$checkout->transaction,
208
+					array('new_reg' => ! $checkout->revisit, 'to_approved' => $status_updates),
209
+					$checkout->admin_request
210
+				);
211
+				break;
212
+		}
213
+	}
214 214
 }
215 215
 
216 216
 add_action(
217
-    'AHEE__EE_SPCO_Reg_Step_Finalize_Registration__process_reg_step__completed',
218
-    'ee_deprecated_finalize_transaction',
219
-    10,
220
-    2
217
+	'AHEE__EE_SPCO_Reg_Step_Finalize_Registration__process_reg_step__completed',
218
+	'ee_deprecated_finalize_transaction',
219
+	10,
220
+	2
221 221
 );
222 222
 /**
223 223
  * ee_deprecated_finalize_registration
@@ -226,35 +226,35 @@  discard block
 block discarded – undo
226 226
  */
227 227
 function ee_deprecated_finalize_registration(EE_Registration $registration)
228 228
 {
229
-    $action_ref = has_action('AHEE__EE_Registration__finalize__update_and_new_reg')
230
-        ? 'AHEE__EE_Registration__finalize__update_and_new_reg' : null;
231
-    if ($action_ref) {
232
-        EE_Error::doing_it_wrong(
233
-            $action_ref,
234
-            sprintf(
235
-                __(
236
-                    'This action is deprecated.  It *may* work as an attempt to build in backwards compatibility.  However, it is recommended to use the following new action: %1$s"%3$s" found in "%2$s"',
237
-                    'event_espresso'
238
-                ),
239
-                '<br />',
240
-                '/core/business/EE_Registration_Processor.class.php',
241
-                'AHEE__EE_Registration_Processor__trigger_registration_update_notifications'
242
-            ),
243
-            '4.6.0'
244
-        );
245
-        do_action(
246
-            'AHEE__EE_Registration__finalize__update_and_new_reg',
247
-            $registration,
248
-            (is_admin() && ! (defined('DOING_AJAX') && DOING_AJAX))
249
-        );
250
-    }
229
+	$action_ref = has_action('AHEE__EE_Registration__finalize__update_and_new_reg')
230
+		? 'AHEE__EE_Registration__finalize__update_and_new_reg' : null;
231
+	if ($action_ref) {
232
+		EE_Error::doing_it_wrong(
233
+			$action_ref,
234
+			sprintf(
235
+				__(
236
+					'This action is deprecated.  It *may* work as an attempt to build in backwards compatibility.  However, it is recommended to use the following new action: %1$s"%3$s" found in "%2$s"',
237
+					'event_espresso'
238
+				),
239
+				'<br />',
240
+				'/core/business/EE_Registration_Processor.class.php',
241
+				'AHEE__EE_Registration_Processor__trigger_registration_update_notifications'
242
+			),
243
+			'4.6.0'
244
+		);
245
+		do_action(
246
+			'AHEE__EE_Registration__finalize__update_and_new_reg',
247
+			$registration,
248
+			(is_admin() && ! (defined('DOING_AJAX') && DOING_AJAX))
249
+		);
250
+	}
251 251
 }
252 252
 
253 253
 add_action(
254
-    'AHEE__EE_Registration_Processor__trigger_registration_update_notifications',
255
-    'ee_deprecated_finalize_registration',
256
-    10,
257
-    1
254
+	'AHEE__EE_Registration_Processor__trigger_registration_update_notifications',
255
+	'ee_deprecated_finalize_registration',
256
+	10,
257
+	1
258 258
 );
259 259
 
260 260
 
@@ -264,44 +264,44 @@  discard block
 block discarded – undo
264 264
  */
265 265
 function ee_deprecated_hooks()
266 266
 {
267
-    /**
268
-     * @var          $hooks       array where keys are hook names, and their values are array{
269
-     * @type string  $version     when deprecated
270
-     * @type string  $alternative saying what to use instead
271
-     * @type boolean $still_works whether or not the hook still works
272
-     *        }
273
-     */
274
-    $hooks = array(
275
-        'AHEE__EE_System___do_setup_validations' => array(
276
-            'version'     => '4.6.0',
277
-            'alternative' => __(
278
-                'Instead use "AHEE__EEH_Activation__validate_messages_system" which is called after validating messages (done on every new install, upgrade, reactivation, and downgrade)',
279
-                'event_espresso'
280
-            ),
281
-            'still_works' => false,
282
-        ),
283
-    );
284
-    foreach ($hooks as $name => $deprecation_info) {
285
-        if (has_action($name)) {
286
-            EE_Error::doing_it_wrong(
287
-                $name,
288
-                sprintf(
289
-                    __('This filter is deprecated. %1$s%2$s', 'event_espresso'),
290
-                    $deprecation_info['still_works'] ? __(
291
-                        'It *may* work as an attempt to build in backwards compatibility.',
292
-                        'event_espresso'
293
-                    ) : __('It has been completely removed.', 'event_espresso'),
294
-                    isset($deprecation_info['alternative'])
295
-                        ? $deprecation_info['alternative']
296
-                        : __(
297
-                        'Please read the current EE4 documentation further or contact Support.',
298
-                        'event_espresso'
299
-                    )
300
-                ),
301
-                isset($deprecation_info['version']) ? $deprecation_info['version'] : __('recently', 'event_espresso')
302
-            );
303
-        }
304
-    }
267
+	/**
268
+	 * @var          $hooks       array where keys are hook names, and their values are array{
269
+	 * @type string  $version     when deprecated
270
+	 * @type string  $alternative saying what to use instead
271
+	 * @type boolean $still_works whether or not the hook still works
272
+	 *        }
273
+	 */
274
+	$hooks = array(
275
+		'AHEE__EE_System___do_setup_validations' => array(
276
+			'version'     => '4.6.0',
277
+			'alternative' => __(
278
+				'Instead use "AHEE__EEH_Activation__validate_messages_system" which is called after validating messages (done on every new install, upgrade, reactivation, and downgrade)',
279
+				'event_espresso'
280
+			),
281
+			'still_works' => false,
282
+		),
283
+	);
284
+	foreach ($hooks as $name => $deprecation_info) {
285
+		if (has_action($name)) {
286
+			EE_Error::doing_it_wrong(
287
+				$name,
288
+				sprintf(
289
+					__('This filter is deprecated. %1$s%2$s', 'event_espresso'),
290
+					$deprecation_info['still_works'] ? __(
291
+						'It *may* work as an attempt to build in backwards compatibility.',
292
+						'event_espresso'
293
+					) : __('It has been completely removed.', 'event_espresso'),
294
+					isset($deprecation_info['alternative'])
295
+						? $deprecation_info['alternative']
296
+						: __(
297
+						'Please read the current EE4 documentation further or contact Support.',
298
+						'event_espresso'
299
+					)
300
+				),
301
+				isset($deprecation_info['version']) ? $deprecation_info['version'] : __('recently', 'event_espresso')
302
+			);
303
+		}
304
+	}
305 305
 }
306 306
 
307 307
 add_action('AHEE__EE_System__set_hooks_for_shortcodes_modules_and_addons', 'ee_deprecated_hooks');
@@ -316,34 +316,34 @@  discard block
 block discarded – undo
316 316
  */
317 317
 function ee_deprecated_using_old_registration_admin_custom_questions_form_hooks()
318 318
 {
319
-    $in_use = has_filter('FHEE__Registrations_Admin_Page___update_attendee_registration_form__qstns')
320
-              || has_action(
321
-                  'AHEE__Registrations_Admin_Page___save_attendee_registration_form__after_reg_and_attendee_save'
322
-              );
323
-    if ($in_use) {
324
-        $msg = __(
325
-            'We detected you are using the filter FHEE__Registrations_Admin_Page___update_attendee_registration_form__qstns or AHEE__Registrations_Admin_Page___save_attendee_registration_form__after_reg_and_attendee_save.'
326
-            . 'Both of these have been deprecated and should not be used anymore. You should instead use FHEE__EE_Form_Section_Proper___construct__options_array to customize the contents of the form,'
327
-            . 'use FHEE__EE_Form_Section_Proper__receive_form_submission__req_data to customize the submission data, or AHEE__EE_Form_Section_Proper__receive_form_submission__end '
328
-            . 'to add other actions after a form submission has been received.',
329
-            'event_espresso'
330
-        );
331
-        EE_Error::doing_it_wrong(
332
-            __CLASS__ . '::' . __FUNCTION__,
333
-            $msg,
334
-            '4.8.32.rc.000'
335
-        );
336
-        // it seems the doing_it_wrong messages get output during some hidden html tags, so add an error to make sure this gets noticed
337
-        if (is_admin() && ! defined('DOING_AJAX')) {
338
-            EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
339
-        }
340
-    }
341
-    return $in_use;
319
+	$in_use = has_filter('FHEE__Registrations_Admin_Page___update_attendee_registration_form__qstns')
320
+			  || has_action(
321
+				  'AHEE__Registrations_Admin_Page___save_attendee_registration_form__after_reg_and_attendee_save'
322
+			  );
323
+	if ($in_use) {
324
+		$msg = __(
325
+			'We detected you are using the filter FHEE__Registrations_Admin_Page___update_attendee_registration_form__qstns or AHEE__Registrations_Admin_Page___save_attendee_registration_form__after_reg_and_attendee_save.'
326
+			. 'Both of these have been deprecated and should not be used anymore. You should instead use FHEE__EE_Form_Section_Proper___construct__options_array to customize the contents of the form,'
327
+			. 'use FHEE__EE_Form_Section_Proper__receive_form_submission__req_data to customize the submission data, or AHEE__EE_Form_Section_Proper__receive_form_submission__end '
328
+			. 'to add other actions after a form submission has been received.',
329
+			'event_espresso'
330
+		);
331
+		EE_Error::doing_it_wrong(
332
+			__CLASS__ . '::' . __FUNCTION__,
333
+			$msg,
334
+			'4.8.32.rc.000'
335
+		);
336
+		// it seems the doing_it_wrong messages get output during some hidden html tags, so add an error to make sure this gets noticed
337
+		if (is_admin() && ! defined('DOING_AJAX')) {
338
+			EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
339
+		}
340
+	}
341
+	return $in_use;
342 342
 }
343 343
 
344 344
 add_action(
345
-    'AHEE__Registrations_Admin_Page___registration_details_metabox__start',
346
-    'ee_deprecated_using_old_registration_admin_custom_questions_form_hooks'
345
+	'AHEE__Registrations_Admin_Page___registration_details_metabox__start',
346
+	'ee_deprecated_using_old_registration_admin_custom_questions_form_hooks'
347 347
 );
348 348
 
349 349
 /**
@@ -355,77 +355,77 @@  discard block
 block discarded – undo
355 355
  */
356 356
 function ee_deprecated_update_attendee_registration_form_old($admin_page)
357 357
 {
358
-    // check if the old hooks are in use. If not, do the default
359
-    if (! ee_deprecated_using_old_registration_admin_custom_questions_form_hooks()
360
-        || ! $admin_page instanceof EE_Admin_Page) {
361
-        return;
362
-    }
363
-    $req_data = $admin_page->get_request_data();
364
-    $qstns = isset($req_data['qstn']) ? $req_data['qstn'] : false;
365
-    $REG_ID = isset($req_data['_REG_ID']) ? absint($req_data['_REG_ID']) : false;
366
-    $qstns = apply_filters('FHEE__Registrations_Admin_Page___update_attendee_registration_form__qstns', $qstns);
367
-    if (! $REG_ID || ! $qstns) {
368
-        EE_Error::add_error(
369
-            __('An error occurred. No registration ID and/or registration questions were received.', 'event_espresso'),
370
-            __FILE__,
371
-            __FUNCTION__,
372
-            __LINE__
373
-        );
374
-    }
375
-    $success = true;
376
-
377
-    // allow others to get in on this awesome fun   :D
378
-    do_action(
379
-        'AHEE__Registrations_Admin_Page___save_attendee_registration_form__after_reg_and_attendee_save',
380
-        $REG_ID,
381
-        $qstns
382
-    );
383
-    // loop thru questions... FINALLY!!!
384
-
385
-    foreach ($qstns as $QST_ID => $qstn) {
386
-        // if $qstn isn't an array then it doesn't already have an answer, so let's create the answer
387
-        if (! is_array($qstn)) {
388
-            $success = $this->_save_new_answer($REG_ID, $QST_ID, $qstn);
389
-            continue;
390
-        }
391
-
392
-
393
-        foreach ($qstn as $ANS_ID => $ANS_value) {
394
-            // get answer
395
-            $query_params = array(
396
-                0 => array(
397
-                    'ANS_ID' => $ANS_ID,
398
-                    'REG_ID' => $REG_ID,
399
-                    'QST_ID' => $QST_ID,
400
-                ),
401
-            );
402
-            $answer = EEM_Answer::instance()->get_one($query_params);
403
-            // this MAY be an array but NOT have an answer because its multi select.  If so then we need to create the answer
404
-            if (! $answer instanceof EE_Answer) {
405
-                $set_values = array(
406
-                    'QST_ID'    => $QST_ID,
407
-                    'REG_ID'    => $REG_ID,
408
-                    'ANS_value' => $qstn,
409
-                );
410
-                $success = EEM_Answer::instance()->insert($set_values);
411
-                continue 2;
412
-            }
413
-
414
-            $answer->set('ANS_value', $ANS_value);
415
-            $success = $answer->save();
416
-        }
417
-    }
418
-    $what = __('Registration Form', 'event_espresso');
419
-    $route = $REG_ID ? array('action' => 'view_registration', '_REG_ID' => $REG_ID) : array('action' => 'default');
420
-    $admin_page->redirect_after_action($success, $what, __('updated', 'event_espresso'), $route);
421
-    exit;
358
+	// check if the old hooks are in use. If not, do the default
359
+	if (! ee_deprecated_using_old_registration_admin_custom_questions_form_hooks()
360
+		|| ! $admin_page instanceof EE_Admin_Page) {
361
+		return;
362
+	}
363
+	$req_data = $admin_page->get_request_data();
364
+	$qstns = isset($req_data['qstn']) ? $req_data['qstn'] : false;
365
+	$REG_ID = isset($req_data['_REG_ID']) ? absint($req_data['_REG_ID']) : false;
366
+	$qstns = apply_filters('FHEE__Registrations_Admin_Page___update_attendee_registration_form__qstns', $qstns);
367
+	if (! $REG_ID || ! $qstns) {
368
+		EE_Error::add_error(
369
+			__('An error occurred. No registration ID and/or registration questions were received.', 'event_espresso'),
370
+			__FILE__,
371
+			__FUNCTION__,
372
+			__LINE__
373
+		);
374
+	}
375
+	$success = true;
376
+
377
+	// allow others to get in on this awesome fun   :D
378
+	do_action(
379
+		'AHEE__Registrations_Admin_Page___save_attendee_registration_form__after_reg_and_attendee_save',
380
+		$REG_ID,
381
+		$qstns
382
+	);
383
+	// loop thru questions... FINALLY!!!
384
+
385
+	foreach ($qstns as $QST_ID => $qstn) {
386
+		// if $qstn isn't an array then it doesn't already have an answer, so let's create the answer
387
+		if (! is_array($qstn)) {
388
+			$success = $this->_save_new_answer($REG_ID, $QST_ID, $qstn);
389
+			continue;
390
+		}
391
+
392
+
393
+		foreach ($qstn as $ANS_ID => $ANS_value) {
394
+			// get answer
395
+			$query_params = array(
396
+				0 => array(
397
+					'ANS_ID' => $ANS_ID,
398
+					'REG_ID' => $REG_ID,
399
+					'QST_ID' => $QST_ID,
400
+				),
401
+			);
402
+			$answer = EEM_Answer::instance()->get_one($query_params);
403
+			// this MAY be an array but NOT have an answer because its multi select.  If so then we need to create the answer
404
+			if (! $answer instanceof EE_Answer) {
405
+				$set_values = array(
406
+					'QST_ID'    => $QST_ID,
407
+					'REG_ID'    => $REG_ID,
408
+					'ANS_value' => $qstn,
409
+				);
410
+				$success = EEM_Answer::instance()->insert($set_values);
411
+				continue 2;
412
+			}
413
+
414
+			$answer->set('ANS_value', $ANS_value);
415
+			$success = $answer->save();
416
+		}
417
+	}
418
+	$what = __('Registration Form', 'event_espresso');
419
+	$route = $REG_ID ? array('action' => 'view_registration', '_REG_ID' => $REG_ID) : array('action' => 'default');
420
+	$admin_page->redirect_after_action($success, $what, __('updated', 'event_espresso'), $route);
421
+	exit;
422 422
 }
423 423
 
424 424
 add_action(
425
-    'AHEE__Registrations_Admin_Page___update_attendee_registration_form__start',
426
-    'ee_deprecated_update_attendee_registration_form_old',
427
-    10,
428
-    1
425
+	'AHEE__Registrations_Admin_Page___update_attendee_registration_form__start',
426
+	'ee_deprecated_update_attendee_registration_form_old',
427
+	10,
428
+	1
429 429
 );
430 430
 /**
431 431
  * Render the registration admin page's custom questions area in the old fashion
@@ -441,50 +441,50 @@  discard block
 block discarded – undo
441 441
  */
442 442
 function ee_deprecated_reg_questions_meta_box_old($do_default_action, $admin_page, $registration)
443 443
 {
444
-    // check if the old hooks are in use. If not, do the default
445
-    if (! ee_deprecated_using_old_registration_admin_custom_questions_form_hooks()
446
-        || ! $admin_page instanceof EE_Admin_Page) {
447
-        return $do_default_action;
448
-    }
449
-    add_filter(
450
-        'FHEE__EEH_Form_Fields__generate_question_groups_html__before_question_group_questions',
451
-        array($admin_page, 'form_before_question_group'),
452
-        10,
453
-        1
454
-    );
455
-    add_filter(
456
-        'FHEE__EEH_Form_Fields__generate_question_groups_html__after_question_group_questions',
457
-        array($admin_page, 'form_after_question_group'),
458
-        10,
459
-        1
460
-    );
461
-    add_filter('FHEE__EEH_Form_Fields__label_html', array($admin_page, 'form_form_field_label_wrap'), 10, 1);
462
-    add_filter('FHEE__EEH_Form_Fields__input_html', array($admin_page, 'form_form_field_input__wrap'), 10, 1);
463
-
464
-    $question_groups = EEM_Event::instance()->assemble_array_of_groups_questions_and_options(
465
-        $registration,
466
-        $registration->get(
467
-            'EVT_ID'
468
-        )
469
-    );
470
-
471
-    EE_Registry::instance()->load_helper('Form_Fields');
472
-    $template_args = array(
473
-        'att_questions'             => EEH_Form_Fields::generate_question_groups_html($question_groups),
474
-        'reg_questions_form_action' => 'edit_registration',
475
-        'REG_ID'                    => $registration->ID(),
476
-    );
477
-    $template_path = REG_TEMPLATE_PATH . 'reg_admin_details_main_meta_box_reg_questions.template.php';
478
-    echo EEH_Template::display_template($template_path, $template_args, true);
479
-    // indicate that we should not do the default admin page code
480
-    return false;
444
+	// check if the old hooks are in use. If not, do the default
445
+	if (! ee_deprecated_using_old_registration_admin_custom_questions_form_hooks()
446
+		|| ! $admin_page instanceof EE_Admin_Page) {
447
+		return $do_default_action;
448
+	}
449
+	add_filter(
450
+		'FHEE__EEH_Form_Fields__generate_question_groups_html__before_question_group_questions',
451
+		array($admin_page, 'form_before_question_group'),
452
+		10,
453
+		1
454
+	);
455
+	add_filter(
456
+		'FHEE__EEH_Form_Fields__generate_question_groups_html__after_question_group_questions',
457
+		array($admin_page, 'form_after_question_group'),
458
+		10,
459
+		1
460
+	);
461
+	add_filter('FHEE__EEH_Form_Fields__label_html', array($admin_page, 'form_form_field_label_wrap'), 10, 1);
462
+	add_filter('FHEE__EEH_Form_Fields__input_html', array($admin_page, 'form_form_field_input__wrap'), 10, 1);
463
+
464
+	$question_groups = EEM_Event::instance()->assemble_array_of_groups_questions_and_options(
465
+		$registration,
466
+		$registration->get(
467
+			'EVT_ID'
468
+		)
469
+	);
470
+
471
+	EE_Registry::instance()->load_helper('Form_Fields');
472
+	$template_args = array(
473
+		'att_questions'             => EEH_Form_Fields::generate_question_groups_html($question_groups),
474
+		'reg_questions_form_action' => 'edit_registration',
475
+		'REG_ID'                    => $registration->ID(),
476
+	);
477
+	$template_path = REG_TEMPLATE_PATH . 'reg_admin_details_main_meta_box_reg_questions.template.php';
478
+	echo EEH_Template::display_template($template_path, $template_args, true);
479
+	// indicate that we should not do the default admin page code
480
+	return false;
481 481
 }
482 482
 
483 483
 add_action(
484
-    'FHEE__Registrations_Admin_Page___reg_questions_meta_box__do_default',
485
-    'ee_deprecated_reg_questions_meta_box_old',
486
-    10,
487
-    3
484
+	'FHEE__Registrations_Admin_Page___reg_questions_meta_box__do_default',
485
+	'ee_deprecated_reg_questions_meta_box_old',
486
+	10,
487
+	3
488 488
 );
489 489
 
490 490
 
@@ -501,42 +501,42 @@  discard block
 block discarded – undo
501 501
 class EE_Message_Template_Defaults extends EE_Base
502 502
 {
503 503
 
504
-    /**
505
-     * EE_Message_Template_Defaults constructor.
506
-     *
507
-     * @param EE_messages $messages
508
-     * @param             $messenger_name
509
-     * @param             $message_type_name
510
-     * @param int         $GRP_ID
511
-     * @return EE_Messages_Template_Defaults
512
-     */
513
-    public function __construct(
514
-        EE_messages $messages,
515
-        $messenger_name,
516
-        $message_type_name,
517
-        $GRP_ID = 0
518
-    ) {
519
-        EE_Error::doing_it_wrong(
520
-            __FUNCTION__,
521
-            __(
522
-                'The class EE_Message_Template_Defaults has been deprecated and replaced by EE_Messages_Template_Defaults.',
523
-                'event_espresso'
524
-            ),
525
-            '4.9.0'
526
-        );
527
-        /** @var EE_Message_Resource_Manager $message_resource_manager */
528
-        $message_resource_manager = EE_Registry::instance()->load_lib('Message_Resource_Manager');
529
-        $messenger = $message_resource_manager->get_messenger($messenger_name);
530
-        $message_type = $message_resource_manager->get_message_type($message_type_name);
531
-        return EE_Registry::instance()->load_lib(
532
-            'Messages_Template_Defaults',
533
-            array(
534
-                $GRP_ID,
535
-                $messenger,
536
-                $message_type,
537
-            )
538
-        );
539
-    }
504
+	/**
505
+	 * EE_Message_Template_Defaults constructor.
506
+	 *
507
+	 * @param EE_messages $messages
508
+	 * @param             $messenger_name
509
+	 * @param             $message_type_name
510
+	 * @param int         $GRP_ID
511
+	 * @return EE_Messages_Template_Defaults
512
+	 */
513
+	public function __construct(
514
+		EE_messages $messages,
515
+		$messenger_name,
516
+		$message_type_name,
517
+		$GRP_ID = 0
518
+	) {
519
+		EE_Error::doing_it_wrong(
520
+			__FUNCTION__,
521
+			__(
522
+				'The class EE_Message_Template_Defaults has been deprecated and replaced by EE_Messages_Template_Defaults.',
523
+				'event_espresso'
524
+			),
525
+			'4.9.0'
526
+		);
527
+		/** @var EE_Message_Resource_Manager $message_resource_manager */
528
+		$message_resource_manager = EE_Registry::instance()->load_lib('Message_Resource_Manager');
529
+		$messenger = $message_resource_manager->get_messenger($messenger_name);
530
+		$message_type = $message_resource_manager->get_message_type($message_type_name);
531
+		return EE_Registry::instance()->load_lib(
532
+			'Messages_Template_Defaults',
533
+			array(
534
+				$GRP_ID,
535
+				$messenger,
536
+				$message_type,
537
+			)
538
+		);
539
+	}
540 540
 }
541 541
 
542 542
 
@@ -554,525 +554,525 @@  discard block
 block discarded – undo
554 554
 class EE_messages
555 555
 {
556 556
 
557
-    /** @type EE_messenger[] */
558
-    protected $_active_messengers = array();
559
-
560
-    /** @type array */
561
-    protected $_active_message_types = array();
562
-
563
-    /** @type EE_message_type[] */
564
-    protected $_installed_message_types = array();
565
-
566
-    /** @type EE_messenger */
567
-    protected $_messenger;
568
-
569
-    /** @type EE_message_type */
570
-    protected $_message_type;
571
-
572
-    /** @type array */
573
-    protected $_contexts = array();
574
-
575
-    /** @type EE_Message_Resource_Manager $_message_resource_manager */
576
-    protected $_message_resource_manager;
577
-
578
-
579
-    /**
580
-     * EE_messages constructor.
581
-     *
582
-     * @deprecated 4.9.0
583
-     */
584
-    public function __construct()
585
-    {
586
-    }
587
-
588
-
589
-    /**
590
-     * @param string $method
591
-     */
592
-    public function _class_is_deprecated($method)
593
-    {
594
-        EE_Error::doing_it_wrong(
595
-            'EE_messages::' . $method,
596
-            __('EE_messages has been deprecated.  Please use EE_Message_Resource_Manager instead.'),
597
-            '4.9.0',
598
-            '4.10.0.p'
599
-        );
600
-        // Please use EE_Message_Resource_Manager instead
601
-        $this->_message_resource_manager = EE_Registry::instance()->load_lib('Message_Resource_Manager');
602
-    }
603
-
604
-
605
-    /**
606
-     * @deprecated 4.9.0
607
-     * @param string $messenger_name
608
-     * @return boolean TRUE if it was PREVIOUSLY active, and FALSE if it was previously inactive
609
-     */
610
-    public function ensure_messenger_is_active($messenger_name)
611
-    {
612
-        // EE_messages has been deprecated
613
-        $this->_class_is_deprecated(__FUNCTION__);
614
-        return $this->_message_resource_manager->ensure_messenger_is_active($messenger_name);
615
-    }
616
-
617
-
618
-    /**
619
-     * @deprecated 4.9.0
620
-     * @param string $message_type message type name
621
-     * @param        $messenger
622
-     * @return bool true if it got activated (or was active) and false if not.
623
-     * @throws \EE_Error
624
-     */
625
-    public function ensure_message_type_is_active($message_type, $messenger)
626
-    {
627
-        // EE_messages has been deprecated
628
-        $this->_class_is_deprecated(__FUNCTION__);
629
-        return $this->_message_resource_manager->ensure_message_type_is_active($message_type, $messenger);
630
-    }
631
-
632
-
633
-    /**
634
-     * @deprecated 4.9.0
635
-     * @param string $messenger_name
636
-     * @param array  $mts_to_activate             (optional) An array of message types to activate with this messenger.
637
-     *                                             If included we do NOT setup the default message types (assuming they
638
-     *                                             are already setup.)
639
-     * @return boolean an array of generated templates or false if nothing generated/activated.
640
-     */
641
-    public function activate_messenger($messenger_name, $mts_to_activate = array())
642
-    {
643
-        // EE_messages has been deprecated
644
-        $this->_class_is_deprecated(__FUNCTION__);
645
-        return $this->_message_resource_manager->activate_messenger($messenger_name, $mts_to_activate);
646
-    }
647
-
648
-
649
-    /**
650
-     * @deprecated 4.9.0
651
-     * @param EE_messenger    $messenger    messenger used in trigger
652
-     * @param EE_message_type $message_type message type used in trigger
653
-     *
654
-     * @return bool true is a generating messenger and can be sent OR FALSE meaning cannot send.
655
-     */
656
-    public function is_generating_messenger_and_active(EE_messenger $messenger, EE_message_type $message_type)
657
-    {
658
-        // EE_messages has been deprecated
659
-        $this->_class_is_deprecated(__FUNCTION__);
660
-        return $this->_message_resource_manager->is_generating_messenger_and_active($messenger, $message_type);
661
-    }
662
-
663
-
664
-    /**
665
-     * @deprecated 4.9.0
666
-     * @param string $messenger
667
-     * @return EE_messenger | null
668
-     */
669
-    public function get_messenger_if_active($messenger)
670
-    {
671
-        // EE_messages has been deprecated
672
-        $this->_class_is_deprecated(__FUNCTION__);
673
-        return $this->_message_resource_manager->get_active_messenger($messenger);
674
-    }
675
-
676
-
677
-    /**
678
-     * @deprecated 4.9.0
679
-     * @param EE_Message $message
680
-     * @return array  An array with 'messenger' and 'message_type' as the index and the corresponding valid object if
681
-     *                  available.
682
-     *                  Eg. Valid Messenger and Message Type:
683
-     *                  array(
684
-     *                  'messenger' => new EE_Email_messenger(),
685
-     *                  'message_type' => new EE_Registration_Approved_message_type()
686
-     *                  )
687
-     *                  Valid Messenger and Invalid Message Type:
688
-     *                  array(
689
-     *                  'messenger' => new EE_Email_messenger(),
690
-     *                  'message_type' => null
691
-     *                  )
692
-     */
693
-    public function validate_for_use(EE_Message $message)
694
-    {
695
-        // EE_messages has been deprecated
696
-        $this->_class_is_deprecated(__FUNCTION__);
697
-        return array(
698
-            'messenger'    => $message->messenger_object(),
699
-            'message_type' => $message->message_type_object(),
700
-        );
701
-    }
702
-
703
-
704
-    /**
705
-     * @deprecated 4.9.0
706
-     * @param  string $type                 What type of message are we sending (corresponds to message types)
707
-     * @param  mixed  $vars                 Data being sent for parsing in the message
708
-     * @param  string $sending_messenger    if included then we ONLY use the specified messenger for delivery.
709
-     *                                      Otherwise we cycle through all active messengers.
710
-     * @param string  $generating_messenger if included then this messenger is used for generating the message
711
-     *                                      templates (but not for sending).
712
-     * @param string  $context              If included then only a message type for a specific context will be
713
-     *                                      generated.
714
-     * @param bool    $send                 Default TRUE.  If false, then this will just return the generated
715
-     *                                      EE_messages objects which might be used by the trigger to setup a batch
716
-     *                                      message (typically html messenger uses it).
717
-     * @return bool
718
-     */
719
-    public function send_message(
720
-        $type,
721
-        $vars,
722
-        $sending_messenger = '',
723
-        $generating_messenger = '',
724
-        $context = '',
725
-        $send = true
726
-    ) {
727
-        // EE_messages has been deprecated
728
-        $this->_class_is_deprecated(__FUNCTION__);
729
-        /** @type EE_Messages_Processor $processor */
730
-        $processor = EE_Registry::instance()->load_lib('Messages_Processor');
731
-        $error = false;
732
-        // try to intelligently determine what method we'll call based on the incoming data.
733
-        // if generating and sending are different then generate and send immediately.
734
-        if (! empty($sending_messenger) && $sending_messenger != $generating_messenger && $send) {
735
-            // in the legacy system, when generating and sending were different, that means all the
736
-            // vars are already in the request object.  So let's just use that.
737
-            try {
738
-                /** @type EE_Message_To_Generate_From_Request $mtg */
739
-                $mtg = EE_Registry::instance()->load_lib('Message_To_Generate_From_Request');
740
-                $processor->generate_and_send_now($mtg);
741
-            } catch (EE_Error $e) {
742
-                $error_msg = __(
743
-                    'Please note that a system message failed to send due to a technical issue.',
744
-                    'event_espresso'
745
-                );
746
-                // add specific message for developers if WP_DEBUG in on
747
-                $error_msg .= '||' . $e->getMessage();
748
-                EE_Error::add_error($error_msg, __FILE__, __FUNCTION__, __LINE__);
749
-                $error = true;
750
-            }
751
-        } else {
752
-            $processor->generate_for_all_active_messengers($type, $vars, $send);
753
-            // let's find out if there were any errors and how many successfully were queued.
754
-            $count_errors = $processor->get_queue()->count_STS_in_queue(
755
-                array(EEM_Message::status_failed, EEM_Message::status_debug_only)
756
-            );
757
-            $count_queued = $processor->get_queue()->count_STS_in_queue(EEM_Message::status_incomplete);
758
-            $count_retry = $processor->get_queue()->count_STS_in_queue(EEM_Message::status_retry);
759
-            $count_errors = $count_errors + $count_retry;
760
-            if ($count_errors > 0) {
761
-                $error = true;
762
-                if ($count_errors > 1 && $count_retry > 1 && $count_queued > 1) {
763
-                    $message = sprintf(
764
-                        __(
765
-                            'There were %d errors and %d messages successfully queued for generation and sending',
766
-                            'event_espresso'
767
-                        ),
768
-                        $count_errors,
769
-                        $count_queued
770
-                    );
771
-                } elseif ($count_errors > 1 && $count_queued === 1) {
772
-                    $message = sprintf(
773
-                        __(
774
-                            'There were %d errors and %d message successfully queued for generation.',
775
-                            'event_espresso'
776
-                        ),
777
-                        $count_errors,
778
-                        $count_queued
779
-                    );
780
-                } elseif ($count_errors === 1 && $count_queued > 1) {
781
-                    $message = sprintf(
782
-                        __(
783
-                            'There was %d error and %d messages successfully queued for generation.',
784
-                            'event_espresso'
785
-                        ),
786
-                        $count_errors,
787
-                        $count_queued
788
-                    );
789
-                } else {
790
-                    $message = sprintf(
791
-                        __(
792
-                            'There was %d message that failed to be queued for generation.',
793
-                            'event_espresso'
794
-                        ),
795
-                        $count_errors
796
-                    );
797
-                }
798
-                EE_Error::add_error($message, __FILE__, __FUNCTION__, __LINE__);
799
-            } else {
800
-                if ($count_queued === 1) {
801
-                    $message = sprintf(
802
-                        __(
803
-                            '%d message successfully queued for generation.',
804
-                            'event_espresso'
805
-                        ),
806
-                        $count_queued
807
-                    );
808
-                } else {
809
-                    $message = sprintf(
810
-                        __(
811
-                            '%d messages were successfully queued for generation.',
812
-                            'event_espresso'
813
-                        ),
814
-                        $count_queued
815
-                    );
816
-                }
817
-                EE_Error::add_success($message);
818
-            }
819
-        }
820
-        // if no error then return the generated message(s).
821
-        if (! $error && ! $send) {
822
-            $generated_queue = $processor->generate_queue(false);
823
-            // get message and return.
824
-            $generated_queue->get_message_repository()->rewind();
825
-            $messages = array();
826
-            while ($generated_queue->get_message_repository()->valid()) {
827
-                $message = $generated_queue->get_message_repository()->current();
828
-                if ($message instanceof EE_Message) {
829
-                    // set properties that might be expected by add-ons (backward compat)
830
-                    $message->content = $message->content();
831
-                    $message->template_pack = $message->get_template_pack();
832
-                    $message->template_variation = $message->get_template_pack_variation();
833
-                    $messages[] = $message;
834
-                }
835
-                $generated_queue->get_message_repository()->next();
836
-            }
837
-            return $messages;
838
-        }
839
-        return $error ? false
840
-            : true; // yeah backwards eh?  Really what we're returning is if there is a total success for all the messages or not.  We'll modify this once we get message recording in place.
841
-    }
842
-
843
-
844
-    /**
845
-     * @deprecated 4.9.0
846
-     * @param  string $type      This should correspond with a valid message type
847
-     * @param  string $context   This should correspond with a valid context for the message type
848
-     * @param  string $messenger This should correspond with a valid messenger.
849
-     * @param bool    $send      true we will do a test send using the messenger delivery, false we just do a regular
850
-     *                           preview
851
-     * @return string          The body of the message.
852
-     */
853
-    public function preview_message($type, $context, $messenger, $send = false)
854
-    {
855
-        // EE_messages has been deprecated
856
-        $this->_class_is_deprecated(__FUNCTION__);
857
-        return EED_Messages::preview_message($type, $context, $messenger, $send);
858
-    }
859
-
860
-
861
-    /**
862
-     * @since      4.5.0
863
-     * @deprecated 4.9.0   Moved to EED_Messages Module
864
-     * @param string   $messenger    a string matching a valid active messenger in the system
865
-     * @param string   $message_type Although it seems contrary to the name of the method, a message type name is still
866
-     *                               required to send along the message type to the messenger because this is used for
867
-     *                               determining what specific variations might be loaded for the generated message.
868
-     * @param stdClass $message      a stdClass object in the format expected by the messenger.
869
-     *
870
-     * @return bool          success or fail.
871
-     */
872
-    public function send_message_with_messenger_only($messenger, $message_type, $message)
873
-    {
874
-        // EE_messages has been deprecated
875
-        $this->_class_is_deprecated(__FUNCTION__);
876
-        // setup for sending to new method.
877
-        /** @type EE_Messages_Queue $queue */
878
-        $queue = EE_Registry::instance()->load_lib('Messages_Queue');
879
-        // make sure we have a proper message object
880
-        if (! $message instanceof EE_Message && is_object($message) && isset($message->content)) {
881
-            $msg = EE_Message_Factory::create(
882
-                array(
883
-                    'MSG_messenger'    => $messenger,
884
-                    'MSG_message_type' => $message_type,
885
-                    'MSG_content'      => $message->content,
886
-                    'MSG_subject'      => $message->subject,
887
-                )
888
-            );
889
-        } else {
890
-            $msg = $message;
891
-        }
892
-        if (! $msg instanceof EE_Message) {
893
-            return false;
894
-        }
895
-        // make sure any content in a content property (if not empty) is set on the MSG_content.
896
-        if (! empty($msg->content)) {
897
-            $msg->set('MSG_content', $msg->content);
898
-        }
899
-        $queue->add($msg);
900
-        return EED_Messages::send_message_with_messenger_only($messenger, $message_type, $queue);
901
-    }
902
-
903
-
904
-    /**
905
-     * @deprecated 4.9.0
906
-     * @param         $messenger
907
-     * @param  string $message_type message type that the templates are being created for
908
-     * @param int     $GRP_ID
909
-     * @param bool    $is_global
910
-     * @return array|object if creation is successful then we return an array of info, otherwise an error_object is
911
-     *                      returned.
912
-     * @throws \EE_Error
913
-     */
914
-    public function create_new_templates($messenger, $message_type, $GRP_ID = 0, $is_global = false)
915
-    {
916
-        // EE_messages has been deprecated
917
-        $this->_class_is_deprecated(__FUNCTION__);
918
-        EE_Registry::instance()->load_helper('MSG_Template');
919
-        return EEH_MSG_Template::create_new_templates($messenger, $message_type, $GRP_ID, $is_global);
920
-    }
921
-
922
-
923
-    /**
924
-     * @deprecated 4.9.0
925
-     * @param  string $messenger_name    name of EE_messenger
926
-     * @param  string $message_type_name name of EE_message_type
927
-     * @return array
928
-     */
929
-    public function get_fields($messenger_name, $message_type_name)
930
-    {
931
-        // EE_messages has been deprecated
932
-        $this->_class_is_deprecated(__FUNCTION__);
933
-        EE_Registry::instance()->load_helper('MSG_Template');
934
-        return EEH_MSG_Template::get_fields($messenger_name, $message_type_name);
935
-    }
936
-
937
-
938
-    /**
939
-     * @deprecated 4.9.0
940
-     * @access     public
941
-     * @param string $type                we can indicate just returning installed message types
942
-     *                                    or messengers (or both) via this parameter.
943
-     * @param bool   $skip_cache          if true then we skip the cache and retrieve via files.
944
-     * @return array                    multidimensional array of messenger and message_type objects
945
-     *                                    (messengers index, and message_type index);
946
-     */
947
-    public function get_installed($type = 'all', $skip_cache = false)
948
-    {
949
-        // EE_messages has been deprecated
950
-        $this->_class_is_deprecated(__FUNCTION__);
951
-        if ($skip_cache) {
952
-            $this->_message_resource_manager->reset_active_messengers_and_message_types();
953
-        }
954
-        switch ($type) {
955
-            case 'messengers' :
956
-                return array(
957
-                    'messenger' => $this->_message_resource_manager->installed_messengers(),
958
-                );
959
-                break;
960
-            case 'message_types' :
961
-                return array(
962
-                    'message_type' => $this->_message_resource_manager->installed_message_types(),
963
-                );
964
-                break;
965
-            case 'all' :
966
-            default :
967
-                return array(
968
-                    'messenger'    => $this->_message_resource_manager->installed_messengers(),
969
-                    'message_type' => $this->_message_resource_manager->installed_message_types(),
970
-                );
971
-                break;
972
-        }
973
-    }
974
-
975
-
976
-    /**
977
-     * @deprecated 4.9.0
978
-     * @return \EE_messenger[]
979
-     */
980
-    public function get_active_messengers()
981
-    {
982
-        // EE_messages has been deprecated
983
-        $this->_class_is_deprecated(__FUNCTION__);
984
-        return $this->_message_resource_manager->active_messengers();
985
-    }
986
-
987
-
988
-    /**
989
-     * @deprecated 4.9.0
990
-     * @return array array of message_type references (string)
991
-     */
992
-    public function get_active_message_types()
993
-    {
994
-        // EE_messages has been deprecated
995
-        $this->_class_is_deprecated(__FUNCTION__);
996
-        return $this->_message_resource_manager->list_of_active_message_types();
997
-    }
998
-
999
-
1000
-    /**
1001
-     * @deprecated 4.9.0
1002
-     * @return EE_message_type[]
1003
-     */
1004
-    public function get_active_message_type_objects()
1005
-    {
1006
-        // EE_messages has been deprecated
1007
-        $this->_class_is_deprecated(__FUNCTION__);
1008
-        return $this->_message_resource_manager->get_active_message_type_objects();
1009
-    }
1010
-
1011
-
1012
-    /**
1013
-     * @deprecated 4.9.0
1014
-     * @since      4.5.0
1015
-     * @param string $messenger The messenger being checked
1016
-     * @return EE_message_type[]    (or empty array if none present)
1017
-     */
1018
-    public function get_active_message_types_per_messenger($messenger)
1019
-    {
1020
-        // EE_messages has been deprecated
1021
-        $this->_class_is_deprecated(__FUNCTION__);
1022
-        return $this->_message_resource_manager->get_active_message_types_for_messenger($messenger);
1023
-    }
1024
-
1025
-
1026
-    /**
1027
-     * @deprecated 4.9.0
1028
-     * @param string $messenger    The string should correspond to the messenger (message types are
1029
-     * @param string $message_type The string should correspond to a message type.
1030
-     * @return EE_message_type|null
1031
-     */
1032
-    public function get_active_message_type($messenger, $message_type)
1033
-    {
1034
-        // EE_messages has been deprecated
1035
-        $this->_class_is_deprecated(__FUNCTION__);
1036
-        return $this->_message_resource_manager->get_active_message_type_for_messenger($messenger, $message_type);
1037
-    }
1038
-
1039
-
1040
-    /**
1041
-     * @deprecated 4.9.0
1042
-     * @return array|\EE_message_type[]
1043
-     */
1044
-    public function get_installed_message_types()
1045
-    {
1046
-        // EE_messages has been deprecated
1047
-        $this->_class_is_deprecated(__FUNCTION__);
1048
-        return $this->_message_resource_manager->installed_message_types();
1049
-    }
1050
-
1051
-
1052
-    /**
1053
-     * @deprecated 4.9.0
1054
-     * @return array
1055
-     */
1056
-    public function get_installed_messengers()
1057
-    {
1058
-        // EE_messages has been deprecated
1059
-        $this->_class_is_deprecated(__FUNCTION__);
1060
-        return $this->_message_resource_manager->installed_messengers();
1061
-    }
1062
-
1063
-
1064
-    /**
1065
-     * @deprecated 4.9.0
1066
-     * @param   bool $slugs_only Whether to return an array of just slugs and labels (true) or all contexts indexed by
1067
-     *                           message type.
1068
-     * @return array
1069
-     */
1070
-    public function get_all_contexts($slugs_only = true)
1071
-    {
1072
-        // EE_messages has been deprecated
1073
-        $this->_class_is_deprecated(__FUNCTION__);
1074
-        return $this->_message_resource_manager->get_all_contexts($slugs_only);
1075
-    }
557
+	/** @type EE_messenger[] */
558
+	protected $_active_messengers = array();
559
+
560
+	/** @type array */
561
+	protected $_active_message_types = array();
562
+
563
+	/** @type EE_message_type[] */
564
+	protected $_installed_message_types = array();
565
+
566
+	/** @type EE_messenger */
567
+	protected $_messenger;
568
+
569
+	/** @type EE_message_type */
570
+	protected $_message_type;
571
+
572
+	/** @type array */
573
+	protected $_contexts = array();
574
+
575
+	/** @type EE_Message_Resource_Manager $_message_resource_manager */
576
+	protected $_message_resource_manager;
577
+
578
+
579
+	/**
580
+	 * EE_messages constructor.
581
+	 *
582
+	 * @deprecated 4.9.0
583
+	 */
584
+	public function __construct()
585
+	{
586
+	}
587
+
588
+
589
+	/**
590
+	 * @param string $method
591
+	 */
592
+	public function _class_is_deprecated($method)
593
+	{
594
+		EE_Error::doing_it_wrong(
595
+			'EE_messages::' . $method,
596
+			__('EE_messages has been deprecated.  Please use EE_Message_Resource_Manager instead.'),
597
+			'4.9.0',
598
+			'4.10.0.p'
599
+		);
600
+		// Please use EE_Message_Resource_Manager instead
601
+		$this->_message_resource_manager = EE_Registry::instance()->load_lib('Message_Resource_Manager');
602
+	}
603
+
604
+
605
+	/**
606
+	 * @deprecated 4.9.0
607
+	 * @param string $messenger_name
608
+	 * @return boolean TRUE if it was PREVIOUSLY active, and FALSE if it was previously inactive
609
+	 */
610
+	public function ensure_messenger_is_active($messenger_name)
611
+	{
612
+		// EE_messages has been deprecated
613
+		$this->_class_is_deprecated(__FUNCTION__);
614
+		return $this->_message_resource_manager->ensure_messenger_is_active($messenger_name);
615
+	}
616
+
617
+
618
+	/**
619
+	 * @deprecated 4.9.0
620
+	 * @param string $message_type message type name
621
+	 * @param        $messenger
622
+	 * @return bool true if it got activated (or was active) and false if not.
623
+	 * @throws \EE_Error
624
+	 */
625
+	public function ensure_message_type_is_active($message_type, $messenger)
626
+	{
627
+		// EE_messages has been deprecated
628
+		$this->_class_is_deprecated(__FUNCTION__);
629
+		return $this->_message_resource_manager->ensure_message_type_is_active($message_type, $messenger);
630
+	}
631
+
632
+
633
+	/**
634
+	 * @deprecated 4.9.0
635
+	 * @param string $messenger_name
636
+	 * @param array  $mts_to_activate             (optional) An array of message types to activate with this messenger.
637
+	 *                                             If included we do NOT setup the default message types (assuming they
638
+	 *                                             are already setup.)
639
+	 * @return boolean an array of generated templates or false if nothing generated/activated.
640
+	 */
641
+	public function activate_messenger($messenger_name, $mts_to_activate = array())
642
+	{
643
+		// EE_messages has been deprecated
644
+		$this->_class_is_deprecated(__FUNCTION__);
645
+		return $this->_message_resource_manager->activate_messenger($messenger_name, $mts_to_activate);
646
+	}
647
+
648
+
649
+	/**
650
+	 * @deprecated 4.9.0
651
+	 * @param EE_messenger    $messenger    messenger used in trigger
652
+	 * @param EE_message_type $message_type message type used in trigger
653
+	 *
654
+	 * @return bool true is a generating messenger and can be sent OR FALSE meaning cannot send.
655
+	 */
656
+	public function is_generating_messenger_and_active(EE_messenger $messenger, EE_message_type $message_type)
657
+	{
658
+		// EE_messages has been deprecated
659
+		$this->_class_is_deprecated(__FUNCTION__);
660
+		return $this->_message_resource_manager->is_generating_messenger_and_active($messenger, $message_type);
661
+	}
662
+
663
+
664
+	/**
665
+	 * @deprecated 4.9.0
666
+	 * @param string $messenger
667
+	 * @return EE_messenger | null
668
+	 */
669
+	public function get_messenger_if_active($messenger)
670
+	{
671
+		// EE_messages has been deprecated
672
+		$this->_class_is_deprecated(__FUNCTION__);
673
+		return $this->_message_resource_manager->get_active_messenger($messenger);
674
+	}
675
+
676
+
677
+	/**
678
+	 * @deprecated 4.9.0
679
+	 * @param EE_Message $message
680
+	 * @return array  An array with 'messenger' and 'message_type' as the index and the corresponding valid object if
681
+	 *                  available.
682
+	 *                  Eg. Valid Messenger and Message Type:
683
+	 *                  array(
684
+	 *                  'messenger' => new EE_Email_messenger(),
685
+	 *                  'message_type' => new EE_Registration_Approved_message_type()
686
+	 *                  )
687
+	 *                  Valid Messenger and Invalid Message Type:
688
+	 *                  array(
689
+	 *                  'messenger' => new EE_Email_messenger(),
690
+	 *                  'message_type' => null
691
+	 *                  )
692
+	 */
693
+	public function validate_for_use(EE_Message $message)
694
+	{
695
+		// EE_messages has been deprecated
696
+		$this->_class_is_deprecated(__FUNCTION__);
697
+		return array(
698
+			'messenger'    => $message->messenger_object(),
699
+			'message_type' => $message->message_type_object(),
700
+		);
701
+	}
702
+
703
+
704
+	/**
705
+	 * @deprecated 4.9.0
706
+	 * @param  string $type                 What type of message are we sending (corresponds to message types)
707
+	 * @param  mixed  $vars                 Data being sent for parsing in the message
708
+	 * @param  string $sending_messenger    if included then we ONLY use the specified messenger for delivery.
709
+	 *                                      Otherwise we cycle through all active messengers.
710
+	 * @param string  $generating_messenger if included then this messenger is used for generating the message
711
+	 *                                      templates (but not for sending).
712
+	 * @param string  $context              If included then only a message type for a specific context will be
713
+	 *                                      generated.
714
+	 * @param bool    $send                 Default TRUE.  If false, then this will just return the generated
715
+	 *                                      EE_messages objects which might be used by the trigger to setup a batch
716
+	 *                                      message (typically html messenger uses it).
717
+	 * @return bool
718
+	 */
719
+	public function send_message(
720
+		$type,
721
+		$vars,
722
+		$sending_messenger = '',
723
+		$generating_messenger = '',
724
+		$context = '',
725
+		$send = true
726
+	) {
727
+		// EE_messages has been deprecated
728
+		$this->_class_is_deprecated(__FUNCTION__);
729
+		/** @type EE_Messages_Processor $processor */
730
+		$processor = EE_Registry::instance()->load_lib('Messages_Processor');
731
+		$error = false;
732
+		// try to intelligently determine what method we'll call based on the incoming data.
733
+		// if generating and sending are different then generate and send immediately.
734
+		if (! empty($sending_messenger) && $sending_messenger != $generating_messenger && $send) {
735
+			// in the legacy system, when generating and sending were different, that means all the
736
+			// vars are already in the request object.  So let's just use that.
737
+			try {
738
+				/** @type EE_Message_To_Generate_From_Request $mtg */
739
+				$mtg = EE_Registry::instance()->load_lib('Message_To_Generate_From_Request');
740
+				$processor->generate_and_send_now($mtg);
741
+			} catch (EE_Error $e) {
742
+				$error_msg = __(
743
+					'Please note that a system message failed to send due to a technical issue.',
744
+					'event_espresso'
745
+				);
746
+				// add specific message for developers if WP_DEBUG in on
747
+				$error_msg .= '||' . $e->getMessage();
748
+				EE_Error::add_error($error_msg, __FILE__, __FUNCTION__, __LINE__);
749
+				$error = true;
750
+			}
751
+		} else {
752
+			$processor->generate_for_all_active_messengers($type, $vars, $send);
753
+			// let's find out if there were any errors and how many successfully were queued.
754
+			$count_errors = $processor->get_queue()->count_STS_in_queue(
755
+				array(EEM_Message::status_failed, EEM_Message::status_debug_only)
756
+			);
757
+			$count_queued = $processor->get_queue()->count_STS_in_queue(EEM_Message::status_incomplete);
758
+			$count_retry = $processor->get_queue()->count_STS_in_queue(EEM_Message::status_retry);
759
+			$count_errors = $count_errors + $count_retry;
760
+			if ($count_errors > 0) {
761
+				$error = true;
762
+				if ($count_errors > 1 && $count_retry > 1 && $count_queued > 1) {
763
+					$message = sprintf(
764
+						__(
765
+							'There were %d errors and %d messages successfully queued for generation and sending',
766
+							'event_espresso'
767
+						),
768
+						$count_errors,
769
+						$count_queued
770
+					);
771
+				} elseif ($count_errors > 1 && $count_queued === 1) {
772
+					$message = sprintf(
773
+						__(
774
+							'There were %d errors and %d message successfully queued for generation.',
775
+							'event_espresso'
776
+						),
777
+						$count_errors,
778
+						$count_queued
779
+					);
780
+				} elseif ($count_errors === 1 && $count_queued > 1) {
781
+					$message = sprintf(
782
+						__(
783
+							'There was %d error and %d messages successfully queued for generation.',
784
+							'event_espresso'
785
+						),
786
+						$count_errors,
787
+						$count_queued
788
+					);
789
+				} else {
790
+					$message = sprintf(
791
+						__(
792
+							'There was %d message that failed to be queued for generation.',
793
+							'event_espresso'
794
+						),
795
+						$count_errors
796
+					);
797
+				}
798
+				EE_Error::add_error($message, __FILE__, __FUNCTION__, __LINE__);
799
+			} else {
800
+				if ($count_queued === 1) {
801
+					$message = sprintf(
802
+						__(
803
+							'%d message successfully queued for generation.',
804
+							'event_espresso'
805
+						),
806
+						$count_queued
807
+					);
808
+				} else {
809
+					$message = sprintf(
810
+						__(
811
+							'%d messages were successfully queued for generation.',
812
+							'event_espresso'
813
+						),
814
+						$count_queued
815
+					);
816
+				}
817
+				EE_Error::add_success($message);
818
+			}
819
+		}
820
+		// if no error then return the generated message(s).
821
+		if (! $error && ! $send) {
822
+			$generated_queue = $processor->generate_queue(false);
823
+			// get message and return.
824
+			$generated_queue->get_message_repository()->rewind();
825
+			$messages = array();
826
+			while ($generated_queue->get_message_repository()->valid()) {
827
+				$message = $generated_queue->get_message_repository()->current();
828
+				if ($message instanceof EE_Message) {
829
+					// set properties that might be expected by add-ons (backward compat)
830
+					$message->content = $message->content();
831
+					$message->template_pack = $message->get_template_pack();
832
+					$message->template_variation = $message->get_template_pack_variation();
833
+					$messages[] = $message;
834
+				}
835
+				$generated_queue->get_message_repository()->next();
836
+			}
837
+			return $messages;
838
+		}
839
+		return $error ? false
840
+			: true; // yeah backwards eh?  Really what we're returning is if there is a total success for all the messages or not.  We'll modify this once we get message recording in place.
841
+	}
842
+
843
+
844
+	/**
845
+	 * @deprecated 4.9.0
846
+	 * @param  string $type      This should correspond with a valid message type
847
+	 * @param  string $context   This should correspond with a valid context for the message type
848
+	 * @param  string $messenger This should correspond with a valid messenger.
849
+	 * @param bool    $send      true we will do a test send using the messenger delivery, false we just do a regular
850
+	 *                           preview
851
+	 * @return string          The body of the message.
852
+	 */
853
+	public function preview_message($type, $context, $messenger, $send = false)
854
+	{
855
+		// EE_messages has been deprecated
856
+		$this->_class_is_deprecated(__FUNCTION__);
857
+		return EED_Messages::preview_message($type, $context, $messenger, $send);
858
+	}
859
+
860
+
861
+	/**
862
+	 * @since      4.5.0
863
+	 * @deprecated 4.9.0   Moved to EED_Messages Module
864
+	 * @param string   $messenger    a string matching a valid active messenger in the system
865
+	 * @param string   $message_type Although it seems contrary to the name of the method, a message type name is still
866
+	 *                               required to send along the message type to the messenger because this is used for
867
+	 *                               determining what specific variations might be loaded for the generated message.
868
+	 * @param stdClass $message      a stdClass object in the format expected by the messenger.
869
+	 *
870
+	 * @return bool          success or fail.
871
+	 */
872
+	public function send_message_with_messenger_only($messenger, $message_type, $message)
873
+	{
874
+		// EE_messages has been deprecated
875
+		$this->_class_is_deprecated(__FUNCTION__);
876
+		// setup for sending to new method.
877
+		/** @type EE_Messages_Queue $queue */
878
+		$queue = EE_Registry::instance()->load_lib('Messages_Queue');
879
+		// make sure we have a proper message object
880
+		if (! $message instanceof EE_Message && is_object($message) && isset($message->content)) {
881
+			$msg = EE_Message_Factory::create(
882
+				array(
883
+					'MSG_messenger'    => $messenger,
884
+					'MSG_message_type' => $message_type,
885
+					'MSG_content'      => $message->content,
886
+					'MSG_subject'      => $message->subject,
887
+				)
888
+			);
889
+		} else {
890
+			$msg = $message;
891
+		}
892
+		if (! $msg instanceof EE_Message) {
893
+			return false;
894
+		}
895
+		// make sure any content in a content property (if not empty) is set on the MSG_content.
896
+		if (! empty($msg->content)) {
897
+			$msg->set('MSG_content', $msg->content);
898
+		}
899
+		$queue->add($msg);
900
+		return EED_Messages::send_message_with_messenger_only($messenger, $message_type, $queue);
901
+	}
902
+
903
+
904
+	/**
905
+	 * @deprecated 4.9.0
906
+	 * @param         $messenger
907
+	 * @param  string $message_type message type that the templates are being created for
908
+	 * @param int     $GRP_ID
909
+	 * @param bool    $is_global
910
+	 * @return array|object if creation is successful then we return an array of info, otherwise an error_object is
911
+	 *                      returned.
912
+	 * @throws \EE_Error
913
+	 */
914
+	public function create_new_templates($messenger, $message_type, $GRP_ID = 0, $is_global = false)
915
+	{
916
+		// EE_messages has been deprecated
917
+		$this->_class_is_deprecated(__FUNCTION__);
918
+		EE_Registry::instance()->load_helper('MSG_Template');
919
+		return EEH_MSG_Template::create_new_templates($messenger, $message_type, $GRP_ID, $is_global);
920
+	}
921
+
922
+
923
+	/**
924
+	 * @deprecated 4.9.0
925
+	 * @param  string $messenger_name    name of EE_messenger
926
+	 * @param  string $message_type_name name of EE_message_type
927
+	 * @return array
928
+	 */
929
+	public function get_fields($messenger_name, $message_type_name)
930
+	{
931
+		// EE_messages has been deprecated
932
+		$this->_class_is_deprecated(__FUNCTION__);
933
+		EE_Registry::instance()->load_helper('MSG_Template');
934
+		return EEH_MSG_Template::get_fields($messenger_name, $message_type_name);
935
+	}
936
+
937
+
938
+	/**
939
+	 * @deprecated 4.9.0
940
+	 * @access     public
941
+	 * @param string $type                we can indicate just returning installed message types
942
+	 *                                    or messengers (or both) via this parameter.
943
+	 * @param bool   $skip_cache          if true then we skip the cache and retrieve via files.
944
+	 * @return array                    multidimensional array of messenger and message_type objects
945
+	 *                                    (messengers index, and message_type index);
946
+	 */
947
+	public function get_installed($type = 'all', $skip_cache = false)
948
+	{
949
+		// EE_messages has been deprecated
950
+		$this->_class_is_deprecated(__FUNCTION__);
951
+		if ($skip_cache) {
952
+			$this->_message_resource_manager->reset_active_messengers_and_message_types();
953
+		}
954
+		switch ($type) {
955
+			case 'messengers' :
956
+				return array(
957
+					'messenger' => $this->_message_resource_manager->installed_messengers(),
958
+				);
959
+				break;
960
+			case 'message_types' :
961
+				return array(
962
+					'message_type' => $this->_message_resource_manager->installed_message_types(),
963
+				);
964
+				break;
965
+			case 'all' :
966
+			default :
967
+				return array(
968
+					'messenger'    => $this->_message_resource_manager->installed_messengers(),
969
+					'message_type' => $this->_message_resource_manager->installed_message_types(),
970
+				);
971
+				break;
972
+		}
973
+	}
974
+
975
+
976
+	/**
977
+	 * @deprecated 4.9.0
978
+	 * @return \EE_messenger[]
979
+	 */
980
+	public function get_active_messengers()
981
+	{
982
+		// EE_messages has been deprecated
983
+		$this->_class_is_deprecated(__FUNCTION__);
984
+		return $this->_message_resource_manager->active_messengers();
985
+	}
986
+
987
+
988
+	/**
989
+	 * @deprecated 4.9.0
990
+	 * @return array array of message_type references (string)
991
+	 */
992
+	public function get_active_message_types()
993
+	{
994
+		// EE_messages has been deprecated
995
+		$this->_class_is_deprecated(__FUNCTION__);
996
+		return $this->_message_resource_manager->list_of_active_message_types();
997
+	}
998
+
999
+
1000
+	/**
1001
+	 * @deprecated 4.9.0
1002
+	 * @return EE_message_type[]
1003
+	 */
1004
+	public function get_active_message_type_objects()
1005
+	{
1006
+		// EE_messages has been deprecated
1007
+		$this->_class_is_deprecated(__FUNCTION__);
1008
+		return $this->_message_resource_manager->get_active_message_type_objects();
1009
+	}
1010
+
1011
+
1012
+	/**
1013
+	 * @deprecated 4.9.0
1014
+	 * @since      4.5.0
1015
+	 * @param string $messenger The messenger being checked
1016
+	 * @return EE_message_type[]    (or empty array if none present)
1017
+	 */
1018
+	public function get_active_message_types_per_messenger($messenger)
1019
+	{
1020
+		// EE_messages has been deprecated
1021
+		$this->_class_is_deprecated(__FUNCTION__);
1022
+		return $this->_message_resource_manager->get_active_message_types_for_messenger($messenger);
1023
+	}
1024
+
1025
+
1026
+	/**
1027
+	 * @deprecated 4.9.0
1028
+	 * @param string $messenger    The string should correspond to the messenger (message types are
1029
+	 * @param string $message_type The string should correspond to a message type.
1030
+	 * @return EE_message_type|null
1031
+	 */
1032
+	public function get_active_message_type($messenger, $message_type)
1033
+	{
1034
+		// EE_messages has been deprecated
1035
+		$this->_class_is_deprecated(__FUNCTION__);
1036
+		return $this->_message_resource_manager->get_active_message_type_for_messenger($messenger, $message_type);
1037
+	}
1038
+
1039
+
1040
+	/**
1041
+	 * @deprecated 4.9.0
1042
+	 * @return array|\EE_message_type[]
1043
+	 */
1044
+	public function get_installed_message_types()
1045
+	{
1046
+		// EE_messages has been deprecated
1047
+		$this->_class_is_deprecated(__FUNCTION__);
1048
+		return $this->_message_resource_manager->installed_message_types();
1049
+	}
1050
+
1051
+
1052
+	/**
1053
+	 * @deprecated 4.9.0
1054
+	 * @return array
1055
+	 */
1056
+	public function get_installed_messengers()
1057
+	{
1058
+		// EE_messages has been deprecated
1059
+		$this->_class_is_deprecated(__FUNCTION__);
1060
+		return $this->_message_resource_manager->installed_messengers();
1061
+	}
1062
+
1063
+
1064
+	/**
1065
+	 * @deprecated 4.9.0
1066
+	 * @param   bool $slugs_only Whether to return an array of just slugs and labels (true) or all contexts indexed by
1067
+	 *                           message type.
1068
+	 * @return array
1069
+	 */
1070
+	public function get_all_contexts($slugs_only = true)
1071
+	{
1072
+		// EE_messages has been deprecated
1073
+		$this->_class_is_deprecated(__FUNCTION__);
1074
+		return $this->_message_resource_manager->get_all_contexts($slugs_only);
1075
+	}
1076 1076
 
1077 1077
 
1078 1078
 }
@@ -1131,88 +1131,88 @@  discard block
 block discarded – undo
1131 1131
 
1132 1132
 
1133 1133
 add_filter(
1134
-    'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__css',
1135
-    function ($event_list_iframe_css) {
1136
-        if (! has_filter('FHEE__EventsArchiveIframe__event_list_iframe__css')) {
1137
-            return $event_list_iframe_css;
1138
-        }
1139
-        deprecated_espresso_action_or_filter_doing_it_wrong(
1140
-            'FHEE__EventsArchiveIframe__event_list_iframe__css',
1141
-            'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__css',
1142
-            '\EventEspresso\modules\events_archive\EventsArchiveIframe::display()',
1143
-            '4.9.14',
1144
-            '5.0.0',
1145
-            'filter'
1146
-        );
1147
-        return apply_filters(
1148
-            'FHEE__EventsArchiveIframe__event_list_iframe__css',
1149
-            $event_list_iframe_css
1150
-        );
1151
-    }
1134
+	'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__css',
1135
+	function ($event_list_iframe_css) {
1136
+		if (! has_filter('FHEE__EventsArchiveIframe__event_list_iframe__css')) {
1137
+			return $event_list_iframe_css;
1138
+		}
1139
+		deprecated_espresso_action_or_filter_doing_it_wrong(
1140
+			'FHEE__EventsArchiveIframe__event_list_iframe__css',
1141
+			'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__css',
1142
+			'\EventEspresso\modules\events_archive\EventsArchiveIframe::display()',
1143
+			'4.9.14',
1144
+			'5.0.0',
1145
+			'filter'
1146
+		);
1147
+		return apply_filters(
1148
+			'FHEE__EventsArchiveIframe__event_list_iframe__css',
1149
+			$event_list_iframe_css
1150
+		);
1151
+	}
1152 1152
 );
1153 1153
 add_filter(
1154
-    'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__js',
1155
-    function ($event_list_iframe_js) {
1156
-        if (! has_filter('FHEE__EED_Ticket_Selector__ticket_selector_iframe__js')) {
1157
-            return $event_list_iframe_js;
1158
-        }
1159
-        deprecated_espresso_action_or_filter_doing_it_wrong(
1160
-            'FHEE__EED_Ticket_Selector__ticket_selector_iframe__js',
1161
-            'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__js',
1162
-            '\EventEspresso\modules\events_archive\EventsArchiveIframe::display()',
1163
-            '4.9.14',
1164
-            '5.0.0',
1165
-            'filter'
1166
-        );
1167
-        return apply_filters(
1168
-            'FHEE__EED_Ticket_Selector__ticket_selector_iframe__js',
1169
-            $event_list_iframe_js
1170
-        );
1171
-    }
1154
+	'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__js',
1155
+	function ($event_list_iframe_js) {
1156
+		if (! has_filter('FHEE__EED_Ticket_Selector__ticket_selector_iframe__js')) {
1157
+			return $event_list_iframe_js;
1158
+		}
1159
+		deprecated_espresso_action_or_filter_doing_it_wrong(
1160
+			'FHEE__EED_Ticket_Selector__ticket_selector_iframe__js',
1161
+			'FHEE__EventEspresso_modules_events_archive_EventsArchiveIframe__display__js',
1162
+			'\EventEspresso\modules\events_archive\EventsArchiveIframe::display()',
1163
+			'4.9.14',
1164
+			'5.0.0',
1165
+			'filter'
1166
+		);
1167
+		return apply_filters(
1168
+			'FHEE__EED_Ticket_Selector__ticket_selector_iframe__js',
1169
+			$event_list_iframe_js
1170
+		);
1171
+	}
1172 1172
 );
1173 1173
 add_action(
1174
-    'AHEE__EE_Capabilities__addCaps__complete',
1175
-    function ($capabilities_map) {
1176
-        if (! has_action('AHEE__EE_Capabilities__init_role_caps__complete')) {
1177
-            return;
1178
-        }
1179
-        deprecated_espresso_action_or_filter_doing_it_wrong(
1180
-            'AHEE__EE_Capabilities__init_role_caps__complete',
1181
-            'AHEE__EE_Capabilities__addCaps__complete',
1182
-            '\EE_Capabilities::addCaps()',
1183
-            '4.9.42',
1184
-            '5.0.0'
1185
-        );
1186
-        do_action(
1187
-            'AHEE__EE_Capabilities__init_role_caps__complete',
1188
-            $capabilities_map
1189
-        );
1190
-    }
1174
+	'AHEE__EE_Capabilities__addCaps__complete',
1175
+	function ($capabilities_map) {
1176
+		if (! has_action('AHEE__EE_Capabilities__init_role_caps__complete')) {
1177
+			return;
1178
+		}
1179
+		deprecated_espresso_action_or_filter_doing_it_wrong(
1180
+			'AHEE__EE_Capabilities__init_role_caps__complete',
1181
+			'AHEE__EE_Capabilities__addCaps__complete',
1182
+			'\EE_Capabilities::addCaps()',
1183
+			'4.9.42',
1184
+			'5.0.0'
1185
+		);
1186
+		do_action(
1187
+			'AHEE__EE_Capabilities__init_role_caps__complete',
1188
+			$capabilities_map
1189
+		);
1190
+	}
1191 1191
 );
1192 1192
 
1193 1193
 add_filter(
1194
-    'FHEE_EventEspresso_core_services_commands_attendee_CreateAttendeeCommandHandler__findExistingAttendee__existing_attendee',
1195
-    function ($existing_attendee, $registration, $attendee_data) {
1196
-        if (! has_filter('FHEE_EE_Single_Page_Checkout__save_registration_items__find_existing_attendee')) {
1197
-            return $existing_attendee;
1198
-        }
1199
-        deprecated_espresso_action_or_filter_doing_it_wrong(
1200
-            'FHEE_EE_Single_Page_Checkout__save_registration_items__find_existing_attendee',
1201
-            'FHEE_EventEspresso_core_services_commands_attendee_CreateAttendeeCommandHandler__findExistingAttendee__existing_attendee',
1202
-            '\EventEspresso\core\services\commands\attendee\CreateAttendeeCommandHandler::findExistingAttendee()',
1203
-            '4.9.34',
1204
-            '5.0.0',
1205
-            'filter'
1206
-        );
1207
-        return apply_filters(
1208
-            'FHEE_EE_Single_Page_Checkout__save_registration_items__find_existing_attendee',
1209
-            $existing_attendee,
1210
-            $registration,
1211
-            $attendee_data
1212
-        );
1213
-    },
1214
-    10,
1215
-    3
1194
+	'FHEE_EventEspresso_core_services_commands_attendee_CreateAttendeeCommandHandler__findExistingAttendee__existing_attendee',
1195
+	function ($existing_attendee, $registration, $attendee_data) {
1196
+		if (! has_filter('FHEE_EE_Single_Page_Checkout__save_registration_items__find_existing_attendee')) {
1197
+			return $existing_attendee;
1198
+		}
1199
+		deprecated_espresso_action_or_filter_doing_it_wrong(
1200
+			'FHEE_EE_Single_Page_Checkout__save_registration_items__find_existing_attendee',
1201
+			'FHEE_EventEspresso_core_services_commands_attendee_CreateAttendeeCommandHandler__findExistingAttendee__existing_attendee',
1202
+			'\EventEspresso\core\services\commands\attendee\CreateAttendeeCommandHandler::findExistingAttendee()',
1203
+			'4.9.34',
1204
+			'5.0.0',
1205
+			'filter'
1206
+		);
1207
+		return apply_filters(
1208
+			'FHEE_EE_Single_Page_Checkout__save_registration_items__find_existing_attendee',
1209
+			$existing_attendee,
1210
+			$registration,
1211
+			$attendee_data
1212
+		);
1213
+	},
1214
+	10,
1215
+	3
1216 1216
 );
1217 1217
 
1218 1218
 /**
@@ -1223,88 +1223,88 @@  discard block
 block discarded – undo
1223 1223
 class EE_Event_List_Query extends WP_Query
1224 1224
 {
1225 1225
 
1226
-    private $title;
1227
-
1228
-    private $css_class;
1229
-
1230
-    private $category_slug;
1231
-
1232
-    /**
1233
-     * EE_Event_List_Query constructor.
1234
-     *
1235
-     * @param array $args
1236
-     */
1237
-    public function __construct($args = array())
1238
-    {
1239
-        \EE_Error::doing_it_wrong(
1240
-            __METHOD__,
1241
-            __(
1242
-                'Usage is deprecated. Please use \EventEspresso\core\domain\services\wp_queries\EventListQuery instead.',
1243
-                'event_espresso'
1244
-            ),
1245
-            '4.9.27',
1246
-            '5.0.0'
1247
-        );
1248
-        $this->title = isset($args['title']) ? $args['title'] : '';
1249
-        $this->css_class = isset($args['css_class']) ? $args['css_class'] : '';
1250
-        $this->category_slug = isset($args['category_slug']) ? $args['category_slug'] : '';
1251
-        $limit = isset($args['limit']) && absint($args['limit']) ? $args['limit'] : 10;
1252
-        // the current "page" we are viewing
1253
-        $paged = max(1, get_query_var('paged'));
1254
-        // Force these args
1255
-        $args = array_merge(
1256
-            $args,
1257
-            array(
1258
-                'post_type'              => 'espresso_events',
1259
-                'posts_per_page'         => $limit,
1260
-                'update_post_term_cache' => false,
1261
-                'update_post_meta_cache' => false,
1262
-                'paged'                  => $paged,
1263
-                'offset'                 => ($paged - 1) * $limit,
1264
-            )
1265
-        );
1266
-        // run the query
1267
-        parent::__construct($args);
1268
-    }
1269
-
1270
-
1271
-    /**
1272
-     * event_list_title
1273
-     *
1274
-     * @param string $event_list_title
1275
-     * @return string
1276
-     */
1277
-    public function event_list_title($event_list_title = '')
1278
-    {
1279
-        if (! empty($this->title)) {
1280
-            return $this->title;
1281
-        }
1282
-        return $event_list_title;
1283
-    }
1284
-
1285
-
1286
-    /**
1287
-     * event_list_css
1288
-     *
1289
-     * @param string $event_list_css
1290
-     * @return string
1291
-     */
1292
-    public function event_list_css($event_list_css = '')
1293
-    {
1294
-        $event_list_css .= ! empty($event_list_css)
1295
-            ? ' '
1296
-            : '';
1297
-        $event_list_css .= ! empty($this->css_class)
1298
-            ? $this->css_class
1299
-            : '';
1300
-        $event_list_css .= ! empty($event_list_css)
1301
-            ? ' '
1302
-            : '';
1303
-        $event_list_css .= ! empty($this->category_slug)
1304
-            ? $this->category_slug
1305
-            : '';
1306
-        return $event_list_css;
1307
-    }
1226
+	private $title;
1227
+
1228
+	private $css_class;
1229
+
1230
+	private $category_slug;
1231
+
1232
+	/**
1233
+	 * EE_Event_List_Query constructor.
1234
+	 *
1235
+	 * @param array $args
1236
+	 */
1237
+	public function __construct($args = array())
1238
+	{
1239
+		\EE_Error::doing_it_wrong(
1240
+			__METHOD__,
1241
+			__(
1242
+				'Usage is deprecated. Please use \EventEspresso\core\domain\services\wp_queries\EventListQuery instead.',
1243
+				'event_espresso'
1244
+			),
1245
+			'4.9.27',
1246
+			'5.0.0'
1247
+		);
1248
+		$this->title = isset($args['title']) ? $args['title'] : '';
1249
+		$this->css_class = isset($args['css_class']) ? $args['css_class'] : '';
1250
+		$this->category_slug = isset($args['category_slug']) ? $args['category_slug'] : '';
1251
+		$limit = isset($args['limit']) && absint($args['limit']) ? $args['limit'] : 10;
1252
+		// the current "page" we are viewing
1253
+		$paged = max(1, get_query_var('paged'));
1254
+		// Force these args
1255
+		$args = array_merge(
1256
+			$args,
1257
+			array(
1258
+				'post_type'              => 'espresso_events',
1259
+				'posts_per_page'         => $limit,
1260
+				'update_post_term_cache' => false,
1261
+				'update_post_meta_cache' => false,
1262
+				'paged'                  => $paged,
1263
+				'offset'                 => ($paged - 1) * $limit,
1264
+			)
1265
+		);
1266
+		// run the query
1267
+		parent::__construct($args);
1268
+	}
1269
+
1270
+
1271
+	/**
1272
+	 * event_list_title
1273
+	 *
1274
+	 * @param string $event_list_title
1275
+	 * @return string
1276
+	 */
1277
+	public function event_list_title($event_list_title = '')
1278
+	{
1279
+		if (! empty($this->title)) {
1280
+			return $this->title;
1281
+		}
1282
+		return $event_list_title;
1283
+	}
1284
+
1285
+
1286
+	/**
1287
+	 * event_list_css
1288
+	 *
1289
+	 * @param string $event_list_css
1290
+	 * @return string
1291
+	 */
1292
+	public function event_list_css($event_list_css = '')
1293
+	{
1294
+		$event_list_css .= ! empty($event_list_css)
1295
+			? ' '
1296
+			: '';
1297
+		$event_list_css .= ! empty($this->css_class)
1298
+			? $this->css_class
1299
+			: '';
1300
+		$event_list_css .= ! empty($event_list_css)
1301
+			? ' '
1302
+			: '';
1303
+		$event_list_css .= ! empty($this->category_slug)
1304
+			? $this->category_slug
1305
+			: '';
1306
+		return $event_list_css;
1307
+	}
1308 1308
 
1309 1309
 }
1310 1310
 
@@ -1321,75 +1321,75 @@  discard block
 block discarded – undo
1321 1321
 {
1322 1322
 
1323 1323
 
1324
-    /**
1325
-     *    class constructor
1326
-     *
1327
-     * @deprecated 4.9.59.p
1328
-     */
1329
-    public function __construct()
1330
-    {
1331
-        EE_Error::doing_it_wrong(
1332
-            __METHOD__,
1333
-            sprintf(
1334
-                esc_html__('%1$s has been replaced by %2$s.', 'event_espresso'),
1335
-                __CLASS__,
1336
-                'EventEspresso\core\services\licensing\LicenseServices'
1337
-            ),
1338
-            '4.9.59.p'
1339
-        );
1340
-    }
1341
-
1342
-
1343
-    /**
1344
-     * The purpose of this function is to display information about Event Espresso data collection
1345
-     * and a optin selection for extra data collecting by users.
1346
-     *
1347
-     * @param bool $extra
1348
-     * @return string html.
1349
-     * @deprecated 4.9.59.p
1350
-     */
1351
-    public static function espresso_data_collection_optin_text($extra = true)
1352
-    {
1353
-        EE_Error::doing_it_wrong(
1354
-            __METHOD__,
1355
-            sprintf(
1356
-                esc_html__('%1$s has been replaced by %2$s.', 'event_espresso'),
1357
-                __METHOD__,
1358
-                'EventEspresso\core\domain\services\Stats::optinText'
1359
-            ),
1360
-            '4.9.59.p'
1361
-        );
1362
-        Stats::optinText($extra);
1363
-    }
1364
-
1365
-    /**
1366
-     * This is a handy helper method for retrieving whether there is an update available for the given plugin.
1367
-     *
1368
-     * @param  string $basename Use the equivalent result from plugin_basename() for this param as WP uses that to
1369
-     *                          identify plugins. Defaults to core update
1370
-     * @return boolean           True if update available, false if not.
1371
-     * @deprecated 4.9.59.p
1372
-     */
1373
-    public static function is_update_available($basename = '')
1374
-    {
1375
-        EE_Error::doing_it_wrong(
1376
-            __METHOD__,
1377
-            sprintf(
1378
-                esc_html__('%1$s has been replaced by %2$s.', 'event_espresso'),
1379
-                __METHOD__,
1380
-                'EventEspresso\core\services\licensing\LicenseService::isUpdateAvailable'
1381
-            ),
1382
-            '4.9.59.p'
1383
-        );
1384
-        return LicenseService::isUpdateAvailable($basename);
1385
-    }
1324
+	/**
1325
+	 *    class constructor
1326
+	 *
1327
+	 * @deprecated 4.9.59.p
1328
+	 */
1329
+	public function __construct()
1330
+	{
1331
+		EE_Error::doing_it_wrong(
1332
+			__METHOD__,
1333
+			sprintf(
1334
+				esc_html__('%1$s has been replaced by %2$s.', 'event_espresso'),
1335
+				__CLASS__,
1336
+				'EventEspresso\core\services\licensing\LicenseServices'
1337
+			),
1338
+			'4.9.59.p'
1339
+		);
1340
+	}
1341
+
1342
+
1343
+	/**
1344
+	 * The purpose of this function is to display information about Event Espresso data collection
1345
+	 * and a optin selection for extra data collecting by users.
1346
+	 *
1347
+	 * @param bool $extra
1348
+	 * @return string html.
1349
+	 * @deprecated 4.9.59.p
1350
+	 */
1351
+	public static function espresso_data_collection_optin_text($extra = true)
1352
+	{
1353
+		EE_Error::doing_it_wrong(
1354
+			__METHOD__,
1355
+			sprintf(
1356
+				esc_html__('%1$s has been replaced by %2$s.', 'event_espresso'),
1357
+				__METHOD__,
1358
+				'EventEspresso\core\domain\services\Stats::optinText'
1359
+			),
1360
+			'4.9.59.p'
1361
+		);
1362
+		Stats::optinText($extra);
1363
+	}
1364
+
1365
+	/**
1366
+	 * This is a handy helper method for retrieving whether there is an update available for the given plugin.
1367
+	 *
1368
+	 * @param  string $basename Use the equivalent result from plugin_basename() for this param as WP uses that to
1369
+	 *                          identify plugins. Defaults to core update
1370
+	 * @return boolean           True if update available, false if not.
1371
+	 * @deprecated 4.9.59.p
1372
+	 */
1373
+	public static function is_update_available($basename = '')
1374
+	{
1375
+		EE_Error::doing_it_wrong(
1376
+			__METHOD__,
1377
+			sprintf(
1378
+				esc_html__('%1$s has been replaced by %2$s.', 'event_espresso'),
1379
+				__METHOD__,
1380
+				'EventEspresso\core\services\licensing\LicenseService::isUpdateAvailable'
1381
+			),
1382
+			'4.9.59.p'
1383
+		);
1384
+		return LicenseService::isUpdateAvailable($basename);
1385
+	}
1386 1386
 }
1387 1387
 
1388 1388
 add_filter(
1389
-    'FHEE__EventEspressoBatchRequest__JobHandlers__RegistrationsReport__reg_csv_array',
1390
-    'ee_deprecated_registrations_report_csv_legacy_fields',
1391
-    10,
1392
-    2
1389
+	'FHEE__EventEspressoBatchRequest__JobHandlers__RegistrationsReport__reg_csv_array',
1390
+	'ee_deprecated_registrations_report_csv_legacy_fields',
1391
+	10,
1392
+	2
1393 1393
 );
1394 1394
 /**
1395 1395
  * Filters the CSV row to make it appear like the old labels (which were "$pretty_name[$field_name]").
@@ -1406,96 +1406,96 @@  discard block
 block discarded – undo
1406 1406
  */
1407 1407
 function ee_deprecated_registrations_report_csv_legacy_fields($csv_row_data, $reg_row)
1408 1408
 {
1409
-    // no need for all this if nobody is using the deprecated filter
1410
-    if (has_filter('FHEE__EE_Export__report_registrations__reg_csv_array')) {
1411
-        EE_Error::doing_it_wrong(
1412
-            __FUNCTION__,
1413
-            sprintf(
1414
-                // EE_Error::doing_it_wrong with escape HTML, so don't escape it twice by doing it here too.
1415
-                _x(
1416
-                    'The filter "%1$s" has been deprecated. Please use "%2$s" instead.',
1417
-                    'The filter "FHEE__EE_Export__report_registrations__reg_csv_array" has been deprecated. Please use "FHEE__EventEspressoBatchRequest__JobHandlers__RegistrationsReport__reg_csv_array" instead.',
1418
-                    'event_espresso'
1419
-                ),
1420
-                'FHEE__EE_Export__report_registrations__reg_csv_array',
1421
-                'FHEE__EventEspressoBatchRequest__JobHandlers__RegistrationsReport__reg_csv_array'
1422
-            ),
1423
-            '4.9.69.p',
1424
-            '4.9.75.p'
1425
-        );
1426
-        // there's code that expected the old csv column headers/labels. Let's oblige. Put it back in the old format!
1427
-        // first: what model fields might be used as column headers? (whose format we need to change)
1428
-        $model_fields = array_merge(
1429
-            EEM_Registration::instance()->field_settings(),
1430
-            EEM_Attendee::instance()->field_settings()
1431
-        );
1432
-        // create an array that uses the legacy column headers/labels.
1433
-        $new_csv_row = array();
1434
-        foreach ($csv_row_data as $label => $value) {
1435
-            $new_label = $label;
1436
-            foreach ($model_fields as $field) {
1437
-                if ($label === EEH_Export::get_column_name_for_field($field)) {
1438
-                    // re-add the old field name
1439
-                    $new_label = $label . '[' . $field->get_name() . ']';
1440
-                    break;
1441
-                }
1442
-            }
1443
-            $new_csv_row[$new_label] = $value;
1444
-        }
1445
-        // before we run it through the deprecated filter, set the method `EEH_Export::get_column_name_for_field()`
1446
-        // to create the old column names, because that's what's in the row temporarily
1447
-        add_filter(
1448
-            'FHEE__EEH_Export__get_column_name_for_field__add_field_name',
1449
-            '__return_true',
1450
-            777
1451
-        );
1452
-        // now, those old filters can be run on this data. Have fun!
1453
-        /**
1454
-         * Deprecated. Use FHEE__EventEspressoBatchRequest__JobHandlers__RegistrationsReport__reg_csv_array instead.
1455
-         *
1456
-         * Filter to change the contents of each row of the registrations report CSV file.
1457
-         * This can be used to add or remote columns from the CSV file, or change their values.                 *
1458
-         * Note: it has this name because originally that's where this filter resided,
1459
-         * and we've left its name as-is for backward compatibility.
1460
-         * Note when using: all rows in the CSV should have the same columns.
1461
-         *
1462
-         * @param array $reg_csv_array keys are column-header names, and values are that columns' value
1463
-         *                             in this row
1464
-         * @param array $reg_row is the row from the database's wp_esp_registration table
1465
-         */
1466
-        $updated_row = apply_filters(
1467
-            'FHEE__EE_Export__report_registrations__reg_csv_array',
1468
-            $new_csv_row,
1469
-            $reg_row
1470
-        );
1471
-
1472
-        // ok now we can revert to normal for EEH_Export::get_column_name_for_field().
1473
-        remove_filter(
1474
-            'FHEE__EEH_Export__get_column_name_for_field__add_field_name',
1475
-            '__return_true',
1476
-            777
1477
-        );
1478
-
1479
-        // great. Now that the old filters are done, we can remove the ugly square brackets from column headers/labels.
1480
-        $updated_and_restored_row = array();
1481
-        foreach ($updated_row as $label => $value) {
1482
-            $matches = array();
1483
-            if (preg_match(
1484
-                    '~([^\[]*)\[(.*)\]~',
1485
-                    $label,
1486
-                    $matches
1487
-                )
1488
-                && isset(
1489
-                    $matches[0],
1490
-                    $matches[1],
1491
-                    $matches[2]
1492
-                )
1493
-            ) {
1494
-                $label = $matches[1];
1495
-            }
1496
-            $updated_and_restored_row[$label] = $value;
1497
-        }
1498
-        $csv_row_data = $updated_and_restored_row;
1499
-    }
1500
-    return $csv_row_data;
1409
+	// no need for all this if nobody is using the deprecated filter
1410
+	if (has_filter('FHEE__EE_Export__report_registrations__reg_csv_array')) {
1411
+		EE_Error::doing_it_wrong(
1412
+			__FUNCTION__,
1413
+			sprintf(
1414
+				// EE_Error::doing_it_wrong with escape HTML, so don't escape it twice by doing it here too.
1415
+				_x(
1416
+					'The filter "%1$s" has been deprecated. Please use "%2$s" instead.',
1417
+					'The filter "FHEE__EE_Export__report_registrations__reg_csv_array" has been deprecated. Please use "FHEE__EventEspressoBatchRequest__JobHandlers__RegistrationsReport__reg_csv_array" instead.',
1418
+					'event_espresso'
1419
+				),
1420
+				'FHEE__EE_Export__report_registrations__reg_csv_array',
1421
+				'FHEE__EventEspressoBatchRequest__JobHandlers__RegistrationsReport__reg_csv_array'
1422
+			),
1423
+			'4.9.69.p',
1424
+			'4.9.75.p'
1425
+		);
1426
+		// there's code that expected the old csv column headers/labels. Let's oblige. Put it back in the old format!
1427
+		// first: what model fields might be used as column headers? (whose format we need to change)
1428
+		$model_fields = array_merge(
1429
+			EEM_Registration::instance()->field_settings(),
1430
+			EEM_Attendee::instance()->field_settings()
1431
+		);
1432
+		// create an array that uses the legacy column headers/labels.
1433
+		$new_csv_row = array();
1434
+		foreach ($csv_row_data as $label => $value) {
1435
+			$new_label = $label;
1436
+			foreach ($model_fields as $field) {
1437
+				if ($label === EEH_Export::get_column_name_for_field($field)) {
1438
+					// re-add the old field name
1439
+					$new_label = $label . '[' . $field->get_name() . ']';
1440
+					break;
1441
+				}
1442
+			}
1443
+			$new_csv_row[$new_label] = $value;
1444
+		}
1445
+		// before we run it through the deprecated filter, set the method `EEH_Export::get_column_name_for_field()`
1446
+		// to create the old column names, because that's what's in the row temporarily
1447
+		add_filter(
1448
+			'FHEE__EEH_Export__get_column_name_for_field__add_field_name',
1449
+			'__return_true',
1450
+			777
1451
+		);
1452
+		// now, those old filters can be run on this data. Have fun!
1453
+		/**
1454
+		 * Deprecated. Use FHEE__EventEspressoBatchRequest__JobHandlers__RegistrationsReport__reg_csv_array instead.
1455
+		 *
1456
+		 * Filter to change the contents of each row of the registrations report CSV file.
1457
+		 * This can be used to add or remote columns from the CSV file, or change their values.                 *
1458
+		 * Note: it has this name because originally that's where this filter resided,
1459
+		 * and we've left its name as-is for backward compatibility.
1460
+		 * Note when using: all rows in the CSV should have the same columns.
1461
+		 *
1462
+		 * @param array $reg_csv_array keys are column-header names, and values are that columns' value
1463
+		 *                             in this row
1464
+		 * @param array $reg_row is the row from the database's wp_esp_registration table
1465
+		 */
1466
+		$updated_row = apply_filters(
1467
+			'FHEE__EE_Export__report_registrations__reg_csv_array',
1468
+			$new_csv_row,
1469
+			$reg_row
1470
+		);
1471
+
1472
+		// ok now we can revert to normal for EEH_Export::get_column_name_for_field().
1473
+		remove_filter(
1474
+			'FHEE__EEH_Export__get_column_name_for_field__add_field_name',
1475
+			'__return_true',
1476
+			777
1477
+		);
1478
+
1479
+		// great. Now that the old filters are done, we can remove the ugly square brackets from column headers/labels.
1480
+		$updated_and_restored_row = array();
1481
+		foreach ($updated_row as $label => $value) {
1482
+			$matches = array();
1483
+			if (preg_match(
1484
+					'~([^\[]*)\[(.*)\]~',
1485
+					$label,
1486
+					$matches
1487
+				)
1488
+				&& isset(
1489
+					$matches[0],
1490
+					$matches[1],
1491
+					$matches[2]
1492
+				)
1493
+			) {
1494
+				$label = $matches[1];
1495
+			}
1496
+			$updated_and_restored_row[$label] = $value;
1497
+		}
1498
+		$csv_row_data = $updated_and_restored_row;
1499
+	}
1500
+	return $csv_row_data;
1501 1501
 }
1502 1502
\ No newline at end of file
Please login to merge, or discard this patch.
core/EE_Object_Collection.core.php 3 patches
Doc Comments   +1 added lines patch added patch discarded remove patch
@@ -84,6 +84,7 @@
 block discarded – undo
84 84
      *
85 85
      * @access public
86 86
      * @param mixed
87
+     * @param string $info
87 88
      * @return null | object
88 89
      */
89 90
     public function get_by_info($info)
Please login to merge, or discard this patch.
Indentation   +156 added lines, -156 removed lines patch added patch discarded remove patch
@@ -16,160 +16,160 @@
 block discarded – undo
16 16
 abstract class EE_Object_Collection extends SplObjectStorage implements EEI_Collection
17 17
 {
18 18
 
19
-    /**
20
-     * an interface (or class) name to be used for restricting the type of objects added to the storage
21
-     * this should be set from within the child class constructor
22
-     *
23
-     * @type string $interface
24
-     */
25
-    protected $interface;
26
-
27
-
28
-    /**
29
-     * add
30
-     *
31
-     * attaches an object to the Collection
32
-     * and sets any supplied data associated with the current iterator entry
33
-     * by calling EE_Object_Collection::set_info()
34
-     *
35
-     * @access public
36
-     * @param object $object
37
-     * @param mixed  $info
38
-     * @return bool
39
-     */
40
-    public function add($object, $info = null)
41
-    {
42
-        $class = $this->interface;
43
-        if (! $object instanceof $class) {
44
-            return false;
45
-        }
46
-        $this->attach($object);
47
-        $this->set_info($object, $info);
48
-        return $this->contains($object);
49
-    }
50
-
51
-
52
-    /**
53
-     * set_info
54
-     *
55
-     * Sets the data associated with an object in the Collection
56
-     * if no $info is supplied, then the spl_object_hash() is used
57
-     *
58
-     * @access public
59
-     * @param object $object
60
-     * @param mixed  $info
61
-     * @return bool
62
-     */
63
-    public function set_info($object, $info = null)
64
-    {
65
-        $info = ! empty($info) ? $info : spl_object_hash($object);
66
-        $this->rewind();
67
-        while ($this->valid()) {
68
-            if ($object == $this->current()) {
69
-                $this->setInfo($info);
70
-                $this->rewind();
71
-                return true;
72
-            }
73
-            $this->next();
74
-        }
75
-        return false;
76
-    }
77
-
78
-
79
-    /**
80
-     * get_by_info
81
-     *
82
-     * finds and returns an object in the Collection based on the info that was set using addObject()
83
-     * PLZ NOTE: the pointer is reset to the beginning of the collection before returning
84
-     *
85
-     * @access public
86
-     * @param mixed
87
-     * @return null | object
88
-     */
89
-    public function get_by_info($info)
90
-    {
91
-        $this->rewind();
92
-        while ($this->valid()) {
93
-            if ($info === $this->getInfo()) {
94
-                $object = $this->current();
95
-                $this->rewind();
96
-                return $object;
97
-            }
98
-            $this->next();
99
-        }
100
-        return null;
101
-    }
102
-
103
-
104
-    /**
105
-     * has
106
-     *
107
-     * returns TRUE or FALSE depending on whether the supplied object is within the Collection
108
-     *
109
-     * @access public
110
-     * @param object $object
111
-     * @return bool
112
-     */
113
-    public function has($object)
114
-    {
115
-        return $this->contains($object);
116
-    }
117
-
118
-
119
-    /**
120
-     * remove
121
-     *
122
-     * detaches an object from the Collection
123
-     *
124
-     * @access public
125
-     * @param $object
126
-     * @return bool
127
-     */
128
-    public function remove($object)
129
-    {
130
-        $this->detach($object);
131
-        return true;
132
-    }
133
-
134
-
135
-    /**
136
-     * set_current
137
-     *
138
-     * advances pointer to the provided object
139
-     *
140
-     * @access public
141
-     * @param $object
142
-     * @return void
143
-     */
144
-    public function set_current($object)
145
-    {
146
-        $this->rewind();
147
-        while ($this->valid()) {
148
-            if ($this->current() === $object) {
149
-                break;
150
-            }
151
-            $this->next();
152
-        }
153
-    }
154
-
155
-
156
-    /**
157
-     * set_current_by_info
158
-     *
159
-     * advances pointer to the object whose info matches that which was provided
160
-     *
161
-     * @access public
162
-     * @param $info
163
-     * @return void
164
-     */
165
-    public function set_current_by_info($info)
166
-    {
167
-        $this->rewind();
168
-        while ($this->valid()) {
169
-            if ($info === $this->getInfo()) {
170
-                break;
171
-            }
172
-            $this->next();
173
-        }
174
-    }
19
+	/**
20
+	 * an interface (or class) name to be used for restricting the type of objects added to the storage
21
+	 * this should be set from within the child class constructor
22
+	 *
23
+	 * @type string $interface
24
+	 */
25
+	protected $interface;
26
+
27
+
28
+	/**
29
+	 * add
30
+	 *
31
+	 * attaches an object to the Collection
32
+	 * and sets any supplied data associated with the current iterator entry
33
+	 * by calling EE_Object_Collection::set_info()
34
+	 *
35
+	 * @access public
36
+	 * @param object $object
37
+	 * @param mixed  $info
38
+	 * @return bool
39
+	 */
40
+	public function add($object, $info = null)
41
+	{
42
+		$class = $this->interface;
43
+		if (! $object instanceof $class) {
44
+			return false;
45
+		}
46
+		$this->attach($object);
47
+		$this->set_info($object, $info);
48
+		return $this->contains($object);
49
+	}
50
+
51
+
52
+	/**
53
+	 * set_info
54
+	 *
55
+	 * Sets the data associated with an object in the Collection
56
+	 * if no $info is supplied, then the spl_object_hash() is used
57
+	 *
58
+	 * @access public
59
+	 * @param object $object
60
+	 * @param mixed  $info
61
+	 * @return bool
62
+	 */
63
+	public function set_info($object, $info = null)
64
+	{
65
+		$info = ! empty($info) ? $info : spl_object_hash($object);
66
+		$this->rewind();
67
+		while ($this->valid()) {
68
+			if ($object == $this->current()) {
69
+				$this->setInfo($info);
70
+				$this->rewind();
71
+				return true;
72
+			}
73
+			$this->next();
74
+		}
75
+		return false;
76
+	}
77
+
78
+
79
+	/**
80
+	 * get_by_info
81
+	 *
82
+	 * finds and returns an object in the Collection based on the info that was set using addObject()
83
+	 * PLZ NOTE: the pointer is reset to the beginning of the collection before returning
84
+	 *
85
+	 * @access public
86
+	 * @param mixed
87
+	 * @return null | object
88
+	 */
89
+	public function get_by_info($info)
90
+	{
91
+		$this->rewind();
92
+		while ($this->valid()) {
93
+			if ($info === $this->getInfo()) {
94
+				$object = $this->current();
95
+				$this->rewind();
96
+				return $object;
97
+			}
98
+			$this->next();
99
+		}
100
+		return null;
101
+	}
102
+
103
+
104
+	/**
105
+	 * has
106
+	 *
107
+	 * returns TRUE or FALSE depending on whether the supplied object is within the Collection
108
+	 *
109
+	 * @access public
110
+	 * @param object $object
111
+	 * @return bool
112
+	 */
113
+	public function has($object)
114
+	{
115
+		return $this->contains($object);
116
+	}
117
+
118
+
119
+	/**
120
+	 * remove
121
+	 *
122
+	 * detaches an object from the Collection
123
+	 *
124
+	 * @access public
125
+	 * @param $object
126
+	 * @return bool
127
+	 */
128
+	public function remove($object)
129
+	{
130
+		$this->detach($object);
131
+		return true;
132
+	}
133
+
134
+
135
+	/**
136
+	 * set_current
137
+	 *
138
+	 * advances pointer to the provided object
139
+	 *
140
+	 * @access public
141
+	 * @param $object
142
+	 * @return void
143
+	 */
144
+	public function set_current($object)
145
+	{
146
+		$this->rewind();
147
+		while ($this->valid()) {
148
+			if ($this->current() === $object) {
149
+				break;
150
+			}
151
+			$this->next();
152
+		}
153
+	}
154
+
155
+
156
+	/**
157
+	 * set_current_by_info
158
+	 *
159
+	 * advances pointer to the object whose info matches that which was provided
160
+	 *
161
+	 * @access public
162
+	 * @param $info
163
+	 * @return void
164
+	 */
165
+	public function set_current_by_info($info)
166
+	{
167
+		$this->rewind();
168
+		while ($this->valid()) {
169
+			if ($info === $this->getInfo()) {
170
+				break;
171
+			}
172
+			$this->next();
173
+		}
174
+	}
175 175
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -40,7 +40,7 @@
 block discarded – undo
40 40
     public function add($object, $info = null)
41 41
     {
42 42
         $class = $this->interface;
43
-        if (! $object instanceof $class) {
43
+        if ( ! $object instanceof $class) {
44 44
             return false;
45 45
         }
46 46
         $this->attach($object);
Please login to merge, or discard this patch.
core/helpers/EEH_Event_View.helper.php 3 patches
Doc Comments   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -22,7 +22,7 @@  discard block
 block discarded – undo
22 22
      * get_event
23 23
      * attempts to retrieve an EE_Event object any way it can
24 24
      *
25
-     * @param int|WP_Post $EVT_ID
25
+     * @param integer $EVT_ID
26 26
      * @return EE_Event|null
27 27
      * @throws \EE_Error
28 28
      */
@@ -115,7 +115,7 @@  discard block
 block discarded – undo
115 115
      *
116 116
      *  @access     public
117 117
      * @param    int $EVT_ID
118
-     *  @return     string
118
+     *  @return     boolean
119 119
      */
120 120
     public static function event_has_content_or_excerpt($EVT_ID = 0)
121 121
     {
@@ -136,7 +136,7 @@  discard block
 block discarded – undo
136 136
      *    event_active_status
137 137
      *
138 138
      * @access    public
139
-     * @param null $num_words
139
+     * @param integer $num_words
140 140
      * @param null $more
141 141
      * @return    string
142 142
      */
@@ -478,7 +478,7 @@  discard block
 block discarded – undo
478 478
      *
479 479
      * @access    public
480 480
      * @param int $EVT_ID
481
-     * @param null $include_expired
481
+     * @param false|null $include_expired
482 482
      * @param bool $include_deleted
483 483
      * @param null $limit
484 484
      * @return EE_Datetime[]
Please login to merge, or discard this patch.
Spacing   +31 added lines, -31 removed lines patch added patch discarded remove patch
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
         }
40 40
         // reset property so that the new event is cached.
41 41
         EEH_Event_View::$_event = null;
42
-        if (! $EVT_ID && $post instanceof EE_Event) {
42
+        if ( ! $EVT_ID && $post instanceof EE_Event) {
43 43
             EEH_Event_View::$_event = $post;
44 44
             return EEH_Event_View::$_event;
45 45
         }
@@ -57,7 +57,7 @@  discard block
 block discarded – undo
57 57
             return EEH_Event_View::$_event;
58 58
         }
59 59
         // If the event we have isn't an event but we do have an EVT_ID, let's try getting the event using the ID.
60
-        if (! EEH_Event_View::$_event instanceof EE_Event && $EVT_ID) {
60
+        if ( ! EEH_Event_View::$_event instanceof EE_Event && $EVT_ID) {
61 61
             EEH_Event_View::$_event = EEM_Event::instance()->get_one_by_ID($EVT_ID);
62 62
         }
63 63
         return EEH_Event_View::$_event;
@@ -124,7 +124,7 @@  discard block
 block discarded – undo
124 124
         if ($event instanceof EE_Event) {
125 125
             $has_content_or_excerpt = $event->description() != '' || $event->short_description(null, null, true) != '' ? true : false;
126 126
         }
127
-        if (is_archive() && ! ( espresso_display_full_description_in_event_list() || espresso_display_excerpt_in_event_list() )) {
127
+        if (is_archive() && ! (espresso_display_full_description_in_event_list() || espresso_display_excerpt_in_event_list())) {
128 128
             $has_content_or_excerpt = false;
129 129
         }
130 130
         return $has_content_or_excerpt;
@@ -144,11 +144,11 @@  discard block
 block discarded – undo
144 144
     {
145 145
         global $post;
146 146
         ob_start();
147
-        if (( is_single() ) || ( is_archive() && espresso_display_full_description_in_event_list() )) {
147
+        if ((is_single()) || (is_archive() && espresso_display_full_description_in_event_list())) {
148 148
             // admin has chosen "full description"
149 149
             // for the "Event Espresso - Events > Templates > Display Description" option
150 150
             the_content();
151
-        } elseif (( is_archive() && espresso_display_excerpt_in_event_list() )) {
151
+        } elseif ((is_archive() && espresso_display_excerpt_in_event_list())) {
152 152
             if (has_excerpt($post->ID)) {
153 153
                 // admin has chosen "excerpt (short desc)"
154 154
                 // for the "Event Espresso - Events > Templates > Display Description" option
@@ -158,20 +158,20 @@  discard block
 block discarded – undo
158 158
                 // admin has chosen "excerpt (short desc)"
159 159
                 // for the "Event Espresso - Events > Templates > Display Description" option
160 160
                 // but NO excerpt actually exists, so we need to create one
161
-                if (! empty($num_words)) {
161
+                if ( ! empty($num_words)) {
162 162
                     if (empty($more)) {
163 163
                         $more_link_text = __('(more&hellip;)', 'event_espresso');
164
-                        $more = ' <a href="' . get_permalink() . '"';
164
+                        $more = ' <a href="'.get_permalink().'"';
165 165
                         $more .= ' class="more-link"';
166 166
                         $more .= \EED_Events_Archive::link_target();
167
-                        $more .= '>' . $more_link_text . '</a>';
167
+                        $more .= '>'.$more_link_text.'</a>';
168 168
                         $more = apply_filters('the_content_more_link', $more, $more_link_text);
169 169
                     }
170 170
                     $content = str_replace('NOMORELINK', '', get_the_content('NOMORELINK'));
171 171
 
172
-                    $content =  wp_trim_words($content, $num_words, ' ') . $more;
172
+                    $content = wp_trim_words($content, $num_words, ' ').$more;
173 173
                 } else {
174
-                    $content =  get_the_content();
174
+                    $content = get_the_content();
175 175
                 }
176 176
                 global $allowedtags;
177 177
                 // make sure links are allowed
@@ -240,8 +240,8 @@  discard block
 block discarded – undo
240 240
                 // loop thru terms and create links
241 241
                 foreach ($event_categories as $term) {
242 242
                     $url = get_term_link($term, 'espresso_venue_categories');
243
-                    if (! is_wp_error($url) && (( $hide_uncategorized && strtolower($term->name) != __('uncategorized', 'event_espresso')) || ! $hide_uncategorized )) {
244
-                        $category_links[] = '<a href="' . esc_url($url)
243
+                    if ( ! is_wp_error($url) && (($hide_uncategorized && strtolower($term->name) != __('uncategorized', 'event_espresso')) || ! $hide_uncategorized)) {
244
+                        $category_links[] = '<a href="'.esc_url($url)
245 245
                                             . '" rel="tag"'
246 246
                                             . \EED_Events_Archive::link_target()
247 247
                                             .'>'
@@ -268,8 +268,8 @@  discard block
 block discarded – undo
268 268
     public static function the_event_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
269 269
     {
270 270
         $datetime = EEH_Event_View::get_primary_date_obj($EVT_ID);
271
-        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
272
-        return $datetime instanceof EE_Datetime ? $datetime->get_i18n_datetime('DTT_EVT_start', $format) :  '';
271
+        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt.' '.$tm_frmt : $dt_frmt.$tm_frmt;
272
+        return $datetime instanceof EE_Datetime ? $datetime->get_i18n_datetime('DTT_EVT_start', $format) : '';
273 273
     }
274 274
 
275 275
 
@@ -286,7 +286,7 @@  discard block
 block discarded – undo
286 286
     public static function the_event_end_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
287 287
     {
288 288
         $datetime = EEH_Event_View::get_last_date_obj($EVT_ID);
289
-        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
289
+        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt.' '.$tm_frmt : $dt_frmt.$tm_frmt;
290 290
         return $datetime instanceof EE_Datetime ? $datetime->get_i18n_datetime('DTT_EVT_end', $format) : '';
291 291
     }
292 292
 
@@ -304,8 +304,8 @@  discard block
 block discarded – undo
304 304
     public static function the_earliest_event_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
305 305
     {
306 306
         $datetime = EEH_Event_View::get_earliest_date_obj($EVT_ID);
307
-        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
308
-        return $datetime instanceof EE_Datetime ?  $datetime->get_i18n_datetime('DTT_EVT_start', $format) : '';
307
+        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt.' '.$tm_frmt : $dt_frmt.$tm_frmt;
308
+        return $datetime instanceof EE_Datetime ? $datetime->get_i18n_datetime('DTT_EVT_start', $format) : '';
309 309
     }
310 310
 
311 311
 
@@ -322,8 +322,8 @@  discard block
 block discarded – undo
322 322
     public static function the_latest_event_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
323 323
     {
324 324
         $datetime = EEH_Event_View::get_latest_date_obj($EVT_ID);
325
-        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
326
-        return $datetime instanceof EE_Datetime ?  $datetime->get_i18n_datetime('DTT_EVT_end', $format) : '';
325
+        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt.' '.$tm_frmt : $dt_frmt.$tm_frmt;
326
+        return $datetime instanceof EE_Datetime ? $datetime->get_i18n_datetime('DTT_EVT_end', $format) : '';
327 327
     }
328 328
 
329 329
 
@@ -341,8 +341,8 @@  discard block
 block discarded – undo
341 341
         if ($datetime instanceof EE_Datetime) {
342 342
     ?>
343 343
         <div class="event-date-calendar-page-dv">
344
-            <div class="event-date-calendar-page-month-dv"><?php echo $datetime->get_i18n_datetime('DTT_EVT_start', 'M');?></div>
345
-            <div class="event-date-calendar-page-day-dv"><?php echo $datetime->start_date('d');?></div>
344
+            <div class="event-date-calendar-page-month-dv"><?php echo $datetime->get_i18n_datetime('DTT_EVT_start', 'M'); ?></div>
345
+            <div class="event-date-calendar-page-day-dv"><?php echo $datetime->start_date('d'); ?></div>
346 346
         </div>
347 347
     <?php
348 348
         }
@@ -365,7 +365,7 @@  discard block
 block discarded – undo
365 365
                 'Datetime',
366 366
                 array(
367 367
                     'limit' => 1,
368
-                    'order_by' => array( 'DTT_order' => 'ASC' )
368
+                    'order_by' => array('DTT_order' => 'ASC')
369 369
                 )
370 370
             );
371 371
             return reset($datetimes);
@@ -391,7 +391,7 @@  discard block
 block discarded – undo
391 391
                 'Datetime',
392 392
                 array(
393 393
                     'limit' => 1,
394
-                    'order_by' => array( 'DTT_order' => 'DESC' )
394
+                    'order_by' => array('DTT_order' => 'DESC')
395 395
                 )
396 396
             );
397 397
             return end($datetimes);
@@ -417,7 +417,7 @@  discard block
 block discarded – undo
417 417
                 'Datetime',
418 418
                 array(
419 419
                     'limit' => 1,
420
-                    'order_by' => array( 'DTT_EVT_start' => 'ASC' )
420
+                    'order_by' => array('DTT_EVT_start' => 'ASC')
421 421
                 )
422 422
             );
423 423
             return reset($datetimes);
@@ -443,7 +443,7 @@  discard block
 block discarded – undo
443 443
                 'Datetime',
444 444
                 array(
445 445
                     'limit' => 1,
446
-                    'order_by' => array( 'DTT_EVT_start' => 'DESC' )
446
+                    'order_by' => array('DTT_EVT_start' => 'DESC')
447 447
                 )
448 448
             );
449 449
             return end($datetimes);
@@ -515,7 +515,7 @@  discard block
 block discarded – undo
515 515
         $event = EEH_Event_View::get_event($EVT_ID);
516 516
         if ($event instanceof EE_Event) {
517 517
             $url = $event->external_url() !== null && $event->external_url() !== '' ? $event->external_url() : get_permalink($event->ID());
518
-            return preg_match("~^(?:f|ht)tps?://~i", $url) ? $url : 'http://' . $url;
518
+            return preg_match("~^(?:f|ht)tps?://~i", $url) ? $url : 'http://'.$url;
519 519
         }
520 520
         return null;
521 521
     }
@@ -561,16 +561,16 @@  discard block
 block discarded – undo
561 561
                 // generate nonce
562 562
                 $nonce = wp_create_nonce('edit_nonce');
563 563
                 // generate url to event editor for this event
564
-                $url = add_query_arg(array( 'page' => 'espresso_events', 'action' => 'edit', 'post' => $event->ID(), 'edit_nonce' => $nonce ), admin_url());
564
+                $url = add_query_arg(array('page' => 'espresso_events', 'action' => 'edit', 'post' => $event->ID(), 'edit_nonce' => $nonce), admin_url());
565 565
                 // get edit CPT text
566 566
                 $post_type_obj = get_post_type_object('espresso_events');
567 567
                 // build final link html
568
-                $link = '<a class="post-edit-link" href="' . $url . '" ';
569
-                $link .= ' title="' . esc_attr($post_type_obj->labels->edit_item) . '"';
568
+                $link = '<a class="post-edit-link" href="'.$url.'" ';
569
+                $link .= ' title="'.esc_attr($post_type_obj->labels->edit_item).'"';
570 570
                 $link .= \EED_Events_Archive::link_target();
571
-                $link .='>' . $link_text . '</a>';
571
+                $link .= '>'.$link_text.'</a>';
572 572
                 // put it all together
573
-                return $before . apply_filters('edit_post_link', $link, $event->ID()) . $after;
573
+                return $before.apply_filters('edit_post_link', $link, $event->ID()).$after;
574 574
             }
575 575
         }
576 576
         return '';
Please login to merge, or discard this patch.
Indentation   +569 added lines, -569 removed lines patch added patch discarded remove patch
@@ -11,578 +11,578 @@
 block discarded – undo
11 11
 class EEH_Event_View extends EEH_Base
12 12
 {
13 13
 
14
-    /**
15
-     * @var EE_Event $_event
16
-     */
17
-    private static $_event = null;
18
-
19
-
20
-
21
-    /**
22
-     * get_event
23
-     * attempts to retrieve an EE_Event object any way it can
24
-     *
25
-     * @param int|WP_Post $EVT_ID
26
-     * @return EE_Event|null
27
-     * @throws \EE_Error
28
-     */
29
-    public static function get_event($EVT_ID = 0)
30
-    {
31
-        // international newspaper?
32
-        global $post;
33
-        $EVT_ID = $EVT_ID instanceof WP_Post && $EVT_ID->post_type === 'espresso_events'
34
-            ? $EVT_ID->ID
35
-            : absint($EVT_ID);
36
-        // do we already have the Event  you are looking for?
37
-        if (EEH_Event_View::$_event instanceof EE_Event && $EVT_ID && EEH_Event_View::$_event->ID() === $EVT_ID) {
38
-            return EEH_Event_View::$_event;
39
-        }
40
-        // reset property so that the new event is cached.
41
-        EEH_Event_View::$_event = null;
42
-        if (! $EVT_ID && $post instanceof EE_Event) {
43
-            EEH_Event_View::$_event = $post;
44
-            return EEH_Event_View::$_event;
45
-        }
46
-        // if the post type is for an event and it has a cached event and we don't have a different incoming $EVT_ID
47
-        // then let's just use that cached event on the $post object.
48
-        if ($post instanceof WP_Post
49
-            && $post->post_type === 'espresso_events'
50
-            && isset($post->EE_Event)
51
-            && (
52
-                $EVT_ID === 0
53
-                || $EVT_ID === $post->ID
54
-            )
55
-        ) {
56
-            EEH_Event_View::$_event = $post->EE_Event;
57
-            return EEH_Event_View::$_event;
58
-        }
59
-        // If the event we have isn't an event but we do have an EVT_ID, let's try getting the event using the ID.
60
-        if (! EEH_Event_View::$_event instanceof EE_Event && $EVT_ID) {
61
-            EEH_Event_View::$_event = EEM_Event::instance()->get_one_by_ID($EVT_ID);
62
-        }
63
-        return EEH_Event_View::$_event;
64
-    }
65
-
66
-
67
-
68
-    /**
69
-     *    display_ticket_selector
70
-     *
71
-     * @access    public
72
-     * @param    int $EVT_ID
73
-     * @return    boolean
74
-     */
75
-    public static function display_ticket_selector($EVT_ID = 0)
76
-    {
77
-        $event = EEH_Event_View::get_event($EVT_ID);
78
-        return $event instanceof EE_Event ? $event->display_ticket_selector() : false;
79
-    }
80
-
81
-
82
-
83
-    /**
84
-     *    event_status
85
-     *
86
-     * @access    public
87
-     * @param    int $EVT_ID
88
-     * @return    string
89
-     */
90
-    public static function event_status($EVT_ID = 0)
91
-    {
92
-        $event = EEH_Event_View::get_event($EVT_ID);
93
-        return $event instanceof EE_Event ? $event->pretty_active_status(false) : '';
94
-    }
95
-
96
-
97
-
98
-    /**
99
-     *  event_active_status
100
-     *
101
-     *  @access     public
102
-     * @param    int $EVT_ID
103
-     *  @return     string
104
-     */
105
-    public static function event_active_status($EVT_ID = 0, $echo = true)
106
-    {
107
-        $event = EEH_Event_View::get_event($EVT_ID);
108
-        return $event instanceof EE_Event ? $event->pretty_active_status($echo) : 'inactive';
109
-    }
110
-
111
-
112
-
113
-    /**
114
-     *  event_has_content_or_excerpt
115
-     *
116
-     *  @access     public
117
-     * @param    int $EVT_ID
118
-     *  @return     string
119
-     */
120
-    public static function event_has_content_or_excerpt($EVT_ID = 0)
121
-    {
122
-        $event = EEH_Event_View::get_event($EVT_ID);
123
-        $has_content_or_excerpt = false;
124
-        if ($event instanceof EE_Event) {
125
-            $has_content_or_excerpt = $event->description() != '' || $event->short_description(null, null, true) != '' ? true : false;
126
-        }
127
-        if (is_archive() && ! ( espresso_display_full_description_in_event_list() || espresso_display_excerpt_in_event_list() )) {
128
-            $has_content_or_excerpt = false;
129
-        }
130
-        return $has_content_or_excerpt;
131
-    }
132
-
133
-
134
-
135
-    /**
136
-     *    event_active_status
137
-     *
138
-     * @access    public
139
-     * @param null $num_words
140
-     * @param null $more
141
-     * @return    string
142
-     */
143
-    public static function event_content_or_excerpt($num_words = null, $more = null)
144
-    {
145
-        global $post;
146
-        ob_start();
147
-        if (( is_single() ) || ( is_archive() && espresso_display_full_description_in_event_list() )) {
148
-            // admin has chosen "full description"
149
-            // for the "Event Espresso - Events > Templates > Display Description" option
150
-            the_content();
151
-        } elseif (( is_archive() && espresso_display_excerpt_in_event_list() )) {
152
-            if (has_excerpt($post->ID)) {
153
-                // admin has chosen "excerpt (short desc)"
154
-                // for the "Event Espresso - Events > Templates > Display Description" option
155
-                // AND an excerpt actually exists
156
-                the_excerpt();
157
-            } else {
158
-                // admin has chosen "excerpt (short desc)"
159
-                // for the "Event Espresso - Events > Templates > Display Description" option
160
-                // but NO excerpt actually exists, so we need to create one
161
-                if (! empty($num_words)) {
162
-                    if (empty($more)) {
163
-                        $more_link_text = __('(more&hellip;)', 'event_espresso');
164
-                        $more = ' <a href="' . get_permalink() . '"';
165
-                        $more .= ' class="more-link"';
166
-                        $more .= \EED_Events_Archive::link_target();
167
-                        $more .= '>' . $more_link_text . '</a>';
168
-                        $more = apply_filters('the_content_more_link', $more, $more_link_text);
169
-                    }
170
-                    $content = str_replace('NOMORELINK', '', get_the_content('NOMORELINK'));
171
-
172
-                    $content =  wp_trim_words($content, $num_words, ' ') . $more;
173
-                } else {
174
-                    $content =  get_the_content();
175
-                }
176
-                global $allowedtags;
177
-                // make sure links are allowed
178
-                $allowedtags['a'] = isset($allowedtags['a'])
179
-                    ? $allowedtags['a']
180
-                    : array();
181
-                // as well as target attribute
182
-                $allowedtags['a']['target'] = isset($allowedtags['a']['target'])
183
-                    ? $allowedtags['a']['target']
184
-                    : false;
185
-                // but get previous value so we can reset it
186
-                $prev_value = $allowedtags['a']['target'];
187
-                $allowedtags['a']['target'] = true;
188
-                $content = wp_kses($content, $allowedtags);
189
-                $content = strip_shortcodes($content);
190
-                echo apply_filters('the_content', $content);
191
-                $allowedtags['a']['target'] = $prev_value;
192
-            }
193
-        } else {
194
-            // admin has chosen "none"
195
-            // for the "Event Espresso - Events > Templates > Display Description" option
196
-            echo apply_filters('the_content', '');
197
-        }
198
-        return ob_get_clean();
199
-    }
200
-
201
-
202
-
203
-    /**
204
-     *  event_tickets_available
205
-     *
206
-     *  @access     public
207
-     * @param    int $EVT_ID
208
-     *  @return     EE_Ticket[]
209
-     */
210
-    public static function event_tickets_available($EVT_ID = 0)
211
-    {
212
-        $event = EEH_Event_View::get_event($EVT_ID);
213
-        $tickets_available_for_purchase = array();
214
-        if ($event instanceof EE_Event) {
215
-            $datetimes = EEH_Event_View::get_all_date_obj($EVT_ID, false);
216
-            foreach ($datetimes as $datetime) {
217
-                $tickets_available_for_purchase = array_merge($tickets_available_for_purchase, $datetime->ticket_types_available_for_purchase());
218
-            }
219
-        }
220
-        return $tickets_available_for_purchase;
221
-    }
222
-
223
-
224
-
225
-    /**
226
-     *    the_event_date
227
-     *
228
-     * @access    public
229
-     * @param    int $EVT_ID
230
-     * @param     bool   $hide_uncategorized
231
-     * @return    string
232
-     */
233
-    public static function event_categories($EVT_ID = 0, $hide_uncategorized = true)
234
-    {
235
-        $category_links = array();
236
-        $event = EEH_Event_View::get_event($EVT_ID);
237
-        if ($event instanceof EE_Event) {
238
-            $event_categories = get_the_terms($event->ID(), 'espresso_event_categories');
239
-            if ($event_categories) {
240
-                // loop thru terms and create links
241
-                foreach ($event_categories as $term) {
242
-                    $url = get_term_link($term, 'espresso_venue_categories');
243
-                    if (! is_wp_error($url) && (( $hide_uncategorized && strtolower($term->name) != __('uncategorized', 'event_espresso')) || ! $hide_uncategorized )) {
244
-                        $category_links[] = '<a href="' . esc_url($url)
245
-                                            . '" rel="tag"'
246
-                                            . \EED_Events_Archive::link_target()
247
-                                            .'>'
248
-                                            . $term->name
249
-                                            . '</a>';
250
-                    }
251
-                }
252
-            }
253
-        }
254
-        return implode(', ', $category_links);
255
-    }
256
-
257
-
258
-
259
-    /**
260
-     *    the_event_date - first date by date order
261
-     *
262
-     * @access    public
263
-     * @param string $dt_frmt
264
-     * @param string $tm_frmt
265
-     * @param int    $EVT_ID
266
-     * @return    string
267
-     */
268
-    public static function the_event_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
269
-    {
270
-        $datetime = EEH_Event_View::get_primary_date_obj($EVT_ID);
271
-        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
272
-        return $datetime instanceof EE_Datetime ? $datetime->get_i18n_datetime('DTT_EVT_start', $format) :  '';
273
-    }
274
-
275
-
276
-
277
-    /**
278
-     *    the_event_end_date - last date by date order
279
-     *
280
-     * @access    public
281
-     * @param string $dt_frmt
282
-     * @param string $tm_frmt
283
-     * @param int    $EVT_ID
284
-     * @return    string
285
-     */
286
-    public static function the_event_end_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
287
-    {
288
-        $datetime = EEH_Event_View::get_last_date_obj($EVT_ID);
289
-        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
290
-        return $datetime instanceof EE_Datetime ? $datetime->get_i18n_datetime('DTT_EVT_end', $format) : '';
291
-    }
292
-
293
-
294
-
295
-    /**
296
-     *    the_earliest_event_date - first date chronologically
297
-     *
298
-     * @access    public
299
-     * @param string $dt_frmt
300
-     * @param string $tm_frmt
301
-     * @param int    $EVT_ID
302
-     * @return    string
303
-     */
304
-    public static function the_earliest_event_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
305
-    {
306
-        $datetime = EEH_Event_View::get_earliest_date_obj($EVT_ID);
307
-        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
308
-        return $datetime instanceof EE_Datetime ?  $datetime->get_i18n_datetime('DTT_EVT_start', $format) : '';
309
-    }
310
-
311
-
312
-
313
-    /**
314
-     *    the_latest_event_date - latest date chronologically
315
-     *
316
-     * @access    public
317
-     * @param string $dt_frmt
318
-     * @param string $tm_frmt
319
-     * @param int    $EVT_ID
320
-     * @return    string
321
-     */
322
-    public static function the_latest_event_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
323
-    {
324
-        $datetime = EEH_Event_View::get_latest_date_obj($EVT_ID);
325
-        $format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
326
-        return $datetime instanceof EE_Datetime ?  $datetime->get_i18n_datetime('DTT_EVT_end', $format) : '';
327
-    }
328
-
329
-
330
-
331
-    /**
332
-     *    event_date_as_calendar_page
333
-     *
334
-     * @access    public
335
-     * @param int $EVT_ID
336
-     * @return    string
337
-     */
338
-    public static function event_date_as_calendar_page($EVT_ID = 0)
339
-    {
340
-        $datetime = EEH_Event_View::get_primary_date_obj($EVT_ID);
341
-        if ($datetime instanceof EE_Datetime) {
342
-    ?>
14
+	/**
15
+	 * @var EE_Event $_event
16
+	 */
17
+	private static $_event = null;
18
+
19
+
20
+
21
+	/**
22
+	 * get_event
23
+	 * attempts to retrieve an EE_Event object any way it can
24
+	 *
25
+	 * @param int|WP_Post $EVT_ID
26
+	 * @return EE_Event|null
27
+	 * @throws \EE_Error
28
+	 */
29
+	public static function get_event($EVT_ID = 0)
30
+	{
31
+		// international newspaper?
32
+		global $post;
33
+		$EVT_ID = $EVT_ID instanceof WP_Post && $EVT_ID->post_type === 'espresso_events'
34
+			? $EVT_ID->ID
35
+			: absint($EVT_ID);
36
+		// do we already have the Event  you are looking for?
37
+		if (EEH_Event_View::$_event instanceof EE_Event && $EVT_ID && EEH_Event_View::$_event->ID() === $EVT_ID) {
38
+			return EEH_Event_View::$_event;
39
+		}
40
+		// reset property so that the new event is cached.
41
+		EEH_Event_View::$_event = null;
42
+		if (! $EVT_ID && $post instanceof EE_Event) {
43
+			EEH_Event_View::$_event = $post;
44
+			return EEH_Event_View::$_event;
45
+		}
46
+		// if the post type is for an event and it has a cached event and we don't have a different incoming $EVT_ID
47
+		// then let's just use that cached event on the $post object.
48
+		if ($post instanceof WP_Post
49
+			&& $post->post_type === 'espresso_events'
50
+			&& isset($post->EE_Event)
51
+			&& (
52
+				$EVT_ID === 0
53
+				|| $EVT_ID === $post->ID
54
+			)
55
+		) {
56
+			EEH_Event_View::$_event = $post->EE_Event;
57
+			return EEH_Event_View::$_event;
58
+		}
59
+		// If the event we have isn't an event but we do have an EVT_ID, let's try getting the event using the ID.
60
+		if (! EEH_Event_View::$_event instanceof EE_Event && $EVT_ID) {
61
+			EEH_Event_View::$_event = EEM_Event::instance()->get_one_by_ID($EVT_ID);
62
+		}
63
+		return EEH_Event_View::$_event;
64
+	}
65
+
66
+
67
+
68
+	/**
69
+	 *    display_ticket_selector
70
+	 *
71
+	 * @access    public
72
+	 * @param    int $EVT_ID
73
+	 * @return    boolean
74
+	 */
75
+	public static function display_ticket_selector($EVT_ID = 0)
76
+	{
77
+		$event = EEH_Event_View::get_event($EVT_ID);
78
+		return $event instanceof EE_Event ? $event->display_ticket_selector() : false;
79
+	}
80
+
81
+
82
+
83
+	/**
84
+	 *    event_status
85
+	 *
86
+	 * @access    public
87
+	 * @param    int $EVT_ID
88
+	 * @return    string
89
+	 */
90
+	public static function event_status($EVT_ID = 0)
91
+	{
92
+		$event = EEH_Event_View::get_event($EVT_ID);
93
+		return $event instanceof EE_Event ? $event->pretty_active_status(false) : '';
94
+	}
95
+
96
+
97
+
98
+	/**
99
+	 *  event_active_status
100
+	 *
101
+	 *  @access     public
102
+	 * @param    int $EVT_ID
103
+	 *  @return     string
104
+	 */
105
+	public static function event_active_status($EVT_ID = 0, $echo = true)
106
+	{
107
+		$event = EEH_Event_View::get_event($EVT_ID);
108
+		return $event instanceof EE_Event ? $event->pretty_active_status($echo) : 'inactive';
109
+	}
110
+
111
+
112
+
113
+	/**
114
+	 *  event_has_content_or_excerpt
115
+	 *
116
+	 *  @access     public
117
+	 * @param    int $EVT_ID
118
+	 *  @return     string
119
+	 */
120
+	public static function event_has_content_or_excerpt($EVT_ID = 0)
121
+	{
122
+		$event = EEH_Event_View::get_event($EVT_ID);
123
+		$has_content_or_excerpt = false;
124
+		if ($event instanceof EE_Event) {
125
+			$has_content_or_excerpt = $event->description() != '' || $event->short_description(null, null, true) != '' ? true : false;
126
+		}
127
+		if (is_archive() && ! ( espresso_display_full_description_in_event_list() || espresso_display_excerpt_in_event_list() )) {
128
+			$has_content_or_excerpt = false;
129
+		}
130
+		return $has_content_or_excerpt;
131
+	}
132
+
133
+
134
+
135
+	/**
136
+	 *    event_active_status
137
+	 *
138
+	 * @access    public
139
+	 * @param null $num_words
140
+	 * @param null $more
141
+	 * @return    string
142
+	 */
143
+	public static function event_content_or_excerpt($num_words = null, $more = null)
144
+	{
145
+		global $post;
146
+		ob_start();
147
+		if (( is_single() ) || ( is_archive() && espresso_display_full_description_in_event_list() )) {
148
+			// admin has chosen "full description"
149
+			// for the "Event Espresso - Events > Templates > Display Description" option
150
+			the_content();
151
+		} elseif (( is_archive() && espresso_display_excerpt_in_event_list() )) {
152
+			if (has_excerpt($post->ID)) {
153
+				// admin has chosen "excerpt (short desc)"
154
+				// for the "Event Espresso - Events > Templates > Display Description" option
155
+				// AND an excerpt actually exists
156
+				the_excerpt();
157
+			} else {
158
+				// admin has chosen "excerpt (short desc)"
159
+				// for the "Event Espresso - Events > Templates > Display Description" option
160
+				// but NO excerpt actually exists, so we need to create one
161
+				if (! empty($num_words)) {
162
+					if (empty($more)) {
163
+						$more_link_text = __('(more&hellip;)', 'event_espresso');
164
+						$more = ' <a href="' . get_permalink() . '"';
165
+						$more .= ' class="more-link"';
166
+						$more .= \EED_Events_Archive::link_target();
167
+						$more .= '>' . $more_link_text . '</a>';
168
+						$more = apply_filters('the_content_more_link', $more, $more_link_text);
169
+					}
170
+					$content = str_replace('NOMORELINK', '', get_the_content('NOMORELINK'));
171
+
172
+					$content =  wp_trim_words($content, $num_words, ' ') . $more;
173
+				} else {
174
+					$content =  get_the_content();
175
+				}
176
+				global $allowedtags;
177
+				// make sure links are allowed
178
+				$allowedtags['a'] = isset($allowedtags['a'])
179
+					? $allowedtags['a']
180
+					: array();
181
+				// as well as target attribute
182
+				$allowedtags['a']['target'] = isset($allowedtags['a']['target'])
183
+					? $allowedtags['a']['target']
184
+					: false;
185
+				// but get previous value so we can reset it
186
+				$prev_value = $allowedtags['a']['target'];
187
+				$allowedtags['a']['target'] = true;
188
+				$content = wp_kses($content, $allowedtags);
189
+				$content = strip_shortcodes($content);
190
+				echo apply_filters('the_content', $content);
191
+				$allowedtags['a']['target'] = $prev_value;
192
+			}
193
+		} else {
194
+			// admin has chosen "none"
195
+			// for the "Event Espresso - Events > Templates > Display Description" option
196
+			echo apply_filters('the_content', '');
197
+		}
198
+		return ob_get_clean();
199
+	}
200
+
201
+
202
+
203
+	/**
204
+	 *  event_tickets_available
205
+	 *
206
+	 *  @access     public
207
+	 * @param    int $EVT_ID
208
+	 *  @return     EE_Ticket[]
209
+	 */
210
+	public static function event_tickets_available($EVT_ID = 0)
211
+	{
212
+		$event = EEH_Event_View::get_event($EVT_ID);
213
+		$tickets_available_for_purchase = array();
214
+		if ($event instanceof EE_Event) {
215
+			$datetimes = EEH_Event_View::get_all_date_obj($EVT_ID, false);
216
+			foreach ($datetimes as $datetime) {
217
+				$tickets_available_for_purchase = array_merge($tickets_available_for_purchase, $datetime->ticket_types_available_for_purchase());
218
+			}
219
+		}
220
+		return $tickets_available_for_purchase;
221
+	}
222
+
223
+
224
+
225
+	/**
226
+	 *    the_event_date
227
+	 *
228
+	 * @access    public
229
+	 * @param    int $EVT_ID
230
+	 * @param     bool   $hide_uncategorized
231
+	 * @return    string
232
+	 */
233
+	public static function event_categories($EVT_ID = 0, $hide_uncategorized = true)
234
+	{
235
+		$category_links = array();
236
+		$event = EEH_Event_View::get_event($EVT_ID);
237
+		if ($event instanceof EE_Event) {
238
+			$event_categories = get_the_terms($event->ID(), 'espresso_event_categories');
239
+			if ($event_categories) {
240
+				// loop thru terms and create links
241
+				foreach ($event_categories as $term) {
242
+					$url = get_term_link($term, 'espresso_venue_categories');
243
+					if (! is_wp_error($url) && (( $hide_uncategorized && strtolower($term->name) != __('uncategorized', 'event_espresso')) || ! $hide_uncategorized )) {
244
+						$category_links[] = '<a href="' . esc_url($url)
245
+											. '" rel="tag"'
246
+											. \EED_Events_Archive::link_target()
247
+											.'>'
248
+											. $term->name
249
+											. '</a>';
250
+					}
251
+				}
252
+			}
253
+		}
254
+		return implode(', ', $category_links);
255
+	}
256
+
257
+
258
+
259
+	/**
260
+	 *    the_event_date - first date by date order
261
+	 *
262
+	 * @access    public
263
+	 * @param string $dt_frmt
264
+	 * @param string $tm_frmt
265
+	 * @param int    $EVT_ID
266
+	 * @return    string
267
+	 */
268
+	public static function the_event_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
269
+	{
270
+		$datetime = EEH_Event_View::get_primary_date_obj($EVT_ID);
271
+		$format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
272
+		return $datetime instanceof EE_Datetime ? $datetime->get_i18n_datetime('DTT_EVT_start', $format) :  '';
273
+	}
274
+
275
+
276
+
277
+	/**
278
+	 *    the_event_end_date - last date by date order
279
+	 *
280
+	 * @access    public
281
+	 * @param string $dt_frmt
282
+	 * @param string $tm_frmt
283
+	 * @param int    $EVT_ID
284
+	 * @return    string
285
+	 */
286
+	public static function the_event_end_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
287
+	{
288
+		$datetime = EEH_Event_View::get_last_date_obj($EVT_ID);
289
+		$format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
290
+		return $datetime instanceof EE_Datetime ? $datetime->get_i18n_datetime('DTT_EVT_end', $format) : '';
291
+	}
292
+
293
+
294
+
295
+	/**
296
+	 *    the_earliest_event_date - first date chronologically
297
+	 *
298
+	 * @access    public
299
+	 * @param string $dt_frmt
300
+	 * @param string $tm_frmt
301
+	 * @param int    $EVT_ID
302
+	 * @return    string
303
+	 */
304
+	public static function the_earliest_event_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
305
+	{
306
+		$datetime = EEH_Event_View::get_earliest_date_obj($EVT_ID);
307
+		$format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
308
+		return $datetime instanceof EE_Datetime ?  $datetime->get_i18n_datetime('DTT_EVT_start', $format) : '';
309
+	}
310
+
311
+
312
+
313
+	/**
314
+	 *    the_latest_event_date - latest date chronologically
315
+	 *
316
+	 * @access    public
317
+	 * @param string $dt_frmt
318
+	 * @param string $tm_frmt
319
+	 * @param int    $EVT_ID
320
+	 * @return    string
321
+	 */
322
+	public static function the_latest_event_date($dt_frmt = 'D M jS', $tm_frmt = 'g:i a', $EVT_ID = 0)
323
+	{
324
+		$datetime = EEH_Event_View::get_latest_date_obj($EVT_ID);
325
+		$format = ! empty($dt_frmt) && ! empty($tm_frmt) ? $dt_frmt . ' ' . $tm_frmt : $dt_frmt . $tm_frmt;
326
+		return $datetime instanceof EE_Datetime ?  $datetime->get_i18n_datetime('DTT_EVT_end', $format) : '';
327
+	}
328
+
329
+
330
+
331
+	/**
332
+	 *    event_date_as_calendar_page
333
+	 *
334
+	 * @access    public
335
+	 * @param int $EVT_ID
336
+	 * @return    string
337
+	 */
338
+	public static function event_date_as_calendar_page($EVT_ID = 0)
339
+	{
340
+		$datetime = EEH_Event_View::get_primary_date_obj($EVT_ID);
341
+		if ($datetime instanceof EE_Datetime) {
342
+	?>
343 343
         <div class="event-date-calendar-page-dv">
344 344
             <div class="event-date-calendar-page-month-dv"><?php echo $datetime->get_i18n_datetime('DTT_EVT_start', 'M');?></div>
345 345
             <div class="event-date-calendar-page-day-dv"><?php echo $datetime->start_date('d');?></div>
346 346
         </div>
347 347
     <?php
348
-        }
349
-    }
350
-
351
-
352
-
353
-    /**
354
-     *    get_primary_date_obj - orders date by DTT_order
355
-     *
356
-     * @access    public
357
-     * @param int $EVT_ID
358
-     * @return    string
359
-     */
360
-    public static function get_primary_date_obj($EVT_ID = 0)
361
-    {
362
-        $event = EEH_Event_View::get_event($EVT_ID);
363
-        if ($event instanceof EE_Event) {
364
-            $datetimes = $event->get_many_related(
365
-                'Datetime',
366
-                array(
367
-                    'limit' => 1,
368
-                    'order_by' => array( 'DTT_order' => 'ASC' )
369
-                )
370
-            );
371
-            return reset($datetimes);
372
-        } else {
373
-             return false;
374
-        }
375
-    }
376
-
377
-
378
-
379
-    /**
380
-     *    get_last_date_obj - orders date by DTT_order
381
-     *
382
-     * @access    public
383
-     * @param int $EVT_ID
384
-     * @return    string
385
-     */
386
-    public static function get_last_date_obj($EVT_ID = 0)
387
-    {
388
-        $event = EEH_Event_View::get_event($EVT_ID);
389
-        if ($event instanceof EE_Event) {
390
-            $datetimes = $event->get_many_related(
391
-                'Datetime',
392
-                array(
393
-                    'limit' => 1,
394
-                    'order_by' => array( 'DTT_order' => 'DESC' )
395
-                )
396
-            );
397
-            return end($datetimes);
398
-        } else {
399
-            return false;
400
-        }
401
-    }
402
-
403
-
404
-
405
-    /**
406
-     *    get_earliest_date_obj - orders date chronologically
407
-     *
408
-     * @access    public
409
-     * @param int $EVT_ID
410
-     * @return    string
411
-     */
412
-    public static function get_earliest_date_obj($EVT_ID = 0)
413
-    {
414
-        $event = EEH_Event_View::get_event($EVT_ID);
415
-        if ($event instanceof EE_Event) {
416
-            $datetimes = $event->get_many_related(
417
-                'Datetime',
418
-                array(
419
-                    'limit' => 1,
420
-                    'order_by' => array( 'DTT_EVT_start' => 'ASC' )
421
-                )
422
-            );
423
-            return reset($datetimes);
424
-        } else {
425
-             return false;
426
-        }
427
-    }
428
-
429
-
430
-
431
-    /**
432
-     *    get_latest_date_obj - orders date chronologically
433
-     *
434
-     * @access    public
435
-     * @param int $EVT_ID
436
-     * @return    string
437
-     */
438
-    public static function get_latest_date_obj($EVT_ID = 0)
439
-    {
440
-        $event = EEH_Event_View::get_event($EVT_ID);
441
-        if ($event instanceof EE_Event) {
442
-            $datetimes = $event->get_many_related(
443
-                'Datetime',
444
-                array(
445
-                    'limit' => 1,
446
-                    'order_by' => array( 'DTT_EVT_start' => 'DESC' )
447
-                )
448
-            );
449
-            return end($datetimes);
450
-        } else {
451
-            return false;
452
-        }
453
-    }
454
-
455
-    /**
456
-     *    get_next_upcoming_date_obj - return the next upcoming datetime
457
-     *
458
-     * @access    public
459
-     * @param int $EVT_ID
460
-     * @return    EE_Datetime|null
461
-     */
462
-    public static function get_next_upcoming_date_obj($EVT_ID = 0)
463
-    {
464
-        $datetime = EEM_Datetime::instance()->get_one(
465
-            array(
466
-                array(
467
-                    'Event.EVT_ID' => $EVT_ID,
468
-                    'DTT_EVT_start' => array('>=', current_time('mysql', true))
469
-                ),
470
-                'order_by' => array('DTT_EVT_start' => 'asc')
471
-            )
472
-        );
473
-        return $datetime instanceof EE_Datetime ? $datetime : null;
474
-    }
475
-
476
-    /**
477
-     *    get_all_date_obj
478
-     *
479
-     * @access    public
480
-     * @param int $EVT_ID
481
-     * @param null $include_expired
482
-     * @param bool $include_deleted
483
-     * @param null $limit
484
-     * @return EE_Datetime[]
485
-     */
486
-    public static function get_all_date_obj($EVT_ID = 0, $include_expired = null, $include_deleted = false, $limit = null)
487
-    {
488
-        $event = EEH_Event_View::get_event($EVT_ID);
489
-        if ($include_expired === null) {
490
-            if ($event instanceof EE_Event && $event->is_expired()) {
491
-                $include_expired = true;
492
-            } else {
493
-                $include_expired = false;
494
-            }
495
-        }
496
-
497
-        if ($event instanceof EE_Event) {
498
-            return $event->datetimes_ordered($include_expired, $include_deleted, $limit);
499
-        } else {
500
-             return array();
501
-        }
502
-    }
503
-
504
-
505
-
506
-    /**
507
-     *    event_link_url
508
-     *
509
-     * @access    public
510
-     * @param int $EVT_ID
511
-     * @return    string
512
-     */
513
-    public static function event_link_url($EVT_ID = 0)
514
-    {
515
-        $event = EEH_Event_View::get_event($EVT_ID);
516
-        if ($event instanceof EE_Event) {
517
-            $url = $event->external_url() !== null && $event->external_url() !== '' ? $event->external_url() : get_permalink($event->ID());
518
-            return preg_match("~^(?:f|ht)tps?://~i", $url) ? $url : 'http://' . $url;
519
-        }
520
-        return null;
521
-    }
522
-
523
-
524
-
525
-    /**
526
-     *    event_phone
527
-     *
528
-     * @access    public
529
-     * @param int $EVT_ID
530
-     * @return    string
531
-     */
532
-    public static function event_phone($EVT_ID = 0)
533
-    {
534
-        $event = EEH_Event_View::get_event($EVT_ID);
535
-        if ($event instanceof EE_Event) {
536
-            return EEH_Schema::telephone($event->phone());
537
-        }
538
-        return null;
539
-    }
540
-
541
-
542
-
543
-    /**
544
-     *    edit_event_link
545
-     *
546
-     * @access    public
547
-     * @param int    $EVT_ID
548
-     * @param string $link
549
-     * @param string $before
550
-     * @param string $after
551
-     * @return    string
552
-     */
553
-    public static function edit_event_link($EVT_ID = 0, $link = '', $before = '', $after = '')
554
-    {
555
-        $event = EEH_Event_View::get_event($EVT_ID);
556
-        if ($event instanceof EE_Event) {
557
-            // can the user edit this post ?
558
-            if (current_user_can('edit_post', $event->ID())) {
559
-                // set link text
560
-                $link_text = ! empty($link) ? $link : __('edit this event', 'event_espresso');
561
-                // generate nonce
562
-                $nonce = wp_create_nonce('edit_nonce');
563
-                // generate url to event editor for this event
564
-                $url = add_query_arg(array( 'page' => 'espresso_events', 'action' => 'edit', 'post' => $event->ID(), 'edit_nonce' => $nonce ), admin_url());
565
-                // get edit CPT text
566
-                $post_type_obj = get_post_type_object('espresso_events');
567
-                // build final link html
568
-                $link = '<a class="post-edit-link" href="' . $url . '" ';
569
-                $link .= ' title="' . esc_attr($post_type_obj->labels->edit_item) . '"';
570
-                $link .= \EED_Events_Archive::link_target();
571
-                $link .='>' . $link_text . '</a>';
572
-                // put it all together
573
-                return $before . apply_filters('edit_post_link', $link, $event->ID()) . $after;
574
-            }
575
-        }
576
-        return '';
577
-    }
578
-
579
-
580
-
581
-    /**
582
-     * @return string
583
-     */
584
-    public static function event_archive_url()
585
-    {
586
-        return get_post_type_archive_link('espresso_events');
587
-    }
348
+		}
349
+	}
350
+
351
+
352
+
353
+	/**
354
+	 *    get_primary_date_obj - orders date by DTT_order
355
+	 *
356
+	 * @access    public
357
+	 * @param int $EVT_ID
358
+	 * @return    string
359
+	 */
360
+	public static function get_primary_date_obj($EVT_ID = 0)
361
+	{
362
+		$event = EEH_Event_View::get_event($EVT_ID);
363
+		if ($event instanceof EE_Event) {
364
+			$datetimes = $event->get_many_related(
365
+				'Datetime',
366
+				array(
367
+					'limit' => 1,
368
+					'order_by' => array( 'DTT_order' => 'ASC' )
369
+				)
370
+			);
371
+			return reset($datetimes);
372
+		} else {
373
+			 return false;
374
+		}
375
+	}
376
+
377
+
378
+
379
+	/**
380
+	 *    get_last_date_obj - orders date by DTT_order
381
+	 *
382
+	 * @access    public
383
+	 * @param int $EVT_ID
384
+	 * @return    string
385
+	 */
386
+	public static function get_last_date_obj($EVT_ID = 0)
387
+	{
388
+		$event = EEH_Event_View::get_event($EVT_ID);
389
+		if ($event instanceof EE_Event) {
390
+			$datetimes = $event->get_many_related(
391
+				'Datetime',
392
+				array(
393
+					'limit' => 1,
394
+					'order_by' => array( 'DTT_order' => 'DESC' )
395
+				)
396
+			);
397
+			return end($datetimes);
398
+		} else {
399
+			return false;
400
+		}
401
+	}
402
+
403
+
404
+
405
+	/**
406
+	 *    get_earliest_date_obj - orders date chronologically
407
+	 *
408
+	 * @access    public
409
+	 * @param int $EVT_ID
410
+	 * @return    string
411
+	 */
412
+	public static function get_earliest_date_obj($EVT_ID = 0)
413
+	{
414
+		$event = EEH_Event_View::get_event($EVT_ID);
415
+		if ($event instanceof EE_Event) {
416
+			$datetimes = $event->get_many_related(
417
+				'Datetime',
418
+				array(
419
+					'limit' => 1,
420
+					'order_by' => array( 'DTT_EVT_start' => 'ASC' )
421
+				)
422
+			);
423
+			return reset($datetimes);
424
+		} else {
425
+			 return false;
426
+		}
427
+	}
428
+
429
+
430
+
431
+	/**
432
+	 *    get_latest_date_obj - orders date chronologically
433
+	 *
434
+	 * @access    public
435
+	 * @param int $EVT_ID
436
+	 * @return    string
437
+	 */
438
+	public static function get_latest_date_obj($EVT_ID = 0)
439
+	{
440
+		$event = EEH_Event_View::get_event($EVT_ID);
441
+		if ($event instanceof EE_Event) {
442
+			$datetimes = $event->get_many_related(
443
+				'Datetime',
444
+				array(
445
+					'limit' => 1,
446
+					'order_by' => array( 'DTT_EVT_start' => 'DESC' )
447
+				)
448
+			);
449
+			return end($datetimes);
450
+		} else {
451
+			return false;
452
+		}
453
+	}
454
+
455
+	/**
456
+	 *    get_next_upcoming_date_obj - return the next upcoming datetime
457
+	 *
458
+	 * @access    public
459
+	 * @param int $EVT_ID
460
+	 * @return    EE_Datetime|null
461
+	 */
462
+	public static function get_next_upcoming_date_obj($EVT_ID = 0)
463
+	{
464
+		$datetime = EEM_Datetime::instance()->get_one(
465
+			array(
466
+				array(
467
+					'Event.EVT_ID' => $EVT_ID,
468
+					'DTT_EVT_start' => array('>=', current_time('mysql', true))
469
+				),
470
+				'order_by' => array('DTT_EVT_start' => 'asc')
471
+			)
472
+		);
473
+		return $datetime instanceof EE_Datetime ? $datetime : null;
474
+	}
475
+
476
+	/**
477
+	 *    get_all_date_obj
478
+	 *
479
+	 * @access    public
480
+	 * @param int $EVT_ID
481
+	 * @param null $include_expired
482
+	 * @param bool $include_deleted
483
+	 * @param null $limit
484
+	 * @return EE_Datetime[]
485
+	 */
486
+	public static function get_all_date_obj($EVT_ID = 0, $include_expired = null, $include_deleted = false, $limit = null)
487
+	{
488
+		$event = EEH_Event_View::get_event($EVT_ID);
489
+		if ($include_expired === null) {
490
+			if ($event instanceof EE_Event && $event->is_expired()) {
491
+				$include_expired = true;
492
+			} else {
493
+				$include_expired = false;
494
+			}
495
+		}
496
+
497
+		if ($event instanceof EE_Event) {
498
+			return $event->datetimes_ordered($include_expired, $include_deleted, $limit);
499
+		} else {
500
+			 return array();
501
+		}
502
+	}
503
+
504
+
505
+
506
+	/**
507
+	 *    event_link_url
508
+	 *
509
+	 * @access    public
510
+	 * @param int $EVT_ID
511
+	 * @return    string
512
+	 */
513
+	public static function event_link_url($EVT_ID = 0)
514
+	{
515
+		$event = EEH_Event_View::get_event($EVT_ID);
516
+		if ($event instanceof EE_Event) {
517
+			$url = $event->external_url() !== null && $event->external_url() !== '' ? $event->external_url() : get_permalink($event->ID());
518
+			return preg_match("~^(?:f|ht)tps?://~i", $url) ? $url : 'http://' . $url;
519
+		}
520
+		return null;
521
+	}
522
+
523
+
524
+
525
+	/**
526
+	 *    event_phone
527
+	 *
528
+	 * @access    public
529
+	 * @param int $EVT_ID
530
+	 * @return    string
531
+	 */
532
+	public static function event_phone($EVT_ID = 0)
533
+	{
534
+		$event = EEH_Event_View::get_event($EVT_ID);
535
+		if ($event instanceof EE_Event) {
536
+			return EEH_Schema::telephone($event->phone());
537
+		}
538
+		return null;
539
+	}
540
+
541
+
542
+
543
+	/**
544
+	 *    edit_event_link
545
+	 *
546
+	 * @access    public
547
+	 * @param int    $EVT_ID
548
+	 * @param string $link
549
+	 * @param string $before
550
+	 * @param string $after
551
+	 * @return    string
552
+	 */
553
+	public static function edit_event_link($EVT_ID = 0, $link = '', $before = '', $after = '')
554
+	{
555
+		$event = EEH_Event_View::get_event($EVT_ID);
556
+		if ($event instanceof EE_Event) {
557
+			// can the user edit this post ?
558
+			if (current_user_can('edit_post', $event->ID())) {
559
+				// set link text
560
+				$link_text = ! empty($link) ? $link : __('edit this event', 'event_espresso');
561
+				// generate nonce
562
+				$nonce = wp_create_nonce('edit_nonce');
563
+				// generate url to event editor for this event
564
+				$url = add_query_arg(array( 'page' => 'espresso_events', 'action' => 'edit', 'post' => $event->ID(), 'edit_nonce' => $nonce ), admin_url());
565
+				// get edit CPT text
566
+				$post_type_obj = get_post_type_object('espresso_events');
567
+				// build final link html
568
+				$link = '<a class="post-edit-link" href="' . $url . '" ';
569
+				$link .= ' title="' . esc_attr($post_type_obj->labels->edit_item) . '"';
570
+				$link .= \EED_Events_Archive::link_target();
571
+				$link .='>' . $link_text . '</a>';
572
+				// put it all together
573
+				return $before . apply_filters('edit_post_link', $link, $event->ID()) . $after;
574
+			}
575
+		}
576
+		return '';
577
+	}
578
+
579
+
580
+
581
+	/**
582
+	 * @return string
583
+	 */
584
+	public static function event_archive_url()
585
+	{
586
+		return get_post_type_archive_link('espresso_events');
587
+	}
588 588
 }
Please login to merge, or discard this patch.
core/helpers/EEH_File.helper.php 3 patches
Doc Comments   -2 removed lines patch added patch discarded remove patch
@@ -673,8 +673,6 @@
 block discarded – undo
673 673
      * converts it into a "remote" filepath (the filepath the currently-in-use
674 674
      * $wp_filesystem needs to use access the folder or file).
675 675
      * See http://wordpress.stackexchange.com/questions/124900/using-wp-filesystem-in-plugins
676
-     * @param WP_Filesystem_Base $wp_filesystem we aren't initially sure which one
677
-     * is in use, so you need to provide it
678 676
      * @param string $local_filepath the filepath to the folder/file locally
679 677
      * @throws EE_Error if filesystem credentials are required
680 678
      * @return string the remote filepath (eg the filepath the filesystem method, eg
Please login to merge, or discard this patch.
Indentation   +662 added lines, -662 removed lines patch added patch discarded remove patch
@@ -24,666 +24,666 @@
 block discarded – undo
24 24
 class EEH_File extends EEH_Base implements EEHI_File
25 25
 {
26 26
 
27
-    /**
28
-     * @var string $_credentials_form
29
-     */
30
-    private static $_credentials_form;
31
-
32
-    protected static $_wp_filesystem_direct;
33
-
34
-    /**
35
-     * @param string|null $filepath the filepath we want to work in. If its in the
36
-     * wp uploads directory, we'll want to just use the filesystem directly.
37
-     * If not provided, we have to assume its not in the uploads directory
38
-     * @throws EE_Error if filesystem credentials are required
39
-     * @return WP_Filesystem_Base
40
-     */
41
-    private static function _get_wp_filesystem($filepath = null)
42
-    {
43
-        if (apply_filters(
44
-            'FHEE__EEH_File___get_wp_filesystem__allow_using_filesystem_direct',
45
-            $filepath && EEH_File::is_in_uploads_folder($filepath),
46
-            $filepath
47
-        ) ) {
48
-            if (! EEH_File::$_wp_filesystem_direct instanceof WP_Filesystem_Direct) {
49
-                require_once(ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php');
50
-                $method = 'direct';
51
-                $wp_filesystem_direct_file = apply_filters('filesystem_method_file', ABSPATH . 'wp-admin/includes/class-wp-filesystem-' . $method . '.php', $method);
52
-                // check constants defined, just like in wp-admin/includes/file.php's WP_Filesystem()
53
-                if (! defined('FS_CHMOD_DIR')) {
54
-                    define('FS_CHMOD_DIR', ( fileperms(ABSPATH) & 0777 | 0755 ));
55
-                }
56
-                if (! defined('FS_CHMOD_FILE')) {
57
-                    define('FS_CHMOD_FILE', ( fileperms(ABSPATH . 'index.php') & 0777 | 0644 ));
58
-                }
59
-                require_once($wp_filesystem_direct_file);
60
-                EEH_File::$_wp_filesystem_direct = new WP_Filesystem_Direct(array());
61
-            }
62
-            return EEH_File::$_wp_filesystem_direct;
63
-        }
64
-        global $wp_filesystem;
65
-        // no filesystem setup ???
66
-        if (! $wp_filesystem instanceof WP_Filesystem_Base) {
67
-            // if some eager beaver's just trying to get in there too early...
68
-            // let them do it, because we are one of those eager beavers! :P
69
-            /**
70
-             * more explanations are probably merited. http://codex.wordpress.org/Filesystem_API#Initializing_WP_Filesystem_Base
71
-             * says WP_Filesystem should be used after 'wp_loaded', but currently EE's activation process
72
-             * is setup to mostly happen on 'init', and refactoring to have it happen on
73
-             * 'wp_loaded' is too much work on a BETA milestone.
74
-             * So this fix is expected to work if the WP files are owned by the server user,
75
-             * but probably not if the user needs to enter their FTP credentials to modify files
76
-             * and there may be troubles if the WP files are owned by a different user
77
-             * than the server user. But both of these issues should exist in 4.4 and earlier too
78
-             */
79
-            if (false && ! did_action('wp_loaded')) {
80
-                $msg = __('An attempt to access and/or write to a file on the server could not be completed due to a lack of sufficient credentials.', 'event_espresso');
81
-                if (WP_DEBUG) {
82
-                    $msg .= '<br />' .  __('The WP Filesystem can not be accessed until after the "wp_loaded" hook has run, so it\'s best not to attempt access until the "admin_init" hookpoint.', 'event_espresso');
83
-                }
84
-                throw new EE_Error($msg);
85
-            } else {
86
-                // should be loaded if we are past the wp_loaded hook...
87
-                if (! function_exists('WP_Filesystem')) {
88
-                    require_once(ABSPATH . 'wp-admin/includes/file.php');
89
-                    require_once(ABSPATH . 'wp-admin/includes/template.php');
90
-                }
91
-                // turn on output buffering so that we can capture the credentials form
92
-                ob_start();
93
-                $credentials = request_filesystem_credentials('');
94
-                // store credentials form for the time being
95
-                EEH_File::$_credentials_form = ob_get_clean();
96
-                // basically check for direct or previously configured access
97
-                if (! WP_Filesystem($credentials)) {
98
-                    // if credentials do NOT exist
99
-                    if ($credentials === false) {
100
-                        add_action('admin_notices', array( 'EEH_File', 'display_request_filesystem_credentials_form' ), 999);
101
-                        throw new EE_Error(__('An attempt to access and/or write to a file on the server could not be completed due to a lack of sufficient credentials.', 'event_espresso'));
102
-                    } elseif (is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code()) {
103
-                        add_action('admin_notices', array( 'EEH_File', 'display_request_filesystem_credentials_form' ), 999);
104
-                        throw new EE_Error(
105
-                            sprintf(
106
-                                __('WP Filesystem Error: $1%s', 'event_espresso'),
107
-                                $wp_filesystem->errors->get_error_message()
108
-                            )
109
-                        );
110
-                    }
111
-                }
112
-            }
113
-        }
114
-        return $wp_filesystem;
115
-    }
116
-
117
-    /**
118
-     * display_request_filesystem_credentials_form
119
-     */
120
-    public static function display_request_filesystem_credentials_form()
121
-    {
122
-        if (! empty(EEH_File::$_credentials_form)) {
123
-            echo '<div class="updated espresso-notices-attention"><p>' . EEH_File::$_credentials_form . '</p></div>';
124
-        }
125
-    }
126
-
127
-
128
-
129
-    /**
130
-     *    verify_filepath_and_permissions
131
-     *    checks that a file is readable and has sufficient file permissions set to access
132
-     *
133
-     * @access public
134
-     * @param string $full_file_path - full server path to the folder or file
135
-     * @param string $file_name      - name of file if checking a file
136
-     * @param string $file_ext       - file extension (ie: "php") if checking a file
137
-     * @param string $type_of_file   - general type of file (ie: "module"), this is only used to improve error messages
138
-     * @throws EE_Error if filesystem credentials are required
139
-     * @return bool
140
-     */
141
-    public static function verify_filepath_and_permissions($full_file_path = '', $file_name = '', $file_ext = '', $type_of_file = '')
142
-    {
143
-        // load WP_Filesystem and set file permissions
144
-        $wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
145
-        $full_file_path = EEH_File::standardise_directory_separators($full_file_path);
146
-        if (! $wp_filesystem->is_readable(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path))) {
147
-            $file_name = ! empty($type_of_file) ? $file_name . ' ' . $type_of_file : $file_name;
148
-            $file_name .= ! empty($file_ext) ? ' file' : ' folder';
149
-            $msg = sprintf(
150
-                __('The requested %1$s could not be found or is not readable, possibly due to an incorrect filepath, or incorrect file permissions.%2$s', 'event_espresso'),
151
-                $file_name,
152
-                '<br />'
153
-            );
154
-            if (EEH_File::exists($full_file_path)) {
155
-                $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path, $type_of_file);
156
-            } else {
157
-                // no file permissions means the file was not found
158
-                $msg .= sprintf(
159
-                    __('Please ensure the following path is correct: "%s".', 'event_espresso'),
160
-                    $full_file_path
161
-                );
162
-            }
163
-            if (defined('WP_DEBUG') && WP_DEBUG) {
164
-                throw new EE_Error($msg . '||' . $msg);
165
-            }
166
-            return false;
167
-        }
168
-        return true;
169
-    }
170
-
171
-
172
-
173
-    /**
174
-     * _permissions_error_for_unreadable_filepath - attempts to determine why permissions are set incorrectly for a file or folder
175
-     *
176
-     * @access private
177
-     * @param string $full_file_path - full server path to the folder or file
178
-     * @param string $type_of_file - general type of file (ie: "module"), this is only used to improve error messages
179
-     * @throws EE_Error if filesystem credentials are required
180
-     * @return string
181
-     */
182
-    private static function _permissions_error_for_unreadable_filepath($full_file_path = '', $type_of_file = '')
183
-    {
184
-        // load WP_Filesystem and set file permissions
185
-        $wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
186
-        // check file permissions
187
-        $perms = $wp_filesystem->getchmod(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path));
188
-        if ($perms) {
189
-            // file permissions exist, but way be set incorrectly
190
-            $type_of_file = ! empty($type_of_file) ? $type_of_file . ' ' : '';
191
-            $type_of_file .= ! empty($type_of_file) ? 'file' : 'folder';
192
-            return sprintf(
193
-                __('File permissions for the requested %1$s are currently set at "%2$s". The recommended permissions are 644 for files and 755 for folders.', 'event_espresso'),
194
-                $type_of_file,
195
-                $perms
196
-            );
197
-        } else {
198
-            // file exists but file permissions could not be read ?!?!
199
-            return sprintf(
200
-                __('Please ensure that the server and/or PHP configuration allows the current process to access the following file: "%s".', 'event_espresso'),
201
-                $full_file_path
202
-            );
203
-        }
204
-    }
205
-
206
-
207
-
208
-    /**
209
-     * ensure_folder_exists_and_is_writable
210
-     * ensures that a folder exists and is writable, will attempt to create folder if it does not exist
211
-     * Also ensures all the parent folders exist, and if not tries to create them.
212
-     * Also, if this function creates the folder, adds a .htaccess file and index.html file
213
-     * @param string $folder
214
-     * @throws EE_Error if the folder exists and is writeable, but for some reason we
215
-     * can't write to it
216
-     * @return bool false if folder isn't writable; true if it exists and is writeable,
217
-     */
218
-    public static function ensure_folder_exists_and_is_writable($folder = '')
219
-    {
220
-        if (empty($folder)) {
221
-            return false;
222
-        }
223
-        // remove ending /
224
-        $folder = EEH_File::standardise_directory_separators(rtrim($folder, '/\\'));
225
-        $parent_folder = EEH_File::get_parent_folder($folder);
226
-        // add / to folder
227
-        $folder = EEH_File::end_with_directory_separator($folder);
228
-        $wp_filesystem = EEH_File::_get_wp_filesystem($folder);
229
-        if (! $wp_filesystem->is_dir(EEH_File::convert_local_filepath_to_remote_filepath($folder))) {
230
-            // ok so it doesn't exist. Does its parent? Can we write to it?
231
-            if (! EEH_File::ensure_folder_exists_and_is_writable($parent_folder)) {
232
-                return false;
233
-            }
234
-            if (! EEH_File::verify_is_writable($parent_folder, 'folder')) {
235
-                return false;
236
-            } else {
237
-                if (! $wp_filesystem->mkdir(EEH_File::convert_local_filepath_to_remote_filepath($folder))) {
238
-                    if (defined('WP_DEBUG') && WP_DEBUG) {
239
-                        $msg = sprintf(__('"%s" could not be created.', 'event_espresso'), $folder);
240
-                        $msg .= EEH_File::_permissions_error_for_unreadable_filepath($folder);
241
-                        throw new EE_Error($msg);
242
-                    }
243
-                    return false;
244
-                }
245
-                EEH_File::add_index_file($folder);
246
-            }
247
-        } elseif (! EEH_File::verify_is_writable($folder, 'folder')) {
248
-            return false;
249
-        }
250
-        return true;
251
-    }
252
-
253
-
254
-
255
-    /**
256
-     * verify_is_writable - checks if a file or folder is writable
257
-     * @param string $full_path      - full server path to file or folder
258
-     * @param string $file_or_folder - whether checking a file or folder
259
-     * @throws EE_Error if filesystem credentials are required
260
-     * @return bool
261
-     */
262
-    public static function verify_is_writable($full_path = '', $file_or_folder = 'folder')
263
-    {
264
-        // load WP_Filesystem and set file permissions
265
-        $wp_filesystem = EEH_File::_get_wp_filesystem($full_path);
266
-        $full_path = EEH_File::standardise_directory_separators($full_path);
267
-        if (! $wp_filesystem->is_writable(EEH_File::convert_local_filepath_to_remote_filepath($full_path))) {
268
-            if (defined('WP_DEBUG') && WP_DEBUG) {
269
-                $msg = sprintf(__('The "%1$s" %2$s is not writable.', 'event_espresso'), $full_path, $file_or_folder);
270
-                $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_path);
271
-                throw new EE_Error($msg);
272
-            }
273
-            return false;
274
-        }
275
-        return true;
276
-    }
277
-
278
-
279
-
280
-    /**
281
-     * ensure_file_exists_and_is_writable
282
-     * ensures that a file exists and is writable, will attempt to create file if it does not exist.
283
-     * Also ensures all the parent folders exist, and if not tries to create them.
284
-     * @param string $full_file_path
285
-     * @throws EE_Error if filesystem credentials are required
286
-     * @return bool
287
-     */
288
-    public static function ensure_file_exists_and_is_writable($full_file_path = '')
289
-    {
290
-        // load WP_Filesystem and set file permissions
291
-        $wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
292
-        $full_file_path = EEH_File::standardise_directory_separators($full_file_path);
293
-        $parent_folder = EEH_File::get_parent_folder($full_file_path);
294
-        if (! EEH_File::exists($full_file_path)) {
295
-            if (! EEH_File::ensure_folder_exists_and_is_writable($parent_folder)) {
296
-                return false;
297
-            }
298
-            if (! $wp_filesystem->touch(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path))) {
299
-                if (defined('WP_DEBUG') && WP_DEBUG) {
300
-                    $msg = sprintf(__('The "%s" file could not be created.', 'event_espresso'), $full_file_path);
301
-                    $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path);
302
-                    throw new EE_Error($msg);
303
-                }
304
-                return false;
305
-            }
306
-        }
307
-        if (! EEH_File::verify_is_writable($full_file_path, 'file')) {
308
-            return false;
309
-        }
310
-        return true;
311
-    }
312
-
313
-    /**
314
-     * Gets the parent folder. If provided with file, gets the folder that contains it.
315
-     * If provided a folder, gets its parent folder.
316
-     * @param string $file_or_folder_path
317
-     * @return string parent folder, ENDING with a directory separator
318
-     */
319
-    public static function get_parent_folder($file_or_folder_path)
320
-    {
321
-        // find the last /, ignoring a / on the very end
322
-        // eg if given "/var/something/somewhere/", we want to get "somewhere"'s
323
-        // parent folder, "/var/something/"
324
-        $ds = strlen($file_or_folder_path) > 1
325
-            ? strrpos($file_or_folder_path, '/', -2)
326
-            : strlen($file_or_folder_path);
327
-        return substr($file_or_folder_path, 0, $ds + 1);
328
-    }
329
-
330
-    // public static function ensure_folder_exists_recursively( $folder ) {
331
-    //
332
-    // }
333
-
334
-
335
-
336
-    /**
337
-     * get_file_contents
338
-     * @param string $full_file_path
339
-     * @throws EE_Error if filesystem credentials are required
340
-     * @return string
341
-     */
342
-    public static function get_file_contents($full_file_path = '')
343
-    {
344
-        $full_file_path = EEH_File::standardise_directory_separators($full_file_path);
345
-        if (EEH_File::verify_filepath_and_permissions($full_file_path, EEH_File::get_filename_from_filepath($full_file_path), EEH_File::get_file_extension($full_file_path))) {
346
-            // load WP_Filesystem and set file permissions
347
-            $wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
348
-            return $wp_filesystem->get_contents(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path));
349
-        }
350
-        return '';
351
-    }
352
-
353
-
354
-
355
-    /**
356
-     * write_file
357
-     * @param string $full_file_path
358
-     * @param string $file_contents - the content to be written to the file
359
-     * @param string $file_type
360
-     * @throws EE_Error if filesystem credentials are required
361
-     * @return bool
362
-     */
363
-    public static function write_to_file($full_file_path = '', $file_contents = '', $file_type = '')
364
-    {
365
-        $full_file_path = EEH_File::standardise_directory_separators($full_file_path);
366
-        $file_type = ! empty($file_type) ? rtrim($file_type, ' ') . ' ' : '';
367
-        $folder = EEH_File::remove_filename_from_filepath($full_file_path);
368
-        if (! EEH_File::verify_is_writable($folder, 'folder')) {
369
-            if (defined('WP_DEBUG') && WP_DEBUG) {
370
-                $msg = sprintf(__('The %1$sfile located at "%2$s" is not writable.', 'event_espresso'), $file_type, $full_file_path);
371
-                $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path);
372
-                throw new EE_Error($msg);
373
-            }
374
-            return false;
375
-        }
376
-        // load WP_Filesystem and set file permissions
377
-        $wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
378
-        // write the file
379
-        if (! $wp_filesystem->put_contents(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path), $file_contents)) {
380
-            if (defined('WP_DEBUG') && WP_DEBUG) {
381
-                $msg = sprintf(__('The %1$sfile located at "%2$s" could not be written to.', 'event_espresso'), $file_type, $full_file_path);
382
-                $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path, 'f');
383
-                throw new EE_Error($msg);
384
-            }
385
-            return false;
386
-        }
387
-        return true;
388
-    }
389
-
390
-    /**
391
-     * Wrapper for WP_Filesystem_Base::delete
392
-     *
393
-     * @param string $filepath
394
-     * @param boolean $recursive
395
-     * @param boolean|string $type 'd' for directory, 'f' for file
396
-     * @throws EE_Error if filesystem credentials are required
397
-     * @return boolean
398
-     */
399
-    public static function delete($filepath, $recursive = false, $type = false)
400
-    {
401
-        $wp_filesystem = EEH_File::_get_wp_filesystem();
402
-        return $wp_filesystem->delete($filepath, $recursive, $type) ? true : false;
403
-    }
404
-
405
-
406
-
407
-    /**
408
-     * exists
409
-     * checks if a file exists using the WP filesystem
410
-     * @param string $full_file_path
411
-     * @throws EE_Error if filesystem credentials are required
412
-     * @return bool
413
-     */
414
-    public static function exists($full_file_path = '')
415
-    {
416
-        $wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
417
-        return $wp_filesystem->exists(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path)) ? true : false;
418
-    }
419
-
420
-
421
-
422
-    /**
423
-     * is_readable
424
-     * checks if a file is_readable using the WP filesystem
425
-     *
426
-     * @param string $full_file_path
427
-     * @throws EE_Error if filesystem credentials are required
428
-     * @return bool
429
-     */
430
-    public static function is_readable($full_file_path = '')
431
-    {
432
-        $wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
433
-        if ($wp_filesystem->is_readable(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path))) {
434
-            return true;
435
-        } else {
436
-            return false;
437
-        }
438
-    }
439
-
440
-
441
-
442
-    /**
443
-     * remove_filename_from_filepath
444
-     * given a full path to a file including the filename itself, this removes  the filename and returns the path, up to, but NOT including the filename OR slash
445
-     *
446
-     * @param string $full_file_path
447
-     * @return string
448
-     */
449
-    public static function remove_filename_from_filepath($full_file_path = '')
450
-    {
451
-        return pathinfo($full_file_path, PATHINFO_DIRNAME);
452
-    }
453
-
454
-
455
-    /**
456
-     * get_filename_from_filepath. Arguably the same as basename()
457
-     *
458
-     * @param string $full_file_path
459
-     * @return string
460
-     */
461
-    public static function get_filename_from_filepath($full_file_path = '')
462
-    {
463
-        return pathinfo($full_file_path, PATHINFO_BASENAME);
464
-    }
465
-
466
-
467
-    /**
468
-     * get_file_extension
469
-     *
470
-     * @param string $full_file_path
471
-     * @return string
472
-     */
473
-    public static function get_file_extension($full_file_path = '')
474
-    {
475
-        return pathinfo($full_file_path, PATHINFO_EXTENSION);
476
-    }
477
-
478
-
479
-
480
-    /**
481
-     * add_htaccess_deny_from_all so the webserver cannot access this folder
482
-     * @param string $folder
483
-     * @throws EE_Error if filesystem credentials are required
484
-     * @return bool
485
-     */
486
-    public static function add_htaccess_deny_from_all($folder = '')
487
-    {
488
-        $folder = EEH_File::standardise_and_end_with_directory_separator($folder);
489
-        if (! EEH_File::exists($folder . '.htaccess')) {
490
-            if (! EEH_File::write_to_file($folder . '.htaccess', 'deny from all', '.htaccess')) {
491
-                return false;
492
-            }
493
-        }
494
-
495
-        return true;
496
-    }
497
-
498
-    /**
499
-     * Adds an index file to this folder, so folks can't list all the file's contents
500
-     * @param string $folder
501
-     * @throws EE_Error if filesystem credentials are required
502
-     * @return boolean
503
-     */
504
-    public static function add_index_file($folder)
505
-    {
506
-        $folder = EEH_File::standardise_and_end_with_directory_separator($folder);
507
-        if (! EEH_File::exists($folder . 'index.php')) {
508
-            if (! EEH_File::write_to_file($folder . 'index.php', 'You are not permitted to read from this folder', '.php')) {
509
-                return false;
510
-            }
511
-        }
512
-        return true;
513
-    }
514
-
515
-
516
-
517
-    /**
518
-     * Given that the file in $file_path has the normal name, (ie, CLASSNAME.whatever.php),
519
-     * extract that classname.
520
-     * @param string $file_path
521
-     * @return string
522
-     */
523
-    public static function get_classname_from_filepath_with_standard_filename($file_path)
524
-    {
525
-        // extract file from path
526
-        $filename = basename($file_path);
527
-        // now remove the first period and everything after
528
-        $pos_of_first_period = strpos($filename, '.');
529
-        return substr($filename, 0, $pos_of_first_period);
530
-    }
531
-
532
-
533
-
534
-    /**
535
-     * standardise_directory_separators
536
-     *  convert all directory separators in a file path.
537
-     * @param string $file_path
538
-     * @return string
539
-     */
540
-    public static function standardise_directory_separators($file_path)
541
-    {
542
-        return str_replace(array( '\\', '/' ), '/', $file_path);
543
-    }
544
-
545
-
546
-
547
-    /**
548
-     * end_with_directory_separator
549
-     *  ensures that file path ends with '/'
550
-     * @param string $file_path
551
-     * @return string
552
-     */
553
-    public static function end_with_directory_separator($file_path)
554
-    {
555
-        return rtrim($file_path, '/\\') . '/';
556
-    }
557
-
558
-
559
-
560
-    /**
561
-     * shorthand for both EEH_FIle::end_with_directory_separator AND EEH_File::standardise_directory_separators
562
-     * @param $file_path
563
-     * @return string
564
-     */
565
-    public static function standardise_and_end_with_directory_separator($file_path)
566
-    {
567
-        return self::end_with_directory_separator(self::standardise_directory_separators($file_path));
568
-    }
569
-
570
-
571
-
572
-    /**
573
-     * takes the folder name (with or without trailing slash) and finds the files it in,
574
-     * and what the class's name inside of each should be.
575
-     * @param array $folder_paths
576
-     * @param boolean $index_numerically if TRUE, the returned array will be indexed numerically;
577
-     *      if FALSE (Default), returned array will be indexed by the filenames minus extensions.
578
-     *      Set it TRUE if you know there are files in the directory with the same name but different extensions
579
-     * @throws EE_Error if filesystem credentials are required
580
-     * @return array if $index_numerically == TRUE keys are numeric ,
581
-     *      if $index_numerically == FALSE (Default) keys are what the class names SHOULD be;
582
-     *       and values are their filepaths
583
-     */
584
-    public static function get_contents_of_folders($folder_paths = array(), $index_numerically = false)
585
-    {
586
-        $class_to_folder_path = array();
587
-        foreach ($folder_paths as $folder_path) {
588
-            $folder_path = self::standardise_and_end_with_directory_separator($folder_path);
589
-            // load WP_Filesystem and set file permissions
590
-            $files_in_folder = glob($folder_path . '*');
591
-            $class_to_folder_path = array();
592
-            if ($files_in_folder) {
593
-                foreach ($files_in_folder as $file_path) {
594
-                    // only add files, not folders
595
-                    if (! is_dir($file_path)) {
596
-                        if ($index_numerically) {
597
-                            $class_to_folder_path[] = $file_path;
598
-                        } else {
599
-                            $classname = self::get_classname_from_filepath_with_standard_filename($file_path);
600
-                            $class_to_folder_path[ $classname ] = $file_path;
601
-                        }
602
-                    }
603
-                }
604
-            }
605
-        }
606
-        return $class_to_folder_path;
607
-    }
608
-
609
-
610
-
611
-    /**
612
-     * Copies a file. Mostly a wrapper of WP_Filesystem::copy
613
-     * @param string $source_file
614
-     * @param string $destination_file
615
-     * @param boolean $overwrite
616
-     * @throws EE_Error if filesystem credentials are required
617
-     * @return boolean success
618
-     */
619
-    public static function copy($source_file, $destination_file, $overwrite = false)
620
-    {
621
-        $full_source_path = EEH_File::standardise_directory_separators($source_file);
622
-        if (! EEH_File::exists($full_source_path)) {
623
-            if (defined('WP_DEBUG') && WP_DEBUG) {
624
-                $msg = sprintf(__('The file located at "%2$s" is not readable or doesn\'t exist.', 'event_espresso'), $full_source_path);
625
-                $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_source_path);
626
-                throw new EE_Error($msg);
627
-            }
628
-            return false;
629
-        }
630
-
631
-        $full_dest_path = EEH_File::standardise_directory_separators($destination_file);
632
-        $folder = EEH_File::remove_filename_from_filepath($full_dest_path);
633
-        EEH_File::ensure_folder_exists_and_is_writable($folder);
634
-        if (! EEH_File::verify_is_writable($folder, 'folder')) {
635
-            if (defined('WP_DEBUG') && WP_DEBUG) {
636
-                $msg = sprintf(__('The file located at "%2$s" is not writable.', 'event_espresso'), $full_dest_path);
637
-                $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_dest_path);
638
-                throw new EE_Error($msg);
639
-            }
640
-            return false;
641
-        }
642
-
643
-        // load WP_Filesystem and set file permissions
644
-        $wp_filesystem = EEH_File::_get_wp_filesystem($destination_file);
645
-        // write the file
646
-        if (! $wp_filesystem->copy(
647
-            EEH_File::convert_local_filepath_to_remote_filepath($full_source_path),
648
-            EEH_File::convert_local_filepath_to_remote_filepath($full_dest_path),
649
-            $overwrite
650
-        )) {
651
-            if (defined('WP_DEBUG') && WP_DEBUG) {
652
-                $msg = sprintf(__('Attempted writing to file %1$s, but could not, probably because of permissions issues', 'event_espresso'), $full_source_path);
653
-                $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_source_path, 'f');
654
-                throw new EE_Error($msg);
655
-            }
656
-            return false;
657
-        }
658
-        return true;
659
-    }
660
-
661
-    /**
662
-     * Reports whether or not the filepath is in the EE uploads folder or not
663
-     * @param string $filepath
664
-     * @return boolean
665
-     */
666
-    public static function is_in_uploads_folder($filepath)
667
-    {
668
-        $uploads = wp_upload_dir();
669
-        return strpos($filepath, $uploads['basedir']) === 0 ? true : false;
670
-    }
671
-
672
-    /**
673
-     * Given a "local" filepath (what you probably thought was the only filepath),
674
-     * converts it into a "remote" filepath (the filepath the currently-in-use
675
-     * $wp_filesystem needs to use access the folder or file).
676
-     * See http://wordpress.stackexchange.com/questions/124900/using-wp-filesystem-in-plugins
677
-     * @param WP_Filesystem_Base $wp_filesystem we aren't initially sure which one
678
-     * is in use, so you need to provide it
679
-     * @param string $local_filepath the filepath to the folder/file locally
680
-     * @throws EE_Error if filesystem credentials are required
681
-     * @return string the remote filepath (eg the filepath the filesystem method, eg
682
-     * ftp or ssh, will use to access the folder
683
-     */
684
-    public static function convert_local_filepath_to_remote_filepath($local_filepath)
685
-    {
686
-        $wp_filesystem = EEH_File::_get_wp_filesystem($local_filepath);
687
-        return str_replace(WP_CONTENT_DIR . '/', $wp_filesystem->wp_content_dir(), $local_filepath);
688
-    }
27
+	/**
28
+	 * @var string $_credentials_form
29
+	 */
30
+	private static $_credentials_form;
31
+
32
+	protected static $_wp_filesystem_direct;
33
+
34
+	/**
35
+	 * @param string|null $filepath the filepath we want to work in. If its in the
36
+	 * wp uploads directory, we'll want to just use the filesystem directly.
37
+	 * If not provided, we have to assume its not in the uploads directory
38
+	 * @throws EE_Error if filesystem credentials are required
39
+	 * @return WP_Filesystem_Base
40
+	 */
41
+	private static function _get_wp_filesystem($filepath = null)
42
+	{
43
+		if (apply_filters(
44
+			'FHEE__EEH_File___get_wp_filesystem__allow_using_filesystem_direct',
45
+			$filepath && EEH_File::is_in_uploads_folder($filepath),
46
+			$filepath
47
+		) ) {
48
+			if (! EEH_File::$_wp_filesystem_direct instanceof WP_Filesystem_Direct) {
49
+				require_once(ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php');
50
+				$method = 'direct';
51
+				$wp_filesystem_direct_file = apply_filters('filesystem_method_file', ABSPATH . 'wp-admin/includes/class-wp-filesystem-' . $method . '.php', $method);
52
+				// check constants defined, just like in wp-admin/includes/file.php's WP_Filesystem()
53
+				if (! defined('FS_CHMOD_DIR')) {
54
+					define('FS_CHMOD_DIR', ( fileperms(ABSPATH) & 0777 | 0755 ));
55
+				}
56
+				if (! defined('FS_CHMOD_FILE')) {
57
+					define('FS_CHMOD_FILE', ( fileperms(ABSPATH . 'index.php') & 0777 | 0644 ));
58
+				}
59
+				require_once($wp_filesystem_direct_file);
60
+				EEH_File::$_wp_filesystem_direct = new WP_Filesystem_Direct(array());
61
+			}
62
+			return EEH_File::$_wp_filesystem_direct;
63
+		}
64
+		global $wp_filesystem;
65
+		// no filesystem setup ???
66
+		if (! $wp_filesystem instanceof WP_Filesystem_Base) {
67
+			// if some eager beaver's just trying to get in there too early...
68
+			// let them do it, because we are one of those eager beavers! :P
69
+			/**
70
+			 * more explanations are probably merited. http://codex.wordpress.org/Filesystem_API#Initializing_WP_Filesystem_Base
71
+			 * says WP_Filesystem should be used after 'wp_loaded', but currently EE's activation process
72
+			 * is setup to mostly happen on 'init', and refactoring to have it happen on
73
+			 * 'wp_loaded' is too much work on a BETA milestone.
74
+			 * So this fix is expected to work if the WP files are owned by the server user,
75
+			 * but probably not if the user needs to enter their FTP credentials to modify files
76
+			 * and there may be troubles if the WP files are owned by a different user
77
+			 * than the server user. But both of these issues should exist in 4.4 and earlier too
78
+			 */
79
+			if (false && ! did_action('wp_loaded')) {
80
+				$msg = __('An attempt to access and/or write to a file on the server could not be completed due to a lack of sufficient credentials.', 'event_espresso');
81
+				if (WP_DEBUG) {
82
+					$msg .= '<br />' .  __('The WP Filesystem can not be accessed until after the "wp_loaded" hook has run, so it\'s best not to attempt access until the "admin_init" hookpoint.', 'event_espresso');
83
+				}
84
+				throw new EE_Error($msg);
85
+			} else {
86
+				// should be loaded if we are past the wp_loaded hook...
87
+				if (! function_exists('WP_Filesystem')) {
88
+					require_once(ABSPATH . 'wp-admin/includes/file.php');
89
+					require_once(ABSPATH . 'wp-admin/includes/template.php');
90
+				}
91
+				// turn on output buffering so that we can capture the credentials form
92
+				ob_start();
93
+				$credentials = request_filesystem_credentials('');
94
+				// store credentials form for the time being
95
+				EEH_File::$_credentials_form = ob_get_clean();
96
+				// basically check for direct or previously configured access
97
+				if (! WP_Filesystem($credentials)) {
98
+					// if credentials do NOT exist
99
+					if ($credentials === false) {
100
+						add_action('admin_notices', array( 'EEH_File', 'display_request_filesystem_credentials_form' ), 999);
101
+						throw new EE_Error(__('An attempt to access and/or write to a file on the server could not be completed due to a lack of sufficient credentials.', 'event_espresso'));
102
+					} elseif (is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code()) {
103
+						add_action('admin_notices', array( 'EEH_File', 'display_request_filesystem_credentials_form' ), 999);
104
+						throw new EE_Error(
105
+							sprintf(
106
+								__('WP Filesystem Error: $1%s', 'event_espresso'),
107
+								$wp_filesystem->errors->get_error_message()
108
+							)
109
+						);
110
+					}
111
+				}
112
+			}
113
+		}
114
+		return $wp_filesystem;
115
+	}
116
+
117
+	/**
118
+	 * display_request_filesystem_credentials_form
119
+	 */
120
+	public static function display_request_filesystem_credentials_form()
121
+	{
122
+		if (! empty(EEH_File::$_credentials_form)) {
123
+			echo '<div class="updated espresso-notices-attention"><p>' . EEH_File::$_credentials_form . '</p></div>';
124
+		}
125
+	}
126
+
127
+
128
+
129
+	/**
130
+	 *    verify_filepath_and_permissions
131
+	 *    checks that a file is readable and has sufficient file permissions set to access
132
+	 *
133
+	 * @access public
134
+	 * @param string $full_file_path - full server path to the folder or file
135
+	 * @param string $file_name      - name of file if checking a file
136
+	 * @param string $file_ext       - file extension (ie: "php") if checking a file
137
+	 * @param string $type_of_file   - general type of file (ie: "module"), this is only used to improve error messages
138
+	 * @throws EE_Error if filesystem credentials are required
139
+	 * @return bool
140
+	 */
141
+	public static function verify_filepath_and_permissions($full_file_path = '', $file_name = '', $file_ext = '', $type_of_file = '')
142
+	{
143
+		// load WP_Filesystem and set file permissions
144
+		$wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
145
+		$full_file_path = EEH_File::standardise_directory_separators($full_file_path);
146
+		if (! $wp_filesystem->is_readable(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path))) {
147
+			$file_name = ! empty($type_of_file) ? $file_name . ' ' . $type_of_file : $file_name;
148
+			$file_name .= ! empty($file_ext) ? ' file' : ' folder';
149
+			$msg = sprintf(
150
+				__('The requested %1$s could not be found or is not readable, possibly due to an incorrect filepath, or incorrect file permissions.%2$s', 'event_espresso'),
151
+				$file_name,
152
+				'<br />'
153
+			);
154
+			if (EEH_File::exists($full_file_path)) {
155
+				$msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path, $type_of_file);
156
+			} else {
157
+				// no file permissions means the file was not found
158
+				$msg .= sprintf(
159
+					__('Please ensure the following path is correct: "%s".', 'event_espresso'),
160
+					$full_file_path
161
+				);
162
+			}
163
+			if (defined('WP_DEBUG') && WP_DEBUG) {
164
+				throw new EE_Error($msg . '||' . $msg);
165
+			}
166
+			return false;
167
+		}
168
+		return true;
169
+	}
170
+
171
+
172
+
173
+	/**
174
+	 * _permissions_error_for_unreadable_filepath - attempts to determine why permissions are set incorrectly for a file or folder
175
+	 *
176
+	 * @access private
177
+	 * @param string $full_file_path - full server path to the folder or file
178
+	 * @param string $type_of_file - general type of file (ie: "module"), this is only used to improve error messages
179
+	 * @throws EE_Error if filesystem credentials are required
180
+	 * @return string
181
+	 */
182
+	private static function _permissions_error_for_unreadable_filepath($full_file_path = '', $type_of_file = '')
183
+	{
184
+		// load WP_Filesystem and set file permissions
185
+		$wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
186
+		// check file permissions
187
+		$perms = $wp_filesystem->getchmod(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path));
188
+		if ($perms) {
189
+			// file permissions exist, but way be set incorrectly
190
+			$type_of_file = ! empty($type_of_file) ? $type_of_file . ' ' : '';
191
+			$type_of_file .= ! empty($type_of_file) ? 'file' : 'folder';
192
+			return sprintf(
193
+				__('File permissions for the requested %1$s are currently set at "%2$s". The recommended permissions are 644 for files and 755 for folders.', 'event_espresso'),
194
+				$type_of_file,
195
+				$perms
196
+			);
197
+		} else {
198
+			// file exists but file permissions could not be read ?!?!
199
+			return sprintf(
200
+				__('Please ensure that the server and/or PHP configuration allows the current process to access the following file: "%s".', 'event_espresso'),
201
+				$full_file_path
202
+			);
203
+		}
204
+	}
205
+
206
+
207
+
208
+	/**
209
+	 * ensure_folder_exists_and_is_writable
210
+	 * ensures that a folder exists and is writable, will attempt to create folder if it does not exist
211
+	 * Also ensures all the parent folders exist, and if not tries to create them.
212
+	 * Also, if this function creates the folder, adds a .htaccess file and index.html file
213
+	 * @param string $folder
214
+	 * @throws EE_Error if the folder exists and is writeable, but for some reason we
215
+	 * can't write to it
216
+	 * @return bool false if folder isn't writable; true if it exists and is writeable,
217
+	 */
218
+	public static function ensure_folder_exists_and_is_writable($folder = '')
219
+	{
220
+		if (empty($folder)) {
221
+			return false;
222
+		}
223
+		// remove ending /
224
+		$folder = EEH_File::standardise_directory_separators(rtrim($folder, '/\\'));
225
+		$parent_folder = EEH_File::get_parent_folder($folder);
226
+		// add / to folder
227
+		$folder = EEH_File::end_with_directory_separator($folder);
228
+		$wp_filesystem = EEH_File::_get_wp_filesystem($folder);
229
+		if (! $wp_filesystem->is_dir(EEH_File::convert_local_filepath_to_remote_filepath($folder))) {
230
+			// ok so it doesn't exist. Does its parent? Can we write to it?
231
+			if (! EEH_File::ensure_folder_exists_and_is_writable($parent_folder)) {
232
+				return false;
233
+			}
234
+			if (! EEH_File::verify_is_writable($parent_folder, 'folder')) {
235
+				return false;
236
+			} else {
237
+				if (! $wp_filesystem->mkdir(EEH_File::convert_local_filepath_to_remote_filepath($folder))) {
238
+					if (defined('WP_DEBUG') && WP_DEBUG) {
239
+						$msg = sprintf(__('"%s" could not be created.', 'event_espresso'), $folder);
240
+						$msg .= EEH_File::_permissions_error_for_unreadable_filepath($folder);
241
+						throw new EE_Error($msg);
242
+					}
243
+					return false;
244
+				}
245
+				EEH_File::add_index_file($folder);
246
+			}
247
+		} elseif (! EEH_File::verify_is_writable($folder, 'folder')) {
248
+			return false;
249
+		}
250
+		return true;
251
+	}
252
+
253
+
254
+
255
+	/**
256
+	 * verify_is_writable - checks if a file or folder is writable
257
+	 * @param string $full_path      - full server path to file or folder
258
+	 * @param string $file_or_folder - whether checking a file or folder
259
+	 * @throws EE_Error if filesystem credentials are required
260
+	 * @return bool
261
+	 */
262
+	public static function verify_is_writable($full_path = '', $file_or_folder = 'folder')
263
+	{
264
+		// load WP_Filesystem and set file permissions
265
+		$wp_filesystem = EEH_File::_get_wp_filesystem($full_path);
266
+		$full_path = EEH_File::standardise_directory_separators($full_path);
267
+		if (! $wp_filesystem->is_writable(EEH_File::convert_local_filepath_to_remote_filepath($full_path))) {
268
+			if (defined('WP_DEBUG') && WP_DEBUG) {
269
+				$msg = sprintf(__('The "%1$s" %2$s is not writable.', 'event_espresso'), $full_path, $file_or_folder);
270
+				$msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_path);
271
+				throw new EE_Error($msg);
272
+			}
273
+			return false;
274
+		}
275
+		return true;
276
+	}
277
+
278
+
279
+
280
+	/**
281
+	 * ensure_file_exists_and_is_writable
282
+	 * ensures that a file exists and is writable, will attempt to create file if it does not exist.
283
+	 * Also ensures all the parent folders exist, and if not tries to create them.
284
+	 * @param string $full_file_path
285
+	 * @throws EE_Error if filesystem credentials are required
286
+	 * @return bool
287
+	 */
288
+	public static function ensure_file_exists_and_is_writable($full_file_path = '')
289
+	{
290
+		// load WP_Filesystem and set file permissions
291
+		$wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
292
+		$full_file_path = EEH_File::standardise_directory_separators($full_file_path);
293
+		$parent_folder = EEH_File::get_parent_folder($full_file_path);
294
+		if (! EEH_File::exists($full_file_path)) {
295
+			if (! EEH_File::ensure_folder_exists_and_is_writable($parent_folder)) {
296
+				return false;
297
+			}
298
+			if (! $wp_filesystem->touch(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path))) {
299
+				if (defined('WP_DEBUG') && WP_DEBUG) {
300
+					$msg = sprintf(__('The "%s" file could not be created.', 'event_espresso'), $full_file_path);
301
+					$msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path);
302
+					throw new EE_Error($msg);
303
+				}
304
+				return false;
305
+			}
306
+		}
307
+		if (! EEH_File::verify_is_writable($full_file_path, 'file')) {
308
+			return false;
309
+		}
310
+		return true;
311
+	}
312
+
313
+	/**
314
+	 * Gets the parent folder. If provided with file, gets the folder that contains it.
315
+	 * If provided a folder, gets its parent folder.
316
+	 * @param string $file_or_folder_path
317
+	 * @return string parent folder, ENDING with a directory separator
318
+	 */
319
+	public static function get_parent_folder($file_or_folder_path)
320
+	{
321
+		// find the last /, ignoring a / on the very end
322
+		// eg if given "/var/something/somewhere/", we want to get "somewhere"'s
323
+		// parent folder, "/var/something/"
324
+		$ds = strlen($file_or_folder_path) > 1
325
+			? strrpos($file_or_folder_path, '/', -2)
326
+			: strlen($file_or_folder_path);
327
+		return substr($file_or_folder_path, 0, $ds + 1);
328
+	}
329
+
330
+	// public static function ensure_folder_exists_recursively( $folder ) {
331
+	//
332
+	// }
333
+
334
+
335
+
336
+	/**
337
+	 * get_file_contents
338
+	 * @param string $full_file_path
339
+	 * @throws EE_Error if filesystem credentials are required
340
+	 * @return string
341
+	 */
342
+	public static function get_file_contents($full_file_path = '')
343
+	{
344
+		$full_file_path = EEH_File::standardise_directory_separators($full_file_path);
345
+		if (EEH_File::verify_filepath_and_permissions($full_file_path, EEH_File::get_filename_from_filepath($full_file_path), EEH_File::get_file_extension($full_file_path))) {
346
+			// load WP_Filesystem and set file permissions
347
+			$wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
348
+			return $wp_filesystem->get_contents(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path));
349
+		}
350
+		return '';
351
+	}
352
+
353
+
354
+
355
+	/**
356
+	 * write_file
357
+	 * @param string $full_file_path
358
+	 * @param string $file_contents - the content to be written to the file
359
+	 * @param string $file_type
360
+	 * @throws EE_Error if filesystem credentials are required
361
+	 * @return bool
362
+	 */
363
+	public static function write_to_file($full_file_path = '', $file_contents = '', $file_type = '')
364
+	{
365
+		$full_file_path = EEH_File::standardise_directory_separators($full_file_path);
366
+		$file_type = ! empty($file_type) ? rtrim($file_type, ' ') . ' ' : '';
367
+		$folder = EEH_File::remove_filename_from_filepath($full_file_path);
368
+		if (! EEH_File::verify_is_writable($folder, 'folder')) {
369
+			if (defined('WP_DEBUG') && WP_DEBUG) {
370
+				$msg = sprintf(__('The %1$sfile located at "%2$s" is not writable.', 'event_espresso'), $file_type, $full_file_path);
371
+				$msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path);
372
+				throw new EE_Error($msg);
373
+			}
374
+			return false;
375
+		}
376
+		// load WP_Filesystem and set file permissions
377
+		$wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
378
+		// write the file
379
+		if (! $wp_filesystem->put_contents(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path), $file_contents)) {
380
+			if (defined('WP_DEBUG') && WP_DEBUG) {
381
+				$msg = sprintf(__('The %1$sfile located at "%2$s" could not be written to.', 'event_espresso'), $file_type, $full_file_path);
382
+				$msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path, 'f');
383
+				throw new EE_Error($msg);
384
+			}
385
+			return false;
386
+		}
387
+		return true;
388
+	}
389
+
390
+	/**
391
+	 * Wrapper for WP_Filesystem_Base::delete
392
+	 *
393
+	 * @param string $filepath
394
+	 * @param boolean $recursive
395
+	 * @param boolean|string $type 'd' for directory, 'f' for file
396
+	 * @throws EE_Error if filesystem credentials are required
397
+	 * @return boolean
398
+	 */
399
+	public static function delete($filepath, $recursive = false, $type = false)
400
+	{
401
+		$wp_filesystem = EEH_File::_get_wp_filesystem();
402
+		return $wp_filesystem->delete($filepath, $recursive, $type) ? true : false;
403
+	}
404
+
405
+
406
+
407
+	/**
408
+	 * exists
409
+	 * checks if a file exists using the WP filesystem
410
+	 * @param string $full_file_path
411
+	 * @throws EE_Error if filesystem credentials are required
412
+	 * @return bool
413
+	 */
414
+	public static function exists($full_file_path = '')
415
+	{
416
+		$wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
417
+		return $wp_filesystem->exists(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path)) ? true : false;
418
+	}
419
+
420
+
421
+
422
+	/**
423
+	 * is_readable
424
+	 * checks if a file is_readable using the WP filesystem
425
+	 *
426
+	 * @param string $full_file_path
427
+	 * @throws EE_Error if filesystem credentials are required
428
+	 * @return bool
429
+	 */
430
+	public static function is_readable($full_file_path = '')
431
+	{
432
+		$wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
433
+		if ($wp_filesystem->is_readable(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path))) {
434
+			return true;
435
+		} else {
436
+			return false;
437
+		}
438
+	}
439
+
440
+
441
+
442
+	/**
443
+	 * remove_filename_from_filepath
444
+	 * given a full path to a file including the filename itself, this removes  the filename and returns the path, up to, but NOT including the filename OR slash
445
+	 *
446
+	 * @param string $full_file_path
447
+	 * @return string
448
+	 */
449
+	public static function remove_filename_from_filepath($full_file_path = '')
450
+	{
451
+		return pathinfo($full_file_path, PATHINFO_DIRNAME);
452
+	}
453
+
454
+
455
+	/**
456
+	 * get_filename_from_filepath. Arguably the same as basename()
457
+	 *
458
+	 * @param string $full_file_path
459
+	 * @return string
460
+	 */
461
+	public static function get_filename_from_filepath($full_file_path = '')
462
+	{
463
+		return pathinfo($full_file_path, PATHINFO_BASENAME);
464
+	}
465
+
466
+
467
+	/**
468
+	 * get_file_extension
469
+	 *
470
+	 * @param string $full_file_path
471
+	 * @return string
472
+	 */
473
+	public static function get_file_extension($full_file_path = '')
474
+	{
475
+		return pathinfo($full_file_path, PATHINFO_EXTENSION);
476
+	}
477
+
478
+
479
+
480
+	/**
481
+	 * add_htaccess_deny_from_all so the webserver cannot access this folder
482
+	 * @param string $folder
483
+	 * @throws EE_Error if filesystem credentials are required
484
+	 * @return bool
485
+	 */
486
+	public static function add_htaccess_deny_from_all($folder = '')
487
+	{
488
+		$folder = EEH_File::standardise_and_end_with_directory_separator($folder);
489
+		if (! EEH_File::exists($folder . '.htaccess')) {
490
+			if (! EEH_File::write_to_file($folder . '.htaccess', 'deny from all', '.htaccess')) {
491
+				return false;
492
+			}
493
+		}
494
+
495
+		return true;
496
+	}
497
+
498
+	/**
499
+	 * Adds an index file to this folder, so folks can't list all the file's contents
500
+	 * @param string $folder
501
+	 * @throws EE_Error if filesystem credentials are required
502
+	 * @return boolean
503
+	 */
504
+	public static function add_index_file($folder)
505
+	{
506
+		$folder = EEH_File::standardise_and_end_with_directory_separator($folder);
507
+		if (! EEH_File::exists($folder . 'index.php')) {
508
+			if (! EEH_File::write_to_file($folder . 'index.php', 'You are not permitted to read from this folder', '.php')) {
509
+				return false;
510
+			}
511
+		}
512
+		return true;
513
+	}
514
+
515
+
516
+
517
+	/**
518
+	 * Given that the file in $file_path has the normal name, (ie, CLASSNAME.whatever.php),
519
+	 * extract that classname.
520
+	 * @param string $file_path
521
+	 * @return string
522
+	 */
523
+	public static function get_classname_from_filepath_with_standard_filename($file_path)
524
+	{
525
+		// extract file from path
526
+		$filename = basename($file_path);
527
+		// now remove the first period and everything after
528
+		$pos_of_first_period = strpos($filename, '.');
529
+		return substr($filename, 0, $pos_of_first_period);
530
+	}
531
+
532
+
533
+
534
+	/**
535
+	 * standardise_directory_separators
536
+	 *  convert all directory separators in a file path.
537
+	 * @param string $file_path
538
+	 * @return string
539
+	 */
540
+	public static function standardise_directory_separators($file_path)
541
+	{
542
+		return str_replace(array( '\\', '/' ), '/', $file_path);
543
+	}
544
+
545
+
546
+
547
+	/**
548
+	 * end_with_directory_separator
549
+	 *  ensures that file path ends with '/'
550
+	 * @param string $file_path
551
+	 * @return string
552
+	 */
553
+	public static function end_with_directory_separator($file_path)
554
+	{
555
+		return rtrim($file_path, '/\\') . '/';
556
+	}
557
+
558
+
559
+
560
+	/**
561
+	 * shorthand for both EEH_FIle::end_with_directory_separator AND EEH_File::standardise_directory_separators
562
+	 * @param $file_path
563
+	 * @return string
564
+	 */
565
+	public static function standardise_and_end_with_directory_separator($file_path)
566
+	{
567
+		return self::end_with_directory_separator(self::standardise_directory_separators($file_path));
568
+	}
569
+
570
+
571
+
572
+	/**
573
+	 * takes the folder name (with or without trailing slash) and finds the files it in,
574
+	 * and what the class's name inside of each should be.
575
+	 * @param array $folder_paths
576
+	 * @param boolean $index_numerically if TRUE, the returned array will be indexed numerically;
577
+	 *      if FALSE (Default), returned array will be indexed by the filenames minus extensions.
578
+	 *      Set it TRUE if you know there are files in the directory with the same name but different extensions
579
+	 * @throws EE_Error if filesystem credentials are required
580
+	 * @return array if $index_numerically == TRUE keys are numeric ,
581
+	 *      if $index_numerically == FALSE (Default) keys are what the class names SHOULD be;
582
+	 *       and values are their filepaths
583
+	 */
584
+	public static function get_contents_of_folders($folder_paths = array(), $index_numerically = false)
585
+	{
586
+		$class_to_folder_path = array();
587
+		foreach ($folder_paths as $folder_path) {
588
+			$folder_path = self::standardise_and_end_with_directory_separator($folder_path);
589
+			// load WP_Filesystem and set file permissions
590
+			$files_in_folder = glob($folder_path . '*');
591
+			$class_to_folder_path = array();
592
+			if ($files_in_folder) {
593
+				foreach ($files_in_folder as $file_path) {
594
+					// only add files, not folders
595
+					if (! is_dir($file_path)) {
596
+						if ($index_numerically) {
597
+							$class_to_folder_path[] = $file_path;
598
+						} else {
599
+							$classname = self::get_classname_from_filepath_with_standard_filename($file_path);
600
+							$class_to_folder_path[ $classname ] = $file_path;
601
+						}
602
+					}
603
+				}
604
+			}
605
+		}
606
+		return $class_to_folder_path;
607
+	}
608
+
609
+
610
+
611
+	/**
612
+	 * Copies a file. Mostly a wrapper of WP_Filesystem::copy
613
+	 * @param string $source_file
614
+	 * @param string $destination_file
615
+	 * @param boolean $overwrite
616
+	 * @throws EE_Error if filesystem credentials are required
617
+	 * @return boolean success
618
+	 */
619
+	public static function copy($source_file, $destination_file, $overwrite = false)
620
+	{
621
+		$full_source_path = EEH_File::standardise_directory_separators($source_file);
622
+		if (! EEH_File::exists($full_source_path)) {
623
+			if (defined('WP_DEBUG') && WP_DEBUG) {
624
+				$msg = sprintf(__('The file located at "%2$s" is not readable or doesn\'t exist.', 'event_espresso'), $full_source_path);
625
+				$msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_source_path);
626
+				throw new EE_Error($msg);
627
+			}
628
+			return false;
629
+		}
630
+
631
+		$full_dest_path = EEH_File::standardise_directory_separators($destination_file);
632
+		$folder = EEH_File::remove_filename_from_filepath($full_dest_path);
633
+		EEH_File::ensure_folder_exists_and_is_writable($folder);
634
+		if (! EEH_File::verify_is_writable($folder, 'folder')) {
635
+			if (defined('WP_DEBUG') && WP_DEBUG) {
636
+				$msg = sprintf(__('The file located at "%2$s" is not writable.', 'event_espresso'), $full_dest_path);
637
+				$msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_dest_path);
638
+				throw new EE_Error($msg);
639
+			}
640
+			return false;
641
+		}
642
+
643
+		// load WP_Filesystem and set file permissions
644
+		$wp_filesystem = EEH_File::_get_wp_filesystem($destination_file);
645
+		// write the file
646
+		if (! $wp_filesystem->copy(
647
+			EEH_File::convert_local_filepath_to_remote_filepath($full_source_path),
648
+			EEH_File::convert_local_filepath_to_remote_filepath($full_dest_path),
649
+			$overwrite
650
+		)) {
651
+			if (defined('WP_DEBUG') && WP_DEBUG) {
652
+				$msg = sprintf(__('Attempted writing to file %1$s, but could not, probably because of permissions issues', 'event_espresso'), $full_source_path);
653
+				$msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_source_path, 'f');
654
+				throw new EE_Error($msg);
655
+			}
656
+			return false;
657
+		}
658
+		return true;
659
+	}
660
+
661
+	/**
662
+	 * Reports whether or not the filepath is in the EE uploads folder or not
663
+	 * @param string $filepath
664
+	 * @return boolean
665
+	 */
666
+	public static function is_in_uploads_folder($filepath)
667
+	{
668
+		$uploads = wp_upload_dir();
669
+		return strpos($filepath, $uploads['basedir']) === 0 ? true : false;
670
+	}
671
+
672
+	/**
673
+	 * Given a "local" filepath (what you probably thought was the only filepath),
674
+	 * converts it into a "remote" filepath (the filepath the currently-in-use
675
+	 * $wp_filesystem needs to use access the folder or file).
676
+	 * See http://wordpress.stackexchange.com/questions/124900/using-wp-filesystem-in-plugins
677
+	 * @param WP_Filesystem_Base $wp_filesystem we aren't initially sure which one
678
+	 * is in use, so you need to provide it
679
+	 * @param string $local_filepath the filepath to the folder/file locally
680
+	 * @throws EE_Error if filesystem credentials are required
681
+	 * @return string the remote filepath (eg the filepath the filesystem method, eg
682
+	 * ftp or ssh, will use to access the folder
683
+	 */
684
+	public static function convert_local_filepath_to_remote_filepath($local_filepath)
685
+	{
686
+		$wp_filesystem = EEH_File::_get_wp_filesystem($local_filepath);
687
+		return str_replace(WP_CONTENT_DIR . '/', $wp_filesystem->wp_content_dir(), $local_filepath);
688
+	}
689 689
 }
Please login to merge, or discard this patch.
Spacing   +48 added lines, -48 removed lines patch added patch discarded remove patch
@@ -44,17 +44,17 @@  discard block
 block discarded – undo
44 44
             'FHEE__EEH_File___get_wp_filesystem__allow_using_filesystem_direct',
45 45
             $filepath && EEH_File::is_in_uploads_folder($filepath),
46 46
             $filepath
47
-        ) ) {
48
-            if (! EEH_File::$_wp_filesystem_direct instanceof WP_Filesystem_Direct) {
49
-                require_once(ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php');
47
+        )) {
48
+            if ( ! EEH_File::$_wp_filesystem_direct instanceof WP_Filesystem_Direct) {
49
+                require_once(ABSPATH.'wp-admin/includes/class-wp-filesystem-base.php');
50 50
                 $method = 'direct';
51
-                $wp_filesystem_direct_file = apply_filters('filesystem_method_file', ABSPATH . 'wp-admin/includes/class-wp-filesystem-' . $method . '.php', $method);
51
+                $wp_filesystem_direct_file = apply_filters('filesystem_method_file', ABSPATH.'wp-admin/includes/class-wp-filesystem-'.$method.'.php', $method);
52 52
                 // check constants defined, just like in wp-admin/includes/file.php's WP_Filesystem()
53
-                if (! defined('FS_CHMOD_DIR')) {
54
-                    define('FS_CHMOD_DIR', ( fileperms(ABSPATH) & 0777 | 0755 ));
53
+                if ( ! defined('FS_CHMOD_DIR')) {
54
+                    define('FS_CHMOD_DIR', (fileperms(ABSPATH) & 0777 | 0755));
55 55
                 }
56
-                if (! defined('FS_CHMOD_FILE')) {
57
-                    define('FS_CHMOD_FILE', ( fileperms(ABSPATH . 'index.php') & 0777 | 0644 ));
56
+                if ( ! defined('FS_CHMOD_FILE')) {
57
+                    define('FS_CHMOD_FILE', (fileperms(ABSPATH.'index.php') & 0777 | 0644));
58 58
                 }
59 59
                 require_once($wp_filesystem_direct_file);
60 60
                 EEH_File::$_wp_filesystem_direct = new WP_Filesystem_Direct(array());
@@ -63,7 +63,7 @@  discard block
 block discarded – undo
63 63
         }
64 64
         global $wp_filesystem;
65 65
         // no filesystem setup ???
66
-        if (! $wp_filesystem instanceof WP_Filesystem_Base) {
66
+        if ( ! $wp_filesystem instanceof WP_Filesystem_Base) {
67 67
             // if some eager beaver's just trying to get in there too early...
68 68
             // let them do it, because we are one of those eager beavers! :P
69 69
             /**
@@ -79,14 +79,14 @@  discard block
 block discarded – undo
79 79
             if (false && ! did_action('wp_loaded')) {
80 80
                 $msg = __('An attempt to access and/or write to a file on the server could not be completed due to a lack of sufficient credentials.', 'event_espresso');
81 81
                 if (WP_DEBUG) {
82
-                    $msg .= '<br />' .  __('The WP Filesystem can not be accessed until after the "wp_loaded" hook has run, so it\'s best not to attempt access until the "admin_init" hookpoint.', 'event_espresso');
82
+                    $msg .= '<br />'.__('The WP Filesystem can not be accessed until after the "wp_loaded" hook has run, so it\'s best not to attempt access until the "admin_init" hookpoint.', 'event_espresso');
83 83
                 }
84 84
                 throw new EE_Error($msg);
85 85
             } else {
86 86
                 // should be loaded if we are past the wp_loaded hook...
87
-                if (! function_exists('WP_Filesystem')) {
88
-                    require_once(ABSPATH . 'wp-admin/includes/file.php');
89
-                    require_once(ABSPATH . 'wp-admin/includes/template.php');
87
+                if ( ! function_exists('WP_Filesystem')) {
88
+                    require_once(ABSPATH.'wp-admin/includes/file.php');
89
+                    require_once(ABSPATH.'wp-admin/includes/template.php');
90 90
                 }
91 91
                 // turn on output buffering so that we can capture the credentials form
92 92
                 ob_start();
@@ -94,13 +94,13 @@  discard block
 block discarded – undo
94 94
                 // store credentials form for the time being
95 95
                 EEH_File::$_credentials_form = ob_get_clean();
96 96
                 // basically check for direct or previously configured access
97
-                if (! WP_Filesystem($credentials)) {
97
+                if ( ! WP_Filesystem($credentials)) {
98 98
                     // if credentials do NOT exist
99 99
                     if ($credentials === false) {
100
-                        add_action('admin_notices', array( 'EEH_File', 'display_request_filesystem_credentials_form' ), 999);
100
+                        add_action('admin_notices', array('EEH_File', 'display_request_filesystem_credentials_form'), 999);
101 101
                         throw new EE_Error(__('An attempt to access and/or write to a file on the server could not be completed due to a lack of sufficient credentials.', 'event_espresso'));
102 102
                     } elseif (is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code()) {
103
-                        add_action('admin_notices', array( 'EEH_File', 'display_request_filesystem_credentials_form' ), 999);
103
+                        add_action('admin_notices', array('EEH_File', 'display_request_filesystem_credentials_form'), 999);
104 104
                         throw new EE_Error(
105 105
                             sprintf(
106 106
                                 __('WP Filesystem Error: $1%s', 'event_espresso'),
@@ -119,8 +119,8 @@  discard block
 block discarded – undo
119 119
      */
120 120
     public static function display_request_filesystem_credentials_form()
121 121
     {
122
-        if (! empty(EEH_File::$_credentials_form)) {
123
-            echo '<div class="updated espresso-notices-attention"><p>' . EEH_File::$_credentials_form . '</p></div>';
122
+        if ( ! empty(EEH_File::$_credentials_form)) {
123
+            echo '<div class="updated espresso-notices-attention"><p>'.EEH_File::$_credentials_form.'</p></div>';
124 124
         }
125 125
     }
126 126
 
@@ -143,8 +143,8 @@  discard block
 block discarded – undo
143 143
         // load WP_Filesystem and set file permissions
144 144
         $wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
145 145
         $full_file_path = EEH_File::standardise_directory_separators($full_file_path);
146
-        if (! $wp_filesystem->is_readable(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path))) {
147
-            $file_name = ! empty($type_of_file) ? $file_name . ' ' . $type_of_file : $file_name;
146
+        if ( ! $wp_filesystem->is_readable(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path))) {
147
+            $file_name = ! empty($type_of_file) ? $file_name.' '.$type_of_file : $file_name;
148 148
             $file_name .= ! empty($file_ext) ? ' file' : ' folder';
149 149
             $msg = sprintf(
150 150
                 __('The requested %1$s could not be found or is not readable, possibly due to an incorrect filepath, or incorrect file permissions.%2$s', 'event_espresso'),
@@ -161,7 +161,7 @@  discard block
 block discarded – undo
161 161
                 );
162 162
             }
163 163
             if (defined('WP_DEBUG') && WP_DEBUG) {
164
-                throw new EE_Error($msg . '||' . $msg);
164
+                throw new EE_Error($msg.'||'.$msg);
165 165
             }
166 166
             return false;
167 167
         }
@@ -187,7 +187,7 @@  discard block
 block discarded – undo
187 187
         $perms = $wp_filesystem->getchmod(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path));
188 188
         if ($perms) {
189 189
             // file permissions exist, but way be set incorrectly
190
-            $type_of_file = ! empty($type_of_file) ? $type_of_file . ' ' : '';
190
+            $type_of_file = ! empty($type_of_file) ? $type_of_file.' ' : '';
191 191
             $type_of_file .= ! empty($type_of_file) ? 'file' : 'folder';
192 192
             return sprintf(
193 193
                 __('File permissions for the requested %1$s are currently set at "%2$s". The recommended permissions are 644 for files and 755 for folders.', 'event_espresso'),
@@ -226,15 +226,15 @@  discard block
 block discarded – undo
226 226
         // add / to folder
227 227
         $folder = EEH_File::end_with_directory_separator($folder);
228 228
         $wp_filesystem = EEH_File::_get_wp_filesystem($folder);
229
-        if (! $wp_filesystem->is_dir(EEH_File::convert_local_filepath_to_remote_filepath($folder))) {
229
+        if ( ! $wp_filesystem->is_dir(EEH_File::convert_local_filepath_to_remote_filepath($folder))) {
230 230
             // ok so it doesn't exist. Does its parent? Can we write to it?
231
-            if (! EEH_File::ensure_folder_exists_and_is_writable($parent_folder)) {
231
+            if ( ! EEH_File::ensure_folder_exists_and_is_writable($parent_folder)) {
232 232
                 return false;
233 233
             }
234
-            if (! EEH_File::verify_is_writable($parent_folder, 'folder')) {
234
+            if ( ! EEH_File::verify_is_writable($parent_folder, 'folder')) {
235 235
                 return false;
236 236
             } else {
237
-                if (! $wp_filesystem->mkdir(EEH_File::convert_local_filepath_to_remote_filepath($folder))) {
237
+                if ( ! $wp_filesystem->mkdir(EEH_File::convert_local_filepath_to_remote_filepath($folder))) {
238 238
                     if (defined('WP_DEBUG') && WP_DEBUG) {
239 239
                         $msg = sprintf(__('"%s" could not be created.', 'event_espresso'), $folder);
240 240
                         $msg .= EEH_File::_permissions_error_for_unreadable_filepath($folder);
@@ -244,7 +244,7 @@  discard block
 block discarded – undo
244 244
                 }
245 245
                 EEH_File::add_index_file($folder);
246 246
             }
247
-        } elseif (! EEH_File::verify_is_writable($folder, 'folder')) {
247
+        } elseif ( ! EEH_File::verify_is_writable($folder, 'folder')) {
248 248
             return false;
249 249
         }
250 250
         return true;
@@ -264,7 +264,7 @@  discard block
 block discarded – undo
264 264
         // load WP_Filesystem and set file permissions
265 265
         $wp_filesystem = EEH_File::_get_wp_filesystem($full_path);
266 266
         $full_path = EEH_File::standardise_directory_separators($full_path);
267
-        if (! $wp_filesystem->is_writable(EEH_File::convert_local_filepath_to_remote_filepath($full_path))) {
267
+        if ( ! $wp_filesystem->is_writable(EEH_File::convert_local_filepath_to_remote_filepath($full_path))) {
268 268
             if (defined('WP_DEBUG') && WP_DEBUG) {
269 269
                 $msg = sprintf(__('The "%1$s" %2$s is not writable.', 'event_espresso'), $full_path, $file_or_folder);
270 270
                 $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_path);
@@ -291,11 +291,11 @@  discard block
 block discarded – undo
291 291
         $wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
292 292
         $full_file_path = EEH_File::standardise_directory_separators($full_file_path);
293 293
         $parent_folder = EEH_File::get_parent_folder($full_file_path);
294
-        if (! EEH_File::exists($full_file_path)) {
295
-            if (! EEH_File::ensure_folder_exists_and_is_writable($parent_folder)) {
294
+        if ( ! EEH_File::exists($full_file_path)) {
295
+            if ( ! EEH_File::ensure_folder_exists_and_is_writable($parent_folder)) {
296 296
                 return false;
297 297
             }
298
-            if (! $wp_filesystem->touch(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path))) {
298
+            if ( ! $wp_filesystem->touch(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path))) {
299 299
                 if (defined('WP_DEBUG') && WP_DEBUG) {
300 300
                     $msg = sprintf(__('The "%s" file could not be created.', 'event_espresso'), $full_file_path);
301 301
                     $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path);
@@ -304,7 +304,7 @@  discard block
 block discarded – undo
304 304
                 return false;
305 305
             }
306 306
         }
307
-        if (! EEH_File::verify_is_writable($full_file_path, 'file')) {
307
+        if ( ! EEH_File::verify_is_writable($full_file_path, 'file')) {
308 308
             return false;
309 309
         }
310 310
         return true;
@@ -363,9 +363,9 @@  discard block
 block discarded – undo
363 363
     public static function write_to_file($full_file_path = '', $file_contents = '', $file_type = '')
364 364
     {
365 365
         $full_file_path = EEH_File::standardise_directory_separators($full_file_path);
366
-        $file_type = ! empty($file_type) ? rtrim($file_type, ' ') . ' ' : '';
366
+        $file_type = ! empty($file_type) ? rtrim($file_type, ' ').' ' : '';
367 367
         $folder = EEH_File::remove_filename_from_filepath($full_file_path);
368
-        if (! EEH_File::verify_is_writable($folder, 'folder')) {
368
+        if ( ! EEH_File::verify_is_writable($folder, 'folder')) {
369 369
             if (defined('WP_DEBUG') && WP_DEBUG) {
370 370
                 $msg = sprintf(__('The %1$sfile located at "%2$s" is not writable.', 'event_espresso'), $file_type, $full_file_path);
371 371
                 $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path);
@@ -376,7 +376,7 @@  discard block
 block discarded – undo
376 376
         // load WP_Filesystem and set file permissions
377 377
         $wp_filesystem = EEH_File::_get_wp_filesystem($full_file_path);
378 378
         // write the file
379
-        if (! $wp_filesystem->put_contents(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path), $file_contents)) {
379
+        if ( ! $wp_filesystem->put_contents(EEH_File::convert_local_filepath_to_remote_filepath($full_file_path), $file_contents)) {
380 380
             if (defined('WP_DEBUG') && WP_DEBUG) {
381 381
                 $msg = sprintf(__('The %1$sfile located at "%2$s" could not be written to.', 'event_espresso'), $file_type, $full_file_path);
382 382
                 $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_file_path, 'f');
@@ -486,8 +486,8 @@  discard block
 block discarded – undo
486 486
     public static function add_htaccess_deny_from_all($folder = '')
487 487
     {
488 488
         $folder = EEH_File::standardise_and_end_with_directory_separator($folder);
489
-        if (! EEH_File::exists($folder . '.htaccess')) {
490
-            if (! EEH_File::write_to_file($folder . '.htaccess', 'deny from all', '.htaccess')) {
489
+        if ( ! EEH_File::exists($folder.'.htaccess')) {
490
+            if ( ! EEH_File::write_to_file($folder.'.htaccess', 'deny from all', '.htaccess')) {
491 491
                 return false;
492 492
             }
493 493
         }
@@ -504,8 +504,8 @@  discard block
 block discarded – undo
504 504
     public static function add_index_file($folder)
505 505
     {
506 506
         $folder = EEH_File::standardise_and_end_with_directory_separator($folder);
507
-        if (! EEH_File::exists($folder . 'index.php')) {
508
-            if (! EEH_File::write_to_file($folder . 'index.php', 'You are not permitted to read from this folder', '.php')) {
507
+        if ( ! EEH_File::exists($folder.'index.php')) {
508
+            if ( ! EEH_File::write_to_file($folder.'index.php', 'You are not permitted to read from this folder', '.php')) {
509 509
                 return false;
510 510
             }
511 511
         }
@@ -539,7 +539,7 @@  discard block
 block discarded – undo
539 539
      */
540 540
     public static function standardise_directory_separators($file_path)
541 541
     {
542
-        return str_replace(array( '\\', '/' ), '/', $file_path);
542
+        return str_replace(array('\\', '/'), '/', $file_path);
543 543
     }
544 544
 
545 545
 
@@ -552,7 +552,7 @@  discard block
 block discarded – undo
552 552
      */
553 553
     public static function end_with_directory_separator($file_path)
554 554
     {
555
-        return rtrim($file_path, '/\\') . '/';
555
+        return rtrim($file_path, '/\\').'/';
556 556
     }
557 557
 
558 558
 
@@ -587,17 +587,17 @@  discard block
 block discarded – undo
587 587
         foreach ($folder_paths as $folder_path) {
588 588
             $folder_path = self::standardise_and_end_with_directory_separator($folder_path);
589 589
             // load WP_Filesystem and set file permissions
590
-            $files_in_folder = glob($folder_path . '*');
590
+            $files_in_folder = glob($folder_path.'*');
591 591
             $class_to_folder_path = array();
592 592
             if ($files_in_folder) {
593 593
                 foreach ($files_in_folder as $file_path) {
594 594
                     // only add files, not folders
595
-                    if (! is_dir($file_path)) {
595
+                    if ( ! is_dir($file_path)) {
596 596
                         if ($index_numerically) {
597 597
                             $class_to_folder_path[] = $file_path;
598 598
                         } else {
599 599
                             $classname = self::get_classname_from_filepath_with_standard_filename($file_path);
600
-                            $class_to_folder_path[ $classname ] = $file_path;
600
+                            $class_to_folder_path[$classname] = $file_path;
601 601
                         }
602 602
                     }
603 603
                 }
@@ -619,7 +619,7 @@  discard block
 block discarded – undo
619 619
     public static function copy($source_file, $destination_file, $overwrite = false)
620 620
     {
621 621
         $full_source_path = EEH_File::standardise_directory_separators($source_file);
622
-        if (! EEH_File::exists($full_source_path)) {
622
+        if ( ! EEH_File::exists($full_source_path)) {
623 623
             if (defined('WP_DEBUG') && WP_DEBUG) {
624 624
                 $msg = sprintf(__('The file located at "%2$s" is not readable or doesn\'t exist.', 'event_espresso'), $full_source_path);
625 625
                 $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_source_path);
@@ -631,7 +631,7 @@  discard block
 block discarded – undo
631 631
         $full_dest_path = EEH_File::standardise_directory_separators($destination_file);
632 632
         $folder = EEH_File::remove_filename_from_filepath($full_dest_path);
633 633
         EEH_File::ensure_folder_exists_and_is_writable($folder);
634
-        if (! EEH_File::verify_is_writable($folder, 'folder')) {
634
+        if ( ! EEH_File::verify_is_writable($folder, 'folder')) {
635 635
             if (defined('WP_DEBUG') && WP_DEBUG) {
636 636
                 $msg = sprintf(__('The file located at "%2$s" is not writable.', 'event_espresso'), $full_dest_path);
637 637
                 $msg .= EEH_File::_permissions_error_for_unreadable_filepath($full_dest_path);
@@ -643,7 +643,7 @@  discard block
 block discarded – undo
643 643
         // load WP_Filesystem and set file permissions
644 644
         $wp_filesystem = EEH_File::_get_wp_filesystem($destination_file);
645 645
         // write the file
646
-        if (! $wp_filesystem->copy(
646
+        if ( ! $wp_filesystem->copy(
647 647
             EEH_File::convert_local_filepath_to_remote_filepath($full_source_path),
648 648
             EEH_File::convert_local_filepath_to_remote_filepath($full_dest_path),
649 649
             $overwrite
@@ -684,6 +684,6 @@  discard block
 block discarded – undo
684 684
     public static function convert_local_filepath_to_remote_filepath($local_filepath)
685 685
     {
686 686
         $wp_filesystem = EEH_File::_get_wp_filesystem($local_filepath);
687
-        return str_replace(WP_CONTENT_DIR . '/', $wp_filesystem->wp_content_dir(), $local_filepath);
687
+        return str_replace(WP_CONTENT_DIR.'/', $wp_filesystem->wp_content_dir(), $local_filepath);
688 688
     }
689 689
 }
Please login to merge, or discard this patch.
core/helpers/EEH_Form_Fields.helper.php 3 patches
Doc Comments   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -777,7 +777,7 @@  discard block
 block discarded – undo
777 777
      *
778 778
      * @param mixed $opt_group
779 779
      * @param mixed $QSOs
780
-     * @param mixed $answer
780
+     * @param string $answer
781 781
      * @param boolean $use_html_entities
782 782
      * @return string
783 783
      */
@@ -1134,7 +1134,7 @@  discard block
 block discarded – undo
1134 1134
     /**
1135 1135
      *  prep_required
1136 1136
      * @param string|array  $required
1137
-     * @return array
1137
+     * @return string
1138 1138
      */
1139 1139
     public static function prep_required($required = array())
1140 1140
     {
@@ -1187,8 +1187,8 @@  discard block
 block discarded – undo
1187 1187
 
1188 1188
     /**
1189 1189
      *  _load_system_dropdowns
1190
-     * @param array     $QFI
1191
-     * @return array
1190
+     * @param EE_Question_Form_Input     $QFI
1191
+     * @return EE_Question_Form_Input
1192 1192
      */
1193 1193
     private static function _load_system_dropdowns($QFI)
1194 1194
     {
@@ -1491,7 +1491,7 @@  discard block
 block discarded – undo
1491 1491
      * @param    string   $nonce_action     - if using nonces
1492 1492
      * @param    bool|string $input_only       - whether to print form header and footer. TRUE returns the input without the form
1493 1493
      * @param    string   $extra_attributes - any extra attributes that need to be attached to the form input
1494
-     * @return    void
1494
+     * @return    string
1495 1495
      */
1496 1496
     public static function submit_button($url = '', $ID = '', $class = '', $text = '', $nonce_action = '', $input_only = false, $extra_attributes = '')
1497 1497
     {
Please login to merge, or discard this patch.
Indentation   +1461 added lines, -1461 removed lines patch added patch discarded remove patch
@@ -29,1034 +29,1034 @@  discard block
 block discarded – undo
29 29
 {
30 30
 
31 31
 
32
-    /**
33
-     *  Generates HTML for the forms used on admin pages
34
-     *
35
-     *
36
-     *  @static
37
-     *  @access public
38
-     *  @param  array $input_vars - array of input field details
39
-     *  format:
40
-     *  $template_form_fields['field-id'] = array(
41
-     *      'name' => 'name_attribute',
42
-     *      'label' => __('Field Label', 'event_espresso'), //or false
43
-     *      'input' => 'hidden', //field input type can be 'text', 'select', 'textarea', 'hidden', 'checkbox', 'wp_editor'
44
-     *      'type' => 'int', //what "type" the value is (i.e. string, int etc)
45
-     *      'required' => false, //boolean for whether the field is required
46
-     *      'validation' => true, //boolean, whether to validate the field (todo)
47
-     *      'value' => 'some_value_for_field', //what value is used for field
48
-     *      'format' => '%d', //what format the value is (%d, %f, or %s)
49
-     *      'db-col' => 'column_in_db' //used to indicate which column the field corresponds with in the db
50
-     *      'options' => optiona, optionb || array('value' => 'label', '') //if the input type is "select", this allows you to set the args for the different <option> tags.
51
-     *      'tabindex' => 1 //this allows you to set the tabindex for the field.
52
-     *      'append_content' => '' //this allows you to send in html content to append to the field.
53
-     *  )
54
-     *  @param  array $id - used for defining unique identifiers for the form.
55
-     *  @return string
56
-     *  @todo: at some point we can break this down into other static methods to abstract it a bit better.
57
-     */
58
-    public static function get_form_fields($input_vars = array(), $id = false)
59
-    {
32
+	/**
33
+	 *  Generates HTML for the forms used on admin pages
34
+	 *
35
+	 *
36
+	 *  @static
37
+	 *  @access public
38
+	 *  @param  array $input_vars - array of input field details
39
+	 *  format:
40
+	 *  $template_form_fields['field-id'] = array(
41
+	 *      'name' => 'name_attribute',
42
+	 *      'label' => __('Field Label', 'event_espresso'), //or false
43
+	 *      'input' => 'hidden', //field input type can be 'text', 'select', 'textarea', 'hidden', 'checkbox', 'wp_editor'
44
+	 *      'type' => 'int', //what "type" the value is (i.e. string, int etc)
45
+	 *      'required' => false, //boolean for whether the field is required
46
+	 *      'validation' => true, //boolean, whether to validate the field (todo)
47
+	 *      'value' => 'some_value_for_field', //what value is used for field
48
+	 *      'format' => '%d', //what format the value is (%d, %f, or %s)
49
+	 *      'db-col' => 'column_in_db' //used to indicate which column the field corresponds with in the db
50
+	 *      'options' => optiona, optionb || array('value' => 'label', '') //if the input type is "select", this allows you to set the args for the different <option> tags.
51
+	 *      'tabindex' => 1 //this allows you to set the tabindex for the field.
52
+	 *      'append_content' => '' //this allows you to send in html content to append to the field.
53
+	 *  )
54
+	 *  @param  array $id - used for defining unique identifiers for the form.
55
+	 *  @return string
56
+	 *  @todo: at some point we can break this down into other static methods to abstract it a bit better.
57
+	 */
58
+	public static function get_form_fields($input_vars = array(), $id = false)
59
+	{
60 60
         
61
-        if (empty($input_vars)) {
62
-            EE_Error::add_error(__('missing required variables for the form field generator', 'event_espresso'), __FILE__, __FUNCTION__, __LINE__);
63
-            return false;
64
-        }
65
-
66
-        // if you don't behave - this is what you're gonna get !!!
67
-        $close = true;
68
-        $output = '<ul>'; // this is for using built-in wp styles... watch carefully...
69
-
70
-        // cycle thru inputs
71
-        foreach ($input_vars as $input_key => $input_value) {
72
-            $defaults = array(
73
-                'name' => $input_key,
74
-                'label' => __('No label', 'event_espresso'),
75
-                'input' => 'hidden',
76
-                'type' => 'int',
77
-                'required' => false,
78
-                'validation' => true,
79
-                'value' => 'some_value_for_field',
80
-                'format' => '%d',
81
-                'db-col' => 'column_in_db',
82
-                'options' => array(),
83
-                'tabindex' => '',
84
-                'append_content' => ''
85
-                );
86
-
87
-            $input_value = wp_parse_args($input_value, $defaults);
88
-
89
-            // required fields get a *
90
-            $required = isset($input_value['required']) && $input_value['required'] ? ' <span>*</span>: ' : ': ';
91
-            // and the css class "required"
92
-            $css_class = isset($input_value['css_class']) ? $input_value['css_class'] : '';
93
-            $styles = $input_value['required'] ? 'required ' . $css_class : $css_class;
94
-
95
-            $field_id = ($id) ? $id . '-' . $input_key : $input_key;
96
-            $tabindex = !empty($input_value['tabindex']) ? ' tabindex="' . $input_value['tabindex'] . '"' : '';
97
-
98
-            // rows or cols?
99
-            $rows = isset($input_value['rows']) ? $input_value['rows'] : '10';
100
-            $cols = isset($input_value['cols']) ? $input_value['cols'] : '80';
101
-
102
-            // any content?
103
-            $append_content = $input_value['append_content'];
104
-
105
-            $output .= (!$close) ? '<ul>' : '';
106
-            $output .= '<li>';
107
-
108
-            // what type of input are we dealing with ?
109
-            switch ($input_value['input']) {
110
-                // text inputs
111
-                case 'text':
112
-                    $output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
113
-                    $output .= "\n\t\t\t" . '<input id="' . $field_id . '" class="' . $styles . '" type="text" value="' . esc_textarea($input_value['value']) . '" name="' . $input_value['name'] . '"' . $tabindex . '>';
114
-                    break;
115
-
116
-                // dropdowns
117
-                case 'select':
118
-                    $output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
119
-                    $output .= "\n\t\t\t" . '<select id="' . $field_id . '" class="' . $styles . '" name="' . $input_value['name'] . '"' . $tabindex . '>';
120
-
121
-                    if (is_array($input_value['options'])) {
122
-                        $options = $input_value['options'];
123
-                    } else {
124
-                        $options = explode(',', $input_value['options']);
125
-                    }
126
-
127
-                    foreach ($options as $key => $value) {
128
-                        $selected = isset($input_value['value']) && $input_value['value'] == $key ? 'selected=selected' : '';
129
-                        // $key = str_replace( ' ', '_', sanitize_key( $value ));
130
-                        $output .= "\n\t\t\t\t" . '<option '. $selected . ' value="' . $key . '">' . $value . '</option>';
131
-                    }
132
-                    $output .= "\n\t\t\t" . '</select>';
133
-
134
-                    break;
135
-
136
-                case 'textarea':
137
-                    $output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
138
-                    $output .= "\n\t\t\t" . '<textarea id="' . $field_id . '" class="' . $styles . '" rows="'.$rows.'" cols="'.$cols.'" name="' . $input_value['name'] . '"' . $tabindex . '>' . esc_textarea($input_value['value']) . '</textarea>';
139
-                    break;
140
-
141
-                case 'hidden':
142
-                    $close = false;
143
-                    $output .= "</li></ul>";
144
-                    $output .= "\n\t\t\t" . '<input id="' . $field_id . '" type="hidden" name="' . $input_value['name'] . '" value="' . $input_value['value'] . '">';
145
-                    break;
146
-
147
-                case 'checkbox':
148
-                    $checked = ( $input_value['value'] == 1 ) ? 'checked="checked"' : '';
149
-                    $output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
150
-                    $output .= "\n\t\t\t" . '<input id="' . $field_id. '" type="checkbox" name="' . $input_value['name'] . '" value="1"' . $checked . $tabindex . ' />';
151
-                    break;
152
-
153
-                case 'wp_editor':
154
-                    $close = false;
155
-                    $editor_settings = array(
156
-                        'textarea_name' => $input_value['name'],
157
-                        'textarea_rows' => $rows,
158
-                        'editor_class' => $styles,
159
-                        'tabindex' => $input_value['tabindex']
160
-                    );
161
-                    $output .= '</li>';
162
-                    $output .= '</ul>';
163
-                    $output .= '<h4>' . $input_value['label'] . '</h4>';
164
-                    if ($append_content) {
165
-                        $output .= $append_content;
166
-                    }
167
-                    ob_start();
168
-                    wp_editor($input_value['value'], $field_id, $editor_settings);
169
-                    $editor = ob_get_contents();
170
-                    ob_end_clean();
171
-                    $output .= $editor;
172
-                    break;
173
-            }
174
-            if ($append_content && $input_value['input'] !== 'wp_editor') {
175
-                $output .= $append_content;
176
-            }
177
-                $output .= ($close) ? '</li>' : '';
178
-        } // end foreach( $input_vars as $input_key => $input_value )
179
-        $output .= ($close) ? '</ul>' : '';
180
-
181
-        return $output;
182
-    }
183
-
184
-    /**
185
-     * form_fields_array
186
-     * This utility function assembles form fields from a given structured array with field information.
187
-     * //TODO: This is an alternate generator that we may want to use instead.
188
-     *
189
-     * @param  array $fields structured array of fields to assemble in the following format:
190
-     * [field_name] => array(
191
-     *      ['label'] => 'label for field',
192
-     *      ['labels'] => array('label_1', 'label_2'); //optional - if the field type is a multi select type of field you can indicated the labels for each option via this index
193
-     *      ['extra_desc'] => 'extra description for the field', //optional
194
-     *      ['type'] => 'textarea'|'text'|'wp_editor'|'checkbox'|'radio'|'hidden'|'select', //defaults to text
195
-     *      ['value'] => 'value that goes in the field', //(if multi then this is an array of values and the 'default' paramater will be used for what is selected)
196
-     *      ['default'] => 'default if the field type is multi (i.e. select or radios or checkboxes)',
197
-     *      ['class'] => 'name-of-class(es)-for-input',
198
-     *      ['classes'] => array('class_1', 'class_2'); //optional - if the field type is a multi select type of field you can indicate the css class for each option via this index.
199
-     *      ['id'] => 'css-id-for-input') //defaults to 'field_name'
200
-     *      ['unique_id'] => 1 //defaults to empty string.  This is useful for when the fields generated are going to be used in a loop and you want to make sure that the field identifiers are unique from each other.
201
-     *      ['dimensions'] => array(100,300), //defaults to empty array.  This is used by field types such as textarea to indicate cols/rows.
202
-     *      ['tabindex'] => '' //this allows you to set the tabindex for the field.
203
-     *      ['wpeditor_args'] => array() //if the type of field is wpeditor then this can optionally contain an array of arguments for the editor setup.
204
-     *
205
-     * @return array         an array of inputs for form indexed by field name, and in the following structure:
206
-     *     [field_name] => array( 'label' => '{label_html}', 'field' => '{input_html}'
207
-     */
208
-    public static function get_form_fields_array($fields)
209
-    {
210
-
211
-        $form_fields = array();
212
-        $fields = (array) $fields;
213
-
214
-        foreach ($fields as $field_name => $field_atts) {
215
-            // defaults:
216
-            $defaults = array(
217
-                'label' => '',
218
-                'labels' => '',
219
-                'extra_desc' => '',
220
-                'type' => 'text',
221
-                'value' => '',
222
-                'default' => '',
223
-                'class' => '',
224
-                'classes' => '',
225
-                'id' => $field_name,
226
-                'unique_id' => '',
227
-                'dimensions' => array('10', '5'),
228
-                'tabindex' => '',
229
-                'wpeditor_args' => array()
230
-                );
231
-            // merge defaults with passed arguments
232
-            $_fields = wp_parse_args($field_atts, $defaults);
233
-            extract($_fields);
234
-            // generate label
235
-            $label = empty($label) ? '' : '<label for="' . $id . '">' . $label . '</label>';
236
-            // generate field name
237
-            $f_name = !empty($unique_id) ? $field_name . '[' . $unique_id . ']' : $field_name;
238
-
239
-            // tabindex
240
-            $tabindex_str = !empty($tabindex) ? ' tabindex="' . $tabindex . '"' : '';
241
-
242
-            // we determine what we're building based on the type
243
-            switch ($type) {
244
-                case 'textarea':
245
-                        $fld = '<textarea id="' . $id . '" class="' . $class . '" rows="' . $dimensions[1] . '" cols="' . $dimensions[0] . '" name="' . $f_name . '"' . $tabindex_str . '>' . $value . '</textarea>';
246
-                        $fld .= $extra_desc;
247
-                    break;
248
-
249
-                case 'checkbox':
250
-                        $c_input = '';
251
-                    if (is_array($value)) {
252
-                        foreach ($value as $key => $val) {
253
-                            $c_id = $field_name . '_' . $value;
254
-                            $c_class = isset($classes[ $key ]) ? ' class="' . $classes[ $key ] . '" ' : '';
255
-                            $c_label = isset($labels[ $key ]) ? '<label for="' . $c_id . '">' . $labels[ $key ] . '</label>' : '';
256
-                            $checked = !empty($default) && $default == $val ? ' checked="checked" ' : '';
257
-                            $c_input .= '<input name="' . $f_name . '[]" type="checkbox" id="' . $c_id . '"' . $c_class . 'value="' . $val . '"' . $checked . $tabindex_str . ' />' . "\n" . $c_label;
258
-                        }
259
-                        $fld = $c_input;
260
-                    } else {
261
-                        $checked = !empty($default) && $default == $val ? 'checked="checked" ' : '';
262
-                        $fld = '<input name="'. $f_name . '" type="checkbox" id="' . $id . '" class="' . $class . '" value="' . $value . '"' . $checked . $tabindex_str . ' />' . "\n";
263
-                    }
264
-                    break;
265
-
266
-                case 'radio':
267
-                        $c_input = '';
268
-                    if (is_array($value)) {
269
-                        foreach ($value as $key => $val) {
270
-                            $c_id = $field_name . '_' . $value;
271
-                            $c_class = isset($classes[ $key ]) ? 'class="' . $classes[ $key ] . '" ' : '';
272
-                            $c_label = isset($labels[ $key ]) ? '<label for="' . $c_id . '">' . $labels[ $key ] . '</label>' : '';
273
-                            $checked = !empty($default) && $default == $val ? ' checked="checked" ' : '';
274
-                            $c_input .= '<input name="' . $f_name . '" type="checkbox" id="' . $c_id . '"' . $c_class . 'value="' . $val . '"' . $checked . $tabindex_str . ' />' . "\n" . $c_label;
275
-                        }
276
-                        $fld = $c_input;
277
-                    } else {
278
-                        $checked = !empty($default) && $default == $val ? 'checked="checked" ' : '';
279
-                        $fld = '<input name="'. $f_name . '" type="checkbox" id="' . $id . '" class="' . $class . '" value="' . $value . '"' . $checked . $tabindex_str . ' />' . "\n";
280
-                    }
281
-                    break;
282
-
283
-                case 'hidden':
284
-                        $fld = '<input name="' . $f_name . '" type="hidden" id="' . $id . '" class="' . $class . '" value="' . $value . '" />' . "\n";
285
-                    break;
286
-
287
-                case 'select':
288
-                        $fld = '<select name="' . $f_name . '" class="' . $class . '" id="' . $id . '"' . $tabindex_str . '>' . "\n";
289
-                    foreach ($value as $key => $val) {
290
-                        $checked = !empty($default) && $default == $val ? ' selected="selected"' : '';
291
-                        $fld .= "\t" . '<option value="' . $val . '"' . $checked . '>' . $labels[ $key ] . '</option>' . "\n";
292
-                    }
293
-                        $fld .= '</select>';
294
-                    break;
295
-
296
-                case 'wp_editor':
297
-                        $editor_settings = array(
298
-                            'textarea_name' => $f_name,
299
-                            'textarea_rows' => $dimensions[1],
300
-                            'editor_class' => $class,
301
-                            'tabindex' => $tabindex
302
-                            );
303
-                        $editor_settings = array_merge($wpeditor_args, $editor_settings);
304
-                        ob_start();
305
-                        wp_editor($value, $id, $editor_settings);
306
-                        $editor = ob_get_contents();
307
-                        ob_end_clean();
308
-                        $fld = $editor;
309
-                    break;
310
-
311
-                default: // 'text fields'
312
-                        $fld = '<input name="' . $f_name . '" type="text" id="' . $id . '" class="' . $class . '" value="' . $value . '"' . $tabindex_str . ' />' . "\n";
313
-                        $fld .= $extra_desc;
314
-            }
315
-
316
-            $form_fields[ $field_name ] = array( 'label' => $label, 'field' => $fld );
317
-        }
318
-
319
-        return $form_fields;
320
-    }
321
-
322
-
323
-
324
-
325
-
326
-
327
-    /**
328
-     * espresso admin page select_input
329
-     * Turns an array into a select fields
330
-     *
331
-     * @static
332
-     * @access public
333
-     * @param  string  $name       field name
334
-     * @param  array  $values     option values, numbered array starting at 0, where each value is an array with a key 'text' (meaning text to display' and 'id' (meaning the internal value)
335
-     * eg: array(1=>array('text'=>'Monday','id'=>1),2=>array('text'=>'Tuesday','id'=>2)...). or as an array of key-value pairs, where the key is to be used for the
336
-     * select input's name, and the value will be the text shown to the user.  Optionally you can also include an additional key of "class" which will add a specific class to the option for that value.
337
-     * @param  string  $default    default value
338
-     * @param  string  $parameters extra paramaters
339
-     * @param  string  $class      css class
340
-     * @param  boolean $autosize   whether to autosize the select or not
341
-     * @return string              html string for the select input
342
-     */
343
-    public static function select_input($name, $values, $default = '', $parameters = '', $class = '', $autosize = true)
344
-    {
345
-        // if $values was submitted in the wrong format, convert it over
346
-        if (!empty($values) && (!array_key_exists(0, $values) || !is_array($values[0]))) {
347
-            $converted_values=array();
348
-            foreach ($values as $id => $text) {
349
-                $converted_values[]=array('id'=>$id,'text'=>$text);
350
-            }
351
-            $values=$converted_values;
352
-        }
353
-
354
-        $field = '<select id="' . EEH_Formatter::ee_tep_output_string($name) . '" name="' . EEH_Formatter::ee_tep_output_string($name) . '"';
355
-        // Debug
356
-        // EEH_Debug_Tools::printr( $values, '$values  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
357
-        if (EEH_Formatter::ee_tep_not_null($parameters)) {
358
-            $field .= ' ' . $parameters;
359
-        }
360
-        if ($autosize) {
361
-            $size = 'med';
362
-            for ($ii = 0, $ni = sizeof($values); $ii < $ni; $ii++) {
363
-                if ($values[ $ii ]['text']) {
364
-                    if (strlen($values[ $ii ]['text']) > 5) {
365
-                        $size = 'wide';
366
-                    }
367
-                }
368
-            }
369
-        } else {
370
-            $size = '';
371
-        }
372
-
373
-        $field .= ' class="' . $class . ' ' . $size . '">';
374
-
375
-        if (empty($default) && isset($GLOBALS[ $name ])) {
376
-            $default = stripslashes($GLOBALS[ $name ]);
377
-        }
378
-
379
-
380
-        for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
381
-            $field .= '<option value="' . $values[ $i ]['id'] . '"';
382
-            if ($default == $values[ $i ]['id']) {
383
-                $field .= ' selected = "selected"';
384
-            }
385
-            if (isset($values[ $i ]['class'])) {
386
-                $field .= ' class="' . $values[ $i ]['class'] . '"';
387
-            }
388
-            $field .= '>' . $values[ $i ]['text'] . '</option>';
389
-        }
390
-        $field .= '</select>';
391
-
392
-        return $field;
393
-    }
394
-
395
-
396
-
397
-
398
-
399
-
400
-    /**
401
-     * generate_question_groups_html
402
-     *
403
-     * @param string $question_groups
404
-     * @return string HTML
405
-     */
406
-    public static function generate_question_groups_html($question_groups = array(), $group_wrapper = 'fieldset')
407
-    {
408
-
409
-        $html = '';
410
-        $before_question_group_questions = apply_filters('FHEE__EEH_Form_Fields__generate_question_groups_html__before_question_group_questions', '');
411
-        $after_question_group_questions = apply_filters('FHEE__EEH_Form_Fields__generate_question_groups_html__after_question_group_questions', '');
412
-
413
-        if (! empty($question_groups)) {
414
-            // EEH_Debug_Tools::printr( $question_groups, '$question_groups  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
415
-            // loop thru question groups
416
-            foreach ($question_groups as $QSG) {
417
-                // check that questions exist
418
-                if (! empty($QSG['QSG_questions'])) {
419
-                    // use fieldsets
420
-                    $html .= "\n\t" . '<' . $group_wrapper . ' class="espresso-question-group-wrap" id="' . $QSG['QSG_identifier'] . '">';
421
-                    // group_name
422
-                    $html .= $QSG['QSG_show_group_name'] ? "\n\t\t" . '<h5 class="espresso-question-group-title-h5 section-title">' . self::prep_answer($QSG['QSG_name']) . '</h5>' : '';
423
-                    // group_desc
424
-                    $html .= $QSG['QSG_show_group_desc'] && ! empty($QSG['QSG_desc']) ? '<div class="espresso-question-group-desc-pg">' . self::prep_answer($QSG['QSG_desc']) . '</div>' : '';
425
-
426
-                    $html .= $before_question_group_questions;
427
-                    // loop thru questions
428
-                    foreach ($QSG['QSG_questions'] as $question) {
61
+		if (empty($input_vars)) {
62
+			EE_Error::add_error(__('missing required variables for the form field generator', 'event_espresso'), __FILE__, __FUNCTION__, __LINE__);
63
+			return false;
64
+		}
65
+
66
+		// if you don't behave - this is what you're gonna get !!!
67
+		$close = true;
68
+		$output = '<ul>'; // this is for using built-in wp styles... watch carefully...
69
+
70
+		// cycle thru inputs
71
+		foreach ($input_vars as $input_key => $input_value) {
72
+			$defaults = array(
73
+				'name' => $input_key,
74
+				'label' => __('No label', 'event_espresso'),
75
+				'input' => 'hidden',
76
+				'type' => 'int',
77
+				'required' => false,
78
+				'validation' => true,
79
+				'value' => 'some_value_for_field',
80
+				'format' => '%d',
81
+				'db-col' => 'column_in_db',
82
+				'options' => array(),
83
+				'tabindex' => '',
84
+				'append_content' => ''
85
+				);
86
+
87
+			$input_value = wp_parse_args($input_value, $defaults);
88
+
89
+			// required fields get a *
90
+			$required = isset($input_value['required']) && $input_value['required'] ? ' <span>*</span>: ' : ': ';
91
+			// and the css class "required"
92
+			$css_class = isset($input_value['css_class']) ? $input_value['css_class'] : '';
93
+			$styles = $input_value['required'] ? 'required ' . $css_class : $css_class;
94
+
95
+			$field_id = ($id) ? $id . '-' . $input_key : $input_key;
96
+			$tabindex = !empty($input_value['tabindex']) ? ' tabindex="' . $input_value['tabindex'] . '"' : '';
97
+
98
+			// rows or cols?
99
+			$rows = isset($input_value['rows']) ? $input_value['rows'] : '10';
100
+			$cols = isset($input_value['cols']) ? $input_value['cols'] : '80';
101
+
102
+			// any content?
103
+			$append_content = $input_value['append_content'];
104
+
105
+			$output .= (!$close) ? '<ul>' : '';
106
+			$output .= '<li>';
107
+
108
+			// what type of input are we dealing with ?
109
+			switch ($input_value['input']) {
110
+				// text inputs
111
+				case 'text':
112
+					$output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
113
+					$output .= "\n\t\t\t" . '<input id="' . $field_id . '" class="' . $styles . '" type="text" value="' . esc_textarea($input_value['value']) . '" name="' . $input_value['name'] . '"' . $tabindex . '>';
114
+					break;
115
+
116
+				// dropdowns
117
+				case 'select':
118
+					$output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
119
+					$output .= "\n\t\t\t" . '<select id="' . $field_id . '" class="' . $styles . '" name="' . $input_value['name'] . '"' . $tabindex . '>';
120
+
121
+					if (is_array($input_value['options'])) {
122
+						$options = $input_value['options'];
123
+					} else {
124
+						$options = explode(',', $input_value['options']);
125
+					}
126
+
127
+					foreach ($options as $key => $value) {
128
+						$selected = isset($input_value['value']) && $input_value['value'] == $key ? 'selected=selected' : '';
129
+						// $key = str_replace( ' ', '_', sanitize_key( $value ));
130
+						$output .= "\n\t\t\t\t" . '<option '. $selected . ' value="' . $key . '">' . $value . '</option>';
131
+					}
132
+					$output .= "\n\t\t\t" . '</select>';
133
+
134
+					break;
135
+
136
+				case 'textarea':
137
+					$output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
138
+					$output .= "\n\t\t\t" . '<textarea id="' . $field_id . '" class="' . $styles . '" rows="'.$rows.'" cols="'.$cols.'" name="' . $input_value['name'] . '"' . $tabindex . '>' . esc_textarea($input_value['value']) . '</textarea>';
139
+					break;
140
+
141
+				case 'hidden':
142
+					$close = false;
143
+					$output .= "</li></ul>";
144
+					$output .= "\n\t\t\t" . '<input id="' . $field_id . '" type="hidden" name="' . $input_value['name'] . '" value="' . $input_value['value'] . '">';
145
+					break;
146
+
147
+				case 'checkbox':
148
+					$checked = ( $input_value['value'] == 1 ) ? 'checked="checked"' : '';
149
+					$output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
150
+					$output .= "\n\t\t\t" . '<input id="' . $field_id. '" type="checkbox" name="' . $input_value['name'] . '" value="1"' . $checked . $tabindex . ' />';
151
+					break;
152
+
153
+				case 'wp_editor':
154
+					$close = false;
155
+					$editor_settings = array(
156
+						'textarea_name' => $input_value['name'],
157
+						'textarea_rows' => $rows,
158
+						'editor_class' => $styles,
159
+						'tabindex' => $input_value['tabindex']
160
+					);
161
+					$output .= '</li>';
162
+					$output .= '</ul>';
163
+					$output .= '<h4>' . $input_value['label'] . '</h4>';
164
+					if ($append_content) {
165
+						$output .= $append_content;
166
+					}
167
+					ob_start();
168
+					wp_editor($input_value['value'], $field_id, $editor_settings);
169
+					$editor = ob_get_contents();
170
+					ob_end_clean();
171
+					$output .= $editor;
172
+					break;
173
+			}
174
+			if ($append_content && $input_value['input'] !== 'wp_editor') {
175
+				$output .= $append_content;
176
+			}
177
+				$output .= ($close) ? '</li>' : '';
178
+		} // end foreach( $input_vars as $input_key => $input_value )
179
+		$output .= ($close) ? '</ul>' : '';
180
+
181
+		return $output;
182
+	}
183
+
184
+	/**
185
+	 * form_fields_array
186
+	 * This utility function assembles form fields from a given structured array with field information.
187
+	 * //TODO: This is an alternate generator that we may want to use instead.
188
+	 *
189
+	 * @param  array $fields structured array of fields to assemble in the following format:
190
+	 * [field_name] => array(
191
+	 *      ['label'] => 'label for field',
192
+	 *      ['labels'] => array('label_1', 'label_2'); //optional - if the field type is a multi select type of field you can indicated the labels for each option via this index
193
+	 *      ['extra_desc'] => 'extra description for the field', //optional
194
+	 *      ['type'] => 'textarea'|'text'|'wp_editor'|'checkbox'|'radio'|'hidden'|'select', //defaults to text
195
+	 *      ['value'] => 'value that goes in the field', //(if multi then this is an array of values and the 'default' paramater will be used for what is selected)
196
+	 *      ['default'] => 'default if the field type is multi (i.e. select or radios or checkboxes)',
197
+	 *      ['class'] => 'name-of-class(es)-for-input',
198
+	 *      ['classes'] => array('class_1', 'class_2'); //optional - if the field type is a multi select type of field you can indicate the css class for each option via this index.
199
+	 *      ['id'] => 'css-id-for-input') //defaults to 'field_name'
200
+	 *      ['unique_id'] => 1 //defaults to empty string.  This is useful for when the fields generated are going to be used in a loop and you want to make sure that the field identifiers are unique from each other.
201
+	 *      ['dimensions'] => array(100,300), //defaults to empty array.  This is used by field types such as textarea to indicate cols/rows.
202
+	 *      ['tabindex'] => '' //this allows you to set the tabindex for the field.
203
+	 *      ['wpeditor_args'] => array() //if the type of field is wpeditor then this can optionally contain an array of arguments for the editor setup.
204
+	 *
205
+	 * @return array         an array of inputs for form indexed by field name, and in the following structure:
206
+	 *     [field_name] => array( 'label' => '{label_html}', 'field' => '{input_html}'
207
+	 */
208
+	public static function get_form_fields_array($fields)
209
+	{
210
+
211
+		$form_fields = array();
212
+		$fields = (array) $fields;
213
+
214
+		foreach ($fields as $field_name => $field_atts) {
215
+			// defaults:
216
+			$defaults = array(
217
+				'label' => '',
218
+				'labels' => '',
219
+				'extra_desc' => '',
220
+				'type' => 'text',
221
+				'value' => '',
222
+				'default' => '',
223
+				'class' => '',
224
+				'classes' => '',
225
+				'id' => $field_name,
226
+				'unique_id' => '',
227
+				'dimensions' => array('10', '5'),
228
+				'tabindex' => '',
229
+				'wpeditor_args' => array()
230
+				);
231
+			// merge defaults with passed arguments
232
+			$_fields = wp_parse_args($field_atts, $defaults);
233
+			extract($_fields);
234
+			// generate label
235
+			$label = empty($label) ? '' : '<label for="' . $id . '">' . $label . '</label>';
236
+			// generate field name
237
+			$f_name = !empty($unique_id) ? $field_name . '[' . $unique_id . ']' : $field_name;
238
+
239
+			// tabindex
240
+			$tabindex_str = !empty($tabindex) ? ' tabindex="' . $tabindex . '"' : '';
241
+
242
+			// we determine what we're building based on the type
243
+			switch ($type) {
244
+				case 'textarea':
245
+						$fld = '<textarea id="' . $id . '" class="' . $class . '" rows="' . $dimensions[1] . '" cols="' . $dimensions[0] . '" name="' . $f_name . '"' . $tabindex_str . '>' . $value . '</textarea>';
246
+						$fld .= $extra_desc;
247
+					break;
248
+
249
+				case 'checkbox':
250
+						$c_input = '';
251
+					if (is_array($value)) {
252
+						foreach ($value as $key => $val) {
253
+							$c_id = $field_name . '_' . $value;
254
+							$c_class = isset($classes[ $key ]) ? ' class="' . $classes[ $key ] . '" ' : '';
255
+							$c_label = isset($labels[ $key ]) ? '<label for="' . $c_id . '">' . $labels[ $key ] . '</label>' : '';
256
+							$checked = !empty($default) && $default == $val ? ' checked="checked" ' : '';
257
+							$c_input .= '<input name="' . $f_name . '[]" type="checkbox" id="' . $c_id . '"' . $c_class . 'value="' . $val . '"' . $checked . $tabindex_str . ' />' . "\n" . $c_label;
258
+						}
259
+						$fld = $c_input;
260
+					} else {
261
+						$checked = !empty($default) && $default == $val ? 'checked="checked" ' : '';
262
+						$fld = '<input name="'. $f_name . '" type="checkbox" id="' . $id . '" class="' . $class . '" value="' . $value . '"' . $checked . $tabindex_str . ' />' . "\n";
263
+					}
264
+					break;
265
+
266
+				case 'radio':
267
+						$c_input = '';
268
+					if (is_array($value)) {
269
+						foreach ($value as $key => $val) {
270
+							$c_id = $field_name . '_' . $value;
271
+							$c_class = isset($classes[ $key ]) ? 'class="' . $classes[ $key ] . '" ' : '';
272
+							$c_label = isset($labels[ $key ]) ? '<label for="' . $c_id . '">' . $labels[ $key ] . '</label>' : '';
273
+							$checked = !empty($default) && $default == $val ? ' checked="checked" ' : '';
274
+							$c_input .= '<input name="' . $f_name . '" type="checkbox" id="' . $c_id . '"' . $c_class . 'value="' . $val . '"' . $checked . $tabindex_str . ' />' . "\n" . $c_label;
275
+						}
276
+						$fld = $c_input;
277
+					} else {
278
+						$checked = !empty($default) && $default == $val ? 'checked="checked" ' : '';
279
+						$fld = '<input name="'. $f_name . '" type="checkbox" id="' . $id . '" class="' . $class . '" value="' . $value . '"' . $checked . $tabindex_str . ' />' . "\n";
280
+					}
281
+					break;
282
+
283
+				case 'hidden':
284
+						$fld = '<input name="' . $f_name . '" type="hidden" id="' . $id . '" class="' . $class . '" value="' . $value . '" />' . "\n";
285
+					break;
286
+
287
+				case 'select':
288
+						$fld = '<select name="' . $f_name . '" class="' . $class . '" id="' . $id . '"' . $tabindex_str . '>' . "\n";
289
+					foreach ($value as $key => $val) {
290
+						$checked = !empty($default) && $default == $val ? ' selected="selected"' : '';
291
+						$fld .= "\t" . '<option value="' . $val . '"' . $checked . '>' . $labels[ $key ] . '</option>' . "\n";
292
+					}
293
+						$fld .= '</select>';
294
+					break;
295
+
296
+				case 'wp_editor':
297
+						$editor_settings = array(
298
+							'textarea_name' => $f_name,
299
+							'textarea_rows' => $dimensions[1],
300
+							'editor_class' => $class,
301
+							'tabindex' => $tabindex
302
+							);
303
+						$editor_settings = array_merge($wpeditor_args, $editor_settings);
304
+						ob_start();
305
+						wp_editor($value, $id, $editor_settings);
306
+						$editor = ob_get_contents();
307
+						ob_end_clean();
308
+						$fld = $editor;
309
+					break;
310
+
311
+				default: // 'text fields'
312
+						$fld = '<input name="' . $f_name . '" type="text" id="' . $id . '" class="' . $class . '" value="' . $value . '"' . $tabindex_str . ' />' . "\n";
313
+						$fld .= $extra_desc;
314
+			}
315
+
316
+			$form_fields[ $field_name ] = array( 'label' => $label, 'field' => $fld );
317
+		}
318
+
319
+		return $form_fields;
320
+	}
321
+
322
+
323
+
324
+
325
+
326
+
327
+	/**
328
+	 * espresso admin page select_input
329
+	 * Turns an array into a select fields
330
+	 *
331
+	 * @static
332
+	 * @access public
333
+	 * @param  string  $name       field name
334
+	 * @param  array  $values     option values, numbered array starting at 0, where each value is an array with a key 'text' (meaning text to display' and 'id' (meaning the internal value)
335
+	 * eg: array(1=>array('text'=>'Monday','id'=>1),2=>array('text'=>'Tuesday','id'=>2)...). or as an array of key-value pairs, where the key is to be used for the
336
+	 * select input's name, and the value will be the text shown to the user.  Optionally you can also include an additional key of "class" which will add a specific class to the option for that value.
337
+	 * @param  string  $default    default value
338
+	 * @param  string  $parameters extra paramaters
339
+	 * @param  string  $class      css class
340
+	 * @param  boolean $autosize   whether to autosize the select or not
341
+	 * @return string              html string for the select input
342
+	 */
343
+	public static function select_input($name, $values, $default = '', $parameters = '', $class = '', $autosize = true)
344
+	{
345
+		// if $values was submitted in the wrong format, convert it over
346
+		if (!empty($values) && (!array_key_exists(0, $values) || !is_array($values[0]))) {
347
+			$converted_values=array();
348
+			foreach ($values as $id => $text) {
349
+				$converted_values[]=array('id'=>$id,'text'=>$text);
350
+			}
351
+			$values=$converted_values;
352
+		}
353
+
354
+		$field = '<select id="' . EEH_Formatter::ee_tep_output_string($name) . '" name="' . EEH_Formatter::ee_tep_output_string($name) . '"';
355
+		// Debug
356
+		// EEH_Debug_Tools::printr( $values, '$values  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
357
+		if (EEH_Formatter::ee_tep_not_null($parameters)) {
358
+			$field .= ' ' . $parameters;
359
+		}
360
+		if ($autosize) {
361
+			$size = 'med';
362
+			for ($ii = 0, $ni = sizeof($values); $ii < $ni; $ii++) {
363
+				if ($values[ $ii ]['text']) {
364
+					if (strlen($values[ $ii ]['text']) > 5) {
365
+						$size = 'wide';
366
+					}
367
+				}
368
+			}
369
+		} else {
370
+			$size = '';
371
+		}
372
+
373
+		$field .= ' class="' . $class . ' ' . $size . '">';
374
+
375
+		if (empty($default) && isset($GLOBALS[ $name ])) {
376
+			$default = stripslashes($GLOBALS[ $name ]);
377
+		}
378
+
379
+
380
+		for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
381
+			$field .= '<option value="' . $values[ $i ]['id'] . '"';
382
+			if ($default == $values[ $i ]['id']) {
383
+				$field .= ' selected = "selected"';
384
+			}
385
+			if (isset($values[ $i ]['class'])) {
386
+				$field .= ' class="' . $values[ $i ]['class'] . '"';
387
+			}
388
+			$field .= '>' . $values[ $i ]['text'] . '</option>';
389
+		}
390
+		$field .= '</select>';
391
+
392
+		return $field;
393
+	}
394
+
395
+
396
+
397
+
398
+
399
+
400
+	/**
401
+	 * generate_question_groups_html
402
+	 *
403
+	 * @param string $question_groups
404
+	 * @return string HTML
405
+	 */
406
+	public static function generate_question_groups_html($question_groups = array(), $group_wrapper = 'fieldset')
407
+	{
408
+
409
+		$html = '';
410
+		$before_question_group_questions = apply_filters('FHEE__EEH_Form_Fields__generate_question_groups_html__before_question_group_questions', '');
411
+		$after_question_group_questions = apply_filters('FHEE__EEH_Form_Fields__generate_question_groups_html__after_question_group_questions', '');
412
+
413
+		if (! empty($question_groups)) {
414
+			// EEH_Debug_Tools::printr( $question_groups, '$question_groups  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
415
+			// loop thru question groups
416
+			foreach ($question_groups as $QSG) {
417
+				// check that questions exist
418
+				if (! empty($QSG['QSG_questions'])) {
419
+					// use fieldsets
420
+					$html .= "\n\t" . '<' . $group_wrapper . ' class="espresso-question-group-wrap" id="' . $QSG['QSG_identifier'] . '">';
421
+					// group_name
422
+					$html .= $QSG['QSG_show_group_name'] ? "\n\t\t" . '<h5 class="espresso-question-group-title-h5 section-title">' . self::prep_answer($QSG['QSG_name']) . '</h5>' : '';
423
+					// group_desc
424
+					$html .= $QSG['QSG_show_group_desc'] && ! empty($QSG['QSG_desc']) ? '<div class="espresso-question-group-desc-pg">' . self::prep_answer($QSG['QSG_desc']) . '</div>' : '';
425
+
426
+					$html .= $before_question_group_questions;
427
+					// loop thru questions
428
+					foreach ($QSG['QSG_questions'] as $question) {
429 429
 //                      EEH_Debug_Tools::printr( $question, '$question  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
430
-                        $QFI = new EE_Question_Form_Input(
431
-                            $question['qst_obj'],
432
-                            $question['ans_obj'],
433
-                            $question
434
-                        );
435
-                        $html .= self::generate_form_input($QFI);
436
-                    }
437
-                    $html .= $after_question_group_questions;
438
-                    $html .= "\n\t" . '</' . $group_wrapper . '>';
439
-                }
440
-            }
441
-        }
442
-
443
-        return $html;
444
-    }
445
-
446
-
447
-
448
-    /**
449
-     * generate_question_groups_html
450
-     *
451
-     * @param array         $question_groups
452
-     * @param array        $q_meta
453
-     * @param bool         $from_admin
454
-     * @param string       $group_wrapper
455
-     * @return string HTML
456
-     */
457
-    public static function generate_question_groups_html2($question_groups = array(), $q_meta = array(), $from_admin = false, $group_wrapper = 'fieldset')
458
-    {
459
-
460
-        $html = '';
461
-        $before_question_group_questions = apply_filters('FHEE__EEH_Form_Fields__generate_question_groups_html__before_question_group_questions', '');
462
-        $after_question_group_questions = apply_filters('FHEE__EEH_Form_Fields__generate_question_groups_html__after_question_group_questions', '');
463
-
464
-        $default_q_meta = array(
465
-                'att_nmbr' => 1,
466
-                'ticket_id' => '',
467
-                'input_name' => '',
468
-                'input_id' => '',
469
-                'input_class' => ''
470
-        );
471
-        $q_meta = array_merge($default_q_meta, $q_meta);
472
-        // EEH_Debug_Tools::printr( $q_meta, '$q_meta  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
473
-
474
-        if (! empty($question_groups)) {
430
+						$QFI = new EE_Question_Form_Input(
431
+							$question['qst_obj'],
432
+							$question['ans_obj'],
433
+							$question
434
+						);
435
+						$html .= self::generate_form_input($QFI);
436
+					}
437
+					$html .= $after_question_group_questions;
438
+					$html .= "\n\t" . '</' . $group_wrapper . '>';
439
+				}
440
+			}
441
+		}
442
+
443
+		return $html;
444
+	}
445
+
446
+
447
+
448
+	/**
449
+	 * generate_question_groups_html
450
+	 *
451
+	 * @param array         $question_groups
452
+	 * @param array        $q_meta
453
+	 * @param bool         $from_admin
454
+	 * @param string       $group_wrapper
455
+	 * @return string HTML
456
+	 */
457
+	public static function generate_question_groups_html2($question_groups = array(), $q_meta = array(), $from_admin = false, $group_wrapper = 'fieldset')
458
+	{
459
+
460
+		$html = '';
461
+		$before_question_group_questions = apply_filters('FHEE__EEH_Form_Fields__generate_question_groups_html__before_question_group_questions', '');
462
+		$after_question_group_questions = apply_filters('FHEE__EEH_Form_Fields__generate_question_groups_html__after_question_group_questions', '');
463
+
464
+		$default_q_meta = array(
465
+				'att_nmbr' => 1,
466
+				'ticket_id' => '',
467
+				'input_name' => '',
468
+				'input_id' => '',
469
+				'input_class' => ''
470
+		);
471
+		$q_meta = array_merge($default_q_meta, $q_meta);
472
+		// EEH_Debug_Tools::printr( $q_meta, '$q_meta  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
473
+
474
+		if (! empty($question_groups)) {
475 475
 //          EEH_Debug_Tools::printr( $question_groups, '$question_groups  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
476
-            // loop thru question groups
477
-            foreach ($question_groups as $QSG) {
478
-                if ($QSG instanceof EE_Question_Group) {
479
-                    // check that questions exist
480
-
481
-                    $where = array( 'QST_deleted' => 0 );
482
-                    if (! $from_admin) {
483
-                        $where['QST_admin_only'] = 0;
484
-                    }
485
-                    $questions = $QSG->questions(array( $where, 'order_by' => array( 'Question_Group_Question.QGQ_order' => 'ASC' )));
486
-                    if (! empty($questions)) {
487
-                        // use fieldsets
488
-                        $html .= "\n\t" . '<' . $group_wrapper . ' class="espresso-question-group-wrap" id="' . $QSG->get('QSG_identifier') . '">';
489
-                        // group_name
490
-                        if ($QSG->show_group_name()) {
491
-                            $html .=  "\n\t\t" . '<h5 class="espresso-question-group-title-h5 section-title">' . $QSG->get_pretty('QSG_name') . '</h5>';
492
-                        }
493
-                        // group_desc
494
-                        if ($QSG->show_group_desc()) {
495
-                            $html .=  '<div class="espresso-question-group-desc-pg">' . $QSG->get_pretty('QSG_desc') . '</div>';
496
-                        }
497
-
498
-                        $html .= $before_question_group_questions;
499
-                        // loop thru questions
500
-                        foreach ($questions as $QST) {
501
-                            $qstn_id = $QST->is_system_question() ? $QST->system_ID() : $QST->ID();
502
-
503
-                            $answer = null;
504
-
505
-                            if (isset($_GET['qstn']) && isset($q_meta['input_id']) && isset($q_meta['att_nmbr'])) {
506
-                                // check for answer in $_GET in case we are reprocessing a form after an error
507
-                                if (isset($_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ])) {
508
-                                    $answer = is_array($_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ]) ? $_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ] : sanitize_text_field($_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ]);
509
-                                }
510
-                            } elseif (isset($q_meta['attendee']) && $q_meta['attendee']) {
511
-                                // attendee data from the session
512
-                                $answer = isset($q_meta['attendee'][ $qstn_id ]) ? $q_meta['attendee'][ $qstn_id ] : null;
513
-                            }
514
-
515
-
516
-
517
-                            $QFI = new EE_Question_Form_Input(
518
-                                $QST,
519
-                                EE_Answer::new_instance(array(
520
-                                            'ANS_ID'=> 0,
521
-                                            'QST_ID'=> 0,
522
-                                            'REG_ID'=> 0,
523
-                                            'ANS_value'=> $answer
524
-                                    )),
525
-                                $q_meta
526
-                            );
527
-                            // EEH_Debug_Tools::printr( $QFI, '$QFI  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
528
-                            $html .= self::generate_form_input($QFI);
529
-                        }
530
-                        $html .= $after_question_group_questions;
531
-                        $html .= "\n\t" . '</' . $group_wrapper . '>';
532
-                    }
533
-                }
534
-            }
535
-        }
536
-        return $html;
537
-    }
538
-
539
-
540
-
541
-
542
-
543
-
544
-    /**
545
-     * generate_form_input
546
-     *
547
-     * @param EE_Question_Form_Input $QFI
548
-     * @return string HTML
549
-     */
550
-    public static function generate_form_input(EE_Question_Form_Input $QFI)
551
-    {
552
-        if (isset($QFI->QST_admin_only) && $QFI->QST_admin_only && ! is_admin()) {
553
-            return '';
554
-        }
555
-
556
-        $QFI = self::_load_system_dropdowns($QFI);
557
-        $QFI = self::_load_specialized_dropdowns($QFI);
558
-
559
-        // we also need to verify
560
-
561
-        $display_text = $QFI->get('QST_display_text');
562
-        $input_name = $QFI->get('QST_input_name');
563
-        $answer = EE_Registry::instance()->REQ->is_set($input_name) ? EE_Registry::instance()->REQ->get($input_name) : $QFI->get('ANS_value');
564
-        $input_id = $QFI->get('QST_input_id');
565
-        $input_class = $QFI->get('QST_input_class');
476
+			// loop thru question groups
477
+			foreach ($question_groups as $QSG) {
478
+				if ($QSG instanceof EE_Question_Group) {
479
+					// check that questions exist
480
+
481
+					$where = array( 'QST_deleted' => 0 );
482
+					if (! $from_admin) {
483
+						$where['QST_admin_only'] = 0;
484
+					}
485
+					$questions = $QSG->questions(array( $where, 'order_by' => array( 'Question_Group_Question.QGQ_order' => 'ASC' )));
486
+					if (! empty($questions)) {
487
+						// use fieldsets
488
+						$html .= "\n\t" . '<' . $group_wrapper . ' class="espresso-question-group-wrap" id="' . $QSG->get('QSG_identifier') . '">';
489
+						// group_name
490
+						if ($QSG->show_group_name()) {
491
+							$html .=  "\n\t\t" . '<h5 class="espresso-question-group-title-h5 section-title">' . $QSG->get_pretty('QSG_name') . '</h5>';
492
+						}
493
+						// group_desc
494
+						if ($QSG->show_group_desc()) {
495
+							$html .=  '<div class="espresso-question-group-desc-pg">' . $QSG->get_pretty('QSG_desc') . '</div>';
496
+						}
497
+
498
+						$html .= $before_question_group_questions;
499
+						// loop thru questions
500
+						foreach ($questions as $QST) {
501
+							$qstn_id = $QST->is_system_question() ? $QST->system_ID() : $QST->ID();
502
+
503
+							$answer = null;
504
+
505
+							if (isset($_GET['qstn']) && isset($q_meta['input_id']) && isset($q_meta['att_nmbr'])) {
506
+								// check for answer in $_GET in case we are reprocessing a form after an error
507
+								if (isset($_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ])) {
508
+									$answer = is_array($_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ]) ? $_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ] : sanitize_text_field($_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ]);
509
+								}
510
+							} elseif (isset($q_meta['attendee']) && $q_meta['attendee']) {
511
+								// attendee data from the session
512
+								$answer = isset($q_meta['attendee'][ $qstn_id ]) ? $q_meta['attendee'][ $qstn_id ] : null;
513
+							}
514
+
515
+
516
+
517
+							$QFI = new EE_Question_Form_Input(
518
+								$QST,
519
+								EE_Answer::new_instance(array(
520
+											'ANS_ID'=> 0,
521
+											'QST_ID'=> 0,
522
+											'REG_ID'=> 0,
523
+											'ANS_value'=> $answer
524
+									)),
525
+								$q_meta
526
+							);
527
+							// EEH_Debug_Tools::printr( $QFI, '$QFI  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
528
+							$html .= self::generate_form_input($QFI);
529
+						}
530
+						$html .= $after_question_group_questions;
531
+						$html .= "\n\t" . '</' . $group_wrapper . '>';
532
+					}
533
+				}
534
+			}
535
+		}
536
+		return $html;
537
+	}
538
+
539
+
540
+
541
+
542
+
543
+
544
+	/**
545
+	 * generate_form_input
546
+	 *
547
+	 * @param EE_Question_Form_Input $QFI
548
+	 * @return string HTML
549
+	 */
550
+	public static function generate_form_input(EE_Question_Form_Input $QFI)
551
+	{
552
+		if (isset($QFI->QST_admin_only) && $QFI->QST_admin_only && ! is_admin()) {
553
+			return '';
554
+		}
555
+
556
+		$QFI = self::_load_system_dropdowns($QFI);
557
+		$QFI = self::_load_specialized_dropdowns($QFI);
558
+
559
+		// we also need to verify
560
+
561
+		$display_text = $QFI->get('QST_display_text');
562
+		$input_name = $QFI->get('QST_input_name');
563
+		$answer = EE_Registry::instance()->REQ->is_set($input_name) ? EE_Registry::instance()->REQ->get($input_name) : $QFI->get('ANS_value');
564
+		$input_id = $QFI->get('QST_input_id');
565
+		$input_class = $QFI->get('QST_input_class');
566 566
 //      $disabled = $QFI->get('QST_disabled') ? ' disabled="disabled"' : '';
567
-        $disabled = $QFI->get('QST_disabled') ? true : false;
568
-        $required_label = apply_filters(' FHEE__EEH_Form_Fields__generate_form_input__required_label', '<em>*</em>');
569
-        $QST_required = $QFI->get('QST_required');
570
-        $required = $QST_required ? array( 'label' => $required_label, 'class' => 'required needs-value', 'title' => $QST_required ) : array();
571
-        $use_html_entities = $QFI->get_meta('htmlentities');
572
-        $required_text = $QFI->get('QST_required_text') != '' ? $QFI->get('QST_required_text') : __('This field is required', 'event_espresso');
573
-        $required_text = $QST_required ? "\n\t\t\t" . '<div class="required-text hidden">' . self::prep_answer($required_text, $use_html_entities) . '</div>' : '';
574
-        $label_class = 'espresso-form-input-lbl';
575
-        $QST_options = $QFI->options(true, $answer);
576
-        $options = is_array($QST_options) ? self::prep_answer_options($QST_options) : array();
577
-        $system_ID = $QFI->get('QST_system');
578
-        $label_b4 = $QFI->get_meta('label_b4');
579
-        $use_desc_4_label = $QFI->get_meta('use_desc_4_label');
580
-
581
-
582
-        switch ($QFI->get('QST_type')) {
583
-            case 'TEXTAREA':
584
-                return EEH_Form_Fields::textarea($display_text, $answer, $input_name, $input_id, $input_class, array(), $required, $required_text, $label_class, $disabled, $system_ID, $use_html_entities);
585
-                break;
586
-
587
-            case 'DROPDOWN':
588
-                return EEH_Form_Fields::select($display_text, $answer, $options, $input_name, $input_id, $input_class, $required, $required_text, $label_class, $disabled, $system_ID, $use_html_entities, true);
589
-                break;
590
-
591
-
592
-            case 'RADIO_BTN':
593
-                return EEH_Form_Fields::radio($display_text, $answer, $options, $input_name, $input_id, $input_class, $required, $required_text, $label_class, $disabled, $system_ID, $use_html_entities, $label_b4, $use_desc_4_label);
594
-                break;
595
-
596
-            case 'CHECKBOX':
597
-                return EEH_Form_Fields::checkbox($display_text, $answer, $options, $input_name, $input_id, $input_class, $required, $required_text, $label_class, $disabled, $label_b4, $system_ID, $use_html_entities);
598
-                break;
599
-
600
-            case 'DATE':
601
-                return EEH_Form_Fields::datepicker($display_text, $answer, $input_name, $input_id, $input_class, $required, $required_text, $label_class, $disabled, $system_ID, $use_html_entities);
602
-                break;
603
-
604
-            case 'TEXT':
605
-            default:
606
-                return EEH_Form_Fields::text($display_text, $answer, $input_name, $input_id, $input_class, $required, $required_text, $label_class, $disabled, $system_ID, $use_html_entities);
607
-                break;
608
-        }
609
-    }
610
-
611
-
612
-
613
-
614
-
615
-
616
-    /**
617
-     * generates HTML for a form text input
618
-     *
619
-     * @param string $question  label content
620
-     * @param string $answer        form input value attribute
621
-     * @param string $name          form input name attribute
622
-     * @param string $id                form input css id attribute
623
-     * @param string $class             form input css class attribute
624
-     * @param array $required       'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
625
-     * @param string $label_class   css class attribute for the label
626
-     * @param string $disabled      disabled="disabled" or null
627
-     * @return string HTML
628
-     */
629
-    public static function text($question = false, $answer = null, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true)
630
-    {
631
-        // need these
632
-        if (! $question || ! $name) {
633
-            return null;
634
-        }
635
-        // prep the answer
636
-        $answer = is_array($answer) ? '' : self::prep_answer($answer, $use_html_entities);
637
-        // prep the required array
638
-        $required = self::prep_required($required);
639
-        // set disabled tag
640
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
641
-        // ya gots ta have style man!!!
642
-        $txt_class = is_admin() ? 'regular-text' : 'espresso-text-inp';
643
-        $class = empty($class) ? $txt_class : $class;
644
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
645
-        $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
646
-
647
-        $label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
648
-        // filter label but ensure required text comes before it
649
-        $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
650
-
651
-        $input_html = "\n\t\t\t" . '<input type="text" name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . '" value="' . esc_attr($answer) . '"  title="' . esc_attr($required['msg']) . '" ' . $disabled .' ' . $extra . '/>';
652
-
653
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
654
-        return  $label_html . $input_html;
655
-    }
656
-
657
-
658
-
659
-
660
-
661
-    /**
662
-     * generates HTML for a form textarea
663
-     *
664
-     * @param string $question      label content
665
-     * @param string $answer        form input value attribute
666
-     * @param string $name          form input name attribute
667
-     * @param string $id                form input css id attribute
668
-     * @param string $class             form input css class attribute
669
-     * @param array $dimensions array of form input rows and cols attributes : array( 'rows' => 3, 'cols' => 40 )
670
-     * @param array $required       'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
671
-     * @param string $label_class   css class attribute for the label
672
-     * @param string $disabled      disabled="disabled" or null
673
-     * @return string HTML
674
-     */
675
-    public static function textarea($question = false, $answer = null, $name = false, $id = '', $class = '', $dimensions = false, $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true)
676
-    {
677
-        // need these
678
-        if (! $question || ! $name) {
679
-            return null;
680
-        }
681
-        // prep the answer
682
-        $answer = is_array($answer) ? '' : self::prep_answer($answer, $use_html_entities);
683
-        // prep the required array
684
-        $required = self::prep_required($required);
685
-        // make sure $dimensions is an array
686
-        $dimensions = is_array($dimensions) ? $dimensions : array();
687
-        // and set some defaults
688
-        $dimensions = array_merge(array( 'rows' => 3, 'cols' => 40 ), $dimensions);
689
-        // set disabled tag
690
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
691
-        // ya gots ta have style man!!!
692
-        $txt_class = is_admin() ? 'regular-text' : 'espresso-textarea-inp';
693
-        $class = empty($class) ? $txt_class : $class;
694
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
695
-        $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
696
-
697
-        $label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
698
-        // filter label but ensure required text comes before it
699
-        $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
700
-
701
-        $input_html = "\n\t\t\t" . '<textarea name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . '" rows="' . $dimensions['rows'] . '" cols="' . $dimensions['cols'] . '"  title="' . $required['msg'] . '" ' . $disabled . ' ' . $extra . '>' . $answer . '</textarea>';
702
-
703
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
704
-        return  $label_html . $input_html;
705
-    }
706
-
707
-
708
-
709
-
710
-
711
-
712
-    /**
713
-     * generates HTML for a form select input
714
-     *
715
-     * @param string $question      label content
716
-     * @param string $answer        form input value attribute
717
-     * @param array $options            array of answer options where array key = option value and array value = option display text
718
-     * @param string $name          form input name attribute
719
-     * @param string $id                form input css id attribute
720
-     * @param string $class             form input css class attribute
721
-     * @param array $required       'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
722
-     * @param string $label_class   css class attribute for the label
723
-     * @param string $disabled      disabled="disabled" or null
724
-     * @return string HTML
725
-     */
726
-    public static function select($question = false, $answer = null, $options = false, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true, $add_please_select_option = false)
727
-    {
728
-
729
-        // need these
730
-        if (! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
731
-            return null;
732
-        }
733
-        // prep the answer
734
-        $answer = is_array($answer) ? self::prep_answer(array_shift($answer), $use_html_entities) : self::prep_answer($answer, $use_html_entities);
735
-        // prep the required array
736
-        $required = self::prep_required($required);
737
-        // set disabled tag
738
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
739
-        // ya gots ta have style man!!!
740
-        $txt_class = is_admin() ? 'wide' : 'espresso-select-inp';
741
-        $class = empty($class) ? $txt_class : $class;
742
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
743
-        $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
744
-
745
-        $label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
746
-        // filter label but ensure required text comes before it
747
-        $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
748
-
749
-        $input_html = "\n\t\t\t" . '<select name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . '" title="' . esc_attr($required['msg']) . '"' . $disabled . ' ' . $extra . '>';
750
-        // recursively count array elements, to determine total number of options
751
-        $only_option = count($options, 1) == 1 ? true : false;
752
-        if (! $only_option) {
753
-            // if there is NO answer set and there are multiple options to choose from, then set the "please select" message as selected
754
-            $selected = $answer === null ? ' selected="selected"' : '';
755
-            $input_html .= $add_please_select_option ? "\n\t\t\t\t" . '<option value=""' . $selected . '>' . __(' - please select - ', 'event_espresso') . '</option>' : '';
756
-        }
757
-        foreach ($options as $key => $value) {
758
-            // if value is an array, then create option groups, else create regular ol' options
759
-            $input_html .= is_array($value) ? self::_generate_select_option_group($key, $value, $answer, $use_html_entities) : self::_generate_select_option($value->value(), $value->desc(), $answer, $only_option, $use_html_entities);
760
-        }
761
-
762
-        $input_html .= "\n\t\t\t" . '</select>';
763
-
764
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__select__before_end_wrapper', $input_html, $question, $answer, $name, $id, $class, $system_ID);
765
-
766
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
767
-        return  $label_html . $input_html;
768
-    }
769
-
770
-
771
-
772
-    /**
773
-     *  _generate_select_option_group
774
-     *
775
-     *  if  $value for a select box is an array, then the key will be used as the optgroup label
776
-     *  and the value array will be looped thru and the elements sent to _generate_select_option
777
-     *
778
-     * @param mixed $opt_group
779
-     * @param mixed $QSOs
780
-     * @param mixed $answer
781
-     * @param boolean $use_html_entities
782
-     * @return string
783
-     */
784
-    private static function _generate_select_option_group($opt_group, $QSOs, $answer, $use_html_entities = true)
785
-    {
786
-        $html = "\n\t\t\t\t" . '<optgroup label="' . self::prep_option_value($opt_group) . '">';
787
-        foreach ($QSOs as $QSO) {
788
-            $html .= self::_generate_select_option($QSO->value(), $QSO->desc(), $answer, false, $use_html_entities);
789
-        }
790
-        $html .= "\n\t\t\t\t" . '</optgroup>';
791
-        return $html;
792
-    }
793
-
794
-
795
-
796
-    /**
797
-     *  _generate_select_option
798
-     * @param mixed $key
799
-     * @param mixed $value
800
-     * @param mixed $answer
801
-     * @param int $only_option
802
-     * @param boolean $use_html_entities
803
-     * @return string
804
-     */
805
-    private static function _generate_select_option($key, $value, $answer, $only_option = false, $use_html_entities = true)
806
-    {
807
-        $key = self::prep_answer($key, $use_html_entities);
808
-        $value = self::prep_answer($value, $use_html_entities);
809
-        $value = ! empty($value) ? $value : $key;
810
-        $selected = ( $answer == $key || $only_option ) ? ' selected="selected"' : '';
811
-        return "\n\t\t\t\t" . '<option value="' . self::prep_option_value($key) . '"' . $selected . '> ' . $value . '&nbsp;&nbsp;&nbsp;</option>';
812
-    }
813
-
814
-
815
-
816
-    /**
817
-     * generates HTML for form radio button inputs
818
-     *
819
-     * @param bool|string $question    label content
820
-     * @param string      $answer      form input value attribute
821
-     * @param array|bool  $options     array of answer options where array key = option value and array value = option display text
822
-     * @param bool|string $name        form input name attribute
823
-     * @param string      $id          form input css id attribute
824
-     * @param string      $class       form input css class attribute
825
-     * @param array|bool  $required    'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
826
-     * @param string      $required_text
827
-     * @param string      $label_class css class attribute for the label
828
-     * @param bool|string $disabled    disabled="disabled" or null
829
-     * @param bool        $system_ID
830
-     * @param bool        $use_html_entities
831
-     * @param bool        $label_b4
832
-     * @param bool        $use_desc_4_label
833
-     * @return string HTML
834
-     */
835
-    public static function radio($question = false, $answer = null, $options = false, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true, $label_b4 = false, $use_desc_4_label = false)
836
-    {
837
-        // need these
838
-        if (! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
839
-            return null;
840
-        }
841
-        // prep the answer
842
-        $answer = is_array($answer) ? '' : self::prep_answer($answer, $use_html_entities);
843
-        // prep the required array
844
-        $required = self::prep_required($required);
845
-        // set disabled tag
846
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
847
-        // ya gots ta have style man!!!
848
-        $radio_class = is_admin() ? 'ee-admin-radio-lbl' : $label_class;
849
-        $class = ! empty($class) ? $class : 'espresso-radio-btn-inp';
850
-        $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
851
-
852
-        $label_html = $required_text . "\n\t\t\t" . '<label class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label> ';
853
-        // filter label but ensure required text comes before it
854
-        $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
855
-
856
-        $input_html = "\n\t\t\t" . '<ul id="' . $id . '-ul" class="espresso-radio-btn-options-ul ' . $label_class . ' ' . $class . '-ul">';
857
-
858
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
859
-        $class .= ! empty($required['class']) ? ' ' . $required['class'] : '';
860
-
861
-        foreach ($options as $OPT) {
862
-            if ($OPT instanceof EE_Question_Option) {
863
-                $value = self::prep_option_value($OPT->value());
864
-                $label = $use_desc_4_label ? $OPT->desc() : $OPT->value();
865
-                $size = $use_desc_4_label ? self::get_label_size_class($OPT->value() . ' ' . $OPT->desc()) : self::get_label_size_class($OPT->value());
866
-                $desc = $OPT->desc();// no self::prep_answer
867
-                $answer = is_numeric($value) && empty($answer) ? 0 : $answer;
868
-                $checked = (string) $value == (string) $answer ? ' checked="checked"' : '';
869
-                $opt = '-' . sanitize_key($value);
870
-
871
-                $input_html .= "\n\t\t\t\t" . '<li' . $size . '>';
872
-                $input_html .= "\n\t\t\t\t\t" . '<label class="' . $radio_class . ' espresso-radio-btn-lbl">';
873
-                $input_html .= $label_b4  ? "\n\t\t\t\t\t\t" . '<span>' . $label . '</span>' : '';
874
-                $input_html .= "\n\t\t\t\t\t\t" . '<input type="radio" name="' . $name . '" id="' . $id . $opt . '" class="' . $class . '" value="' . $value . '" title="' . esc_attr($required['msg']) . '" ' . $disabled . $checked . ' ' . $extra . '/>';
875
-                $input_html .= ! $label_b4  ? "\n\t\t\t\t\t\t" . '<span class="espresso-radio-btn-desc">' . $label . '</span>' : '';
876
-                $input_html .= "\n\t\t\t\t\t" . '</label>';
877
-                $input_html .= $use_desc_4_label ? '' : '<span class="espresso-radio-btn-option-desc small-text grey-text">' . $desc . '</span>';
878
-                $input_html .= "\n\t\t\t\t" . '</li>';
879
-            }
880
-        }
881
-
882
-        $input_html .= "\n\t\t\t" . '</ul>';
883
-
884
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
885
-        return  $label_html . $input_html;
886
-    }
887
-
888
-
889
-
890
-
891
-
892
-
893
-    /**
894
-     * generates HTML for form checkbox inputs
895
-     *
896
-     * @param string $question      label content
897
-     * @param string $answer        form input value attribute
898
-     * @param array $options            array of options where array key = option value and array value = option display text
899
-     * @param string $name          form input name attribute
900
-     * @param string $id                form input css id attribute
901
-     * @param string $class             form input css class attribute
902
-     * @param array $required       'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
903
-     * @param string $label_class   css class attribute for the label
904
-     * @param string $disabled      disabled="disabled" or null
905
-     * @return string HTML
906
-     */
907
-    public static function checkbox($question = false, $answer = null, $options = false, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $label_b4 = false, $system_ID = false, $use_html_entities = true)
908
-    {
909
-        // need these
910
-        if (! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
911
-            return null;
912
-        }
913
-        $answer = maybe_unserialize($answer);
914
-
915
-        // prep the answer(s)
916
-        $answer = is_array($answer) ? $answer : array( sanitize_key($answer) => $answer );
917
-
918
-        foreach ($answer as $key => $value) {
919
-            $key = self::prep_option_value($key);
920
-            $answer[ $key ] = self::prep_answer($value, $use_html_entities);
921
-        }
922
-
923
-        // prep the required array
924
-        $required = self::prep_required($required);
925
-        // set disabled tag
926
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
927
-        // ya gots ta have style man!!!
928
-        $radio_class = is_admin() ? 'ee-admin-radio-lbl' : $label_class;
929
-        $class = empty($class) ? 'espresso-radio-btn-inp' : $class;
930
-        $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
931
-
932
-        $label_html = $required_text . "\n\t\t\t" . '<label class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label> ';
933
-        // filter label but ensure required text comes before it
934
-        $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
935
-
936
-        $input_html = "\n\t\t\t" . '<ul id="' . $id . '-ul" class="espresso-checkbox-options-ul ' . $label_class . ' ' . $class . '-ul">';
937
-
938
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
939
-        $class .= ! empty($required['class']) ? ' ' . $required['class'] : '';
940
-
941
-        foreach ($options as $OPT) {
942
-            $value = $OPT->value();// self::prep_option_value( $OPT->value() );
943
-            $size = self::get_label_size_class($OPT->value() . ' ' . $OPT->desc());
944
-            $text = self::prep_answer($OPT->value());
945
-            $desc = $OPT->desc() ;
946
-            $opt = '-' . sanitize_key($value);
947
-
948
-            $checked = is_array($answer) && in_array($text, $answer) ? ' checked="checked"' : '';
949
-
950
-            $input_html .= "\n\t\t\t\t" . '<li' . $size . '>';
951
-            $input_html .= "\n\t\t\t\t\t" . '<label class="' . $radio_class . ' espresso-checkbox-lbl">';
952
-            $input_html .= $label_b4  ? "\n\t\t\t\t\t\t" . '<span>' . $text . '</span>' : '';
953
-            $input_html .= "\n\t\t\t\t\t\t" . '<input type="checkbox" name="' . $name . '[' . $OPT->ID() . ']" id="' . $id . $opt . '" class="' . $class . '" value="' . $value . '" title="' . esc_attr($required['msg']) . '" ' . $disabled . $checked . ' ' . $extra . '/>';
954
-            $input_html .= ! $label_b4  ? "\n\t\t\t\t\t\t" . '<span>' . $text . '</span>' : '';
955
-            $input_html .= "\n\t\t\t\t\t" . '</label>';
956
-            if (! empty($desc) && $desc != $text) {
957
-                $input_html .= "\n\t\t\t\t\t" . ' &nbsp; <br/><div class="espresso-checkbox-option-desc small-text grey-text">' . $desc . '</div>';
958
-            }
959
-            $input_html .= "\n\t\t\t\t" . '</li>';
960
-        }
961
-
962
-        $input_html .= "\n\t\t\t" . '</ul>';
963
-
964
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
965
-        return  $label_html . $input_html;
966
-    }
967
-
968
-
969
-
970
-
971
-
972
-
973
-    /**
974
-     * generates HTML for a form datepicker input
975
-     *
976
-     * @param string $question  label content
977
-     * @param string $answer        form input value attribute
978
-     * @param string $name          form input name attribute
979
-     * @param string $id                form input css id attribute
980
-     * @param string $class             form input css class attribute
981
-     * @param array $required       'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
982
-     * @param string $label_class   css class attribute for the label
983
-     * @param string $disabled      disabled="disabled" or null
984
-     * @return string HTML
985
-     */
986
-    public static function datepicker($question = false, $answer = null, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true)
987
-    {
988
-        // need these
989
-        if (! $question || ! $name) {
990
-            return null;
991
-        }
992
-        // prep the answer
993
-        $answer = is_array($answer) ? '' : self::prep_answer($answer, $use_html_entities);
994
-        // prep the required array
995
-        $required = self::prep_required($required);
996
-        // set disabled tag
997
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
998
-        // ya gots ta have style man!!!
999
-        $txt_class = is_admin() ? 'regular-text' : 'espresso-datepicker-inp';
1000
-        $class = empty($class) ? $txt_class : $class;
1001
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
1002
-        $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
1003
-
1004
-        $label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
1005
-        // filter label but ensure required text comes before it
1006
-        $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
1007
-
1008
-        $input_html = "\n\t\t\t" . '<input type="text" name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . ' datepicker" value="' . $answer . '"  title="' . esc_attr($required['msg']) . '" ' . $disabled . ' ' . $extra . '/>';
1009
-
1010
-        // enqueue scripts
1011
-        wp_register_style('espresso-ui-theme', EE_GLOBAL_ASSETS_URL . 'css/espresso-ui-theme/jquery-ui-1.10.3.custom.min.css', array(), EVENT_ESPRESSO_VERSION);
1012
-        wp_enqueue_style('espresso-ui-theme');
1013
-        wp_enqueue_script('jquery-ui-datepicker');
1014
-
1015
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
1016
-        return  $label_html . $input_html;
1017
-    }
1018
-
1019
-
1020
-
1021
-    /**
1022
-     *  remove_label_keep_required_msg
1023
-     *  this will strip out a form input's label HTML while keeping the required text HTML that MUST be before the label
1024
-     *  @access public
1025
-     *  @return     string
1026
-     */
1027
-    public static function remove_label_keep_required_msg($label_html, $required_text)
1028
-    {
1029
-        return $required_text;
1030
-    }
1031
-
1032
-
1033
-
1034
-
1035
-
1036
-    /**
1037
-     * Simply return sthe HTML for a hidden input of the given name and value.
1038
-     * @param string $name
1039
-     * @param string $value
1040
-     * @return string HTML
1041
-     */
1042
-    public static function hidden_input($name, $value, $id = '')
1043
-    {
1044
-        $id = ! empty($id) ? $id : $name;
1045
-        return '<input id="' . $id . '" type="hidden" name="'.$name.'" value="' .  $value . '"/>';
1046
-    }
1047
-
1048
-
1049
-
1050
-
1051
-
1052
-    /**
1053
-     * prep_question
1054
-     * @param string $question
1055
-     * @return string
1056
-     */
1057
-    public static function prep_question($question)
1058
-    {
1059
-        return $question;
567
+		$disabled = $QFI->get('QST_disabled') ? true : false;
568
+		$required_label = apply_filters(' FHEE__EEH_Form_Fields__generate_form_input__required_label', '<em>*</em>');
569
+		$QST_required = $QFI->get('QST_required');
570
+		$required = $QST_required ? array( 'label' => $required_label, 'class' => 'required needs-value', 'title' => $QST_required ) : array();
571
+		$use_html_entities = $QFI->get_meta('htmlentities');
572
+		$required_text = $QFI->get('QST_required_text') != '' ? $QFI->get('QST_required_text') : __('This field is required', 'event_espresso');
573
+		$required_text = $QST_required ? "\n\t\t\t" . '<div class="required-text hidden">' . self::prep_answer($required_text, $use_html_entities) . '</div>' : '';
574
+		$label_class = 'espresso-form-input-lbl';
575
+		$QST_options = $QFI->options(true, $answer);
576
+		$options = is_array($QST_options) ? self::prep_answer_options($QST_options) : array();
577
+		$system_ID = $QFI->get('QST_system');
578
+		$label_b4 = $QFI->get_meta('label_b4');
579
+		$use_desc_4_label = $QFI->get_meta('use_desc_4_label');
580
+
581
+
582
+		switch ($QFI->get('QST_type')) {
583
+			case 'TEXTAREA':
584
+				return EEH_Form_Fields::textarea($display_text, $answer, $input_name, $input_id, $input_class, array(), $required, $required_text, $label_class, $disabled, $system_ID, $use_html_entities);
585
+				break;
586
+
587
+			case 'DROPDOWN':
588
+				return EEH_Form_Fields::select($display_text, $answer, $options, $input_name, $input_id, $input_class, $required, $required_text, $label_class, $disabled, $system_ID, $use_html_entities, true);
589
+				break;
590
+
591
+
592
+			case 'RADIO_BTN':
593
+				return EEH_Form_Fields::radio($display_text, $answer, $options, $input_name, $input_id, $input_class, $required, $required_text, $label_class, $disabled, $system_ID, $use_html_entities, $label_b4, $use_desc_4_label);
594
+				break;
595
+
596
+			case 'CHECKBOX':
597
+				return EEH_Form_Fields::checkbox($display_text, $answer, $options, $input_name, $input_id, $input_class, $required, $required_text, $label_class, $disabled, $label_b4, $system_ID, $use_html_entities);
598
+				break;
599
+
600
+			case 'DATE':
601
+				return EEH_Form_Fields::datepicker($display_text, $answer, $input_name, $input_id, $input_class, $required, $required_text, $label_class, $disabled, $system_ID, $use_html_entities);
602
+				break;
603
+
604
+			case 'TEXT':
605
+			default:
606
+				return EEH_Form_Fields::text($display_text, $answer, $input_name, $input_id, $input_class, $required, $required_text, $label_class, $disabled, $system_ID, $use_html_entities);
607
+				break;
608
+		}
609
+	}
610
+
611
+
612
+
613
+
614
+
615
+
616
+	/**
617
+	 * generates HTML for a form text input
618
+	 *
619
+	 * @param string $question  label content
620
+	 * @param string $answer        form input value attribute
621
+	 * @param string $name          form input name attribute
622
+	 * @param string $id                form input css id attribute
623
+	 * @param string $class             form input css class attribute
624
+	 * @param array $required       'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
625
+	 * @param string $label_class   css class attribute for the label
626
+	 * @param string $disabled      disabled="disabled" or null
627
+	 * @return string HTML
628
+	 */
629
+	public static function text($question = false, $answer = null, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true)
630
+	{
631
+		// need these
632
+		if (! $question || ! $name) {
633
+			return null;
634
+		}
635
+		// prep the answer
636
+		$answer = is_array($answer) ? '' : self::prep_answer($answer, $use_html_entities);
637
+		// prep the required array
638
+		$required = self::prep_required($required);
639
+		// set disabled tag
640
+		$disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
641
+		// ya gots ta have style man!!!
642
+		$txt_class = is_admin() ? 'regular-text' : 'espresso-text-inp';
643
+		$class = empty($class) ? $txt_class : $class;
644
+		$class .= ! empty($system_ID) ? ' ' . $system_ID : '';
645
+		$extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
646
+
647
+		$label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
648
+		// filter label but ensure required text comes before it
649
+		$label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
650
+
651
+		$input_html = "\n\t\t\t" . '<input type="text" name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . '" value="' . esc_attr($answer) . '"  title="' . esc_attr($required['msg']) . '" ' . $disabled .' ' . $extra . '/>';
652
+
653
+		$input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
654
+		return  $label_html . $input_html;
655
+	}
656
+
657
+
658
+
659
+
660
+
661
+	/**
662
+	 * generates HTML for a form textarea
663
+	 *
664
+	 * @param string $question      label content
665
+	 * @param string $answer        form input value attribute
666
+	 * @param string $name          form input name attribute
667
+	 * @param string $id                form input css id attribute
668
+	 * @param string $class             form input css class attribute
669
+	 * @param array $dimensions array of form input rows and cols attributes : array( 'rows' => 3, 'cols' => 40 )
670
+	 * @param array $required       'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
671
+	 * @param string $label_class   css class attribute for the label
672
+	 * @param string $disabled      disabled="disabled" or null
673
+	 * @return string HTML
674
+	 */
675
+	public static function textarea($question = false, $answer = null, $name = false, $id = '', $class = '', $dimensions = false, $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true)
676
+	{
677
+		// need these
678
+		if (! $question || ! $name) {
679
+			return null;
680
+		}
681
+		// prep the answer
682
+		$answer = is_array($answer) ? '' : self::prep_answer($answer, $use_html_entities);
683
+		// prep the required array
684
+		$required = self::prep_required($required);
685
+		// make sure $dimensions is an array
686
+		$dimensions = is_array($dimensions) ? $dimensions : array();
687
+		// and set some defaults
688
+		$dimensions = array_merge(array( 'rows' => 3, 'cols' => 40 ), $dimensions);
689
+		// set disabled tag
690
+		$disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
691
+		// ya gots ta have style man!!!
692
+		$txt_class = is_admin() ? 'regular-text' : 'espresso-textarea-inp';
693
+		$class = empty($class) ? $txt_class : $class;
694
+		$class .= ! empty($system_ID) ? ' ' . $system_ID : '';
695
+		$extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
696
+
697
+		$label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
698
+		// filter label but ensure required text comes before it
699
+		$label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
700
+
701
+		$input_html = "\n\t\t\t" . '<textarea name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . '" rows="' . $dimensions['rows'] . '" cols="' . $dimensions['cols'] . '"  title="' . $required['msg'] . '" ' . $disabled . ' ' . $extra . '>' . $answer . '</textarea>';
702
+
703
+		$input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
704
+		return  $label_html . $input_html;
705
+	}
706
+
707
+
708
+
709
+
710
+
711
+
712
+	/**
713
+	 * generates HTML for a form select input
714
+	 *
715
+	 * @param string $question      label content
716
+	 * @param string $answer        form input value attribute
717
+	 * @param array $options            array of answer options where array key = option value and array value = option display text
718
+	 * @param string $name          form input name attribute
719
+	 * @param string $id                form input css id attribute
720
+	 * @param string $class             form input css class attribute
721
+	 * @param array $required       'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
722
+	 * @param string $label_class   css class attribute for the label
723
+	 * @param string $disabled      disabled="disabled" or null
724
+	 * @return string HTML
725
+	 */
726
+	public static function select($question = false, $answer = null, $options = false, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true, $add_please_select_option = false)
727
+	{
728
+
729
+		// need these
730
+		if (! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
731
+			return null;
732
+		}
733
+		// prep the answer
734
+		$answer = is_array($answer) ? self::prep_answer(array_shift($answer), $use_html_entities) : self::prep_answer($answer, $use_html_entities);
735
+		// prep the required array
736
+		$required = self::prep_required($required);
737
+		// set disabled tag
738
+		$disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
739
+		// ya gots ta have style man!!!
740
+		$txt_class = is_admin() ? 'wide' : 'espresso-select-inp';
741
+		$class = empty($class) ? $txt_class : $class;
742
+		$class .= ! empty($system_ID) ? ' ' . $system_ID : '';
743
+		$extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
744
+
745
+		$label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
746
+		// filter label but ensure required text comes before it
747
+		$label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
748
+
749
+		$input_html = "\n\t\t\t" . '<select name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . '" title="' . esc_attr($required['msg']) . '"' . $disabled . ' ' . $extra . '>';
750
+		// recursively count array elements, to determine total number of options
751
+		$only_option = count($options, 1) == 1 ? true : false;
752
+		if (! $only_option) {
753
+			// if there is NO answer set and there are multiple options to choose from, then set the "please select" message as selected
754
+			$selected = $answer === null ? ' selected="selected"' : '';
755
+			$input_html .= $add_please_select_option ? "\n\t\t\t\t" . '<option value=""' . $selected . '>' . __(' - please select - ', 'event_espresso') . '</option>' : '';
756
+		}
757
+		foreach ($options as $key => $value) {
758
+			// if value is an array, then create option groups, else create regular ol' options
759
+			$input_html .= is_array($value) ? self::_generate_select_option_group($key, $value, $answer, $use_html_entities) : self::_generate_select_option($value->value(), $value->desc(), $answer, $only_option, $use_html_entities);
760
+		}
761
+
762
+		$input_html .= "\n\t\t\t" . '</select>';
763
+
764
+		$input_html =  apply_filters('FHEE__EEH_Form_Fields__select__before_end_wrapper', $input_html, $question, $answer, $name, $id, $class, $system_ID);
765
+
766
+		$input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
767
+		return  $label_html . $input_html;
768
+	}
769
+
770
+
771
+
772
+	/**
773
+	 *  _generate_select_option_group
774
+	 *
775
+	 *  if  $value for a select box is an array, then the key will be used as the optgroup label
776
+	 *  and the value array will be looped thru and the elements sent to _generate_select_option
777
+	 *
778
+	 * @param mixed $opt_group
779
+	 * @param mixed $QSOs
780
+	 * @param mixed $answer
781
+	 * @param boolean $use_html_entities
782
+	 * @return string
783
+	 */
784
+	private static function _generate_select_option_group($opt_group, $QSOs, $answer, $use_html_entities = true)
785
+	{
786
+		$html = "\n\t\t\t\t" . '<optgroup label="' . self::prep_option_value($opt_group) . '">';
787
+		foreach ($QSOs as $QSO) {
788
+			$html .= self::_generate_select_option($QSO->value(), $QSO->desc(), $answer, false, $use_html_entities);
789
+		}
790
+		$html .= "\n\t\t\t\t" . '</optgroup>';
791
+		return $html;
792
+	}
793
+
794
+
795
+
796
+	/**
797
+	 *  _generate_select_option
798
+	 * @param mixed $key
799
+	 * @param mixed $value
800
+	 * @param mixed $answer
801
+	 * @param int $only_option
802
+	 * @param boolean $use_html_entities
803
+	 * @return string
804
+	 */
805
+	private static function _generate_select_option($key, $value, $answer, $only_option = false, $use_html_entities = true)
806
+	{
807
+		$key = self::prep_answer($key, $use_html_entities);
808
+		$value = self::prep_answer($value, $use_html_entities);
809
+		$value = ! empty($value) ? $value : $key;
810
+		$selected = ( $answer == $key || $only_option ) ? ' selected="selected"' : '';
811
+		return "\n\t\t\t\t" . '<option value="' . self::prep_option_value($key) . '"' . $selected . '> ' . $value . '&nbsp;&nbsp;&nbsp;</option>';
812
+	}
813
+
814
+
815
+
816
+	/**
817
+	 * generates HTML for form radio button inputs
818
+	 *
819
+	 * @param bool|string $question    label content
820
+	 * @param string      $answer      form input value attribute
821
+	 * @param array|bool  $options     array of answer options where array key = option value and array value = option display text
822
+	 * @param bool|string $name        form input name attribute
823
+	 * @param string      $id          form input css id attribute
824
+	 * @param string      $class       form input css class attribute
825
+	 * @param array|bool  $required    'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
826
+	 * @param string      $required_text
827
+	 * @param string      $label_class css class attribute for the label
828
+	 * @param bool|string $disabled    disabled="disabled" or null
829
+	 * @param bool        $system_ID
830
+	 * @param bool        $use_html_entities
831
+	 * @param bool        $label_b4
832
+	 * @param bool        $use_desc_4_label
833
+	 * @return string HTML
834
+	 */
835
+	public static function radio($question = false, $answer = null, $options = false, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true, $label_b4 = false, $use_desc_4_label = false)
836
+	{
837
+		// need these
838
+		if (! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
839
+			return null;
840
+		}
841
+		// prep the answer
842
+		$answer = is_array($answer) ? '' : self::prep_answer($answer, $use_html_entities);
843
+		// prep the required array
844
+		$required = self::prep_required($required);
845
+		// set disabled tag
846
+		$disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
847
+		// ya gots ta have style man!!!
848
+		$radio_class = is_admin() ? 'ee-admin-radio-lbl' : $label_class;
849
+		$class = ! empty($class) ? $class : 'espresso-radio-btn-inp';
850
+		$extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
851
+
852
+		$label_html = $required_text . "\n\t\t\t" . '<label class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label> ';
853
+		// filter label but ensure required text comes before it
854
+		$label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
855
+
856
+		$input_html = "\n\t\t\t" . '<ul id="' . $id . '-ul" class="espresso-radio-btn-options-ul ' . $label_class . ' ' . $class . '-ul">';
857
+
858
+		$class .= ! empty($system_ID) ? ' ' . $system_ID : '';
859
+		$class .= ! empty($required['class']) ? ' ' . $required['class'] : '';
860
+
861
+		foreach ($options as $OPT) {
862
+			if ($OPT instanceof EE_Question_Option) {
863
+				$value = self::prep_option_value($OPT->value());
864
+				$label = $use_desc_4_label ? $OPT->desc() : $OPT->value();
865
+				$size = $use_desc_4_label ? self::get_label_size_class($OPT->value() . ' ' . $OPT->desc()) : self::get_label_size_class($OPT->value());
866
+				$desc = $OPT->desc();// no self::prep_answer
867
+				$answer = is_numeric($value) && empty($answer) ? 0 : $answer;
868
+				$checked = (string) $value == (string) $answer ? ' checked="checked"' : '';
869
+				$opt = '-' . sanitize_key($value);
870
+
871
+				$input_html .= "\n\t\t\t\t" . '<li' . $size . '>';
872
+				$input_html .= "\n\t\t\t\t\t" . '<label class="' . $radio_class . ' espresso-radio-btn-lbl">';
873
+				$input_html .= $label_b4  ? "\n\t\t\t\t\t\t" . '<span>' . $label . '</span>' : '';
874
+				$input_html .= "\n\t\t\t\t\t\t" . '<input type="radio" name="' . $name . '" id="' . $id . $opt . '" class="' . $class . '" value="' . $value . '" title="' . esc_attr($required['msg']) . '" ' . $disabled . $checked . ' ' . $extra . '/>';
875
+				$input_html .= ! $label_b4  ? "\n\t\t\t\t\t\t" . '<span class="espresso-radio-btn-desc">' . $label . '</span>' : '';
876
+				$input_html .= "\n\t\t\t\t\t" . '</label>';
877
+				$input_html .= $use_desc_4_label ? '' : '<span class="espresso-radio-btn-option-desc small-text grey-text">' . $desc . '</span>';
878
+				$input_html .= "\n\t\t\t\t" . '</li>';
879
+			}
880
+		}
881
+
882
+		$input_html .= "\n\t\t\t" . '</ul>';
883
+
884
+		$input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
885
+		return  $label_html . $input_html;
886
+	}
887
+
888
+
889
+
890
+
891
+
892
+
893
+	/**
894
+	 * generates HTML for form checkbox inputs
895
+	 *
896
+	 * @param string $question      label content
897
+	 * @param string $answer        form input value attribute
898
+	 * @param array $options            array of options where array key = option value and array value = option display text
899
+	 * @param string $name          form input name attribute
900
+	 * @param string $id                form input css id attribute
901
+	 * @param string $class             form input css class attribute
902
+	 * @param array $required       'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
903
+	 * @param string $label_class   css class attribute for the label
904
+	 * @param string $disabled      disabled="disabled" or null
905
+	 * @return string HTML
906
+	 */
907
+	public static function checkbox($question = false, $answer = null, $options = false, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $label_b4 = false, $system_ID = false, $use_html_entities = true)
908
+	{
909
+		// need these
910
+		if (! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
911
+			return null;
912
+		}
913
+		$answer = maybe_unserialize($answer);
914
+
915
+		// prep the answer(s)
916
+		$answer = is_array($answer) ? $answer : array( sanitize_key($answer) => $answer );
917
+
918
+		foreach ($answer as $key => $value) {
919
+			$key = self::prep_option_value($key);
920
+			$answer[ $key ] = self::prep_answer($value, $use_html_entities);
921
+		}
922
+
923
+		// prep the required array
924
+		$required = self::prep_required($required);
925
+		// set disabled tag
926
+		$disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
927
+		// ya gots ta have style man!!!
928
+		$radio_class = is_admin() ? 'ee-admin-radio-lbl' : $label_class;
929
+		$class = empty($class) ? 'espresso-radio-btn-inp' : $class;
930
+		$extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
931
+
932
+		$label_html = $required_text . "\n\t\t\t" . '<label class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label> ';
933
+		// filter label but ensure required text comes before it
934
+		$label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
935
+
936
+		$input_html = "\n\t\t\t" . '<ul id="' . $id . '-ul" class="espresso-checkbox-options-ul ' . $label_class . ' ' . $class . '-ul">';
937
+
938
+		$class .= ! empty($system_ID) ? ' ' . $system_ID : '';
939
+		$class .= ! empty($required['class']) ? ' ' . $required['class'] : '';
940
+
941
+		foreach ($options as $OPT) {
942
+			$value = $OPT->value();// self::prep_option_value( $OPT->value() );
943
+			$size = self::get_label_size_class($OPT->value() . ' ' . $OPT->desc());
944
+			$text = self::prep_answer($OPT->value());
945
+			$desc = $OPT->desc() ;
946
+			$opt = '-' . sanitize_key($value);
947
+
948
+			$checked = is_array($answer) && in_array($text, $answer) ? ' checked="checked"' : '';
949
+
950
+			$input_html .= "\n\t\t\t\t" . '<li' . $size . '>';
951
+			$input_html .= "\n\t\t\t\t\t" . '<label class="' . $radio_class . ' espresso-checkbox-lbl">';
952
+			$input_html .= $label_b4  ? "\n\t\t\t\t\t\t" . '<span>' . $text . '</span>' : '';
953
+			$input_html .= "\n\t\t\t\t\t\t" . '<input type="checkbox" name="' . $name . '[' . $OPT->ID() . ']" id="' . $id . $opt . '" class="' . $class . '" value="' . $value . '" title="' . esc_attr($required['msg']) . '" ' . $disabled . $checked . ' ' . $extra . '/>';
954
+			$input_html .= ! $label_b4  ? "\n\t\t\t\t\t\t" . '<span>' . $text . '</span>' : '';
955
+			$input_html .= "\n\t\t\t\t\t" . '</label>';
956
+			if (! empty($desc) && $desc != $text) {
957
+				$input_html .= "\n\t\t\t\t\t" . ' &nbsp; <br/><div class="espresso-checkbox-option-desc small-text grey-text">' . $desc . '</div>';
958
+			}
959
+			$input_html .= "\n\t\t\t\t" . '</li>';
960
+		}
961
+
962
+		$input_html .= "\n\t\t\t" . '</ul>';
963
+
964
+		$input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
965
+		return  $label_html . $input_html;
966
+	}
967
+
968
+
969
+
970
+
971
+
972
+
973
+	/**
974
+	 * generates HTML for a form datepicker input
975
+	 *
976
+	 * @param string $question  label content
977
+	 * @param string $answer        form input value attribute
978
+	 * @param string $name          form input name attribute
979
+	 * @param string $id                form input css id attribute
980
+	 * @param string $class             form input css class attribute
981
+	 * @param array $required       'label', 'class', and 'msg' - array of values for required "label" content, css required 'class', and required 'msg' attribute
982
+	 * @param string $label_class   css class attribute for the label
983
+	 * @param string $disabled      disabled="disabled" or null
984
+	 * @return string HTML
985
+	 */
986
+	public static function datepicker($question = false, $answer = null, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true)
987
+	{
988
+		// need these
989
+		if (! $question || ! $name) {
990
+			return null;
991
+		}
992
+		// prep the answer
993
+		$answer = is_array($answer) ? '' : self::prep_answer($answer, $use_html_entities);
994
+		// prep the required array
995
+		$required = self::prep_required($required);
996
+		// set disabled tag
997
+		$disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
998
+		// ya gots ta have style man!!!
999
+		$txt_class = is_admin() ? 'regular-text' : 'espresso-datepicker-inp';
1000
+		$class = empty($class) ? $txt_class : $class;
1001
+		$class .= ! empty($system_ID) ? ' ' . $system_ID : '';
1002
+		$extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
1003
+
1004
+		$label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
1005
+		// filter label but ensure required text comes before it
1006
+		$label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
1007
+
1008
+		$input_html = "\n\t\t\t" . '<input type="text" name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . ' datepicker" value="' . $answer . '"  title="' . esc_attr($required['msg']) . '" ' . $disabled . ' ' . $extra . '/>';
1009
+
1010
+		// enqueue scripts
1011
+		wp_register_style('espresso-ui-theme', EE_GLOBAL_ASSETS_URL . 'css/espresso-ui-theme/jquery-ui-1.10.3.custom.min.css', array(), EVENT_ESPRESSO_VERSION);
1012
+		wp_enqueue_style('espresso-ui-theme');
1013
+		wp_enqueue_script('jquery-ui-datepicker');
1014
+
1015
+		$input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
1016
+		return  $label_html . $input_html;
1017
+	}
1018
+
1019
+
1020
+
1021
+	/**
1022
+	 *  remove_label_keep_required_msg
1023
+	 *  this will strip out a form input's label HTML while keeping the required text HTML that MUST be before the label
1024
+	 *  @access public
1025
+	 *  @return     string
1026
+	 */
1027
+	public static function remove_label_keep_required_msg($label_html, $required_text)
1028
+	{
1029
+		return $required_text;
1030
+	}
1031
+
1032
+
1033
+
1034
+
1035
+
1036
+	/**
1037
+	 * Simply return sthe HTML for a hidden input of the given name and value.
1038
+	 * @param string $name
1039
+	 * @param string $value
1040
+	 * @return string HTML
1041
+	 */
1042
+	public static function hidden_input($name, $value, $id = '')
1043
+	{
1044
+		$id = ! empty($id) ? $id : $name;
1045
+		return '<input id="' . $id . '" type="hidden" name="'.$name.'" value="' .  $value . '"/>';
1046
+	}
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+	/**
1053
+	 * prep_question
1054
+	 * @param string $question
1055
+	 * @return string
1056
+	 */
1057
+	public static function prep_question($question)
1058
+	{
1059
+		return $question;
1060 1060
 //      $link = '';
1061 1061
 //      // does this label have a help link attached ?
1062 1062
 //      if ( strpos( $question, '<a ' ) !== FALSE ) {
@@ -1068,447 +1068,447 @@  discard block
 block discarded – undo
1068 1068
 //          $link = '<a ' . $link;
1069 1069
 //      }
1070 1070
 //      return htmlspecialchars( trim( stripslashes( str_replace( '&#039;', "'", $question ))), ENT_QUOTES, 'UTF-8' ) . ' ' . $link;
1071
-    }
1072
-
1073
-
1074
-
1075
-
1076
-    /**
1077
-     *  prep_answer
1078
-     * @param mixed $answer
1079
-     * @return string
1080
-     */
1081
-    public static function prep_answer($answer, $use_html_entities = true)
1082
-    {
1083
-        // make sure we convert bools first.  Otherwise (bool) false becomes an empty string which is NOT desired, we want "0".
1084
-        if (is_bool($answer)) {
1085
-            $answer = $answer ? 1 : 0;
1086
-        }
1087
-        $answer = trim(stripslashes(str_replace('&#039;', "'", $answer)));
1088
-        return $use_html_entities ? htmlentities($answer, ENT_QUOTES, 'UTF-8') : $answer;
1089
-    }
1090
-
1091
-
1092
-
1093
-    /**
1094
-     *  prep_answer_options
1095
-     *  @param array $QSOs  array of EE_Question_Option objects
1096
-     *  @return array
1097
-     */
1098
-    public static function prep_answer_options($QSOs = array())
1099
-    {
1100
-        $prepped_answer_options = array();
1101
-        if (is_array($QSOs) && ! empty($QSOs)) {
1102
-            foreach ($QSOs as $key => $QSO) {
1103
-                if (! $QSO instanceof EE_Question_Option) {
1104
-                    $QSO = EE_Question_Option::new_instance(array(
1105
-                        'QSO_value' => is_array($QSO) && isset($QSO['id']) ? (string) $QSO['id'] : (string) $key,
1106
-                        'QSO_desc' => is_array($QSO) && isset($QSO['text']) ? (string) $QSO['text'] : (string) $QSO
1107
-                    ));
1108
-                }
1109
-                if ($QSO->opt_group()) {
1110
-                    $prepped_answer_options[ $QSO->opt_group() ][] = $QSO;
1111
-                } else {
1112
-                    $prepped_answer_options[] = $QSO;
1113
-                }
1114
-            }
1115
-        }
1071
+	}
1072
+
1073
+
1074
+
1075
+
1076
+	/**
1077
+	 *  prep_answer
1078
+	 * @param mixed $answer
1079
+	 * @return string
1080
+	 */
1081
+	public static function prep_answer($answer, $use_html_entities = true)
1082
+	{
1083
+		// make sure we convert bools first.  Otherwise (bool) false becomes an empty string which is NOT desired, we want "0".
1084
+		if (is_bool($answer)) {
1085
+			$answer = $answer ? 1 : 0;
1086
+		}
1087
+		$answer = trim(stripslashes(str_replace('&#039;', "'", $answer)));
1088
+		return $use_html_entities ? htmlentities($answer, ENT_QUOTES, 'UTF-8') : $answer;
1089
+	}
1090
+
1091
+
1092
+
1093
+	/**
1094
+	 *  prep_answer_options
1095
+	 *  @param array $QSOs  array of EE_Question_Option objects
1096
+	 *  @return array
1097
+	 */
1098
+	public static function prep_answer_options($QSOs = array())
1099
+	{
1100
+		$prepped_answer_options = array();
1101
+		if (is_array($QSOs) && ! empty($QSOs)) {
1102
+			foreach ($QSOs as $key => $QSO) {
1103
+				if (! $QSO instanceof EE_Question_Option) {
1104
+					$QSO = EE_Question_Option::new_instance(array(
1105
+						'QSO_value' => is_array($QSO) && isset($QSO['id']) ? (string) $QSO['id'] : (string) $key,
1106
+						'QSO_desc' => is_array($QSO) && isset($QSO['text']) ? (string) $QSO['text'] : (string) $QSO
1107
+					));
1108
+				}
1109
+				if ($QSO->opt_group()) {
1110
+					$prepped_answer_options[ $QSO->opt_group() ][] = $QSO;
1111
+				} else {
1112
+					$prepped_answer_options[] = $QSO;
1113
+				}
1114
+			}
1115
+		}
1116 1116
 //      d( $prepped_answer_options );
1117
-        return $prepped_answer_options;
1118
-    }
1119
-
1120
-
1121
-    /**
1122
-     *  prep_option_value
1123
-     * @param string $option_value
1124
-     * @return string
1125
-     */
1126
-    public static function prep_option_value($option_value)
1127
-    {
1128
-        return esc_attr(trim(stripslashes($option_value)));
1129
-    }
1130
-
1131
-
1132
-
1133
-
1134
-    /**
1135
-     *  prep_required
1136
-     * @param string|array  $required
1137
-     * @return array
1138
-     */
1139
-    public static function prep_required($required = array())
1140
-    {
1141
-        // make sure required is an array
1142
-        $required = is_array($required) ? $required : array();
1143
-        // and set some defaults
1144
-        $required = array_merge(array( 'label' => '', 'class' => '', 'msg' => '' ), $required);
1145
-        return $required;
1146
-    }
1147
-
1148
-
1149
-
1150
-    /**
1151
-     *  get_label_size_class
1152
-     * @param string    $value
1153
-     * @return string
1154
-     */
1155
-    public static function get_label_size_class($value = false)
1156
-    {
1157
-        if ($value === false || $value == '') {
1158
-            return ' class="medium-lbl"';
1159
-        }
1160
-            // determine length of option value
1161
-            $val_size = strlen($value);
1162
-        switch ($val_size) {
1163
-            case $val_size < 3:
1164
-                $size =  ' class="nano-lbl"';
1165
-                break;
1166
-            case $val_size < 6:
1167
-                $size =  ' class="micro-lbl"';
1168
-                break;
1169
-            case $val_size < 12:
1170
-                $size =  ' class="tiny-lbl"';
1171
-                break;
1172
-            case $val_size < 25:
1173
-                $size =  ' class="small-lbl"';
1174
-                break;
1175
-            case $val_size > 100:
1176
-                $size =  ' class="big-lbl"';
1177
-                break;
1178
-            default:
1179
-                $size =  ' class="medium-lbl"';
1180
-                break;
1181
-        }
1182
-        return $size;
1183
-    }
1184
-
1185
-
1186
-
1187
-
1188
-    /**
1189
-     *  _load_system_dropdowns
1190
-     * @param array     $QFI
1191
-     * @return array
1192
-     */
1193
-    private static function _load_system_dropdowns($QFI)
1194
-    {
1195
-        $QST_system = $QFI->get('QST_system');
1196
-        switch ($QST_system) {
1197
-            case 'state':
1198
-                $QFI = self::generate_state_dropdown($QFI);
1199
-                break;
1200
-            case 'country':
1201
-                $QFI = self::generate_country_dropdown($QFI);
1202
-                break;
1203
-            case 'admin-state':
1204
-                $QFI = self::generate_state_dropdown($QFI, true);
1205
-                break;
1206
-            case 'admin-country':
1207
-                $QFI = self::generate_country_dropdown($QFI, true);
1208
-                break;
1209
-        }
1210
-        return $QFI;
1211
-    }
1212
-
1213
-
1214
-
1215
-    /**
1216
-     * This preps dropdowns that are specialized.
1217
-     *
1218
-     * @since  4.6.0
1219
-     *
1220
-     * @param EE_Question_Form_Input $QFI
1221
-     *
1222
-     * @return EE_Question_Form_Input
1223
-     */
1224
-    protected static function _load_specialized_dropdowns($QFI)
1225
-    {
1226
-        switch ($QFI->get('QST_type')) {
1227
-            case 'STATE':
1228
-                $QFI = self::generate_state_dropdown($QFI);
1229
-                break;
1230
-            case 'COUNTRY':
1231
-                $QFI = self::generate_country_dropdown($QFI);
1232
-                break;
1233
-        }
1234
-        return $QFI;
1235
-    }
1236
-
1237
-
1238
-
1239
-    /**
1240
-     *    generate_state_dropdown
1241
-     * @param array $QST
1242
-     * @param bool  $get_all
1243
-     * @return array
1244
-     */
1245
-    public static function generate_state_dropdown($QST, $get_all = false)
1246
-    {
1247
-        $states = $get_all ? EEM_State::instance()->get_all_states() : EEM_State::instance()->get_all_states_of_active_countries();
1248
-        if ($states && count($states) != count($QST->options())) {
1249
-            $QST->set('QST_type', 'DROPDOWN');
1250
-            // if multiple countries, we'll create option groups within the dropdown
1251
-            foreach ($states as $state) {
1252
-                if ($state instanceof EE_State) {
1253
-                    $QSO = EE_Question_Option::new_instance(array (
1254
-                        'QSO_value' => $state->ID(),
1255
-                        'QSO_desc' => $state->name(),
1256
-                        'QST_ID' => $QST->get('QST_ID'),
1257
-                        'QSO_deleted' => false
1258
-                    ));
1259
-                    // set option group
1260
-                    $QSO->set_opt_group($state->country()->name());
1261
-                    // add option to question
1262
-                    $QST->add_temp_option($QSO);
1263
-                }
1264
-            }
1265
-        }
1266
-        return $QST;
1267
-    }
1268
-
1269
-
1270
-
1271
-    /**
1272
-     *    generate_country_dropdown
1273
-     * @param      $QST
1274
-     * @param bool $get_all
1275
-     * @internal param array $question
1276
-     * @return array
1277
-     */
1278
-    public static function generate_country_dropdown($QST, $get_all = false)
1279
-    {
1280
-        $countries = $get_all ? EEM_Country::instance()->get_all_countries() : EEM_Country::instance()->get_all_active_countries();
1281
-        if ($countries && count($countries) != count($QST->options())) {
1282
-            $QST->set('QST_type', 'DROPDOWN');
1283
-            // now add countries
1284
-            foreach ($countries as $country) {
1285
-                if ($country instanceof EE_Country) {
1286
-                    $QSO = EE_Question_Option::new_instance(array (
1287
-                        'QSO_value' => $country->ID(),
1288
-                        'QSO_desc' => $country->name(),
1289
-                        'QST_ID' => $QST->get('QST_ID'),
1290
-                        'QSO_deleted' => false
1291
-                    ));
1292
-                    $QST->add_temp_option($QSO);
1293
-                }
1294
-            }
1295
-        }
1296
-        return $QST;
1297
-    }
1298
-
1299
-
1300
-
1301
-
1302
-
1303
-    /**
1304
-     *  generates options for a month dropdown selector with numbers from 01 to 12
1305
-     *  @return array()
1306
-     */
1307
-    public static function two_digit_months_dropdown_options()
1308
-    {
1309
-        $options = array();
1310
-        for ($x = 1; $x <= 12; $x++) {
1311
-            $mm = str_pad($x, 2, '0', STR_PAD_LEFT);
1312
-            $options[ (string) $mm ] = (string) $mm;
1313
-        }
1314
-        return EEH_Form_Fields::prep_answer_options($options);
1315
-    }
1316
-
1317
-
1318
-
1319
-
1320
-
1321
-    /**
1322
-     *  generates a year dropdown selector with numbers for the next ten years
1323
-     *  @return object
1324
-     */
1325
-    public static function next_decade_two_digit_year_dropdown_options()
1326
-    {
1327
-        $options = array();
1328
-        $current_year = date('y');
1329
-        $next_decade = $current_year + 10;
1330
-        for ($x = $current_year; $x <= $next_decade; $x++) {
1331
-            $yy = str_pad($x, 2, '0', STR_PAD_LEFT);
1332
-            $options[ (string) $yy ] = (string) $yy;
1333
-        }
1334
-        return EEH_Form_Fields::prep_answer_options($options);
1335
-    }
1336
-
1337
-
1338
-
1339
-
1340
-
1341
-    /**
1342
-     * generates a month/year dropdown selector for all registrations matching the given criteria.  Typically used for list table filter.
1343
-     * @param  string  $cur_date     any currently selected date can be entered here.
1344
-     * @param  string  $status       Registration status
1345
-     * @param  integer $evt_category Event Category ID if the Event Category filter is selected
1346
-     * @return string                html
1347
-     */
1348
-    public static function generate_registration_months_dropdown($cur_date = '', $status = '', $evt_category = 0)
1349
-    {
1350
-        $_where = array();
1351
-        if (!empty($status)) {
1352
-            $_where['STS_ID'] = $status;
1353
-        }
1354
-
1355
-        if ($evt_category > 0) {
1356
-            $_where['Event.Term_Taxonomy.term_id'] = $evt_category;
1357
-        }
1358
-
1359
-        $regdtts = EEM_Registration::instance()->get_reg_months_and_years($_where);
1360
-
1361
-        // setup vals for select input helper
1362
-        $options = array(
1363
-            0 => array(
1364
-                'text' => __('Select a Month/Year', 'event_espresso'),
1365
-                'id' => ''
1366
-                )
1367
-            );
1368
-
1369
-        foreach ($regdtts as $regdtt) {
1370
-            $date = $regdtt->reg_month. ' ' . $regdtt->reg_year;
1371
-            $options[] = array(
1372
-                'text' => $date,
1373
-                'id' => $date
1374
-                );
1375
-        }
1376
-
1377
-        return self::select_input('month_range', $options, $cur_date, '', 'wide');
1378
-    }
1379
-
1380
-
1381
-
1382
-    /**
1383
-     * generates a month/year dropdown selector for all events matching the given criteria
1384
-     * Typically used for list table filter
1385
-     * @param  string $cur_date          any currently selected date can be entered here.
1386
-     * @param  string $status            "view" (i.e. all, today, month, draft)
1387
-     * @param  int    $evt_category      category event belongs to
1388
-     * @param  string $evt_active_status "upcoming", "expired", "active", or "inactive"
1389
-     * @return string                    html
1390
-     */
1391
-    public static function generate_event_months_dropdown($cur_date = '', $status = null, $evt_category = null, $evt_active_status = null)
1392
-    {
1393
-        // determine what post_status our condition will have for the query.
1394
-        // phpcs:disable PSR2.ControlStructures.SwitchDeclaration.TerminatingComment
1395
-        switch ($status) {
1396
-            case 'month':
1397
-            case 'today':
1398
-            case null:
1399
-            case 'all':
1400
-                $where['Event.status'] = array( 'NOT IN', array('trash') );
1401
-                break;
1402
-
1403
-            case 'draft':
1404
-                $where['Event.status'] = array( 'IN', array('draft', 'auto-draft') );
1405
-
1406
-            default:
1407
-                $where['Event.status'] = $status;
1408
-        }
1409
-
1410
-        // phpcs:enable
1411
-
1412
-        // categories?
1413
-
1117
+		return $prepped_answer_options;
1118
+	}
1119
+
1120
+
1121
+	/**
1122
+	 *  prep_option_value
1123
+	 * @param string $option_value
1124
+	 * @return string
1125
+	 */
1126
+	public static function prep_option_value($option_value)
1127
+	{
1128
+		return esc_attr(trim(stripslashes($option_value)));
1129
+	}
1130
+
1131
+
1132
+
1133
+
1134
+	/**
1135
+	 *  prep_required
1136
+	 * @param string|array  $required
1137
+	 * @return array
1138
+	 */
1139
+	public static function prep_required($required = array())
1140
+	{
1141
+		// make sure required is an array
1142
+		$required = is_array($required) ? $required : array();
1143
+		// and set some defaults
1144
+		$required = array_merge(array( 'label' => '', 'class' => '', 'msg' => '' ), $required);
1145
+		return $required;
1146
+	}
1147
+
1148
+
1149
+
1150
+	/**
1151
+	 *  get_label_size_class
1152
+	 * @param string    $value
1153
+	 * @return string
1154
+	 */
1155
+	public static function get_label_size_class($value = false)
1156
+	{
1157
+		if ($value === false || $value == '') {
1158
+			return ' class="medium-lbl"';
1159
+		}
1160
+			// determine length of option value
1161
+			$val_size = strlen($value);
1162
+		switch ($val_size) {
1163
+			case $val_size < 3:
1164
+				$size =  ' class="nano-lbl"';
1165
+				break;
1166
+			case $val_size < 6:
1167
+				$size =  ' class="micro-lbl"';
1168
+				break;
1169
+			case $val_size < 12:
1170
+				$size =  ' class="tiny-lbl"';
1171
+				break;
1172
+			case $val_size < 25:
1173
+				$size =  ' class="small-lbl"';
1174
+				break;
1175
+			case $val_size > 100:
1176
+				$size =  ' class="big-lbl"';
1177
+				break;
1178
+			default:
1179
+				$size =  ' class="medium-lbl"';
1180
+				break;
1181
+		}
1182
+		return $size;
1183
+	}
1184
+
1185
+
1186
+
1187
+
1188
+	/**
1189
+	 *  _load_system_dropdowns
1190
+	 * @param array     $QFI
1191
+	 * @return array
1192
+	 */
1193
+	private static function _load_system_dropdowns($QFI)
1194
+	{
1195
+		$QST_system = $QFI->get('QST_system');
1196
+		switch ($QST_system) {
1197
+			case 'state':
1198
+				$QFI = self::generate_state_dropdown($QFI);
1199
+				break;
1200
+			case 'country':
1201
+				$QFI = self::generate_country_dropdown($QFI);
1202
+				break;
1203
+			case 'admin-state':
1204
+				$QFI = self::generate_state_dropdown($QFI, true);
1205
+				break;
1206
+			case 'admin-country':
1207
+				$QFI = self::generate_country_dropdown($QFI, true);
1208
+				break;
1209
+		}
1210
+		return $QFI;
1211
+	}
1212
+
1213
+
1214
+
1215
+	/**
1216
+	 * This preps dropdowns that are specialized.
1217
+	 *
1218
+	 * @since  4.6.0
1219
+	 *
1220
+	 * @param EE_Question_Form_Input $QFI
1221
+	 *
1222
+	 * @return EE_Question_Form_Input
1223
+	 */
1224
+	protected static function _load_specialized_dropdowns($QFI)
1225
+	{
1226
+		switch ($QFI->get('QST_type')) {
1227
+			case 'STATE':
1228
+				$QFI = self::generate_state_dropdown($QFI);
1229
+				break;
1230
+			case 'COUNTRY':
1231
+				$QFI = self::generate_country_dropdown($QFI);
1232
+				break;
1233
+		}
1234
+		return $QFI;
1235
+	}
1236
+
1237
+
1238
+
1239
+	/**
1240
+	 *    generate_state_dropdown
1241
+	 * @param array $QST
1242
+	 * @param bool  $get_all
1243
+	 * @return array
1244
+	 */
1245
+	public static function generate_state_dropdown($QST, $get_all = false)
1246
+	{
1247
+		$states = $get_all ? EEM_State::instance()->get_all_states() : EEM_State::instance()->get_all_states_of_active_countries();
1248
+		if ($states && count($states) != count($QST->options())) {
1249
+			$QST->set('QST_type', 'DROPDOWN');
1250
+			// if multiple countries, we'll create option groups within the dropdown
1251
+			foreach ($states as $state) {
1252
+				if ($state instanceof EE_State) {
1253
+					$QSO = EE_Question_Option::new_instance(array (
1254
+						'QSO_value' => $state->ID(),
1255
+						'QSO_desc' => $state->name(),
1256
+						'QST_ID' => $QST->get('QST_ID'),
1257
+						'QSO_deleted' => false
1258
+					));
1259
+					// set option group
1260
+					$QSO->set_opt_group($state->country()->name());
1261
+					// add option to question
1262
+					$QST->add_temp_option($QSO);
1263
+				}
1264
+			}
1265
+		}
1266
+		return $QST;
1267
+	}
1268
+
1269
+
1270
+
1271
+	/**
1272
+	 *    generate_country_dropdown
1273
+	 * @param      $QST
1274
+	 * @param bool $get_all
1275
+	 * @internal param array $question
1276
+	 * @return array
1277
+	 */
1278
+	public static function generate_country_dropdown($QST, $get_all = false)
1279
+	{
1280
+		$countries = $get_all ? EEM_Country::instance()->get_all_countries() : EEM_Country::instance()->get_all_active_countries();
1281
+		if ($countries && count($countries) != count($QST->options())) {
1282
+			$QST->set('QST_type', 'DROPDOWN');
1283
+			// now add countries
1284
+			foreach ($countries as $country) {
1285
+				if ($country instanceof EE_Country) {
1286
+					$QSO = EE_Question_Option::new_instance(array (
1287
+						'QSO_value' => $country->ID(),
1288
+						'QSO_desc' => $country->name(),
1289
+						'QST_ID' => $QST->get('QST_ID'),
1290
+						'QSO_deleted' => false
1291
+					));
1292
+					$QST->add_temp_option($QSO);
1293
+				}
1294
+			}
1295
+		}
1296
+		return $QST;
1297
+	}
1298
+
1299
+
1300
+
1301
+
1302
+
1303
+	/**
1304
+	 *  generates options for a month dropdown selector with numbers from 01 to 12
1305
+	 *  @return array()
1306
+	 */
1307
+	public static function two_digit_months_dropdown_options()
1308
+	{
1309
+		$options = array();
1310
+		for ($x = 1; $x <= 12; $x++) {
1311
+			$mm = str_pad($x, 2, '0', STR_PAD_LEFT);
1312
+			$options[ (string) $mm ] = (string) $mm;
1313
+		}
1314
+		return EEH_Form_Fields::prep_answer_options($options);
1315
+	}
1316
+
1317
+
1318
+
1319
+
1320
+
1321
+	/**
1322
+	 *  generates a year dropdown selector with numbers for the next ten years
1323
+	 *  @return object
1324
+	 */
1325
+	public static function next_decade_two_digit_year_dropdown_options()
1326
+	{
1327
+		$options = array();
1328
+		$current_year = date('y');
1329
+		$next_decade = $current_year + 10;
1330
+		for ($x = $current_year; $x <= $next_decade; $x++) {
1331
+			$yy = str_pad($x, 2, '0', STR_PAD_LEFT);
1332
+			$options[ (string) $yy ] = (string) $yy;
1333
+		}
1334
+		return EEH_Form_Fields::prep_answer_options($options);
1335
+	}
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+	/**
1342
+	 * generates a month/year dropdown selector for all registrations matching the given criteria.  Typically used for list table filter.
1343
+	 * @param  string  $cur_date     any currently selected date can be entered here.
1344
+	 * @param  string  $status       Registration status
1345
+	 * @param  integer $evt_category Event Category ID if the Event Category filter is selected
1346
+	 * @return string                html
1347
+	 */
1348
+	public static function generate_registration_months_dropdown($cur_date = '', $status = '', $evt_category = 0)
1349
+	{
1350
+		$_where = array();
1351
+		if (!empty($status)) {
1352
+			$_where['STS_ID'] = $status;
1353
+		}
1354
+
1355
+		if ($evt_category > 0) {
1356
+			$_where['Event.Term_Taxonomy.term_id'] = $evt_category;
1357
+		}
1358
+
1359
+		$regdtts = EEM_Registration::instance()->get_reg_months_and_years($_where);
1360
+
1361
+		// setup vals for select input helper
1362
+		$options = array(
1363
+			0 => array(
1364
+				'text' => __('Select a Month/Year', 'event_espresso'),
1365
+				'id' => ''
1366
+				)
1367
+			);
1368
+
1369
+		foreach ($regdtts as $regdtt) {
1370
+			$date = $regdtt->reg_month. ' ' . $regdtt->reg_year;
1371
+			$options[] = array(
1372
+				'text' => $date,
1373
+				'id' => $date
1374
+				);
1375
+		}
1376
+
1377
+		return self::select_input('month_range', $options, $cur_date, '', 'wide');
1378
+	}
1379
+
1380
+
1381
+
1382
+	/**
1383
+	 * generates a month/year dropdown selector for all events matching the given criteria
1384
+	 * Typically used for list table filter
1385
+	 * @param  string $cur_date          any currently selected date can be entered here.
1386
+	 * @param  string $status            "view" (i.e. all, today, month, draft)
1387
+	 * @param  int    $evt_category      category event belongs to
1388
+	 * @param  string $evt_active_status "upcoming", "expired", "active", or "inactive"
1389
+	 * @return string                    html
1390
+	 */
1391
+	public static function generate_event_months_dropdown($cur_date = '', $status = null, $evt_category = null, $evt_active_status = null)
1392
+	{
1393
+		// determine what post_status our condition will have for the query.
1394
+		// phpcs:disable PSR2.ControlStructures.SwitchDeclaration.TerminatingComment
1395
+		switch ($status) {
1396
+			case 'month':
1397
+			case 'today':
1398
+			case null:
1399
+			case 'all':
1400
+				$where['Event.status'] = array( 'NOT IN', array('trash') );
1401
+				break;
1402
+
1403
+			case 'draft':
1404
+				$where['Event.status'] = array( 'IN', array('draft', 'auto-draft') );
1405
+
1406
+			default:
1407
+				$where['Event.status'] = $status;
1408
+		}
1409
+
1410
+		// phpcs:enable
1411
+
1412
+		// categories?
1413
+
1414 1414
 
1415
-        if (!empty($evt_category)) {
1416
-            $where['Event.Term_Taxonomy.taxonomy'] = 'espresso_event_categories';
1417
-            $where['Event.Term_Taxonomy.term_id'] = $evt_category;
1418
-        }
1415
+		if (!empty($evt_category)) {
1416
+			$where['Event.Term_Taxonomy.taxonomy'] = 'espresso_event_categories';
1417
+			$where['Event.Term_Taxonomy.term_id'] = $evt_category;
1418
+		}
1419 1419
 
1420 1420
 
1421 1421
 //      $where['DTT_is_primary'] = 1;
1422 1422
 
1423
-        $DTTS = EE_Registry::instance()->load_model('Datetime')->get_dtt_months_and_years($where, $evt_active_status);
1424
-
1425
-        // let's setup vals for select input helper
1426
-        $options = array(
1427
-            0 => array(
1428
-                'text' => __('Select a Month/Year', 'event_espresso'),
1429
-                'id' => ""
1430
-                )
1431
-            );
1432
-
1433
-
1434
-
1435
-        // translate month and date
1436
-        global $wp_locale;
1437
-
1438
-        foreach ($DTTS as $DTT) {
1439
-            $localized_date = $wp_locale->get_month($DTT->dtt_month_num) . ' ' . $DTT->dtt_year;
1440
-            $id = $DTT->dtt_month . ' ' . $DTT->dtt_year;
1441
-            $options[] = array(
1442
-                'text' => $localized_date,
1443
-                'id' => $id
1444
-                );
1445
-        }
1446
-
1447
-
1448
-        return self::select_input('month_range', $options, $cur_date, '', 'wide');
1449
-    }
1450
-
1451
-
1452
-
1453
-    /**
1454
-     * generates the dropdown selector for event categories
1455
-     * typically used as a filter on list tables.
1456
-     * @param  integer $current_cat currently selected category
1457
-     * @return string               html for dropdown
1458
-     */
1459
-    public static function generate_event_category_dropdown($current_cat = -1)
1460
-    {
1461
-        $categories = EEM_Term::instance()->get_all_ee_categories(true);
1462
-        $options = array(
1463
-            '0' => array(
1464
-                'text' => __('All Categories', 'event_espresso'),
1465
-                'id' => -1
1466
-                )
1467
-            );
1468
-
1469
-        // setup categories for dropdown
1470
-        foreach ($categories as $category) {
1471
-            $options[] = array(
1472
-                'text' => $category->get('name'),
1473
-                'id' => $category->ID()
1474
-                );
1475
-        }
1476
-
1477
-        return self::select_input('EVT_CAT', $options, $current_cat);
1478
-    }
1479
-
1480
-
1481
-
1482
-    /**
1483
-     *    generate a submit button with or without it's own microform
1484
-     *    this is the only way to create buttons that are compatible across all themes
1485
-     *
1486
-     * @access    public
1487
-     * @param    string   $url              - the form action
1488
-     * @param    string   $ID               - some kind of unique ID, appended with "-sbmt" for the input and "-frm" for the form
1489
-     * @param    string   $class            - css classes (separated by spaces if more than one)
1490
-     * @param    string   $text             - what appears on the button
1491
-     * @param    string   $nonce_action     - if using nonces
1492
-     * @param    bool|string $input_only       - whether to print form header and footer. TRUE returns the input without the form
1493
-     * @param    string   $extra_attributes - any extra attributes that need to be attached to the form input
1494
-     * @return    void
1495
-     */
1496
-    public static function submit_button($url = '', $ID = '', $class = '', $text = '', $nonce_action = '', $input_only = false, $extra_attributes = '')
1497
-    {
1498
-        $btn = '';
1499
-        if (empty($url) || empty($ID)) {
1500
-            return $btn;
1501
-        }
1502
-        $text = ! empty($text) ? $text : __('Submit', 'event_espresso');
1503
-        $btn .= '<input id="' . $ID . '-btn" class="' . $class . '" type="submit" value="' . $text . '" ' . $extra_attributes . '/>';
1504
-        if (! $input_only) {
1505
-            $btn_frm = '<form id="' . $ID . '-frm" method="POST" action="' . $url . '">';
1506
-            $btn_frm .= ! empty($nonce_action) ? wp_nonce_field($nonce_action, $nonce_action . '_nonce', true, false) : '';
1507
-            $btn_frm .= $btn;
1508
-            $btn_frm .= '</form>';
1509
-            $btn = $btn_frm;
1510
-            unset($btn_frm);
1511
-        }
1512
-        return $btn;
1513
-    }
1423
+		$DTTS = EE_Registry::instance()->load_model('Datetime')->get_dtt_months_and_years($where, $evt_active_status);
1424
+
1425
+		// let's setup vals for select input helper
1426
+		$options = array(
1427
+			0 => array(
1428
+				'text' => __('Select a Month/Year', 'event_espresso'),
1429
+				'id' => ""
1430
+				)
1431
+			);
1432
+
1433
+
1434
+
1435
+		// translate month and date
1436
+		global $wp_locale;
1437
+
1438
+		foreach ($DTTS as $DTT) {
1439
+			$localized_date = $wp_locale->get_month($DTT->dtt_month_num) . ' ' . $DTT->dtt_year;
1440
+			$id = $DTT->dtt_month . ' ' . $DTT->dtt_year;
1441
+			$options[] = array(
1442
+				'text' => $localized_date,
1443
+				'id' => $id
1444
+				);
1445
+		}
1446
+
1447
+
1448
+		return self::select_input('month_range', $options, $cur_date, '', 'wide');
1449
+	}
1450
+
1451
+
1452
+
1453
+	/**
1454
+	 * generates the dropdown selector for event categories
1455
+	 * typically used as a filter on list tables.
1456
+	 * @param  integer $current_cat currently selected category
1457
+	 * @return string               html for dropdown
1458
+	 */
1459
+	public static function generate_event_category_dropdown($current_cat = -1)
1460
+	{
1461
+		$categories = EEM_Term::instance()->get_all_ee_categories(true);
1462
+		$options = array(
1463
+			'0' => array(
1464
+				'text' => __('All Categories', 'event_espresso'),
1465
+				'id' => -1
1466
+				)
1467
+			);
1468
+
1469
+		// setup categories for dropdown
1470
+		foreach ($categories as $category) {
1471
+			$options[] = array(
1472
+				'text' => $category->get('name'),
1473
+				'id' => $category->ID()
1474
+				);
1475
+		}
1476
+
1477
+		return self::select_input('EVT_CAT', $options, $current_cat);
1478
+	}
1479
+
1480
+
1481
+
1482
+	/**
1483
+	 *    generate a submit button with or without it's own microform
1484
+	 *    this is the only way to create buttons that are compatible across all themes
1485
+	 *
1486
+	 * @access    public
1487
+	 * @param    string   $url              - the form action
1488
+	 * @param    string   $ID               - some kind of unique ID, appended with "-sbmt" for the input and "-frm" for the form
1489
+	 * @param    string   $class            - css classes (separated by spaces if more than one)
1490
+	 * @param    string   $text             - what appears on the button
1491
+	 * @param    string   $nonce_action     - if using nonces
1492
+	 * @param    bool|string $input_only       - whether to print form header and footer. TRUE returns the input without the form
1493
+	 * @param    string   $extra_attributes - any extra attributes that need to be attached to the form input
1494
+	 * @return    void
1495
+	 */
1496
+	public static function submit_button($url = '', $ID = '', $class = '', $text = '', $nonce_action = '', $input_only = false, $extra_attributes = '')
1497
+	{
1498
+		$btn = '';
1499
+		if (empty($url) || empty($ID)) {
1500
+			return $btn;
1501
+		}
1502
+		$text = ! empty($text) ? $text : __('Submit', 'event_espresso');
1503
+		$btn .= '<input id="' . $ID . '-btn" class="' . $class . '" type="submit" value="' . $text . '" ' . $extra_attributes . '/>';
1504
+		if (! $input_only) {
1505
+			$btn_frm = '<form id="' . $ID . '-frm" method="POST" action="' . $url . '">';
1506
+			$btn_frm .= ! empty($nonce_action) ? wp_nonce_field($nonce_action, $nonce_action . '_nonce', true, false) : '';
1507
+			$btn_frm .= $btn;
1508
+			$btn_frm .= '</form>';
1509
+			$btn = $btn_frm;
1510
+			unset($btn_frm);
1511
+		}
1512
+		return $btn;
1513
+	}
1514 1514
 }
Please login to merge, or discard this patch.
Spacing   +185 added lines, -185 removed lines patch added patch discarded remove patch
@@ -90,10 +90,10 @@  discard block
 block discarded – undo
90 90
             $required = isset($input_value['required']) && $input_value['required'] ? ' <span>*</span>: ' : ': ';
91 91
             // and the css class "required"
92 92
             $css_class = isset($input_value['css_class']) ? $input_value['css_class'] : '';
93
-            $styles = $input_value['required'] ? 'required ' . $css_class : $css_class;
93
+            $styles = $input_value['required'] ? 'required '.$css_class : $css_class;
94 94
 
95
-            $field_id = ($id) ? $id . '-' . $input_key : $input_key;
96
-            $tabindex = !empty($input_value['tabindex']) ? ' tabindex="' . $input_value['tabindex'] . '"' : '';
95
+            $field_id = ($id) ? $id.'-'.$input_key : $input_key;
96
+            $tabindex = ! empty($input_value['tabindex']) ? ' tabindex="'.$input_value['tabindex'].'"' : '';
97 97
 
98 98
             // rows or cols?
99 99
             $rows = isset($input_value['rows']) ? $input_value['rows'] : '10';
@@ -102,21 +102,21 @@  discard block
 block discarded – undo
102 102
             // any content?
103 103
             $append_content = $input_value['append_content'];
104 104
 
105
-            $output .= (!$close) ? '<ul>' : '';
105
+            $output .= ( ! $close) ? '<ul>' : '';
106 106
             $output .= '<li>';
107 107
 
108 108
             // what type of input are we dealing with ?
109 109
             switch ($input_value['input']) {
110 110
                 // text inputs
111 111
                 case 'text':
112
-                    $output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
113
-                    $output .= "\n\t\t\t" . '<input id="' . $field_id . '" class="' . $styles . '" type="text" value="' . esc_textarea($input_value['value']) . '" name="' . $input_value['name'] . '"' . $tabindex . '>';
112
+                    $output .= "\n\t\t\t".'<label for="'.$field_id.'">'.$input_value['label'].$required.'</label>';
113
+                    $output .= "\n\t\t\t".'<input id="'.$field_id.'" class="'.$styles.'" type="text" value="'.esc_textarea($input_value['value']).'" name="'.$input_value['name'].'"'.$tabindex.'>';
114 114
                     break;
115 115
 
116 116
                 // dropdowns
117 117
                 case 'select':
118
-                    $output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
119
-                    $output .= "\n\t\t\t" . '<select id="' . $field_id . '" class="' . $styles . '" name="' . $input_value['name'] . '"' . $tabindex . '>';
118
+                    $output .= "\n\t\t\t".'<label for="'.$field_id.'">'.$input_value['label'].$required.'</label>';
119
+                    $output .= "\n\t\t\t".'<select id="'.$field_id.'" class="'.$styles.'" name="'.$input_value['name'].'"'.$tabindex.'>';
120 120
 
121 121
                     if (is_array($input_value['options'])) {
122 122
                         $options = $input_value['options'];
@@ -127,27 +127,27 @@  discard block
 block discarded – undo
127 127
                     foreach ($options as $key => $value) {
128 128
                         $selected = isset($input_value['value']) && $input_value['value'] == $key ? 'selected=selected' : '';
129 129
                         // $key = str_replace( ' ', '_', sanitize_key( $value ));
130
-                        $output .= "\n\t\t\t\t" . '<option '. $selected . ' value="' . $key . '">' . $value . '</option>';
130
+                        $output .= "\n\t\t\t\t".'<option '.$selected.' value="'.$key.'">'.$value.'</option>';
131 131
                     }
132
-                    $output .= "\n\t\t\t" . '</select>';
132
+                    $output .= "\n\t\t\t".'</select>';
133 133
 
134 134
                     break;
135 135
 
136 136
                 case 'textarea':
137
-                    $output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
138
-                    $output .= "\n\t\t\t" . '<textarea id="' . $field_id . '" class="' . $styles . '" rows="'.$rows.'" cols="'.$cols.'" name="' . $input_value['name'] . '"' . $tabindex . '>' . esc_textarea($input_value['value']) . '</textarea>';
137
+                    $output .= "\n\t\t\t".'<label for="'.$field_id.'">'.$input_value['label'].$required.'</label>';
138
+                    $output .= "\n\t\t\t".'<textarea id="'.$field_id.'" class="'.$styles.'" rows="'.$rows.'" cols="'.$cols.'" name="'.$input_value['name'].'"'.$tabindex.'>'.esc_textarea($input_value['value']).'</textarea>';
139 139
                     break;
140 140
 
141 141
                 case 'hidden':
142 142
                     $close = false;
143 143
                     $output .= "</li></ul>";
144
-                    $output .= "\n\t\t\t" . '<input id="' . $field_id . '" type="hidden" name="' . $input_value['name'] . '" value="' . $input_value['value'] . '">';
144
+                    $output .= "\n\t\t\t".'<input id="'.$field_id.'" type="hidden" name="'.$input_value['name'].'" value="'.$input_value['value'].'">';
145 145
                     break;
146 146
 
147 147
                 case 'checkbox':
148
-                    $checked = ( $input_value['value'] == 1 ) ? 'checked="checked"' : '';
149
-                    $output .= "\n\t\t\t" . '<label for="' . $field_id . '">' . $input_value['label'] . $required . '</label>';
150
-                    $output .= "\n\t\t\t" . '<input id="' . $field_id. '" type="checkbox" name="' . $input_value['name'] . '" value="1"' . $checked . $tabindex . ' />';
148
+                    $checked = ($input_value['value'] == 1) ? 'checked="checked"' : '';
149
+                    $output .= "\n\t\t\t".'<label for="'.$field_id.'">'.$input_value['label'].$required.'</label>';
150
+                    $output .= "\n\t\t\t".'<input id="'.$field_id.'" type="checkbox" name="'.$input_value['name'].'" value="1"'.$checked.$tabindex.' />';
151 151
                     break;
152 152
 
153 153
                 case 'wp_editor':
@@ -160,7 +160,7 @@  discard block
 block discarded – undo
160 160
                     );
161 161
                     $output .= '</li>';
162 162
                     $output .= '</ul>';
163
-                    $output .= '<h4>' . $input_value['label'] . '</h4>';
163
+                    $output .= '<h4>'.$input_value['label'].'</h4>';
164 164
                     if ($append_content) {
165 165
                         $output .= $append_content;
166 166
                     }
@@ -232,17 +232,17 @@  discard block
 block discarded – undo
232 232
             $_fields = wp_parse_args($field_atts, $defaults);
233 233
             extract($_fields);
234 234
             // generate label
235
-            $label = empty($label) ? '' : '<label for="' . $id . '">' . $label . '</label>';
235
+            $label = empty($label) ? '' : '<label for="'.$id.'">'.$label.'</label>';
236 236
             // generate field name
237
-            $f_name = !empty($unique_id) ? $field_name . '[' . $unique_id . ']' : $field_name;
237
+            $f_name = ! empty($unique_id) ? $field_name.'['.$unique_id.']' : $field_name;
238 238
 
239 239
             // tabindex
240
-            $tabindex_str = !empty($tabindex) ? ' tabindex="' . $tabindex . '"' : '';
240
+            $tabindex_str = ! empty($tabindex) ? ' tabindex="'.$tabindex.'"' : '';
241 241
 
242 242
             // we determine what we're building based on the type
243 243
             switch ($type) {
244 244
                 case 'textarea':
245
-                        $fld = '<textarea id="' . $id . '" class="' . $class . '" rows="' . $dimensions[1] . '" cols="' . $dimensions[0] . '" name="' . $f_name . '"' . $tabindex_str . '>' . $value . '</textarea>';
245
+                        $fld = '<textarea id="'.$id.'" class="'.$class.'" rows="'.$dimensions[1].'" cols="'.$dimensions[0].'" name="'.$f_name.'"'.$tabindex_str.'>'.$value.'</textarea>';
246 246
                         $fld .= $extra_desc;
247 247
                     break;
248 248
 
@@ -250,16 +250,16 @@  discard block
 block discarded – undo
250 250
                         $c_input = '';
251 251
                     if (is_array($value)) {
252 252
                         foreach ($value as $key => $val) {
253
-                            $c_id = $field_name . '_' . $value;
254
-                            $c_class = isset($classes[ $key ]) ? ' class="' . $classes[ $key ] . '" ' : '';
255
-                            $c_label = isset($labels[ $key ]) ? '<label for="' . $c_id . '">' . $labels[ $key ] . '</label>' : '';
256
-                            $checked = !empty($default) && $default == $val ? ' checked="checked" ' : '';
257
-                            $c_input .= '<input name="' . $f_name . '[]" type="checkbox" id="' . $c_id . '"' . $c_class . 'value="' . $val . '"' . $checked . $tabindex_str . ' />' . "\n" . $c_label;
253
+                            $c_id = $field_name.'_'.$value;
254
+                            $c_class = isset($classes[$key]) ? ' class="'.$classes[$key].'" ' : '';
255
+                            $c_label = isset($labels[$key]) ? '<label for="'.$c_id.'">'.$labels[$key].'</label>' : '';
256
+                            $checked = ! empty($default) && $default == $val ? ' checked="checked" ' : '';
257
+                            $c_input .= '<input name="'.$f_name.'[]" type="checkbox" id="'.$c_id.'"'.$c_class.'value="'.$val.'"'.$checked.$tabindex_str.' />'."\n".$c_label;
258 258
                         }
259 259
                         $fld = $c_input;
260 260
                     } else {
261
-                        $checked = !empty($default) && $default == $val ? 'checked="checked" ' : '';
262
-                        $fld = '<input name="'. $f_name . '" type="checkbox" id="' . $id . '" class="' . $class . '" value="' . $value . '"' . $checked . $tabindex_str . ' />' . "\n";
261
+                        $checked = ! empty($default) && $default == $val ? 'checked="checked" ' : '';
262
+                        $fld = '<input name="'.$f_name.'" type="checkbox" id="'.$id.'" class="'.$class.'" value="'.$value.'"'.$checked.$tabindex_str.' />'."\n";
263 263
                     }
264 264
                     break;
265 265
 
@@ -267,28 +267,28 @@  discard block
 block discarded – undo
267 267
                         $c_input = '';
268 268
                     if (is_array($value)) {
269 269
                         foreach ($value as $key => $val) {
270
-                            $c_id = $field_name . '_' . $value;
271
-                            $c_class = isset($classes[ $key ]) ? 'class="' . $classes[ $key ] . '" ' : '';
272
-                            $c_label = isset($labels[ $key ]) ? '<label for="' . $c_id . '">' . $labels[ $key ] . '</label>' : '';
273
-                            $checked = !empty($default) && $default == $val ? ' checked="checked" ' : '';
274
-                            $c_input .= '<input name="' . $f_name . '" type="checkbox" id="' . $c_id . '"' . $c_class . 'value="' . $val . '"' . $checked . $tabindex_str . ' />' . "\n" . $c_label;
270
+                            $c_id = $field_name.'_'.$value;
271
+                            $c_class = isset($classes[$key]) ? 'class="'.$classes[$key].'" ' : '';
272
+                            $c_label = isset($labels[$key]) ? '<label for="'.$c_id.'">'.$labels[$key].'</label>' : '';
273
+                            $checked = ! empty($default) && $default == $val ? ' checked="checked" ' : '';
274
+                            $c_input .= '<input name="'.$f_name.'" type="checkbox" id="'.$c_id.'"'.$c_class.'value="'.$val.'"'.$checked.$tabindex_str.' />'."\n".$c_label;
275 275
                         }
276 276
                         $fld = $c_input;
277 277
                     } else {
278
-                        $checked = !empty($default) && $default == $val ? 'checked="checked" ' : '';
279
-                        $fld = '<input name="'. $f_name . '" type="checkbox" id="' . $id . '" class="' . $class . '" value="' . $value . '"' . $checked . $tabindex_str . ' />' . "\n";
278
+                        $checked = ! empty($default) && $default == $val ? 'checked="checked" ' : '';
279
+                        $fld = '<input name="'.$f_name.'" type="checkbox" id="'.$id.'" class="'.$class.'" value="'.$value.'"'.$checked.$tabindex_str.' />'."\n";
280 280
                     }
281 281
                     break;
282 282
 
283 283
                 case 'hidden':
284
-                        $fld = '<input name="' . $f_name . '" type="hidden" id="' . $id . '" class="' . $class . '" value="' . $value . '" />' . "\n";
284
+                        $fld = '<input name="'.$f_name.'" type="hidden" id="'.$id.'" class="'.$class.'" value="'.$value.'" />'."\n";
285 285
                     break;
286 286
 
287 287
                 case 'select':
288
-                        $fld = '<select name="' . $f_name . '" class="' . $class . '" id="' . $id . '"' . $tabindex_str . '>' . "\n";
288
+                        $fld = '<select name="'.$f_name.'" class="'.$class.'" id="'.$id.'"'.$tabindex_str.'>'."\n";
289 289
                     foreach ($value as $key => $val) {
290
-                        $checked = !empty($default) && $default == $val ? ' selected="selected"' : '';
291
-                        $fld .= "\t" . '<option value="' . $val . '"' . $checked . '>' . $labels[ $key ] . '</option>' . "\n";
290
+                        $checked = ! empty($default) && $default == $val ? ' selected="selected"' : '';
291
+                        $fld .= "\t".'<option value="'.$val.'"'.$checked.'>'.$labels[$key].'</option>'."\n";
292 292
                     }
293 293
                         $fld .= '</select>';
294 294
                     break;
@@ -309,11 +309,11 @@  discard block
 block discarded – undo
309 309
                     break;
310 310
 
311 311
                 default: // 'text fields'
312
-                        $fld = '<input name="' . $f_name . '" type="text" id="' . $id . '" class="' . $class . '" value="' . $value . '"' . $tabindex_str . ' />' . "\n";
312
+                        $fld = '<input name="'.$f_name.'" type="text" id="'.$id.'" class="'.$class.'" value="'.$value.'"'.$tabindex_str.' />'."\n";
313 313
                         $fld .= $extra_desc;
314 314
             }
315 315
 
316
-            $form_fields[ $field_name ] = array( 'label' => $label, 'field' => $fld );
316
+            $form_fields[$field_name] = array('label' => $label, 'field' => $fld);
317 317
         }
318 318
 
319 319
         return $form_fields;
@@ -343,25 +343,25 @@  discard block
 block discarded – undo
343 343
     public static function select_input($name, $values, $default = '', $parameters = '', $class = '', $autosize = true)
344 344
     {
345 345
         // if $values was submitted in the wrong format, convert it over
346
-        if (!empty($values) && (!array_key_exists(0, $values) || !is_array($values[0]))) {
347
-            $converted_values=array();
346
+        if ( ! empty($values) && ( ! array_key_exists(0, $values) || ! is_array($values[0]))) {
347
+            $converted_values = array();
348 348
             foreach ($values as $id => $text) {
349
-                $converted_values[]=array('id'=>$id,'text'=>$text);
349
+                $converted_values[] = array('id'=>$id, 'text'=>$text);
350 350
             }
351
-            $values=$converted_values;
351
+            $values = $converted_values;
352 352
         }
353 353
 
354
-        $field = '<select id="' . EEH_Formatter::ee_tep_output_string($name) . '" name="' . EEH_Formatter::ee_tep_output_string($name) . '"';
354
+        $field = '<select id="'.EEH_Formatter::ee_tep_output_string($name).'" name="'.EEH_Formatter::ee_tep_output_string($name).'"';
355 355
         // Debug
356 356
         // EEH_Debug_Tools::printr( $values, '$values  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
357 357
         if (EEH_Formatter::ee_tep_not_null($parameters)) {
358
-            $field .= ' ' . $parameters;
358
+            $field .= ' '.$parameters;
359 359
         }
360 360
         if ($autosize) {
361 361
             $size = 'med';
362 362
             for ($ii = 0, $ni = sizeof($values); $ii < $ni; $ii++) {
363
-                if ($values[ $ii ]['text']) {
364
-                    if (strlen($values[ $ii ]['text']) > 5) {
363
+                if ($values[$ii]['text']) {
364
+                    if (strlen($values[$ii]['text']) > 5) {
365 365
                         $size = 'wide';
366 366
                     }
367 367
                 }
@@ -370,22 +370,22 @@  discard block
 block discarded – undo
370 370
             $size = '';
371 371
         }
372 372
 
373
-        $field .= ' class="' . $class . ' ' . $size . '">';
373
+        $field .= ' class="'.$class.' '.$size.'">';
374 374
 
375
-        if (empty($default) && isset($GLOBALS[ $name ])) {
376
-            $default = stripslashes($GLOBALS[ $name ]);
375
+        if (empty($default) && isset($GLOBALS[$name])) {
376
+            $default = stripslashes($GLOBALS[$name]);
377 377
         }
378 378
 
379 379
 
380 380
         for ($i = 0, $n = sizeof($values); $i < $n; $i++) {
381
-            $field .= '<option value="' . $values[ $i ]['id'] . '"';
382
-            if ($default == $values[ $i ]['id']) {
381
+            $field .= '<option value="'.$values[$i]['id'].'"';
382
+            if ($default == $values[$i]['id']) {
383 383
                 $field .= ' selected = "selected"';
384 384
             }
385
-            if (isset($values[ $i ]['class'])) {
386
-                $field .= ' class="' . $values[ $i ]['class'] . '"';
385
+            if (isset($values[$i]['class'])) {
386
+                $field .= ' class="'.$values[$i]['class'].'"';
387 387
             }
388
-            $field .= '>' . $values[ $i ]['text'] . '</option>';
388
+            $field .= '>'.$values[$i]['text'].'</option>';
389 389
         }
390 390
         $field .= '</select>';
391 391
 
@@ -410,18 +410,18 @@  discard block
 block discarded – undo
410 410
         $before_question_group_questions = apply_filters('FHEE__EEH_Form_Fields__generate_question_groups_html__before_question_group_questions', '');
411 411
         $after_question_group_questions = apply_filters('FHEE__EEH_Form_Fields__generate_question_groups_html__after_question_group_questions', '');
412 412
 
413
-        if (! empty($question_groups)) {
413
+        if ( ! empty($question_groups)) {
414 414
             // EEH_Debug_Tools::printr( $question_groups, '$question_groups  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
415 415
             // loop thru question groups
416 416
             foreach ($question_groups as $QSG) {
417 417
                 // check that questions exist
418
-                if (! empty($QSG['QSG_questions'])) {
418
+                if ( ! empty($QSG['QSG_questions'])) {
419 419
                     // use fieldsets
420
-                    $html .= "\n\t" . '<' . $group_wrapper . ' class="espresso-question-group-wrap" id="' . $QSG['QSG_identifier'] . '">';
420
+                    $html .= "\n\t".'<'.$group_wrapper.' class="espresso-question-group-wrap" id="'.$QSG['QSG_identifier'].'">';
421 421
                     // group_name
422
-                    $html .= $QSG['QSG_show_group_name'] ? "\n\t\t" . '<h5 class="espresso-question-group-title-h5 section-title">' . self::prep_answer($QSG['QSG_name']) . '</h5>' : '';
422
+                    $html .= $QSG['QSG_show_group_name'] ? "\n\t\t".'<h5 class="espresso-question-group-title-h5 section-title">'.self::prep_answer($QSG['QSG_name']).'</h5>' : '';
423 423
                     // group_desc
424
-                    $html .= $QSG['QSG_show_group_desc'] && ! empty($QSG['QSG_desc']) ? '<div class="espresso-question-group-desc-pg">' . self::prep_answer($QSG['QSG_desc']) . '</div>' : '';
424
+                    $html .= $QSG['QSG_show_group_desc'] && ! empty($QSG['QSG_desc']) ? '<div class="espresso-question-group-desc-pg">'.self::prep_answer($QSG['QSG_desc']).'</div>' : '';
425 425
 
426 426
                     $html .= $before_question_group_questions;
427 427
                     // loop thru questions
@@ -435,7 +435,7 @@  discard block
 block discarded – undo
435 435
                         $html .= self::generate_form_input($QFI);
436 436
                     }
437 437
                     $html .= $after_question_group_questions;
438
-                    $html .= "\n\t" . '</' . $group_wrapper . '>';
438
+                    $html .= "\n\t".'</'.$group_wrapper.'>';
439 439
                 }
440 440
             }
441 441
         }
@@ -471,28 +471,28 @@  discard block
 block discarded – undo
471 471
         $q_meta = array_merge($default_q_meta, $q_meta);
472 472
         // EEH_Debug_Tools::printr( $q_meta, '$q_meta  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
473 473
 
474
-        if (! empty($question_groups)) {
474
+        if ( ! empty($question_groups)) {
475 475
 //          EEH_Debug_Tools::printr( $question_groups, '$question_groups  <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' );
476 476
             // loop thru question groups
477 477
             foreach ($question_groups as $QSG) {
478 478
                 if ($QSG instanceof EE_Question_Group) {
479 479
                     // check that questions exist
480 480
 
481
-                    $where = array( 'QST_deleted' => 0 );
482
-                    if (! $from_admin) {
481
+                    $where = array('QST_deleted' => 0);
482
+                    if ( ! $from_admin) {
483 483
                         $where['QST_admin_only'] = 0;
484 484
                     }
485
-                    $questions = $QSG->questions(array( $where, 'order_by' => array( 'Question_Group_Question.QGQ_order' => 'ASC' )));
486
-                    if (! empty($questions)) {
485
+                    $questions = $QSG->questions(array($where, 'order_by' => array('Question_Group_Question.QGQ_order' => 'ASC')));
486
+                    if ( ! empty($questions)) {
487 487
                         // use fieldsets
488
-                        $html .= "\n\t" . '<' . $group_wrapper . ' class="espresso-question-group-wrap" id="' . $QSG->get('QSG_identifier') . '">';
488
+                        $html .= "\n\t".'<'.$group_wrapper.' class="espresso-question-group-wrap" id="'.$QSG->get('QSG_identifier').'">';
489 489
                         // group_name
490 490
                         if ($QSG->show_group_name()) {
491
-                            $html .=  "\n\t\t" . '<h5 class="espresso-question-group-title-h5 section-title">' . $QSG->get_pretty('QSG_name') . '</h5>';
491
+                            $html .= "\n\t\t".'<h5 class="espresso-question-group-title-h5 section-title">'.$QSG->get_pretty('QSG_name').'</h5>';
492 492
                         }
493 493
                         // group_desc
494 494
                         if ($QSG->show_group_desc()) {
495
-                            $html .=  '<div class="espresso-question-group-desc-pg">' . $QSG->get_pretty('QSG_desc') . '</div>';
495
+                            $html .= '<div class="espresso-question-group-desc-pg">'.$QSG->get_pretty('QSG_desc').'</div>';
496 496
                         }
497 497
 
498 498
                         $html .= $before_question_group_questions;
@@ -504,12 +504,12 @@  discard block
 block discarded – undo
504 504
 
505 505
                             if (isset($_GET['qstn']) && isset($q_meta['input_id']) && isset($q_meta['att_nmbr'])) {
506 506
                                 // check for answer in $_GET in case we are reprocessing a form after an error
507
-                                if (isset($_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ])) {
508
-                                    $answer = is_array($_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ]) ? $_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ] : sanitize_text_field($_GET['qstn'][ $q_meta['input_id'] ][ $qstn_id ]);
507
+                                if (isset($_GET['qstn'][$q_meta['input_id']][$qstn_id])) {
508
+                                    $answer = is_array($_GET['qstn'][$q_meta['input_id']][$qstn_id]) ? $_GET['qstn'][$q_meta['input_id']][$qstn_id] : sanitize_text_field($_GET['qstn'][$q_meta['input_id']][$qstn_id]);
509 509
                                 }
510 510
                             } elseif (isset($q_meta['attendee']) && $q_meta['attendee']) {
511 511
                                 // attendee data from the session
512
-                                $answer = isset($q_meta['attendee'][ $qstn_id ]) ? $q_meta['attendee'][ $qstn_id ] : null;
512
+                                $answer = isset($q_meta['attendee'][$qstn_id]) ? $q_meta['attendee'][$qstn_id] : null;
513 513
                             }
514 514
 
515 515
 
@@ -528,7 +528,7 @@  discard block
 block discarded – undo
528 528
                             $html .= self::generate_form_input($QFI);
529 529
                         }
530 530
                         $html .= $after_question_group_questions;
531
-                        $html .= "\n\t" . '</' . $group_wrapper . '>';
531
+                        $html .= "\n\t".'</'.$group_wrapper.'>';
532 532
                     }
533 533
                 }
534 534
             }
@@ -567,10 +567,10 @@  discard block
 block discarded – undo
567 567
         $disabled = $QFI->get('QST_disabled') ? true : false;
568 568
         $required_label = apply_filters(' FHEE__EEH_Form_Fields__generate_form_input__required_label', '<em>*</em>');
569 569
         $QST_required = $QFI->get('QST_required');
570
-        $required = $QST_required ? array( 'label' => $required_label, 'class' => 'required needs-value', 'title' => $QST_required ) : array();
570
+        $required = $QST_required ? array('label' => $required_label, 'class' => 'required needs-value', 'title' => $QST_required) : array();
571 571
         $use_html_entities = $QFI->get_meta('htmlentities');
572 572
         $required_text = $QFI->get('QST_required_text') != '' ? $QFI->get('QST_required_text') : __('This field is required', 'event_espresso');
573
-        $required_text = $QST_required ? "\n\t\t\t" . '<div class="required-text hidden">' . self::prep_answer($required_text, $use_html_entities) . '</div>' : '';
573
+        $required_text = $QST_required ? "\n\t\t\t".'<div class="required-text hidden">'.self::prep_answer($required_text, $use_html_entities).'</div>' : '';
574 574
         $label_class = 'espresso-form-input-lbl';
575 575
         $QST_options = $QFI->options(true, $answer);
576 576
         $options = is_array($QST_options) ? self::prep_answer_options($QST_options) : array();
@@ -629,7 +629,7 @@  discard block
 block discarded – undo
629 629
     public static function text($question = false, $answer = null, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true)
630 630
     {
631 631
         // need these
632
-        if (! $question || ! $name) {
632
+        if ( ! $question || ! $name) {
633 633
             return null;
634 634
         }
635 635
         // prep the answer
@@ -637,21 +637,21 @@  discard block
 block discarded – undo
637 637
         // prep the required array
638 638
         $required = self::prep_required($required);
639 639
         // set disabled tag
640
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
640
+        $disabled = $answer === null || ! $disabled ? '' : ' disabled="disabled"';
641 641
         // ya gots ta have style man!!!
642 642
         $txt_class = is_admin() ? 'regular-text' : 'espresso-text-inp';
643 643
         $class = empty($class) ? $txt_class : $class;
644
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
644
+        $class .= ! empty($system_ID) ? ' '.$system_ID : '';
645 645
         $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
646 646
 
647
-        $label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
647
+        $label_html = $required_text."\n\t\t\t".'<label for="'.$name.'" class="'.$label_class.'">'.self::prep_question($question).$required['label'].'</label><br/>';
648 648
         // filter label but ensure required text comes before it
649 649
         $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
650 650
 
651
-        $input_html = "\n\t\t\t" . '<input type="text" name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . '" value="' . esc_attr($answer) . '"  title="' . esc_attr($required['msg']) . '" ' . $disabled .' ' . $extra . '/>';
651
+        $input_html = "\n\t\t\t".'<input type="text" name="'.$name.'" id="'.$id.'" class="'.$class.' '.$required['class'].'" value="'.esc_attr($answer).'"  title="'.esc_attr($required['msg']).'" '.$disabled.' '.$extra.'/>';
652 652
 
653
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
654
-        return  $label_html . $input_html;
653
+        $input_html = apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
654
+        return  $label_html.$input_html;
655 655
     }
656 656
 
657 657
 
@@ -675,7 +675,7 @@  discard block
 block discarded – undo
675 675
     public static function textarea($question = false, $answer = null, $name = false, $id = '', $class = '', $dimensions = false, $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true)
676 676
     {
677 677
         // need these
678
-        if (! $question || ! $name) {
678
+        if ( ! $question || ! $name) {
679 679
             return null;
680 680
         }
681 681
         // prep the answer
@@ -685,23 +685,23 @@  discard block
 block discarded – undo
685 685
         // make sure $dimensions is an array
686 686
         $dimensions = is_array($dimensions) ? $dimensions : array();
687 687
         // and set some defaults
688
-        $dimensions = array_merge(array( 'rows' => 3, 'cols' => 40 ), $dimensions);
688
+        $dimensions = array_merge(array('rows' => 3, 'cols' => 40), $dimensions);
689 689
         // set disabled tag
690
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
690
+        $disabled = $answer === null || ! $disabled ? '' : ' disabled="disabled"';
691 691
         // ya gots ta have style man!!!
692 692
         $txt_class = is_admin() ? 'regular-text' : 'espresso-textarea-inp';
693 693
         $class = empty($class) ? $txt_class : $class;
694
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
694
+        $class .= ! empty($system_ID) ? ' '.$system_ID : '';
695 695
         $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
696 696
 
697
-        $label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
697
+        $label_html = $required_text."\n\t\t\t".'<label for="'.$name.'" class="'.$label_class.'">'.self::prep_question($question).$required['label'].'</label><br/>';
698 698
         // filter label but ensure required text comes before it
699 699
         $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
700 700
 
701
-        $input_html = "\n\t\t\t" . '<textarea name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . '" rows="' . $dimensions['rows'] . '" cols="' . $dimensions['cols'] . '"  title="' . $required['msg'] . '" ' . $disabled . ' ' . $extra . '>' . $answer . '</textarea>';
701
+        $input_html = "\n\t\t\t".'<textarea name="'.$name.'" id="'.$id.'" class="'.$class.' '.$required['class'].'" rows="'.$dimensions['rows'].'" cols="'.$dimensions['cols'].'"  title="'.$required['msg'].'" '.$disabled.' '.$extra.'>'.$answer.'</textarea>';
702 702
 
703
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
704
-        return  $label_html . $input_html;
703
+        $input_html = apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
704
+        return  $label_html.$input_html;
705 705
     }
706 706
 
707 707
 
@@ -727,7 +727,7 @@  discard block
 block discarded – undo
727 727
     {
728 728
 
729 729
         // need these
730
-        if (! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
730
+        if ( ! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
731 731
             return null;
732 732
         }
733 733
         // prep the answer
@@ -735,36 +735,36 @@  discard block
 block discarded – undo
735 735
         // prep the required array
736 736
         $required = self::prep_required($required);
737 737
         // set disabled tag
738
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
738
+        $disabled = $answer === null || ! $disabled ? '' : ' disabled="disabled"';
739 739
         // ya gots ta have style man!!!
740 740
         $txt_class = is_admin() ? 'wide' : 'espresso-select-inp';
741 741
         $class = empty($class) ? $txt_class : $class;
742
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
742
+        $class .= ! empty($system_ID) ? ' '.$system_ID : '';
743 743
         $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
744 744
 
745
-        $label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
745
+        $label_html = $required_text."\n\t\t\t".'<label for="'.$name.'" class="'.$label_class.'">'.self::prep_question($question).$required['label'].'</label><br/>';
746 746
         // filter label but ensure required text comes before it
747 747
         $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
748 748
 
749
-        $input_html = "\n\t\t\t" . '<select name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . '" title="' . esc_attr($required['msg']) . '"' . $disabled . ' ' . $extra . '>';
749
+        $input_html = "\n\t\t\t".'<select name="'.$name.'" id="'.$id.'" class="'.$class.' '.$required['class'].'" title="'.esc_attr($required['msg']).'"'.$disabled.' '.$extra.'>';
750 750
         // recursively count array elements, to determine total number of options
751 751
         $only_option = count($options, 1) == 1 ? true : false;
752
-        if (! $only_option) {
752
+        if ( ! $only_option) {
753 753
             // if there is NO answer set and there are multiple options to choose from, then set the "please select" message as selected
754 754
             $selected = $answer === null ? ' selected="selected"' : '';
755
-            $input_html .= $add_please_select_option ? "\n\t\t\t\t" . '<option value=""' . $selected . '>' . __(' - please select - ', 'event_espresso') . '</option>' : '';
755
+            $input_html .= $add_please_select_option ? "\n\t\t\t\t".'<option value=""'.$selected.'>'.__(' - please select - ', 'event_espresso').'</option>' : '';
756 756
         }
757 757
         foreach ($options as $key => $value) {
758 758
             // if value is an array, then create option groups, else create regular ol' options
759 759
             $input_html .= is_array($value) ? self::_generate_select_option_group($key, $value, $answer, $use_html_entities) : self::_generate_select_option($value->value(), $value->desc(), $answer, $only_option, $use_html_entities);
760 760
         }
761 761
 
762
-        $input_html .= "\n\t\t\t" . '</select>';
762
+        $input_html .= "\n\t\t\t".'</select>';
763 763
 
764
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__select__before_end_wrapper', $input_html, $question, $answer, $name, $id, $class, $system_ID);
764
+        $input_html = apply_filters('FHEE__EEH_Form_Fields__select__before_end_wrapper', $input_html, $question, $answer, $name, $id, $class, $system_ID);
765 765
 
766
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
767
-        return  $label_html . $input_html;
766
+        $input_html = apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
767
+        return  $label_html.$input_html;
768 768
     }
769 769
 
770 770
 
@@ -783,11 +783,11 @@  discard block
 block discarded – undo
783 783
      */
784 784
     private static function _generate_select_option_group($opt_group, $QSOs, $answer, $use_html_entities = true)
785 785
     {
786
-        $html = "\n\t\t\t\t" . '<optgroup label="' . self::prep_option_value($opt_group) . '">';
786
+        $html = "\n\t\t\t\t".'<optgroup label="'.self::prep_option_value($opt_group).'">';
787 787
         foreach ($QSOs as $QSO) {
788 788
             $html .= self::_generate_select_option($QSO->value(), $QSO->desc(), $answer, false, $use_html_entities);
789 789
         }
790
-        $html .= "\n\t\t\t\t" . '</optgroup>';
790
+        $html .= "\n\t\t\t\t".'</optgroup>';
791 791
         return $html;
792 792
     }
793 793
 
@@ -807,8 +807,8 @@  discard block
 block discarded – undo
807 807
         $key = self::prep_answer($key, $use_html_entities);
808 808
         $value = self::prep_answer($value, $use_html_entities);
809 809
         $value = ! empty($value) ? $value : $key;
810
-        $selected = ( $answer == $key || $only_option ) ? ' selected="selected"' : '';
811
-        return "\n\t\t\t\t" . '<option value="' . self::prep_option_value($key) . '"' . $selected . '> ' . $value . '&nbsp;&nbsp;&nbsp;</option>';
810
+        $selected = ($answer == $key || $only_option) ? ' selected="selected"' : '';
811
+        return "\n\t\t\t\t".'<option value="'.self::prep_option_value($key).'"'.$selected.'> '.$value.'&nbsp;&nbsp;&nbsp;</option>';
812 812
     }
813 813
 
814 814
 
@@ -835,7 +835,7 @@  discard block
 block discarded – undo
835 835
     public static function radio($question = false, $answer = null, $options = false, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true, $label_b4 = false, $use_desc_4_label = false)
836 836
     {
837 837
         // need these
838
-        if (! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
838
+        if ( ! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
839 839
             return null;
840 840
         }
841 841
         // prep the answer
@@ -843,46 +843,46 @@  discard block
 block discarded – undo
843 843
         // prep the required array
844 844
         $required = self::prep_required($required);
845 845
         // set disabled tag
846
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
846
+        $disabled = $answer === null || ! $disabled ? '' : ' disabled="disabled"';
847 847
         // ya gots ta have style man!!!
848 848
         $radio_class = is_admin() ? 'ee-admin-radio-lbl' : $label_class;
849 849
         $class = ! empty($class) ? $class : 'espresso-radio-btn-inp';
850 850
         $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
851 851
 
852
-        $label_html = $required_text . "\n\t\t\t" . '<label class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label> ';
852
+        $label_html = $required_text."\n\t\t\t".'<label class="'.$label_class.'">'.self::prep_question($question).$required['label'].'</label> ';
853 853
         // filter label but ensure required text comes before it
854 854
         $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
855 855
 
856
-        $input_html = "\n\t\t\t" . '<ul id="' . $id . '-ul" class="espresso-radio-btn-options-ul ' . $label_class . ' ' . $class . '-ul">';
856
+        $input_html = "\n\t\t\t".'<ul id="'.$id.'-ul" class="espresso-radio-btn-options-ul '.$label_class.' '.$class.'-ul">';
857 857
 
858
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
859
-        $class .= ! empty($required['class']) ? ' ' . $required['class'] : '';
858
+        $class .= ! empty($system_ID) ? ' '.$system_ID : '';
859
+        $class .= ! empty($required['class']) ? ' '.$required['class'] : '';
860 860
 
861 861
         foreach ($options as $OPT) {
862 862
             if ($OPT instanceof EE_Question_Option) {
863 863
                 $value = self::prep_option_value($OPT->value());
864 864
                 $label = $use_desc_4_label ? $OPT->desc() : $OPT->value();
865
-                $size = $use_desc_4_label ? self::get_label_size_class($OPT->value() . ' ' . $OPT->desc()) : self::get_label_size_class($OPT->value());
866
-                $desc = $OPT->desc();// no self::prep_answer
865
+                $size = $use_desc_4_label ? self::get_label_size_class($OPT->value().' '.$OPT->desc()) : self::get_label_size_class($OPT->value());
866
+                $desc = $OPT->desc(); // no self::prep_answer
867 867
                 $answer = is_numeric($value) && empty($answer) ? 0 : $answer;
868 868
                 $checked = (string) $value == (string) $answer ? ' checked="checked"' : '';
869
-                $opt = '-' . sanitize_key($value);
870
-
871
-                $input_html .= "\n\t\t\t\t" . '<li' . $size . '>';
872
-                $input_html .= "\n\t\t\t\t\t" . '<label class="' . $radio_class . ' espresso-radio-btn-lbl">';
873
-                $input_html .= $label_b4  ? "\n\t\t\t\t\t\t" . '<span>' . $label . '</span>' : '';
874
-                $input_html .= "\n\t\t\t\t\t\t" . '<input type="radio" name="' . $name . '" id="' . $id . $opt . '" class="' . $class . '" value="' . $value . '" title="' . esc_attr($required['msg']) . '" ' . $disabled . $checked . ' ' . $extra . '/>';
875
-                $input_html .= ! $label_b4  ? "\n\t\t\t\t\t\t" . '<span class="espresso-radio-btn-desc">' . $label . '</span>' : '';
876
-                $input_html .= "\n\t\t\t\t\t" . '</label>';
877
-                $input_html .= $use_desc_4_label ? '' : '<span class="espresso-radio-btn-option-desc small-text grey-text">' . $desc . '</span>';
878
-                $input_html .= "\n\t\t\t\t" . '</li>';
869
+                $opt = '-'.sanitize_key($value);
870
+
871
+                $input_html .= "\n\t\t\t\t".'<li'.$size.'>';
872
+                $input_html .= "\n\t\t\t\t\t".'<label class="'.$radio_class.' espresso-radio-btn-lbl">';
873
+                $input_html .= $label_b4 ? "\n\t\t\t\t\t\t".'<span>'.$label.'</span>' : '';
874
+                $input_html .= "\n\t\t\t\t\t\t".'<input type="radio" name="'.$name.'" id="'.$id.$opt.'" class="'.$class.'" value="'.$value.'" title="'.esc_attr($required['msg']).'" '.$disabled.$checked.' '.$extra.'/>';
875
+                $input_html .= ! $label_b4 ? "\n\t\t\t\t\t\t".'<span class="espresso-radio-btn-desc">'.$label.'</span>' : '';
876
+                $input_html .= "\n\t\t\t\t\t".'</label>';
877
+                $input_html .= $use_desc_4_label ? '' : '<span class="espresso-radio-btn-option-desc small-text grey-text">'.$desc.'</span>';
878
+                $input_html .= "\n\t\t\t\t".'</li>';
879 879
             }
880 880
         }
881 881
 
882
-        $input_html .= "\n\t\t\t" . '</ul>';
882
+        $input_html .= "\n\t\t\t".'</ul>';
883 883
 
884
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
885
-        return  $label_html . $input_html;
884
+        $input_html = apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
885
+        return  $label_html.$input_html;
886 886
     }
887 887
 
888 888
 
@@ -907,62 +907,62 @@  discard block
 block discarded – undo
907 907
     public static function checkbox($question = false, $answer = null, $options = false, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $label_b4 = false, $system_ID = false, $use_html_entities = true)
908 908
     {
909 909
         // need these
910
-        if (! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
910
+        if ( ! $question || ! $name || ! $options || empty($options) || ! is_array($options)) {
911 911
             return null;
912 912
         }
913 913
         $answer = maybe_unserialize($answer);
914 914
 
915 915
         // prep the answer(s)
916
-        $answer = is_array($answer) ? $answer : array( sanitize_key($answer) => $answer );
916
+        $answer = is_array($answer) ? $answer : array(sanitize_key($answer) => $answer);
917 917
 
918 918
         foreach ($answer as $key => $value) {
919 919
             $key = self::prep_option_value($key);
920
-            $answer[ $key ] = self::prep_answer($value, $use_html_entities);
920
+            $answer[$key] = self::prep_answer($value, $use_html_entities);
921 921
         }
922 922
 
923 923
         // prep the required array
924 924
         $required = self::prep_required($required);
925 925
         // set disabled tag
926
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
926
+        $disabled = $answer === null || ! $disabled ? '' : ' disabled="disabled"';
927 927
         // ya gots ta have style man!!!
928 928
         $radio_class = is_admin() ? 'ee-admin-radio-lbl' : $label_class;
929 929
         $class = empty($class) ? 'espresso-radio-btn-inp' : $class;
930 930
         $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
931 931
 
932
-        $label_html = $required_text . "\n\t\t\t" . '<label class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label> ';
932
+        $label_html = $required_text."\n\t\t\t".'<label class="'.$label_class.'">'.self::prep_question($question).$required['label'].'</label> ';
933 933
         // filter label but ensure required text comes before it
934 934
         $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
935 935
 
936
-        $input_html = "\n\t\t\t" . '<ul id="' . $id . '-ul" class="espresso-checkbox-options-ul ' . $label_class . ' ' . $class . '-ul">';
936
+        $input_html = "\n\t\t\t".'<ul id="'.$id.'-ul" class="espresso-checkbox-options-ul '.$label_class.' '.$class.'-ul">';
937 937
 
938
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
939
-        $class .= ! empty($required['class']) ? ' ' . $required['class'] : '';
938
+        $class .= ! empty($system_ID) ? ' '.$system_ID : '';
939
+        $class .= ! empty($required['class']) ? ' '.$required['class'] : '';
940 940
 
941 941
         foreach ($options as $OPT) {
942
-            $value = $OPT->value();// self::prep_option_value( $OPT->value() );
943
-            $size = self::get_label_size_class($OPT->value() . ' ' . $OPT->desc());
942
+            $value = $OPT->value(); // self::prep_option_value( $OPT->value() );
943
+            $size = self::get_label_size_class($OPT->value().' '.$OPT->desc());
944 944
             $text = self::prep_answer($OPT->value());
945
-            $desc = $OPT->desc() ;
946
-            $opt = '-' . sanitize_key($value);
945
+            $desc = $OPT->desc();
946
+            $opt = '-'.sanitize_key($value);
947 947
 
948 948
             $checked = is_array($answer) && in_array($text, $answer) ? ' checked="checked"' : '';
949 949
 
950
-            $input_html .= "\n\t\t\t\t" . '<li' . $size . '>';
951
-            $input_html .= "\n\t\t\t\t\t" . '<label class="' . $radio_class . ' espresso-checkbox-lbl">';
952
-            $input_html .= $label_b4  ? "\n\t\t\t\t\t\t" . '<span>' . $text . '</span>' : '';
953
-            $input_html .= "\n\t\t\t\t\t\t" . '<input type="checkbox" name="' . $name . '[' . $OPT->ID() . ']" id="' . $id . $opt . '" class="' . $class . '" value="' . $value . '" title="' . esc_attr($required['msg']) . '" ' . $disabled . $checked . ' ' . $extra . '/>';
954
-            $input_html .= ! $label_b4  ? "\n\t\t\t\t\t\t" . '<span>' . $text . '</span>' : '';
955
-            $input_html .= "\n\t\t\t\t\t" . '</label>';
956
-            if (! empty($desc) && $desc != $text) {
957
-                $input_html .= "\n\t\t\t\t\t" . ' &nbsp; <br/><div class="espresso-checkbox-option-desc small-text grey-text">' . $desc . '</div>';
950
+            $input_html .= "\n\t\t\t\t".'<li'.$size.'>';
951
+            $input_html .= "\n\t\t\t\t\t".'<label class="'.$radio_class.' espresso-checkbox-lbl">';
952
+            $input_html .= $label_b4 ? "\n\t\t\t\t\t\t".'<span>'.$text.'</span>' : '';
953
+            $input_html .= "\n\t\t\t\t\t\t".'<input type="checkbox" name="'.$name.'['.$OPT->ID().']" id="'.$id.$opt.'" class="'.$class.'" value="'.$value.'" title="'.esc_attr($required['msg']).'" '.$disabled.$checked.' '.$extra.'/>';
954
+            $input_html .= ! $label_b4 ? "\n\t\t\t\t\t\t".'<span>'.$text.'</span>' : '';
955
+            $input_html .= "\n\t\t\t\t\t".'</label>';
956
+            if ( ! empty($desc) && $desc != $text) {
957
+                $input_html .= "\n\t\t\t\t\t".' &nbsp; <br/><div class="espresso-checkbox-option-desc small-text grey-text">'.$desc.'</div>';
958 958
             }
959
-            $input_html .= "\n\t\t\t\t" . '</li>';
959
+            $input_html .= "\n\t\t\t\t".'</li>';
960 960
         }
961 961
 
962
-        $input_html .= "\n\t\t\t" . '</ul>';
962
+        $input_html .= "\n\t\t\t".'</ul>';
963 963
 
964
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
965
-        return  $label_html . $input_html;
964
+        $input_html = apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
965
+        return  $label_html.$input_html;
966 966
     }
967 967
 
968 968
 
@@ -986,7 +986,7 @@  discard block
 block discarded – undo
986 986
     public static function datepicker($question = false, $answer = null, $name = false, $id = '', $class = '', $required = false, $required_text = '', $label_class = '', $disabled = false, $system_ID = false, $use_html_entities = true)
987 987
     {
988 988
         // need these
989
-        if (! $question || ! $name) {
989
+        if ( ! $question || ! $name) {
990 990
             return null;
991 991
         }
992 992
         // prep the answer
@@ -994,26 +994,26 @@  discard block
 block discarded – undo
994 994
         // prep the required array
995 995
         $required = self::prep_required($required);
996 996
         // set disabled tag
997
-        $disabled = $answer === null || ! $disabled  ? '' : ' disabled="disabled"';
997
+        $disabled = $answer === null || ! $disabled ? '' : ' disabled="disabled"';
998 998
         // ya gots ta have style man!!!
999 999
         $txt_class = is_admin() ? 'regular-text' : 'espresso-datepicker-inp';
1000 1000
         $class = empty($class) ? $txt_class : $class;
1001
-        $class .= ! empty($system_ID) ? ' ' . $system_ID : '';
1001
+        $class .= ! empty($system_ID) ? ' '.$system_ID : '';
1002 1002
         $extra = apply_filters('FHEE__EEH_Form_Fields__additional_form_field_attributes', '');
1003 1003
 
1004
-        $label_html = $required_text . "\n\t\t\t" . '<label for="' . $name . '" class="' . $label_class . '">' . self::prep_question($question) . $required['label'] . '</label><br/>';
1004
+        $label_html = $required_text."\n\t\t\t".'<label for="'.$name.'" class="'.$label_class.'">'.self::prep_question($question).$required['label'].'</label><br/>';
1005 1005
         // filter label but ensure required text comes before it
1006 1006
         $label_html = apply_filters('FHEE__EEH_Form_Fields__label_html', $label_html, $required_text);
1007 1007
 
1008
-        $input_html = "\n\t\t\t" . '<input type="text" name="' . $name . '" id="' . $id . '" class="' . $class . ' ' . $required['class'] . ' datepicker" value="' . $answer . '"  title="' . esc_attr($required['msg']) . '" ' . $disabled . ' ' . $extra . '/>';
1008
+        $input_html = "\n\t\t\t".'<input type="text" name="'.$name.'" id="'.$id.'" class="'.$class.' '.$required['class'].' datepicker" value="'.$answer.'"  title="'.esc_attr($required['msg']).'" '.$disabled.' '.$extra.'/>';
1009 1009
 
1010 1010
         // enqueue scripts
1011
-        wp_register_style('espresso-ui-theme', EE_GLOBAL_ASSETS_URL . 'css/espresso-ui-theme/jquery-ui-1.10.3.custom.min.css', array(), EVENT_ESPRESSO_VERSION);
1011
+        wp_register_style('espresso-ui-theme', EE_GLOBAL_ASSETS_URL.'css/espresso-ui-theme/jquery-ui-1.10.3.custom.min.css', array(), EVENT_ESPRESSO_VERSION);
1012 1012
         wp_enqueue_style('espresso-ui-theme');
1013 1013
         wp_enqueue_script('jquery-ui-datepicker');
1014 1014
 
1015
-        $input_html =  apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
1016
-        return  $label_html . $input_html;
1015
+        $input_html = apply_filters('FHEE__EEH_Form_Fields__input_html', $input_html, $label_html, $id);
1016
+        return  $label_html.$input_html;
1017 1017
     }
1018 1018
 
1019 1019
 
@@ -1042,7 +1042,7 @@  discard block
 block discarded – undo
1042 1042
     public static function hidden_input($name, $value, $id = '')
1043 1043
     {
1044 1044
         $id = ! empty($id) ? $id : $name;
1045
-        return '<input id="' . $id . '" type="hidden" name="'.$name.'" value="' .  $value . '"/>';
1045
+        return '<input id="'.$id.'" type="hidden" name="'.$name.'" value="'.$value.'"/>';
1046 1046
     }
1047 1047
 
1048 1048
 
@@ -1100,14 +1100,14 @@  discard block
 block discarded – undo
1100 1100
         $prepped_answer_options = array();
1101 1101
         if (is_array($QSOs) && ! empty($QSOs)) {
1102 1102
             foreach ($QSOs as $key => $QSO) {
1103
-                if (! $QSO instanceof EE_Question_Option) {
1103
+                if ( ! $QSO instanceof EE_Question_Option) {
1104 1104
                     $QSO = EE_Question_Option::new_instance(array(
1105 1105
                         'QSO_value' => is_array($QSO) && isset($QSO['id']) ? (string) $QSO['id'] : (string) $key,
1106 1106
                         'QSO_desc' => is_array($QSO) && isset($QSO['text']) ? (string) $QSO['text'] : (string) $QSO
1107 1107
                     ));
1108 1108
                 }
1109 1109
                 if ($QSO->opt_group()) {
1110
-                    $prepped_answer_options[ $QSO->opt_group() ][] = $QSO;
1110
+                    $prepped_answer_options[$QSO->opt_group()][] = $QSO;
1111 1111
                 } else {
1112 1112
                     $prepped_answer_options[] = $QSO;
1113 1113
                 }
@@ -1141,7 +1141,7 @@  discard block
 block discarded – undo
1141 1141
         // make sure required is an array
1142 1142
         $required = is_array($required) ? $required : array();
1143 1143
         // and set some defaults
1144
-        $required = array_merge(array( 'label' => '', 'class' => '', 'msg' => '' ), $required);
1144
+        $required = array_merge(array('label' => '', 'class' => '', 'msg' => ''), $required);
1145 1145
         return $required;
1146 1146
     }
1147 1147
 
@@ -1161,22 +1161,22 @@  discard block
 block discarded – undo
1161 1161
             $val_size = strlen($value);
1162 1162
         switch ($val_size) {
1163 1163
             case $val_size < 3:
1164
-                $size =  ' class="nano-lbl"';
1164
+                $size = ' class="nano-lbl"';
1165 1165
                 break;
1166 1166
             case $val_size < 6:
1167
-                $size =  ' class="micro-lbl"';
1167
+                $size = ' class="micro-lbl"';
1168 1168
                 break;
1169 1169
             case $val_size < 12:
1170
-                $size =  ' class="tiny-lbl"';
1170
+                $size = ' class="tiny-lbl"';
1171 1171
                 break;
1172 1172
             case $val_size < 25:
1173
-                $size =  ' class="small-lbl"';
1173
+                $size = ' class="small-lbl"';
1174 1174
                 break;
1175 1175
             case $val_size > 100:
1176
-                $size =  ' class="big-lbl"';
1176
+                $size = ' class="big-lbl"';
1177 1177
                 break;
1178 1178
             default:
1179
-                $size =  ' class="medium-lbl"';
1179
+                $size = ' class="medium-lbl"';
1180 1180
                 break;
1181 1181
         }
1182 1182
         return $size;
@@ -1250,7 +1250,7 @@  discard block
 block discarded – undo
1250 1250
             // if multiple countries, we'll create option groups within the dropdown
1251 1251
             foreach ($states as $state) {
1252 1252
                 if ($state instanceof EE_State) {
1253
-                    $QSO = EE_Question_Option::new_instance(array (
1253
+                    $QSO = EE_Question_Option::new_instance(array(
1254 1254
                         'QSO_value' => $state->ID(),
1255 1255
                         'QSO_desc' => $state->name(),
1256 1256
                         'QST_ID' => $QST->get('QST_ID'),
@@ -1283,7 +1283,7 @@  discard block
 block discarded – undo
1283 1283
             // now add countries
1284 1284
             foreach ($countries as $country) {
1285 1285
                 if ($country instanceof EE_Country) {
1286
-                    $QSO = EE_Question_Option::new_instance(array (
1286
+                    $QSO = EE_Question_Option::new_instance(array(
1287 1287
                         'QSO_value' => $country->ID(),
1288 1288
                         'QSO_desc' => $country->name(),
1289 1289
                         'QST_ID' => $QST->get('QST_ID'),
@@ -1309,7 +1309,7 @@  discard block
 block discarded – undo
1309 1309
         $options = array();
1310 1310
         for ($x = 1; $x <= 12; $x++) {
1311 1311
             $mm = str_pad($x, 2, '0', STR_PAD_LEFT);
1312
-            $options[ (string) $mm ] = (string) $mm;
1312
+            $options[(string) $mm] = (string) $mm;
1313 1313
         }
1314 1314
         return EEH_Form_Fields::prep_answer_options($options);
1315 1315
     }
@@ -1329,7 +1329,7 @@  discard block
 block discarded – undo
1329 1329
         $next_decade = $current_year + 10;
1330 1330
         for ($x = $current_year; $x <= $next_decade; $x++) {
1331 1331
             $yy = str_pad($x, 2, '0', STR_PAD_LEFT);
1332
-            $options[ (string) $yy ] = (string) $yy;
1332
+            $options[(string) $yy] = (string) $yy;
1333 1333
         }
1334 1334
         return EEH_Form_Fields::prep_answer_options($options);
1335 1335
     }
@@ -1348,7 +1348,7 @@  discard block
 block discarded – undo
1348 1348
     public static function generate_registration_months_dropdown($cur_date = '', $status = '', $evt_category = 0)
1349 1349
     {
1350 1350
         $_where = array();
1351
-        if (!empty($status)) {
1351
+        if ( ! empty($status)) {
1352 1352
             $_where['STS_ID'] = $status;
1353 1353
         }
1354 1354
 
@@ -1367,7 +1367,7 @@  discard block
 block discarded – undo
1367 1367
             );
1368 1368
 
1369 1369
         foreach ($regdtts as $regdtt) {
1370
-            $date = $regdtt->reg_month. ' ' . $regdtt->reg_year;
1370
+            $date = $regdtt->reg_month.' '.$regdtt->reg_year;
1371 1371
             $options[] = array(
1372 1372
                 'text' => $date,
1373 1373
                 'id' => $date
@@ -1397,11 +1397,11 @@  discard block
 block discarded – undo
1397 1397
             case 'today':
1398 1398
             case null:
1399 1399
             case 'all':
1400
-                $where['Event.status'] = array( 'NOT IN', array('trash') );
1400
+                $where['Event.status'] = array('NOT IN', array('trash'));
1401 1401
                 break;
1402 1402
 
1403 1403
             case 'draft':
1404
-                $where['Event.status'] = array( 'IN', array('draft', 'auto-draft') );
1404
+                $where['Event.status'] = array('IN', array('draft', 'auto-draft'));
1405 1405
 
1406 1406
             default:
1407 1407
                 $where['Event.status'] = $status;
@@ -1412,7 +1412,7 @@  discard block
 block discarded – undo
1412 1412
         // categories?
1413 1413
 
1414 1414
 
1415
-        if (!empty($evt_category)) {
1415
+        if ( ! empty($evt_category)) {
1416 1416
             $where['Event.Term_Taxonomy.taxonomy'] = 'espresso_event_categories';
1417 1417
             $where['Event.Term_Taxonomy.term_id'] = $evt_category;
1418 1418
         }
@@ -1436,8 +1436,8 @@  discard block
 block discarded – undo
1436 1436
         global $wp_locale;
1437 1437
 
1438 1438
         foreach ($DTTS as $DTT) {
1439
-            $localized_date = $wp_locale->get_month($DTT->dtt_month_num) . ' ' . $DTT->dtt_year;
1440
-            $id = $DTT->dtt_month . ' ' . $DTT->dtt_year;
1439
+            $localized_date = $wp_locale->get_month($DTT->dtt_month_num).' '.$DTT->dtt_year;
1440
+            $id = $DTT->dtt_month.' '.$DTT->dtt_year;
1441 1441
             $options[] = array(
1442 1442
                 'text' => $localized_date,
1443 1443
                 'id' => $id
@@ -1500,10 +1500,10 @@  discard block
 block discarded – undo
1500 1500
             return $btn;
1501 1501
         }
1502 1502
         $text = ! empty($text) ? $text : __('Submit', 'event_espresso');
1503
-        $btn .= '<input id="' . $ID . '-btn" class="' . $class . '" type="submit" value="' . $text . '" ' . $extra_attributes . '/>';
1504
-        if (! $input_only) {
1505
-            $btn_frm = '<form id="' . $ID . '-frm" method="POST" action="' . $url . '">';
1506
-            $btn_frm .= ! empty($nonce_action) ? wp_nonce_field($nonce_action, $nonce_action . '_nonce', true, false) : '';
1503
+        $btn .= '<input id="'.$ID.'-btn" class="'.$class.'" type="submit" value="'.$text.'" '.$extra_attributes.'/>';
1504
+        if ( ! $input_only) {
1505
+            $btn_frm = '<form id="'.$ID.'-frm" method="POST" action="'.$url.'">';
1506
+            $btn_frm .= ! empty($nonce_action) ? wp_nonce_field($nonce_action, $nonce_action.'_nonce', true, false) : '';
1507 1507
             $btn_frm .= $btn;
1508 1508
             $btn_frm .= '</form>';
1509 1509
             $btn = $btn_frm;
Please login to merge, or discard this patch.
core/helpers/EEH_Formatter.helper.php 3 patches
Doc Comments   +1 added lines patch added patch discarded remove patch
@@ -73,6 +73,7 @@
 block discarded – undo
73 73
      * [ee_tep_not_null description]
74 74
      *
75 75
      * @param  string | array $value [description]
76
+     * @param string $value
76 77
      * @return bool       [description]
77 78
      */
78 79
     public static function ee_tep_not_null($value)
Please login to merge, or discard this patch.
Indentation   +92 added lines, -92 removed lines patch added patch discarded remove patch
@@ -12,108 +12,108 @@
 block discarded – undo
12 12
 {
13 13
 
14 14
 
15
-    /**
16
-     * _admin_format_content
17
-     * Text formatting function for wp_editor.
18
-     * This should fix all of the formatting issues of text output from the database.
19
-     *
20
-     * @static
21
-     * @access public
22
-     * @param  string $content content to format
23
-     * @return string          formatted content
24
-     */
25
-    public static function admin_format_content($content = '')
26
-    {
27
-        return wpautop(stripslashes_deep(html_entity_decode($content, ENT_QUOTES, "UTF-8")));
28
-    }
15
+	/**
16
+	 * _admin_format_content
17
+	 * Text formatting function for wp_editor.
18
+	 * This should fix all of the formatting issues of text output from the database.
19
+	 *
20
+	 * @static
21
+	 * @access public
22
+	 * @param  string $content content to format
23
+	 * @return string          formatted content
24
+	 */
25
+	public static function admin_format_content($content = '')
26
+	{
27
+		return wpautop(stripslashes_deep(html_entity_decode($content, ENT_QUOTES, "UTF-8")));
28
+	}
29 29
 
30 30
 
31 31
 
32
-    /**
33
-     * ee_tep_output_string
34
-     * todo: we need a description for this.
35
-     *
36
-     * @static
37
-     * @access public
38
-     * @param  string  $string    string to handle
39
-     * @param  boolean $translate //todo what is this for?
40
-     * @param  boolean $protected true then we run htmlspecialchars and return
41
-     * @return string
42
-     */
43
-    public static function ee_tep_output_string($string, $translate = false, $protected = false)
44
-    {
45
-        if ($protected === true) {
46
-            return htmlspecialchars($string);
47
-        } else {
48
-            if ($translate === false) {
49
-                return self::ee_tep_parse_input_field_data($string, array( '"' => '&quot;' ));
50
-            } else {
51
-                return self::ee_tep_parse_input_field_data($string, $translate);
52
-            }
53
-        }
54
-    }
32
+	/**
33
+	 * ee_tep_output_string
34
+	 * todo: we need a description for this.
35
+	 *
36
+	 * @static
37
+	 * @access public
38
+	 * @param  string  $string    string to handle
39
+	 * @param  boolean $translate //todo what is this for?
40
+	 * @param  boolean $protected true then we run htmlspecialchars and return
41
+	 * @return string
42
+	 */
43
+	public static function ee_tep_output_string($string, $translate = false, $protected = false)
44
+	{
45
+		if ($protected === true) {
46
+			return htmlspecialchars($string);
47
+		} else {
48
+			if ($translate === false) {
49
+				return self::ee_tep_parse_input_field_data($string, array( '"' => '&quot;' ));
50
+			} else {
51
+				return self::ee_tep_parse_input_field_data($string, $translate);
52
+			}
53
+		}
54
+	}
55 55
 
56 56
 
57 57
 
58
-    /**
59
-     * ee_tep_parse_input_field_data
60
-     *
61
-     * @param  string $data string to be "translated"
62
-     * @param         array ] $parse array in the form array( 'from' => 'to', ... )
63
-     * @return string
64
-     */
65
-    public static function ee_tep_parse_input_field_data($data, $parse)
66
-    {
67
-        return strtr(trim($data), $parse);
68
-    }
58
+	/**
59
+	 * ee_tep_parse_input_field_data
60
+	 *
61
+	 * @param  string $data string to be "translated"
62
+	 * @param         array ] $parse array in the form array( 'from' => 'to', ... )
63
+	 * @return string
64
+	 */
65
+	public static function ee_tep_parse_input_field_data($data, $parse)
66
+	{
67
+		return strtr(trim($data), $parse);
68
+	}
69 69
 
70 70
 
71 71
 
72
-    /**
73
-     * [ee_tep_not_null description]
74
-     *
75
-     * @param  string | array $value [description]
76
-     * @return bool       [description]
77
-     */
78
-    public static function ee_tep_not_null($value)
79
-    {
80
-        if (is_array($value)) {
81
-            if (count($value) > 0) {
82
-                return true;
83
-            } else {
84
-                return false;
85
-            }
86
-        } else {
87
-            if (( $value !== '' ) && ( strtolower($value) !== 'null' ) && ( strlen(trim($value)) > 0 )) {
88
-                return true;
89
-            } else {
90
-                return false;
91
-            }
92
-        }
93
-    }
72
+	/**
73
+	 * [ee_tep_not_null description]
74
+	 *
75
+	 * @param  string | array $value [description]
76
+	 * @return bool       [description]
77
+	 */
78
+	public static function ee_tep_not_null($value)
79
+	{
80
+		if (is_array($value)) {
81
+			if (count($value) > 0) {
82
+				return true;
83
+			} else {
84
+				return false;
85
+			}
86
+		} else {
87
+			if (( $value !== '' ) && ( strtolower($value) !== 'null' ) && ( strlen(trim($value)) > 0 )) {
88
+				return true;
89
+			} else {
90
+				return false;
91
+			}
92
+		}
93
+	}
94 94
 
95 95
 
96 96
 
97
-    /**
98
-     * Formats a date
99
-     *
100
-     * @param string $date
101
-     * @param string $format - format for the date
102
-     * @deprecated 4.6.12  Note, a search revealed this was not used anywhere in core or in our
103
-     *                       addons at time of writing this.  So just deprecated in case of third party use.
104
-     * @return string
105
-     * @deprecated v4.6.21
106
-     */
107
-    public static function event_date_display($date, $format = '')
108
-    {
109
-        EE_Error::doing_it_wrong(
110
-            __METHOD__,
111
-            __(
112
-                'This method is deprecated as of EE 4.6.12.  Currently it does not reformat as with prior behaviour but just returns the incoming string.  Please use the EE_Datetime helpers for Datetime on the event to display as desired.',
113
-                'event_espresso'
114
-            ),
115
-            '4.6.21'
116
-        );
117
-        return $date;
118
-    }
97
+	/**
98
+	 * Formats a date
99
+	 *
100
+	 * @param string $date
101
+	 * @param string $format - format for the date
102
+	 * @deprecated 4.6.12  Note, a search revealed this was not used anywhere in core or in our
103
+	 *                       addons at time of writing this.  So just deprecated in case of third party use.
104
+	 * @return string
105
+	 * @deprecated v4.6.21
106
+	 */
107
+	public static function event_date_display($date, $format = '')
108
+	{
109
+		EE_Error::doing_it_wrong(
110
+			__METHOD__,
111
+			__(
112
+				'This method is deprecated as of EE 4.6.12.  Currently it does not reformat as with prior behaviour but just returns the incoming string.  Please use the EE_Datetime helpers for Datetime on the event to display as desired.',
113
+				'event_espresso'
114
+			),
115
+			'4.6.21'
116
+		);
117
+		return $date;
118
+	}
119 119
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -46,7 +46,7 @@  discard block
 block discarded – undo
46 46
             return htmlspecialchars($string);
47 47
         } else {
48 48
             if ($translate === false) {
49
-                return self::ee_tep_parse_input_field_data($string, array( '"' => '&quot;' ));
49
+                return self::ee_tep_parse_input_field_data($string, array('"' => '&quot;'));
50 50
             } else {
51 51
                 return self::ee_tep_parse_input_field_data($string, $translate);
52 52
             }
@@ -84,7 +84,7 @@  discard block
 block discarded – undo
84 84
                 return false;
85 85
             }
86 86
         } else {
87
-            if (( $value !== '' ) && ( strtolower($value) !== 'null' ) && ( strlen(trim($value)) > 0 )) {
87
+            if (($value !== '') && (strtolower($value) !== 'null') && (strlen(trim($value)) > 0)) {
88 88
                 return true;
89 89
             } else {
90 90
                 return false;
Please login to merge, or discard this patch.