seeddms-code/utils/delete.php
2023-01-03 14:09:48 +01:00

180 lines
5.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if(isset($_SERVER['SEEDDMS_HOME'])) {
ini_set('include_path', $_SERVER['SEEDDMS_HOME'].'/utils'. PATH_SEPARATOR .ini_get('include_path'));
$myincpath = $_SERVER['SEEDDMS_HOME'];
} else {
ini_set('include_path', dirname(realpath($argv[0])). PATH_SEPARATOR .ini_get('include_path'));
$myincpath = dirname(realpath($argv[0]));
}
function usage() { /* {{{ */
echo "Usage:".PHP_EOL;
echo " seeddms-delete [--config <file>] [-h] [-v] -f <folder id> -e <folder id> -d <document id>".PHP_EOL;
echo PHP_EOL;
echo "Description:".PHP_EOL;
echo " This program deletes a folder or document.".PHP_EOL;
echo PHP_EOL;
echo "Options:".PHP_EOL;
echo " -h, --help: print usage information and exit.".PHP_EOL;
echo " -v, --version: print version and exit.".PHP_EOL;
echo " --config: set alternative config file.".PHP_EOL;
echo " -f <folder id>: id of folder to be deleted".PHP_EOL;
echo " -e <folder id>: id of folder to be emptied".PHP_EOL;
echo " -d <document id>: id of document to be deleted".PHP_EOL;
echo " -u <user>: login name of user".PHP_EOL;
echo PHP_EOL;
echo "If the user is not given the user with id 1 will be used.".PHP_EOL;
echo "The options -d, -e and -f can be passed multiple times or the option value".PHP_EOL;
echo "can be a comma separated list of ids.".PHP_EOL;
} /* }}} */
$version = "0.0.1";
$shortoptions = "e:f:d:u:hv";
$longoptions = array('help', 'version', 'config:');
if(false === ($options = getopt($shortoptions, $longoptions))) {
usage();
exit(0);
}
/* Print help and exit */
if(isset($options['h']) || isset($options['help'])) {
usage();
exit(0);
}
/* Print version and exit */
if(isset($options['v']) || isset($options['verѕion'])) {
echo $version.PHP_EOL;
exit(0);
}
/* Set alternative config file */
if(isset($options['config'])) {
define('SEEDDMS_CONFIG_FILE', $options['config']);
} elseif(isset($_SERVER['SEEDDMS_CONFIG_FILE'])) {
define('SEEDDMS_CONFIG_FILE', $_SERVER['SEEDDMS_CONFIG_FILE']);
}
/* Set folders to be deleted */
$folderids = array();
if(isset($options['f'])) {
if(is_string($options['f']))
$folderids = explode(',', $options['f']);
else
$folderids = $options['f'];
}
/* Set folders to be emptied */
$emptyids = array();
if(isset($options['e'])) {
if(is_string($options['e']))
$emptyids = explode(',', $options['e']);
else
$emptyids = $options['e'];
}
/* Set documents to be deleted */
$documentids = array();
if(isset($options['d'])) {
if(is_string($options['d']))
$documentids = explode(',', $options['d']);
else
$documentids = $options['d'];
}
if(!$documentids && !$folderids && !$emptyids) {
echo "Neither folder ids nor document ids were given".PHP_EOL;
usage();
exit(1);
}
$username = '';
if(isset($options['u'])) {
$username = $options['u'];
}
include($myincpath."/inc/inc.Settings.php");
include($myincpath."/inc/inc.Init.php");
include($myincpath."/inc/inc.Extension.php");
include($myincpath."/inc/inc.DBInit.php");
include($myincpath."/inc/inc.ClassNotificationService.php");
include($myincpath."/inc/inc.Notification.php");
include($myincpath."/inc/inc.ClassController.php");
/* Create a global user object {{{ */
if($username) {
if(!($user = $dms->getUserByLogin($username))) {
echo "No such user '".$username."'.";
exit;
}
} else
$user = $dms->getUser(1);
$dms->setUser($user);
/* }}} */
foreach($folderids as $folderid) {
$folder = $dms->getFolder($folderid);
if (!is_object($folder)) {
echo "Could not find folder with id ".$folderid.PHP_EOL;
} else {
if ($folder->getAccessMode($user) < M_READWRITE) {
echo "Not sufficient access rights on folder with id ".$folderid.PHP_EOL;
} else {
$controller = Controller::factory('RemoveFolder', array('dms'=>$dms, 'user'=>$user));
$controller->setParam('folder', $folder);
$controller->setParam('fulltextservice', $fulltextservice);
if(!$document = $controller->run()) {
echo "Could not remove folder with id ".$folderid.PHP_EOL;
} else {
echo "Folder with id ".$folderid." removed.".PHP_EOL;
}
}
}
}
foreach($emptyids as $folderid) {
$folder = $dms->getFolder($folderid);
if (!is_object($folder)) {
echo "Could not find folder with id ".$folderid.PHP_EOL;
}
if ($folder->getAccessMode($user) < M_READWRITE) {
echo "Not sufficient access rights on folder with id ".$folderid.PHP_EOL;
}
$controller = Controller::factory('EmptyFolder', array('dms'=>$dms, 'user'=>$user));
$controller->setParam('folder', $folder);
$controller->setParam('fulltextservice', $fulltextservice);
if(!$document = $controller->run()) {
echo "Could not empty folder with id ".$folderid.PHP_EOL;
} else {
echo "Folder with id ".$folderid." emptied.".PHP_EOL;
}
}
foreach($documentids as $documentid) {
$document = $dms->getDocument($documentid);
if (!is_object($document)) {
echo "Could not find specified document with id ".$documentid.PHP_EOL;
}
if ($document->getAccessMode($user) < M_READWRITE) {
echo "Not sufficient access rights on document with id ".$documentid.PHP_EOL;
}
$controller = Controller::factory('RemoveDocument', array('dms'=>$dms, 'user'=>$user));
$controller->setParam('document', $document);
$controller->setParam('fulltextservice', $fulltextservice);
if(!$document = $controller->run()) {
echo "Could not remove document with id ".$documentid.PHP_EOL;
} else {
echo "Document with id ".$documentid." removed.".PHP_EOL;
}
}