Completed
Branch FET/datetime-and-event-status (270044)
by
unknown
07:12 queued 25s
created
core/libraries/messages/EE_Messages_Template_Pack_Collection.lib.php 1 patch
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -11,19 +11,19 @@
 block discarded – undo
11 11
 {
12 12
 
13 13
 
14
-    public function __construct()
15
-    {
16
-        $this->interface = 'EE_Messages_Template_Pack';
17
-    }
14
+	public function __construct()
15
+	{
16
+		$this->interface = 'EE_Messages_Template_Pack';
17
+	}
18 18
 
19
-    public function get_by_name($template_pack_name)
20
-    {
21
-        $this->rewind();
22
-        while ($this->valid()) {
23
-            if ($this->current()->dbref == $template_pack_name) {
24
-                return $this->current();
25
-            }
26
-            $this->next();
27
-        }
28
-    }
19
+	public function get_by_name($template_pack_name)
20
+	{
21
+		$this->rewind();
22
+		while ($this->valid()) {
23
+			if ($this->current()->dbref == $template_pack_name) {
24
+				return $this->current();
25
+			}
26
+			$this->next();
27
+		}
28
+	}
29 29
 }
Please login to merge, or discard this patch.
core/libraries/messages/EE_Message_Factory.lib.php 2 patches
Indentation   +171 added lines, -171 removed lines patch added patch discarded remove patch
@@ -15,175 +15,175 @@
 block discarded – undo
