Passed
Push — develop ( 28c299...928e2a )
by Mathias
12:40
created

ManageController::factory()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 12
c 0
b 0
f 0
ccs 0
cts 12
cp 0
rs 9.9666
cc 1
nc 1
nop 1
crap 2
1
<?php
2
/**
3
 * YAWIK
4
 *
5
 * @filesource
6
 * @copyright (c) 2013 - 2016 Cross Solution (http://cross-solution.de)
7
 * @license   MIT
8
 */
9
10
/** Applications controller */
11
namespace Applications\Controller;
12
13
use Applications\Form\ApplicationsFilter;
14
use Applications\Listener\Events\ApplicationEvent;
15
use Core\Repository\RepositoryService;
16
use Interop\Container\ContainerInterface;
17
use Zend\Mvc\Controller\AbstractActionController;
18
use Zend\View\Model\ViewModel;
19
use Zend\View\Model\JsonModel;
20
use Applications\Entity\StatusInterface as Status;
21
use Applications\Entity\Application;
22
23
/**
24
 * @method \Core\Controller\Plugin\Notification notification()
25
 * @method \Core\Controller\Plugin\Mailer mailer()
26
 * @method \Acl\Controller\Plugin\Acl acl()
27
 * @method \Auth\Controller\Plugin\Auth auth()
28
 *
29
 * Handles managing actions on applications
30
 */
