2424 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
2525 */
2626class email_action_step extends base_action_step {
27-
2827 use \tool_trigger \helper \datafield_manager;
2928
3029 /**
@@ -75,7 +74,9 @@ protected function init() {
7574 $ this ->emailsubject = $ this ->data ['emailsubject ' ];
7675 $ this ->emailcontent = $ this ->data ['emailcontent_editor[text] ' ];
7776 $ this ->messageplain = format_text_email (
78- $ this ->data ['emailcontent_editor[text] ' ], $ this ->data ['emailcontent_editor[format] ' ]);
77+ $ this ->data ['emailcontent_editor[text] ' ],
78+ $ this ->data ['emailcontent_editor[format] ' ]
79+ );
7980 }
8081
8182 /**
@@ -106,17 +107,25 @@ public function execute($step, $trigger, $event, $stepresults) {
106107 $ emailcontent = $ this ->render_datafields ($ this ->emailcontent );
107108 $ messageplain = $ this ->render_datafields ($ this ->messageplain );
108109
109- // Check we have a valid email address.
110- if ($ emailto == clean_param ($ emailto , PARAM_EMAIL )) {
110+ $ recipients = array_map ('trim ' , explode (', ' , $ emailto ));
111+
112+ $ firsteventdata = null ;
113+ $ firstmsgid = null ;
114+
115+ foreach ($ recipients as $ recipient ) {
116+ // Check we have a valid email address.
117+ if ($ recipient !== clean_param ($ recipient , PARAM_EMAIL )) {
118+ continue ;
119+ }
111120
112121 // Check if user exists and use user record.
113- $ user = $ DB ->get_record ('user ' , ['email ' => $ emailto , 'deleted ' => 0 ]);
122+ $ user = $ DB ->get_record ('user ' , ['email ' => $ recipient , 'deleted ' => 0 ]);
114123
115124 // If user not found, use noreply as a base.
116125 if (empty ($ user )) {
117126 $ user = \core_user::get_noreply_user ();
118- $ user ->firstname = $ emailto ;
119- $ user ->email = $ emailto ;
127+ $ user ->firstname = $ recipient ;
128+ $ user ->email = $ recipient ;
120129 $ user ->maildisplay = 1 ;
121130 $ user ->emailstop = 0 ;
122131 }
@@ -140,16 +149,23 @@ public function execute($step, $trigger, $event, $stepresults) {
140149 throw new \invalid_response_exception ('Tried but failed to send message. ' );
141150 }
142151
143- $ stepresults ['email_action_messageid ' ] = $ msgid ;
144- foreach ((array )$ eventdata as $ key => $ value ) {
152+ if ($ firsteventdata === null ) {
153+ $ firsteventdata = $ eventdata ;
154+ $ firstmsgid = $ msgid ;
155+ }
156+ }
157+
158+ if ($ firsteventdata !== null ) {
159+ $ stepresults ['email_action_messageid ' ] = $ firstmsgid ;
160+ foreach ((array )$ firsteventdata as $ key => $ value ) {
145161 if (is_scalar ($ value )) {
146162 $ stepresults ['email_action_ ' . $ key ] = $ value ;
147163 }
148164 }
149- $ stepresults ['email_action_userfrom_id ' ] = $ eventdata ->userfrom ->id ;
150- $ stepresults ['email_action_userfrom_email ' ] = $ eventdata ->userfrom ->email ;
151- $ stepresults ['email_action_userto_id ' ] = $ eventdata ->userto ->id ;
152- $ stepresults ['email_action_userto_email ' ] = $ eventdata ->userto ->email ;
165+ $ stepresults ['email_action_userfrom_id ' ] = $ firsteventdata ->userfrom ->id ;
166+ $ stepresults ['email_action_userfrom_email ' ] = $ firsteventdata ->userfrom ->email ;
167+ $ stepresults ['email_action_userto_id ' ] = $ firsteventdata ->userto ->id ;
168+ $ stepresults ['email_action_userto_email ' ] = $ firsteventdata ->userto ->email ;
153169 } else {
154170 $ stepresults ['email_action_messageid ' ] = false ;
155171 }
@@ -164,13 +180,13 @@ public function execute($step, $trigger, $event, $stepresults) {
164180 public function form_definition_extra ($ form , $ mform , $ customdata ) {
165181
166182 // To!
167- $ mform ->addElement ('text ' , 'emailto ' , get_string ('emailto ' , 'tool_trigger ' ));
183+ $ mform ->addElement ('text ' , 'emailto ' , get_string ('emailto ' , 'tool_trigger ' ));
168184 $ mform ->setType ('emailto ' , PARAM_RAW_TRIMMED );
169185 $ mform ->addRule ('emailto ' , get_string ('required ' ), 'required ' );
170186 $ mform ->addHelpButton ('emailto ' , 'emailto ' , 'tool_trigger ' );
171187
172188 // Subject!
173- $ mform ->addElement ('text ' , 'emailsubject ' , get_string ('emailsubject ' , 'tool_trigger ' ));
189+ $ mform ->addElement ('text ' , 'emailsubject ' , get_string ('emailsubject ' , 'tool_trigger ' ));
174190 $ mform ->setType ('emailsubject ' , PARAM_RAW_TRIMMED );
175191 $ mform ->addRule ('emailsubject ' , get_string ('required ' ), 'required ' );
176192 $ mform ->addHelpButton ('emailsubject ' , 'emailsubject ' , 'tool_trigger ' );
@@ -213,6 +229,5 @@ public static function add_privacy_metadata($collection, $privacyfields) {
213229 */
214230 public static function get_fields () {
215231 return self ::$ stepfields ;
216-
217232 }
218233}
0 commit comments