]> git.agnieray.net Git - galette.git/blob - galette/includes/routes/members.routes.php
4553030a948ec563d96f5702bb0e59da5de8bf34
[galette.git] / galette / includes / routes / members.routes.php
1 <?php
2
3 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
4
5 /**
6 * Members related routes
7 *
8 * PHP version 5
9 *
10 * Copyright © 2014-2020 The Galette Team
11 *
12 * This file is part of Galette (http://galette.tuxfamily.org).
13 *
14 * Galette is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation, either version 3 of the License, or
17 * (at your option) any later version.
18 *
19 * Galette is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with Galette. If not, see <http://www.gnu.org/licenses/>.
26 *
27 * @category Routes
28 * @package Galette
29 *
30 * @author Johan Cwiklinski <johan@x-tnd.be>
31 * @copyright 2014-2020 The Galette Team
32 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
33 * @link http://galette.tuxfamily.org
34 * @since 0.8.2dev 2014-11-27
35 */
36
37 use Galette\Controllers\Crud;
38 use Galette\Controllers\CsvController;
39 use Galette\Controllers\GaletteController;
40 use Galette\Controllers\PdfController;
41 use Analog\Analog;
42 use Galette\Core\Password;
43 use Galette\Repository\Members;
44 use Galette\Filters\MembersList;
45 use Galette\Repository\Groups;
46 use Galette\Repository\Reminders;
47 use Galette\Entity\Adherent;
48 use Galette\Entity\Status;
49 use Galette\Repository\Titles;
50 use Galette\Entity\Group;
51 use Galette\IO\File;
52 use Galette\Middleware\MembersNavigate;
53
54 //self subscription
55 $app->get(
56 '/subscribe',
57 [Crud\MembersController::class, 'selfSubscribe']
58 )->setName('subscribe');
59
60 //members list CSV export
61 $app->map(
62 ['GET', 'POST'],
63 '/members/export/csv',
64 [CsvController::class, 'membersExport']
65 )->setName('csv-memberslist')->add($authenticate);
66
67 //members list
68 $app->get(
69 '/members[/{option:page|order}/{value:\d+|\w+}]',
70 [Crud\MembersController::class, 'list']
71 )->setName('members')->add($authenticate);
72
73 //members list filtering
74 $app->post(
75 '/members/filter',
76 [Crud\MembersController::class, 'filter']
77 )->setName('filter-memberslist')->add($authenticate);
78
79 //members self card
80 $app->get(
81 '/member/me',
82 [Crud\MembersController::class, 'showMe']
83 )->setName('me')->add($authenticate);
84
85 //members card
86 $app->get(
87 '/member/{id:\d+}',
88 [Crud\MembersController::class, 'show']
89 )->setName('member')->add($authenticate)->add(MembersNavigate::class);
90
91 $app->get(
92 '/member/edit/{id:\d+}',
93 [Crud\MembersController::class, 'edit']
94 )->setName('editMember')->add($authenticate)->add(MembersNavigate::class);
95
96 $app->get(
97 '/member/add',
98 [Crud\MembersController::class, 'add']
99 )->setName('addMember')->add($authenticate)->add(MembersNavigate::class);
100
101 $app->post(
102 '/subscribe/store',
103 [Crud\MembersController::class, 'doSelfSubscribe']
104 )->setName('storeselfmembers');
105
106 $app->post(
107 '/member/store',
108 [Crud\MembersController::class, 'doAdd']
109 )->setName('doAddMember');
110
111 $app->post(
112 '/member/store/{id:\d+}',
113 [Crud\MembersController::class, 'doEdit']
114 )->setName('doEditMember');
115
116 $app->get(
117 '/member/remove/{id:\d+}',
118 [Crud\MembersController::class, 'confirmDelete']
119 )->setName('removeMember')->add($authenticate);
120
121 $app->get(
122 '/members/remove',
123 [Crud\MembersController::class, 'confirmDelete']
124 )->setName('removeMembers')->add($authenticate);
125
126 $app->post(
127 '/member/remove' . '[/{id:\d+}]',
128 [Crud\MembersController::class, 'delete']
129 )->setName('doRemoveMember')->add($authenticate);
130
131 //advanced search page
132 $app->get(
133 '/advanced-search',
134 [Crud\MembersController::class, 'advancedSearch']
135 )->setName('advanced-search')->add($authenticate);
136
137 //Batch actions on members list
138 $app->post(
139 '/members/batch',
140 [Crud\MembersController::class, 'handleBatch']
141 )->setName('batch-memberslist')->add($authenticate);
142
143 //PDF members cards
144 $app->get(
145 '/members/cards[/{' . Adherent::PK . ':\d+}]',
146 [PdfController::class, 'membersCards']
147 )->setName('pdf-members-cards')->add($authenticate);
148
149 //PDF members labels
150 $app->map(
151 ['GET', 'POST'],
152 '/members/labels',
153 [PdfController::class, 'membersLabels']
154 )->setName('pdf-members-labels')->add($authenticate);
155
156 //PDF adhesion form
157 $app->get(
158 '/members/adhesion-form/{' . Adherent::PK . ':\d+}',
159 [PdfController::class, 'adhesionForm']
160 )->setName('adhesionForm')->add($authenticate);
161
162 //Empty PDF adhesion form
163 $app->get(
164 '/members/empty-adhesion-form',
165 [PdfController::class, 'adhesionForm']
166 )->setName('emptyAdhesionForm');
167
168 //mailing
169 $app->get(
170 '/mailing',
171 [Crud\MailingsController::class, 'add']
172 )->setName('mailing')->add($authenticate);
173
174 $app->post(
175 '/mailing',
176 [Crud\MailingsController::class, 'doAdd']
177 )->setName('doMailing')->add($authenticate);
178
179 $app->map(
180 ['GET', 'POST'],
181 '/mailing/preview[/{id:\d+}]',
182 [Crud\MailingsController::class, 'preview']
183 )->setName('mailingPreview')->add($authenticate);
184
185 $app->get(
186 '/mailing/preview/{id:\d+}/attachment/{pos:\d+}',
187 [Crud\MailingsController::class, 'previewAttachment']
188 )->setName('previewAttachment')->add($authenticate);
189
190 $app->post(
191 '/ajax/mailing/set-recipients',
192 [Crud\MailingsController::class, 'setRecipients']
193 )->setName('mailingRecipients')->add($authenticate);
194
195 //reminders
196 $app->get(
197 '/reminders',
198 [GaletteController::class, 'reminders']
199 )->setName('reminders')->add($authenticate);
200
201 $app->post(
202 '/reminders',
203 [GaletteController::class, 'doReminders']
204 )->setName('doReminders')->add($authenticate);
205
206 $app->get(
207 '/members/reminder-filter/{membership:nearly|late}/{mail:withmail|withoutmail}',
208 [GaletteController::class, 'filterReminders']
209 )->setName('reminders-filter')->add($authenticate);
210
211 $app->map(
212 ['GET', 'POST'],
213 '/attendance-sheet/details',
214 [PdfController::class, 'attendanceSheetConfig']
215 )->setName('attendance_sheet_details')->add($authenticate);
216
217 $app->post(
218 '/attendance-sheet',
219 [PdfController::class, 'attendanceSheet']
220 )->setName('attendance_sheet')->add($authenticate);
221
222 $app->post(
223 '/ajax/members[/{option:page|order}/{value:\d+}]',
224 [Crud\MembersController::class, 'ajaxList']
225 )->setName('ajaxMembers')->add($authenticate);
226
227 $app->post(
228 '/ajax/group/members',
229 [Crud\GroupsController::class, 'ajaxMembers']
230 )->setName('ajaxGroupMembers')->add($authenticate);
231
232 $app->get(
233 '/member/{id:\d+}/file/{fid:\d+}/{pos:\d+}/{name}',
234 [Crud\MembersController::class, 'getDynamicFile']
235 )->setName('getDynamicFile')->add($authenticate);
236
237 $app->get(
238 '/members/mass-change',
239 [Crud\MembersController::class, 'massChange']
240 )->setName('masschangeMembers')->add($authenticate);
241
242 $app->post(
243 '/members/mass-change/validate',
244 [Crud\MembersController::class, 'validateMassChange']
245 )->setName('masschangeMembersReview')->add($authenticate);
246
247 $app->post(
248 '/members/mass-change',
249 [Crud\MembersController::class, 'doMassChange']
250 )->setName('massstoremembers')->add($authenticate);
251
252 //Duplicate member
253 $app->get(
254 '/members/duplicate/{' . Adherent::PK . ':\d+}',
255 [Crud\MembersController::class, 'duplicate']
256 )->setName('duplicateMember')->add($authenticate);
257
258 //saved searches
259 $app->map(
260 ['GET', 'POST'],
261 '/save-search',
262 [Crud\SavedSearchesController::class, 'doAdd']
263 )->setName('saveSearch');
264
265 $app->get(
266 '/saved-searches[/{option:page|order}/{value:\d+}]',
267 [Crud\SavedSearchesController::class, 'list']
268 )->setName('searches')->add($authenticate);
269
270 $app->get(
271 '/search/remove/{id:\d+}',
272 [Crud\SavedSearchesController::class, 'confirmDelete']
273 )->setName('removeSearch')->add($authenticate);
274
275 $app->get(
276 '/searches/remove',
277 [Crud\SavedSearchesController::class, 'confirmDelete']
278 )->setName('removeSearches')->add($authenticate);
279
280 $app->post(
281 '/search/remove' . '[/{id:\d+}]',
282 [Crud\SavedSearchesController::class, 'delete']
283 )->setName('doRemoveSearch')->add($authenticate);
284
285 $app->get(
286 '/save-search/{id}',
287 [Crud\SavedSearchesController::class, 'load']
288 )->setName('loadSearch');