From bd1864363fada1c3122b053b83c4d8b9526bbfa3 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sat, 15 Mar 2014 14:48:09 -0300 Subject: Squashed 'mod/bulk_user_admin/' content from commit 17664c9 git-subtree-dir: mod/bulk_user_admin git-subtree-split: 17664c9c5af5ee2d74b7c378ccc52ee65074ad6c --- actions/bulk_user_admin/delete.php | 30 +++++++ actions/bulk_user_admin/delete_by_domain.php | 36 ++++++++ languages/en.php | 9 ++ manifest.xml | 18 ++++ readme.md | 11 +++ start.php | 69 +++++++++++++++ views/default/admin/user.php | 98 ++++++++++++++++++++++ views/default/admin/users/email_domain_stats.php | 12 +++ views/default/bulk_user_admin/css.php | 26 ++++++ .../default/bulk_user_admin/email_domain_stats.php | 49 +++++++++++ views/default/bulk_user_admin/search_by_domain.php | 16 ++++ views/default/bulk_user_admin/user.php | 49 +++++++++++ 12 files changed, 423 insertions(+) create mode 100644 actions/bulk_user_admin/delete.php create mode 100644 actions/bulk_user_admin/delete_by_domain.php create mode 100644 languages/en.php create mode 100644 manifest.xml create mode 100644 readme.md create mode 100644 start.php create mode 100644 views/default/admin/user.php create mode 100644 views/default/admin/users/email_domain_stats.php create mode 100644 views/default/bulk_user_admin/css.php create mode 100644 views/default/bulk_user_admin/email_domain_stats.php create mode 100644 views/default/bulk_user_admin/search_by_domain.php create mode 100644 views/default/bulk_user_admin/user.php diff --git a/actions/bulk_user_admin/delete.php b/actions/bulk_user_admin/delete.php new file mode 100644 index 000000000..0d7a7e7df --- /dev/null +++ b/actions/bulk_user_admin/delete.php @@ -0,0 +1,30 @@ +delete()) { + $errors[] = "Could not delete $user->name ($user->username)."; + } +} + +if ($errors) { + foreach ($errors as $error) { + register_error($error); + } +} else { + system_message("Users deleted."); +} + +forward(REFERER); diff --git a/actions/bulk_user_admin/delete_by_domain.php b/actions/bulk_user_admin/delete_by_domain.php new file mode 100644 index 000000000..c51076936 --- /dev/null +++ b/actions/bulk_user_admin/delete_by_domain.php @@ -0,0 +1,36 @@ + 50, + 'offset' => 0, +); + +$users = bulk_user_admin_get_users_by_email_domain($domain, $options); + +while ($users) { + foreach ($users as $user) { + if (!$user->delete()) { + $errors[] = "Could not delete $user->name ($user->username)."; + } + } + + $options['offset'] = $options['offset'] + $options['limit']; + $users = bulk_user_admin_get_users_by_email_domain($domain, $options); +} + +if ($errors) { + foreach ($errors as $error) { + register_error($error); + } +} else { + system_message("Users deleted."); +} + +forward(REFERER); diff --git a/languages/en.php b/languages/en.php new file mode 100644 index 000000000..d29b8398d --- /dev/null +++ b/languages/en.php @@ -0,0 +1,9 @@ + "User Email Domain Stats", +); + + add_translation("en",$english); + +?> \ No newline at end of file diff --git a/manifest.xml b/manifest.xml new file mode 100644 index 000000000..1d0679acb --- /dev/null +++ b/manifest.xml @@ -0,0 +1,18 @@ + + + Bulk User Admin + Brett Profitt + 1.8 + Delete users in bulk + http://www.elgg.org/ + (C) Brett Profitt 2011 + GNU Public License version 2 + + + + elgg_release + 1.8 + + + admin + \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 000000000..39f41cd8d --- /dev/null +++ b/readme.md @@ -0,0 +1,11 @@ +Bulk user Admin +=============== + +(C) 2011 Brett Profitt +GPL 2 + +About +===== +Adds ability to bulk delete users from the admin section. + +Adds menu to display users by domain and the most common domains registered. diff --git a/start.php b/start.php new file mode 100644 index 000000000..2af97b23e --- /dev/null +++ b/start.php @@ -0,0 +1,69 @@ + 'user', + 'limit' => $limit, + 'offset' => $offset, + 'full_view' => false +); + +if ($domain) { + $users = bulk_user_admin_get_users_by_email_domain($domain, $options); + $options['count'] = true; + $users_count = bulk_user_admin_get_users_by_email_domain($domain, $options); +} else { + $users = elgg_get_entities($options); + $options['count'] = true; + $users_count = elgg_get_entities($options); +} + +$pagination = elgg_view('navigation/pagination', array( + 'baseurl' => current_page_url(), + 'offset' => $offset, + 'count' => $users_count +)); + +$form_body = ''; +foreach ($users as $user) { + $form_body .= elgg_view('bulk_user_admin/user', array('entity' => $user)); +} + +$delete_button = elgg_view('input/submit', array( + 'value' => 'Delete checked', +)); + +$form_body .= $delete_button; + +$site = elgg_get_config('site'); + +$checked_form = elgg_view('input/form', array( + 'action' => $site->url . 'action/bulk_user_admin/delete', + 'body' => $form_body +)); + + +$domain_form = ''; + +if ($domain) { + $delete_button = "

