diff --git a/src/controllers/FilesController.php b/src/controllers/FilesController.php index 34ef7da7..22b014ea 100644 --- a/src/controllers/FilesController.php +++ b/src/controllers/FilesController.php @@ -153,7 +153,7 @@ public function actionCreateExportZip() return $this->asFailure($this->getErrorMessage(implode('\n', $errors))); } - Craft::$app->getElements()->saveElement($order, true, true, true); + Craft::$app->getElements()->saveElement($order); $transaction->commit(); return $this->asSuccess(null, ['translatedFiles' => $zipDest]); diff --git a/src/controllers/OrderController.php b/src/controllers/OrderController.php index e4073096..98e8c380 100644 --- a/src/controllers/OrderController.php +++ b/src/controllers/OrderController.php @@ -547,7 +547,7 @@ public function actionSaveOrder() $order->wordCount = array_sum($wordCounts); // Manual Translation will make orders 'in progress' status after creation - $success = Craft::$app->getElements()->saveElement($order, true, true, true); + $success = Craft::$app->getElements()->saveElement($order); if (!$success) { Translations::$plugin->logHelper->log('[' . __METHOD__ . '] Couldn’t save the order', Constants::LOG_LEVEL_ERROR); @@ -617,7 +617,7 @@ public function actionSaveOrder() $order->status = Constants::ORDER_STATUS_NEW; $order->dateOrdered = new DateTime(); - $success = Craft::$app->getElements()->saveElement($order, true, true, true); + $success = Craft::$app->getElements()->saveElement($order); if (! $success) { Translations::$plugin->logHelper->log('[' . __METHOD__ . '] Couldn’t save the order', Constants::LOG_LEVEL_ERROR); @@ -1185,7 +1185,7 @@ public function actionUpdateOrderFilesSource() } } - Craft::$app->getElements()->saveElement($order, true, true, false); + Craft::$app->getElements()->saveElement($order); $transaction->commit(); } catch (\Exception $e) { $transaction->rollBack(); @@ -1229,7 +1229,7 @@ public function actionAcceptQuote() $order->status = Constants::ORDER_STATUS_NEW; $order->logActivity("Order quote accepted"); - Craft::$app->getElements()->saveElement($order, true, true, false); + Craft::$app->getElements()->saveElement($order); return $this->asSuccess($this->getSuccessMessage("Quote approve request sent")); } @@ -1266,7 +1266,7 @@ public function actionDeclineQuote() $order->status = Constants::ORDER_STATUS_GETTING_QUOTE; $order->logActivity("Order quote declined"); - Craft::$app->getElements()->saveElement($order, true, true, false); + Craft::$app->getElements()->saveElement($order); return $this->asSuccess($this->getSuccessMessage("Quote decline request sent")); } diff --git a/src/migrations/m240829_054957_drop_commerce_draft_table.php b/src/migrations/m240829_054957_drop_commerce_draft_table.php index e5f1eacb..fe494d7f 100644 --- a/src/migrations/m240829_054957_drop_commerce_draft_table.php +++ b/src/migrations/m240829_054957_drop_commerce_draft_table.php @@ -2,7 +2,9 @@ namespace acclaro\translations\migrations; +use Craft; use craft\db\Migration; +use acclaro\translations\elements\Order; /** * m240829_054957_drop_commerce_draft_table migration. @@ -20,6 +22,45 @@ public function safeUp(): bool echo "Done dropping translations_commercedrafts table...\n"; + echo "Re-indexing all existing orders...\n"; + + $batchSize = 100; + $offset = 0; + $totalProcessed = 0; + + while (true) { + $orders = Order::find() + ->limit($batchSize) + ->offset($offset) + ->all(); + + if (empty($orders)) { + break; + } + + foreach ($orders as $order) { + try { + $order = Craft::$app->getElements()->getElementById($order->id, null, $order->sourceSite); + if ($order) { + $order->resaving = true; + if (!Craft::$app->getElements()->saveElement($order)) { + Craft::error('Failed to save order ID: ' . $order->id, __METHOD__); + } + } + } catch (\Throwable $e) { + Craft::error('Error re-saving order ID: ' . $order->id . '. Error: ' . $e->getMessage(), __METHOD__); + throw $e; + } + } + + $totalProcessed += count($orders); + $offset += $batchSize; + + echo "Processed $totalProcessed orders so far...\n"; + } + + echo "Done re-indexing all orders.\n"; + return true; } diff --git a/src/services/repository/DraftRepository.php b/src/services/repository/DraftRepository.php index 29ce601e..01616384 100644 --- a/src/services/repository/DraftRepository.php +++ b/src/services/repository/DraftRepository.php @@ -163,7 +163,7 @@ public function applyTranslationDraft($fileId, $file='', $draft='') $canonical = $draft->getCanonical(); $draft->setFieldValues($canonical->getFieldValues()); // Let's try saving the element prior to applying draft - if (!Craft::$app->getElements()->saveElement($draft, true, true, true)) { + if (!Craft::$app->getElements()->saveElement($draft)) { throw new InvalidElementException($draft); }