aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2014-03-18 22:22:06 +0000
committerplegall <plg@piwigo.org>2014-03-18 22:22:06 +0000
commit674c85fe31ef77e9132d25e316612e7156cdf5e8 (patch)
tree8ea22b2c5844f0faf3bf75a44a61041cafae6c15
parent8c8591ccb0ca20940d4d41ec05a09b25ddaabb00 (diff)
bug 3053 fixed: columns "groups" and "privacy level" come back in Piwigo 2.6
user manager (which still needs improvement on filtering options...) git-svn-id: http://piwigo.org/svn/branches/2.6@27836 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--admin/themes/default/template/user_list.tpl2
-rw-r--r--admin/user_list_backend.php42
2 files changed, 42 insertions, 2 deletions
diff --git a/admin/themes/default/template/user_list.tpl b/admin/themes/default/template/user_list.tpl
index 79a2e4dd5..0fb47a0fc 100644
--- a/admin/themes/default/template/user_list.tpl
+++ b/admin/themes/default/template/user_list.tpl
@@ -880,6 +880,8 @@ span.infos, span.errors {background-image:none; padding:2px 5px; margin:0;border
<th>{'Username'|@translate}</th>
<th>{'Status'|@translate}</th>
<th>{'Email address'|@translate}</th>
+ <th>{'Groups'|@translate}</th>
+ <th>{'Privacy level'|@translate}</th>
<th>{'registration date'|@translate}</th>
</tr>
</thead>
diff --git a/admin/user_list_backend.php b/admin/user_list_backend.php
index 9d18f270b..b390ed1ec 100644
--- a/admin/user_list_backend.php
+++ b/admin/user_list_backend.php
@@ -35,7 +35,7 @@ check_status(ACCESS_ADMINISTRATOR);
/* Array of database columns which should be read and sent back to DataTables. Use a space where
* you want to insert a non-database field (for example a counter or static image)
*/
-$aColumns = array('id', 'username', 'status', 'mail_address', 'registration_date');
+$aColumns = array('id', 'username', 'status', 'mail_address', 'recent_period', 'level', 'registration_date');
$aColumns = trigger_change('user_list_columns', $aColumns);
/* Indexed column (used for fast and accurate table cardinality) */
@@ -157,9 +157,13 @@ $output = array(
"iTotalDisplayRecords" => $iFilteredTotal,
"aaData" => array()
);
-
+
+$user_ids = array();
+
while ( $aRow = pwg_db_fetch_array( $rResult ) )
{
+ $user_ids[] = $aRow['id'];
+
$row = array();
for ( $i=0 ; $i<count($aColumns) ; $i++ )
{
@@ -167,6 +171,10 @@ while ( $aRow = pwg_db_fetch_array( $rResult ) )
{
$row[] = l10n('user_status_'.$aRow[ $aColumns[$i] ]);
}
+ else if ( $aColumns[$i] == "level" )
+ {
+ $row[] = $aRow[ $aColumns[$i] ] == 0 ? '' : l10n(sprintf('Level %d', $aRow[ $aColumns[$i] ]));
+ }
else if ( $aColumns[$i] != ' ' )
{
/* General output */
@@ -176,6 +184,36 @@ while ( $aRow = pwg_db_fetch_array( $rResult ) )
$output['aaData'][] = $row;
}
+// replace "recent_period" by the list of groups
+if (count($user_ids) > 0)
+{
+ $groups_of_user = array();
+
+ $query = '
+SELECT
+ user_id,
+ GROUP_CONCAT(name ORDER BY name SEPARATOR ", ") AS groups
+ FROM '.USER_GROUP_TABLE.'
+ JOIN '.GROUPS_TABLE.' ON id = group_id
+ WHERE user_id IN ('.implode(',', $user_ids).')
+ GROUP BY user_id
+;';
+ $result = pwg_query($query);
+ while ($row = pwg_db_fetch_assoc($result))
+ {
+ $groups_of_user[ $row['user_id'] ] = $row['groups'];
+ }
+
+ $key_replace = array_search('recent_period', $aColumns);
+
+ // replacement
+ foreach (array_keys($output['aaData']) as $idx)
+ {
+ $user_id = $output['aaData'][$idx][0];
+ $output['aaData'][$idx][$key_replace] = isset($groups_of_user[$user_id]) ? $groups_of_user[$user_id] : '';
+ }
+}
+
$output = trigger_change('after_render_user_list', $output);
echo json_encode( $output );