Esempio n. 1
0
 /**
  * @return string
  */
 public function actionCheckout()
 {
     $this->view->title = \Yii::t('skeeks/shop/app', 'Checkout') . ' | ' . \Yii::t('skeeks/shop/app', 'Shop');
     $v3toysOrder = V3toysOrder::createCurrent();
     $v3toysOrder->loadDefaultValues();
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         if ($v3toysOrder->load(\Yii::$app->request->post()) && $v3toysOrder->save()) {
             foreach (\Yii::$app->shop->shopFuser->shopBaskets as $shopBasket) {
                 $shopBasket->delete();
             }
             try {
                 \Yii::$app->mailer->view->theme->pathMap['@app/mail'][] = '@v3toys/skeeks/mail';
                 \Yii::$app->mailer->compose('create-order', ['model' => $v3toysOrder])->setFrom([\Yii::$app->cms->adminEmail => \Yii::$app->cms->appName . ''])->setTo($v3toysOrder->email)->setSubject(\Yii::$app->cms->appName . ': новый заказ #' . $v3toysOrder->id)->send();
                 if (\Yii::$app->v3toysSettings->notifyEmails) {
                     foreach (\Yii::$app->v3toysSettings->notifyEmails as $email) {
                         \Yii::$app->mailer->view->theme->pathMap['@app/mail'][] = '@v3toys/skeeks/mail';
                         \Yii::$app->mailer->compose('create-order', ['model' => $v3toysOrder])->setFrom([\Yii::$app->cms->adminEmail => \Yii::$app->cms->appName . ''])->setTo($email)->setSubject(\Yii::$app->cms->appName . ': новый заказ #' . $v3toysOrder->id)->send();
                     }
                 }
             } catch (\Exception $e) {
                 \Yii::error('Email submit error: ' . $e->getMessage());
             }
             $rr->message = 'Заказ успешно создан';
             $rr->success = true;
             $rr->redirect = Url::to(['/v3toys/cart/finish', 'key' => $v3toysOrder->key]);
         } else {
             $rr->message = 'Проверьте правильность заполнения полей';
             $rr->success = false;
         }
         return $rr;
     }
     return $this->render($this->action->id, ['model' => $v3toysOrder]);
 }
Esempio n. 2
0
 public function actionCheckTest()
 {
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         if (\Yii::$app->request->post('className')) {
             $className = \Yii::$app->request->post('className');
             if (!class_exists($className)) {
                 $rr->message = \Yii::t('app', 'Test is not found');
                 return (array) $rr;
             }
             if (!is_subclass_of($className, CheckComponent::className())) {
                 $rr->message = \Yii::t('app', 'Incorrect test');
                 return (array) $rr;
             }
             /**
              * @var $checkTest CheckComponent
              */
             try {
                 $checkTest = new $className();
                 if ($lastValue = \Yii::$app->request->post('lastValue')) {
                     $checkTest->lastValue = $lastValue;
                 }
                 $checkTest->run();
                 $rr->success = true;
                 $rr->data = (array) $checkTest;
             } catch (\Exception $e) {
                 $rr->message = \Yii::t('app', 'Test is not done') . ': ' . $e->getMessage();
             }
         }
     }
     return (array) $rr;
 }
Esempio n. 3
0
 public function actionViewFileEdit()
 {
     $rootViewFile = \Yii::$app->request->get('root-file');
     $model = new ViewFileEditModel(['rootViewFile' => $rootViewFile]);
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         if ($model->load(\Yii::$app->request->post())) {
             if (!$model->saveFile()) {
                 $rr->success = false;
                 $rr->message = "Не удалось сохранить файл.";
             }
             $rr->message = "Сохранено";
             $rr->success = true;
         }
         return $rr;
     }
     return $this->render($this->action->id, ['model' => $model]);
 }
Esempio n. 4
0
 public function actionBackup()
 {
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         try {
             ob_start();
             \Yii::$app->dbDump->dumpRun();
             $result = ob_get_clean();
             $rr->success = true;
             $rr->message = \Yii::t('app', "A copy created successfully");
             $rr->data = ['result' => $result];
         } catch (\Exception $e) {
             $rr->success = false;
             $rr->message = $e->getMessage();
         }
         return $rr;
     }
     return $rr;
 }
