|
5 | 5 | use wcf\data\user\User; |
6 | 6 | use wcf\system\background\job\AbstractBackgroundJob; |
7 | 7 | use wcf\system\background\job\AbstractUniqueBackgroundJob; |
8 | | -use wcf\system\database\util\PreparedStatementConditionBuilder; |
9 | 8 | use wcf\system\exception\ParentClassException; |
10 | 9 | use wcf\system\session\SessionHandler; |
11 | 10 | use wcf\system\SingletonFactory; |
@@ -73,52 +72,20 @@ public function enqueueAt(AbstractBackgroundJob|array $jobs, int $time): void |
73 | 72 | $jobs = [$jobs]; |
74 | 73 | } |
75 | 74 |
|
76 | | - $identifiers = []; |
77 | 75 | foreach ($jobs as $job) { |
78 | 76 | if (!($job instanceof AbstractBackgroundJob)) { |
79 | 77 | throw new ParentClassException(\get_class($job), AbstractBackgroundJob::class); |
80 | 78 | } |
81 | | - |
82 | | - if ($job instanceof AbstractUniqueBackgroundJob) { |
83 | | - $identifiers[] = $job->identifier(); |
84 | | - } |
85 | | - } |
86 | | - |
87 | | - if ($identifiers !== []) { |
88 | | - $conditions = new PreparedStatementConditionBuilder(); |
89 | | - $conditions->add("identifier IN (?)", [$identifiers]); |
90 | | - |
91 | | - $sql = "SELECT DISTINCT identifier |
92 | | - FROM wcf1_background_job |
93 | | - {$conditions}"; |
94 | | - $statement = WCF::getDB()->prepare($sql); |
95 | | - $statement->execute($conditions->getParameters()); |
96 | | - $existingJobs = $statement->fetchAll(\PDO::FETCH_COLUMN); |
97 | | - |
98 | | - $jobs = \array_filter( |
99 | | - $jobs, |
100 | | - function ($job) use ($existingJobs) { |
101 | | - if ($job instanceof AbstractUniqueBackgroundJob && \in_array($job->identifier(), $existingJobs)) { |
102 | | - return false; |
103 | | - } |
104 | | - |
105 | | - return true; |
106 | | - } |
107 | | - ); |
108 | | - |
109 | | - if ($jobs === []) { |
110 | | - return; |
111 | | - } |
112 | 79 | } |
113 | 80 |
|
114 | 81 | $sql = "INSERT IGNORE INTO wcf1_background_job |
115 | | - (job, time,identifier) |
116 | | - VALUES (?, ?, ?)"; |
117 | | - $statement = WCF::getDB()->prepare($sql); |
| 82 | + (job, time, identifier) |
| 83 | + VALUES (?, ?, ?)"; |
| 84 | + $statement = WCF::getDB()->prepare($sql); |
118 | 85 |
|
119 | | - foreach ($jobs as $job) { |
120 | | - $identifier = null; |
121 | | - if ($job instanceof AbstractUniqueBackgroundJob) { |
| 86 | + foreach ($jobs as $job) { |
| 87 | + $identifier = null; |
| 88 | + if ($job instanceof AbstractUniqueBackgroundJob) { |
122 | 89 | $identifier = $job->identifier(); |
123 | 90 | } |
124 | 91 |
|
|
0 commit comments