15 15
 {
16 16
 
17 17
 
18
-    /**
19
-     * @type EE_Message_Factory $_instance
20
-     */
21
-    protected static $_instance = null;
22
-
23
-
24
-    /**
25
-     * @type EE_Message_Resource_Manager $_message_resource_manager
26
-     */
27
-    protected $_message_resource_manager;
28
-
29
-
30
-
31
-    /**
32
-     * EE_Message_Factory constructor.
33
-     *
34
-     * @access protected
35
-     * @param \EE_Message_Resource_Manager $Message_Resource_Manager
36
-     */
37
-    protected function __construct(
38
-        EE_Message_Resource_Manager $Message_Resource_Manager
39
-    ) {
40
-        $this->_message_resource_manager = $Message_Resource_Manager;
41
-    }
42
-
43
-
44
-
45
-    /**
46
-     * @singleton method used to instantiate class object
47
-     * @access    public
48
-     * @param \EE_Message_Resource_Manager $Message_Resource_Manager
49
-     * @return \EE_Message_Factory instance
50
-     */
51
-    public static function instance(EE_Message_Resource_Manager $Message_Resource_Manager)
52
-    {
53
-        // check if class object is instantiated, and instantiated properly
54
-        if (! self::$_instance instanceof EE_Message_Factory) {
55
-            self::$_instance = new EE_Message_Factory($Message_Resource_Manager);
56
-        }
57
-        return self::$_instance;
58
-    }
59
-
60
-
61
-
62
-    /**
63
-     * @access public
64
-     * @param  array $props_n_values
65
-     * @return EE_Message
66
-     */
67
-    public static function create($props_n_values = array())
68
-    {
69
-        /** @type EE_Message_Factory $Message_Factory */
70
-        $Message_Factory = EE_Registry::instance()->load_lib('Message_Factory');
71
-        return $Message_Factory->_create($props_n_values);
72
-    }
73
-
74
-
75
-
76
-    /**
77
-     * @access public
78
-     * @param  \EE_Message $message
79
-     * @return \EE_Message
80
-     * @throws \EE_Error
81
-     */
82
-    public static function set_messenger_and_message_type(EE_Message $message)
83
-    {
84
-        /** @type EE_Message_Factory $Message_Factory */
85
-        $Message_Factory = EE_Registry::instance()->load_lib('Message_Factory');
86
-        return $Message_Factory->_set_messenger_and_message_type($message);
87
-    }
88
-
89
-
90
-
91
-    /**
92
-     * @access public
93
-     * @param  \EE_Message $message
94
-     * @return \EE_Message
95
-     * @throws \EE_Error
96
-     */
97
-    public static function set_messenger(EE_Message $message)
98
-    {
99
-        /** @type EE_Message_Factory $Message_Factory */
100
-        $Message_Factory = EE_Registry::instance()->load_lib('Message_Factory');
101
-        return $Message_Factory->_set_messenger($message);
102
-    }
103
-
104
-
105
-
106
-    /**
107
-     * @access public
108
-     * @param  \EE_Message $message
109
-     * @return \EE_Message
110
-     * @throws \EE_Error
111
-     */
112
-    public static function set_message_type(EE_Message $message)
113
-    {
114
-        /** @type EE_Message_Factory $Message_Factory */
115
-        $Message_Factory = EE_Registry::instance()->load_lib('Message_Factory');
116
-        return $Message_Factory->_set_message_type($message);
117
-    }
118
-
119
-
120
-
121
-    /**
122
-     * @access protected
123
-     * @param  array $props_n_values
124
-     * @return \EE_Message
125
-     * @throws \EE_Error
126
-     */
127
-    protected function _create($props_n_values = array())
128
-    {
129
-        $new_instance = false;
130
-        if (! empty($props_n_values['MSG_ID'])) {
131
-            $message = EE_Message::new_instance_from_db($props_n_values);
132
-        } else {
133
-            $message = EE_Message::new_instance($props_n_values);
134
-            $new_instance = true;
135
-        }
136
-        return $this->_set_messenger_and_message_type($message, $new_instance);
137
-    }
138
-
139
-
140
-
141
-    /**
142
-     * @access public
143
-     * @param  \EE_Message $message
144
-     * @param  bool        $new_instance Whether the message type was setup from the database (false) or not (true)
145
-     * @return \EE_Message
146
-     * @throws \EE_Error
147
-     */
148
-    protected function _set_messenger_and_message_type(EE_Message $message, $new_instance = false)
149
-    {
150
-        $message = $this->_set_messenger($message);
151
-        $message = $this->_set_message_type($message, $new_instance);
152
-        return $message;
153
-    }
154
-
155
-
156
-
157
-    /**
158
-     * @access protected
159
-     * @param  \EE_Message $message
160
-     * @return \EE_Message
161
-     * @throws \EE_Error
162
-     */
163
-    protected function _set_messenger(EE_Message $message)
164
-    {
165
-        $messenger = $this->_message_resource_manager->get_messenger($message->messenger());
166
-        if ($messenger instanceof EE_messenger) {
167
-            $message->set_messenger_object($messenger);
168
-        }
169
-        return $message;
170
-    }
171
-
172
-
173
-
174
-    /**
175
-     * @access protected
176
-     * @param  \EE_Message $message
177
-     * @param  bool        $new_instance Whether the message type was setup from the database (false) or not (true)
178
-     * @return \EE_Message
179
-     * @throws \EE_Error
180
-     */
181
-    protected function _set_message_type(EE_Message $message, $new_instance = false)
182
-    {
183
-        $message_type = $this->_message_resource_manager->get_message_type($message->message_type());
184
-        if ($message_type instanceof EE_message_type) {
185
-            $message->set_message_type_object($message_type, $new_instance);
186
-        }
187
-        return $message;
188
-    }
18
+	/**
19
+	 * @type EE_Message_Factory $_instance
20
+	 */
21
+	protected static $_instance = null;
22
+
23
+
24
+	/**
25
+	 * @type EE_Message_Resource_Manager $_message_resource_manager
26
+	 */
27
+	protected $_message_resource_manager;
28
+
29
+
30
+
31
+	/**
32
+	 * EE_Message_Factory constructor.
33
+	 *
34
+	 * @access protected
35
+	 * @param \EE_Message_Resource_Manager $Message_Resource_Manager
36
+	 */
37
+	protected function __construct(
38
+		EE_Message_Resource_Manager $Message_Resource_Manager
39
+	) {
40
+		$this->_message_resource_manager = $Message_Resource_Manager;
41
+	}
42
+
43
+
44
+
45
+	/**
46
+	 * @singleton method used to instantiate class object
47
+	 * @access    public
48
+	 * @param \EE_Message_Resource_Manager $Message_Resource_Manager
49
+	 * @return \EE_Message_Factory instance
50
+	 */
51
+	public static function instance(EE_Message_Resource_Manager $Message_Resource_Manager)
52
+	{
53
+		// check if class object is instantiated, and instantiated properly
54
+		if (! self::$_instance instanceof EE_Message_Factory) {
55
+			self::$_instance = new EE_Message_Factory($Message_Resource_Manager);
56
+		}
57
+		return self::$_instance;
58
+	}
59
+
60
+
61
+
62
+	/**
63
+	 * @access public
64
+	 * @param  array $props_n_values
65
+	 * @return EE_Message
66
+	 */
67
+	public static function create($props_n_values = array())
68
+	{
69
+		/** @type EE_Message_Factory $Message_Factory */
70
+		$Message_Factory = EE_Registry::instance()->load_lib('Message_Factory');
71
+		return $Message_Factory->_create($props_n_values);
72
+	}
73
+
74
+
75
+
76
+	/**
77
+	 * @access public
78
+	 * @param  \EE_Message $message
79
+	 * @return \EE_Message
80
+	 * @throws \EE_Error
81
+	 */
82
+	public static function set_messenger_and_message_type(EE_Message $message)
83
+	{
84
+		/** @type EE_Message_Factory $Message_Factory */
85
+		$Message_Factory = EE_Registry::instance()->load_lib('Message_Factory');
86
+		return $Message_Factory->_set_messenger_and_message_type($message);
87
+	}
88
+
89
+
90
+
91
+	/**
92
+	 * @access public
93
+	 * @param  \EE_Message $message
94
+	 * @return \EE_Message
95
+	 * @throws \EE_Error
96
+	 */
97
+	public static function set_messenger(EE_Message $message)
98
+	{
99
+		/** @type EE_Message_Factory $Message_Factory */
100
+		$Message_Factory = EE_Registry::instance()->load_lib('Message_Factory');
101
+		return $Message_Factory->_set_messenger($message);
102
+	}
103
+
104
+
105
+
106
+	/**
107
+	 * @access public
108
+	 * @param  \EE_Message $message
109
+	 * @return \EE_Message
110
+	 * @throws \EE_Error
111
+	 */
112
+	public static function set_message_type(EE_Message $message)
113
+	{
114
+		/** @type EE_Message_Factory $Message_Factory */
115
+		$Message_Factory = EE_Registry::instance()->load_lib('Message_Factory');
116
+		return $Message_Factory->_set_message_type($message);
117
+	}
118
+
119
+
120
+
121
+	/**
122
+	 * @access protected
123
+	 * @param  array $props_n_values
124
+	 * @return \EE_Message
125
+	 * @throws \EE_Error
126
+	 */
127
+	protected function _create($props_n_values = array())
128
+	{
129
+		$new_instance = false;
130
+		if (! empty($props_n_values['MSG_ID'])) {
131
+			$message = EE_Message::new_instance_from_db($props_n_values);
132
+		} else {
133
+			$message = EE_Message::new_instance($props_n_values);
134
+			$new_instance = true;
135
+		}
136
+		return $this->_set_messenger_and_message_type($message, $new_instance);
137
+	}
138
+
139
+
140
+
141
+	/**
142
+	 * @access public
143
+	 * @param  \EE_Message $message
144
+	 * @param  bool        $new_instance Whether the message type was setup from the database (false) or not (true)
145
+	 * @return \EE_Message
146
+	 * @throws \EE_Error
147
+	 */
148
+	protected function _set_messenger_and_message_type(EE_Message $message, $new_instance = false)
149
+	{
150
+		$message = $this->_set_messenger($message);
151
+		$message = $this->_set_message_type($message, $new_instance);
152
+		return $message;
153
+	}
154
+
155
+
156
+
157
+	/**
158
+	 * @access protected
159
+	 * @param  \EE_Message $message
160
+	 * @return \EE_Message
161
+	 * @throws \EE_Error
162
+	 */
163
+	protected function _set_messenger(EE_Message $message)
164
+	{
165
+		$messenger = $this->_message_resource_manager->get_messenger($message->messenger());
166
+		if ($messenger instanceof EE_messenger) {
167
+			$message->set_messenger_object($messenger);
168
+		}
169
+		return $message;
170
+	}
171
+
172
+
173
+
174
+	/**
175
+	 * @access protected
176
+	 * @param  \EE_Message $message
177
+	 * @param  bool        $new_instance Whether the message type was setup from the database (false) or not (true)
178
+	 * @return \EE_Message
179
+	 * @throws \EE_Error
180
+	 */
181
+	protected function _set_message_type(EE_Message $message, $new_instance = false)
182
+	{
183
+		$message_type = $this->_message_resource_manager->get_message_type($message->message_type());
184
+		if ($message_type instanceof EE_message_type) {
185
+			$message->set_message_type_object($message_type, $new_instance);
186
+		}
187
+		return $message;
188
+	}
189 189
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -51,7 +51,7 @@  discard block
 block discarded – undo
51 51
     public static function instance(EE_Message_Resource_Manager $Message_Resource_Manager)
52 52
     {
53 53
         // check if class object is instantiated, and instantiated properly
54
-        if (! self::$_instance instanceof EE_Message_Factory) {
54
+        if ( ! self::$_instance instanceof EE_Message_Factory) {
55 55
             self::$_instance = new EE_Message_Factory($Message_Resource_Manager);
56 56
         }
57 57
         return self::$_instance;
@@ -127,7 +127,7 @@  discard block
 block discarded – undo
127 127
     protected function _create($props_n_values = array())
128 128
     {
129 129
         $new_instance = false;
130
-        if (! empty($props_n_values['MSG_ID'])) {
130
+        if ( ! empty($props_n_values['MSG_ID'])) {
131 131
             $message = EE_Message::new_instance_from_db($props_n_values);
132 132
         } else {
133 133
             $message = EE_Message::new_instance($props_n_values);
Please login to merge, or discard this patch.
core/libraries/messages/EE_Messages_Processor.lib.php 2 patches
Indentation   +582 added lines, -582 removed lines patch added patch discarded remove patch
@@ -12,590 +12,590 @@
 block discarded – undo
12 12
 {
13 13
 
14 14
 
15
-    /**
16
-     * @type EE_Message_Resource_Manager $_message_resource_manager
17
-     */
18
-    protected $_message_resource_manager;
19
-
20
-    /**
21
-     * @type EE_Messages_Queue
22
-     */
23
-    protected $_queue;
24
-
25
-    /**
26
-     * @type  EE_Messages_Generator
27
-     */
28
-    protected $_generator;
29
-
30
-
31
-
32
-
33
-    /**
34
-     * constructor
35
-     *
36
-     * @param EE_Message_Resource_Manager $message_resource_manager
37
-     */
38
-    public function __construct(EE_Message_Resource_Manager $message_resource_manager)
39
-    {
40
-        $this->_message_resource_manager = $message_resource_manager;
41
-        $this->_init_queue_and_generator();
42
-    }
43
-
44
-
45
-
46
-
47
-    /**
48
-     * This method sets (or resets) the various properties for use.
49
-     *
50
-     * - $_queue = holds the messages queue
51
-     * - $_generator = holds the messages generator
52
-     */
53
-    protected function _init_queue_and_generator()
54
-    {
55
-        $this->_generator = EE_Registry::factory('EE_Messages_Generator');
56
-        $this->_queue = $this->_generator->generation_queue();
57
-    }
58
-
59
-
60
-
61
-
62
-    /**
63
-     * This returns the current set queue.
64
-     * @return EE_Messages_Queue
65
-     */
66
-    public function get_queue()
67
-    {
68
-        return $this->_queue;
69
-    }
70
-
71
-
72
-
73
-    /**
74
-     * This method can be utilized to process messages from a queue and they will be processed immediately on the same request.
75
-     * Please note that this method alone does not bypass the usual "locks" for generation/sending (it assumes client code
76
-     * has already filtered those if necessary).
77
-     *
78
-     * @param EE_Messages_Queue $queue_to_process
79
-     * @return bool  true for success false for error.
80
-     */
81
-    public function process_immediately_from_queue(EE_Messages_Queue $queue_to_process)
82
-    {
83
-        $success = false;
84
-        $messages_to_send = array();
85
-        $messages_to_generate = array();
86
-        // loop through and setup the various messages from the queue so we know what is being processed
87
-        $queue_to_process->get_message_repository()->rewind();
88
-        foreach ($queue_to_process->get_message_repository() as $message) {
89
-            if ($message->STS_ID() === EEM_Message::status_incomplete) {
90
-                $messages_to_generate[] = $message;
91
-                continue;
92
-            }
93
-
94
-            if (in_array($message->STS_ID(), EEM_Message::instance()->stati_indicating_to_send())) {
95
-                $messages_to_send[] = $message;
96
-                continue;
97
-            }
98
-        }
99
-
100
-        // do generation/sends
101
-        if ($messages_to_generate) {
102
-            $success = $this->batch_generate_from_queue($messages_to_generate, true);
103
-        }
104
-
105
-        if ($messages_to_send) {
106
-            $sent = $this->batch_send_from_queue($messages_to_send, true);
107
-            // if there was messages to generate and it failed, then we override any success value for the sending process
108
-            // otherwise we just use the return from batch send.  The intent is that there is a simple response for success/fail.
109
-            // Either everything was successful or we consider it a fail.  To be clear, this is a limitation of doing
110
-            // all messages processing on the same request.
111
-            $success = $messages_to_generate && ! $success ? false : $sent;
112
-        }
113
-        return $success;
114
-    }
115
-
116
-
117
-    /**
118
-     * Calls the EE_Messages_Queue::get_batch_to_generate() method and sends to EE_Messages_Generator.
119
-     *
120
-     * @param  EE_Message[] $messages    Array of EE_Message objects (optional) to build the queue with.
121
-     * @param  bool         $clear_queue Whether to ensure a fresh queue or not.
122
-     *
123
-     * @return bool|EE_Messages_Queue return false if nothing generated.  This returns a new EE_Message_Queue with
124
-     *                                   generated messages.
125
-     */
126
-    public function batch_generate_from_queue($messages = array(), $clear_queue = false)
127
-    {
128
-        if ($this->_build_queue_for_generation($messages, $clear_queue)) {
129
-            $new_queue = $this->_generator->generate();
130
-            if ($new_queue instanceof EE_Messages_Queue) {
131
-                // unlock queue
132
-                $this->_queue->unlock_queue();
133
-                $new_queue->initiate_request_by_priority('send');
134
-                return $new_queue;
135
-            }
136
-        }
137
-        $this->_queue->unlock_queue();
138
-        return false;
139
-    }
140
-
141
-
142
-
143
-    /**
144
-     * This method preps a queue for generation.
145
-     *
146
-     * @since    4.9.0
147
-     *
148
-     * @param EE_Message[] $messages    Array of EE_Message objects to build the queue with
149
-     *
150
-     * @param   bool       $clear_queue This indicates whether the existing queue should be dumped or not.
151
-     *
152
-     * @return bool true means queue prepped, false means there was a lock so no generation please.
153
-     */
154
-    protected function _build_queue_for_generation($messages = array(), $clear_queue = false)
155
-    {
156
-
157
-        if ($clear_queue) {
158
-            $this->_init_queue_and_generator();
159
-        }
160
-
161
-        if ($messages) {
162
-            // if generation is locked then get out now because that means processing is already happening.
163
-            if ($this->_queue->is_locked()) {
164
-                return false;
165
-            }
166
-
167
-            $this->_queue->lock_queue();
168
-            $messages = is_array($messages) ? $messages : array( $messages );
169
-            foreach ($messages as $message) {
170
-                if ($message instanceof EE_Message) {
171
-                    $data = $message->all_extra_meta_array();
172
-                    $this->_queue->add($message, $data);
173
-                }
174
-            }
175
-            return true;
176
-        } else {
177
-            return $this->_queue->get_batch_to_generate();
178
-        }
179
-    }
180
-
181
-
182
-    /**
183
-     * This method preps a queue for sending.
184
-     *
185
-     * @param EE_Message[] $messages
186
-     * @param bool  $clear_queue Used to indicate whether to start with a fresh queue or not.
187
-     *
188
-     * @return bool true means queue prepped, false means there was a lock so no queue prepped.
189
-     */
190
-    protected function _build_queue_for_sending($messages, $clear_queue = false)
191
-    {
192
-        // if sending is locked then get out now because that means processing is already happening.
193
-        if ($this->_queue->is_locked(EE_Messages_Queue::action_sending)) {
194
-            return false;
195
-        }
196
-
197
-        $this->_queue->lock_queue(EE_Messages_Queue::action_sending);
198
-
199
-        if ($clear_queue) {
200
-            $this->_init_queue_and_generator();
201
-        }
202
-
203
-        $messages = is_array($messages) ? $messages : array( $messages );
204
-
205
-        foreach ($messages as $message) {
206
-            $this->_queue->add($message);
207
-        }
208
-        return true;
209
-    }
210
-
211
-
212
-    /**
213
-     * Calls the EE_Message_Queue::get_to_send_batch_and_send() method and then immediately just calls EE_Message_Queue::execute()
214
-     * to iterate and send unsent messages.
215
-     *
216
-     * @param EE_Message[] $messages    If an array of messages is sent in then use it.
217
-     *
218
-     * @param bool         $clear_queue Whether to initialize a new queue or keep the existing one.
219
-     *
220
-     * @return EE_Messages_Queue
221
-     */
222
-    public function batch_send_from_queue($messages = array(), $clear_queue = false)
223
-    {
224
-
225
-        if ($messages && $this->_build_queue_for_sending($messages, $clear_queue)) {
226
-            $this->_queue->execute();
227
-            $this->_queue->unlock_queue(EE_Messages_Queue::action_sending);
228
-        } else {
229
-            // get messages to send and execute.
230
-            $this->_queue->get_to_send_batch_and_send();
231
-        }
232
-        // note: callers can use the EE_Messages_Queue::count_STS_in_queue() method to find out if there were any failed
233
-        // messages in the queue and decide how to handle at that point.
234
-        return $this->_queue;
235
-    }
236
-
237
-
238
-
239
-
240
-
241
-
242
-    /**
243
-     * This immediately generates messages using the given array of EE_Message_To_Generate objects and returns the
244
-     * EE_Message_Queue with the generated messages for the caller to work with.  Note, this does NOT save the generated
245
-     * messages in the queue, leaving it up to the caller to do so.
246
-     *
247
-     * @param EE_Message_To_Generate[] $messages_to_generate
248
-     * @return EE_Messages_Queue
249
-     */
250
-    public function generate_and_return($messages_to_generate)
251
-    {
252
-        $this->_init_queue_and_generator();
253
-        $this->_queue_for_generation_loop($messages_to_generate);
254
-        return $this->_generator->generate(false);
255
-    }
256
-
257
-
258
-
259
-
260
-    /**
261
-     * Executes the generator generate method on the current internal queue, and returns the generated queue.
262
-     * @param  bool     $persist    Indicate whether to instruct the generator to persist the generated queue (true) or not (false).
263
-     * @return EE_Messages_Queue
264
-     */
265
-    public function generate_queue($persist = true)
266
-    {
267
-        return $this->_generator->generate($persist);
268
-    }
15
+	/**
16
+	 * @type EE_Message_Resource_Manager $_message_resource_manager
17
+	 */
18
+	protected $_message_resource_manager;
19
+
20
+	/**
21
+	 * @type EE_Messages_Queue
22
+	 */
23
+	protected $_queue;
24
+
25
+	/**
26
+	 * @type  EE_Messages_Generator
27
+	 */
28
+	protected $_generator;
29
+
30
+
31
+
32
+
33
+	/**
34
+	 * constructor
35
+	 *
36
+	 * @param EE_Message_Resource_Manager $message_resource_manager
37
+	 */
38
+	public function __construct(EE_Message_Resource_Manager $message_resource_manager)
39
+	{
40
+		$this->_message_resource_manager = $message_resource_manager;
41
+		$this->_init_queue_and_generator();
42
+	}
43
+
44
+
45
+
46
+
47
+	/**
48
+	 * This method sets (or resets) the various properties for use.
49
+	 *
50
+	 * - $_queue = holds the messages queue
51
+	 * - $_generator = holds the messages generator
52
+	 */
53
+	protected function _init_queue_and_generator()
54
+	{
55
+		$this->_generator = EE_Registry::factory('EE_Messages_Generator');
56
+		$this->_queue = $this->_generator->generation_queue();
57
+	}
58
+
59
+
60
+
61
+
62
+	/**
63
+	 * This returns the current set queue.
64
+	 * @return EE_Messages_Queue
65
+	 */
66
+	public function get_queue()
67
+	{
68
+		return $this->_queue;
69
+	}
70
+
71
+
72
+
73
+	/**
74
+	 * This method can be utilized to process messages from a queue and they will be processed immediately on the same request.
75
+	 * Please note that this method alone does not bypass the usual "locks" for generation/sending (it assumes client code
76
+	 * has already filtered those if necessary).
77
+	 *
78
+	 * @param EE_Messages_Queue $queue_to_process
79
+	 * @return bool  true for success false for error.
80
+	 */
81
+	public function process_immediately_from_queue(EE_Messages_Queue $queue_to_process)
82
+	{
83
+		$success = false;
84
+		$messages_to_send = array();
85
+		$messages_to_generate = array();
86
+		// loop through and setup the various messages from the queue so we know what is being processed
87
+		$queue_to_process->get_message_repository()->rewind();
88
+		foreach ($queue_to_process->get_message_repository() as $message) {
89
+			if ($message->STS_ID() === EEM_Message::status_incomplete) {
90
+				$messages_to_generate[] = $message;
91
+				continue;
92
+			}
93
+
94
+			if (in_array($message->STS_ID(), EEM_Message::instance()->stati_indicating_to_send())) {
95
+				$messages_to_send[] = $message;
96
+				continue;
97
+			}
98
+		}
99
+
100
+		// do generation/sends
101
+		if ($messages_to_generate) {
102
+			$success = $this->batch_generate_from_queue($messages_to_generate, true);
103
+		}
104
+
105
+		if ($messages_to_send) {
106
+			$sent = $this->batch_send_from_queue($messages_to_send, true);
107
+			// if there was messages to generate and it failed, then we override any success value for the sending process
108
+			// otherwise we just use the return from batch send.  The intent is that there is a simple response for success/fail.
109
+			// Either everything was successful or we consider it a fail.  To be clear, this is a limitation of doing
110
+			// all messages processing on the same request.
111
+			$success = $messages_to_generate && ! $success ? false : $sent;
112
+		}
113
+		return $success;
114
+	}
115
+
116
+
117
+	/**
118
+	 * Calls the EE_Messages_Queue::get_batch_to_generate() method and sends to EE_Messages_Generator.
119
+	 *
120
+	 * @param  EE_Message[] $messages    Array of EE_Message objects (optional) to build the queue with.
121
+	 * @param  bool         $clear_queue Whether to ensure a fresh queue or not.
122
+	 *
123
+	 * @return bool|EE_Messages_Queue return false if nothing generated.  This returns a new EE_Message_Queue with
124
+	 *                                   generated messages.
125
+	 */
126
+	public function batch_generate_from_queue($messages = array(), $clear_queue = false)
127
+	{
128
+		if ($this->_build_queue_for_generation($messages, $clear_queue)) {
129
+			$new_queue = $this->_generator->generate();
130
+			if ($new_queue instanceof EE_Messages_Queue) {
131
+				// unlock queue
132
+				$this->_queue->unlock_queue();
133
+				$new_queue->initiate_request_by_priority('send');
134
+				return $new_queue;
135
+			}
136
+		}
137
+		$this->_queue->unlock_queue();
138
+		return false;
139
+	}
140
+
141
+
142
+
143
+	/**
144
+	 * This method preps a queue for generation.
145
+	 *
146
+	 * @since    4.9.0
147
+	 *
148
+	 * @param EE_Message[] $messages    Array of EE_Message objects to build the queue with
149
+	 *
150
+	 * @param   bool       $clear_queue This indicates whether the existing queue should be dumped or not.
151
+	 *
152
+	 * @return bool true means queue prepped, false means there was a lock so no generation please.
153
+	 */
154
+	protected function _build_queue_for_generation($messages = array(), $clear_queue = false)
155
+	{
156
+
157
+		if ($clear_queue) {
158
+			$this->_init_queue_and_generator();
159
+		}
160
+
161
+		if ($messages) {
162
+			// if generation is locked then get out now because that means processing is already happening.
163
+			if ($this->_queue->is_locked()) {
164
+				return false;
165
+			}
166
+
167
+			$this->_queue->lock_queue();
168
+			$messages = is_array($messages) ? $messages : array( $messages );
169
+			foreach ($messages as $message) {
170
+				if ($message instanceof EE_Message) {
171
+					$data = $message->all_extra_meta_array();
172
+					$this->_queue->add($message, $data);
173
+				}
174
+			}
175
+			return true;
176
+		} else {
177
+			return $this->_queue->get_batch_to_generate();
178
+		}
179
+	}
180
+
181
+
182
+	/**
183
+	 * This method preps a queue for sending.
184
+	 *
185
+	 * @param EE_Message[] $messages
186
+	 * @param bool  $clear_queue Used to indicate whether to start with a fresh queue or not.
187
+	 *
188
+	 * @return bool true means queue prepped, false means there was a lock so no queue prepped.
189
+	 */
190
+	protected function _build_queue_for_sending($messages, $clear_queue = false)
191
+	{
192
+		// if sending is locked then get out now because that means processing is already happening.
193
+		if ($this->_queue->is_locked(EE_Messages_Queue::action_sending)) {
194
+			return false;
195
+		}
196
+
197
+		$this->_queue->lock_queue(EE_Messages_Queue::action_sending);
198
+
199
+		if ($clear_queue) {
200
+			$this->_init_queue_and_generator();
201
+		}
202
+
203
+		$messages = is_array($messages) ? $messages : array( $messages );
204
+
205
+		foreach ($messages as $message) {
206
+			$this->_queue->add($message);
207
+		}
208
+		return true;
209
+	}
210
+
211
+
212
+	/**
213
+	 * Calls the EE_Message_Queue::get_to_send_batch_and_send() method and then immediately just calls EE_Message_Queue::execute()
214
+	 * to iterate and send unsent messages.
215
+	 *
216
+	 * @param EE_Message[] $messages    If an array of messages is sent in then use it.
217
+	 *
218
+	 * @param bool         $clear_queue Whether to initialize a new queue or keep the existing one.
219
+	 *
220
+	 * @return EE_Messages_Queue
221
+	 */
222
+	public function batch_send_from_queue($messages = array(), $clear_queue = false)
223
+	{
224
+
225
+		if ($messages && $this->_build_queue_for_sending($messages, $clear_queue)) {
226
+			$this->_queue->execute();
227
+			$this->_queue->unlock_queue(EE_Messages_Queue::action_sending);
228
+		} else {
229
+			// get messages to send and execute.
230
+			$this->_queue->get_to_send_batch_and_send();
231
+		}
232
+		// note: callers can use the EE_Messages_Queue::count_STS_in_queue() method to find out if there were any failed
233
+		// messages in the queue and decide how to handle at that point.
234
+		return $this->_queue;
235
+	}
236
+
237
+
238
+
239
+
240
+
241
+
242
+	/**
243
+	 * This immediately generates messages using the given array of EE_Message_To_Generate objects and returns the
244
+	 * EE_Message_Queue with the generated messages for the caller to work with.  Note, this does NOT save the generated
245
+	 * messages in the queue, leaving it up to the caller to do so.
246
+	 *
247
+	 * @param EE_Message_To_Generate[] $messages_to_generate
248
+	 * @return EE_Messages_Queue
249
+	 */
250
+	public function generate_and_return($messages_to_generate)
251
+	{
252
+		$this->_init_queue_and_generator();
253
+		$this->_queue_for_generation_loop($messages_to_generate);
254
+		return $this->_generator->generate(false);
255
+	}
256
+
257
+
258
+
259
+
260
+	/**
261
+	 * Executes the generator generate method on the current internal queue, and returns the generated queue.
262
+	 * @param  bool     $persist    Indicate whether to instruct the generator to persist the generated queue (true) or not (false).
263
+	 * @return EE_Messages_Queue
264
+	 */
265
+	public function generate_queue($persist = true)
266
+	{
267
+		return $this->_generator->generate($persist);
268
+	}
269 269
 
270 270
 
271 271
 
272 272
 
273
-    /**
274
-     * Queue for generation.  Note this does NOT persist to the db.  Client code should call get_message_repository()->save() if desire
275
-     * to persist.  This method is provided to client code to decide what it wants to do with queued messages for generation.
276
-     * @param EE_Message_To_Generate $message_to_generate
277
-     * @param bool                   $test_send             Whether this item is for a test send or not.
278
-     * @return  EE_Messages_Queue
279
-     */
280
-    public function queue_for_generation(EE_Message_To_Generate $message_to_generate, $test_send = false)
281
-    {
282
-        if ($message_to_generate->valid()) {
283
-            $this->_generator->create_and_add_message_to_queue($message_to_generate, $test_send);
284
-        }
285
-    }
286
-
287
-
288
-
289
-
290
-
291
-
292
-
293
-    /**
294
-     * This receives an array of EE_Message_To_Generate objects, converts them to EE_Message adds them to the generation queue
295
-     * and then persists to storage.
296
-     *
297
-     * @param EE_Message_To_Generate[] $messages_to_generate
298
-     */
299
-    public function batch_queue_for_generation_and_persist($messages_to_generate)
300
-    {
301
-        $this->_init_queue_and_generator();
302
-        $this->_queue_for_generation_loop($messages_to_generate);
303
-        $this->_queue->save();
304
-    }
305
-
306
-
307
-
308
-
309
-
310
-
311
-    /**
312
-     * This receives an array of EE_Message_To_Generate objects, converts them to EE_Message and adds them to the generation
313
-     * queue.  Does NOT persist to storage (unless there is an error.
314
-     * Client code can retrieve the generated queue by calling EEM_Messages_Processor::get_queue()
315
-     *
316
-     * @param EE_Message_To_Generate[]  $messages_to_generate
317
-     */
318
-    public function batch_queue_for_generation_no_persist($messages_to_generate)
319
-    {
320
-        $this->_init_queue_and_generator();
321
-        $this->_queue_for_generation_loop($messages_to_generate);
322
-    }
323
-
324
-
325
-
326
-
327
-    /**
328
-     * Simply loops through the given array of EE_Message_To_Generate objects and adds them to the _queue as EE_Message
329
-     * objects.
330
-     *
331
-     * @param EE_Message_To_Generate[] $messages_to_generate
332
-     */
333
-    protected function _queue_for_generation_loop($messages_to_generate)
334
-    {
335
-        // make sure is in an array.
336
-        if (! is_array($messages_to_generate)) {
337
-            $messages_to_generate = array( $messages_to_generate );
338
-        }
339
-
340
-        foreach ($messages_to_generate as $message_to_generate) {
341
-            if ($message_to_generate instanceof EE_Message_To_Generate && $message_to_generate->valid()) {
342
-                $this->queue_for_generation($message_to_generate);
343
-            }
344
-        }
345
-    }
346
-
347
-
348
-
349
-
350
-
351
-    /**
352
-     * Receives an array of EE_Message_To_Generate objects and generates the EE_Message objects, then persists (so its
353
-     * queued for sending).
354
-     * @param  EE_Message_To_Generate[]
355
-     * @return EE_Messages_Queue
356
-     */
357
-    public function generate_and_queue_for_sending($messages_to_generate)
358
-    {
359
-        $this->_init_queue_and_generator();
360
-        $this->_queue_for_generation_loop($messages_to_generate);
361
-        return $this->_generator->generate(true);
362
-    }
363
-
364
-
365
-
366
-
367
-
368
-    /**
369
-     * Generate for preview and execute right away.
370
-     *
371
-     * @param   EE_Message_To_Generate $message_to_generate
372
-     * @param   bool                   $test_send                Whether this is a test send or not.
373
-     * @return  EE_Messages_Queue | bool   false if unable to generate otherwise the generated queue.
374
-     */
375
-    public function generate_for_preview(EE_Message_To_Generate $message_to_generate, $test_send = false)
376
-    {
377
-        if (! $message_to_generate->valid()) {
378
-            EE_Error::add_error(
379
-                __('Unable to generate preview because of invalid data', 'event_espresso'),
380
-                __FILE__,
381
-                __FUNCTION__,
382
-                __LINE__
383
-            );
384
-            return false;
385
-        }
386
-        // just make sure preview is set on the $message_to_generate (in case client forgot)
387
-        $message_to_generate->set_preview(true);
388
-        $this->_init_queue_and_generator();
389
-        $this->queue_for_generation($message_to_generate, $test_send);
390
-        $generated_queue = $this->_generator->generate(false);
391
-        if ($generated_queue->execute(false)) {
392
-            // the first queue item should be the preview
393
-            $generated_queue->get_message_repository()->rewind();
394
-            if (! $generated_queue->get_message_repository()->valid()) {
395
-                return $generated_queue;
396
-            }
397
-            return $generated_queue;
398
-        } else {
399
-            return false;
400
-        }
401
-    }
402
-
403
-
404
-    /**
405
-     * This queues for sending.
406
-     * The messenger send now method is also verified to see if sending immediately is requested.
407
-     * otherwise its just saved to the queue.
408
-     * @param EE_Message_To_Generate $message_to_generate
409
-     * @return bool true or false for success.
410
-     */
411
-    public function queue_for_sending(EE_Message_To_Generate $message_to_generate)
412
-    {
413
-        if (! $message_to_generate->valid()) {
414
-            return false;
415
-        }
416
-        $this->_init_queue_and_generator();
417
-        $message = $message_to_generate->get_EE_Message();
418
-        $this->_queue->add($message);
419
-        if ($message->send_now()) {
420
-            $this->_queue->execute(false);
421
-        } else {
422
-            $this->_queue->save();
423
-        }
424
-        return true;
425
-    }
426
-
427
-
428
-    /**
429
-     * This generates and sends from the given EE_Message_To_Generate class immediately.
430
-     * @param EE_Message_To_Generate $message_to_generate
431
-     * @return EE_Messages_Queue | null
432
-     */
433
-    public function generate_and_send_now(EE_Message_To_Generate $message_to_generate)
434
-    {
435
-        if (! $message_to_generate->valid()) {
436
-            return null;
437
-        }
438
-        // is there supposed to be a sending messenger for this message?
439
-        if ($message_to_generate instanceof EEI_Has_Sending_Messenger) {
440
-            // make sure it's valid, but if it's not,
441
-            // then set the value of $sending_messenger to an EE_Error object
442
-            // so that downstream code can easily see that things went wrong.
443
-            $sending_messenger = $message_to_generate->sending_messenger() instanceof EE_messenger
444
-                ? $message_to_generate->sending_messenger()
445
-                : new EE_Error(
446
-                    __(
447
-                        'There was a specific sending messenger requested for the send action, but it was either invalid or not active at time of sending.',
448
-                        'event_espresso'
449
-                    )
450
-                );
451
-        } else {
452
-            $sending_messenger = null;
453
-        }
454
-
455
-        if ($message_to_generate->get_EE_Message()->STS_ID() === EEM_Message::status_idle) {
456
-            $this->_init_queue_and_generator();
457
-            $this->_queue->add($message_to_generate->get_EE_Message());
458
-            $this->_queue->execute(false, $sending_messenger);
459
-            return $this->_queue;
460
-        } elseif ($message_to_generate->get_EE_Message()->STS_ID() === EEM_Message::status_incomplete) {
461
-            $generated_queue = $this->generate_and_return(array( $message_to_generate ));
462
-            $generated_queue->execute(false, $sending_messenger);
463
-            return $generated_queue;
464
-        }
465
-        return null;
466
-    }
467
-
468
-
469
-
470
-
471
-    /**
472
-     * Creates mtg objects for all active messengers and queues for generation.
473
-     * This method also calls the execute by priority method on the queue which will optionally kick off a new non-blocking
474
-     * request to complete the action if the priority for the message requires immediate action.
475
-     * @param string $message_type
476
-     * @param mixed  $data   The data being used for generation.
477
-     * @param bool   $persist   Whether to persist the queued messages to the db or not.
478
-     */
479
-    public function generate_for_all_active_messengers($message_type, $data, $persist = true)
480
-    {
481
-        $messages_to_generate = $this->setup_mtgs_for_all_active_messengers($message_type, $data);
482
-        if ($persist) {
483
-            $this->batch_queue_for_generation_and_persist($messages_to_generate);
484
-            $this->_queue->initiate_request_by_priority();
485
-        } else {
486
-            $this->batch_queue_for_generation_no_persist($messages_to_generate);
487
-        }
488
-    }
489
-
490
-
491
-
492
-
493
-    /**
494
-     * This simply loops through all active messengers and takes care of setting up the
495
-     * EE_Message_To_Generate objects.
496
-     * @param $message_type
497
-     * @param $data
498
-     *
499
-     * @return EE_Message_To_Generate[]
500
-     */
501
-    public function setup_mtgs_for_all_active_messengers($message_type, $data)
502
-    {
503
-        $messages_to_generate = array();
504
-        foreach ($this->_message_resource_manager->active_messengers() as $messenger_slug => $messenger_object) {
505
-            $message_to_generate = new EE_Message_To_Generate($messenger_slug, $message_type, $data);
506
-            if ($message_to_generate->valid()) {
507
-                $messages_to_generate[] = $message_to_generate;
508
-            }
509
-        }
510
-        return $messages_to_generate;
511
-    }
512
-
513
-
514
-
515
-
516
-    /**
517
-     * This accepts an array of EE_Message::MSG_ID values and will use that to retrieve the objects from the database
518
-     * and send.
519
-     * @param array $message_ids
520
-     */
521
-    public function setup_messages_from_ids_and_send($message_ids)
522
-    {
523
-        $this->_init_queue_and_generator();
524
-        $messages = EEM_Message::instance()->get_all(array(
525
-            array(
526
-                'MSG_ID' => array( 'IN', $message_ids ),
527
-                'STS_ID' => array(
528
-                    'IN',
529
-                    array_merge(
530
-                        EEM_Message::instance()->stati_indicating_sent(),
531
-                        array( EEM_Message::status_retry )
532
-                    ),
533
-                ),
534
-            ),
535
-        ));
536
-        // set the Messages to resend.
537
-        foreach ($messages as $message) {
538
-            if ($message instanceof EE_Message) {
539
-                $message->set_STS_ID(EEM_Message::status_resend);
540
-                $this->_queue->add($message);
541
-            }
542
-        }
543
-
544
-        $this->_queue->initiate_request_by_priority('send');
545
-    }
546
-
547
-
548
-
549
-    /**
550
-     * This method checks for registration IDs in the request via the given key and creates the messages to generate
551
-     * objects from them, then returns the array of messages to generate objects.
552
-     * Note, this sets up registrations for the registration family of message types.
553
-     *
554
-     * @param string $registration_ids_key  This is used to indicate what represents the registration ids in the request.
555
-     *
556
-     * @return EE_Message_To_Generate[]
557
-     */
558
-    public function setup_messages_to_generate_from_registration_ids_in_request($registration_ids_key = '_REG_ID')
559
-    {
560
-        EE_Registry::instance()->load_core('Request_Handler');
561
-        EE_Registry::instance()->load_helper('MSG_Template');
562
-        $regs_to_send = array();
563
-        $regIDs = EE_Registry::instance()->REQ->get($registration_ids_key);
564
-        if (empty($regIDs)) {
565
-            EE_Error::add_error(__('Something went wrong because we\'re missing the registration ID', 'event_espresso'), __FILE__, __FUNCTION__, __LINE__);
566
-            return false;
567
-        }
568
-
569
-        // make sure is an array
570
-        $regIDs = is_array($regIDs) ? $regIDs : array( $regIDs );
571
-
572
-        foreach ($regIDs as $regID) {
573
-            $reg = EEM_Registration::instance()->get_one_by_ID($regID);
574
-            if (! $reg instanceof EE_Registration) {
575
-                EE_Error::add_error(sprintf(__('Unable to retrieve a registration object for the given reg id (%s)', 'event_espresso'), $regID));
576
-                return false;
577
-            }
578
-            $regs_to_send[ $reg->transaction_ID() ][ $reg->status_ID() ][] = $reg;
579
-        }
580
-
581
-        $messages_to_generate = array();
582
-
583
-        foreach ($regs_to_send as $status_group) {
584
-            foreach ($status_group as $status_id => $registrations) {
585
-                $message_type = EEH_MSG_Template::convert_reg_status_to_message_type($status_id);
586
-                if (! $message_type) {
587
-                    continue;
588
-                }
589
-                $messages_to_generate = array_merge(
590
-                    $messages_to_generate,
591
-                    $this->setup_mtgs_for_all_active_messengers(
592
-                        $message_type,
593
-                        array( $registrations, $status_id )
594
-                    )
595
-                );
596
-            }
597
-        }
598
-
599
-        return $messages_to_generate;
600
-    }
273
+	/**
274
+	 * Queue for generation.  Note this does NOT persist to the db.  Client code should call get_message_repository()->save() if desire
275
+	 * to persist.  This method is provided to client code to decide what it wants to do with queued messages for generation.
276
+	 * @param EE_Message_To_Generate $message_to_generate
277
+	 * @param bool                   $test_send             Whether this item is for a test send or not.
278
+	 * @return  EE_Messages_Queue
279
+	 */
280
+	public function queue_for_generation(EE_Message_To_Generate $message_to_generate, $test_send = false)
281
+	{
282
+		if ($message_to_generate->valid()) {
283
+			$this->_generator->create_and_add_message_to_queue($message_to_generate, $test_send);
284
+		}
285
+	}
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+	/**
294
+	 * This receives an array of EE_Message_To_Generate objects, converts them to EE_Message adds them to the generation queue
295
+	 * and then persists to storage.
296
+	 *
297
+	 * @param EE_Message_To_Generate[] $messages_to_generate
298
+	 */
299
+	public function batch_queue_for_generation_and_persist($messages_to_generate)
300
+	{
301
+		$this->_init_queue_and_generator();
302
+		$this->_queue_for_generation_loop($messages_to_generate);
303
+		$this->_queue->save();
304
+	}
305
+
306
+
307
+
308
+
309
+
310
+
311
+	/**
312
+	 * This receives an array of EE_Message_To_Generate objects, converts them to EE_Message and adds them to the generation
313
+	 * queue.  Does NOT persist to storage (unless there is an error.
314
+	 * Client code can retrieve the generated queue by calling EEM_Messages_Processor::get_queue()
315
+	 *
316
+	 * @param EE_Message_To_Generate[]  $messages_to_generate
317
+	 */
318
+	public function batch_queue_for_generation_no_persist($messages_to_generate)
319
+	{
320
+		$this->_init_queue_and_generator();
321
+		$this->_queue_for_generation_loop($messages_to_generate);
322
+	}
323
+
324
+
325
+
326
+
327
+	/**
328
+	 * Simply loops through the given array of EE_Message_To_Generate objects and adds them to the _queue as EE_Message
329
+	 * objects.
330
+	 *
331
+	 * @param EE_Message_To_Generate[] $messages_to_generate
332
+	 */
333
+	protected function _queue_for_generation_loop($messages_to_generate)
334
+	{
335
+		// make sure is in an array.
336
+		if (! is_array($messages_to_generate)) {
337
+			$messages_to_generate = array( $messages_to_generate );
338
+		}
339
+
340
+		foreach ($messages_to_generate as $message_to_generate) {
341
+			if ($message_to_generate instanceof EE_Message_To_Generate && $message_to_generate->valid()) {
342
+				$this->queue_for_generation($message_to_generate);
343
+			}
344
+		}
345
+	}
346
+
347
+
348
+
349
+
350
+
351
+	/**
352
+	 * Receives an array of EE_Message_To_Generate objects and generates the EE_Message objects, then persists (so its
353
+	 * queued for sending).
354
+	 * @param  EE_Message_To_Generate[]
355
+	 * @return EE_Messages_Queue
356
+	 */
357
+	public function generate_and_queue_for_sending($messages_to_generate)
358
+	{
359
+		$this->_init_queue_and_generator();
360
+		$this->_queue_for_generation_loop($messages_to_generate);
361
+		return $this->_generator->generate(true);
362
+	}
363
+
364
+
365
+
366
+
367
+
368
+	/**
369
+	 * Generate for preview and execute right away.
370
+	 *
371
+	 * @param   EE_Message_To_Generate $message_to_generate
372
+	 * @param   bool                   $test_send                Whether this is a test send or not.
373
+	 * @return  EE_Messages_Queue | bool   false if unable to generate otherwise the generated queue.
374
+	 */
375
+	public function generate_for_preview(EE_Message_To_Generate $message_to_generate, $test_send = false)
376
+	{
377
+		if (! $message_to_generate->valid()) {
378
+			EE_Error::add_error(
379
+				__('Unable to generate preview because of invalid data', 'event_espresso'),
380
+				__FILE__,
381
+				__FUNCTION__,
382
+				__LINE__
383
+			);
384
+			return false;
385
+		}
386
+		// just make sure preview is set on the $message_to_generate (in case client forgot)
387
+		$message_to_generate->set_preview(true);
388
+		$this->_init_queue_and_generator();
389
+		$this->queue_for_generation($message_to_generate, $test_send);
390
+		$generated_queue = $this->_generator->generate(false);
391
+		if ($generated_queue->execute(false)) {
392
+			// the first queue item should be the preview
393
+			$generated_queue->get_message_repository()->rewind();
394
+			if (! $generated_queue->get_message_repository()->valid()) {
395
+				return $generated_queue;
396
+			}
397
+			return $generated_queue;
398
+		} else {
399
+			return false;
400
+		}
401
+	}
402
+
403
+
404
+	/**
405
+	 * This queues for sending.
406
+	 * The messenger send now method is also verified to see if sending immediately is requested.
407
+	 * otherwise its just saved to the queue.
408
+	 * @param EE_Message_To_Generate $message_to_generate
409
+	 * @return bool true or false for success.
410
+	 */
411
+	public function queue_for_sending(EE_Message_To_Generate $message_to_generate)
412
+	{
413
+		if (! $message_to_generate->valid()) {
414
+			return false;
415
+		}
416
+		$this->_init_queue_and_generator();
417
+		$message = $message_to_generate->get_EE_Message();
418
+		$this->_queue->add($message);
419
+		if ($message->send_now()) {
420
+			$this->_queue->execute(false);
421
+		} else {
422
+			$this->_queue->save();
423
+		}
424
+		return true;
425
+	}
426
+
427
+
428
+	/**
429
+	 * This generates and sends from the given EE_Message_To_Generate class immediately.
430
+	 * @param EE_Message_To_Generate $message_to_generate
431
+	 * @return EE_Messages_Queue | null
432
+	 */
433
+	public function generate_and_send_now(EE_Message_To_Generate $message_to_generate)
434
+	{
435
+		if (! $message_to_generate->valid()) {
436
+			return null;
437
+		}
438
+		// is there supposed to be a sending messenger for this message?
439
+		if ($message_to_generate instanceof EEI_Has_Sending_Messenger) {
440
+			// make sure it's valid, but if it's not,
441
+			// then set the value of $sending_messenger to an EE_Error object
442
+			// so that downstream code can easily see that things went wrong.
443
+			$sending_messenger = $message_to_generate->sending_messenger() instanceof EE_messenger
444
+				? $message_to_generate->sending_messenger()
445
+				: new EE_Error(
446
+					__(
447
+						'There was a specific sending messenger requested for the send action, but it was either invalid or not active at time of sending.',
448
+						'event_espresso'
449
+					)
450
+				);
451
+		} else {
452
+			$sending_messenger = null;
453
+		}
454
+
455
+		if ($message_to_generate->get_EE_Message()->STS_ID() === EEM_Message::status_idle) {
456
+			$this->_init_queue_and_generator();
457
+			$this->_queue->add($message_to_generate->get_EE_Message());
458
+			$this->_queue->execute(false, $sending_messenger);
459
+			return $this->_queue;
460
+		} elseif ($message_to_generate->get_EE_Message()->STS_ID() === EEM_Message::status_incomplete) {
461
+			$generated_queue = $this->generate_and_return(array( $message_to_generate ));
462
+			$generated_queue->execute(false, $sending_messenger);
463
+			return $generated_queue;
464
+		}
465
+		return null;
466
+	}
467
+
468
+
469
+
470
+
471
+	/**
472
+	 * Creates mtg objects for all active messengers and queues for generation.
473
+	 * This method also calls the execute by priority method on the queue which will optionally kick off a new non-blocking
474
+	 * request to complete the action if the priority for the message requires immediate action.
475
+	 * @param string $message_type
476
+	 * @param mixed  $data   The data being used for generation.
477
+	 * @param bool   $persist   Whether to persist the queued messages to the db or not.
478
+	 */
479
+	public function generate_for_all_active_messengers($message_type, $data, $persist = true)
480
+	{
481
+		$messages_to_generate = $this->setup_mtgs_for_all_active_messengers($message_type, $data);
482
+		if ($persist) {
483
+			$this->batch_queue_for_generation_and_persist($messages_to_generate);
484
+			$this->_queue->initiate_request_by_priority();
485
+		} else {
486
+			$this->batch_queue_for_generation_no_persist($messages_to_generate);
487
+		}
488
+	}
489
+
490
+
491
+
492
+
493
+	/**
494
+	 * This simply loops through all active messengers and takes care of setting up the
495
+	 * EE_Message_To_Generate objects.
496
+	 * @param $message_type
497
+	 * @param $data
498
+	 *
499
+	 * @return EE_Message_To_Generate[]
500
+	 */
501
+	public function setup_mtgs_for_all_active_messengers($message_type, $data)
502
+	{
503
+		$messages_to_generate = array();
504
+		foreach ($this->_message_resource_manager->active_messengers() as $messenger_slug => $messenger_object) {
505
+			$message_to_generate = new EE_Message_To_Generate($messenger_slug, $message_type, $data);
506
+			if ($message_to_generate->valid()) {
507
+				$messages_to_generate[] = $message_to_generate;
508
+			}
509
+		}
510
+		return $messages_to_generate;
511
+	}
512
+
513
+
514
+
515
+
516
+	/**
517
+	 * This accepts an array of EE_Message::MSG_ID values and will use that to retrieve the objects from the database
518
+	 * and send.
519
+	 * @param array $message_ids
520
+	 */
521
+	public function setup_messages_from_ids_and_send($message_ids)
522
+	{
523
+		$this->_init_queue_and_generator();
524
+		$messages = EEM_Message::instance()->get_all(array(
525
+			array(
526
+				'MSG_ID' => array( 'IN', $message_ids ),
527
+				'STS_ID' => array(
528
+					'IN',
529
+					array_merge(
530
+						EEM_Message::instance()->stati_indicating_sent(),
531
+						array( EEM_Message::status_retry )
532
+					),
533
+				),
534
+			),
535
+		));
536
+		// set the Messages to resend.
537
+		foreach ($messages as $message) {
538
+			if ($message instanceof EE_Message) {
539
+				$message->set_STS_ID(EEM_Message::status_resend);
540
+				$this->_queue->add($message);
541
+			}
542
+		}
543
+
544
+		$this->_queue->initiate_request_by_priority('send');
545
+	}
546
+
547
+
548
+
549
+	/**
550
+	 * This method checks for registration IDs in the request via the given key and creates the messages to generate
551
+	 * objects from them, then returns the array of messages to generate objects.
552
+	 * Note, this sets up registrations for the registration family of message types.
553
+	 *
554
+	 * @param string $registration_ids_key  This is used to indicate what represents the registration ids in the request.
555
+	 *
556
+	 * @return EE_Message_To_Generate[]
557
+	 */
558
+	public function setup_messages_to_generate_from_registration_ids_in_request($registration_ids_key = '_REG_ID')
559
+	{
560
+		EE_Registry::instance()->load_core('Request_Handler');
561
+		EE_Registry::instance()->load_helper('MSG_Template');
562
+		$regs_to_send = array();
563
+		$regIDs = EE_Registry::instance()->REQ->get($registration_ids_key);
564
+		if (empty($regIDs)) {
565
+			EE_Error::add_error(__('Something went wrong because we\'re missing the registration ID', 'event_espresso'), __FILE__, __FUNCTION__, __LINE__);
566
+			return false;
567
+		}
568
+
569
+		// make sure is an array
570
+		$regIDs = is_array($regIDs) ? $regIDs : array( $regIDs );
571
+
572
+		foreach ($regIDs as $regID) {
573
+			$reg = EEM_Registration::instance()->get_one_by_ID($regID);
574
+			if (! $reg instanceof EE_Registration) {
575
+				EE_Error::add_error(sprintf(__('Unable to retrieve a registration object for the given reg id (%s)', 'event_espresso'), $regID));
576
+				return false;
577
+			}
578
+			$regs_to_send[ $reg->transaction_ID() ][ $reg->status_ID() ][] = $reg;
579
+		}
580
+
581
+		$messages_to_generate = array();
582
+
583
+		foreach ($regs_to_send as $status_group) {
584
+			foreach ($status_group as $status_id => $registrations) {
585
+				$message_type = EEH_MSG_Template::convert_reg_status_to_message_type($status_id);
586
+				if (! $message_type) {
587
+					continue;
588
+				}
589
+				$messages_to_generate = array_merge(
590
+					$messages_to_generate,
591
+					$this->setup_mtgs_for_all_active_messengers(
592
+						$message_type,
593
+						array( $registrations, $status_id )
594
+					)
595
+				);
596
+			}
597
+		}
598
+
599
+		return $messages_to_generate;
600
+	}
601 601
 }
Please login to merge, or discard this patch.
Spacing   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -165,7 +165,7 @@  discard block
 block discarded – undo
165 165
             }
166 166
 
167 167
             $this->_queue->lock_queue();
168
-            $messages = is_array($messages) ? $messages : array( $messages );
168
+            $messages = is_array($messages) ? $messages : array($messages);
169 169
             foreach ($messages as $message) {
170 170
                 if ($message instanceof EE_Message) {
171 171
                     $data = $message->all_extra_meta_array();
@@ -200,7 +200,7 @@  discard block
 block discarded – undo
200 200
             $this->_init_queue_and_generator();
201 201
         }
202 202
 
203
-        $messages = is_array($messages) ? $messages : array( $messages );
203
+        $messages = is_array($messages) ? $messages : array($messages);
204 204
 
205 205
         foreach ($messages as $message) {
206 206
             $this->_queue->add($message);
@@ -333,8 +333,8 @@  discard block
 block discarded – undo
333 333
     protected function _queue_for_generation_loop($messages_to_generate)
334 334
     {
335 335
         // make sure is in an array.
336
-        if (! is_array($messages_to_generate)) {
337
-            $messages_to_generate = array( $messages_to_generate );
336
+        if ( ! is_array($messages_to_generate)) {
337
+            $messages_to_generate = array($messages_to_generate);
338 338
         }
339 339
 
340 340
         foreach ($messages_to_generate as $message_to_generate) {
@@ -374,7 +374,7 @@  discard block
 block discarded – undo
374 374
      */
375 375
     public function generate_for_preview(EE_Message_To_Generate $message_to_generate, $test_send = false)
376 376
     {
377
-        if (! $message_to_generate->valid()) {
377
+        if ( ! $message_to_generate->valid()) {
378 378
             EE_Error::add_error(
379 379
                 __('Unable to generate preview because of invalid data', 'event_espresso'),
380 380
                 __FILE__,
@@ -391,7 +391,7 @@  discard block
 block discarded – undo
391 391
         if ($generated_queue->execute(false)) {
392 392
             // the first queue item should be the preview
393 393
             $generated_queue->get_message_repository()->rewind();
394
-            if (! $generated_queue->get_message_repository()->valid()) {
394
+            if ( ! $generated_queue->get_message_repository()->valid()) {
395 395
                 return $generated_queue;
396 396
             }
397 397
             return $generated_queue;
@@ -410,7 +410,7 @@  discard block
 block discarded – undo
410 410
      */
411 411
     public function queue_for_sending(EE_Message_To_Generate $message_to_generate)
412 412
     {
413
-        if (! $message_to_generate->valid()) {
413
+        if ( ! $message_to_generate->valid()) {
414 414
             return false;
415 415
         }
416 416
         $this->_init_queue_and_generator();
@@ -432,7 +432,7 @@  discard block
 block discarded – undo
432 432
      */
433 433
     public function generate_and_send_now(EE_Message_To_Generate $message_to_generate)
434 434
     {
435
-        if (! $message_to_generate->valid()) {
435
+        if ( ! $message_to_generate->valid()) {
436 436
             return null;
437 437
         }
438 438
         // is there supposed to be a sending messenger for this message?
@@ -458,7 +458,7 @@  discard block
 block discarded – undo
458 458
             $this->_queue->execute(false, $sending_messenger);
459 459
             return $this->_queue;
460 460
         } elseif ($message_to_generate->get_EE_Message()->STS_ID() === EEM_Message::status_incomplete) {
461
-            $generated_queue = $this->generate_and_return(array( $message_to_generate ));
461
+            $generated_queue = $this->generate_and_return(array($message_to_generate));
462 462
             $generated_queue->execute(false, $sending_messenger);
463 463
             return $generated_queue;
464 464
         }
@@ -523,12 +523,12 @@  discard block
 block discarded – undo
523 523
         $this->_init_queue_and_generator();
524 524
         $messages = EEM_Message::instance()->get_all(array(
525 525
             array(
526
-                'MSG_ID' => array( 'IN', $message_ids ),
526
+                'MSG_ID' => array('IN', $message_ids),
527 527
                 'STS_ID' => array(
528 528
                     'IN',
529 529
                     array_merge(
530 530
                         EEM_Message::instance()->stati_indicating_sent(),
531
-                        array( EEM_Message::status_retry )
531
+                        array(EEM_Message::status_retry)
532 532
                     ),
533 533
                 ),
534 534
             ),
@@ -567,15 +567,15 @@  discard block
 block discarded – undo
567 567
         }
568 568
 
569 569
         // make sure is an array
570
-        $regIDs = is_array($regIDs) ? $regIDs : array( $regIDs );
570
+        $regIDs = is_array($regIDs) ? $regIDs : array($regIDs);
571 571
 
572 572
         foreach ($regIDs as $regID) {
573 573
             $reg = EEM_Registration::instance()->get_one_by_ID($regID);
574
-            if (! $reg instanceof EE_Registration) {
574
+            if ( ! $reg instanceof EE_Registration) {
575 575
                 EE_Error::add_error(sprintf(__('Unable to retrieve a registration object for the given reg id (%s)', 'event_espresso'), $regID));
576 576
                 return false;
577 577
             }
578
-            $regs_to_send[ $reg->transaction_ID() ][ $reg->status_ID() ][] = $reg;
578
+            $regs_to_send[$reg->transaction_ID()][$reg->status_ID()][] = $reg;
579 579
         }
580 580
 
581 581
         $messages_to_generate = array();
@@ -583,14 +583,14 @@  discard block
 block discarded – undo
583 583
         foreach ($regs_to_send as $status_group) {
584 584
             foreach ($status_group as $status_id => $registrations) {
585 585
                 $message_type = EEH_MSG_Template::convert_reg_status_to_message_type($status_id);
586
-                if (! $message_type) {
586
+                if ( ! $message_type) {
587 587
                     continue;
588 588
                 }
589 589
                 $messages_to_generate = array_merge(
590 590
                     $messages_to_generate,
591 591
                     $this->setup_mtgs_for_all_active_messengers(
592 592
                         $message_type,
593
-                        array( $registrations, $status_id )
593
+                        array($registrations, $status_id)
594 594
                     )
595 595
                 );
596 596
             }
Please login to merge, or discard this patch.
core/libraries/messages/data_class/EE_Messages_Addressee.class.php 2 patches
Indentation   +295 added lines, -295 removed lines patch added patch discarded remove patch
@@ -15,299 +15,299 @@
 block discarded – undo
15 15
 {
16 16
 
17 17
 
18
-    /**
19
-     * Identifier properties for the recipient
20
-     */
21
-
22
-    /**
23
-     * if available we'll use this to set the fname and lname (admin)
24
-     *
25
-     * @var int
26
-     */
27
-    public $user_id;
28
-
29
-    /**
30
-     * this will always be the admin fname (set later via incoming user_id)
31
-     *
32
-     * @var string
33
-     */
34
-    public $fname;
35
-
36
-    /**
37
-     * this will always be the admin lname (set later via incoming user_id)
38
-     *
39
-     * @var string
40
-     */
41
-    public $lname;
42
-
43
-    /**
44
-     * @var int
45
-     */
46
-    public $primary_registration_id;
47
-
48
-    /**
49
-     * @var int
50
-     */
51
-    public $attendee_registration_id;
52
-
53
-    /**
54
-     * This is should represent the data object that can be used to regenerate this addressee if needed.
55
-     * It is saved to the MSG_recipient_ID column in the generated EE_Message using this data.
56
-     *
57
-     * @var int
58
-     */
59
-    public $recipient_id;
60
-
61
-    /**
62
-     * This represents the reference to the EE_Base_Class child that the $recipient_ID is for (eg. 'Registration',
63
-     * 'Attendee') It is saved to the MSG_recipient_type column in the generated EE_Message using this data.
64
-     *
65
-     * @var string
66
-     */
67
-    public $recipient_type;
68
-
69
-    /**
70
-     * communication related
71
-     */
72
-    /**
73
-     * @var string
74
-     */
75
-    public $attendee_email;
76
-
77
-    /**
78
-     * @var string
79
-     */
80
-    public $primary_attendee_email;
81
-
82
-    /**
83
-     * @var string
84
-     */
85
-    public $admin_email;
86
-
87
-
88
-
89
-    /**
90
-     * Attendee related
91
-     */
92
-
93
-    /**
94
-     * holds the attendee object for the primary attendee
95
-     *
96
-     * @var EE_Attendee
97
-     */
98
-    public $primary_att_obj;
99
-
100
-    /**
101
-     * holds the registration object for the primary attendee
102
-     *
103
-     * @var EE_Registration
104
-     */
105
-    public $primary_reg_obj;
106
-
107
-    /**
108
-     * holds the attendee object for an attendee
109
-     *
110
-     * @var EE_Attendee
111
-     */
112
-    public $att_obj;
113
-
114
-    /**
115
-     * holds the registration object for an attendee
116
-     *
117
-     * @var EE_Registration
118
-     */
119
-    public $reg_obj;
120
-
121
-    /**
122
-     * array of EE_Question objects (indexed by EE_Answer->ID())
123
-     *
124
-     * @var EE_Question[]
125
-     */
126
-    public $questions;
127
-
128
-    /**
129
-     * array of EE_Answer objects
130
-     *
131
-     * @var EE_Answer[]
132
-     */
133
-    public $answers;
134
-
135
-
136
-
137
-    /**
138
-     * event related
139
-     */
140
-
141
-    /**
142
-     * This will hold all event info/
143
-     * @var EE_Event[]
144
-     */
145
-    public $events;
146
-
147
-    /**
148
-     * holds all the attendees for an event.
149
-     *
150
-     * @var EE_Attendee[]
151
-     */
152
-    public $attendees;
153
-
154
-    /**
155
-     * holds all the purchased tickets for an event
156
-     *
157
-     * @var EE_Ticket[]
158
-     */
159
-    public $tickets;
160
-
161
-    /**
162
-     * holds an array of line items indexed by parent ticket line item ids and values are array of children of that
163
-     * line item
164
-     *
165
-     * @var EE_Line_Item[]
166
-     */
167
-    public $line_items_with_children;
168
-
169
-    /**
170
-     * holds all the datetimes accessed via the tickets purchased for the event
171
-     *
172
-     * @var EE_Datetime[]
173
-     */
174
-    public $datetimes;
175
-
176
-    /**
177
-     * holds all registrations for a transaction (with cached relations on that registration)
178
-     *
179
-     * @var EE_Registration[]
180
-     */
181
-    public $registrations;
182
-
183
-
184
-
185
-    /**
186
-     * txn related
187
-     */
188
-
189
-    /**
190
-     * @var array
191
-     */
192
-    public $billing;
193
-
194
-    /**
195
-     *total taxes
196
-     *
197
-     * @var array
198
-     */
199
-    public $taxes;
200
-
201
-    /**
202
-     * @var EE_Line_Item[]
203
-     */
204
-    public $tax_line_items;
205
-
206
-    /**
207
-     * @var EE_Line_Item[]
208
-     */
209
-    public $additional_line_items;
210
-
211
-    /**
212
-     * @var EE_Line_Item
213
-     */
214
-    public $grand_total_line_item;
215
-
216
-    /**
217
-     * @var EE_Transaction
218
-     */
219
-    public $txn;
220
-
221
-    /**
222
-     * @var EE_Payment
223
-     */
224
-    public $payment;
225
-
226
-    /**
227
-     * @var EE_Payment[]
228
-     */
229
-    public $payments;
230
-
231
-    /**
232
-     * @var EE_Transaction[]
233
-     */
234
-    public $txn_objs;
235
-
236
-    /**
237
-     * @var EE_Registration[]
238
-     */
239
-    public $reg_objs;
240
-
241
-    /**
242
-     * total number of ALL tickets purchased for the txn.
243
-     *
244
-     * @var int
245
-     */
246
-    public $total_ticket_count;
247
-
248
-
249
-
250
-    /**
251
-     * things that get set later by parsers
252
-     */
253
-
254
-    /**
255
-     * @var string $event_list
256
-     */
257
-    public $event_list;
258
-
259
-    /**
260
-     * @var string
261
-     */
262
-    public $attendee_list;
263
-
264
-
265
-
266
-    /**
267
-     * This just holds the incoming data
268
-     *
269
-     * @var array
270
-     */
271
-    protected $_data;
272
-
273
-
274
-
275
-    /**
276
-     * constructor
277
-     *
278
-     * @access public
279
-     * @param array $addressee_data We're expecting an incoming array of data that will be used to fill the properties
280
-     *                              for the object.
281
-     */
282
-    public function __construct($addressee_data)
283
-    {
284
-        $this->_data = $addressee_data;
285
-        $this->_set_properties();
286
-    }
287
-
288
-
289
-
290
-    /**
291
-     * This simply loops through the data and makes sure that each item is present in the incoming data.  If it is then
292
-     * it is assigned to the property.
293
-     *
294
-     * @access protected
295
-     * @return void.
296
-     */
297
-    protected function _set_properties()
298
-    {
299
-        foreach ($this->_data as $prop => $value) {
300
-            if (property_exists($this, $prop)) {
301
-                $this->{$prop} = $value;
302
-            }
303
-        }
304
-        // if user_id present we'll use this to set the fname and lname and admin_email.
305
-        if (! empty($this->user_id)) {
306
-            $this->user_id = (int) $this->user_id;
307
-            $user = get_userdata($this->user_id);
308
-            $this->fname = $user->user_firstname;
309
-            $this->lname = $user->user_lastname;
310
-            $this->admin_email = $user->user_email;
311
-        }
312
-    }
18
+	/**
19
+	 * Identifier properties for the recipient
20
+	 */
21
+
22
+	/**
23
+	 * if available we'll use this to set the fname and lname (admin)
24
+	 *
25
+	 * @var int
26
+	 */
27
+	public $user_id;
28
+
29
+	/**
30
+	 * this will always be the admin fname (set later via incoming user_id)
31
+	 *
32
+	 * @var string
33
+	 */
34
+	public $fname;
35
+
36
+	/**
37
+	 * this will always be the admin lname (set later via incoming user_id)
38
+	 *
39
+	 * @var string
40
+	 */
41
+	public $lname;
42
+
43
+	/**
44
+	 * @var int
45
+	 */
46
+	public $primary_registration_id;
47
+
48
+	/**
49
+	 * @var int
50
+	 */
51
+	public $attendee_registration_id;
52
+
53
+	/**
54
+	 * This is should represent the data object that can be used to regenerate this addressee if needed.
55
+	 * It is saved to the MSG_recipient_ID column in the generated EE_Message using this data.
56
+	 *
57
+	 * @var int
58
+	 */
59
+	public $recipient_id;
60
+
61
+	/**
62
+	 * This represents the reference to the EE_Base_Class child that the $recipient_ID is for (eg. 'Registration',
63
+	 * 'Attendee') It is saved to the MSG_recipient_type column in the generated EE_Message using this data.
64
+	 *
65
+	 * @var string
66
+	 */
67
+	public $recipient_type;
68
+
69
+	/**
70
+	 * communication related
71
+	 */
72
+	/**
73
+	 * @var string
74
+	 */
75
+	public $attendee_email;
76
+
77
+	/**
78
+	 * @var string
79
+	 */
80
+	public $primary_attendee_email;
81
+
82
+	/**
83
+	 * @var string
84
+	 */
85
+	public $admin_email;
86
+
87
+
88
+
89
+	/**
90
+	 * Attendee related
91
+	 */
92
+
93
+	/**
94
+	 * holds the attendee object for the primary attendee
95
+	 *
96
+	 * @var EE_Attendee
97
+	 */
98
+	public $primary_att_obj;
99
+
100
+	/**
101
+	 * holds the registration object for the primary attendee
102
+	 *
103
+	 * @var EE_Registration
104
+	 */
105
+	public $primary_reg_obj;
106
+
107
+	/**
108
+	 * holds the attendee object for an attendee
109
+	 *
110
+	 * @var EE_Attendee
111
+	 */
112
+	public $att_obj;
113
+
114
+	/**
115
+	 * holds the registration object for an attendee
116
+	 *
117
+	 * @var EE_Registration
118
+	 */
119
+	public $reg_obj;
120
+
121
+	/**
122
+	 * array of EE_Question objects (indexed by EE_Answer->ID())
123
+	 *
124
+	 * @var EE_Question[]
125
+	 */
126
+	public $questions;
127
+
128
+	/**
129
+	 * array of EE_Answer objects
130
+	 *
131
+	 * @var EE_Answer[]
132
+	 */
133
+	public $answers;
134
+
135
+
136
+
137
+	/**
138
+	 * event related
139
+	 */
140
+
141
+	/**
142
+	 * This will hold all event info/
143
+	 * @var EE_Event[]
144
+	 */
145
+	public $events;
146
+
147
+	/**
148
+	 * holds all the attendees for an event.
149
+	 *
150
+	 * @var EE_Attendee[]
151
+	 */
152
+	public $attendees;
153
+
154
+	/**
155
+	 * holds all the purchased tickets for an event
156
+	 *
157
+	 * @var EE_Ticket[]
158
+	 */
159
+	public $tickets;
160
+
161
+	/**
162
+	 * holds an array of line items indexed by parent ticket line item ids and values are array of children of that
163
+	 * line item
164
+	 *
165
+	 * @var EE_Line_Item[]
166
+	 */
167
+	public $line_items_with_children;
168
+
169
+	/**
170
+	 * holds all the datetimes accessed via the tickets purchased for the event
171
+	 *
172
+	 * @var EE_Datetime[]
173
+	 */
174
+	public $datetimes;
175
+
176
+	/**
177
+	 * holds all registrations for a transaction (with cached relations on that registration)
178
+	 *
179
+	 * @var EE_Registration[]
180
+	 */
181
+	public $registrations;
182
+
183
+
184
+
185
+	/**
186
+	 * txn related
187
+	 */
188
+
189
+	/**
190
+	 * @var array
191
+	 */
192
+	public $billing;
193
+
194
+	/**
195
+	 *total taxes
196
+	 *
197
+	 * @var array
198
+	 */
199
+	public $taxes;
200
+
201
+	/**
202
+	 * @var EE_Line_Item[]
203
+	 */
204
+	public $tax_line_items;
205
+
206
+	/**
207
+	 * @var EE_Line_Item[]
208
+	 */
209
+	public $additional_line_items;
210
+
211
+	/**
212
+	 * @var EE_Line_Item
213
+	 */
214
+	public $grand_total_line_item;
215
+
216
+	/**
217
+	 * @var EE_Transaction
218
+	 */
219
+	public $txn;
220
+
221
+	/**
222
+	 * @var EE_Payment
223
+	 */
224
+	public $payment;
225
+
226
+	/**
227
+	 * @var EE_Payment[]
228
+	 */
229
+	public $payments;
230
+
231
+	/**
232
+	 * @var EE_Transaction[]
233
+	 */
234
+	public $txn_objs;
235
+
236
+	/**
237
+	 * @var EE_Registration[]
238
+	 */
239
+	public $reg_objs;
240
+
241
+	/**
242
+	 * total number of ALL tickets purchased for the txn.
243
+	 *
244
+	 * @var int
245
+	 */
246
+	public $total_ticket_count;
247
+
248
+
249
+
250
+	/**
251
+	 * things that get set later by parsers
252
+	 */
253
+
254
+	/**
255
+	 * @var string $event_list
256
+	 */
257
+	public $event_list;
258
+
259
+	/**
260
+	 * @var string
261
+	 */
262
+	public $attendee_list;
263
+
264
+
265
+
266
+	/**
267
+	 * This just holds the incoming data
268
+	 *
269
+	 * @var array
270
+	 */
271
+	protected $_data;
272
+
273
+
274
+
275
+	/**
276
+	 * constructor
277
+	 *
278
+	 * @access public
279
+	 * @param array $addressee_data We're expecting an incoming array of data that will be used to fill the properties
280
+	 *                              for the object.
281
+	 */
282
+	public function __construct($addressee_data)
283
+	{
284
+		$this->_data = $addressee_data;
285
+		$this->_set_properties();
286
+	}
287
+
288
+
289
+
290
+	/**
291
+	 * This simply loops through the data and makes sure that each item is present in the incoming data.  If it is then
292
+	 * it is assigned to the property.
293
+	 *
294
+	 * @access protected
295
+	 * @return void.
296
+	 */
297
+	protected function _set_properties()
298
+	{
299
+		foreach ($this->_data as $prop => $value) {
300
+			if (property_exists($this, $prop)) {
301
+				$this->{$prop} = $value;
302
+			}
303
+		}
304
+		// if user_id present we'll use this to set the fname and lname and admin_email.
305
+		if (! empty($this->user_id)) {
306
+			$this->user_id = (int) $this->user_id;
307
+			$user = get_userdata($this->user_id);
308
+			$this->fname = $user->user_firstname;
309
+			$this->lname = $user->user_lastname;
310
+			$this->admin_email = $user->user_email;
311
+		}
312
+	}
313 313
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -302,7 +302,7 @@
 block discarded – undo
302 302
             }
303 303
         }
304 304
         // if user_id present we'll use this to set the fname and lname and admin_email.
305
-        if (! empty($this->user_id)) {
305
+        if ( ! empty($this->user_id)) {
306 306
             $this->user_id = (int) $this->user_id;
307 307
             $user = get_userdata($this->user_id);
308 308
             $this->fname = $user->user_firstname;
Please login to merge, or discard this patch.
core/libraries/messages/data_class/EE_Messages_REG_incoming_data.class.php 2 patches
Indentation   +132 added lines, -132 removed lines patch added patch discarded remove patch
@@ -18,136 +18,136 @@
 block discarded – undo
18 18
 
19 19
 
20 20
 
21
-    /**
22
-     * For the constructor of this special preview class.
23
-     *
24
-     * The data is expected to be an array that came from the $_POST and $_GET and should have at least one property from the list looked for.
25
-     *
26
-     * @param EE_Registration|array $data
27
-     * @throws \EE_Error
28
-     */
29
-    public function __construct($data)
30
-    {
31
-        $filtered_reg_status = null;
32
-
33
-        if (! is_array($data) && $data instanceof EE_Registration) {
34
-            $this->reg_obj = $data;
35
-        } else {
36
-            $this->reg_obj = is_array($data) && isset($data[0]) && $data[0] instanceof EE_Registration ? $data[0] : null;
37
-            $filtered_reg_status = is_array($data) && ! empty($data[1]) ? $data[1] : null;
38
-        }
39
-
40
-        if (! $this->reg_obj instanceof EE_Registration) {
41
-            throw new EE_Error(
42
-                sprintf(
43
-                    __('%1$s requires the incoming data argument to be an instance of %2$s or an array where the first value is an instance of %2$s', 'event_espresso'),
44
-                    'EE_Messages_REG_incoming_data',
45
-                    'EE_Registration'
46
-                )
47
-            );
48
-        }
49
-
50
-        $data = array(
51
-            'reg_obj' => $this->reg_obj,
52
-            'filtered_reg_status' => $filtered_reg_status
53
-            );
54
-
55
-        parent::__construct($data);
56
-    }
57
-
58
-    /**
59
-     * Returns database safe representation of the data later used to when instantiating this object.
60
-     *
61
-     * @param mixed $data The incoming data to be prepped.
62
-     *
63
-     * @return array   The prepped data for db
64
-     */
65
-    public static function convert_data_for_persistent_storage($data)
66
-    {
67
-        $prepped_data = array();
68
-        if (! is_array($data) && $data instanceof EE_Registration) {
69
-            $prepped_data['Registration'] = $data->ID();
70
-            return $prepped_data;
71
-        } elseif (! is_array($data)) {
72
-            return array();
73
-        } else {
74
-            if ($data[0] instanceof EE_Registration) {
75
-                $prepped_data['Registration'] = $data[0];
76
-            }
77
-            if (! empty($data[1])) {
78
-                $prepped_data['filter'] = $data[1];
79
-            }
80
-        }
81
-
82
-        return $prepped_data;
83
-    }
84
-
85
-    /**
86
-     * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
87
-     * can be sent into this method and converted back into the format used for instantiating with this data handler.
88
-     *
89
-     * @param $data
90
-     *
91
-     * @return mixed
92
-     */
93
-    public static function convert_data_from_persistent_storage($data)
94
-    {
95
-        $registration = null;
96
-        // $data['Registration'] could be either an ID (back compat) or a registration object (prepped using old system).
97
-        if (isset($data['Registration'])) {
98
-            $registration = $data['Registration'] instanceof EE_Registration
99
-                ? $data['Registration']
100
-                : EEM_Registration::instance()->get_one_by_ID($data['Registration']);
101
-        }
102
-        $prepped_data = array(
103
-            0 => $registration,
104
-            1 => isset($data['filter']) ? $data['filter'] : null
105
-        );
106
-        return $prepped_data;
107
-    }
108
-
109
-
110
-    /**
111
-     * This will just setup the _events property in the expected format.
112
-     * @return void
113
-     */
114
-    protected function _setup_data()
115
-    {
116
-
117
-        // now let's loop and set up the _events property.  At the same time we'll set up attendee properties.
118
-        $this->filtered_reg_status = $this->_data['filtered_reg_status'];
119
-        // get txn
120
-        $this->txn = $this->reg_obj->transaction();
121
-        // possible session stuff?
122
-        $session = $this->txn->session_data();
123
-        $session_data =  $session instanceof EE_Session ? $session->get_session_data() : array();
124
-
125
-        // other data from the session (if possible)
126
-        $this->user_id = isset($session_data['user_id']) ? $session_data['user_id'] : '';
127
-        $this->ip_address = isset($session_data['ip_address']) ? $session_data['ip_address'] : '';
128
-        $this->user_agent = isset($session_data['user_agent']) ? $session_data['user_agent'] : '';
129
-        $this->init_access = $this->last_access = '';
130
-
131
-        $this->payment = $this->txn->get_first_related('Payment');
132
-        // if there is no payments associated with the transaction
133
-        // then we just create a default payment object for potential parsing.
134
-        $this->payment = empty($this->payment)
135
-            ? EE_Payment::new_instance(
136
-                array(
137
-                    'STS_ID'               => EEM_Payment::status_id_pending,
138
-                    'PAY_timestamp'        => time(),
139
-                    'PMD_ID'               => $this->txn->payment_method_ID(),
140
-                    'PAY_gateway_response' => $this->txn->gateway_response_on_transaction(),
141
-                )
142
-            )
143
-            : $this->payment;
144
-
145
-
146
-        // get reg_objs for txn
147
-        $this->reg_objs = $this->txn->registrations();
148
-
149
-        // now we can set things up like we do for other handlers
150
-
151
-        $this->_assemble_data();
152
-    }
21
+	/**
22
+	 * For the constructor of this special preview class.
23
+	 *
24
+	 * The data is expected to be an array that came from the $_POST and $_GET and should have at least one property from the list looked for.
25
+	 *
26
+	 * @param EE_Registration|array $data
27
+	 * @throws \EE_Error
28
+	 */
29
+	public function __construct($data)
30
+	{
31
+		$filtered_reg_status = null;
32
+
33
+		if (! is_array($data) && $data instanceof EE_Registration) {
34
+			$this->reg_obj = $data;
35
+		} else {
36
+			$this->reg_obj = is_array($data) && isset($data[0]) && $data[0] instanceof EE_Registration ? $data[0] : null;
37
+			$filtered_reg_status = is_array($data) && ! empty($data[1]) ? $data[1] : null;
38
+		}
39
+
40
+		if (! $this->reg_obj instanceof EE_Registration) {
41
+			throw new EE_Error(
42
+				sprintf(
43
+					__('%1$s requires the incoming data argument to be an instance of %2$s or an array where the first value is an instance of %2$s', 'event_espresso'),
44
+					'EE_Messages_REG_incoming_data',
45
+					'EE_Registration'
46
+				)
47
+			);
48
+		}
49
+
50
+		$data = array(
51
+			'reg_obj' => $this->reg_obj,
52
+			'filtered_reg_status' => $filtered_reg_status
53
+			);
54
+
55
+		parent::__construct($data);
56
+	}
57
+
58
+	/**
59
+	 * Returns database safe representation of the data later used to when instantiating this object.
60
+	 *
61
+	 * @param mixed $data The incoming data to be prepped.
62
+	 *
63
+	 * @return array   The prepped data for db
64
+	 */
65
+	public static function convert_data_for_persistent_storage($data)
66
+	{
67
+		$prepped_data = array();
68
+		if (! is_array($data) && $data instanceof EE_Registration) {
69
+			$prepped_data['Registration'] = $data->ID();
70
+			return $prepped_data;
71
+		} elseif (! is_array($data)) {
72
+			return array();
73
+		} else {
74
+			if ($data[0] instanceof EE_Registration) {
75
+				$prepped_data['Registration'] = $data[0];
76
+			}
77
+			if (! empty($data[1])) {
78
+				$prepped_data['filter'] = $data[1];
79
+			}
80
+		}
81
+
82
+		return $prepped_data;
83
+	}
84
+
85
+	/**
86
+	 * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
87
+	 * can be sent into this method and converted back into the format used for instantiating with this data handler.
88
+	 *
89
+	 * @param $data
90
+	 *
91
+	 * @return mixed
92
+	 */
93
+	public static function convert_data_from_persistent_storage($data)
94
+	{
95
+		$registration = null;
96
+		// $data['Registration'] could be either an ID (back compat) or a registration object (prepped using old system).
97
+		if (isset($data['Registration'])) {
98
+			$registration = $data['Registration'] instanceof EE_Registration
99
+				? $data['Registration']
100
+				: EEM_Registration::instance()->get_one_by_ID($data['Registration']);
101
+		}
102
+		$prepped_data = array(
103
+			0 => $registration,
104
+			1 => isset($data['filter']) ? $data['filter'] : null
105
+		);
106
+		return $prepped_data;
107
+	}
108
+
109
+
110
+	/**
111
+	 * This will just setup the _events property in the expected format.
112
+	 * @return void
113
+	 */
114
+	protected function _setup_data()
115
+	{
116
+
117
+		// now let's loop and set up the _events property.  At the same time we'll set up attendee properties.
118
+		$this->filtered_reg_status = $this->_data['filtered_reg_status'];
119
+		// get txn
120
+		$this->txn = $this->reg_obj->transaction();
121
+		// possible session stuff?
122
+		$session = $this->txn->session_data();
123
+		$session_data =  $session instanceof EE_Session ? $session->get_session_data() : array();
124
+
125
+		// other data from the session (if possible)
126
+		$this->user_id = isset($session_data['user_id']) ? $session_data['user_id'] : '';
127
+		$this->ip_address = isset($session_data['ip_address']) ? $session_data['ip_address'] : '';
128
+		$this->user_agent = isset($session_data['user_agent']) ? $session_data['user_agent'] : '';
129
+		$this->init_access = $this->last_access = '';
130
+
131
+		$this->payment = $this->txn->get_first_related('Payment');
132
+		// if there is no payments associated with the transaction
133
+		// then we just create a default payment object for potential parsing.
134
+		$this->payment = empty($this->payment)
135
+			? EE_Payment::new_instance(
136
+				array(
137
+					'STS_ID'               => EEM_Payment::status_id_pending,
138
+					'PAY_timestamp'        => time(),
139
+					'PMD_ID'               => $this->txn->payment_method_ID(),
140
+					'PAY_gateway_response' => $this->txn->gateway_response_on_transaction(),
141
+				)
142
+			)
143
+			: $this->payment;
144
+
145
+
146
+		// get reg_objs for txn
147
+		$this->reg_objs = $this->txn->registrations();
148
+
149
+		// now we can set things up like we do for other handlers
150
+
151
+		$this->_assemble_data();
152
+	}
153 153
 }
Please login to merge, or discard this patch.
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -30,14 +30,14 @@  discard block
 block discarded – undo
30 30
     {
31 31
         $filtered_reg_status = null;
32 32
 
33
-        if (! is_array($data) && $data instanceof EE_Registration) {
33
+        if ( ! is_array($data) && $data instanceof EE_Registration) {
34 34
             $this->reg_obj = $data;
35 35
         } else {
36 36
             $this->reg_obj = is_array($data) && isset($data[0]) && $data[0] instanceof EE_Registration ? $data[0] : null;
37 37
             $filtered_reg_status = is_array($data) && ! empty($data[1]) ? $data[1] : null;
38 38
         }
39 39
 
40
-        if (! $this->reg_obj instanceof EE_Registration) {
40
+        if ( ! $this->reg_obj instanceof EE_Registration) {
41 41
             throw new EE_Error(
42 42
                 sprintf(
43 43
                     __('%1$s requires the incoming data argument to be an instance of %2$s or an array where the first value is an instance of %2$s', 'event_espresso'),
@@ -65,16 +65,16 @@  discard block
 block discarded – undo
65 65
     public static function convert_data_for_persistent_storage($data)
66 66
     {
67 67
         $prepped_data = array();
68
-        if (! is_array($data) && $data instanceof EE_Registration) {
68
+        if ( ! is_array($data) && $data instanceof EE_Registration) {
69 69
             $prepped_data['Registration'] = $data->ID();
70 70
             return $prepped_data;
71
-        } elseif (! is_array($data)) {
71
+        } elseif ( ! is_array($data)) {
72 72
             return array();
73 73
         } else {
74 74
             if ($data[0] instanceof EE_Registration) {
75 75
                 $prepped_data['Registration'] = $data[0];
76 76
             }
77
-            if (! empty($data[1])) {
77
+            if ( ! empty($data[1])) {
78 78
                 $prepped_data['filter'] = $data[1];
79 79
             }
80 80
         }
@@ -120,7 +120,7 @@  discard block
 block discarded – undo
120 120
         $this->txn = $this->reg_obj->transaction();
121 121
         // possible session stuff?
122 122
         $session = $this->txn->session_data();
123
-        $session_data =  $session instanceof EE_Session ? $session->get_session_data() : array();
123
+        $session_data = $session instanceof EE_Session ? $session->get_session_data() : array();
124 124
 
125 125
         // other data from the session (if possible)
126 126
         $this->user_id = isset($session_data['user_id']) ? $session_data['user_id'] : '';
Please login to merge, or discard this patch.
libraries/messages/data_class/EE_Messages_Preview_incoming_data.class.php 2 patches
Spacing   +65 added lines, -65 removed lines patch added patch discarded remove patch
@@ -98,71 +98,71 @@  discard block
 block discarded – undo
98 98
         // we'll actually use the generated line_item identifiers for our loop
99 99
         $dtts = $tkts = array();
100 100
         foreach ($events as $id => $event) {
101
-            if (! $event instanceof EE_Event) {
101
+            if ( ! $event instanceof EE_Event) {
102 102
                 continue;
103 103
             }
104
-            $this->_events[ $id ]['ID']       = $id;
105
-            $this->_events[ $id ]['name']     = $event->get('EVT_name');
104
+            $this->_events[$id]['ID']       = $id;
105
+            $this->_events[$id]['name']     = $event->get('EVT_name');
106 106
             $datetime                       = $event->get_first_related('Datetime');
107 107
             $tickets                        = $datetime instanceof EE_Datetime ? $datetime->get_many_related(
108 108
                 'Ticket',
109 109
                 array('default_where_conditions' => 'none')
110 110
             ) : array();
111
-            $this->_events[ $id ]['event']    = $event;
112
-            $this->_events[ $id ]['reg_objs'] = array();
113
-            $this->_events[ $id ]['tkt_objs'] = $tickets;
114
-            $this->_events[ $id ]['dtt_objs'] = array();
111
+            $this->_events[$id]['event']    = $event;
112
+            $this->_events[$id]['reg_objs'] = array();
113
+            $this->_events[$id]['tkt_objs'] = $tickets;
114
+            $this->_events[$id]['dtt_objs'] = array();
115 115
             
116 116
             $dttcache = array();
117 117
             $tkts     = array();
118 118
             foreach ($tickets as $ticket) {
119
-                if (! $ticket instanceof EE_Ticket) {
119
+                if ( ! $ticket instanceof EE_Ticket) {
120 120
                     continue;
121 121
                 }
122
-                $reldatetime                     = $ticket->datetimes();
123
-                $tkts[ $ticket->ID() ]             = array();
124
-                $tkts[ $ticket->ID() ]['ticket']   = $ticket;
125
-                $tkts[ $ticket->ID() ]['dtt_objs'] = $reldatetime;
126
-                $tkts[ $ticket->ID() ]['att_objs'] = $attendees;
127
-                $tkts[ $ticket->ID() ]['count']    = count($attendees);
128
-                $tkts[ $ticket->ID() ]['EE_Event'] = $event;
122
+                $reldatetime = $ticket->datetimes();
123
+                $tkts[$ticket->ID()]             = array();
124
+                $tkts[$ticket->ID()]['ticket']   = $ticket;
125
+                $tkts[$ticket->ID()]['dtt_objs'] = $reldatetime;
126
+                $tkts[$ticket->ID()]['att_objs'] = $attendees;
127
+                $tkts[$ticket->ID()]['count']    = count($attendees);
128
+                $tkts[$ticket->ID()]['EE_Event'] = $event;
129 129
                 foreach ($reldatetime as $datetime) {
130
-                    if ($datetime instanceof EE_Datetime && ! isset($dtts[ $datetime->ID() ])) {
131
-                        $this->_events[ $id ]['dtt_objs'][ $datetime->ID() ] = $datetime;
132
-                        $dtts[ $datetime->ID() ]['datetime']               = $datetime;
133
-                        $dtts[ $datetime->ID() ]['tkt_objs'][]             = $ticket;
134
-                        $dtts[ $datetime->ID() ]['evt_objs'][]             = $event;
135
-                        $dttcache[ $datetime->ID() ]                       = $datetime;
130
+                    if ($datetime instanceof EE_Datetime && ! isset($dtts[$datetime->ID()])) {
131
+                        $this->_events[$id]['dtt_objs'][$datetime->ID()] = $datetime;
132
+                        $dtts[$datetime->ID()]['datetime']               = $datetime;
133
+                        $dtts[$datetime->ID()]['tkt_objs'][]             = $ticket;
134
+                        $dtts[$datetime->ID()]['evt_objs'][]             = $event;
135
+                        $dttcache[$datetime->ID()]                       = $datetime;
136 136
                     }
137 137
                 }
138 138
             }
139 139
             
140
-            $this->_events[ $id ]['total_attendees'] = count($attendees);
141
-            $this->_events[ $id ]['att_objs']        = $attendees;
140
+            $this->_events[$id]['total_attendees'] = count($attendees);
141
+            $this->_events[$id]['att_objs']        = $attendees;
142 142
             
143 143
             // let's also setup the dummy attendees property!
144 144
             foreach ($attendees as $att_key => $attendee) {
145
-                if (! $attendee instanceof EE_Attendee) {
145
+                if ( ! $attendee instanceof EE_Attendee) {
146 146
                     continue;
147 147
                 }
148
-                $this->_attendees[ $att_key ]['line_ref'][] = $id;  // so later it can be determined what events this attendee registered for!
149
-                $this->_attendees[ $att_key ]['evt_objs'][] = $event;
150
-                $this->_attendees[ $att_key ]['att_obj']    = $attendee;
148
+                $this->_attendees[$att_key]['line_ref'][] = $id; // so later it can be determined what events this attendee registered for!
149
+                $this->_attendees[$att_key]['evt_objs'][] = $event;
150
+                $this->_attendees[$att_key]['att_obj']    = $attendee;
151 151
                 // $this->_attendees[$att_key]['registration_id'] = 0;
152
-                $this->_attendees[ $att_key ]['attendee_email'] = $attendee->email();
153
-                $this->_attendees[ $att_key ]['tkt_objs']       = $tickets;
152
+                $this->_attendees[$att_key]['attendee_email'] = $attendee->email();
153
+                $this->_attendees[$att_key]['tkt_objs']       = $tickets;
154 154
                 if ($att_key == 999999991) {
155
-                    $this->_attendees[ $att_key ]['ans_objs'][999]  = $answers_n_questions['answers'][999];
156
-                    $this->_attendees[ $att_key ]['ans_objs'][1002] = $answers_n_questions['answers'][1002];
157
-                    $this->_attendees[ $att_key ]['ans_objs'][1005] = $answers_n_questions['answers'][1005];
155
+                    $this->_attendees[$att_key]['ans_objs'][999]  = $answers_n_questions['answers'][999];
156
+                    $this->_attendees[$att_key]['ans_objs'][1002] = $answers_n_questions['answers'][1002];
157
+                    $this->_attendees[$att_key]['ans_objs'][1005] = $answers_n_questions['answers'][1005];
158 158
                 } elseif ($att_key == 999999992) {
159
-                    $this->_attendees[ $att_key ]['ans_objs'][1000] = $answers_n_questions['answers'][1000];
160
-                    $this->_attendees[ $att_key ]['ans_objs'][1003] = $answers_n_questions['answers'][1003];
161
-                    $this->_attendees[ $att_key ]['ans_objs'][1006] = $answers_n_questions['answers'][1006];
159
+                    $this->_attendees[$att_key]['ans_objs'][1000] = $answers_n_questions['answers'][1000];
160
+                    $this->_attendees[$att_key]['ans_objs'][1003] = $answers_n_questions['answers'][1003];
161
+                    $this->_attendees[$att_key]['ans_objs'][1006] = $answers_n_questions['answers'][1006];
162 162
                 } elseif ($att_key == 999999993) {
163
-                    $this->_attendees[ $att_key ]['ans_objs'][1001] = $answers_n_questions['answers'][1001];
164
-                    $this->_attendees[ $att_key ]['ans_objs'][1004] = $answers_n_questions['answers'][1004];
165
-                    $this->_attendees[ $att_key ]['ans_objs'][1007] = $answers_n_questions['answers'][1007];
163
+                    $this->_attendees[$att_key]['ans_objs'][1001] = $answers_n_questions['answers'][1001];
164
+                    $this->_attendees[$att_key]['ans_objs'][1004] = $answers_n_questions['answers'][1004];
165
+                    $this->_attendees[$att_key]['ans_objs'][1007] = $answers_n_questions['answers'][1007];
166 166
                 }
167 167
             }
168 168
         }
@@ -261,7 +261,7 @@  discard block
 block discarded – undo
261 261
             /** @var $email string */
262 262
             /** @var $phone string */
263 263
             /** @var $attid string */
264
-            $attendees[ $attid ] = EE_Attendee::new_instance(
264
+            $attendees[$attid] = EE_Attendee::new_instance(
265 265
                 array(
266 266
                     'ATT_fname'    => $fname,
267 267
                     'ATT_lname'    => $lname,
@@ -367,8 +367,8 @@  discard block
 block discarded – undo
367 367
         $qsts = array();
368 368
         // first the questions
369 369
         foreach ($quests_array as $qst) {
370
-            $qstobj                  = array_combine($qst_columns, $qst);
371
-            $qsts[ $qstobj['QST_ID'] ] = EE_Question::new_instance($qstobj);
370
+            $qstobj = array_combine($qst_columns, $qst);
371
+            $qsts[$qstobj['QST_ID']] = EE_Question::new_instance($qstobj);
372 372
         }
373 373
         
374 374
         // now the answers (and we'll setup our arrays)
@@ -376,8 +376,8 @@  discard block
 block discarded – undo
376 376
         foreach ($ans_array as $ans) {
377 377
             $ansobj                             = array_combine($ans_columns, $ans);
378 378
             $ansobj                             = EE_Answer::new_instance($ansobj);
379
-            $q_n_as['answers'][ $ansobj->ID() ]   = $ansobj;
380
-            $q_n_as['questions'][ $ansobj->ID() ] = $qsts[ $ansobj->get('QST_ID') ];
379
+            $q_n_as['answers'][$ansobj->ID()]   = $ansobj;
380
+            $q_n_as['questions'][$ansobj->ID()] = $qsts[$ansobj->get('QST_ID')];
381 381
         }
382 382
         
383 383
         return $q_n_as;
@@ -461,11 +461,11 @@  discard block
 block discarded – undo
461 461
             $regtxn = $this->txn->ID();
462 462
             $regcnt = 1;
463 463
             foreach ($attendee['line_ref'] as $evtid) {
464
-                foreach ($this->_events[ $evtid ]['tkt_objs'] as $ticket) {
465
-                    if (! $ticket instanceof EE_Ticket) {
464
+                foreach ($this->_events[$evtid]['tkt_objs'] as $ticket) {
465
+                    if ( ! $ticket instanceof EE_Ticket) {
466 466
                         continue;
467 467
                     }
468
-                    $reg_array                                        = array(
468
+                    $reg_array = array(
469 469
                         'EVT_ID'           => $evtid,
470 470
                         'ATT_ID'           => $regatt,
471 471
                         'TXN_ID'           => $regtxn,
@@ -474,18 +474,18 @@  discard block
 block discarded – undo
474 474
                         'REG_date'         => time(),
475 475
                         'REG_final_price'  => $ticket->get('TKT_price'),
476 476
                         'REG_session'      => 'dummy_session_id',
477
-                        'REG_code'         => $regid . '-dummy-generated-code',
478
-                        'REG_url_link'     => $regcnt . '-daafpapasdlfakasdfpqasdfasdf',
477
+                        'REG_code'         => $regid.'-dummy-generated-code',
478
+                        'REG_url_link'     => $regcnt.'-daafpapasdlfakasdfpqasdfasdf',
479 479
                         'REG_count'        => $regcnt,
480
-                        'REG_group_size'   => $this->_events[ $evtid ]['total_attendees'],
480
+                        'REG_group_size'   => $this->_events[$evtid]['total_attendees'],
481 481
                         'REG_att_is_going' => true,
482 482
                         'REG_ID'           => $regid
483 483
                     );
484 484
                     $REG_OBJ                                          = EE_Registration::new_instance($reg_array);
485
-                    $this->_attendees[ $key ]['reg_objs'][ $regid ]       = $REG_OBJ;
486
-                    $this->_events[ $evtid ]['reg_objs'][]              = $REG_OBJ;
485
+                    $this->_attendees[$key]['reg_objs'][$regid]       = $REG_OBJ;
486
+                    $this->_events[$evtid]['reg_objs'][] = $REG_OBJ;
487 487
                     $this->reg_objs[]                                 = $REG_OBJ;
488
-                    $this->tickets[ $ticket->ID() ]['reg_objs'][ $regid ] = $REG_OBJ;
488
+                    $this->tickets[$ticket->ID()]['reg_objs'][$regid] = $REG_OBJ;
489 489
                     
490 490
                     $regcnt++;
491 491
                     $regid++;
@@ -523,18 +523,18 @@  discard block
 block discarded – undo
523 523
         $event_line_items = EEH_Line_Item::get_pre_tax_subtotal($line_item_total)->children();
524 524
         $line_items       = array();
525 525
         foreach ($event_line_items as $line_id => $line_item) {
526
-            if (! $line_item instanceof EE_Line_Item || $line_item->OBJ_type() !== 'Event') {
526
+            if ( ! $line_item instanceof EE_Line_Item || $line_item->OBJ_type() !== 'Event') {
527 527
                 continue;
528 528
             }
529 529
             $ticket_line_items = EEH_Line_Item::get_ticket_line_items($line_item);
530 530
             foreach ($ticket_line_items as $ticket_line_id => $ticket_line_item) {
531
-                if (! $ticket_line_item instanceof EE_Line_Item) {
531
+                if ( ! $ticket_line_item instanceof EE_Line_Item) {
532 532
                     continue;
533 533
                 }
534
-                $this->tickets[ $ticket_line_item->OBJ_ID() ]['line_item']      = $ticket_line_item;
535
-                $this->tickets[ $ticket_line_item->OBJ_ID() ]['sub_line_items'] = $ticket_line_item->children();
536
-                $line_items[ $ticket_line_item->ID() ]['children']              = $ticket_line_item->children();
537
-                $line_items[ $ticket_line_item->ID() ]['EE_Ticket']             = $this->tickets[ $ticket_line_item->OBJ_ID() ]['ticket'];
534
+                $this->tickets[$ticket_line_item->OBJ_ID()]['line_item']      = $ticket_line_item;
535
+                $this->tickets[$ticket_line_item->OBJ_ID()]['sub_line_items'] = $ticket_line_item->children();
536
+                $line_items[$ticket_line_item->ID()]['children']              = $ticket_line_item->children();
537
+                $line_items[$ticket_line_item->ID()]['EE_Ticket']             = $this->tickets[$ticket_line_item->OBJ_ID()]['ticket'];
538 538
             }
539 539
         }
540 540
         
@@ -549,15 +549,15 @@  discard block
 block discarded – undo
549 549
         
550 550
         // add additional details for each registration
551 551
         foreach ($this->reg_objs as $reg) {
552
-            if (! $reg instanceof EE_Registration) {
552
+            if ( ! $reg instanceof EE_Registration) {
553 553
                 continue;
554 554
             }
555
-            $this->_registrations[ $reg->ID() ]['tkt_obj']  = $this->tickets[ $reg->get('TKT_ID') ]['ticket'];
556
-            $this->_registrations[ $reg->ID() ]['evt_obj']  = $this->_events[ $reg->get('EVT_ID') ]['event'];
557
-            $this->_registrations[ $reg->ID() ]['reg_obj']  = $reg;
558
-            $this->_registrations[ $reg->ID() ]['ans_objs'] = $this->_attendees[ $reg->get('ATT_ID') ]['ans_objs'];
559
-            $this->_registrations[ $reg->ID() ]['att_obj']  = $this->_attendees[ $reg->get('ATT_ID') ]['att_obj'];
560
-            $this->_registrations[ $reg->ID() ]['dtt_objs'] = $this->tickets[ $reg->get('TKT_ID') ]['dtt_objs'];
555
+            $this->_registrations[$reg->ID()]['tkt_obj']  = $this->tickets[$reg->get('TKT_ID')]['ticket'];
556
+            $this->_registrations[$reg->ID()]['evt_obj']  = $this->_events[$reg->get('EVT_ID')]['event'];
557
+            $this->_registrations[$reg->ID()]['reg_obj']  = $reg;
558
+            $this->_registrations[$reg->ID()]['ans_objs'] = $this->_attendees[$reg->get('ATT_ID')]['ans_objs'];
559
+            $this->_registrations[$reg->ID()]['att_obj']  = $this->_attendees[$reg->get('ATT_ID')]['att_obj'];
560
+            $this->_registrations[$reg->ID()]['dtt_objs'] = $this->tickets[$reg->get('TKT_ID')]['dtt_objs'];
561 561
         }
562 562
         
563 563
         
Please login to merge, or discard this patch.
Indentation   +580 added lines, -580 removed lines patch added patch discarded remove patch
@@ -18,584 +18,584 @@
 block discarded – undo
18 18
 class EE_Messages_Preview_incoming_data extends EE_Messages_incoming_data
19 19
 {
20 20
 
21
-    // some specific properties we need for this class
22
-    private $_events = array();
23
-    private $_attendees = array();
24
-    private $_registrations = array();
25
-
26
-
27
-    /**
28
-     * For the constructor of this special preview class.  We're either looking for an event id or empty data.  If we
29
-     * have an event id (or ids) then we'll use that as the source for the "dummy" data.  If the data is empty then
30
-     * we'll get the first three published events from the users database and use that as a source.
31
-     *
32
-     * @param array $data
33
-     */
34
-    public function __construct($data = array())
35
-    {
36
-        $this->_data = isset($data['event_ids']) ? $data['event_ids'] : array();
37
-        $this->_setup_attendees_events();
38
-        parent::__construct($data);
39
-    }
40
-
41
-
42
-    /**
43
-     * Returns database safe representation of the data later used to when instantiating this object.
44
-     *
45
-     * @param array $data The incoming data to be prepped.
46
-     *
47
-     * @return array   The prepped data for db
48
-     */
49
-    public static function convert_data_for_persistent_storage($data)
50
-    {
51
-        return $data;
52
-    }
53
-
54
-
55
-    /**
56
-     * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
57
-     * can be sent into this method and converted back into the format used for instantiating with this data handler.
58
-     *
59
-     * @param array $data
60
-     *
61
-     * @return array
62
-     */
63
-    public static function convert_data_from_persistent_storage($data)
64
-    {
65
-        return $data;
66
-    }
67
-
68
-
69
-    /**
70
-     * This will just setup the _events property in the expected format.
71
-     *
72
-     * @throws \EE_Error
73
-     */
74
-    private function _setup_attendees_events()
75
-    {
76
-
77
-        // setup some attendee objects
78
-        $attendees = $this->_get_some_attendees();
79
-
80
-        // if empty $data we'll do a query to get some events from the server. otherwise we'll retrieve the event data for the given ids.
81
-        $events = $this->_get_some_events($this->_data);
82
-
83
-        $answers_n_questions = $this->_get_some_q_and_as();
84
-
85
-        if (count($events) < 1) {
86
-            throw new EE_Error(__(
87
-                'We can\'t generate a preview for you because there are no active events in your database',
88
-                'event_espresso'
89
-            ));
90
-        }
91
-
92
-
93
-        // now let's loop and set up the _events property.  At the same time we'll set up attendee properties.
94
-
95
-
96
-        // we'll actually use the generated line_item identifiers for our loop
97
-        $dtts = $tkts = array();
98
-        foreach ($events as $id => $event) {
99
-            if (! $event instanceof EE_Event) {
100
-                continue;
101
-            }
102
-            $this->_events[ $id ]['ID']       = $id;
103
-            $this->_events[ $id ]['name']     = $event->get('EVT_name');
104
-            $datetime                       = $event->get_first_related('Datetime');
105
-            $tickets                        = $datetime instanceof EE_Datetime ? $datetime->get_many_related(
106
-                'Ticket',
107
-                array('default_where_conditions' => 'none')
108
-            ) : array();
109
-            $this->_events[ $id ]['event']    = $event;
110
-            $this->_events[ $id ]['reg_objs'] = array();
111
-            $this->_events[ $id ]['tkt_objs'] = $tickets;
112
-            $this->_events[ $id ]['dtt_objs'] = array();
113
-
114
-            $dttcache = array();
115
-            $tkts     = array();
116
-            foreach ($tickets as $ticket) {
117
-                if (! $ticket instanceof EE_Ticket) {
118
-                    continue;
119
-                }
120
-                $reldatetime                     = $ticket->datetimes();
121
-                $tkts[ $ticket->ID() ]             = array();
122
-                $tkts[ $ticket->ID() ]['ticket']   = $ticket;
123
-                $tkts[ $ticket->ID() ]['dtt_objs'] = $reldatetime;
124
-                $tkts[ $ticket->ID() ]['att_objs'] = $attendees;
125
-                $tkts[ $ticket->ID() ]['count']    = count($attendees);
126
-                $tkts[ $ticket->ID() ]['EE_Event'] = $event;
127
-                foreach ($reldatetime as $datetime) {
128
-                    if ($datetime instanceof EE_Datetime && ! isset($dtts[ $datetime->ID() ])) {
129
-                        $this->_events[ $id ]['dtt_objs'][ $datetime->ID() ] = $datetime;
130
-                        $dtts[ $datetime->ID() ]['datetime']               = $datetime;
131
-                        $dtts[ $datetime->ID() ]['tkt_objs'][]             = $ticket;
132
-                        $dtts[ $datetime->ID() ]['evt_objs'][]             = $event;
133
-                        $dttcache[ $datetime->ID() ]                       = $datetime;
134
-                    }
135
-                }
136
-            }
137
-
138
-            $this->_events[ $id ]['total_attendees'] = count($attendees);
139
-            $this->_events[ $id ]['att_objs']        = $attendees;
140
-
141
-            // let's also setup the dummy attendees property!
142
-            foreach ($attendees as $att_key => $attendee) {
143
-                if (! $attendee instanceof EE_Attendee) {
144
-                    continue;
145
-                }
146
-                $this->_attendees[ $att_key ]['line_ref'][] = $id;  // so later it can be determined what events this attendee registered for!
147
-                $this->_attendees[ $att_key ]['evt_objs'][] = $event;
148
-                $this->_attendees[ $att_key ]['att_obj']    = $attendee;
149
-                // $this->_attendees[$att_key]['registration_id'] = 0;
150
-                $this->_attendees[ $att_key ]['attendee_email'] = $attendee->email();
151
-                $this->_attendees[ $att_key ]['tkt_objs']       = $tickets;
152
-                if ($att_key == 999999991) {
153
-                    $this->_attendees[ $att_key ]['ans_objs'][999]  = $answers_n_questions['answers'][999];
154
-                    $this->_attendees[ $att_key ]['ans_objs'][1002] = $answers_n_questions['answers'][1002];
155
-                    $this->_attendees[ $att_key ]['ans_objs'][1005] = $answers_n_questions['answers'][1005];
156
-                } elseif ($att_key == 999999992) {
157
-                    $this->_attendees[ $att_key ]['ans_objs'][1000] = $answers_n_questions['answers'][1000];
158
-                    $this->_attendees[ $att_key ]['ans_objs'][1003] = $answers_n_questions['answers'][1003];
159
-                    $this->_attendees[ $att_key ]['ans_objs'][1006] = $answers_n_questions['answers'][1006];
160
-                } elseif ($att_key == 999999993) {
161
-                    $this->_attendees[ $att_key ]['ans_objs'][1001] = $answers_n_questions['answers'][1001];
162
-                    $this->_attendees[ $att_key ]['ans_objs'][1004] = $answers_n_questions['answers'][1004];
163
-                    $this->_attendees[ $att_key ]['ans_objs'][1007] = $answers_n_questions['answers'][1007];
164
-                }
165
-            }
166
-        }
167
-
168
-        $this->tickets            = $tkts;
169
-        $this->datetimes          = $dtts;
170
-        $this->answers            = $answers_n_questions['answers'];
171
-        $this->questions          = $answers_n_questions['questions'];
172
-        $this->total_ticket_count = count($tkts) * count($this->_attendees);
173
-    }
174
-
175
-
176
-    /**
177
-     * This just returns an array of dummy attendee objects that we'll use to attach to events for our preview data
178
-     *
179
-     * @access private
180
-     * @return array an array of attendee objects
181
-     */
182
-    private function _get_some_attendees()
183
-    {
184
-        // let's just setup a dummy array of various attendee details
185
-        $dummy_attendees = array(
186
-            0 => array(
187
-                'Luke',
188
-                'Skywalker',
189
-                '[email protected]',
190
-                '804 Bantha Dr.',
191
-                'Complex 8',
192
-                'Mos Eisley',
193
-                32,
194
-                'US',
195
-                'f0r3e',
196
-                '222-333-4763',
197
-                false,
198
-                '999999991'
199
-            ),
200
-            1 => array(
201
-                'Princess',
202
-                'Leia',
203
-                '[email protected]',
204
-                '1456 Valley Way Boulevard',
205
-                'Suite 9',
206
-                'Alderaan',
207
-                15,
208
-                'US',
209
-                'c1h2c',
210
-                '78-123-111-1111',
211
-                false,
212
-                '999999992'
213
-            ),
214
-            2 => array(
215
-                'Yoda',
216
-                'I Am',
217
-                '[email protected]',
218
-                '4th Tree',
219
-                '5th Knot',
220
-                'Marsh',
221
-                22,
222
-                'US',
223
-                'l18n',
224
-                '999-999-9999',
225
-                false,
226
-                '999999993'
227
-            ),
228
-        );
229
-
230
-        // let's generate the attendee objects
231
-        $attendees = array();
232
-        $var_array = array(
233
-            'fname',
234
-            'lname',
235
-            'email',
236
-            'address',
237
-            'address2',
238
-            'city',
239
-            'staid',
240
-            'cntry',
241
-            'zip',
242
-            'phone',
243
-            'deleted',
244
-            'attid'
245
-        );
246
-
247
-        // EE_Registry::instance()->load_class( 'Attendee', array(), FALSE, false, TRUE );
248
-        foreach ($dummy_attendees as $dummy) {
249
-            $att = array_combine($var_array, $dummy);
250
-            extract($att);
251
-            /** @var $fname string */
252
-            /** @var $lname string */
253
-            /** @var $address string */
254
-            /** @var $address2 string */
255
-            /** @var $city string */
256
-            /** @var $staid string */
257
-            /** @var $cntry string */
258
-            /** @var $zip string */
259
-            /** @var $email string */
260
-            /** @var $phone string */
261
-            /** @var $attid string */
262
-            $attendees[ $attid ] = EE_Attendee::new_instance(
263
-                array(
264
-                    'ATT_fname'    => $fname,
265
-                    'ATT_lname'    => $lname,
266
-                    'ATT_address'  => $address,
267
-                    'ATT_address2' => $address2,
268
-                    'ATT_city'     => $city,
269
-                    'STA_ID'       => $staid,
270
-                    'CNT_ISO'      => $cntry,
271
-                    'ATT_zip'      => $zip,
272
-                    'ATT_email'    => $email,
273
-                    'ATT_phone'    => $phone,
274
-                    'ATT_ID'       => $attid
275
-                )
276
-            );
277
-        }
278
-
279
-        return $attendees;
280
-    }
281
-
282
-
283
-    /**
284
-     * Return an array of dummy question objects indexed by answer id and dummy answer objects indexed by answer id.
285
-     * This will be used in our dummy data setup
286
-     * @return array
287
-     */
288
-    private function _get_some_q_and_as()
289
-    {
290
-
291
-
292
-        $quests_array = array(
293
-            0 => array(
294
-                555,
295
-                __('What is your favorite planet?', 'event_espresso'),
296
-                0
297
-            ),
298
-            1 => array(
299
-                556,
300
-                __('What is your favorite food?', 'event_espresso'),
301
-                0
302
-            ),
303
-            2 => array(
304
-                557,
305
-                __('How many lightyears have you travelled', 'event_espresso'),
306
-                0
307
-            )
308
-        );
309
-
310
-
311
-        $ans_array = array(
312
-            0 => array(
313
-                999,
314
-                555,
315
-                'Tattoine'
316
-            ),
317
-            1 => array(
318
-                1000,
319
-                555,
320
-                'Alderaan'
321
-            ),
322
-            2 => array(
323
-                1001,
324
-                555,
325
-                'Dantooine'
326
-            ),
327
-            3 => array(
328
-                1002,
329
-                556,
330
-                'Fish Fingers'
331
-            ),
332
-            4 => array(
333
-                1003,
334
-                556,
335
-                'Sushi'
336
-            ),
337
-            5 => array(
338
-                1004,
339
-                556,
340
-                'Water'
341
-            ),
342
-            6 => array(
343
-                1005,
344
-                557,
345
-                'A lot',
346
-            ),
347
-            7 => array(
348
-                1006,
349
-                557,
350
-                "That's none of your business."
351
-            ),
352
-            8 => array(
353
-                1007,
354
-                557,
355
-                "People less travel me then."
356
-            )
357
-        );
358
-
359
-        $qst_columns = array('QST_ID', 'QST_display_text', 'QST_system');
360
-        $ans_columns = array('ANS_ID', 'QST_ID', 'ANS_value');
361
-
362
-        // EE_Registry::instance()->load_class( 'Question', array(), FALSE, TRUE, TRUE );
363
-        // EE_Registry::instance()->load_class( 'Answer', array(), FALSE, TRUE, TRUE );
364
-
365
-        $qsts = array();
366
-        // first the questions
367
-        foreach ($quests_array as $qst) {
368
-            $qstobj                  = array_combine($qst_columns, $qst);
369
-            $qsts[ $qstobj['QST_ID'] ] = EE_Question::new_instance($qstobj);
370
-        }
371
-
372
-        // now the answers (and we'll setup our arrays)
373
-        $q_n_as = array();
374
-        foreach ($ans_array as $ans) {
375
-            $ansobj                             = array_combine($ans_columns, $ans);
376
-            $ansobj                             = EE_Answer::new_instance($ansobj);
377
-            $q_n_as['answers'][ $ansobj->ID() ]   = $ansobj;
378
-            $q_n_as['questions'][ $ansobj->ID() ] = $qsts[ $ansobj->get('QST_ID') ];
379
-        }
380
-
381
-        return $q_n_as;
382
-    }
383
-
384
-
385
-    /**
386
-     * Return an array of event objects from the database
387
-     *
388
-     * If event ids are not included then we'll just retrieve the first published event from the database.
389
-     *
390
-     * @param  array $event_ids if set, this will be an array of event ids to obtain events for.
391
-     *
392
-     * @return array    An array of event objects from the db.
393
-     */
394
-    private function _get_some_events($event_ids = array())
395
-    {
396
-
397
-        // HEY, if we have an evt_id then we want to make sure we use that for the preview (because a specific event template is being viewed);
398
-        $event_ids = isset($_REQUEST['evt_id']) && ! empty($_REQUEST['evt_id'])
399
-            ? array($_REQUEST['evt_id'])
400
-            : $event_ids;
401
-
402
-        $limit = ! empty($event_ids)
403
-            ? null
404
-            : apply_filters('FHEE__EE_Messages_Preview_incoming_data___get_some_events__limit', '0,1');
405
-
406
-        $where = ! empty($event_ids)
407
-            ? array(
408
-                'EVT_ID'                 => array('IN', $event_ids),
409
-                'Datetime.Ticket.TKT_ID' => array('>', 1)
410
-            )
411
-            : array('Datetime.Ticket.TKT_ID' => array('>', 1));
412
-
413
-        $events = EE_Registry::instance()->load_model('Event')->get_all(array($where, 'limit' => $limit));
414
-
415
-        return $events;
416
-    }
417
-
418
-
419
-    protected function _setup_data()
420
-    {
421
-
422
-        // need to figure out the running total for test purposes so... we're going to create a temp cart and add the tickets to it!
423
-        if (EE_Registry::instance()->SSN instanceof EE_Session) {
424
-            EE_Registry::instance()->SSN->clear_session(__CLASS__, __FUNCTION__);
425
-            $session = EE_Registry::instance()->SSN;
426
-        } else {
427
-            $session = EE_Registry::instance()->load_core('Session');
428
-        }
429
-        $cart = EE_Cart::instance(null, $session);
430
-
431
-
432
-        // add tickets to cart
433
-        foreach ($this->tickets as $ticket) {
434
-            $cart->add_ticket_to_cart($ticket['ticket']);
435
-        }
436
-
437
-
438
-        // setup txn property
439
-        $this->txn = EE_Transaction::new_instance(
440
-            array(
441
-                'TXN_timestamp'    => time(), // unix timestamp
442
-                'TXN_total'        => 0, // txn_total
443
-                'TXN_paid'         => 0, // txn_paid
444
-                'STS_ID'           => EEM_Transaction::incomplete_status_code, // sts_id
445
-                'TXN_session_data' => null, // dump of txn session object (we're just going to leave blank here)
446
-                'TXN_hash_salt'    => null, // hash salt blank as well
447
-                'TXN_ID'           => 999999
448
-            )
449
-        );
450
-
451
-
452
-        // setup reg_objects
453
-        // note we're setting up a reg object for each attendee in each event but ALSO adding to the reg_object array.
454
-        $this->reg_objs = array();
455
-        $regid          = 9999990;
456
-        foreach ($this->_attendees as $key => $attendee) {
457
-            // note we need to setup reg_objects for each event this attendee belongs to
458
-            $regatt = $attendee['att_obj'] instanceof EE_Attendee ? $attendee['att_obj']->ID() : null;
459
-            $regtxn = $this->txn->ID();
460
-            $regcnt = 1;
461
-            foreach ($attendee['line_ref'] as $evtid) {
462
-                foreach ($this->_events[ $evtid ]['tkt_objs'] as $ticket) {
463
-                    if (! $ticket instanceof EE_Ticket) {
464
-                        continue;
465
-                    }
466
-                    $reg_array                                        = array(
467
-                        'EVT_ID'           => $evtid,
468
-                        'ATT_ID'           => $regatt,
469
-                        'TXN_ID'           => $regtxn,
470
-                        'TKT_ID'           => $ticket->ID(),
471
-                        'STS_ID'           => EEM_Registration::status_id_pending_payment,
472
-                        'REG_date'         => time(),
473
-                        'REG_final_price'  => $ticket->get('TKT_price'),
474
-                        'REG_session'      => 'dummy_session_id',
475
-                        'REG_code'         => $regid . '-dummy-generated-code',
476
-                        'REG_url_link'     => $regcnt . '-daafpapasdlfakasdfpqasdfasdf',
477
-                        'REG_count'        => $regcnt,
478
-                        'REG_group_size'   => $this->_events[ $evtid ]['total_attendees'],
479
-                        'REG_att_is_going' => true,
480
-                        'REG_ID'           => $regid
481
-                    );
482
-                    $REG_OBJ                                          = EE_Registration::new_instance($reg_array);
483
-                    $this->_attendees[ $key ]['reg_objs'][ $regid ]       = $REG_OBJ;
484
-                    $this->_events[ $evtid ]['reg_objs'][]              = $REG_OBJ;
485
-                    $this->reg_objs[]                                 = $REG_OBJ;
486
-                    $this->tickets[ $ticket->ID() ]['reg_objs'][ $regid ] = $REG_OBJ;
487
-
488
-                    $regcnt++;
489
-                    $regid++;
490
-                }
491
-            }
492
-        }
493
-
494
-
495
-        // setup line items!
496
-        $line_item_total = EEH_Line_Item::create_total_line_item($this->txn);
497
-
498
-        // add tickets
499
-        foreach ($this->tickets as $tktid => $item) {
500
-            $qty    = $item['count'];
501
-            $ticket = $item['ticket'];
502
-            EEH_Line_Item::add_ticket_purchase($line_item_total, $ticket, $qty);
503
-        }
504
-
505
-        $shipping_line_item = EE_Line_Item::new_instance(array(
506
-            'LIN_name'       => __('Shipping Surcharge', 'event_espresso'),
507
-            'LIN_desc'       => __('Sent via Millenium Falcon', 'event_espresso'),
508
-            'LIN_unit_price' => 20,
509
-            'LIN_quantity'   => 1,
510
-            'LIN_is_taxable' => true,
511
-            'LIN_total'      => 20,
512
-            'LIN_type'       => EEM_Line_Item::type_line_item
513
-        ));
514
-        EEH_Line_Item::add_item($line_item_total, $shipping_line_item);
515
-        $this->additional_line_items = array($shipping_line_item);
516
-
517
-        // now let's add taxes
518
-        EEH_Line_Item::apply_taxes($line_item_total);
519
-
520
-        // now we should be able to get the items we need from this object
521
-        $event_line_items = EEH_Line_Item::get_pre_tax_subtotal($line_item_total)->children();
522
-        $line_items       = array();
523
-        foreach ($event_line_items as $line_id => $line_item) {
524
-            if (! $line_item instanceof EE_Line_Item || $line_item->OBJ_type() !== 'Event') {
525
-                continue;
526
-            }
527
-            $ticket_line_items = EEH_Line_Item::get_ticket_line_items($line_item);
528
-            foreach ($ticket_line_items as $ticket_line_id => $ticket_line_item) {
529
-                if (! $ticket_line_item instanceof EE_Line_Item) {
530
-                    continue;
531
-                }
532
-                $this->tickets[ $ticket_line_item->OBJ_ID() ]['line_item']      = $ticket_line_item;
533
-                $this->tickets[ $ticket_line_item->OBJ_ID() ]['sub_line_items'] = $ticket_line_item->children();
534
-                $line_items[ $ticket_line_item->ID() ]['children']              = $ticket_line_item->children();
535
-                $line_items[ $ticket_line_item->ID() ]['EE_Ticket']             = $this->tickets[ $ticket_line_item->OBJ_ID() ]['ticket'];
536
-            }
537
-        }
538
-
539
-        $this->line_items_with_children = $line_items;
540
-        $this->tax_line_items           = $line_item_total->tax_descendants();
541
-
542
-        // add proper total to transaction object.
543
-        $grand_total                 = $line_item_total->recalculate_total_including_taxes();
544
-        $this->grand_total_line_item = $line_item_total;
545
-        $this->txn->set_total($grand_total);
546
-
547
-
548
-        // add additional details for each registration
549
-        foreach ($this->reg_objs as $reg) {
550
-            if (! $reg instanceof EE_Registration) {
551
-                continue;
552
-            }
553
-            $this->_registrations[ $reg->ID() ]['tkt_obj']  = $this->tickets[ $reg->get('TKT_ID') ]['ticket'];
554
-            $this->_registrations[ $reg->ID() ]['evt_obj']  = $this->_events[ $reg->get('EVT_ID') ]['event'];
555
-            $this->_registrations[ $reg->ID() ]['reg_obj']  = $reg;
556
-            $this->_registrations[ $reg->ID() ]['ans_objs'] = $this->_attendees[ $reg->get('ATT_ID') ]['ans_objs'];
557
-            $this->_registrations[ $reg->ID() ]['att_obj']  = $this->_attendees[ $reg->get('ATT_ID') ]['att_obj'];
558
-            $this->_registrations[ $reg->ID() ]['dtt_objs'] = $this->tickets[ $reg->get('TKT_ID') ]['dtt_objs'];
559
-        }
560
-
561
-
562
-        // events and attendees
563
-        $this->events        = $this->_events;
564
-        $this->attendees     = $this->_attendees;
565
-        $this->registrations = $this->_registrations;
566
-
567
-        $attendees_to_shift = $this->_attendees;
568
-
569
-        // setup primary attendee property
570
-        $this->primary_attendee_data = array(
571
-            'fname' => $this->_attendees[999999991]['att_obj'] instanceof EE_Attendee
572
-                ? $this->_attendees[999999991]['att_obj']->fname()
573
-                : '',
574
-
575
-            'lname' => $this->_attendees[999999991]['att_obj'] instanceof EE_Attendee
576
-                ? $this->_attendees[999999991]['att_obj']->lname()
577
-                : '',
578
-
579
-            'email' => $this->_attendees[999999991]['att_obj'] instanceof EE_Attendee
580
-                ? $this->_attendees[999999991]['att_obj']->email()
581
-                : '',
582
-
583
-            'att_obj' => $this->_attendees[999999991]['att_obj'],
584
-
585
-            'reg_obj' => array_shift($attendees_to_shift[999999991]['reg_objs'])
586
-        );
587
-
588
-        // reg_info property
589
-        // note this isn't referenced by any shortcode parsers so we'll ignore for now.
590
-        $this->reg_info = array();
591
-
592
-        // let's set a reg_obj for messengers expecting one.
593
-        $this->reg_obj = array_shift($this->_attendees[999999991]['reg_objs']);
594
-        // the below are just dummy items.
595
-        $this->user_id     = 1;
596
-        $this->ip_address  = '192.0.2.1';
597
-        $this->user_agent  = '';
598
-        $this->init_access = time();
599
-        $this->last_access = time();
600
-    }
21
+	// some specific properties we need for this class
22
+	private $_events = array();
23
+	private $_attendees = array();
24
+	private $_registrations = array();
25
+
26
+
27
+	/**
28
+	 * For the constructor of this special preview class.  We're either looking for an event id or empty data.  If we
29
+	 * have an event id (or ids) then we'll use that as the source for the "dummy" data.  If the data is empty then
30
+	 * we'll get the first three published events from the users database and use that as a source.
31
+	 *
32
+	 * @param array $data
33
+	 */
34
+	public function __construct($data = array())
35
+	{
36
+		$this->_data = isset($data['event_ids']) ? $data['event_ids'] : array();
37
+		$this->_setup_attendees_events();
38
+		parent::__construct($data);
39
+	}
40
+
41
+
42
+	/**
43
+	 * Returns database safe representation of the data later used to when instantiating this object.
44
+	 *
45
+	 * @param array $data The incoming data to be prepped.
46
+	 *
47
+	 * @return array   The prepped data for db
48
+	 */
49
+	public static function convert_data_for_persistent_storage($data)
50
+	{
51
+		return $data;
52
+	}
53
+
54
+
55
+	/**
56
+	 * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
57
+	 * can be sent into this method and converted back into the format used for instantiating with this data handler.
58
+	 *
59
+	 * @param array $data
60
+	 *
61
+	 * @return array
62
+	 */
63
+	public static function convert_data_from_persistent_storage($data)
64
+	{
65
+		return $data;
66
+	}
67
+
68
+
69
+	/**
70
+	 * This will just setup the _events property in the expected format.
71
+	 *
72
+	 * @throws \EE_Error
73
+	 */
74
+	private function _setup_attendees_events()
75
+	{
76
+
77
+		// setup some attendee objects
78
+		$attendees = $this->_get_some_attendees();
79
+
80
+		// if empty $data we'll do a query to get some events from the server. otherwise we'll retrieve the event data for the given ids.
81
+		$events = $this->_get_some_events($this->_data);
82
+
83
+		$answers_n_questions = $this->_get_some_q_and_as();
84
+
85
+		if (count($events) < 1) {
86
+			throw new EE_Error(__(
87
+				'We can\'t generate a preview for you because there are no active events in your database',
88
+				'event_espresso'
89
+			));
90
+		}
91
+
92
+
93
+		// now let's loop and set up the _events property.  At the same time we'll set up attendee properties.
94
+
95
+
96
+		// we'll actually use the generated line_item identifiers for our loop
97
+		$dtts = $tkts = array();
98
+		foreach ($events as $id => $event) {
99
+			if (! $event instanceof EE_Event) {
100
+				continue;
101
+			}
102
+			$this->_events[ $id ]['ID']       = $id;
103
+			$this->_events[ $id ]['name']     = $event->get('EVT_name');
104
+			$datetime                       = $event->get_first_related('Datetime');
105
+			$tickets                        = $datetime instanceof EE_Datetime ? $datetime->get_many_related(
106
+				'Ticket',
107
+				array('default_where_conditions' => 'none')
108
+			) : array();
109
+			$this->_events[ $id ]['event']    = $event;
110
+			$this->_events[ $id ]['reg_objs'] = array();
111
+			$this->_events[ $id ]['tkt_objs'] = $tickets;
112
+			$this->_events[ $id ]['dtt_objs'] = array();
113
+
114
+			$dttcache = array();
115
+			$tkts     = array();
116
+			foreach ($tickets as $ticket) {
117
+				if (! $ticket instanceof EE_Ticket) {
118
+					continue;
119
+				}
120
+				$reldatetime                     = $ticket->datetimes();
121
+				$tkts[ $ticket->ID() ]             = array();
122
+				$tkts[ $ticket->ID() ]['ticket']   = $ticket;
123
+				$tkts[ $ticket->ID() ]['dtt_objs'] = $reldatetime;
124
+				$tkts[ $ticket->ID() ]['att_objs'] = $attendees;
125
+				$tkts[ $ticket->ID() ]['count']    = count($attendees);
126
+				$tkts[ $ticket->ID() ]['EE_Event'] = $event;
127
+				foreach ($reldatetime as $datetime) {
128
+					if ($datetime instanceof EE_Datetime && ! isset($dtts[ $datetime->ID() ])) {
129
+						$this->_events[ $id ]['dtt_objs'][ $datetime->ID() ] = $datetime;
130
+						$dtts[ $datetime->ID() ]['datetime']               = $datetime;
131
+						$dtts[ $datetime->ID() ]['tkt_objs'][]             = $ticket;
132
+						$dtts[ $datetime->ID() ]['evt_objs'][]             = $event;
133
+						$dttcache[ $datetime->ID() ]                       = $datetime;
134
+					}
135
+				}
136
+			}
137
+
138
+			$this->_events[ $id ]['total_attendees'] = count($attendees);
139
+			$this->_events[ $id ]['att_objs']        = $attendees;
140
+
141
+			// let's also setup the dummy attendees property!
142
+			foreach ($attendees as $att_key => $attendee) {
143
+				if (! $attendee instanceof EE_Attendee) {
144
+					continue;
145
+				}
146
+				$this->_attendees[ $att_key ]['line_ref'][] = $id;  // so later it can be determined what events this attendee registered for!
147
+				$this->_attendees[ $att_key ]['evt_objs'][] = $event;
148
+				$this->_attendees[ $att_key ]['att_obj']    = $attendee;
149
+				// $this->_attendees[$att_key]['registration_id'] = 0;
150
+				$this->_attendees[ $att_key ]['attendee_email'] = $attendee->email();
151
+				$this->_attendees[ $att_key ]['tkt_objs']       = $tickets;
152
+				if ($att_key == 999999991) {
153
+					$this->_attendees[ $att_key ]['ans_objs'][999]  = $answers_n_questions['answers'][999];
154
+					$this->_attendees[ $att_key ]['ans_objs'][1002] = $answers_n_questions['answers'][1002];
155
+					$this->_attendees[ $att_key ]['ans_objs'][1005] = $answers_n_questions['answers'][1005];
156
+				} elseif ($att_key == 999999992) {
157
+					$this->_attendees[ $att_key ]['ans_objs'][1000] = $answers_n_questions['answers'][1000];
158
+					$this->_attendees[ $att_key ]['ans_objs'][1003] = $answers_n_questions['answers'][1003];
159
+					$this->_attendees[ $att_key ]['ans_objs'][1006] = $answers_n_questions['answers'][1006];
160
+				} elseif ($att_key == 999999993) {
161
+					$this->_attendees[ $att_key ]['ans_objs'][1001] = $answers_n_questions['answers'][1001];
162
+					$this->_attendees[ $att_key ]['ans_objs'][1004] = $answers_n_questions['answers'][1004];
163
+					$this->_attendees[ $att_key ]['ans_objs'][1007] = $answers_n_questions['answers'][1007];
164
+				}
165
+			}
166
+		}
167
+
168
+		$this->tickets            = $tkts;
169
+		$this->datetimes          = $dtts;
170
+		$this->answers            = $answers_n_questions['answers'];
171
+		$this->questions          = $answers_n_questions['questions'];
172
+		$this->total_ticket_count = count($tkts) * count($this->_attendees);
173
+	}
174
+
175
+
176
+	/**
177
+	 * This just returns an array of dummy attendee objects that we'll use to attach to events for our preview data
178
+	 *
179
+	 * @access private
180
+	 * @return array an array of attendee objects
181
+	 */
182
+	private function _get_some_attendees()
183
+	{
184
+		// let's just setup a dummy array of various attendee details
185
+		$dummy_attendees = array(
186
+			0 => array(
187
+				'Luke',
188
+				'Skywalker',
189
+				'[email protected]',
190
+				'804 Bantha Dr.',
191
+				'Complex 8',
192
+				'Mos Eisley',
193
+				32,
194
+				'US',
195
+				'f0r3e',
196
+				'222-333-4763',
197
+				false,
198
+				'999999991'
199
+			),
200
+			1 => array(
201
+				'Princess',
202
+				'Leia',
203
+				'[email protected]',
204
+				'1456 Valley Way Boulevard',
205
+				'Suite 9',
206
+				'Alderaan',
207
+				15,
208
+				'US',
209
+				'c1h2c',
210
+				'78-123-111-1111',
211
+				false,
212
+				'999999992'
213
+			),
214
+			2 => array(
215
+				'Yoda',
216
+				'I Am',
217
+				'[email protected]',
218
+				'4th Tree',
219
+				'5th Knot',
220
+				'Marsh',
221
+				22,
222
+				'US',
223
+				'l18n',
224
+				'999-999-9999',
225
+				false,
226
+				'999999993'
227
+			),
228
+		);
229
+
230
+		// let's generate the attendee objects
231
+		$attendees = array();
232
+		$var_array = array(
233
+			'fname',
234
+			'lname',
235
+			'email',
236
+			'address',
237
+			'address2',
238
+			'city',
239
+			'staid',
240
+			'cntry',
241
+			'zip',
242
+			'phone',
243
+			'deleted',
244
+			'attid'
245
+		);
246
+
247
+		// EE_Registry::instance()->load_class( 'Attendee', array(), FALSE, false, TRUE );
248
+		foreach ($dummy_attendees as $dummy) {
249
+			$att = array_combine($var_array, $dummy);
250
+			extract($att);
251
+			/** @var $fname string */
252
+			/** @var $lname string */
253
+			/** @var $address string */
254
+			/** @var $address2 string */
255
+			/** @var $city string */
256
+			/** @var $staid string */
257
+			/** @var $cntry string */
258
+			/** @var $zip string */
259
+			/** @var $email string */
260
+			/** @var $phone string */
261
+			/** @var $attid string */
262
+			$attendees[ $attid ] = EE_Attendee::new_instance(
263
+				array(
264
+					'ATT_fname'    => $fname,
265
+					'ATT_lname'    => $lname,
266
+					'ATT_address'  => $address,
267
+					'ATT_address2' => $address2,
268
+					'ATT_city'     => $city,
269
+					'STA_ID'       => $staid,
270
+					'CNT_ISO'      => $cntry,
271
+					'ATT_zip'      => $zip,
272
+					'ATT_email'    => $email,
273
+					'ATT_phone'    => $phone,
274
+					'ATT_ID'       => $attid
275
+				)
276
+			);
277
+		}
278
+
279
+		return $attendees;
280
+	}
281
+
282
+
283
+	/**
284
+	 * Return an array of dummy question objects indexed by answer id and dummy answer objects indexed by answer id.
285
+	 * This will be used in our dummy data setup
286
+	 * @return array
287
+	 */
288
+	private function _get_some_q_and_as()
289
+	{
290
+
291
+
292
+		$quests_array = array(
293
+			0 => array(
294
+				555,
295
+				__('What is your favorite planet?', 'event_espresso'),
296
+				0
297
+			),
298
+			1 => array(
299
+				556,
300
+				__('What is your favorite food?', 'event_espresso'),
301
+				0
302
+			),
303
+			2 => array(
304
+				557,
305
+				__('How many lightyears have you travelled', 'event_espresso'),
306
+				0
307
+			)
308
+		);
309
+
310
+
311
+		$ans_array = array(
312
+			0 => array(
313
+				999,
314
+				555,
315
+				'Tattoine'
316
+			),
317
+			1 => array(
318
+				1000,
319
+				555,
320
+				'Alderaan'
321
+			),
322
+			2 => array(
323
+				1001,
324
+				555,
325
+				'Dantooine'
326
+			),
327
+			3 => array(
328
+				1002,
329
+				556,
330
+				'Fish Fingers'
331
+			),
332
+			4 => array(
333
+				1003,
334
+				556,
335
+				'Sushi'
336
+			),
337
+			5 => array(
338
+				1004,
339
+				556,
340
+				'Water'
341
+			),
342
+			6 => array(
343
+				1005,
344
+				557,
345
+				'A lot',
346
+			),
347
+			7 => array(
348
+				1006,
349
+				557,
350
+				"That's none of your business."
351
+			),
352
+			8 => array(
353
+				1007,
354
+				557,
355
+				"People less travel me then."
356
+			)
357
+		);
358
+
359
+		$qst_columns = array('QST_ID', 'QST_display_text', 'QST_system');
360
+		$ans_columns = array('ANS_ID', 'QST_ID', 'ANS_value');
361
+
362
+		// EE_Registry::instance()->load_class( 'Question', array(), FALSE, TRUE, TRUE );
363
+		// EE_Registry::instance()->load_class( 'Answer', array(), FALSE, TRUE, TRUE );
364
+
365
+		$qsts = array();
366
+		// first the questions
367
+		foreach ($quests_array as $qst) {
368
+			$qstobj                  = array_combine($qst_columns, $qst);
369
+			$qsts[ $qstobj['QST_ID'] ] = EE_Question::new_instance($qstobj);
370
+		}
371
+
372
+		// now the answers (and we'll setup our arrays)
373
+		$q_n_as = array();
374
+		foreach ($ans_array as $ans) {
375
+			$ansobj                             = array_combine($ans_columns, $ans);
376
+			$ansobj                             = EE_Answer::new_instance($ansobj);
377
+			$q_n_as['answers'][ $ansobj->ID() ]   = $ansobj;
378
+			$q_n_as['questions'][ $ansobj->ID() ] = $qsts[ $ansobj->get('QST_ID') ];
379
+		}
380
+
381
+		return $q_n_as;
382
+	}
383
+
384
+
385
+	/**
386
+	 * Return an array of event objects from the database
387
+	 *
388
+	 * If event ids are not included then we'll just retrieve the first published event from the database.
389
+	 *
390
+	 * @param  array $event_ids if set, this will be an array of event ids to obtain events for.
391
+	 *
392
+	 * @return array    An array of event objects from the db.
393
+	 */
394
+	private function _get_some_events($event_ids = array())
395
+	{
396
+
397
+		// HEY, if we have an evt_id then we want to make sure we use that for the preview (because a specific event template is being viewed);
398
+		$event_ids = isset($_REQUEST['evt_id']) && ! empty($_REQUEST['evt_id'])
399
+			? array($_REQUEST['evt_id'])
400
+			: $event_ids;
401
+
402
+		$limit = ! empty($event_ids)
403
+			? null
404
+			: apply_filters('FHEE__EE_Messages_Preview_incoming_data___get_some_events__limit', '0,1');
405
+
406
+		$where = ! empty($event_ids)
407
+			? array(
408
+				'EVT_ID'                 => array('IN', $event_ids),
409
+				'Datetime.Ticket.TKT_ID' => array('>', 1)
410
+			)
411
+			: array('Datetime.Ticket.TKT_ID' => array('>', 1));
412
+
413
+		$events = EE_Registry::instance()->load_model('Event')->get_all(array($where, 'limit' => $limit));
414
+
415
+		return $events;
416
+	}
417
+
418
+
419
+	protected function _setup_data()
420
+	{
421
+
422
+		// need to figure out the running total for test purposes so... we're going to create a temp cart and add the tickets to it!
423
+		if (EE_Registry::instance()->SSN instanceof EE_Session) {
424
+			EE_Registry::instance()->SSN->clear_session(__CLASS__, __FUNCTION__);
425
+			$session = EE_Registry::instance()->SSN;
426
+		} else {
427
+			$session = EE_Registry::instance()->load_core('Session');
428
+		}
429
+		$cart = EE_Cart::instance(null, $session);
430
+
431
+
432
+		// add tickets to cart
433
+		foreach ($this->tickets as $ticket) {
434
+			$cart->add_ticket_to_cart($ticket['ticket']);
435
+		}
436
+
437
+
438
+		// setup txn property
439
+		$this->txn = EE_Transaction::new_instance(
440
+			array(
441
+				'TXN_timestamp'    => time(), // unix timestamp
442
+				'TXN_total'        => 0, // txn_total
443
+				'TXN_paid'         => 0, // txn_paid
444
+				'STS_ID'           => EEM_Transaction::incomplete_status_code, // sts_id
445
+				'TXN_session_data' => null, // dump of txn session object (we're just going to leave blank here)
446
+				'TXN_hash_salt'    => null, // hash salt blank as well
447
+				'TXN_ID'           => 999999
448
+			)
449
+		);
450
+
451
+
452
+		// setup reg_objects
453
+		// note we're setting up a reg object for each attendee in each event but ALSO adding to the reg_object array.
454
+		$this->reg_objs = array();
455
+		$regid          = 9999990;
456
+		foreach ($this->_attendees as $key => $attendee) {
457
+			// note we need to setup reg_objects for each event this attendee belongs to
458
+			$regatt = $attendee['att_obj'] instanceof EE_Attendee ? $attendee['att_obj']->ID() : null;
459
+			$regtxn = $this->txn->ID();
460
+			$regcnt = 1;
461
+			foreach ($attendee['line_ref'] as $evtid) {
462
+				foreach ($this->_events[ $evtid ]['tkt_objs'] as $ticket) {
463
+					if (! $ticket instanceof EE_Ticket) {
464
+						continue;
465
+					}
466
+					$reg_array                                        = array(
467
+						'EVT_ID'           => $evtid,
468
+						'ATT_ID'           => $regatt,
469
+						'TXN_ID'           => $regtxn,
470
+						'TKT_ID'           => $ticket->ID(),
471
+						'STS_ID'           => EEM_Registration::status_id_pending_payment,
472
+						'REG_date'         => time(),
473
+						'REG_final_price'  => $ticket->get('TKT_price'),
474
+						'REG_session'      => 'dummy_session_id',
475
+						'REG_code'         => $regid . '-dummy-generated-code',
476
+						'REG_url_link'     => $regcnt . '-daafpapasdlfakasdfpqasdfasdf',
477
+						'REG_count'        => $regcnt,
478
+						'REG_group_size'   => $this->_events[ $evtid ]['total_attendees'],
479
+						'REG_att_is_going' => true,
480
+						'REG_ID'           => $regid
481
+					);
482
+					$REG_OBJ                                          = EE_Registration::new_instance($reg_array);
483
+					$this->_attendees[ $key ]['reg_objs'][ $regid ]       = $REG_OBJ;
484
+					$this->_events[ $evtid ]['reg_objs'][]              = $REG_OBJ;
485
+					$this->reg_objs[]                                 = $REG_OBJ;
486
+					$this->tickets[ $ticket->ID() ]['reg_objs'][ $regid ] = $REG_OBJ;
487
+
488
+					$regcnt++;
489
+					$regid++;
490
+				}
491
+			}
492
+		}
493
+
494
+
495
+		// setup line items!
496
+		$line_item_total = EEH_Line_Item::create_total_line_item($this->txn);
497
+
498
+		// add tickets
499
+		foreach ($this->tickets as $tktid => $item) {
500
+			$qty    = $item['count'];
501
+			$ticket = $item['ticket'];
502
+			EEH_Line_Item::add_ticket_purchase($line_item_total, $ticket, $qty);
503
+		}
504
+
505
+		$shipping_line_item = EE_Line_Item::new_instance(array(
506
+			'LIN_name'       => __('Shipping Surcharge', 'event_espresso'),
507
+			'LIN_desc'       => __('Sent via Millenium Falcon', 'event_espresso'),
508
+			'LIN_unit_price' => 20,
509
+			'LIN_quantity'   => 1,
510
+			'LIN_is_taxable' => true,
511
+			'LIN_total'      => 20,
512
+			'LIN_type'       => EEM_Line_Item::type_line_item
513
+		));
514
+		EEH_Line_Item::add_item($line_item_total, $shipping_line_item);
515
+		$this->additional_line_items = array($shipping_line_item);
516
+
517
+		// now let's add taxes
518
+		EEH_Line_Item::apply_taxes($line_item_total);
519
+
520
+		// now we should be able to get the items we need from this object
521
+		$event_line_items = EEH_Line_Item::get_pre_tax_subtotal($line_item_total)->children();
522
+		$line_items       = array();
523
+		foreach ($event_line_items as $line_id => $line_item) {
524
+			if (! $line_item instanceof EE_Line_Item || $line_item->OBJ_type() !== 'Event') {
525
+				continue;
526
+			}
527
+			$ticket_line_items = EEH_Line_Item::get_ticket_line_items($line_item);
528
+			foreach ($ticket_line_items as $ticket_line_id => $ticket_line_item) {
529
+				if (! $ticket_line_item instanceof EE_Line_Item) {
530
+					continue;
531
+				}
532
+				$this->tickets[ $ticket_line_item->OBJ_ID() ]['line_item']      = $ticket_line_item;
533
+				$this->tickets[ $ticket_line_item->OBJ_ID() ]['sub_line_items'] = $ticket_line_item->children();
534
+				$line_items[ $ticket_line_item->ID() ]['children']              = $ticket_line_item->children();
535
+				$line_items[ $ticket_line_item->ID() ]['EE_Ticket']             = $this->tickets[ $ticket_line_item->OBJ_ID() ]['ticket'];
536
+			}
537
+		}
538
+
539
+		$this->line_items_with_children = $line_items;
540
+		$this->tax_line_items           = $line_item_total->tax_descendants();
541
+
542
+		// add proper total to transaction object.
543
+		$grand_total                 = $line_item_total->recalculate_total_including_taxes();
544
+		$this->grand_total_line_item = $line_item_total;
545
+		$this->txn->set_total($grand_total);
546
+
547
+
548
+		// add additional details for each registration
549
+		foreach ($this->reg_objs as $reg) {
550
+			if (! $reg instanceof EE_Registration) {
551
+				continue;
552
+			}
553
+			$this->_registrations[ $reg->ID() ]['tkt_obj']  = $this->tickets[ $reg->get('TKT_ID') ]['ticket'];
554
+			$this->_registrations[ $reg->ID() ]['evt_obj']  = $this->_events[ $reg->get('EVT_ID') ]['event'];
555
+			$this->_registrations[ $reg->ID() ]['reg_obj']  = $reg;
556
+			$this->_registrations[ $reg->ID() ]['ans_objs'] = $this->_attendees[ $reg->get('ATT_ID') ]['ans_objs'];
557
+			$this->_registrations[ $reg->ID() ]['att_obj']  = $this->_attendees[ $reg->get('ATT_ID') ]['att_obj'];
558
+			$this->_registrations[ $reg->ID() ]['dtt_objs'] = $this->tickets[ $reg->get('TKT_ID') ]['dtt_objs'];
559
+		}
560
+
561
+
562
+		// events and attendees
563
+		$this->events        = $this->_events;
564
+		$this->attendees     = $this->_attendees;
565
+		$this->registrations = $this->_registrations;
566
+
567
+		$attendees_to_shift = $this->_attendees;
568
+
569
+		// setup primary attendee property
570
+		$this->primary_attendee_data = array(
571
+			'fname' => $this->_attendees[999999991]['att_obj'] instanceof EE_Attendee
572
+				? $this->_attendees[999999991]['att_obj']->fname()
573
+				: '',
574
+
575
+			'lname' => $this->_attendees[999999991]['att_obj'] instanceof EE_Attendee
576
+				? $this->_attendees[999999991]['att_obj']->lname()
577
+				: '',
578
+
579
+			'email' => $this->_attendees[999999991]['att_obj'] instanceof EE_Attendee
580
+				? $this->_attendees[999999991]['att_obj']->email()
581
+				: '',
582
+
583
+			'att_obj' => $this->_attendees[999999991]['att_obj'],
584
+
585
+			'reg_obj' => array_shift($attendees_to_shift[999999991]['reg_objs'])
586
+		);
587
+
588
+		// reg_info property
589
+		// note this isn't referenced by any shortcode parsers so we'll ignore for now.
590
+		$this->reg_info = array();
591
+
592
+		// let's set a reg_obj for messengers expecting one.
593
+		$this->reg_obj = array_shift($this->_attendees[999999991]['reg_objs']);
594
+		// the below are just dummy items.
595
+		$this->user_id     = 1;
596
+		$this->ip_address  = '192.0.2.1';
597
+		$this->user_agent  = '';
598
+		$this->init_access = time();
599
+		$this->last_access = time();
600
+	}
601 601
 }
Please login to merge, or discard this patch.
libraries/messages/data_class/EE_Messages_Gateways_incoming_data.class.php 2 patches
Indentation   +136 added lines, -136 removed lines patch added patch discarded remove patch
@@ -14,141 +14,141 @@
 block discarded – undo
14 14
 class EE_Messages_Gateways_incoming_data extends EE_Messages_incoming_data
15 15
 {
16 16
 
17
-    /**
18
-     * This holds the incoming payment object
19
-     * @var EE_Payment
20
-     */
21
-    public $payment;
22
-
23
-
24
-
25
-    /**
26
-     * incoming data is expected to be a EE_Transaction object and (possibly) EE_Payment object in an array.
27
-     *
28
-     * @param array $data
29
-     * @throws EE_Error
30
-     */
31
-    public function __construct($data)
32
-    {
33
-
34
-        // test for valid params
35
-        if (! ( $data[0] instanceof EE_Transaction )) {
36
-            throw new EE_Error(__('Incoming data for the Gateways data handler must have an EE_Transaction object as the value for the first array index.', 'event_espresso'));
37
-        }
38
-
39
-        if (empty($data[1]) || ! $data[1] instanceof  EE_Payment) {
40
-            $pmt_obj = $this->_get_empty_payment_obj($data[0]);
41
-        }
42
-
43
-        if (! empty($data[2])) {
44
-            $filtered_reg_status = $data[2];
45
-        }
17
+	/**
18
+	 * This holds the incoming payment object
19
+	 * @var EE_Payment
20
+	 */
21
+	public $payment;
22
+
23
+
24
+
25
+	/**
26
+	 * incoming data is expected to be a EE_Transaction object and (possibly) EE_Payment object in an array.
27
+	 *
28
+	 * @param array $data
29
+	 * @throws EE_Error
30
+	 */
31
+	public function __construct($data)
32
+	{
33
+
34
+		// test for valid params
35
+		if (! ( $data[0] instanceof EE_Transaction )) {
36
+			throw new EE_Error(__('Incoming data for the Gateways data handler must have an EE_Transaction object as the value for the first array index.', 'event_espresso'));
37
+		}
38
+
39
+		if (empty($data[1]) || ! $data[1] instanceof  EE_Payment) {
40
+			$pmt_obj = $this->_get_empty_payment_obj($data[0]);
41
+		}
42
+
43
+		if (! empty($data[2])) {
44
+			$filtered_reg_status = $data[2];
45
+		}
46 46
 
47
-        $data = array(
48
-            'txn_obj' => $data[0],
49
-            'pmt_obj' => isset($pmt_obj) ? $pmt_obj : $data[1],
50
-            'filtered_reg_status' => isset($filtered_reg_status) ? $filtered_reg_status : null
51
-            );
52
-        parent::__construct($data);
53
-    }
54
-
55
-
56
-
57
-
58
-
59
-    /**
60
-     * Returns database safe representation of the data later used to when instantiating this object.
61
-     *
62
-     * @param array $data The incoming data to be prepped.
63
-     *
64
-     * @return array   The prepped data for db
65
-     */
66
-    public static function convert_data_for_persistent_storage($data)
67
-    {
68
-        $prepped_data = array();
69
-
70
-        if ($data[0] instanceof EE_Transaction) {
71
-            $prepped_data['Transaction'] = $data[0]->ID();
72
-        }
73
-
74
-        if (isset($data[1]) && $data[1] instanceof EE_Payment) {
75
-            $prepped_data['Payment'] = $data[1]->ID();
76
-        }
77
-
78
-        if (! empty($data[2])) {
79
-            $prepped_data['filter'] = $data[2];
80
-        }
81
-
82
-        return $prepped_data;
83
-    }
84
-
85
-
86
-
87
-
88
-
89
-
90
-    /**
91
-     * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
92
-     * can be sent into this method and converted back into the format used for instantiating with this data handler.
93
-     *
94
-     * @param array  $data
95
-     *
96
-     * @return array
97
-     */
98
-    public static function convert_data_from_persistent_storage($data)
99
-    {
100
-        $prepped_data = array(
101
-            0 => isset($data['Transaction']) ? EEM_Transaction::instance()->get_one_by_ID($data['Transaction']) : null,
102
-            1 => isset($data['Payment']) ? EEM_Payment::instance()->get_one_by_ID($data['Payment']) : null,
103
-            2 => isset($data['filter']) ? $data['filter'] : null
104
-        );
105
-        return $prepped_data;
106
-    }
107
-
108
-
109
-    /**
110
-     * This sets up an empty EE_Payment object for the purpose of shortcode parsing.  Note that this doesn't actually get saved to the db.
111
-     * @param \EE_Transaction $txn
112
-     * @return \EE_Payment
113
-     */
114
-    private function _get_empty_payment_obj(EE_Transaction $txn)
115
-    {
116
-        $PMT = EE_Payment::new_instance(array(
117
-            'STS_ID' => EEM_Payment::status_id_pending,
118
-            'PAY_timestamp' => time(),
119
-            'PMD_ID' => $txn->payment_method_ID(),
120
-            'PAY_gateway_response' => $txn->gateway_response_on_transaction(),
121
-            ));
122
-        return $PMT;
123
-    }
124
-
125
-
126
-
127
-    /**
128
-     * _setup_data
129
-     *
130
-     * @throws EE_Error
131
-     */
132
-    protected function _setup_data()
133
-    {
134
-
135
-        $this->reg_info = array();
136
-
137
-        $this->txn = $this->_data['txn_obj'];
138
-        $this->payment = $this->_data['pmt_obj'];
139
-        $this->filtered_reg_status = $this->_data['filtered_reg_status'];
140
-        $this->incoming_data = $this->_data;
141
-
142
-        $session_data = $this->txn->session_data();
143
-
144
-
145
-        // other data from the session (if possible)
146
-        $this->user_id = isset($session_data['user_id']) ? $session_data['user_id'] : '';
147
-        $this->ip_address = isset($session_data['ip_address']) ? $session_data['ip_address'] : '';
148
-        $this->user_agent = isset($session_data['user_agent']) ? $session_data['user_agent'] : '';
149
-        $this->init_access = $this->last_access = '';
150
-        // get all non-trashed registrations
151
-        $this->reg_objs = $this->txn->registrations(array(array('REG_deleted' => false)));
152
-        $this->_assemble_data();
153
-    }
47
+		$data = array(
48
+			'txn_obj' => $data[0],
49
+			'pmt_obj' => isset($pmt_obj) ? $pmt_obj : $data[1],
50
+			'filtered_reg_status' => isset($filtered_reg_status) ? $filtered_reg_status : null
51
+			);
52
+		parent::__construct($data);
53
+	}
54
+
55
+
56
+
57
+
58
+
59
+	/**
60
+	 * Returns database safe representation of the data later used to when instantiating this object.
61
+	 *
62
+	 * @param array $data The incoming data to be prepped.
63
+	 *
64
+	 * @return array   The prepped data for db
65
+	 */
66
+	public static function convert_data_for_persistent_storage($data)
67
+	{
68
+		$prepped_data = array();
69
+
70
+		if ($data[0] instanceof EE_Transaction) {
71
+			$prepped_data['Transaction'] = $data[0]->ID();
72
+		}
73
+
74
+		if (isset($data[1]) && $data[1] instanceof EE_Payment) {
75
+			$prepped_data['Payment'] = $data[1]->ID();
76
+		}
77
+
78
+		if (! empty($data[2])) {
79
+			$prepped_data['filter'] = $data[2];
80
+		}
81
+
82
+		return $prepped_data;
83
+	}
84
+
85
+
86
+
87
+
88
+
89
+
90
+	/**
91
+	 * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
92
+	 * can be sent into this method and converted back into the format used for instantiating with this data handler.
93
+	 *
94
+	 * @param array  $data
95
+	 *
96
+	 * @return array
97
+	 */
98
+	public static function convert_data_from_persistent_storage($data)
99
+	{
100
+		$prepped_data = array(
101
+			0 => isset($data['Transaction']) ? EEM_Transaction::instance()->get_one_by_ID($data['Transaction']) : null,
102
+			1 => isset($data['Payment']) ? EEM_Payment::instance()->get_one_by_ID($data['Payment']) : null,
103
+			2 => isset($data['filter']) ? $data['filter'] : null
104
+		);
105
+		return $prepped_data;
106
+	}
107
+
108
+
109
+	/**
110
+	 * This sets up an empty EE_Payment object for the purpose of shortcode parsing.  Note that this doesn't actually get saved to the db.
111
+	 * @param \EE_Transaction $txn
112
+	 * @return \EE_Payment
113
+	 */
114
+	private function _get_empty_payment_obj(EE_Transaction $txn)
115
+	{
116
+		$PMT = EE_Payment::new_instance(array(
117
+			'STS_ID' => EEM_Payment::status_id_pending,
118
+			'PAY_timestamp' => time(),
119
+			'PMD_ID' => $txn->payment_method_ID(),
120
+			'PAY_gateway_response' => $txn->gateway_response_on_transaction(),
121
+			));
122
+		return $PMT;
123
+	}
124
+
125
+
126
+
127
+	/**
128
+	 * _setup_data
129
+	 *
130
+	 * @throws EE_Error
131
+	 */
132
+	protected function _setup_data()
133
+	{
134
+
135
+		$this->reg_info = array();
136
+
137
+		$this->txn = $this->_data['txn_obj'];
138
+		$this->payment = $this->_data['pmt_obj'];
139
+		$this->filtered_reg_status = $this->_data['filtered_reg_status'];
140
+		$this->incoming_data = $this->_data;
141
+
142
+		$session_data = $this->txn->session_data();
143
+
144
+
145
+		// other data from the session (if possible)
146
+		$this->user_id = isset($session_data['user_id']) ? $session_data['user_id'] : '';
147
+		$this->ip_address = isset($session_data['ip_address']) ? $session_data['ip_address'] : '';
148
+		$this->user_agent = isset($session_data['user_agent']) ? $session_data['user_agent'] : '';
149
+		$this->init_access = $this->last_access = '';
150
+		// get all non-trashed registrations
151
+		$this->reg_objs = $this->txn->registrations(array(array('REG_deleted' => false)));
152
+		$this->_assemble_data();
153
+	}
154 154
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -32,7 +32,7 @@  discard block
 block discarded – undo
32 32
     {
33 33
 
34 34
         // test for valid params
35
-        if (! ( $data[0] instanceof EE_Transaction )) {
35
+        if ( ! ($data[0] instanceof EE_Transaction)) {
36 36
             throw new EE_Error(__('Incoming data for the Gateways data handler must have an EE_Transaction object as the value for the first array index.', 'event_espresso'));
37 37
         }
38 38
 
@@ -40,7 +40,7 @@  discard block
 block discarded – undo
40 40
             $pmt_obj = $this->_get_empty_payment_obj($data[0]);
41 41
         }
42 42
 
43
-        if (! empty($data[2])) {
43
+        if ( ! empty($data[2])) {
44 44
             $filtered_reg_status = $data[2];
45 45
         }
46 46
 
@@ -75,7 +75,7 @@  discard block
 block discarded – undo
75 75
             $prepped_data['Payment'] = $data[1]->ID();
76 76
         }
77 77
 
78
-        if (! empty($data[2])) {
78
+        if ( ! empty($data[2])) {
79 79
             $prepped_data['filter'] = $data[2];
80 80
         }
81 81
 
Please login to merge, or discard this patch.
messages/data_class/EE_Messages_Registrations_incoming_data.class.php 2 patches
Indentation   +168 added lines, -168 removed lines patch added patch discarded remove patch
@@ -17,172 +17,172 @@
 block discarded – undo
17 17
 {
18 18
 
19 19
 
20
-    /**
21
-     * Constructor.
22
-     *
23
-     * @param  EE_Registration[] $data expecting an array of EE_Registration objects.
24
-     * @throws EE_Error
25
-     * @access protected
26
-     */
27
-    public function __construct($data = array())
28
-    {
29
-
30
-        // validate that the first element in the array is an EE_Registration object.
31
-        if (! reset($data) instanceof EE_Registration) {
32
-            throw new EE_Error(
33
-                esc_html__(
34
-                    'The EE_Message_Registrations_incoming_data class expects an array of EE_Registration objects.',
35
-                    'event_espresso'
36
-                )
37
-            );
38
-        }
39
-        parent::__construct($data);
40
-    }
41
-
42
-
43
-    /**
44
-     * setup the data.
45
-     * Sets up the expected data object for the messages prep using incoming registration objects.
46
-     *
47
-     * @return void
48
-     * @throws EE_Error
49
-     * @throws EntityNotFoundException
50
-     * @access protected
51
-     */
52
-    protected function _setup_data()
53
-    {
54
-        // we'll loop through each contact and setup the data needed.  Note that many properties will just be set as
55
-        // empty because this data handler is for a very specific set of data (i.e. just what's related to the
56
-        // registration).
57
-
58
-        $this->reg_objs = $this->data();
59
-        $this->txn      = $this->_maybe_get_transaction();
60
-        $this->_assemble_data();
61
-    }
62
-
63
-
64
-    /**
65
-     * If the incoming registrations all share the same transaction then this will return the transaction object shared
66
-     * among the registrations. Otherwise the transaction object is set to null because its intended to only represent
67
-     * one transaction.
68
-     *
69
-     * @return EE_Transaction|null
70
-     * @throws EE_Error
71
-     * @throws EntityNotFoundException
72
-     */
73
-    protected function _maybe_get_transaction()
74
-    {
75
-        $transactions = array();
76
-        foreach ($this->reg_objs as $registration) {
77
-            if ($registration instanceof EE_Registration) {
78
-                $transaction = $registration->transaction();
79
-                if ($transaction instanceof EE_Transaction) {
80
-                    $transactions[ $transaction->ID() ] = $transaction;
81
-                }
82
-            }
83
-        }
84
-        return count($transactions) === 1 ? reset($transactions) : null;
85
-    }
86
-
87
-
88
-    /**
89
-     * Returns database safe representation of the data later used to when instantiating this object.
90
-     *
91
-     * @param array $registrations The incoming data to be prepped.
92
-     * @return EE_Registration[] The data being prepared for the db
93
-     * @throws EE_Error
94
-     * @throws InvalidArgumentException
95
-     * @throws InvalidDataTypeException
96
-     * @throws InvalidInterfaceException
97
-     */
98
-    public static function convert_data_for_persistent_storage($registrations)
99
-    {
100
-        if (! self::validateRegistrationsForConversion($registrations)) {
101
-            return array();
102
-        }
103
-
104
-        // is this an array of ints?
105
-        $first_item = reset($registrations);
106
-        if (is_int($first_item)) {
107
-            return $registrations;
108
-        }
109
-
110
-        // k nope so let's pull from the registrations
111
-        $registration_ids = array_filter(
112
-            array_map(
113
-                function ($registration) {
114
-                    if ($registration instanceof EE_Registration) {
115
-                        return $registration->ID();
116
-                    }
117
-                    return false;
118
-                },
119
-                $registrations
120
-            )
121
-        );
122
-
123
-        return $registration_ids;
124
-    }
125
-
126
-
127
-    /**
128
-     * This validates incoming registrations (considers whether they are ids or EE_Registration objects.
129
-     *
130
-     * @param array $registrations Could be EE_Registration[] or int[]
131
-     * @return bool
132
-     * @throws EE_Error
133
-     * @throws InvalidArgumentException
134
-     * @throws InvalidDataTypeException
135
-     * @throws InvalidInterfaceException
136
-     */
137
-    protected static function validateRegistrationsForConversion($registrations)
138
-    {
139
-        if (is_array($registrations)) {
140
-            $first_item = reset($registrations);
141
-            if ($first_item instanceof EE_Registration) {
142
-                return true;
143
-            }
144
-            if (is_int($first_item)) {
145
-                // k let's some basic validation here.  This isn't foolproof but better than nothing.
146
-                // the purpose of this validation is to verify that the ids sent in match valid registrations existing
147
-                // in the db.  If the count is different, then we know they aren't valid.
148
-                $count_for_ids = EEM_Registration::instance()->count(
149
-                    array(
150
-                        array(
151
-                            'REG_ID' => array('IN', $registrations)
152
-                        )
153
-                    )
154
-                );
155
-                return $count_for_ids === count($registrations);
156
-            }
157
-        }
158
-        return false;
159
-    }
160
-
161
-
162
-    /**
163
-     * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
164
-     * can be sent into this method and converted back into the format used for instantiating with this data handler.
165
-     *
166
-     * @param array $data
167
-     * @return EE_Registration[]
168
-     * @throws EE_Error
169
-     * @throws InvalidArgumentException
170
-     * @throws InvalidDataTypeException
171
-     * @throws InvalidInterfaceException
172
-     */
173
-    public static function convert_data_from_persistent_storage($data)
174
-    {
175
-        // since this was added later, we need to account of possible back compat issues where data already queued for
176
-        // generation is in the old format, which is an array of EE_Registration objects.  So if that's the case, then
177
-        // let's just return them
178
-        // @see https://events.codebasehq.com/projects/event-espresso/tickets/10127
179
-        if (is_array($data) && reset($data) instanceof EE_Registration) {
180
-            return $data;
181
-        }
182
-
183
-        $registrations = is_array($data)
184
-            ? EEM_Registration::instance()->get_all(array(array('REG_ID' => array('IN', $data))))
185
-            : array();
186
-        return $registrations;
187
-    }
20
+	/**
21
+	 * Constructor.
22
+	 *
23
+	 * @param  EE_Registration[] $data expecting an array of EE_Registration objects.
24
+	 * @throws EE_Error
25
+	 * @access protected
26
+	 */
27
+	public function __construct($data = array())
28
+	{
29
+
30
+		// validate that the first element in the array is an EE_Registration object.
31
+		if (! reset($data) instanceof EE_Registration) {
32
+			throw new EE_Error(
33
+				esc_html__(
34
+					'The EE_Message_Registrations_incoming_data class expects an array of EE_Registration objects.',
35
+					'event_espresso'
36
+				)
37
+			);
38
+		}
39
+		parent::__construct($data);
40
+	}
41
+
42
+
43
+	/**
44
+	 * setup the data.
45
+	 * Sets up the expected data object for the messages prep using incoming registration objects.
46
+	 *
47
+	 * @return void
48
+	 * @throws EE_Error
49
+	 * @throws EntityNotFoundException
50
+	 * @access protected
51
+	 */
52
+	protected function _setup_data()
53
+	{
54
+		// we'll loop through each contact and setup the data needed.  Note that many properties will just be set as
55
+		// empty because this data handler is for a very specific set of data (i.e. just what's related to the
56
+		// registration).
57
+
58
+		$this->reg_objs = $this->data();
59
+		$this->txn      = $this->_maybe_get_transaction();
60
+		$this->_assemble_data();
61
+	}
62
+
63
+
64
+	/**
65
+	 * If the incoming registrations all share the same transaction then this will return the transaction object shared
66
+	 * among the registrations. Otherwise the transaction object is set to null because its intended to only represent
67
+	 * one transaction.
68
+	 *
69
+	 * @return EE_Transaction|null
70
+	 * @throws EE_Error
71
+	 * @throws EntityNotFoundException
72
+	 */
73
+	protected function _maybe_get_transaction()
74
+	{
75
+		$transactions = array();
76
+		foreach ($this->reg_objs as $registration) {
77
+			if ($registration instanceof EE_Registration) {
78
+				$transaction = $registration->transaction();
79
+				if ($transaction instanceof EE_Transaction) {
80
+					$transactions[ $transaction->ID() ] = $transaction;
81
+				}
82
+			}
83
+		}
84
+		return count($transactions) === 1 ? reset($transactions) : null;
85
+	}
86
+
87
+
88
+	/**
89
+	 * Returns database safe representation of the data later used to when instantiating this object.
90
+	 *
91
+	 * @param array $registrations The incoming data to be prepped.
92
+	 * @return EE_Registration[] The data being prepared for the db
93
+	 * @throws EE_Error
94
+	 * @throws InvalidArgumentException
95
+	 * @throws InvalidDataTypeException
96
+	 * @throws InvalidInterfaceException
97
+	 */
98
+	public static function convert_data_for_persistent_storage($registrations)
99
+	{
100
+		if (! self::validateRegistrationsForConversion($registrations)) {
101
+			return array();
102
+		}
103
+
104
+		// is this an array of ints?
105
+		$first_item = reset($registrations);
106
+		if (is_int($first_item)) {
107
+			return $registrations;
108
+		}
109
+
110
+		// k nope so let's pull from the registrations
111
+		$registration_ids = array_filter(
112
+			array_map(
113
+				function ($registration) {
114
+					if ($registration instanceof EE_Registration) {
115
+						return $registration->ID();
116
+					}
117
+					return false;
118
+				},
119
+				$registrations
120
+			)
121
+		);
122
+
123
+		return $registration_ids;
124
+	}
125
+
126
+
127
+	/**
128
+	 * This validates incoming registrations (considers whether they are ids or EE_Registration objects.
129
+	 *
130
+	 * @param array $registrations Could be EE_Registration[] or int[]
131
+	 * @return bool
132
+	 * @throws EE_Error
133
+	 * @throws InvalidArgumentException
134
+	 * @throws InvalidDataTypeException
135
+	 * @throws InvalidInterfaceException
136
+	 */
137
+	protected static function validateRegistrationsForConversion($registrations)
138
+	{
139
+		if (is_array($registrations)) {
140
+			$first_item = reset($registrations);
141
+			if ($first_item instanceof EE_Registration) {
142
+				return true;
143
+			}
144
+			if (is_int($first_item)) {
145
+				// k let's some basic validation here.  This isn't foolproof but better than nothing.
146
+				// the purpose of this validation is to verify that the ids sent in match valid registrations existing
147
+				// in the db.  If the count is different, then we know they aren't valid.
148
+				$count_for_ids = EEM_Registration::instance()->count(
149
+					array(
150
+						array(
151
+							'REG_ID' => array('IN', $registrations)
152
+						)
153
+					)
154
+				);
155
+				return $count_for_ids === count($registrations);
156
+			}
157
+		}
158
+		return false;
159
+	}
160
+
161
+
162
+	/**
163
+	 * Data that has been stored in persistent storage that was prepped by _convert_data_for_persistent_storage
164
+	 * can be sent into this method and converted back into the format used for instantiating with this data handler.
165
+	 *
166
+	 * @param array $data
167
+	 * @return EE_Registration[]
168
+	 * @throws EE_Error
169
+	 * @throws InvalidArgumentException
170
+	 * @throws InvalidDataTypeException
171
+	 * @throws InvalidInterfaceException
172
+	 */
173
+	public static function convert_data_from_persistent_storage($data)
174
+	{
175
+		// since this was added later, we need to account of possible back compat issues where data already queued for
176
+		// generation is in the old format, which is an array of EE_Registration objects.  So if that's the case, then
177
+		// let's just return them
178
+		// @see https://events.codebasehq.com/projects/event-espresso/tickets/10127
179
+		if (is_array($data) && reset($data) instanceof EE_Registration) {
180
+			return $data;
181
+		}
182
+
183
+		$registrations = is_array($data)
184
+			? EEM_Registration::instance()->get_all(array(array('REG_ID' => array('IN', $data))))
185
+			: array();
186
+		return $registrations;
187
+	}
188 188
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -28,7 +28,7 @@  discard block
 block discarded – undo
28 28
     {
29 29
 
30 30
         // validate that the first element in the array is an EE_Registration object.
31
-        if (! reset($data) instanceof EE_Registration) {
31
+        if ( ! reset($data) instanceof EE_Registration) {
32 32
             throw new EE_Error(
33 33
                 esc_html__(
34 34
                     'The EE_Message_Registrations_incoming_data class expects an array of EE_Registration objects.',
@@ -77,7 +77,7 @@  discard block
 block discarded – undo
77 77
             if ($registration instanceof EE_Registration) {
78 78
                 $transaction = $registration->transaction();
79 79
                 if ($transaction instanceof EE_Transaction) {
80
-                    $transactions[ $transaction->ID() ] = $transaction;
80
+                    $transactions[$transaction->ID()] = $transaction;
81 81
                 }
82 82
             }
83 83
         }
@@ -97,7 +97,7 @@  discard block
 block discarded – undo
97 97
      */
98 98
     public static function convert_data_for_persistent_storage($registrations)
99 99
     {
100
-        if (! self::validateRegistrationsForConversion($registrations)) {
100
+        if ( ! self::validateRegistrationsForConversion($registrations)) {
101 101
             return array();
102 102
         }
103 103
 
@@ -110,7 +110,7 @@  discard block
 block discarded – undo
110 110
         // k nope so let's pull from the registrations
111 111
         $registration_ids = array_filter(
112 112
             array_map(
113
-                function ($registration) {
113
+                function($registration) {
114 114
                     if ($registration instanceof EE_Registration) {
115 115
                         return $registration->ID();
116 116
                     }
Please login to merge, or discard this patch.
validators/email/EE_Messages_Email_Payment_Refund_Validator.class.php 2 patches
Indentation   +33 added lines, -33 removed lines patch added patch discarded remove patch
@@ -15,37 +15,37 @@
 block discarded – undo
15 15
 {
16 16
 
17 17
 
18
-    public function __construct($fields, $context)
19
-    {
20
-        $this->_m_name = 'email';
21
-        $this->_mt_name = 'payment_refund';
22
-
23
-        parent::__construct($fields, $context);
24
-    }
25
-
26
-    /**
27
-     * at this point no custom validation needed for this messenger/message_type combo.
28
-     */
29
-    protected function _modify_validator()
30
-    {
31
-        $new_config = $this->_messenger->get_validator_config();
32
-
33
-        // modify just event_list
34
-        $new_config['event_list'] = array(
35
-            'shortcodes' => array('event', 'attendee_list', 'ticket_list', 'datetime_list', 'venue', 'organization','recipient_details', 'recipient_list', 'event_author', 'primary_registration_details', 'primary_registration_list')
36
-            );
37
-        $new_config['ticket_list'] = array(
38
-            'shortcodes' => array('event_list', 'attendee_list', 'ticket', 'datetime_list', 'recipient_details', 'transaction')
39
-            );
40
-        $new_config['content'] = array(
41
-            'shortcodes' => array('event_list','attendee_list', 'ticket_list', 'organization', 'recipient_details', 'recipient_list', 'transaction', 'primary_registration_details', 'primary_registration_list', 'messenger')
42
-            );
43
-        $this->_messenger->set_validator_config($new_config);
44
-
45
-        if ($this->_context != 'admin') {
46
-            $this->_valid_shortcodes_modifier[ $this->_context ]['event_list'] = array('event', 'attendee_list', 'ticket_list', 'datetime_list', 'venue', 'organization', 'event_author', 'primary_registration_details', 'primary_registration_list', 'recipient_details', 'recipient_list');
47
-        }
48
-
49
-        $this->_specific_shortcode_excludes['content'] = array('[DISPLAY_PDF_URL]', '[DISPLAY_PDF_BUTTON]');
50
-    }
18
+	public function __construct($fields, $context)
19
+	{
20
+		$this->_m_name = 'email';
21
+		$this->_mt_name = 'payment_refund';
22
+
23
+		parent::__construct($fields, $context);
24
+	}
25
+
26
+	/**
27
+	 * at this point no custom validation needed for this messenger/message_type combo.
28
+	 */
29
+	protected function _modify_validator()
30
+	{
31
+		$new_config = $this->_messenger->get_validator_config();
32
+
33
+		// modify just event_list
34
+		$new_config['event_list'] = array(
35
+			'shortcodes' => array('event', 'attendee_list', 'ticket_list', 'datetime_list', 'venue', 'organization','recipient_details', 'recipient_list', 'event_author', 'primary_registration_details', 'primary_registration_list')
36
+			);
37
+		$new_config['ticket_list'] = array(
38
+			'shortcodes' => array('event_list', 'attendee_list', 'ticket', 'datetime_list', 'recipient_details', 'transaction')
39
+			);
40
+		$new_config['content'] = array(
41
+			'shortcodes' => array('event_list','attendee_list', 'ticket_list', 'organization', 'recipient_details', 'recipient_list', 'transaction', 'primary_registration_details', 'primary_registration_list', 'messenger')
42
+			);
43
+		$this->_messenger->set_validator_config($new_config);
44
+
45
+		if ($this->_context != 'admin') {
46
+			$this->_valid_shortcodes_modifier[ $this->_context ]['event_list'] = array('event', 'attendee_list', 'ticket_list', 'datetime_list', 'venue', 'organization', 'event_author', 'primary_registration_details', 'primary_registration_list', 'recipient_details', 'recipient_list');
47
+		}
48
+
49
+		$this->_specific_shortcode_excludes['content'] = array('[DISPLAY_PDF_URL]', '[DISPLAY_PDF_BUTTON]');
50
+	}
51 51
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -32,18 +32,18 @@
 block discarded – undo
32 32
 
33 33
         // modify just event_list
34 34
         $new_config['event_list'] = array(
35
-            'shortcodes' => array('event', 'attendee_list', 'ticket_list', 'datetime_list', 'venue', 'organization','recipient_details', 'recipient_list', 'event_author', 'primary_registration_details', 'primary_registration_list')
35
+            'shortcodes' => array('event', 'attendee_list', 'ticket_list', 'datetime_list', 'venue', 'organization', 'recipient_details', 'recipient_list', 'event_author', 'primary_registration_details', 'primary_registration_list')
36 36
             );
37 37
         $new_config['ticket_list'] = array(
38 38
             'shortcodes' => array('event_list', 'attendee_list', 'ticket', 'datetime_list', 'recipient_details', 'transaction')
39 39
             );
40 40
         $new_config['content'] = array(
41
-            'shortcodes' => array('event_list','attendee_list', 'ticket_list', 'organization', 'recipient_details', 'recipient_list', 'transaction', 'primary_registration_details', 'primary_registration_list', 'messenger')
41
+            'shortcodes' => array('event_list', 'attendee_list', 'ticket_list', 'organization', 'recipient_details', 'recipient_list', 'transaction', 'primary_registration_details', 'primary_registration_list', 'messenger')
42 42
             );
43 43
         $this->_messenger->set_validator_config($new_config);
44 44
 
45 45
         if ($this->_context != 'admin') {
46
-            $this->_valid_shortcodes_modifier[ $this->_context ]['event_list'] = array('event', 'attendee_list', 'ticket_list', 'datetime_list', 'venue', 'organization', 'event_author', 'primary_registration_details', 'primary_registration_list', 'recipient_details', 'recipient_list');
46
+            $this->_valid_shortcodes_modifier[$this->_context]['event_list'] = array('event', 'attendee_list', 'ticket_list', 'datetime_list', 'venue', 'organization', 'event_author', 'primary_registration_details', 'primary_registration_list', 'recipient_details', 'recipient_list');
47 47
         }
48 48
 
49 49
         $this->_specific_shortcode_excludes['content'] = array('[DISPLAY_PDF_URL]', '[DISPLAY_PDF_BUTTON]');
Please login to merge, or discard this patch.