public function actionDict_copy($book_id) { $book = $this->loadBook($book_id); if (!$book->can("dict_edit")) { throw new CHttpException(403, "Только модераторы могут редактировать словарь перевода."); } if ($_GET["from"]) { $source = Book::model()->findByPk(intval($_GET["from"])); if (!$source->can("dict_edit")) { throw new CHttpException(403, "Вы можете копировать словарь только из того перевода, где являетесь модератором."); } $srcDict = Dict::model()->book($source->id)->findAll(); $dstDict = Dict::model()->book($book->id)->findAll(); $sql = ""; $params = array(":book_id" => $book->id, ":user_id" => Yii::app()->user->id); $cntAdded = 0; foreach ($srcDict as $i => $term) { $found = false; foreach ($dstDict as $t) { if ($t->term == $term->term) { $found = true; } } if ($found) { continue; } if ($sql != "") { $sql .= ", "; } $sql .= "(:book_id, :user_id, :term{$i}, :descr{$i})"; $params[":term{$i}"] = $term->term; $params[":descr{$i}"] = $term->descr; $cntAdded++; } if ($sql != "") { $sql = "INSERT INTO dict (book_id, user_id, term, descr) VALUES " . $sql; Yii::app()->db->createCommand($sql)->execute($params); Yii::app()->user->setFlash("success", "В словарь перенесено " . Yii::t("app", "{n} определение|{n} определения|{n} определений", $cntAdded) . " из перевода {$source->ahref}."); } else { Yii::app()->user->setFlash("warning", "Ни одного нового слова в словаре перевода {$source->ahref} не найдено."); } $this->redirect($book->url); } else { $sources = Book::model()->moderated_by(Yii::app()->user->id)->findAll("t.id != :id", array(":id" => $book->id)); foreach ($sources as $k => $v) { if ($v->dict_cnt == 0) { unset($sources[$k]); } } $this->render("dict_copy", array("book" => $book, "sources" => $sources)); } }