Esempio n. 5
0
 /**
  * @return RequestResponse
  */
 public function actionFormSubmit()
 {
     $rr = new RequestResponse();
     $v3toysMessage = new V3toysMessage();
     $v3toysMessage->loadDefaultValues();
     try {
         if ($rr->isRequestAjaxPost()) {
             if ($elementId = \Yii::$app->request->post('element_id')) {
                 $v3toysMessage->addProduct($elementId);
             }
             if ($v3toysMessage->load(\Yii::$app->request->post()) && $v3toysMessage->save()) {
                 $rr->success = true;
                 $rr->message = "Ожидайте звонка";
             }
         }
     } catch (\Exception $e) {
         $rr->success = false;
         $rr->message = $e->getMessage();
     }
     return $rr;
 }
Esempio n. 6
0
 public function actionIndex()
 {
     $clearDirs = [['label' => 'common ' . \Yii::t('app', 'temporary files'), 'dir' => new Dir(\Yii::getAlias('@common/runtime'), false)], ['label' => 'console ' . \Yii::t('app', 'temporary files'), 'dir' => new Dir(\Yii::getAlias('@console/runtime'), false)], ['label' => 'runtime (' . \Yii::t('app', 'current site') . ')', 'dir' => new Dir(\Yii::getAlias('@runtime'), false)], ['label' => \Yii::t('app', 'Cache files') . ' (' . \Yii::t('app', 'current site') . ')', 'dir' => new Dir(\Yii::getAlias('@runtime/cache'), false)], ['label' => \Yii::t('app', 'Files debug information') . ' (' . \Yii::t('app', 'current site') . ')', 'dir' => new Dir(\Yii::getAlias('@runtime/debug'), false)], ['label' => \Yii::t('app', 'Log files') . ' (' . \Yii::t('app', 'current site') . ')', 'dir' => new Dir(\Yii::getAlias('@runtime/logs'), false)]];
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         foreach ($clearDirs as $data) {
             $dir = ArrayHelper::getValue($data, 'dir');
             if ($dir instanceof Dir) {
                 if ($dir->isExist()) {
                     $dir->clear();
                 }
             }
         }
         \Yii::$app->db->getSchema()->refresh();
         \Yii::$app->cache->flush();
         \Yii::$app->cms->generateModulesConfigFile();
         $rr->success = true;
         $rr->message = \Yii::t('app', 'Cache cleared');
         return $rr;
     }
     return $this->render('index', ['clearDirs' => $clearDirs]);
 }
Esempio n. 7
0
 /**
  * @param $username
  * @return string
  */
 public function actionEditInfo()
 {
     $model = $this->user;
     $rr = new RequestResponse();
     if ($rr->isRequestOnValidateAjaxForm()) {
         return $rr->ajaxValidateForm($model);
     }
     if ($rr->isRequestAjaxPost()) {
         if ($model->load(\Yii::$app->request->post()) && $model->save()) {
             $rr->success = true;
             $rr->message = 'Данные успешно сохранены';
         } else {
             $rr->message = 'Не получилось сохранить данные';
         }
         return $rr;
     }
     return $this->render($this->action->id);
 }
