From: Johan Cwiklinski Date: Tue, 14 Nov 2023 06:52:42 +0000 (+0100) Subject: Use specific filters X-Git-Tag: 1.0.0rc3~30 X-Git-Url: https://git.agnieray.net/?a=commitdiff_plain;h=5a7256a815004472a2ffda6fdba94e5363d8e563;p=galette.git Use specific filters Fix mailing filters reset; closes #1742 --- diff --git a/galette/lib/Galette/Controllers/Crud/MailingsController.php b/galette/lib/Galette/Controllers/Crud/MailingsController.php index 1a174ad5a..fd3a8e679 100644 --- a/galette/lib/Galette/Controllers/Crud/MailingsController.php +++ b/galette/lib/Galette/Controllers/Crud/MailingsController.php @@ -90,7 +90,9 @@ class MailingsController extends CrudController $m->removeAttachments(true); } $this->session->mailing = null; + unset($this->session->mailing); $this->session->redirect_mailing = null; + unset($this->session->redirect_mailing); } $params = array(); @@ -110,10 +112,8 @@ class MailingsController extends CrudController ->withStatus(301) ->withHeader('Location', $this->routeparser->urlFor('slash')); } else { - if (isset($this->session->filter_mailing)) { - $filters = $this->session->filter_mailing; - } elseif (isset($this->session->filter_members)) { - $filters = $this->session->filter_members; + if (isset($this->session->filter_members_sendmail)) { + $filters = $this->session->filter_members_sendmail; } else { $filters = new MembersList(); } @@ -235,12 +235,11 @@ class MailingsController extends CrudController $m->removeAttachments(true); } $this->session->mailing = null; + unset($this->session->mailing); $this->session->redirect_mailing = null; - if (isset($this->session->filter_mailing)) { - $filters = $this->session->filter_mailing; - $filters->selected = []; - $this->session->filter_mailing = $filters; - } + unset($this->session->redirect_mailing); + $this->session->filter_members_sendmail = null; + unset($this->session->filter_members_sendmail); return $response ->withStatus(301) @@ -257,7 +256,7 @@ class MailingsController extends CrudController $error_detected[] = _T("Trying to load mailing while email is disabled in preferences."); $goto = $this->routeparser->urlFor('slash'); } else { - $filters = $this->session->filter_members ?? new MembersList(); + $filters = $this->session->filter_members_sendmail ?? new MembersList(); if ( $this->session->mailing !== null @@ -390,8 +389,7 @@ class MailingsController extends CrudController ); $mailing->current_step = Mailing::STEP_SENT; //cleanup - $filters->selected = null; - $this->session->filter_members = $filters; + $this->session->filter_members_sendmail = null; $this->session->mailing = null; $this->session->redirect_mailing = null; $success_detected[] = _T("Mailing has been successfully sent!"); diff --git a/galette/lib/Galette/Controllers/Crud/MembersController.php b/galette/lib/Galette/Controllers/Crud/MembersController.php index fd424bbdf..d9b1fcaf3 100644 --- a/galette/lib/Galette/Controllers/Crud/MembersController.php +++ b/galette/lib/Galette/Controllers/Crud/MembersController.php @@ -341,7 +341,7 @@ class MembersController extends CrudController $value = null, $type = null ): Response { - $varname = 'public_filter_' . $type; + $varname = $this->getFilterName(['prefix' => 'public', 'suffix' => $type]); if (isset($this->session->$varname)) { $filters = $this->session->$varname; } else { @@ -398,7 +398,7 @@ class MembersController extends CrudController { $post = $request->getParsedBody(); - $varname = 'public_filter_' . $type; + $varname = $this->getFilterName(['prefix' => 'public', 'suffix' => $type]); if (isset($this->session->$varname)) { $filters = $this->session->$varname; } else { @@ -434,8 +434,8 @@ class MembersController extends CrudController */ public function list(Request $request, Response $response, $option = null, $value = null): Response { - if (isset($this->session->filter_members)) { - $filters = $this->session->filter_members; + if (isset($this->session->{$this->getFilterName()})) { + $filters = $this->session->{$this->getFilterName()}; } else { $filters = new MembersList(); } @@ -467,7 +467,7 @@ class MembersController extends CrudController $filters->setViewPagination($this->routeparser, $this->view, false); $filters->setViewCommonsFilters($this->preferences, $this->view); - $this->session->filter_members = $filters; + $this->session->{$this->getFilterName()} = $filters; // display page $this->view->render( @@ -498,14 +498,14 @@ class MembersController extends CrudController public function filter(Request $request, Response $response): Response { $post = $request->getParsedBody(); - $filters = $this->session->filter_members ?? new MembersList(); + $filters = $this->session->{$this->getFilterName()} ?? new MembersList(); //reinitialize filters if (isset($post['clear_filter'])) { $filters = new MembersList(); } elseif (isset($post['clear_adv_filter'])) { - $this->session->filter_members = null; - unset($this->session->filter_members); + $this->session->{$this->getFilterName()} = null; + unset($this->session->{$this->getFilterName()}); return $response ->withStatus(301) @@ -635,7 +635,7 @@ class MembersController extends CrudController ); } - $this->session->filter_members = $filters; + $this->session->{$this->getFilterName()} = $filters; return $response ->withStatus(301) @@ -652,8 +652,8 @@ class MembersController extends CrudController */ public function advancedSearch(Request $request, Response $response): Response { - if (isset($this->session->filter_members)) { - $filters = $this->session->filter_members; + if (isset($this->session->{$this->getFilterName()})) { + $filters = $this->session->{$this->getFilterName()}; if (!$filters instanceof AdvancedMembersList) { $filters = new AdvancedMembersList($filters); } @@ -737,7 +737,7 @@ class MembersController extends CrudController { $post = $request->getParsedBody(); - $filters = $this->session->ajax_members_filters ?? new MembersList(); + $filters = $this->session->{$this->getFilterName(['prefix' => 'ajax'])} ?? new MembersList(); if ($option == 'page') { $filters->current_page = (int)$value; @@ -770,7 +770,7 @@ class MembersController extends CrudController //assign pagination variables to the template and add pagination links $filters->setViewPagination($this->routeparser, $this->view, false); - $this->session->ajax_members_filters = $filters; + $this->session->{$this->getFilterName(['prefix' => 'ajax'])} = $filters; $selected_members = null; $unreachables_members = null; @@ -869,61 +869,35 @@ class MembersController extends CrudController $post = $request->getParsedBody(); if (isset($post['entries_sel'])) { - if (isset($this->session->filter_members)) { - $filters = $this->session->filter_members; + if (isset($this->session->{$this->getFilterName()})) { + $filters = $this->session->{$this->getFilterName()}; } else { $filters = new MembersList(); } $filters->selected = $post['entries_sel']; - $this->session->filter_members = $filters; - - if (isset($post['cards'])) { - return $response - ->withStatus(301) - ->withHeader('Location', $this->routeparser->urlFor('pdf-members-cards')); - } - - if (isset($post['labels'])) { - return $response - ->withStatus(301) - ->withHeader('Location', $this->routeparser->urlFor('pdf-members-labels')); - } - - if (isset($post['sendmail'])) { - return $response - ->withStatus(301) - ->withHeader('Location', $this->routeparser->urlFor('mailing') . '?mailing_new=new'); - } - - if (isset($post['attendance_sheet'])) { - return $response - ->withStatus(301) - ->withHeader('Location', $this->routeparser->urlFor('attendance_sheet_details')); - } - - if (isset($post['csv'])) { - return $response - ->withStatus(301) - ->withHeader('Location', $this->routeparser->urlFor('csv-memberslist')); - } - - if (isset($post['delete'])) { - return $response - ->withStatus(301) - ->withHeader('Location', $this->routeparser->urlFor('removeMembers')); - } - - if (isset($post['masschange'])) { - return $response - ->withStatus(301) - ->withHeader('Location', $this->routeparser->urlFor('masschangeMembers')); - } - - if (isset($post['masscontributions'])) { - return $response - ->withStatus(301) - ->withHeader('Location', $this->routeparser->urlFor('massAddContributionsChooseType')); + $knowns = [ + 'cards' => 'pdf-members-cards', + 'labels' => 'pdf-members-labels', + 'sendmail' => 'mailing', + 'attendance_sheet' => 'attendance_sheet_details', + 'csv' => 'csv-memberslist', + 'delete' => 'removeMembers', + 'masschange' => 'masschangeMembers', + 'masscontributions' => 'massAddContributionsChooseType' + ]; + + foreach ($knowns as $known => $redirect_url) { + if (isset($post[$known])) { + $this->session->{$this->getFilterName(['suffix' => $known])} = $filters; + $redirect_url = $this->routeparser->urlFor($redirect_url); + if ($known === 'sendmail') { + $redirect_url .= '?mailing_new=new'; + } + return $response + ->withStatus(301) + ->withHeader('Location', $redirect_url); + } } throw new \RuntimeException('Does not know what to batch :('); @@ -947,7 +921,7 @@ class MembersController extends CrudController * * @param Request $request PSR Request * @param Response $response PSR Response - * @param integer $id Member id/array of members id + * @param ?integer $id Member id/array of members id * @param string $action null or 'add' * * @return Response @@ -1117,7 +1091,7 @@ class MembersController extends CrudController */ public function massChange(Request $request, Response $response): Response { - $filters = $this->session->filter_members; + $filters = $this->session->{$this->getFilterName(['suffix' => 'masschange'])} ?? new MembersList(); $data = [ 'id' => $filters->selected, @@ -1222,7 +1196,7 @@ class MembersController extends CrudController } } - $filters = $this->session->filter_members; + $filters = $this->session->{$this->getFilterName(['suffix' => 'masschange'])}; $data = [ 'id' => $filters->selected, 'redirect_uri' => $this->routeparser->urlFor('members') @@ -1744,7 +1718,8 @@ class MembersController extends CrudController ); } else { //batch members removal - $filters = $this->session->filter_members; + $filters = $this->session->{$this->getFilterName(['suffix' => 'delete'])}; + $this->session->{$this->getFilterName(['suffix' => 'delete'])} = $filters; return str_replace( '%count', count($filters->selected), @@ -1763,8 +1738,8 @@ class MembersController extends CrudController */ protected function doDelete(array $args, array $post) { - if (isset($this->session->filter_members)) { - $filters = $this->session->filter_members; + if (isset($this->session->{$this->getFilterName(['suffix' => 'delete'])})) { + $filters = $this->session->{$this->getFilterName(['suffix' => 'delete'])}; } else { $filters = new MembersList(); } @@ -1813,8 +1788,8 @@ class MembersController extends CrudController { $navigate = array(); - if (isset($this->session->filter_members)) { - $filters = $this->session->filter_members; + if (isset($this->session->{$this->getFilterName()})) { + $filters = $this->session->{$this->getFilterName()}; } else { $filters = new MembersList(); } @@ -1867,6 +1842,16 @@ class MembersController extends CrudController */ public function getFilterName(array $args = null): string { - return 'filter_members'; + $filter_name = 'filter_members'; + + if (isset($args['prefix'])) { + $filter_name = $args['prefix'] . '_' . $filter_name; + } + + if (isset($args['suffix'])) { + $filter_name .= '_' . $args['suffix']; + } + + return $filter_name; } }