예제 #1
0
 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));
     }
 }