array('index', 'view', 'create', 'update', 'admin', 'delete', 'addMax', 'editMax', 'editAlbumsMax'), 'users' => array('@'), ), array('allow', 'actions' => array('json'), 'users' => array('*'), ), array('deny', // deny all users 'users' => array('*'), ), ); } /** * Displays a particular model. * @param integer $id the ID of the model to be displayed */ public function actionView($id) { $this->render('view', array( 'model' => $this->loadModel($id), )); } /** * Creates a new model. * If creation is successful, the browser will be redirected to the 'view' page. */ public function actionCreate() { $model = new Article; $model->geoLat = 0; $model->geoLon = 0; $model->address = ''; $model->phone = ''; $model->externalLinkText = ''; // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['Article'])) { $model->attributes = $_POST['Article']; date_default_timezone_set("UTC"); $model->dateTime = date('Y-m-d H:i:s'); if ($model->save()) $this->redirect(array('view', 'id' => $model->id)); } $this->render('create', array( 'model' => $model, )); } /** * Updates a particular model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { $model = $this->loadModel($id); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['Article'])) { $model->attributes = $_POST['Article']; if ($model->save()) $this->redirect(array('view', 'id' => $model->id)); } $this->render('update', array( 'model' => $model, )); } /** * Deletes a particular model. * If deletion is successful, the browser will be redirected to the 'admin' page. * @param integer $id the ID of the model to be deleted */ public function actionDelete($id) { $this->loadModel($id)->delete(); // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser if (!isset($_GET['ajax'])) $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin')); } /** * Lists all models. */ public function actionIndex() { $dataProvider = new CActiveDataProvider('Article'); $this->render('index', array( 'dataProvider' => $dataProvider, )); } /** * Manages all models. */ public function actionAdmin() { $model = new Article('search'); $model->unsetAttributes(); // clear any default values if (isset($_GET['Article'])) $model->attributes = $_GET['Article']; $this->render('admin', array( 'model' => $model, )); } public function actionJson() { $dataArray = Article::model()->findAll(); foreach ($dataArray as &$data) { if ($data->address === null) { $data->address = ''; } if ($data->phone === null) { $data->phone = ''; } if ($data->externalLinkText === null) { $data->externalLinkText = ''; } } $this->layout = false; header('Content-type: application/json'); echo CJavaScript::jsonEncode($dataArray); Yii::app()->end(); } public function actionAddMax() { $model = new ArticleMaxForm; if (isset($_POST['ArticleMaxForm'])) { $model->attributes = $_POST['ArticleMaxForm']; if ($this->saveArticleForm($model)) { $this->redirect(array('editAlbumsMax')); } else { $this->redirect(array('editMax')); } return; } $this->render('addMax', array( 'model' => $model, )); } public function actionEditMax($id) { $model = new ArticleMaxForm; if (isset($_POST['ArticleMaxForm'])) { $model->attributes = $_POST['ArticleMaxForm']; if ($this->saveArticleForm($model)) { $this->redirect(array('editAlbumsMax')); } else { $this->redirect(array('editMax')); } return; } $currentArticle = Article::model()->findByPk($id); if ($currentArticle) { $titleTranslationModel = Translation::model()->find('name=:name', array(':name' => $currentArticle->title)); if ($titleTranslationModel) { $model->titleRu = $titleTranslationModel->textRu; $model->titleEn = $titleTranslationModel->textEn; $model->titleZh = $titleTranslationModel->textZh; } $descriptionTranslationModel = Translation::model()->find('name=:name', array(':name' => $currentArticle->content)); if ($descriptionTranslationModel) { $model->contentRu = $descriptionTranslationModel->textRu; $model->contentEn = $descriptionTranslationModel->textEn; $model->contentZh = $descriptionTranslationModel->textZh; } $model->geoLat = $currentArticle->geoLat; $model->geoLon = $currentArticle->geoLon; $model->externalLink = $currentArticle->externalLink; $model->name = $currentArticle->name; } $this->render('editMax', array( 'model' => $model, )); } public function actionEditAlbumsMax() { $model = new ArticleMaxForm; $this->render('editPhotosMax', array( 'model' => $model, )); } /** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer $id the ID of the model to be loaded * @return Article the loaded model * @throws CHttpException */ public function loadModel($id) { $model = Article::model()->findByPk($id); if ($model === null) throw new CHttpException(404, 'The requested page does not exist.'); return $model; } /** * Performs the AJAX validation. * @param Article $model the model to be validated */ protected function performAjaxValidation($model) { if (isset($_POST['ajax']) && $_POST['ajax'] === 'article-form') { echo CActiveForm::validate($model); Yii::app()->end(); } } protected function saveArticleForm($model) { if (empty($model->titleEn)) { $model->titleEn = 'NEED_TRANSLATION'; } if (empty($model->titleZh)) { $model->titleZh = 'NEED_TRANSLATION'; } if (empty($model->contentEn)) { $model->contentEn = 'NEED_TRANSLATION'; } if (empty($model->contentZh)) { $model->contentZh = 'NEED_TRANSLATION'; } $article = Article::model()->find('name=:name', array(':name' => $model->name)); if (!$article) { $article = new Article; $article->name = Yii::app()->user->name . '_article_' . ArticleJournalRelation::model()->count('journalName=:journalName', array(':journalName' => Yii::app()->user->name . '_journal')); } $article->title = $article->name . '_title'; $article->content = $article->name . '_content'; $article->geoLat = 0; $article->geoLon = 0; $article->externalLink = $model->externalLink; $article->type = 0; date_default_timezone_set("UTC"); $article->dateTime = date('Y-m-d H:i:s'); $titleTranslationModel = Translation::model()->find('name=:name', array(':name' => $article->title)); if ($titleTranslationModel === null) { $titleTranslationModel = new Translation; } $titleTranslationModel->name = $article->title; $titleTranslationModel->textRu = $model->titleRu; $titleTranslationModel->textEn = $model->titleEn; $titleTranslationModel->textZh = $model->titleZh; $titleTranslationModel->save(); $contentTranslationModel = Translation::model()->find('name=:name', array(':name' => $article->content)); if ($contentTranslationModel === null) { $contentTranslationModel = new Translation; } $contentTranslationModel->name = $article->content; $contentTranslationModel->textRu = $model->contentRu; $contentTranslationModel->textEn = $model->contentEn; $contentTranslationModel->textZh = $model->contentZh; $contentTranslationModel->save(); if ($article->save()) { $articleJournalRelation = ArticleJournalRelation::model()->find('journalName=:journalName AND articleName=:articleName', array( ':journalName' => Yii::app()->user->name . '_journal', ':articleName' => $article->name, )); if (!$articleJournalRelation) { $articleJournalRelation = new ArticleJournalRelation; $articleJournalRelation->articleName = $article->name; $articleJournalRelation->journalName = Yii::app()->user->name . '_journal'; return $articleJournalRelation->save(); } else { return true; } //ArticleJournalRelation::model() } return false; } }