Esempio n. 8
0
 /**
  * Создание заказа
  * @return array|\yii\web\Response
  */
 public function actionCreateOrder()
 {
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         try {
             $fuser = \Yii::$app->shop->shopFuser;
             if (!$fuser->shopBaskets) {
                 throw new Exception(\skeeks\cms\shop\Module::t('app', 'Your basket is empty'));
             }
             if ($fuser->load(\Yii::$app->request->post()) && $fuser->save()) {
                 $rr->success = true;
                 $rr->message = "";
                 $fuser->scenario = ShopFuser::SCENARIO_CREATE_ORDER;
                 if ($fuser->validate()) {
                     $order = ShopOrder::createOrderByFuser($fuser);
                     if (!$order->isNewRecord) {
                         $rr->message = \skeeks\cms\shop\Module::t('app', 'The order #{order_id} created successfully', ['order_id' => $order->id]);
                         $rr->success = true;
                         $rr->redirect = Url::to(['/shop/order/view', 'id' => $order->id]);
                         $rr->data = ['order' => $order];
                     } else {
                         throw new Exception(\skeeks\cms\shop\Module::t('app', 'Incorrect data of the new order') . ": " . array_shift($order->getFirstErrors()));
                     }
                 } else {
                     throw new Exception(\skeeks\cms\shop\Module::t('app', 'Not enogh data for ordering') . ": " . array_shift($fuser->getFirstErrors()));
                 }
             } else {
                 throw new Exception(\skeeks\cms\shop\Module::t('app', 'Not enogh data for ordering') . ": " . array_shift($fuser->getFirstErrors()));
             }
         } catch (Exception $e) {
             $rr->message = $e->getMessage();
             $rr->success = false;
         }
         $rr->data = \Yii::$app->shop->shopFuser->toArray([], \Yii::$app->shop->shopFuser->extraFields());
         return (array) $rr;
     } else {
         return $this->goBack();
     }
 }
 public function actionSubmit()
 {
     $rr = new RequestResponse();
     $model = new Comments2Message();
     if ($rr->isRequestOnValidateAjaxForm()) {
         return $rr->ajaxValidateForm($model);
     }
     if ($rr->isRequestAjaxPost()) {
         $model->scenario = Comments2Message::SCENARIO_SITE_INSERT;
         $model->page_url = \Yii::$app->request->referrer;
         if ($model->load(\Yii::$app->request->post())) {
             //Проверка на максимальное количество комментариев к одному посту от одного пользователя.
             $messagesFind = Comments2Message::find();
             if (\Yii::$app->user->isGuest) {
                 $messagesFind->andWhere(['ip' => Request::getRealUserIp()]);
             } else {
                 $messagesFind->andWhere(['created_by' => \Yii::$app->user->identity->id]);
             }
             $messagesFind2 = clone $messagesFind;
             $messagesFind->andWhere(['status' => Comments2Message::STATUS_ALLOWED])->andWhere(['element_id' => $model->element_id]);
             if (\Yii::$app->comments2->maxCountMessagesForUser != 0) {
                 if ($messagesFind->count() >= \Yii::$app->comments2->maxCountMessagesForUser) {
                     $rr->success = false;
                     $rr->message = \skeeks\cms\comments2\Module::t('app', 'You have already added a comment on this post before.');
                     return $rr;
                 }
             }
             //Проверка частоты добавления комментариев
             if (\Yii::$app->comments2->securityEnabledRateLimit == Cms::BOOL_Y) {
                 $messagesFind2 = Comments2Message::find();
                 if (\Yii::$app->user->isGuest) {
                     $messagesFind2->andWhere(['ip' => Request::getRealUserIp()]);
                 } else {
                     $messagesFind2->andWhere(['created_by' => \Yii::$app->user->identity->id]);
                 }
                 $lastTime = \Yii::$app->formatter->asTimestamp(time()) - (int) \Yii::$app->comments2->securityRateLimitTime;
                 $messagesFind2->andWhere(['>=', 'created_at', $lastTime]);
                 //print_r($messagesFind2->createCommand()->rawSql);die;
                 if ($messagesFind2->count() >= \Yii::$app->comments2->securityRateLimitRequests) {
                     $rr->success = false;
                     $rr->message = \skeeks\cms\comments2\Module::t('app', 'You too often add comments.');
                     return $rr;
                 }
             }
             if ($model->save()) {
                 $rr->success = true;
                 if (\Yii::$app->comments2->enabledBeforeApproval == Cms::BOOL_Y) {
                     $rr->message = \Yii::$app->comments2->messageSuccessBeforeApproval;
                 } else {
                     $rr->message = \Yii::$app->comments2->messageSuccess;
                     //Отключена предмодерация, сразу публикуем
                     $model->status = Comments2Message::STATUS_ALLOWED;
                     $model->scenario = ActiveRecord::SCENARIO_DEFAULT;
                     $model->save();
                 }
                 $model->notifyCreate();
             } else {
                 $rr->success = false;
                 $rr->message = \skeeks\cms\comments2\Module::t('app', 'You comments not added') . ": " . implode(",", $model->getFirstErrors());
             }
         } else {
             $rr->success = false;
             $rr->message = \skeeks\cms\comments2\Module::t('app', 'You comments not added') . ": " . implode(",", $model->getFirstErrors());
         }
     }
     return $rr;
 }
