|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace app\commands; |
|
4
|
|
|
|
|
5
|
|
|
use app\models\BaseObject; |
|
6
|
|
|
use app\models\ObjectStaticValues; |
|
7
|
|
|
use app\models\Submission; |
|
8
|
|
|
use app\modules\review\models\Review; |
|
9
|
|
|
use Yii; |
|
10
|
|
|
use yii\base\Event; |
|
11
|
|
|
use yii\console\Controller; |
|
12
|
|
|
|
|
13
|
|
|
class SubmissionsController extends Controller |
|
14
|
|
|
{ |
|
15
|
|
|
|
|
16
|
|
|
const EVENT_SEND_SUBMISSIONS = 'event_send_submission'; |
|
17
|
|
|
|
|
18
|
|
|
/** |
|
19
|
|
|
* Send submissions method |
|
20
|
|
|
* @param Submission[] $submissions |
|
21
|
|
|
*/ |
|
22
|
|
|
private function sendSubmissions($submissions) |
|
23
|
|
|
{ |
|
24
|
|
|
foreach ($submissions as $submission) { |
|
25
|
|
|
echo "Sending {$submission->id}\n"; |
|
26
|
|
|
if ($submission->form === null) { |
|
27
|
|
|
$submission->processed = Submission::STATUS_FATAL_ERROR; |
|
28
|
|
|
} else { |
|
29
|
|
|
$event = new Event(); |
|
30
|
|
|
$event->sender = $submission; |
|
31
|
|
|
$this->trigger('event_send_submission', $event); |
|
32
|
|
|
} |
|
33
|
|
|
$submission->save(true, ['sending_status']); |
|
34
|
|
|
} |
|
35
|
|
|
} |
|
36
|
|
|
|
|
37
|
|
|
public function actionMarkSpam() |
|
38
|
|
|
{ |
|
39
|
|
|
Submission::updateAll(['is_deleted' => 1], ['spam' => 1]); |
|
40
|
|
|
} |
|
41
|
|
|
|
|
42
|
|
|
public function actionClearDeleted() |
|
43
|
|
|
{ |
|
44
|
|
|
$time = new \DateTime(); |
|
45
|
|
|
$days = Yii::$app->getModule('core')->daysToStoreSubmissions; |
|
46
|
|
|
$time->sub(new \DateInterval("P{$days}D")); |
|
47
|
|
|
/** @var BaseObject $object */ |
|
48
|
|
|
$object = BaseObject::getForClass(Submission::className()); |
|
|
|
|
|
|
49
|
|
|
if ($object !== null) { |
|
50
|
|
|
$submissionIds = Submission::find() |
|
51
|
|
|
->select(['id']) |
|
52
|
|
|
->where('UNIX_TIMESTAMP(`date_received`) < ' . $time->getTimestamp() . ' AND `is_deleted` = \'1\'') |
|
53
|
|
|
->column(); |
|
54
|
|
|
Review::deleteAll(['submission_id' => $submissionIds]); |
|
55
|
|
|
Yii::$app->db->createCommand()->delete( |
|
56
|
|
|
$object->column_properties_table_name, |
|
57
|
|
|
['object_model_id' => $submissionIds] |
|
58
|
|
|
); |
|
59
|
|
|
Yii::$app->db->createCommand()->delete( |
|
60
|
|
|
$object->eav_table_name, |
|
61
|
|
|
['object_model_id' => $submissionIds] |
|
62
|
|
|
); |
|
63
|
|
|
Yii::$app->db->createCommand()->delete( |
|
64
|
|
|
$object->categories_table_name, |
|
65
|
|
|
['object_model_id' => $submissionIds] |
|
66
|
|
|
); |
|
67
|
|
|
ObjectStaticValues::deleteAll( |
|
68
|
|
|
[ |
|
69
|
|
|
'object_id' => $object->id, |
|
70
|
|
|
'object_model_id' => $submissionIds, |
|
71
|
|
|
] |
|
72
|
|
|
); |
|
73
|
|
|
Submission::deleteAll(['id' => $submissionIds]); |
|
74
|
|
|
} |
|
75
|
|
|
} |
|
76
|
|
|
|
|
77
|
|
|
/** |
|
78
|
|
|
* Send new submissions action |
|
79
|
|
|
* @param bool $sendFailed |
|
80
|
|
|
*/ |
|
81
|
|
|
public function actionSendNew($sendFailed = false) |
|
82
|
|
|
{ |
|
83
|
|
|
/** @var Submission[] $submissions */ |
|
84
|
|
|
$statuses = [ |
|
85
|
|
|
Submission::STATUS_NEW, |
|
86
|
|
|
]; |
|
87
|
|
|
if ($sendFailed) { |
|
88
|
|
|
$statuses[] = Submission::STATUS_ERROR; |
|
89
|
|
|
} |
|
90
|
|
|
$submissions = Submission::find() |
|
91
|
|
|
->with('form') |
|
92
|
|
|
->where( |
|
93
|
|
|
[ |
|
94
|
|
|
'sending_status' => $statuses, |
|
95
|
|
|
'spam' => 0, |
|
96
|
|
|
'is_deleted' => 0 |
|
97
|
|
|
] |
|
98
|
|
|
) |
|
99
|
|
|
->all(); |
|
100
|
|
|
|
|
101
|
|
|
$this->sendSubmissions($submissions); |
|
102
|
|
|
} |
|
103
|
|
|
|
|
104
|
|
|
/** |
|
105
|
|
|
* Send failed submissions action |
|
106
|
|
|
*/ |
|
107
|
|
|
public function actionSendFailed() |
|
108
|
|
|
{ |
|
109
|
|
|
/** @var Submission[] $submissions */ |
|
110
|
|
|
$submissions = Submission::find() |
|
111
|
|
|
->with('form') |
|
112
|
|
|
->where( |
|
113
|
|
|
[ |
|
114
|
|
|
'sending_status' => Submission::STATUS_ERROR, |
|
115
|
|
|
'spam' => 0, |
|
116
|
|
|
'is_deleted' => 0 |
|
117
|
|
|
] |
|
118
|
|
|
) |
|
119
|
|
|
->all(); |
|
120
|
|
|
$this->sendSubmissions($submissions, Submission::STATUS_HOPELESS_ERROR); |
|
121
|
|
|
} |
|
122
|
|
|
|
|
123
|
|
|
/** |
|
124
|
|
|
* Mark filed submissions as new |
|
125
|
|
|
*/ |
|
126
|
|
|
public function actionReliveFailed() |
|
127
|
|
|
{ |
|
128
|
|
|
Submission::updateAll( |
|
129
|
|
|
[ |
|
130
|
|
|
'sending_status' => Submission::STATUS_NEW, |
|
131
|
|
|
], |
|
132
|
|
|
[ |
|
133
|
|
|
'sending_status' => [Submission::STATUS_ERROR, Submission::STATUS_HOPELESS_ERROR] |
|
134
|
|
|
] |
|
135
|
|
|
); |
|
136
|
|
|
} |
|
137
|
|
|
} |
|
138
|
|
|
|
This method has been deprecated. The supplier of the class has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.