$m->removeAttachments(true);
}
$this->session->mailing = null;
+ unset($this->session->mailing);
$this->session->redirect_mailing = null;
+ unset($this->session->redirect_mailing);
}
$params = array();
->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();
}
$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)
$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
);
$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!");
$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 {
{
$post = $request->getParsedBody();
- $varname = 'public_filter_' . $type;
+ $varname = $this->getFilterName(['prefix' => 'public', 'suffix' => $type]);
if (isset($this->session->$varname)) {
$filters = $this->session->$varname;
} else {
*/
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();
}
$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(
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)
);
}
- $this->session->filter_members = $filters;
+ $this->session->{$this->getFilterName()} = $filters;
return $response
->withStatus(301)
*/
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);
}
{
$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;
//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;
$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 :(');
*
* @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
*/
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,
}
}
- $filters = $this->session->filter_members;
+ $filters = $this->session->{$this->getFilterName(['suffix' => 'masschange'])};
$data = [
'id' => $filters->selected,
'redirect_uri' => $this->routeparser->urlFor('members')
);
} 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),
*/
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();
}
{
$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();
}
*/
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;
}
}