/** * Формируем список категорий пользователей для параметра компонента * @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; }
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(); }
/** * Переопределяем метод удаления категории из формы 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']); }