31
class ManageController extends AbstractActionController
32
{
33
    /**
34
     * @var RepositoryService
35
     */
36
    private $repositories;
37
    
38
    /**
39
     * @var
40
     */
41
    private $coreNavigation;
42
    
43
    private $forms;
44
    
45
    private $appOptions;
46
    
47
    private $appEvents;
48
    
49
    private $translator;
50
    
51
    private $container;
52
    
53
    /**
54
     * ManageController constructor.
55
     *
56
     * @param RepositoryService $repositories
57
     */
58
    public function __construct(
59
        RepositoryService $repositories,
60
        $coreNavigation,
61
        $forms,
62
        $appOptions,
63
        $appEvents,
64
        $translator,
65
        $container
66
    ) {
67
        $this->repositories     = $repositories;
68
        $this->coreNavigation   = $coreNavigation;
69
        $this->forms            = $forms;
70
        $this->appOptions       = $appOptions;
71
        $this->appEvents        = $appEvents;
72
        $this->translator       = $translator;
73
        $this->container         = $container;
74
    }
75
    
76
    /**
77
     * @param ContainerInterface $container
78
     *
79
     * @return ManageController
80
     */
81
    public static function factory(ContainerInterface $container)
82
    {
83
        $ob = new self(
84
            $container->get('Core/RepositoryService'),
85
            $container->get('Core/Navigation'),
86
            $container->get('forms'),
87
            $container->get('Applications/Options'),
88
            $container->get('Applications/Events'),
89
            $container->get('translator'),
90
            $container
91
        );
92
        return $ob;
93
    }
94
    
95
    /**
96
     * (non-PHPdoc)
97
     * @see \Zend\Mvc\Controller\AbstractActionController::onDispatch()
98
     */
99
    public function onDispatch(\Zend\Mvc\MvcEvent $e)
100
    {
101
        $routeMatch = $e->getRouteMatch();
102
        $action     = $this->params()->fromQuery('action');
103
        
104
        if ($routeMatch && $action) {
105
            $routeMatch->setParam('action', $action);
106
        }
107
108
        return parent::onDispatch($e);
109
    }
110
    
111
    /**
112
     * List applications
113
     */
114
    public function indexAction()
115
    {
116
        return $this->pagination([
0 ignored issues
show
Bug introduced by
The method pagination() does not exist on Applications\Controller\ManageController. Since you implemented __call, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

116
        return $this->/** @scrutinizer ignore-call */ pagination([
Loading history...
117
                'params' => ['Application_List', ['q', 'job', 'page' => 1, 'unread', 'status' => 'all']],
118
                'paginator' => ['Applications', 'as' => 'applications'],
119
                'form' => [
120
                    ApplicationsFilter::class,
121
                    'as' => 'form'
122
                ],
123
            ]);
124
    }
125
126
    /**
127
     * Detail view of an application
128
     *
129
     * @return array|JsonModel|ViewModel
130
     */
131
    public function detailAction()
132
    {
133
        if ('refresh-rating' == $this->params()->fromQuery('do')) {
134
            return $this->refreshRatingAction();
135
        }
136
        
137
        $nav = $this->coreNavigation;
138
        $page = $nav->findByRoute('lang/applications');
139
        $page->setActive();
140
141
        /* @var \Applications\Repository\Application$repository */
142
        $repository = $this->repositories->get('Applications/Application');
143
        /* @var Application $application */
144
        $application = $repository->find($this->params('id'));
145
        
146
        if (!$application) {
0 ignored issues
show
introduced by
$application is of type Applications\Entity\Application, thus it always evaluated to true.
Loading history...
147
            $this->response->setStatusCode(410);
148
            $model = new ViewModel(
149
                array(
150
                'content' => /*@translate*/ 'Invalid apply id'
151
                )
152
            );
153
            $model->setTemplate('applications/error/not-found');
154
            return $model;
155
        }
156
        
157
        $this->acl($application, 'read');
0 ignored issues
show
Unused Code introduced by
The call to Applications\Controller\ManageController::acl() has too many arguments starting with $application. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

157
        $this->/** @scrutinizer ignore-call */ 
158
               acl($application, 'read');

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
158
        
159
        $applicationIsUnread = false;
160
        if ($application->isUnreadBy($this->auth('id')) && $application->getStatus()) {
0 ignored issues
show
Unused Code introduced by
The call to Applications\Controller\ManageController::auth() has too many arguments starting with 'id'. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

160
        if ($application->isUnreadBy($this->/** @scrutinizer ignore-call */ auth('id')) && $application->getStatus()) {

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
161
            $application->addReadBy($this->auth('id'));
162
            $applicationIsUnread = true;
163
            $application->changeStatus(
164
                $application->getStatus(),
165
                sprintf(/*@translate*/ 'Application was read by %s',
166
                                       $this->auth()->getUser()->getInfo()->getDisplayName()
167
                )
168
            );
169
        }
170
171
172
        
173
        $format=$this->params()->fromQuery('format');
174
175
        if ($application->isDraft()) {
176
            $list = false;
177
        } else {
178
            $list = $this->paginationParams('Applications\Index', $repository);
0 ignored issues
show
Bug introduced by
The method paginationParams() does not exist on Applications\Controller\ManageController. Since you implemented __call, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

178
            /** @scrutinizer ignore-call */ 
179
            $list = $this->paginationParams('Applications\Index', $repository);
Loading history...
179
            $list->setCurrent($application->getId());
0 ignored issues
show
Bug introduced by
The method setCurrent() does not exist on Zend\Stdlib\DispatchableInterface. It seems like you code against a sub-type of Zend\Stdlib\DispatchableInterface such as Zend\Mvc\Controller\AbstractController. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

179
            $list->/** @scrutinizer ignore-call */ 
180
                   setCurrent($application->getId());
Loading history...
180
        }
181
182
        $return = array(
183
            'application'=> $application,
184
            'list' => $list,
185
            'isUnread' => $applicationIsUnread,
186
            'format' => 'html'
187
        );
188
        switch ($format) {
189
            case 'json':
190
                /*@deprecated - must be refactored */
191
                        $viewModel = new JsonModel();
192
                        $viewModel->setVariables(
193
                            /*array(
194
                            'application' => */$this->builders
0 ignored issues
show
Bug Best Practice introduced by
The property builders does not exist on Applications\Controller\ManageController. Did you maybe forget to declare it?
Loading history...
195
                                              ->get('JsonApplication')
196
                                              ->unbuild($application)
197
                        );
198
                        $viewModel->setVariable('isUnread', $applicationIsUnread);
199
                        $return = $viewModel;
200
                break;
201
            case 'pdf':
202
                // @TODO: [ZF3] Refactor this so we can inject Core/Html2Pdf service during controller creation
203
                $pdf = $this->container->get('Core/Html2Pdf');
0 ignored issues
show
Unused Code introduced by
The assignment to $pdf is dead and can be removed.
Loading history...
204
                $return['format'] = $format;
205
                break;
206
            default:
207
                $contentCollector = $this->getPluginManager()->get('Core/ContentCollector');
208
                $contentCollector->setTemplate('applications/manage/details/action-buttons');
0 ignored issues
show
Bug introduced by
The method setTemplate() does not exist on Zend\Stdlib\DispatchableInterface. It seems like you code against a sub-type of Zend\Stdlib\DispatchableInterface such as Zend\Mvc\Controller\AbstractController. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

208
                $contentCollector->/** @scrutinizer ignore-call */ 
209
                                   setTemplate('applications/manage/details/action-buttons');
Loading history...
209
                $actionButtons = $contentCollector->trigger('application.detail.actionbuttons', $application);
0 ignored issues
show
Bug introduced by
The method trigger() does not exist on Zend\Stdlib\DispatchableInterface. It seems like you code against a sub-type of Zend\Stdlib\DispatchableInterface such as Zend\Mvc\Controller\AbstractController. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

209
                /** @scrutinizer ignore-call */ 
210
                $actionButtons = $contentCollector->trigger('application.detail.actionbuttons', $application);
Loading history...
210
                
211
                $return = new ViewModel($return);
212
                $return->addChild($actionButtons, 'externActionButtons');
213
                
214
                $allowSubsequentAttachmentUpload = $this->appOptions
215
                    ->getAllowSubsequentAttachmentUpload();
216
                
217
                if ($allowSubsequentAttachmentUpload
218
                    && $this->acl($application, Application::PERMISSION_SUBSEQUENT_ATTACHMENT_UPLOAD, 'test')
219
                ) {
220
                    $attachmentsForm = $this->forms
221
                        ->get('Applications/Attachments');
222
                    $attachmentsForm->bind($application->getAttachments());
223
                    
224
                    /* @var $request \Zend\Http\PhpEnvironment\Request */
225
                    $request = $this->getRequest();
226
                    
227
                    if ($request->isPost() && $attachmentsForm->get('return')->getValue() === $request->getPost('return')) {
228
                        $data = array_merge(
229
                            $attachmentsForm->getOption('use_post_array') ? $request->getPost()->toArray() : [],
230
                            $attachmentsForm->getOption('use_files_array') ? $request->getFiles()->toArray() : []
231
                        );
232
                        $attachmentsForm->setData($data);
233
                        
234
                        if (!$attachmentsForm->isValid()) {
235
                            return new JsonModel([
236
                                'valid' => false,
237
                                'errors' => $attachmentsForm->getMessages()
238
                            ]);
239
                        }
240
                        
241
                        $content = $attachmentsForm->getHydrator()
242
                            ->getLastUploadedFile()
243
                            ->getUri();
244
                        
245
                        return new JsonModel([
246
                            'valid' => $attachmentsForm->isValid(),
247
                            'content' => $content
248
                        ]);
249
                    }
250
                    
251
                    $return->setVariable('attachmentsForm', $attachmentsForm);
252
                }
253
                
254
                break;
255
        }
256
        
257
        return $return;
258
    }
259
    
260
    /**
261
     * Refreshes the rating of an application
262
     *
263
     * @throws \DomainException
264
     * @return \Zend\View\Model\ViewModel
265
     */
266
    public function refreshRatingAction()
267
    {
268
        $model = new ViewModel();
269
        $model->setTemplate('applications/manage/_rating');
270
        
271
        $application = $this->repositories->get('Applications/Application')
272
                        ->find($this->params('id', 0));
273
        
274
        if (!$application) {
275
            throw new \DomainException('Invalid application id.');
276
        }
277
        
278
        $model->setVariable('application', $application);
279
        return $model;
280
    }
281
    
282
    /**
283
     * Attaches a social profile to an application
284
     * @throws \InvalidArgumentException
285
     *
286
     * @return array
287
     */
288
    public function socialProfileAction()
289
    {
290
        if ($spId = $this->params()->fromQuery('spId')) {
0 ignored issues
show
Unused Code introduced by
The assignment to $spId is dead and can be removed.
Loading history...
291
            $repositories = $this->repositories;
292
            $repo = $repositories->get('Applications/Application');
293
            $profile = $repo->findProfile($this->params()->fromQuery('spId'));
294
            if (!$profile) {
295
                throw new \InvalidArgumentException('Could not find profile.');
296
            }
297
        } elseif ($this->getRequest()->isPost()
0 ignored issues
show
Bug introduced by
The method isPost() does not exist on Zend\Stdlib\RequestInterface. It seems like you code against a sub-type of Zend\Stdlib\RequestInterface such as Zend\Http\Request. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

297
        } elseif ($this->getRequest()->/** @scrutinizer ignore-call */ isPost()
Loading history...
298
                   && ($network = $this->params()->fromQuery('network'))
299
                   && ($data    = $this->params()->fromPost('data'))
300
        ) {
301
            $profileClass = '\\Auth\\Entity\\SocialProfiles\\' . $network;
302
            $profile      = new $profileClass();
303
            $profile->setData(\Zend\Json\Json::decode($data, \Zend\Json\Json::TYPE_ARRAY));
304
        } else {
305
            throw new \RuntimeException(
306
                'Missing arguments. Either provide "spId" as Get or "network" and "data" as Post.'
307
            );
308
        }
309
        
310
        return array(
311
            'profile' => $profile
312
        );
313
    }
314
315
    /**
316
     * Changes the status of an application
317
     *
318
     * @return array
319
     */
320
    public function statusAction()
321
    {
322
        $applicationId = $this->params('id');
323
        /* @var \Applications\Repository\Application $repository */
324
        $repository    = $this->repositories->get('Applications/Application');
325
        /* @var Application $application */
326
        $application   = $repository->find($applicationId);
327
328
        /* @var Request $request */
329
        $request = $this->getRequest();
330
331
        if (!$application) {
0 ignored issues
show
introduced by
$application is of type Applications\Entity\Application, thus it always evaluated to true.
Loading history...
332
            throw new \InvalidArgumentException('Could not find application.');
333
        }
334
        
335
        $this->acl($application, 'change');
0 ignored issues
show
Unused Code introduced by
The call to Applications\Controller\ManageController::acl() has too many arguments starting with $application. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

335
        $this->/** @scrutinizer ignore-call */ 
336
               acl($application, 'change');

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
336
        
337
        $jsonFormat    = 'json' == $this->params()->fromQuery('format');
338
        $status        = $this->params('status', Status::CONFIRMED);
339
        $settings = $this->settings();
0 ignored issues
show
Bug introduced by
The method settings() does not exist on Applications\Controller\ManageController. Since you implemented __call, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

339
        /** @scrutinizer ignore-call */ 
340
        $settings = $this->settings();
Loading history...
Unused Code introduced by
The assignment to $settings is dead and can be removed.
Loading history...
340
        
341
        if (in_array($status, array(Status::INCOMING))) {
342
            $application->changeStatus($status);
0 ignored issues
show
Bug introduced by
It seems like $status can also be of type Zend\Mvc\Controller\Plugin\Params; however, parameter $status of Applications\Entity\Application::changeStatus() does only seem to accept Applications\Entity\StatusInterface|string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

342
            $application->changeStatus(/** @scrutinizer ignore-type */ $status);
Loading history...
343
            if ($request->isXmlHttpRequest()) {
344
                $response = $this->getResponse();
345
                $response->setContent('ok');
346
                return $response;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $response returns the type Zend\Stdlib\ResponseInterface which is incompatible with the documented return type array.
Loading history...
347
            }
348
            if ($jsonFormat) {
349
                return array(
350
                    'status' => 'success',
351
                );
352
            }
353
            return $this->redirect()->toRoute('lang/applications/detail', array(), true);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->redirect()...detail', array(), true) returns the type Zend\Http\Response which is incompatible with the documented return type array.
Loading history...
Bug introduced by
true of type true is incompatible with the type array expected by parameter $options of Zend\Mvc\Controller\Plugin\Redirect::toRoute(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

353
            return $this->redirect()->toRoute('lang/applications/detail', array(), /** @scrutinizer ignore-type */ true);
Loading history...
354
        }
355
356
        $events = $this->appEvents;
357
358
        /* @var ApplicationEvent $event */
359
        $event = $events->getEvent(
360
            ApplicationEvent::EVENT_APPLICATION_STATUS_CHANGE,
361
                                   $this,
362
                                   [
363
                                       'application' => $application,
364
                                       'status' => $status,
365
                                       'user' => $this->auth()->getUser(),
366
                                   ]
367
        );
368
        
369
        $event->setIsPostRequest($request->isPost());
370
        $event->setPostData($request->getPost());
371
        $events->trigger($event->getName(), $event);
372
373
        $params = $event->getFormData();
374
375
376
        if ($request->isPost()) {
377
            if ($jsonFormat) {
378
                return array(
379
                    'status' => 'success',
380
                );
381
            }
382
            $this->notification()->success($event->getNotification());
383
            return $this->redirect()->toRoute('lang/applications/detail', array(), true);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->redirect()...detail', array(), true) returns the type Zend\Http\Response which is incompatible with the documented return type array.
Loading history...
384
        }
385
386
        if ($jsonFormat) {
387
            return $params;
388
        }
389
390
        /* @var \Applications\Form\Mail $form */
391
        $form = $this->forms->get('Applications/Mail');
392
        $form->populateValues($params);
393
394
395
396
        $recipient = $params['to'];
397
398
        return [
399
            'recipient' => $recipient,
400
            'form' => $form
401
        ];
402
    }
403
    
404
    /**
405
     * Forwards an application via Email
406
     *
407
     * @throws \InvalidArgumentException
408
     * @return \Zend\View\Model\JsonModel
409
     */
410
    public function forwardAction()
411
    {
412
        $emailAddress = $this->params()->fromQuery('email');
413
        /* @var \Applications\Entity\Application $application */
414
        $application  = $this->repositories->get('Applications/Application')
415
                                 ->find($this->params('id'));
416
        
417
        $this->acl($application, 'forward');
0 ignored issues
show
Unused Code introduced by
The call to Applications\Controller\ManageController::acl() has too many arguments starting with $application. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

417
        $this->/** @scrutinizer ignore-call */ 
418
               acl($application, 'forward');

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
418
        
419
        $translator   = $this->translator;
420
         
421
        if (!$emailAddress) {
422
            throw new \InvalidArgumentException('An email address must be supplied.');
423
        }
424
        
425
        $params = array(
426
            'ok' => true,
427
            'text' => sprintf($translator->translate('Forwarded application to %s'), $emailAddress)
428
        );
429
        
430
        try {
431
            $userName    = $this->auth('info')->getDisplayName();
0 ignored issues
show
Unused Code introduced by
The call to Applications\Controller\ManageController::auth() has too many arguments starting with 'info'. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

431
            $userName    = $this->/** @scrutinizer ignore-call */ auth('info')->getDisplayName();

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
Bug introduced by
The method getDisplayName() does not exist on Auth\Controller\Plugin\Auth. Since you implemented __call, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

431
            $userName    = $this->auth('info')->/** @scrutinizer ignore-call */ getDisplayName();
Loading history...
432
            $fromAddress = $application->getJob()->getContactEmail();
433
            $mailOptions = array(
434
                'application' => $application,
435
                'to'          => $emailAddress,
436
                'from'        => array($fromAddress => $userName)
437
            );
438
            $this->mailer('Applications/Forward', $mailOptions, true);
0 ignored issues
show
Unused Code introduced by
The call to Applications\Controller\ManageController::mailer() has too many arguments starting with 'Applications/Forward'. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

438
            $this->/** @scrutinizer ignore-call */ 
439
                   mailer('Applications/Forward', $mailOptions, true);

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
439
            $this->notification()->success($params['text']);
440
        } catch (\Exception $ex) {
441
            $params = array(
442
                'ok' => false,
443
                'text' => sprintf($translator->translate('Forward application to %s failed.'), $emailAddress)
444
            );
445
            $this->notification()->error($params['text']);
446
        }
447
        $application->changeStatus($application->getStatus(), $params['text']);
448
        return new JsonModel($params);
449
    }
450
451
    /**
452
     * Deletes an application
453
     *
454
     * @return array|\Zend\Http\Response
455
     */
456
    public function deleteAction()
457
    {
458
        $id          = $this->params('id');
459
        $repositories= $this->repositories;
460
        $repository  = $repositories->get('Applications/Application');
461
        $application = $repository->find($id);
462
        
463
        if (!$application) {
464
            throw new \DomainException('Application not found.');
465
        }
466
467
        $this->acl($application, 'delete');
0 ignored issues
show
Unused Code introduced by
The call to Applications\Controller\ManageController::acl() has too many arguments starting with $application. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

467
        $this->/** @scrutinizer ignore-call */ 
468
               acl($application, 'delete');

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
468
469
        $events   = $this->appEvents;
470
        $events->trigger(ApplicationEvent::EVENT_APPLICATION_PRE_DELETE, $this, [ 'application' => $application ]);
471
        
472
        $repositories->remove($application);
473
        
474
        if ('json' == $this->params()->fromQuery('format')) {
475
            return ['status' => 'success'];
476
        }
477
        
478
        return $this->redirect()->toRoute('lang/applications', array(), true);
0 ignored issues
show
Bug introduced by
true of type true is incompatible with the type array expected by parameter $options of Zend\Mvc\Controller\Plugin\Redirect::toRoute(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

478
        return $this->redirect()->toRoute('lang/applications', array(), /** @scrutinizer ignore-type */ true);
Loading history...
479
    }
480
481
    /**
482
     * Move an application to talent pool
483
     *
484
     * @return \Zend\Http\Response
485
     * @since 0.26
486
     */
487
    public function moveAction()
488
    {
489
        $id = $this->params('id');
490
        $repositories = $this->repositories;
491
        $application = $repositories->get('Applications/Application')->find($id);
492
        
493
        if (!$application) {
494
            throw new \DomainException('Application not found.');
495
        }
496
497
        $this->acl($application, 'move');
0 ignored issues
show
Unused Code introduced by
The call to Applications\Controller\ManageController::acl() has too many arguments starting with $application. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

497
        $this->/** @scrutinizer ignore-call */ 
498
               acl($application, 'move');

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
498
        
499
        $user = $this->auth()->getUser();
500
        $cv = $repositories->get('Cv/Cv')->createFromApplication($application, $user);
501
        
502
        $repositories->store($cv);
503
        $repositories->remove($application);
504
505
        $this->notification()->success(
506
            /*@translate*/ 'Application has been successfully moved to Talent Pool'
507
        );
508
        
509
        return $this->redirect()->toRoute('lang/applications', array(), true);
0 ignored issues
show
Bug introduced by
true of type true is incompatible with the type array expected by parameter $options of Zend\Mvc\Controller\Plugin\Redirect::toRoute(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

509
        return $this->redirect()->toRoute('lang/applications', array(), /** @scrutinizer ignore-type */ true);
Loading history...
510
    }
511
}
512