1 | <?php |
||
2 | |||
3 | namespace Azine\MailgunWebhooksBundle\Controller; |
||
4 | |||
5 | use Azine\MailgunWebhooksBundle\DependencyInjection\AzineMailgunWebhooksExtension; |
||
6 | use Azine\MailgunWebhooksBundle\Entity\MailgunEvent; |
||
7 | use Azine\MailgunWebhooksBundle\Entity\MailgunMessageSummary; |
||
8 | use Azine\MailgunWebhooksBundle\Entity\Repositories\MailgunEventRepository; |
||
9 | use Azine\MailgunWebhooksBundle\Entity\Repositories\MailgunMessageSummaryRepository; |
||
10 | use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; |
||
11 | use Symfony\Component\HttpFoundation\JsonResponse; |
||
12 | use Symfony\Component\HttpFoundation\Request; |
||
13 | |||
14 | /** |
||
15 | * Mailgun controller. |
||
16 | */ |
||
17 | class MailgunController extends AbstractController |
||
18 | { |
||
19 | /** |
||
20 | * Show MailgunEvent-Overview. |
||
21 | */ |
||
22 | public function eventOverviewAction() |
||
23 | { |
||
24 | $eventRepository = $this->getEventRepository(); |
||
25 | $params = array(); |
||
26 | $params['importantEvents'] = $eventRepository->getImportantEvents(10); |
||
27 | $params['events'] = $eventRepository->getEventCount(array()); |
||
28 | $params['bounced'] = $eventRepository->getEventCount(array('eventType' => 'bounced')); |
||
29 | $params['dropped'] = $eventRepository->getEventCount(array('eventType' => 'dropped')); |
||
30 | $params['complained'] = $eventRepository->getEventCount(array('eventType' => 'complained')); |
||
31 | $params['unsubscribed'] = $eventRepository->getEventCount(array('eventType' => 'unsubscribed')); |
||
32 | $params['unopened'] = $eventRepository->getEventCount(array('eventType' => 'unopened')); |
||
33 | $params['emailWebViewRoute'] = $this->container->getParameter(AzineMailgunWebhooksExtension::PREFIX.'_'.AzineMailgunWebhooksExtension::WEB_VIEW_ROUTE); |
||
0 ignored issues
–
show
Bug
introduced
by
![]() |
|||
34 | $params['emailWebViewToken'] = $this->container->getParameter(AzineMailgunWebhooksExtension::PREFIX.'_'.AzineMailgunWebhooksExtension::WEB_VIEW_TOKEN); |
||
35 | |||
36 | return $this->render('AzineMailgunWebhooksBundle::overview.html.twig', $params); |
||
37 | } |
||
38 | |||
39 | /** |
||
40 | * Lists all MailgunEvent entities. |
||
41 | * |
||
42 | * @param Request $request |
||
43 | * @param int $page |
||
44 | * @param int $pageSize |
||
45 | * |
||
46 | * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response |
||
47 | */ |
||
48 | public function eventIndexAction(Request $request, $page, $pageSize) |
||
49 | { |
||
50 | $params = array(); |
||
51 | $eventRepository = $this->getEventRepository(); |
||
52 | // get general filter options |
||
53 | $params['filterOptions'] = array( |
||
54 | 'orderBy' => $eventRepository->getFieldsToOrderBy(), |
||
55 | 'eventTypes' => $eventRepository->getEventTypes(), |
||
56 | 'domains' => $eventRepository->getDomains(), |
||
57 | 'recipients' => $eventRepository->getRecipients(), |
||
58 | ); |
||
59 | |||
60 | if ($request->get('clear')) { |
||
61 | $request->getSession()->remove('mailgunEventIndexParams'); |
||
62 | } |
||
63 | |||
64 | // get filter criteria from session |
||
65 | $sessionParams = $request->getSession()->get('mailgunEventIndexParams', array( |
||
66 | 'page' => 1, |
||
67 | 'pageSize' => 25, |
||
68 | 'domain' => '', |
||
69 | 'eventType' => 'all', |
||
70 | 'search' => '', |
||
71 | 'recipient' => '', |
||
72 | 'orderBy' => 'timestamp', |
||
73 | 'orderDirection' => 'desc', |
||
74 | )); |
||
75 | |||
76 | $page = $sessionParams['page']; |
||
77 | $pageSize = $sessionParams['pageSize']; |
||
78 | $domain = $sessionParams['domain']; |
||
79 | $eventType = $sessionParams['eventType']; |
||
80 | $search = $sessionParams['search']; |
||
81 | $recipient = $sessionParams['recipient']; |
||
82 | $orderBy = $sessionParams['orderBy']; |
||
83 | $orderDirection = $sessionParams['orderDirection']; |
||
84 | |||
85 | // update filter criteria from get-request |
||
86 | if ($request->isMethod('GET')) { |
||
87 | $page = $request->get('page', $sessionParams['page']); |
||
88 | $pageSize = $request->get('pageSize', $sessionParams['pageSize']); |
||
89 | if ($sessionParams['pageSize'] != $pageSize) { |
||
90 | $page = 1; |
||
91 | } |
||
92 | $eventType = $request->get('eventType', 'all'); |
||
93 | |||
94 | // update filter criteria from post-request |
||
95 | } elseif ($request->isMethod('POST') && is_array($request->get('filter'))) { |
||
96 | $filter = $request->get('filter'); |
||
97 | $eventType = $filter['eventType']; |
||
98 | $domain = $filter['domain']; |
||
99 | $search = trim($filter['search']); |
||
100 | $recipient = trim($filter['recipient']); |
||
101 | $orderBy = $filter['orderBy']; |
||
102 | $orderDirection = $filter['orderDirection']; |
||
103 | } |
||
104 | |||
105 | // set params for filter-form |
||
106 | $currentFilter = array( |
||
107 | 'page' => $page, |
||
108 | 'pageSize' => $pageSize, |
||
109 | 'domain' => $domain, |
||
110 | 'eventType' => $eventType, |
||
111 | 'search' => $search, |
||
112 | 'recipient' => $recipient, |
||
113 | 'orderBy' => $orderBy, |
||
114 | 'orderDirection' => $orderDirection, |
||
115 | ); |
||
116 | // store filter criteria back to session & to params |
||
117 | $request->getSession()->set('mailgunEventIndexParams', $currentFilter); |
||
118 | $params['currentFilters'] = $currentFilter; |
||
119 | |||
120 | $eventCount = $eventRepository->getEventCount($currentFilter); |
||
121 | // validate the page/pageSize and with the total number of result entries |
||
122 | if ($eventCount > 0 && (($page - 1) * $pageSize >= $eventCount)) { |
||
123 | $maxPage = max(1, ceil($eventCount / $pageSize)); |
||
124 | |||
125 | return $this->redirect($this->generateUrl('mailgunevent_list', array('page' => $maxPage, 'pageSize' => $pageSize)).'?'.$request->getQueryString()); |
||
126 | } |
||
127 | |||
128 | // get the events |
||
129 | $params['events'] = $eventRepository->getEvents($currentFilter, array($orderBy => $orderDirection), $pageSize, ($page - 1) * $pageSize); |
||
130 | $params['emailWebViewRoute'] = $this->container->getParameter(AzineMailgunWebhooksExtension::PREFIX.'_'.AzineMailgunWebhooksExtension::WEB_VIEW_ROUTE); |
||
131 | $params['emailWebViewToken'] = $this->container->getParameter(AzineMailgunWebhooksExtension::PREFIX.'_'.AzineMailgunWebhooksExtension::WEB_VIEW_TOKEN); |
||
132 | |||
133 | // set the params for the pager |
||
134 | $params['paginatorParams'] = array( |
||
135 | 'paginationPath' => 'mailgunevent_list', |
||
136 | 'pageSize' => $pageSize, |
||
137 | 'currentPage' => $page, |
||
138 | 'currentFilters' => $currentFilter, |
||
139 | 'totalItems' => $eventCount, |
||
140 | 'lastPage' => ceil($eventCount / $pageSize), |
||
141 | 'showAlwaysFirstAndLast' => true, |
||
142 | ); |
||
143 | |||
144 | return $this->render('AzineMailgunWebhooksBundle:MailgunEvent:index.html.twig', $params); |
||
145 | } |
||
146 | |||
147 | /** |
||
148 | * Finds and displays a MailgunEvent entity. |
||
149 | */ |
||
150 | public function eventShowAction($id) |
||
151 | { |
||
152 | $em = $this->getDoctrine()->getManager(); |
||
153 | |||
154 | $entity = $em->getRepository('AzineMailgunWebhooksBundle:MailgunEvent')->find($id); |
||
155 | |||
156 | if (!$entity) { |
||
157 | throw $this->createNotFoundException('Unable to find MailgunEvent entity.'); |
||
158 | } |
||
159 | |||
160 | return $this->render('AzineMailgunWebhooksBundle:MailgunEvent:show.html.twig', array( |
||
161 | 'emailWebViewRoute' => $this->container->getParameter(AzineMailgunWebhooksExtension::PREFIX.'_'.AzineMailgunWebhooksExtension::WEB_VIEW_ROUTE), |
||
162 | 'emailWebViewToken' => $this->container->getParameter(AzineMailgunWebhooksExtension::PREFIX.'_'.AzineMailgunWebhooksExtension::WEB_VIEW_TOKEN), |
||
163 | 'entity' => $entity, |
||
164 | )); |
||
165 | } |
||
166 | |||
167 | /** |
||
168 | * Deletes a MailgunEvent entity. |
||
169 | */ |
||
170 | public function eventDeleteAction(Request $request) |
||
171 | { |
||
172 | $entity = $this->getEventRepository()->find($request->get('eventId')); |
||
173 | |||
174 | if (!$entity) { |
||
175 | throw $this->createNotFoundException('Unable to find MailgunEvent entity.'); |
||
176 | } |
||
177 | |||
178 | $em = $this->getDoctrine()->getManager(); |
||
179 | $em->remove($entity); |
||
180 | $em->flush(); |
||
181 | |||
182 | if ($request->isXmlHttpRequest()) { |
||
183 | return new JsonResponse(array('success' => true)); |
||
184 | } |
||
185 | |||
186 | $session = $request->getSession(); |
||
187 | $page = $session->get('page', 1); |
||
188 | $pageSize = $session->get('pageSize', 25); |
||
189 | |||
190 | return $this->redirect($this->generateUrl('mailgunevent_list', array('page' => $page, 'pageSize' => $pageSize))); |
||
191 | } |
||
192 | |||
193 | /** |
||
194 | * @param Request $request |
||
195 | * @param $page |
||
196 | * @param $pageSize |
||
197 | * |
||
198 | * @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response|null |
||
199 | */ |
||
200 | public function messageSummaryIndexAction(Request $request, $page, $pageSize) |
||
201 | { |
||
202 | $params = array(); |
||
203 | |||
204 | $messageSummaryRepository = $this->getMessageSummaryRepository(); |
||
205 | |||
206 | // get general filter options |
||
207 | $params['filterOptions'] = array( |
||
208 | 'orderBy' => $messageSummaryRepository->getFieldsToOrderBy(), |
||
209 | 'toAddress' => $messageSummaryRepository->getRecipients(), |
||
210 | 'fromAddress' => $messageSummaryRepository->getSenders(), |
||
211 | ); |
||
212 | |||
213 | if ($request->get('clear')) { |
||
214 | $request->getSession()->remove('mailgunMessageIndexParams'); |
||
215 | } |
||
216 | |||
217 | // get filter criteria from session |
||
218 | $sessionParams = $request->getSession()->get('mailgunMessageIndexParams', array( |
||
219 | 'page' => 1, |
||
220 | 'pageSize' => 25, |
||
221 | 'search' => '', |
||
222 | 'toAddress' => '', |
||
223 | 'fromAddress' => '', |
||
224 | 'orderBy' => 'sendDate', |
||
225 | 'orderDirection' => 'desc', |
||
226 | )); |
||
227 | |||
228 | $page = $sessionParams['page']; |
||
229 | $pageSize = $sessionParams['pageSize']; |
||
230 | $search = $sessionParams['search']; |
||
231 | $toAddress = $sessionParams['toAddress']; |
||
232 | $fromAddress = $sessionParams['fromAddress']; |
||
233 | $orderBy = $sessionParams['orderBy']; |
||
234 | $orderDirection = $sessionParams['orderDirection']; |
||
235 | |||
236 | // update filter criteria from get-request |
||
237 | if ($request->isMethod('GET')) { |
||
238 | $page = $request->get('page', $sessionParams['page']); |
||
239 | $pageSize = $request->get('pageSize', $sessionParams['pageSize']); |
||
240 | if ($sessionParams['pageSize'] != $pageSize) { |
||
241 | $page = 1; |
||
242 | } |
||
243 | |||
244 | // update filter criteria from post-request |
||
245 | } elseif ($request->isMethod('POST') && is_array($request->get('filter'))) { |
||
246 | $filter = $request->get('filter'); |
||
247 | $search = trim($filter['search']); |
||
248 | $toAddress = trim($filter['toAddress']); |
||
249 | $fromAddress = trim($filter['fromAddress']); |
||
250 | $orderBy = $filter['orderBy']; |
||
251 | $orderDirection = $filter['orderDirection']; |
||
252 | } |
||
253 | |||
254 | // set params for filter-form |
||
255 | $currentFilter = array( |
||
256 | 'page' => $page, |
||
257 | 'pageSize' => $pageSize, |
||
258 | 'search' => $search, |
||
259 | 'toAddress' => $toAddress, |
||
260 | 'fromAddress' => $fromAddress, |
||
261 | 'orderBy' => $orderBy, |
||
262 | 'orderDirection' => $orderDirection, |
||
263 | ); |
||
264 | // store filter criteria back to session & to params |
||
265 | $request->getSession()->set('mailgunMessageIndexParams', $currentFilter); |
||
266 | $params['currentFilters'] = $currentFilter; |
||
267 | |||
268 | $messageSummaryCount = $messageSummaryRepository->getMessageSummaryCount($currentFilter); |
||
269 | // validate the page/pageSize and with the total number of result entries |
||
270 | if ($messageSummaryCount > 0 && (($page - 1) * $pageSize >= $messageSummaryCount)) { |
||
271 | $maxPage = max(1, ceil($messageSummaryCount / $pageSize)); |
||
272 | |||
273 | return $this->redirect($this->generateUrl('mailgun_message_summary_list', array('page' => $maxPage, 'pageSize' => $pageSize)).'?'.$request->getQueryString()); |
||
274 | } |
||
275 | |||
276 | // get the events |
||
277 | $params['messageSummaries'] = $messageSummaryRepository->getMessageSummaries($currentFilter, array($orderBy => $orderDirection), $pageSize, ($page - 1) * $pageSize); |
||
278 | $params['emailWebViewRoute'] = $this->container->getParameter(AzineMailgunWebhooksExtension::PREFIX.'_'.AzineMailgunWebhooksExtension::WEB_VIEW_ROUTE); |
||
279 | $params['emailWebViewToken'] = $this->container->getParameter(AzineMailgunWebhooksExtension::PREFIX.'_'.AzineMailgunWebhooksExtension::WEB_VIEW_TOKEN); |
||
280 | |||
281 | // set the params for the pager |
||
282 | $params['paginatorParams'] = array( |
||
283 | 'paginationPath' => 'mailgun_message_summary_list', |
||
284 | 'pageSize' => $pageSize, |
||
285 | 'currentPage' => $page, |
||
286 | 'currentFilters' => $currentFilter, |
||
287 | 'totalItems' => $messageSummaryCount, |
||
288 | 'lastPage' => ceil($messageSummaryCount / $pageSize), |
||
289 | 'showAlwaysFirstAndLast' => true, |
||
290 | ); |
||
291 | |||
292 | return $this->render('AzineMailgunWebhooksBundle::messageSummaryIndex.html.twig', $params); |
||
293 | } |
||
294 | |||
295 | public function messageSummaryShowAction(Request $request, MailgunMessageSummary $messageSummary) |
||
296 | { |
||
297 | $params = array('messageSummary' => $messageSummary); |
||
298 | $params['emailWebViewRoute'] = $this->container->getParameter(AzineMailgunWebhooksExtension::PREFIX.'_'.AzineMailgunWebhooksExtension::WEB_VIEW_ROUTE); |
||
299 | $params['emailWebViewToken'] = $this->container->getParameter(AzineMailgunWebhooksExtension::PREFIX.'_'.AzineMailgunWebhooksExtension::WEB_VIEW_TOKEN); |
||
300 | |||
301 | return $this->render('AzineMailgunWebhooksBundle::messageSummaryShow.html.twig', $params); |
||
302 | } |
||
303 | |||
304 | public function cockpitAction() |
||
305 | { |
||
306 | return $this->render('@AzineMailgunWebhooks/cockpit.html.twig', $this->get('azine_mailgun.cockpit_service')->getCockpitDataAsArray()); |
||
307 | } |
||
308 | |||
309 | /** |
||
310 | * Get the MailgunMessageSummary Repository. |
||
311 | * |
||
312 | * @return MailgunMessageSummaryRepository |
||
313 | */ |
||
314 | private function getMessageSummaryRepository() |
||
315 | { |
||
316 | return $this->getDoctrine()->getManager()->getRepository(MailgunMessageSummary::class); |
||
317 | } |
||
318 | |||
319 | /** |
||
320 | * Get the MailgunEvent Repository. |
||
321 | * |
||
322 | * @return MailgunEventRepository |
||
323 | */ |
||
324 | private function getEventRepository() |
||
325 | { |
||
326 | return $this->getDoctrine()->getManager()->getRepository(MailgunEvent::class); |
||
327 | } |
||
328 | |||
329 | public function getMessageSummaryAction(Request $request) |
||
330 | { |
||
331 | $fromAddress = ''; |
||
332 | $toAddress = ''; |
||
333 | $sendTime = ''; |
||
334 | $subject = ''; |
||
335 | $summary = $this->getMessageSummaryRepository()->findSummary($fromAddress, $toAddress, $sendTime, $subject); |
||
0 ignored issues
–
show
Are you sure the assignment to
$summary is correct as $this->getMessageSummary...s, $sendTime, $subject) targeting Azine\MailgunWebhooksBun...pository::findSummary() seems to always return null.
This check looks for function or method calls that always return null and whose return value is assigned to a variable. class A
{
function getObject()
{
return null;
}
}
$a = new A();
$object = $a->getObject();
The method The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes. ![]() |
|||
336 | |||
337 | return new JsonResponse($summary); |
||
338 | } |
||
339 | } |
||
340 |