Esempio n. 10
0
 /**
  * @return array
  */
 public function actionUpdateOrderAddProduct()
 {
     $rr = new RequestResponse();
     if ($this->model) {
         $model = $this->model;
     }
     if ($rr->isRequestAjaxPost()) {
         $product_id = \Yii::$app->request->post('product_id');
         $quantity = \Yii::$app->request->post('quantity');
         /**
          * @var ShopProduct $product
          */
         $product = ShopProduct::find()->where(['id' => $product_id])->one();
         if (!$product) {
             $rr->message = \Yii::t('skeeks/shop/app', 'This product is not found, it may be removed.');
             return (array) $rr;
         }
         $shopBasket = ShopBasket::find()->where(['order_id' => $model->id, 'product_id' => $product_id, 'fuser_id' => null])->one();
         if (!$shopBasket) {
             $shopBasket = new ShopBasket(['order_id' => $model->id, 'product_id' => $product->id, 'quantity' => 0]);
         }
         $shopBasket->quantity = $shopBasket->quantity + $quantity;
         if (!$shopBasket->recalculate()->save()) {
             $rr->success = false;
             $rr->message = \Yii::t('skeeks/shop/app', 'Failed to add item to cart');
         } else {
             $rr->success = true;
             $rr->message = \Yii::t('skeeks/shop/app', 'Item added to cart');
         }
         $rr->data = $model->toArray([], $model->extraFields());
         return (array) $rr;
     } else {
         return $this->goBack();
     }
 }
Esempio n. 11
0
 /**
  * Восстановлеине пароля
  * @return string|Response
  */
 public function actionRegisterByEmail()
 {
     if (!\Yii::$app->user->isGuest) {
         return $this->goHome();
     }
     $rr = new RequestResponse();
     $model = new SignupForm();
     $model->scenario = SignupForm::SCENARION_ONLYEMAIL;
     //Запрос на валидацию ajax формы
     if ($rr->isRequestOnValidateAjaxForm()) {
         return $rr->ajaxValidateForm($model);
     }
     //Запрос ajax post
     if ($rr->isRequestAjaxPost()) {
         if ($model->load(\Yii::$app->request->post()) && ($registeredUser = $model->signup())) {
             $rr->success = true;
             $rr->message = 'Для дальнейших действий, проверьте вашу почту.';
             return $rr;
         } else {
             $rr->message = 'Не удалось зарегистрироваться';
         }
         return (array) $rr;
     }
     return $this->render('register', ['model' => $model]);
 }
