@@ -905,27 +905,6 @@ public function changeOrderStatus($order_id, $status_id)
905
905
}
906
906
}
907
907
908
- $ useScheduler = $ this ->modx ->getOption ('ms2_use_scheduler ' , null , false );
909
- $ task = null ;
910
- if ($ useScheduler ) {
911
- /** @var Scheduler $scheduler */
912
- $ path = $ this ->modx ->getOption (
913
- 'scheduler.core_path ' ,
914
- null ,
915
- $ this ->modx ->getOption ('core_path ' ) . 'components/scheduler/ '
916
- );
917
- $ scheduler = $ this ->modx ->getService ('scheduler ' , 'Scheduler ' , $ path . 'model/scheduler/ ' );
918
- if ($ scheduler ) {
919
- $ task = $ scheduler ->getTask ('minishop2 ' , 'ms2_send_email ' );
920
- if (!$ task ) {
921
- $ task = $ this ->createEmailTask ();
922
- }
923
- } else {
924
- $ useScheduler = false ;
925
- $ this ->modx ->log (1 , 'not found Scheduler extra ' );
926
- }
927
- }
928
-
929
908
if ($ status ->get ('email_manager ' )) {
930
909
$ subject = $ this ->pdoTools ->getChunk ('@INLINE ' . $ status ->get ('subject_manager ' ), $ pls );
931
910
$ tpl = '' ;
@@ -940,21 +919,7 @@ public function changeOrderStatus($order_id, $status_id)
940
919
$ this ->modx ->getOption ('ms2_email_manager ' , null , $ this ->modx ->getOption ('emailsender ' ))
941
920
)
942
921
);
943
- if (!empty ($ subject )) {
944
- foreach ($ emails as $ email ) {
945
- if (preg_match ('#.*?@# ' , $ email )) {
946
- if ($ useScheduler && $ task instanceof sTask) {
947
- $ task ->schedule ('+1 second ' , [
948
- 'email ' => $ email ,
949
- 'subject ' => $ subject ,
950
- 'body ' => $ body
951
- ]);
952
- } else {
953
- $ this ->sendEmail ($ email , $ subject , $ body );
954
- }
955
- }
956
- }
957
- }
922
+ $ this ->shootEmail ($ emails , $ subject , $ body );
958
923
}
959
924
960
925
if ($ status ->get ('email_user ' )) {
@@ -966,24 +931,78 @@ public function changeOrderStatus($order_id, $status_id)
966
931
}
967
932
$ body = $ this ->modx ->runSnippet ('msGetOrder ' , array_merge ($ pls , ['tpl ' => $ tpl ]));
968
933
$ email = $ profile ->get ('email ' );
969
- if (!empty ($ subject ) && preg_match ('#.*?@# ' , $ email )) {
970
- if ($ useScheduler && $ task instanceof sTask) {
971
- $ task ->schedule ('+1 second ' , [
972
- 'email ' => $ email ,
973
- 'subject ' => $ subject ,
974
- 'body ' => $ body
975
- ]);
976
- } else {
977
- $ this ->sendEmail ($ email , $ subject , $ body );
978
- }
979
- }
934
+ $ this ->shootEmail ($ email , $ subject , $ body );
980
935
}
981
936
}
982
937
}
983
938
984
939
return true ;
985
940
}
986
941
942
+ /**
943
+ * Method of sending email depends on the settings
944
+ *
945
+ * @param array|string $emails
946
+ * @param string $subject
947
+ * @param string $body
948
+ * @param bool $force
949
+ *
950
+ * @return bool
951
+ */
952
+ public function shootEmail ($ emails , $ subject , $ body = '' , $ force = false )
953
+ {
954
+ if (empty ($ subject ) || empty ($ emails )) {
955
+ return false ;
956
+ }
957
+ if (is_string ($ emails )) {
958
+ $ emails = [$ emails ];
959
+ }
960
+
961
+ $ sTask = null ;
962
+ if ($ force === false && $ this ->modx ->getOption ('ms2_use_scheduler ' , null , false )) {
963
+ /** @var Scheduler $scheduler */
964
+ $ scheduler = $ this ->modx ->getService ('scheduler ' , 'Scheduler ' ,
965
+ $ this ->modx ->getOption ('scheduler.core_path ' , null , MODX_CORE_PATH . 'components/scheduler/ ' ) . 'model/scheduler/ '
966
+ );
967
+ if ($ scheduler ) {
968
+ $ sTask = $ scheduler ->getTask ('minishop2 ' , 'ms2_send_email ' );
969
+ if (empty ($ sTask )) {
970
+ $ sTask = $ this ->modx ->newObject ('sFileTask ' );
971
+ $ sTask ->fromArray ([
972
+ 'class_key ' => 'sFileTask ' ,
973
+ 'content ' => '/tasks/sendEmail.php ' ,
974
+ 'namespace ' => 'minishop2 ' ,
975
+ 'reference ' => 'ms2_send_email ' ,
976
+ 'description ' => 'MiniShop2 Email '
977
+ ]);
978
+ if (!$ sTask ->save ()) {
979
+ $ sTask = null ;
980
+ }
981
+ }
982
+ } else {
983
+ $ this ->modx ->log (1 , 'Not found Scheduler extra ' );
984
+ }
985
+ }
986
+
987
+ $ result = false ;
988
+ foreach ($ emails as $ email ) {
989
+ if (preg_match ('#.*?@# ' , $ email )) {
990
+ if ($ sTask instanceof sTask) {
991
+ $ sTask ->schedule ('+1 second ' , [
992
+ 'email ' => $ email ,
993
+ 'subject ' => $ subject ,
994
+ 'body ' => $ body
995
+ ]);
996
+ $ result = true ;
997
+ } else {
998
+ $ result = $ this ->sendEmail ($ email , $ subject , $ body );
999
+ }
1000
+ }
1001
+ }
1002
+
1003
+ return $ result ;
1004
+ }
1005
+
987
1006
/**
988
1007
* Function for sending email
989
1008
*
@@ -1307,24 +1326,4 @@ protected function updateSetting($key, $value)
1307
1326
$ setting ->set ('value ' , json_encode ($ value ));
1308
1327
$ setting ->save ();
1309
1328
}
1310
-
1311
- /**
1312
- * Creating Sheduler's task for sending email
1313
- * @return false|object|null
1314
- */
1315
- private function createEmailTask ()
1316
- {
1317
- $ task = $ this ->modx ->newObject ('sFileTask ' );
1318
- $ task ->fromArray ([
1319
- 'class_key ' => 'sFileTask ' ,
1320
- 'content ' => '/tasks/sendEmail.php ' ,
1321
- 'namespace ' => 'minishop2 ' ,
1322
- 'reference ' => 'ms2_send_email ' ,
1323
- 'description ' => 'MiniShop2 Email '
1324
- ]);
1325
- if (!$ task ->save ()) {
1326
- return false ;
1327
- }
1328
- return $ task ;
1329
- }
1330
1329
}
0 commit comments