Overview
Comment:Rendre une recherche SQL enregistrée accessible aux non-admins
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA1: d612a3d0b0ae36ddef47fb7c8d8041e36dccee5e
User & Date: bohwaz on 2018-10-03 11:46:40
Other Links: branch diff | manifest | tags
Context
2018-10-03
14:14
Ajout mention check-in: 0d9473fc18 user: bohwaz tags: dev
11:46
Rendre une recherche SQL enregistrée accessible aux non-admins check-in: d612a3d0b0 user: bohwaz tags: dev
11:34
Uniformisation des actions en bas des listes de membres check-in: ec3640ce30 user: bohwaz tags: dev
Changes

Modified src/templates/admin/membres/recherche_sql.tpl from [0b6e16946c] to [af64d8399c].

1
2
3
4

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

23
24
25
26
27
28

29

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
{include file="admin/_head.tpl" title="Recherche par requête SQL" current="membres" js=1}

{include file="admin/membres/_nav.tpl" current="sql"}


<form method="get" action="{$admin_url}membres/recherche_sql.php">
    <fieldset>
        <legend>Schéma des tables SQL</legend>
        <pre class="sql_schema">{$schema.membres}</pre>
        <dl>
            <dt><label for="f_query">Requête SQL</label></dt>
            <dd class="help">Si aucune limite n'est précisée, une limite de 100 résultats sera appliquée.</dd>
            <dd><textarea name="query" id="f_query" cols="70" rows="7" required="required">{$query}</textarea></dd>
        </dl>
        <p class="submit">
            <input type="submit" name="run" value="Exécuter &rarr;" />
            {if $query}
                {if $id}<input type="hidden" name="id" value="{$id}" />{/if}
                <input type="submit" name="save" value="{if $id}Enregistrer : {$recherche.intitule}{else}Enregistrer cette recherche{/if}" class="minor" />
            {/if}
        </p>
    </fieldset>
</form>


{form_errors}

<form method="post" action="{$admin_url}membres/action.php" class="memberList">

{if !empty($result)}

<p class="alert">{$result|count} résultats retournés.</p>

<table class="list search">
    <thead>
        {if array_key_exists('id', $result[0])}
        <td class="check"><input type="checkbox" value="Tout cocher / décocher" onclick="g.checkUncheck();" /></td>
        {/if}
        {foreach from=$result[0] key="col" item="ignore"}
            <td>{$col}</td>
        {/foreach}
        {if array_key_exists('id', $result[0])}
        <td></td>
        {/if}
    </thead>
    <tbody>
        {foreach from=$result item="row"}
            <tr>
                {if array_key_exists('id', $result[0])}
                    <td class="check">{if !empty($row.id)}<input type="checkbox" name="selected[]" value="{$row.id}" />{/if}</td>
                {/if}
                {foreach from=$row item="col"}
                    <td>{$col}</td>
                {/foreach}
                {if array_key_exists('id', $result[0])}
                <td class="actions">
                    {if !empty($row.id)}
                    <a class="icn" href="{$admin_url}membres/fiche.php?id={$row.id}" title="Fiche membre">👤</a>
                    <a class="icn" href="{$admin_url}membres/modifier.php?id={$row.id}" title="Modifier ce membre">✎</a>
                    {/if}
                </td>
                {/if}
            </tr>
        {/foreach}
    </tbody>
    {if $session->canAccess('membres', Membres::DROIT_ADMIN)}
        {include file="admin/membres/_list_actions.tpl" colspan=count((array)$result[0])+1}
    {/if}
</table>


{else}
<p class="alert">
    Aucun membre trouvé.
</p>
{/if}

</form>

{include file="admin/_foot.tpl"}




>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>






>
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<


|
|
|





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79
{include file="admin/_head.tpl" title="Recherche par requête SQL" current="membres" js=1}

{include file="admin/membres/_nav.tpl" current="sql"}

{if $session->canAccess('membres', Membres::DROIT_ADMIN)}
	<form method="get" action="{$admin_url}membres/recherche_sql.php">
		<fieldset>
			<legend>Schéma des tables SQL</legend>
			<pre class="sql_schema">{$schema.membres}</pre>
			<dl>
				<dt><label for="f_query">Requête SQL</label></dt>
				<dd class="help">Si aucune limite n'est précisée, une limite de 100 résultats sera appliquée.</dd>
				<dd><textarea name="query" id="f_query" cols="70" rows="7" required="required">{$query}</textarea></dd>
			</dl>
			<p class="submit">
				<input type="submit" name="run" value="Exécuter &rarr;" />
				{if $query}
					{if $id}<input type="hidden" name="id" value="{$id}" />{/if}
					<input type="submit" name="save" value="{if $id}Enregistrer : {$recherche.intitule}{else}Enregistrer cette recherche{/if}" class="minor" />
				{/if}
			</p>
		</fieldset>
	</form>
{/if}