Esempio n. 12
0
 public function actionAuth()
 {
     $this->view->title = \Yii::t('app', 'Authorization');
     $this->layout = '@skeeks/cms/modules/admin/views/layouts/unauthorized.php';
     $goUrl = "";
     $loginModel = new LoginFormUsernameOrEmail();
     $passwordResetModel = new PasswordResetRequestFormEmailOrLogin();
     if ($ref = UrlHelper::getCurrent()->getRef()) {
         $goUrl = $ref;
     }
     $rr = new RequestResponse();
     if (!\Yii::$app->user->isGuest) {
         return $goUrl ? $this->redirect($goUrl) : $this->goHome();
     }
     //Авторизация
     if (\Yii::$app->request->post('do') == 'login') {
         if ($rr->isRequestOnValidateAjaxForm()) {
             return $rr->ajaxValidateForm($loginModel);
         }
         if ($rr->isRequestAjaxPost()) {
             if ($loginModel->load(\Yii::$app->request->post()) && $loginModel->login()) {
                 if (!$goUrl) {
                     $goUrl = Yii::$app->getUser()->getReturnUrl($defaultUrl);
                 }
                 $rr->redirect = $goUrl;
                 $rr->success = true;
                 $rr->message = "";
                 $rr->message = "";
                 return (array) $rr;
             } else {
                 $rr->success = false;
                 $rr->message = \Yii::t('app', "Unsuccessful attempt authorization");
                 return (array) $rr;
             }
         }
     }
     //Запрос на сброс пароля
     if (\Yii::$app->request->post('do') == 'password-reset') {
         if ($rr->isRequestOnValidateAjaxForm()) {
             return $rr->ajaxValidateForm($passwordResetModel);
         }
         if ($rr->isRequestAjaxPost()) {
             if ($passwordResetModel->load(\Yii::$app->request->post()) && $passwordResetModel->sendEmail()) {
                 $rr->success = true;
                 $rr->message = \Yii::t('app', "Check your email address");
                 return (array) $rr;
             } else {
                 $rr->success = false;
                 $rr->message = \Yii::t('app', "Failed send email");
                 return (array) $rr;
             }
         }
     }
     return $this->render('auth', ['loginModel' => $loginModel, 'passwordResetModel' => $passwordResetModel, 'goUrl' => $goUrl]);
 }
 public function actionSubmit()
 {
     $rr = new RequestResponse();
     $model = new Reviews2Message();
     if ($rr->isRequestOnValidateAjaxForm()) {
         return $rr->ajaxValidateForm($model);
     }
     if ($rr->isRequestAjaxPost()) {
         $model->scenario = Reviews2Message::SCENARIO_SITE_INSERT;
         $model->page_url = \Yii::$app->request->referrer;
         if ($model->load(\Yii::$app->request->post())) {
             //Проверка на максимальное количество отзывов к одному посту от одного пользователя.
             $messagesFind = Reviews2Message::find();
             if (\Yii::$app->user->isGuest) {
                 $messagesFind->andWhere(['ip' => \Yii::$app->request->userIP])->andWhere(['or', ['created_by' => null], ['created_by' => '']]);
             } else {
                 $messagesFind->andWhere(['created_by' => \Yii::$app->user->identity->id]);
             }
             $messagesFind2 = clone $messagesFind;
             $messagesFind->andWhere(['status' => Reviews2Message::STATUS_ALLOWED])->andWhere(['element_id' => $model->element_id]);
             if (\Yii::$app->reviews2->maxCountMessagesForUser != 0) {
                 if ($messagesFind->count() >= \Yii::$app->reviews2->maxCountMessagesForUser) {
                     $rr->success = false;
                     $rr->message = \Yii::t('skeeks/reviews2', "You have already added a review for this post earlier.");
                     return $rr;
                 }
             }
             //Проверка частоты добавления отзывов
             if (\Yii::$app->reviews2->securityEnabledRateLimit == Cms::BOOL_Y) {
                 $messagesFind2 = Reviews2Message::find();
                 if (\Yii::$app->user->isGuest) {
                     $messagesFind2->andWhere(['ip' => \Yii::$app->request->userIP]);
                 } else {
                     $messagesFind2->andWhere(['created_by' => \Yii::$app->user->identity->id]);
                 }
                 $lastTime = \Yii::$app->formatter->asTimestamp(time()) - (int) \Yii::$app->reviews2->securityRateLimitTime;
                 $messagesFind2->andWhere(['>=', 'created_at', $lastTime]);
                 //print_r($messagesFind2->createCommand()->rawSql);die;
                 if ($messagesFind2->count() >= \Yii::$app->reviews2->securityRateLimitRequests) {
                     $rr->success = false;
                     $rr->message = \Yii::t('skeeks/reviews2', "You too often add reviews.");
                     return $rr;
                 }
             }
             if ($model->save()) {
                 $rr->success = true;
                 if (\Yii::$app->reviews2->enabledBeforeApproval == Cms::BOOL_Y) {
                     $rr->message = \Yii::$app->reviews2->messageSuccessBeforeApproval;
                 } else {
                     $rr->message = \Yii::$app->reviews2->messageSuccess;
                     //Отключена предмодерация, сразу публикуем
                     $model->status = Reviews2Message::STATUS_ALLOWED;
                     $model->save();
                 }
                 $model->notifyCreate();
             } else {
                 $rr->success = false;
                 $rr->message = \Yii::t('skeeks/reviews2', "Review not added") . ": " . implode(",", $model->getFirstErrors());
             }
         } else {
             $rr->success = false;
             $rr->message = \Yii::t('skeeks/reviews2', "Review not added") . ": " . implode(",", $model->getFirstErrors());
         }
     }
     return $rr;
 }
Esempio n. 14
0
 /**
  * Deletes an existing Game model.
  * If deletion is successful, the browser will be redirected to the 'index' page.
  * @return mixed
  */
 public function actionDelete()
 {
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         try {
             if ($this->model->delete()) {
                 $rr->message = \Yii::t('app', 'Record deleted successfully');
                 $rr->success = true;
             } else {
                 $rr->message = \Yii::t('app', 'Record deleted unsuccessfully');
                 $rr->success = false;
             }
         } catch (\Exception $e) {
             $rr->message = $e->getMessage();
             $rr->success = false;
         }
         return (array) $rr;
     }
 }
