@@ -27,61 +27,77 @@ final class MemberSpammerProcessorTask extends CronTask
2727 */
2828 public function run ()
2929 {
30- $ command = sprintf ( '%1$s/registration/code/model/member_spammer_estimator/member_spammer_estimator_process.sh "%1$s/registration/code/model/member_spammer_estimator" "%1$s" ' , Director::baseFolder ());
31- $ process = new Process ($ command );
32- $ process ->setTimeout (PHP_INT_MAX );
33- $ process ->setIdleTimeout (PHP_INT_MAX );
34- $ process ->run ();
35-
36- while ($ process ->isRunning ()) {
37- }
38-
39- $ csv_content = $ process ->getOutput ();
40- echo $ csv_content .PHP_EOL ;
41-
42- if (!$ process ->isSuccessful ()) {
43- throw new Exception ("Process Error! " );
44- }
45-
46- $ rows = CSVReader::load ($ csv_content );
47- $ output = "<p>Nothing to process</p> " ;
48-
49- if (count ($ rows ) > 0 )
50- { $ output = '<ul> ' ;
51-
52- foreach ($ rows as $ row ){
53- $ member_id = intval ($ row ["ID " ]);
54- $ member = Member::get ()->byID ($ member_id );
55-
56- if (!$ member ) continue ;
57-
58- $ action_url = $ row ["Type " ] == "Ham " ? "/members-spammers/%s/deactivate " : "/members-spammers/%s/activate " ;
59- $ action_url = Director::absoluteURL (sprintf ($ action_url , $ member ->ID ));
60- $ action_text = $ row ["Type " ] == "Ham " ? "Mark as Spam " : "Mark as Ham " ;
61- $ edit_url = Director::absoluteURL (sprintf ("/admin/security/EditForm/field/Members/item/%s/edit " , $ member ->ID ));
62-
63- $ output .= sprintf (
64- "<li>[%s] - %s, %s (%s).<a href='%s'>Edit</a> <a href='%s'>%s</a></li> " ,
65- $ row ["Type " ],
66- $ member ->FirstName ,
67- $ member ->Surname ,
68- $ member ->Email ,
69- $ edit_url ,
70- $ action_url ,
71- $ action_text
72- );
30+ SapphireTransactionManager::getInstance ()->transaction (function (){
31+ $ command = sprintf ( '%1$s/registration/code/model/member_spammer_estimator/member_spammer_estimator_process.sh "%1$s/registration/code/model/member_spammer_estimator" "%1$s" ' , Director::baseFolder ());
32+ $ process = new Process ($ command );
33+ $ process ->setTimeout (PHP_INT_MAX );
34+ $ process ->setIdleTimeout (PHP_INT_MAX );
35+ $ process ->run ();
36+
37+ while ($ process ->isRunning ()) {
38+ }
39+
40+ $ csv_content = $ process ->getOutput ();
41+ echo $ csv_content .PHP_EOL ;
42+
43+ if (!$ process ->isSuccessful ()) {
44+ throw new Exception ("Process Error! " );
45+ }
46+
47+ $ rows = CSVReader::load ($ csv_content );
48+ $ output = "<p>Nothing to process</p> " ;
49+
50+ if (count ($ rows ) > 0 )
51+ { $ output = '<ul> ' ;
52+
53+ foreach ($ rows as $ row ){
54+ $ member_id = intval ($ row ["ID " ]);
55+ $ type = $ row ["Type " ];
56+ $ member = Member::get ()->byID ($ member_id );
57+
58+ if (!$ member ) continue ;
59+ // member processing
60+ if ($ type == 'Spam ' ){
61+ echo sprintf ("Marking Member %s as Spam " , $ member ->Email ).PHP_EOL ;
62+ $ member ->deActivate ();
63+ }
64+ else {
65+ echo sprintf ("Marking Member %s as Ham " , $ member ->Email ).PHP_EOL ;
66+ $ member ->activate ();
67+ }
68+
69+ $ member ->write ();
70+
71+ $ action_url = $ type == "Ham " ? "/members-spammers/%s/deactivate " : "/members-spammers/%s/activate " ;
72+ $ action_url = Director::absoluteURL (sprintf ($ action_url , $ member ->ID ));
73+ $ action_text = $ type == "Ham " ? "Mark as Spam " : "Mark as Ham " ;
74+ $ edit_url = Director::absoluteURL (sprintf ("/admin/security/EditForm/field/Members/item/%s/edit " , $ member ->ID ));
75+
76+ $ output .= sprintf (
77+ "<li>[%s] - %s, %s (%s).<a href='%s'>Edit</a> <a href='%s'>%s</a></li> " ,
78+ $ row ["Type " ],
79+ $ member ->FirstName ,
80+ $ member ->Surname ,
81+ $ member ->Email ,
82+ $ edit_url ,
83+ $ action_url ,
84+ $ action_text
85+ );
86+
87+
88+ }
89+ $ output .= '</ul> ' ;
7390 }
74- $ output .= '</ul> ' ;
75- }
76-
77- $ email = EmailFactory::getInstance ()->buildEmail
78- (
79- "noreply@openstack.org " ,
80- MEMBER_SPAM_PROCESSOR_TO ,
81- "Member Spammer Processor Task Results " ,
82- $ output
83- );
84-
85- $ email ->send ();
91+
92+ $ email = EmailFactory::getInstance ()->buildEmail
93+ (
94+ "noreply@openstack.org " ,
95+ MEMBER_SPAM_PROCESSOR_TO ,
96+ "Member Spammer Processor Task Results " ,
97+ $ output
98+ );
99+
100+ $ email ->send ();
101+ });
86102 }
87103}
0 commit comments