db->beginTransaction(); foreach ($dataToArchive as $toArchive) { if (!$toArchive->archive()) { $transaction->rollBack(); $className = get_class($toArchive); throw new UserException("Ошибка архивирования {$className}."); } } $transaction->commit(); } } public static function errorMessageRecorder( string $message, array $errors, string $action, array &$msgBox = null ) { if (!is_null($msgBox)) { $msgBox[] = $message; } else { Yii::$app->session->setFlash( 'alert', [ 'body' => $message, 'options' => ['class' => 'alert-danger'] ] ); } Yii::error($message . PHP_EOL . print_r($errors, true), $action); } public static function successMessageRecorder( string $message, array &$msgBox = null ) { if (!is_null($msgBox)) { $msgBox[] = $message; } else { Yii::$app->session->setFlash( 'alert', [ 'body' => $message, 'options' => ['class' => 'alert-success'] ] ); } } public static function postDataExtractor( array $dataSource, string $path ) { return array_filter( ArrayHelper::getValue( $dataSource, $path, [] ), function ($item) { return !EmptyCheck::isEmpty($item) && $item !== '0'; } ); } public static function makeArrayClone(array $dataSource) { return unserialize(serialize($dataSource)); } }