Esempio n. 15
0
 /**
  * Deletes an existing Game model.
  * If deletion is successful, the browser will be redirected to the 'index' page.
  * @return mixed
  */
 public function actionDelete()
 {
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         try {
             $model = $this->model;
             $id = $model->name;
             $model = $this->findModel($id);
             if (!in_array($model->item->name, CmsManager::protectedPermissions())) {
                 if (\Yii::$app->getAuthManager()->remove($model->item)) {
                     $rr->message = \Yii::t('app', 'Record deleted successfully');
                     $rr->success = true;
                 } else {
                     $rr->message = \Yii::t('app', 'Record deleted unsuccessfully');
                     $rr->success = false;
                 }
             } else {
                 $rr->message = \Yii::t('app', 'This entry can not be deleted!');
                 $rr->success = false;
             }
         } catch (\Exception $e) {
             $rr->message = $e->getMessage();
             $rr->success = false;
         }
         return (array) $rr;
     }
 }
 public function actionRemove()
 {
     $component = $this->_component;
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         if (\Yii::$app->request->post('do') == 'all') {
             if ($settings = \skeeks\cms\models\CmsComponentSettings::baseQuery($component)->all()) {
                 /**
                  * @var $setting CmsComponentSettings
                  */
                 foreach ($settings as $setting) {
                     //TODO: добавить отладочную информацию.
                     if ($setting->delete()) {
                     }
                 }
                 $component->invalidateCache();
                 $rr->message = 'Настройки успешно удалены';
                 $rr->success = true;
             }
         } else {
             if (\Yii::$app->request->post('do') == 'default') {
                 if ($settings = \skeeks\cms\models\CmsComponentSettings::fetchByComponentDefault($component)) {
                     $settings->delete();
                     $component->invalidateCache();
                     $rr->message = 'Настройки успешно удалены';
                     $rr->success = true;
                 }
             } else {
                 if (\Yii::$app->request->post('do') == 'sites') {
                     if ($settings = \skeeks\cms\models\CmsComponentSettings::baseQuerySites($component)->all()) {
                         /**
                          * @var $setting CmsComponentSettings
                          */
                         foreach ($settings as $setting) {
                             //TODO: добавить отладочную информацию.
                             if ($setting->delete()) {
                             }
                         }
                         $component->invalidateCache();
                         $rr->message = 'Настройки успешно удалены';
                         $rr->success = true;
                     }
                 } else {
                     if (\Yii::$app->request->post('do') == 'users') {
                         if ($settings = \skeeks\cms\models\CmsComponentSettings::baseQueryUsers($component)->all()) {
                             /**
                              * @var $setting CmsComponentSettings
                              */
                             foreach ($settings as $setting) {
                                 //TODO: добавить отладочную информацию.
                                 if ($setting->delete()) {
                                 }
                             }
                             $component->invalidateCache();
                             $rr->message = 'Настройки успешно удалены';
                             $rr->success = true;
                         }
                     } else {
                         if (\Yii::$app->request->post('do') == 'site') {
                             $code = \Yii::$app->request->post('code');
                             $site = CmsSite::find()->where(['code' => $code])->one();
                             if ($site) {
                                 if ($settings = \skeeks\cms\models\CmsComponentSettings::fetchByComponentSite($component, $site)) {
                                     $settings->delete();
                                     $component->invalidateCache();
                                     $rr->message = 'Настройки успешно удалены';
                                     $rr->success = true;
                                 }
                             }
                         } else {
                             if (\Yii::$app->request->post('do') == 'user') {
                                 $id = \Yii::$app->request->post('id');
                                 $user = User::find()->where(['id' => $id])->one();
                                 if ($user) {
                                     if ($settings = \skeeks\cms\models\CmsComponentSettings::fetchByComponentUser($component, $user)) {
                                         $settings->delete();
                                         $component->invalidateCache();
                                         $rr->message = 'Настройки успешно удалены';
                                         $rr->success = true;
                                     }
                                 }
                             } else {
                                 $rr->message = 'Все настройки удалены';
                                 $rr->success = true;
                             }
                         }
                     }
                 }
             }
         }
         return (array) $rr;
     }
     return $this->render($this->action->id, ['component' => $component]);
 }
