Overview
Comment:Brindille: Implement search_name parameter for users section
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA3-256: 0572847af387996093e148f2ad45736049854fd05ae99323d695ab8d00fce416
User & Date: bohwaz on 2023-04-17 00:27:52
Other Links: branch diff | manifest | tags
Context
2023-04-17
00:29
Add new user preference to force handheld CSS even on large screens check-in: 9a9f4657c4 user: bohwaz tags: dev
00:27
Brindille: Implement search_name parameter for users section check-in: 0572847af3 user: bohwaz tags: dev
2023-04-14
21:06
Make user card customizable check-in: 038dc8a771 user: bohwaz tags: dev
Changes

Modified doc/admin/brindille_sections.md from [ce1836eb4c] to [c42992b3c2].

461
462
463
464
465
466
467

468
469
470
471
472
473

474
475
476
477
478
479
480
481
482
483
484
## users

Liste les membres.

Paramètres possibles :

| `id` | optionnel | Identifiant unique du membre |


Chaque itération renverra la fiche du membre, ainsi que ces variables :

| `$id` | Identifiant unique du membre |
| `$user_name` | Nom du membre, tel que défini dans la configuration |
| `$user_login` | Identifiant de connexion du membre, tel que défini dans la configuration |



## subscriptions

Liste les inscriptions à une ou des activités.

Paramètres possibles :

| `user` | optionnel | Identifiant unique du membre |
| `active` | optionnel | Si `TRUE`, seules les inscriptions à jour sont listées |
| `id_service` | optionnel | Ne renvoie que les inscriptions à l'activité correspondant à cet ID. |







>




|
|
>











461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
## users

Liste les membres.

Paramètres possibles :

| `id` | optionnel | Identifiant unique du membre |
| `search_name` | optionnel | Ne lister que les membres dont le nom correspond au texte passé en paramètre. |

Chaque itération renverra la fiche du membre, ainsi que ces variables :

| `$id` | Identifiant unique du membre |
| `$_name` | Nom du membre, tel que défini dans la configuration |
| `$_login` | Identifiant de connexion du membre, tel que défini dans la configuration |
| `$_number` | Numéro du membre, tel que défini dans la configuration |


## subscriptions

Liste les inscriptions à une ou des activités.

Paramètres possibles :

| `user` | optionnel | Identifiant unique du membre |
| `active` | optionnel | Si `TRUE`, seules les inscriptions à jour sont listées |
| `id_service` | optionnel | Ne renvoie que les inscriptions à l'activité correspondant à cet ID. |

Modified src/include/lib/Garradin/UserTemplate/Sections.php from [f8c580784d] to [24e5c6d4d9].

525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549








550
551
552
553
554
555
556
557
558

	static public function users(array $params, UserTemplate $tpl, int $line): \Generator
	{
		if (!array_key_exists('where', $params)) {
			$params['where'] = '';
		}

		$id_field = DynamicFields::getNameFieldsSQL();
		$login_field = DynamicFields::getLoginField();
		$number_field = DynamicFields::getNumberField();

		if (empty($params['select'])) {
			$params['select'] = '*';
		}

		$params['select'] .= sprintf(', %s AS _name, %s AS _login, %s AS _number',
			$id_field, $login_field, $number_field);
		$params['tables'] = 'users';

		if (isset($params['id'])) {
			$params['where'] .= ' AND id = :id';
			$params[':id'] = (int) $params['id'];
			unset($params['id']);
		}









		if (empty($params['order'])) {
			$params['order'] = 'id';
		}

		$files_fields = array_keys(DynamicFields::getInstance()->fieldsByType('file'));

		foreach (self::sql($params, $tpl, $line) as $row) {
			foreach ($row as $key => &$value) {
				if (in_array($key, $files_fields)) {







|




|


|




|




>
>
>
>
>
>
>
>

|







525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566

	static public function users(array $params, UserTemplate $tpl, int $line): \Generator
	{
		if (!array_key_exists('where', $params)) {
			$params['where'] = '';
		}

		$id_field = DynamicFields::getNameFieldsSQL('users');
		$login_field = DynamicFields::getLoginField();
		$number_field = DynamicFields::getNumberField();

		if (empty($params['select'])) {
			$params['select'] = 'users.*';
		}

		$params['select'] .= sprintf(', users.id AS id, %s AS _name, users.%s AS _login, users.%s AS _number',
			$id_field, $login_field, $number_field);
		$params['tables'] = 'users';

		if (isset($params['id'])) {
			$params['where'] .= ' AND users.id = :id';
			$params[':id'] = (int) $params['id'];
			unset($params['id']);
		}

		if (!empty($params['search_name'])) {

			$params['tables'] .= sprintf(' INNER JOIN users_search AS us ON us.id = users.id AND %s LIKE :search_name ESCAPE \'\\\' COLLATE NOCASE',
				DynamicFields::getNameFieldsSQL('us'));
			$params[':search_name'] = '%' . Utils::unicodeTransliterate($params['search_name']) . '%';
			unset($params['search_name']);
		}

		if (empty($params['order'])) {
			$params['order'] = 'users.id';
		}

		$files_fields = array_keys(DynamicFields::getInstance()->fieldsByType('file'));

		foreach (self::sql($params, $tpl, $line) as $row) {
			foreach ($row as $key => &$value) {
				if (in_array($key, $files_fields)) {