예제 #1
0
 /**
  * Формируем список категорий пользователей для параметра компонента
  * @return array|void
  */
 public function getCategoryOptions()
 {
     $arOptions = [];
     $obCategories = Category::all();
     if (empty($obCategories)) {
         return;
     }
     foreach ($obCategories as $obCategory) {
         $arOptions[$obCategory->id] = $obCategory->title;
     }
     return $arOptions;
 }
예제 #2
0
 public function onFormMailSend()
 {
     $arElementsID = $this->obRequest->input('checked');
     if (empty($arElementsID) || !is_array($arElementsID)) {
         return $this->listRefresh();
     }
     foreach ($arElementsID as $iElementID) {
         if (!($obElement = Mailing::find($iElementID))) {
             continue;
         }
         //получаем список адресов из категории подписчиков, назначенной рассылке
         $obCategory = Category::find($obElement->category_id);
         if (empty($obCategory)) {
             return;
         }
         $arSendTo = [];
         foreach ($obCategory->subscribers as $obSubscriber) {
             $arSendTo[] = $obSubscriber->email;
             if (empty($obElement->template_code)) {
                 Flash::warning(Lang::get('lovata.subscriptions::lang.message.no_template'));
                 return;
             }
             $sTemplate = $obElement->template_code;
         }
         //если нет подпичиков, то нет смысла рассылки
         //            if(empty($arSendTo)){
         //                return;
         //            }
         //смотрим на источник данных из рассылки и формируем данные
         switch ($obElement->data_source) {
             case 'handprint':
                 $arData = ['title' => $obElement->title, 'preview' => $obElement->preview, 'link' => $obElement->link];
                 break;
             case 'article':
                 if (empty($obElement->article_id) || !PluginManager::instance()->hasPlugin('Lovata.Articles')) {
                     return;
                 }
                 $arData = $this->getArticle($obElement->article_id);
                 break;
             default:
                 return;
         }
         //формируем очередь рассылки данных подписчикам
         foreach ($arSendTo as $sEmail) {
             $this->mailSend($sEmail, $sTemplate, $arData);
         }
     }
     Flash::success(Lang::get('lovata.subscriptions::lang.message.mailsend_success'));
     return $this->listRefresh();
 }
예제 #3
0
 /**
  * Переопределяем метод удаления категории из формы update с проверками на наличие связи категории с рассылками. Если категория привязана к рассылкам,
  * то не удаляем ее пока, пока рассылки не будут удалены или переназначены на другие категории. Также делаем невозможным удалить категорию default
  *
  * @param null $iId
  * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|void
  */
 public function update_onDelete($iId = null)
 {
     $obCategory = Category::find($iId);
     if (empty($obCategory)) {
         return;
     }
     //смотрим, есть ли привязки категории к рассылкам
     $obMailings = $obCategory->mailings;
     if (!$obMailings->isEmpty()) {
         Flash::warning(Lang::get('lovata.subscriptions::lang.message.category_warning'));
         return redirect()->back();
     }
     //если условия выполнены, удаляем категорию и редиректимся к списку категорий
     $obCategory->delete();
     Flash::success(Lang::get('lovata.subscriptions::lang.message.delete_success'));
     return redirect(Backend::url('lovata/subscriptions/categories'));
 }
 public function run()
 {
     Category::create(['title' => trans('lovata.subscriptions::lang.category.default'), 'slug' => 'default']);
 }