{form_errors}

<form method="post" action="{$admin_url}membres/action.php" class="memberList">

{if !empty($result)}

	<p class="alert">{$result|count} résultats retournés.</p>

	<table class="list search">
		<thead>
			{if array_key_exists('id', $result[0])}
			<td class="check"><input type="checkbox" value="Tout cocher / décocher" onclick="g.checkUncheck();" /></td>
			{/if}
			{foreach from=$result[0] key="col" item="ignore"}
				<td>{$col}</td>
			{/foreach}
			{if array_key_exists('id', $result[0])}
			<td></td>
			{/if}
		</thead>
		<tbody>
			{foreach from=$result item="row"}
				<tr>
					{if $session->canAccess('membres', Membres::DROIT_ADMIN) && array_key_exists('id', $result[0])}
						<td class="check">{if !empty($row.id)}<input type="checkbox" name="selected[]" value="{$row.id}" />{/if}</td>
					{/if}
					{foreach from=$row item="col"}
						<td>{$col}</td>
					{/foreach}
					{if array_key_exists('id', $result[0])}
					<td class="actions">
						{if !empty($row.id)}
						<a class="icn" href="{$admin_url}membres/fiche.php?id={$row.id}" title="Fiche membre">👤</a>
						<a class="icn" href="{$admin_url}membres/modifier.php?id={$row.id}" title="Modifier ce membre">✎</a>
						{/if}
					</td>
					{/if}
				</tr>
			{/foreach}
		</tbody>
		{if $session->canAccess('membres', Membres::DROIT_ADMIN)}
			{include file="admin/membres/_list_actions.tpl" colspan=count((array)$result[0])+1}
		{/if}
	</table>


{else}
	<p class="alert">
		Aucun membre trouvé.
	</p>
{/if}

</form>

{include file="admin/_foot.tpl"}

Modified src/www/admin/membres/action.php from [b5ff480d3c] to [d0b4b091d1].

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    else
    {
        $import->toCSV($list);
    }

    exit;
}

if ($action == 'move' || $action == 'delete')
{
    foreach (f('selected') as &$id)
    {
        $id = (int) $id;

        // On ne permet pas d'action collective sur l'utilisateur courant pour éviter les risques
        // d'erreur genre "oh je me suis supprimé du coup j'ai plus accès à rien"







<
|







29
30
31
32
33
34
35

36
37
38
39
40
41
42
43
    else
    {
        $import->toCSV($list);
    }

    exit;
}

elseif ($action == 'move' || $action == 'delete')
{
    foreach (f('selected') as &$id)
    {
        $id = (int) $id;

        // On ne permet pas d'action collective sur l'utilisateur courant pour éviter les risques
        // d'erreur genre "oh je me suis supprimé du coup j'ai plus accès à rien"

Modified src/www/admin/membres/recherche_sql.php from [c927d80610] to [b02dad85af].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29




30
31
32
33
34
35
36
<?php
namespace Garradin;

require_once __DIR__ . '/_inc.php';

$session->requireAccess('membres', Membres::DROIT_ADMIN);

$recherche = new Recherche;

$query = trim(qg('query'));
$result = null;
$id = (int) qg('id');

if ($id)
{
	$r = $recherche->get($id);

	if (!$r || $r->type != Recherche::TYPE_SQL)
	{
		throw new UserException('Recherche inconnue');
	}

	if (!$query)
	{
		$query = $r->contenu;
	}

	$tpl->assign('recherche', $r);
}





$tpl->assign('schema', $recherche->schema('membres'));
$tpl->assign('query', $query);

if ($query != '')
{
	try {





<
<















|






>
>
>
>







1
2
3
4
5


6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
namespace Garradin;

require_once __DIR__ . '/_inc.php';



$recherche = new Recherche;

$query = trim(qg('query'));
$result = null;
$id = (int) qg('id');

if ($id)
{
	$r = $recherche->get($id);

	if (!$r || $r->type != Recherche::TYPE_SQL)
	{
		throw new UserException('Recherche inconnue');
	}

	if (!$session->canAccess('membres', Membres::DROIT_ADMIN) || !$query)
	{
		$query = $r->contenu;
	}

	$tpl->assign('recherche', $r);
}
else
{
	$session->requireAccess('membres', Membres::DROIT_ADMIN);
}

$tpl->assign('schema', $recherche->schema('membres'));
$tpl->assign('query', $query);

if ($query != '')
{
	try {