/** * Send notification about new classified added * * @param Request $request Request object * @param ClassifiedUser $user Classified user * @param Announcement $classified Announcement * @return void */ public function sendNotificationEmail(Request $request, ClassifiedUser $user, Announcement $classified) { $emailService = $this->container->get('email'); $router = $this->container->get('router'); $em = $this->container->get('em'); $templatesService = $this->container->get('newscoop.templates.service'); $placeholdersService = $this->container->get('newscoop.placeholders.service'); $preferencesService = $this->container->get('preferences'); $smarty = $templatesService->getSmarty(); $smarty->assign('user', new \MetaUser($user->getNewscoopUser())); $smarty->assign('classified', $classified); $smarty->assign('created', $classified->getCreatedAt()->format('Y-m-d H:i:s')); $smarty->assign('editLink', $request->getUriForPath($router->generate('ahs_advertsplugin_admin_editad', array('id' => $classified->getId())))); try { $message = $templatesService->fetchTemplate("_ahs_adverts/email_classified_notify.tpl"); } catch (\Exception $e) { throw new NotFoundHttpException("Could not load template: _ahs_adverts/email_classified_notify.tpl"); } $emailService->send($placeholdersService->get('subject'), $message, array($preferencesService->AdvertsNotificationEmail)); }
/** * @Route("/classifieds/add", name="ahs_advertsplugin_default_add", options={"expose"=true}) */ public function addAction(Request $request) { $session = $request->getSession(); $userService = $this->get('user'); $templatesService = $this->get('newscoop.templates.service'); $cacheService = \Zend_Registry::get('container')->get('newscoop.cache'); $systemPreferences = $this->get('system_preferences_service'); $adsService = $this->get('ahs_adverts_plugin.ads_service'); $translator = $this->get('translator'); $em = $this->container->get('em'); $newscoopUser = $userService->getCurrentUser(); $limitExhausted = false; $isValid = true; if (!$newscoopUser) { return new RedirectResponse($this->container->get('zend_router')->assemble(array('controller' => '', 'action' => 'auth'), 'default') . '?_target_path=' . $this->generateUrl('ahs_advertsplugin_default_add')); } // create announcement user $user = $em->getRepository('AHS\\AdvertsPluginBundle\\Entity\\User')->findOneBy(array('newscoopUserId' => $newscoopUser->getId())); $activeAnnouncementsCount = $em->getRepository('AHS\\AdvertsPluginBundle\\Entity\\Announcement')->createQueryBuilder('a')->select('count(a)')->where('a.announcementStatus = true')->andWhere('a.user = :user')->andWhere('a.removed = false')->setParameter('user', $user)->getQuery()->getSingleScalarResult(); $announcement = new Announcement(); $publicationService = $this->container->get('newscoop_newscoop.publication_service'); $form = $this->createForm(new FrontAnnouncementType(), $announcement, array('translator' => $translator, 'config' => $this->container->getParameter('purifier'))); $categories = $this->getCategories(); if ($session->has('announcement_id')) { $session->remove('announcement_id'); } $errors = array(); if ($systemPreferences->AdvertsMaxClassifiedsPerUserEnabled) { if ((int) $activeAnnouncementsCount >= (int) $systemPreferences->AdvertsMaxClassifiedsPerUser && !$session->get('ahs_adverts_nolimit')) { $limitExhausted = true; $errors[]['message'] = $translator->trans('ads.error.maxClassifieds', array('{{ count }}' => $systemPreferences->AdvertsMaxClassifiedsPerUser)); } } if ($session->get('ahs_adverts_cantadd')) { $limitExhausted = true; $errors[]['message'] = $translator->trans('ads.error.cantaddclassifieds'); } if ($request->isMethod('POST') && !$limitExhausted) { $form->bind($request); if ($form->isValid()) { if (!$user) { $user = new User(); $user->setNewscoopUser($newscoopUser); $em->persist($user); } $announcement->setUser($user); $announcement->setPublication($publicationService->getPublication()); $systemPreferences = $this->get('system_preferences_service'); // set valid date $announcement->extendFor($systemPreferences->AdvertsValidTime); // set anouncement default status if ($systemPreferences->AdvertsReviewStatus == '1') { $announcement->setIsActive(false); } $em->persist($announcement); $em->flush(); $cacheService->clearNamespace('announcements'); $this->savePhotosInAnnouncement($announcement, $request); if ($systemPreferences->AdvertsEnableNotify == "1") { $this->get('dispatcher')->dispatch('classifieds.modified', new GenericEvent($this, array('announcement' => $announcement, 'notification' => array($request, $user)))); } if ($session->has('ahs_adverts_nolimit')) { $session->remove('ahs_adverts_nolimit'); } if ($session->has('announcement_photos')) { $session->remove('announcement_photos'); } return new RedirectResponse($this->generateUrl('ahs_advertsplugin_default_show', array('id' => $announcement->getId()))); } else { $isValid = false; } } if ($session->has('ahs_adverts_nolimit')) { $session->remove('ahs_adverts_nolimit'); } if ($session->has('ahs_adverts_cantadd')) { $session->remove('ahs_adverts_cantadd'); } if ($isValid) { $session->set('announcement_photos', array()); } return new Response($templatesService->fetchTemplate('_ahs_adverts/add.tpl', array('announcement' => $announcement, 'categories' => $categories, 'form' => $form->createView(), 'form_path' => $this->generateUrl('ahs_advertsplugin_default_add'), 'type' => 'add', 'errors' => $errors)), 200, array('Content-Type' => 'text/html')); }