namespace Galette\Controllers\Crud;
+use Galette\Features\BatchList;
use Galette\Filters\ContributionsList;
use Throwable;
use Analog\Analog;
class ContributionsController extends CrudController
{
+ use BatchList;
+
// CRUD - Create
/**
// /CRUD - Delete
// /CRUD
+
+ /**
+ * Get filter name in session
+ *
+ * @param array|null $args Route arguments
+ *
+ * @return string
+ */
+ public function getFilterName(array $args = null): string
+ {
+ return 'filter_' . $args['type'];
+ }
}
use Galette\Controllers\CrudController;
use Galette\DynamicFields\Boolean;
+use Galette\Features\BatchList;
use Slim\Psr7\Request;
use Slim\Psr7\Response;
use Galette\Core\GaletteMail;
class MembersController extends CrudController
{
+ use BatchList;
+
/** @var bool */
private $is_self_membership = false;
);
}
-
- /**
- * Get ID to remove
- *
- * In simple cases, we get the ID in the route arguments; but for
- * batchs, it should be found elsewhere.
- * In post values, we look for id key, as well as all entries_sel keys
- *
- * @param array $args Request arguments
- * @param array $post POST values
- *
- * @return null|integer|integer[]
- */
- protected function getIdsToRemove(&$args, $post)
- {
- if (isset($args['id'])) {
- return $args['id'];
- } else {
- $filters = $this->session->filter_members;
- return $filters->selected;
- }
- }
-
/**
* Get confirmation removal page title
*
return $navigate;
}
+
+ /**
+ * Get filter name in session
+ *
+ * @param array|null $args Route arguments
+ *
+ * @return string
+ */
+ public function getFilterName(array $args = null): string
+ {
+ return 'filter_members';
+ }
}
$ids = $args['id'];
}
- //look for {sthing}_sel as multiple ids selection (members_sel, contrib_sel, and so on)
- //@deprecated using elements/list.html.twig assumes key is named entries_sel
- if (is_array($post) && count($post)) {
- $selecteds = preg_grep('/.+_sel$/', array_keys($post));
- if (count($selecteds) == 1 && !isset($args['id'])) {
- $ids = $post[array_shift($selecteds)];
- } elseif (count($selecteds) > 1) {
- //maybe an error to have multiple {type}_sel in same post request.
- Analog::log(
- 'Several {sthing}_sel variables in same post request should be avoid.',
- ANalog::WARNING
- );
- }
+ if ($ids === null && method_exists($this, 'getFilterName')) {
+ $filter_name = $this->getFilterName($args);
+ $filters = $this->session->$filter_name;
+ $ids = $filters->selected;
}
//type
--- /dev/null
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Batch list feature
+ *
+ * PHP version 5
+ *
+ * Copyright © 2023 The Galette Team
+ *
+ * This file is part of Galette (http://galette.tuxfamily.org).
+ *
+ * Galette is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Galette is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Galette. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Features
+ * @package Galette
+ *
+ * @author Johan Cwiklinski <johan@x-tnd.be>
+ * @copyright 2023 The Galette Team
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
+ * @link https://galette.eu
+ * @since 2023-03-01
+ */
+
+namespace Galette\Features;
+
+use Galette\Entity\Adherent;
+use Galette\Entity\Social;
+use Slim\Psr7\Request;
+use Slim\Psr7\Response;
+
+/**
+ * Batch list feature
+ *
+ * @category Features
+ * @name BatchList
+ * @package Galette
+ * @author Johan Cwiklinski <johan@x-tnd.be>
+ * @copyright 2023 The Galette Team
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
+ * @link https://galette.eu
+ * @since 2023-03-01
+ */
+
+trait BatchList
+{
+ /**
+ * Get filter name in session
+ *
+ * @param array|null $args Route arguments
+ *
+ * @return string
+ */
+ abstract public function getFilterName(array $args = null): string;
+}