phpldapadmin/htdocs/mass_delete.php

111 lines
3.6 KiB
PHP
Raw Normal View History

2009-06-30 08:09:20 +00:00
<?php
// $Header$
2009-06-30 09:22:30 +00:00
2009-06-30 09:29:51 +00:00
/**
2009-06-30 08:09:20 +00:00
* Enables user to mass delete multiple entries using checkboxes.
*
* Variables that come in as GET vars:
2009-06-30 10:46:00 +00:00
* - mass_delete - an array of DNs to delete in this form:
* Array (
* [o=myorg,dc=example,dc=com] => on
* [cn=bob,dc=example,dc=com] => on
* )
* etc.
2009-06-30 09:29:51 +00:00
*
* @package phpLDAPadmin
*/
/**
2009-06-30 08:09:20 +00:00
*/
2009-06-30 09:29:51 +00:00
require './common.php';
2009-06-30 08:09:20 +00:00
2009-06-30 11:52:55 +00:00
if ($ldapserver->isReadOnly())
error(_('You cannot perform updates while server is in read-only mode'),'error','index.php');
2009-06-30 10:46:00 +00:00
2009-06-30 11:52:55 +00:00
if (! $_SESSION[APPCONFIG]->isCommandAvailable('entry_delete','mass_delete'))
error(sprintf('%s%s %s',_('This operation is not permitted by the configuration'),_(':'),_('delete mass entries')),'error','index.php');
2009-06-30 10:26:08 +00:00
$confirmed = isset($_POST['confirmed']) ? true : false;
isset($_POST['mass_delete']) or
2009-06-30 11:52:55 +00:00
error(_('Error calling mass_delete.php. Missing mass_delete in POST vars.'),'error','index.php');
2009-06-30 08:09:20 +00:00
$mass_delete = $_POST['mass_delete'];
2009-06-30 10:26:08 +00:00
is_array($mass_delete) or
2009-06-30 11:52:55 +00:00
error(_('mass_delete POST var is not an array.'),'error','index.php');
2009-06-30 08:09:20 +00:00
2009-06-30 09:29:51 +00:00
$ldapserver->isMassDeleteEnabled() or
2009-06-30 11:52:55 +00:00
error(_('Mass deletion is not enabled. Please enable it in config.php before proceeding.'),'error','index.php');
2009-06-30 08:09:20 +00:00
2009-06-30 10:26:08 +00:00
printf('<h3 class="title">%s</h3>',_('Mass Deleting'));
2009-06-30 08:09:20 +00:00
2009-06-30 10:26:08 +00:00
if ($confirmed == true) {
printf('<h3 class="subtitle">'._('Deletion progress on server "%s"').'</h3>',$ldapserver->name);
echo '<blockquote>';
echo '<small>';
2009-06-30 08:09:20 +00:00
2009-06-30 09:29:51 +00:00
$successfully_delete_dns = array();
$failed_dns = array();
2009-06-30 10:26:08 +00:00
if (! is_array($mass_delete))
2009-06-30 11:52:55 +00:00
error(_('Malformed mass_delete array.'),'error','index.php');
2009-06-30 09:29:51 +00:00
2009-06-30 10:26:08 +00:00
if (count($mass_delete) == 0) {
echo '<br />';
printf('<center>%s</center>',_('You did not select any entries to delete.'));
2009-06-30 10:46:00 +00:00
return;
2009-06-30 09:29:51 +00:00
}
2009-06-30 10:26:08 +00:00
// @todo: Should sort these entries, so that they are deleted in order, if a user selects children.
foreach ($mass_delete as $dn => $junk) {
printf(_('Deleting %s'),htmlspecialchars($dn));
2009-06-30 09:29:51 +00:00
2009-06-30 10:26:08 +00:00
if(run_hook('pre_entry_delete',array('server_id'=>$ldapserver->server_id,'dn'=>$dn))) {
$success = $ldapserver->delete($dn);
2009-06-30 08:09:20 +00:00
2009-06-30 10:26:08 +00:00
if ($success) {
2009-06-30 10:46:00 +00:00
run_hook('post_entry_delete',array('server_id'=>$ldapserver->server_id,'dn'=>$dn));
2009-06-30 09:29:51 +00:00
2009-06-30 10:26:08 +00:00
printf(' <span style="color:green">%s</span>.<br />',_('Success'));
2009-06-30 09:29:51 +00:00
$successfully_delete_dns[] = $dn;
} else {
2009-06-30 10:26:08 +00:00
printf(' <span style="color:red">%s</span>.<br /> (%s)<br />',_('Failed'),$ldapserver->error());
2009-06-30 09:29:51 +00:00
$failed_dns[] = $dn;
}
2009-06-30 08:09:20 +00:00
}
2009-06-30 09:29:51 +00:00
}
2009-06-30 10:26:08 +00:00
echo '<blockquote>';
echo '</small>';
2009-06-30 09:29:51 +00:00
2009-06-30 10:26:08 +00:00
$failed_count = count($failed_dns);
$total_count = count($mass_delete);
2009-06-30 09:29:51 +00:00
2009-06-30 10:26:08 +00:00
if ($failed_count > 0)
printf('<span style="color: red; font-weight: bold;">'._('%s of %s entries failed to be deleted.').'</span>',$failed_count,$total_count);
else
printf('<span style="color: green; font-weight: bold;">%s</span>',_('All entries deleted successfully.'));
2009-06-30 09:29:51 +00:00
2009-06-30 08:09:20 +00:00
} else {
2009-06-30 10:26:08 +00:00
$n = count($mass_delete);
printf('<h3 class="subtitle">'._('Confirm mass delete of %s entries on server %s').'</h3>',$n,$ldapserver->name);
2009-06-30 08:09:20 +00:00
2009-06-30 10:26:08 +00:00
echo'<center>';
printf(_('Do you really want to delete %s %s %s'),
($n == 1? _('this') : _('these')),$n,($n == 1 ? _('entry') : _('entries')));
2009-06-30 08:09:20 +00:00
2009-06-30 10:46:00 +00:00
echo '<form action="cmd.php?cmd=mass_delete" method="post">';
2009-06-30 10:26:08 +00:00
echo '<input type="hidden" name="confirmed" value="true" />';
printf('<input type="hidden" name="server_id" value="%s" />',$ldapserver->server_id);
2009-06-30 08:09:20 +00:00
2009-06-30 10:26:08 +00:00
echo '<table><tr><td><ol>';
foreach ($mass_delete as $dn => $junk)
printf('<input type="hidden" name="mass_delete[%s]" value="on" /><li>%s</li>',htmlspecialchars($dn),htmlspecialchars($dn));
echo '</ol></td></tr></table>';
2009-06-30 08:09:20 +00:00
2009-06-30 11:51:50 +00:00
printf('<input type="submit" value="%s" /></center>',_('Yes, delete!'));
2009-06-30 10:26:08 +00:00
echo '</form>';
}
2009-06-30 08:09:20 +00:00
?>