" . elgg_view('input/submit', array( + 'value' => 'Delete all in domain', + )); + + $hidden = elgg_view('input/hidden', array( + 'name' => 'domain', + 'value' => $domain + )); + + $form_body = $delete_button . $hidden; + + $domain_form = elgg_view('input/form', array( + 'action' => $site->url . 'action/bulk_user_admin/delete_by_domain', + 'body' => $form_body + )); + +} + +$summary = "
$users_count user(s) found
"; + +if ($domain) { + $summary .= '
'; + $summary .= elgg_view('output/url', array( + 'href' => elgg_http_remove_url_query_element(current_page_url(), 'domain'), + 'text' => 'All users' + )); +} + +elgg_set_context('admin'); + +echo $title . $summary . $pagination . $checked_form . $domain_form . $pagination; \ No newline at end of file diff --git a/views/default/admin/users/email_domain_stats.php b/views/default/admin/users/email_domain_stats.php new file mode 100644 index 000000000..0caa50331 --- /dev/null +++ b/views/default/admin/users/email_domain_stats.php @@ -0,0 +1,12 @@ + bulk_user_admin_get_email_domain_stats() +)); + +echo $title . $domain_list; \ No newline at end of file diff --git a/views/default/bulk_user_admin/css.php b/views/default/bulk_user_admin/css.php new file mode 100644 index 000000000..3254c1700 --- /dev/null +++ b/views/default/bulk_user_admin/css.php @@ -0,0 +1,26 @@ + +table.bulk_user_admin_email_domains { + width: 300px; +} + +table.bulk_user_admin_email_domains th { + text-align: center; + font-weight: bold; + font-size: 125%; +} + +table.bulk_user_admin_email_domains td { + padding: 3px; +} + +table.bulk_user_admin_email_domains td.center { + text-align: center; +} + +table.bulk_user_admin_email_domains tr.odd { + background-color: #fff; +} + +table.bulk_user_admin_email_domains tr.even { + background-color: #dedede; +} \ No newline at end of file diff --git a/views/default/bulk_user_admin/email_domain_stats.php b/views/default/bulk_user_admin/email_domain_stats.php new file mode 100644 index 000000000..3936eb0ea --- /dev/null +++ b/views/default/bulk_user_admin/email_domain_stats.php @@ -0,0 +1,49 @@ + + + + + + +domain) { + continue; + } + + $domain = elgg_view('output/url', array( + 'text' => $domain_info->domain, + 'href' => $domain_info->domain + )); + + $url = elgg_http_add_url_query_elements($vars['url'] . 'admin/user', array('domain' => $domain_info->domain)); + + // can't use $_GET variables in admin + // otherwise admin_page_handler() tries to call the view: view/name?variable=value + // which clearly doesn't work + // so we'll pass the domain via post + $users = ''; + $users .= elgg_view('input/hidden', array('name' => 'domain', 'value' => $domain_info->domain)); + $users .= ''; + $users .= '' . $domain_info->count . ''; + + $class = ($i % 2) ? 'odd' : 'even'; + + echo <<<___HTML + + + + +___HTML; + + $i++; +} + +?> +
DomainRegistered users
$domain$users
\ No newline at end of file diff --git a/views/default/bulk_user_admin/search_by_domain.php b/views/default/bulk_user_admin/search_by_domain.php new file mode 100644 index 000000000..5c65a3903 --- /dev/null +++ b/views/default/bulk_user_admin/search_by_domain.php @@ -0,0 +1,16 @@ + + diff --git a/views/default/bulk_user_admin/user.php b/views/default/bulk_user_admin/user.php new file mode 100644 index 000000000..d05d92fd3 --- /dev/null +++ b/views/default/bulk_user_admin/user.php @@ -0,0 +1,49 @@ +isBanned(); +$user = $vars['entity']; + +$checkbox = "guid\">"; +$first_login = elgg_view_friendly_time($user->time_created); +$last_login = elgg_view_friendly_time($user->last_login); +$last_action = elgg_view_friendly_time($user->last_action); +$objects = elgg_get_entities(array( + 'owner_guid' => $user->guid, + 'count' => true +)); + +$db_prefix = elgg_get_config('dbprefix'); + +$q = "SELECT COUNT(id) as count FROM {$db_prefix}annotations WHERE owner_guid = $user->guid"; +$data = get_data($q); +$annotations = (int) $data[0]->count; + +$q = "SELECT COUNT(id) as count FROM {$db_prefix}metadata WHERE owner_guid = $user->guid"; +$data = get_data($q); +$metadata = (int) $data[0]->count; + +// the CSS for classless