public function batchActionActivate(ProxyQueryInterface $selectedModelQuery) { $users = $selectedModelQuery->execute(); $modelManager = $this->admin->getModelManager(); $hostname = $this->container->getParameter('hostname'); $hostDirectory = $this->container->getParameter('directory'); try { foreach ($users as $user) { $userIsLocked = $user->isLocked(); if ($userIsLocked == true) { $user->setEnabled(true); $user->setLocked(false); if (null === $user->getConfirmationToken()) { $tokenGenerator = $this->container->get("fos_user.util.token_generator"); $user->setConfirmationToken($tokenGenerator->generateToken()); } $user->setPasswordRequestedAt(new \DateTime('now')); $modelManager->update($user); $activationUrl = $hostname . $hostDirectory . "resetting/reset/" . $user->getConfirmationToken(); $message = \Swift_Message::newInstance()->setSubject('Welcome to Zeega!')->setFrom(array('*****@*****.**' => 'Zeega'))->setTo($user->getEmail())->setBody($this->renderView('ZeegaAdminBundle:Users:account_activated.txt.twig', array('username' => $user->getDisplayName(), 'activationURL' => $activationUrl))); $this->get('mailer')->send($message); } } } catch (\Exception $e) { $this->get('session')->setFlash('sonata_flash_error', 'Something went wrong...'); return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); } $this->get('session')->setFlash('sonata_flash_success', 'The users were activated successfully.'); return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); }
/** * @param ProxyQueryInterface $query * * @throws AccessDeniedException * * @return RedirectResponse */ public function batchActionCancelled(ProxyQueryInterface $query) { if (false === $this->admin->isGranted('EDIT')) { throw new AccessDeniedException(); } foreach ($query->execute() as $message) { $this->getMessageManager()->cancel($message); } return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); }
public function preBatchAction($actionName, ProxyQueryInterface $query, array &$idx, $allElements) { if ($actionName == 'delete') { $query->andWhere($query->expr()->in('o.id', '?1'))->setParameter(1, $idx); $serviceGroups = $query->execute(); foreach ($serviceGroups as $serviceGroup) { $this->preRemove($serviceGroup); } } }
/** * @param ProxyQueryInterface $query * @param $status * * @return RedirectResponse * * @throws AccessDeniedException */ protected function commentChangeStatus(ProxyQueryInterface $query, $status) { if (false === $this->admin->isGranted('EDIT')) { throw new AccessDeniedException(); } foreach ($query->execute() as $comment) { $comment->setStatus($status); $this->admin->getModelManager()->update($comment); } return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); }
public function batchActionDelete(ProxyQueryInterface $query) { $this->admin->checkAccess('batchDelete'); try { $this->deleteItems($query->execute()); $this->addFlash('sonata_flash_success', 'flash_batch_delete_success'); } catch (ModelManagerException $e) { $this->handleModelManagerException($e); $this->addFlash('sonata_flash_error', 'flash_batch_delete_error'); } return new RedirectResponse($this->admin->generateUrl('list', array('filter' => $this->admin->getFilterParameters()))); }
public function batchActionSendEmail(ProxyQueryInterface $query) { if (!$this->admin->isGranted('ROLE_EMAIL_ADMIN')) { throw $this->createAccessDeniedException(); } $modelManager = $this->admin->getModelManager(); $emailSender = $this->get('bcp.email_sender'); $contactProvider = $this->get('bcp.contact_provider'); $templating = $this->get('templating'); $from = $this->getParameter('newsletter_from'); $selectedEmails = $query->execute(); $errors = array(); try { foreach ($selectedEmails as $email) { if (null === $email->getEmailFrom()) { $email->setEmailFrom($from); } else { $from = $email->getEmailFrom(); } $emails = in_array('all', $email->getContacts()) ? $contactProvider->getContactsEmail() : $email->getContacts(); $subject = sprintf('[BCP] %s', $email->getSubject()); $body = $templating->render('@App/Utils/email_structure.html.twig', array('body' => $email->getBody())); if (!empty($emails)) { foreach ($emails as $to) { $sent = $emailSender->send($from, array($to), $subject, $body); if (!$sent) { $errors[] = sprintf('%s - %s', $subject, $to); } } $email->setSent(new \Datetime()); $modelManager->update($email); } else { $errors[] = sprintf('%s - %s', $subject, $this->admin->trans('email_to_empty')); } } if (!empty($errors)) { $error = $this->admin->trans('flash_batch_send_email_error'); $error .= '<ul>'; foreach ($errors as $err) { $error .= sprintf('<li>%s</li>', $err); } $error .= '</ul>'; $this->addFlash('sonata_flash_error', $error, $this->admin->flashIcon); } else { $this->addFlash('sonata_flash_success', $this->admin->trans('flash_batch_send_email_success'), $this->admin->flashIcon); } } catch (ModelManagerException $e) { $this->handleModelManagerException($e); $this->addFlash('sonata_flash_error', $this->admin->trans('flash_batch_send_email_error'), $this->admin->flashIcon); } return $this->redirect($this->admin->generateUrl('list', $this->admin->getFilterParameters())); }
public function batchActionExtend(ProxyQueryInterface $selectedModelQuery) { if ($this->admin->isGranted('EDIT') === false || $this->admin->isGranted('DELETE') === false) { throw new AccessDeniedException(); } $modelManager = $this->admin->getModelManager(); $selectedModels = $selectedModelQuery->execute(); try { foreach ($selectedModels as $selectedModel) { $selectedModel->extend(); $modelManager->update($selectedModel); } } catch (Exception $e) { $this->get('session')->getFlashBag()->add('sonata_flash_error', $e->getMessage()); return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); } $this->get('session')->getFlashBag()->add('sonata_flash_success', sprintf('The selected jobs validity has been extended until %s.', date('m/d/Y', time() + 86400 * 30))); return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); }
public function batchActionDeactivate(ProxyQueryInterface $selectedModelQuery) { if ($this->admin->isGranted('EDIT') === false || $this->admin->isGranted('DELETE') === false) { throw new AccessDeniedException(); } $request = $this->get('request'); $modelManager = $this->admin->getModelManager(); $selectedModels = $selectedModelQuery->execute(); try { foreach ($selectedModels as $selectedModel) { $selectedModel->deactivate(); $modelManager->update($selectedModel); } } catch (Exception $e) { $this->get('session')->getFlashBag()->add('sonata_flash_error', $e->getMessage()); return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); } $this->get('session')->getFlashBag()->add('sonata_flash_success', sprintf('The selected accounts have been deactivated')); return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); }
public function batchActionDispatch(ProxyQueryInterface $selectedModelQuery) { if (!$this->admin->isGranted('EDIT')) { throw new AccessDeniedException(); } $modelManager = $this->admin->getModelManager(); $selectedModels = $selectedModelQuery->execute(); $eventDispatcher = $this->get('event_dispatcher'); $i = 0; try { foreach ($selectedModels as $selectedModel) { if ($selectedModel->getDispatchStatus() == Order::DISPATCH_STATUS_DISPATCHED) { $this->addFlash('sonata_flash_error', sprintf('Order %d has already been dispatched.', $selectedModel->getId())); continue; } if ($selectedModel->getDispatchStatus() == Order::DISPATCH_STATUS_UNDISPATCHABLE) { $this->addFlash('sonata_flash_error', sprintf('Order %d is not dispatchable.', $selectedModel->getId())); continue; } if ($selectedModel->getStatus() != GetHumanStatus::STATUS_AUTHORIZED) { $this->addFlash('sonata_flash_error', sprintf('Order %d has not been authorized.', $selectedModel->getId())); continue; } if ($selectedModel->getDispatchStatus() == Order::DISPATCH_STATUS_PROCESSING) { $selectedModel->setDispatchStatus(Order::DISPATCH_STATUS_DISPATCHED); $eventDispatcher->dispatch('event.dispatch', new GenericEvent(null, ['order' => $selectedModel])); $i++; } } $modelManager->update($selectedModel); } catch (\Exception $e) { $this->addFlash('sonata_flash_error', 'flash_batch_merge_error'); return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); } if ($i > 0) { $this->addFlash('sonata_flash_success', sprintf('Marked %d orders as dispatched.', $i)); } return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); }
/** * {@inheritDoc} * * @throws ModelManagerException if anything goes wrong during query execution. */ public function batchDelete($class, ProxyQueryInterface $queryProxy) { try { $i = 0; $res = $queryProxy->execute(); foreach ($res as $object) { $this->dm->remove($object); if (++$i % 20 == 0) { $this->dm->flush(); $this->dm->clear(); } } $this->dm->flush(); $this->dm->clear(); } catch (\Exception $e) { throw new ModelManagerException('', 0, $e); } }
/** * @param ProxyQueryInterface $selectedModelQuery * @return RedirectResponse * @throws AccessDeniedException */ public function batchActionCacheClear(ProxyQueryInterface $selectedModelQuery) { if ($this->admin->isGranted('PUBLISH') === false) { throw new AccessDeniedException(); } $modelManager = $this->admin->getModelManager(); $selectedModels = $selectedModelQuery->execute(); // do the merge work here try { foreach ($selectedModels as $selectedModel) { /** @var \Networking\InitCmsBundle\Lib\PhpCacheInterface $phpCache */ $phpCache = $this->get('networking_init_cms.lib.php_cache'); if ($phpCache->isActive()) { /** @var PageInterface $selectedModel */ $cacheKey = $selectedModel->getLocale() . $selectedModel->getFullPath(); $phpCache->delete($cacheKey); } } } catch (\Exception $e) { $this->get('session')->getFlashBag()->add('sonata_flash_error', 'flash_batch_cache_clear_error'); return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); } $this->get('session')->getFlashBag()->add('sonata_flash_success', 'flash_batch_cache_clear_success'); return new RedirectResponse($this->admin->generateUrl('list', $this->admin->getFilterParameters())); }
public function batchActionNewsletterAndFacebook(ProxyQueryInterface $query) { if (!$this->admin->isGranted('ROLE_POST_ADMIN')) { throw $this->createAccessDeniedException(); } $selectedPosts = $query->execute(); try { $this->shareNewsletter($selectedPosts); $this->publishOnFacebook($selectedPosts); } catch (ModelManagerException $e) { $this->handleModelManagerException($e); $this->addFlash('sonata_flash_error', $this->admin->trans('flash_batch_newsletter_error'), $this->admin->flashNewsletterIcon); } return $this->redirect($this->admin->generateUrl('list', $this->admin->getFilterParameters())); }