Esempio n. 17
0
 /**
  * Прикрепить к моделе другой файл
  * @see skeeks\cms\widgets\formInputs\StorageImage
  * @return RequestResponse
  */
 public function actionLinkToModels()
 {
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         try {
             if (!\Yii::$app->request->post('file_id') || !\Yii::$app->request->post('modelId') || !\Yii::$app->request->post('modelClassName') || !\Yii::$app->request->post('modelRelation')) {
                 throw new \yii\base\Exception("Не достаточно входных данных");
             }
             $file = CmsStorageFile::findOne(\Yii::$app->request->post('file_id'));
             if (!$file) {
                 throw new \yii\base\Exception("Возможно файл уже удален или не загрузился");
             }
             if (!is_subclass_of(\Yii::$app->request->post('modelClassName'), ActiveRecord::className())) {
                 throw new \yii\base\Exception("Невозможно привязать файл к этой моделе");
             }
             $className = \Yii::$app->request->post('modelClassName');
             /**
              * @var $model ActiveRecord
              */
             $model = $className::findOne(\Yii::$app->request->post('modelId'));
             if (!$model) {
                 throw new \yii\base\Exception("Модель к которой необходимо привязать файл не найдена");
             }
             if (!$model->hasProperty(\Yii::$app->request->post('modelRelation'))) {
                 throw new \yii\base\Exception("У модели не найден атрибут привязки к файлам modelRelation: " . \Yii::$app->request->post('modelRelation'));
             }
             try {
                 $model->link(\Yii::$app->request->post('modelRelation'), $file);
                 if (!$file->name) {
                     $file->name = $model->name;
                     $file->save(false);
                 }
                 $rr->success = true;
                 $rr->message = "";
             } catch (\Exception $e) {
                 $rr->success = false;
                 $rr->message = $e->getMessage();
             }
         } catch (\Exception $e) {
             $rr->success = false;
             $rr->message = $e->getMessage();
         }
     }
     return $rr;
 }
 /**
  * Импорт деревень
  *
  * @return array|RequestResponse
  */
 public function actionImportVillagesSm()
 {
     $rr = new RequestResponse();
     if ($rr->isRequestAjaxPost()) {
         $rr->data = ['yes' => 0, 'no' => 0, 'offset' => \Yii::$app->request->post('offset', 0), 'total' => 0, 'nextOffset' => 0];
         if (!\Yii::$app->kladr->isReady() || !\Yii::$app->request->post('char')) {
             $rr->success = false;
             $rr->message = "Некорректные настройки";
             return $rr;
         }
         $query = \Yii::$app->kladr->createApiQuery();
         $query->ContentName = \Yii::$app->request->post('char');
         $query->ContentType = \skeeks\cms\kladr\libs\ObjectType::City;
         $query->WithParent = 1;
         $query->offset = \Yii::$app->request->post('offset', 0);
         $query->typeCode = 4;
         //только поселки
         $arResult = \Yii::$app->kladr->createApi()->QueryToArray($query);
         $rr->data['total'] = count($arResult);
         if (count($arResult) >= \Yii::$app->kladr->kladrRequestLimit) {
             $rr->data['nextOffset'] = $rr->data['offset'] + \Yii::$app->kladr->kladrRequestLimit;
         }
         if ($arResult) {
             foreach ($arResult as $locationData) {
                 $parents = (array) ArrayHelper::getValue($locationData, 'parents');
                 if (!$parents) {
                     $rr->data['no'] = $rr->data['no'] + 1;
                     continue;
                 }
                 $parent = $parents[count($parents) - 1];
                 if (!$parent) {
                     $rr->data['no'] = $rr->data['no'] + 1;
                     continue;
                 }
                 $parentId = (string) ArrayHelper::getValue($parent, 'id');
                 $parent = KladrLocation::findOne(['kladr_api_id' => $parentId]);
                 if ($this->_writeLocation($locationData, $parent, KladrLocation::TYPE_VILLAGE_SMALL)) {
                     $rr->data['yes'] = $rr->data['yes'] + 1;
                 } else {
                     $rr->data['no'] = $rr->data['no'] + 1;
                 }
             }
         }
         $rr->success = true;
         $rr->message = "Импорт завершен";
         return $rr;
     }
     return (array) $rr;
 }