mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-02-06 15:14:58 +00:00
send notifications, check for duplicate folder/document names if configured
This commit is contained in:
parent
4b2b536fdb
commit
e571fe38a5
|
@ -1,5 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
include("../inc/inc.Settings.php");
|
include("../inc/inc.Settings.php");
|
||||||
|
//include("../inc/inc.LogInit.php");
|
||||||
|
include("../inc/inc.Language.php");
|
||||||
include("../inc/inc.Init.php");
|
include("../inc/inc.Init.php");
|
||||||
include("../inc/inc.Extension.php");
|
include("../inc/inc.Extension.php");
|
||||||
include("../inc/inc.DBInit.php");
|
include("../inc/inc.DBInit.php");
|
||||||
|
@ -8,6 +10,7 @@ include("../inc/inc.ClassEmailNotify.php");
|
||||||
include("../inc/inc.ClassController.php");
|
include("../inc/inc.ClassController.php");
|
||||||
include("Log.php");
|
include("Log.php");
|
||||||
|
|
||||||
|
// LogInit.php cannot be used, because of the different log file
|
||||||
if($settings->_logFileEnable) {
|
if($settings->_logFileEnable) {
|
||||||
if ($settings->_logFileRotation=="h") $logname=date("YmdH", time());
|
if ($settings->_logFileRotation=="h") $logname=date("YmdH", time());
|
||||||
else if ($settings->_logFileRotation=="d") $logname=date("Ymd", time());
|
else if ($settings->_logFileRotation=="d") $logname=date("Ymd", time());
|
||||||
|
@ -17,16 +20,38 @@ if($settings->_logFileEnable) {
|
||||||
@mkdir($settings->_contentDir.'log');
|
@mkdir($settings->_contentDir.'log');
|
||||||
if(file_exists($settings->_contentDir.'log') && is_dir($settings->_contentDir.'log')) {
|
if(file_exists($settings->_contentDir.'log') && is_dir($settings->_contentDir.'log')) {
|
||||||
$log = Log::factory('file', $logname);
|
$log = Log::factory('file', $logname);
|
||||||
$log->setMask(Log::MAX(PEAR_LOG_INFO));
|
$log->setMask(Log::MAX(PEAR_LOG_DEBUG));
|
||||||
} else
|
} else
|
||||||
$log = null;
|
$log = null;
|
||||||
} else {
|
} else {
|
||||||
$log = null;
|
$log = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$notifier = new SeedDMS_NotificationService();
|
||||||
|
|
||||||
|
if(isset($GLOBALS['SEEDDMS_HOOKS']['notification'])) {
|
||||||
|
foreach($GLOBALS['SEEDDMS_HOOKS']['notification'] as $notificationObj) {
|
||||||
|
if(method_exists($notificationObj, 'preAddService')) {
|
||||||
|
$notificationObj->preAddService($dms, $notifier);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($settings->_enableEmail) {
|
||||||
|
$notifier->addService(new SeedDMS_EmailNotify($dms, $settings->_smtpSendFrom, $settings->_smtpServer, $settings->_smtpPort, $settings->_smtpUser, $settings->_smtpPassword));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isset($GLOBALS['SEEDDMS_HOOKS']['notification'])) {
|
||||||
|
foreach($GLOBALS['SEEDDMS_HOOKS']['notification'] as $notificationObj) {
|
||||||
|
if(method_exists($notificationObj, 'postAddService')) {
|
||||||
|
$notificationObj->postAddService($dms, $notifier);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
include("webdav.php");
|
include("webdav.php");
|
||||||
$server = new HTTP_WebDAV_Server_SeedDMS();
|
$server = new HTTP_WebDAV_Server_SeedDMS();
|
||||||
$server->ServeRequest($dms, $log);
|
$server->ServeRequest($dms, $log, $notifier);
|
||||||
//$files = array();
|
//$files = array();
|
||||||
//$options = array('path'=>'/Test1/subdir', 'depth'=>1);
|
//$options = array('path'=>'/Test1/subdir', 'depth'=>1);
|
||||||
//echo $server->MKCOL(&$options);
|
//echo $server->MKCOL(&$options);
|
||||||
|
|
|
@ -31,6 +31,16 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
*/
|
*/
|
||||||
var $logger = null;
|
var $logger = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A reference to a notifier
|
||||||
|
*
|
||||||
|
* This is set by ServeRequest
|
||||||
|
*
|
||||||
|
* @access private
|
||||||
|
* @var object
|
||||||
|
*/
|
||||||
|
var $notifier = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Currently logged in user
|
* Currently logged in user
|
||||||
*
|
*
|
||||||
|
@ -53,7 +63,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
* @access public
|
* @access public
|
||||||
* @param object $dms reference to DMS
|
* @param object $dms reference to DMS
|
||||||
*/
|
*/
|
||||||
function ServeRequest($dms = null, $logger = null) /* {{{ */
|
function ServeRequest($dms = null, $logger = null, $notifier = null) /* {{{ */
|
||||||
{
|
{
|
||||||
// set root directory, defaults to webserver document root if not set
|
// set root directory, defaults to webserver document root if not set
|
||||||
if ($dms) {
|
if ($dms) {
|
||||||
|
@ -65,6 +75,9 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
// set logger
|
// set logger
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
|
|
||||||
|
// set notifier
|
||||||
|
$this->notifier = $notifier;
|
||||||
|
|
||||||
// special treatment for litmus compliance test
|
// special treatment for litmus compliance test
|
||||||
// reply on its identifier header
|
// reply on its identifier header
|
||||||
// not needed for the test itself but eases debugging
|
// not needed for the test itself but eases debugging
|
||||||
|
@ -93,6 +106,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
if($this->logger) {
|
if($this->logger) {
|
||||||
switch($methode) {
|
switch($methode) {
|
||||||
case 'MOVE':
|
case 'MOVE':
|
||||||
|
case 'COPY':
|
||||||
$msg = $methode.': '.$options['path'].' -> '.$options['dest'];
|
$msg = $methode.': '.$options['path'].' -> '.$options['dest'];
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -601,7 +615,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
$document = $this->dms->getDocumentByName($name, $folder);
|
$document = $this->dms->getDocumentByName($name, $folder);
|
||||||
if($document) {
|
if($document) {
|
||||||
if($this->logger)
|
if($this->logger)
|
||||||
$this->logger->log('PUT: replacing document id='.$document->getID(), PEAR_LOG_INFO);
|
$this->logger->log('PUT: saving document id='.$document->getID(), PEAR_LOG_INFO);
|
||||||
if ($document->getAccessMode($this->user, 'updateDocument') < M_READWRITE) {
|
if ($document->getAccessMode($this->user, 'updateDocument') < M_READWRITE) {
|
||||||
if($this->logger)
|
if($this->logger)
|
||||||
$this->logger->log('PUT: no access on document', PEAR_LOG_ERR);
|
$this->logger->log('PUT: no access on document', PEAR_LOG_ERR);
|
||||||
|
@ -633,13 +647,63 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
} else {
|
} else {
|
||||||
if($this->logger)
|
if($this->logger)
|
||||||
$this->logger->log('PUT: adding new version', PEAR_LOG_INFO);
|
$this->logger->log('PUT: adding new version', PEAR_LOG_INFO);
|
||||||
if(!$document->addContent('', $this->user, $tmpFile, $name, $fileType, $mimetype, array(), array(), 0)) {
|
|
||||||
|
if($settings->_enableFullSearch) {
|
||||||
|
$index = $indexconf['Indexer']::open($settings->_luceneDir);
|
||||||
|
$indexconf['Indexer']::init($settings->_stopWordsFile);
|
||||||
|
} else {
|
||||||
|
$index = null;
|
||||||
|
$indexconf = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$controller = Controller::factory('UpdateDocument');
|
||||||
|
$controller->setParam('dms', $this->dms);
|
||||||
|
$controller->setParam('user', $this->user);
|
||||||
|
$controller->setParam('documentsource', 'webdav');
|
||||||
|
$controller->setParam('folder', $document->getFolder());
|
||||||
|
$controller->setParam('document', $document);
|
||||||
|
$controller->setParam('index', $index);
|
||||||
|
$controller->setParam('indexconf', $indexconf);
|
||||||
|
$controller->setParam('comment', '');
|
||||||
|
$controller->setParam('userfiletmp', $tmpFile);
|
||||||
|
$controller->setParam('userfilename', $name);
|
||||||
|
$controller->setParam('filetype', $fileType);
|
||||||
|
$controller->setParam('userfiletype', $mimetype);
|
||||||
|
$controller->setParam('reviewers', array());
|
||||||
|
$controller->setParam('approvers', array());
|
||||||
|
$controller->setParam('attributes', array());
|
||||||
|
$controller->setParam('workflow', null);
|
||||||
|
|
||||||
|
if(!$content = $controller->run()) {
|
||||||
|
// if(!$document->addContent('', $this->user, $tmpFile, $name, $fileType, $mimetype, array(), array(), 0)) {
|
||||||
if($this->logger)
|
if($this->logger)
|
||||||
$this->logger->log('PUT: error adding new version', PEAR_LOG_ERR);
|
$this->logger->log('PUT: error adding new version', PEAR_LOG_ERR);
|
||||||
unlink($tmpFile);
|
unlink($tmpFile);
|
||||||
return "409 Conflict";
|
return "409 Conflict";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if($this->notifier) {
|
||||||
|
if($this->logger)
|
||||||
|
$this->logger->log('PUT: Sending Notifications', PEAR_LOG_INFO);
|
||||||
|
$notifyList = $document->getNotifyList();
|
||||||
|
$folder = $document->getFolder();
|
||||||
|
|
||||||
|
$subject = "document_updated_email_subject";
|
||||||
|
$message = "document_updated_email_body";
|
||||||
|
$params = array();
|
||||||
|
$params['name'] = $document->getName();
|
||||||
|
$params['folder_path'] = $folder->getFolderPathPlain();
|
||||||
|
$params['username'] = $this->user->getFullName();
|
||||||
|
$params['comment'] = $document->getComment();
|
||||||
|
$params['version_comment'] = $content->getComment();
|
||||||
|
$params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
|
||||||
|
$params['sitename'] = $settings->_siteName;
|
||||||
|
$params['http_root'] = $settings->_httpRoot;
|
||||||
|
$this->notifier->toList($this->user, $notifyList["users"], $subject, $message, $params);
|
||||||
|
foreach ($notifyList["groups"] as $grp) {
|
||||||
|
$this->notifier->toGroup($this->user, $grp, $subject, $message, $params);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -651,6 +715,16 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
unlink($tmpFile);
|
unlink($tmpFile);
|
||||||
return "403 Forbidden";
|
return "403 Forbidden";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check if name already exists in the folder */
|
||||||
|
/*
|
||||||
|
if(!$settings->_enableDuplicateDocNames) {
|
||||||
|
if($folder->hasDocumentByName($name)) {
|
||||||
|
return "403 Forbidden";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if($settings->_enableFullSearch) {
|
if($settings->_enableFullSearch) {
|
||||||
$index = $indexconf['Indexer']::open($settings->_luceneDir);
|
$index = $indexconf['Indexer']::open($settings->_luceneDir);
|
||||||
$indexconf['Indexer']::init($settings->_stopWordsFile);
|
$indexconf['Indexer']::init($settings->_stopWordsFile);
|
||||||
|
@ -699,6 +773,33 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
$this->logger->log('PUT: error adding object: '.$controller->getErrorMsg(), PEAR_LOG_ERR);
|
$this->logger->log('PUT: error adding object: '.$controller->getErrorMsg(), PEAR_LOG_ERR);
|
||||||
return "409 Conflict ".$controller->getErrorMsg();
|
return "409 Conflict ".$controller->getErrorMsg();
|
||||||
}
|
}
|
||||||
|
if($this->notifier) {
|
||||||
|
if($this->logger)
|
||||||
|
$this->logger->log('PUT: Sending Notifications', PEAR_LOG_INFO);
|
||||||
|
$fnl = $folder->getNotifyList();
|
||||||
|
$dnl = $document->getNotifyList();
|
||||||
|
$nl = array(
|
||||||
|
'users'=>array_unique(array_merge($dnl['users'], $fnl['users']), SORT_REGULAR),
|
||||||
|
'groups'=>array_unique(array_merge($dnl['groups'], $fnl['groups']), SORT_REGULAR)
|
||||||
|
);
|
||||||
|
|
||||||
|
$subject = "new_document_email_subject";
|
||||||
|
$message = "new_document_email_body";
|
||||||
|
$params = array();
|
||||||
|
$params['name'] = $name;
|
||||||
|
$params['folder_name'] = $folder->getName();
|
||||||
|
$params['folder_path'] = $folder->getFolderPathPlain();
|
||||||
|
$params['username'] = $this->user->getFullName();
|
||||||
|
$params['comment'] = '';
|
||||||
|
$params['version_comment'] = '';
|
||||||
|
$params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID();
|
||||||
|
$params['sitename'] = $settings->_siteName;
|
||||||
|
$params['http_root'] = $settings->_httpRoot;
|
||||||
|
$this->notifier->toList($this->user, $nl["users"], $subject, $message, $params);
|
||||||
|
foreach ($nl["groups"] as $grp) {
|
||||||
|
$this->notifier->toGroup($this->user, $grp, $subject, $message, $params);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unlink($tmpFile);
|
unlink($tmpFile);
|
||||||
|
@ -713,7 +814,9 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
* @return bool true on success
|
* @return bool true on success
|
||||||
*/
|
*/
|
||||||
function MKCOL($options) /* {{{ */
|
function MKCOL($options) /* {{{ */
|
||||||
{
|
{
|
||||||
|
global $settings;
|
||||||
|
|
||||||
$this->log_options('MKCOL', $options);
|
$this->log_options('MKCOL', $options);
|
||||||
|
|
||||||
$path = $options["path"];
|
$path = $options["path"];
|
||||||
|
@ -774,6 +877,33 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
return "409 Conflict ".$controller->getErrorMsg();
|
return "409 Conflict ".$controller->getErrorMsg();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($this->notifier) {
|
||||||
|
if($this->logger)
|
||||||
|
$this->logger->log('MKCOL: Sending Notifications', PEAR_LOG_INFO);
|
||||||
|
$fnl = $folder->getNotifyList();
|
||||||
|
$snl = $subFolder->getNotifyList();
|
||||||
|
$nl = array(
|
||||||
|
'users'=>array_unique(array_merge($snl['users'], $fnl['users']), SORT_REGULAR),
|
||||||
|
'groups'=>array_unique(array_merge($snl['groups'], $fnl['groups']), SORT_REGULAR)
|
||||||
|
);
|
||||||
|
|
||||||
|
$subject = "new_subfolder_email_subject";
|
||||||
|
$message = "new_subfolder_email_body";
|
||||||
|
$params = array();
|
||||||
|
$params['name'] = $subFolder->getName();
|
||||||
|
$params['folder_name'] = $folder->getName();
|
||||||
|
$params['folder_path'] = $folder->getFolderPathPlain();
|
||||||
|
$params['username'] = $this->user->getFullName();
|
||||||
|
$params['comment'] = '';
|
||||||
|
$params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$subFolder->getID();
|
||||||
|
$params['sitename'] = $settings->_siteName;
|
||||||
|
$params['http_root'] = $settings->_httpRoot;
|
||||||
|
$this->notifier->toList($this->user, $nl["users"], $subject, $message, $params);
|
||||||
|
foreach ($nl["groups"] as $grp) {
|
||||||
|
$this->notifier->toGroup($this->user, $grp, $subject, $message, $params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ("201 Created");
|
return ("201 Created");
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
|
@ -820,6 +950,16 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
$this->logger->log('DELETE: cannot delete, folder has children', PEAR_LOG_ERR);
|
$this->logger->log('DELETE: cannot delete, folder has children', PEAR_LOG_ERR);
|
||||||
return "409 Conflict";
|
return "409 Conflict";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$parent = $obj->getParent();
|
||||||
|
$fnl = $obj->getNotifyList();
|
||||||
|
$pnl = $parent->getNotifyList();
|
||||||
|
$nl = array(
|
||||||
|
'users'=>array_unique(array_merge($fnl['users'], $pnl['users']), SORT_REGULAR),
|
||||||
|
'groups'=>array_unique(array_merge($fnl['groups'], $pnl['groups']), SORT_REGULAR)
|
||||||
|
);
|
||||||
|
$foldername = $obj->getName();
|
||||||
|
|
||||||
$controller = Controller::factory('RemoveFolder');
|
$controller = Controller::factory('RemoveFolder');
|
||||||
$controller->setParam('dms', $this->dms);
|
$controller->setParam('dms', $this->dms);
|
||||||
$controller->setParam('user', $this->user);
|
$controller->setParam('user', $this->user);
|
||||||
|
@ -827,10 +967,39 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
$controller->setParam('index', $index);
|
$controller->setParam('index', $index);
|
||||||
$controller->setParam('indexconf', $indexconf);
|
$controller->setParam('indexconf', $indexconf);
|
||||||
if(!$controller->run()) {
|
if(!$controller->run()) {
|
||||||
// if(!$obj->remove()) {
|
|
||||||
return "409 Conflict ".$controller->getErrorMsg();
|
return "409 Conflict ".$controller->getErrorMsg();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($this->notifier) {
|
||||||
|
if($this->logger)
|
||||||
|
$this->logger->log('DELETE: Sending Notifications', PEAR_LOG_INFO);
|
||||||
|
$subject = "folder_deleted_email_subject";
|
||||||
|
$message = "folder_deleted_email_body";
|
||||||
|
$params = array();
|
||||||
|
$params['name'] = $foldername;
|
||||||
|
$params['folder_path'] = $parent->getFolderPathPlain();
|
||||||
|
$params['username'] = $this->user->getFullName();
|
||||||
|
$params['sitename'] = $settings->_siteName;
|
||||||
|
$params['http_root'] = $settings->_httpRoot;
|
||||||
|
$params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$parent->getID();
|
||||||
|
$this->notifier->toList($this->user, $nl["users"], $subject, $message, $params);
|
||||||
|
foreach ($nl["groups"] as $grp) {
|
||||||
|
$this->notifier->toGroup($this->user, $grp, $subject, $message, $params);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
/* Get the notify list before removing the document
|
||||||
|
* Also inform the users/groups of the parent folder
|
||||||
|
*/
|
||||||
|
$folder = $obj->getFolder();
|
||||||
|
$dnl = $obj->getNotifyList();
|
||||||
|
$fnl = $folder->getNotifyList();
|
||||||
|
$nl = array(
|
||||||
|
'users'=>array_unique(array_merge($dnl['users'], $fnl['users']), SORT_REGULAR),
|
||||||
|
'groups'=>array_unique(array_merge($dnl['groups'], $fnl['groups']), SORT_REGULAR)
|
||||||
|
);
|
||||||
|
$docname = $obj->getName();
|
||||||
|
|
||||||
$controller = Controller::factory('RemoveDocument');
|
$controller = Controller::factory('RemoveDocument');
|
||||||
$controller->setParam('dms', $this->dms);
|
$controller->setParam('dms', $this->dms);
|
||||||
$controller->setParam('user', $this->user);
|
$controller->setParam('user', $this->user);
|
||||||
|
@ -838,9 +1007,26 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
$controller->setParam('index', $index);
|
$controller->setParam('index', $index);
|
||||||
$controller->setParam('indexconf', $indexconf);
|
$controller->setParam('indexconf', $indexconf);
|
||||||
if(!$controller->run()) {
|
if(!$controller->run()) {
|
||||||
// if(!$obj->remove()) {
|
|
||||||
return "409 Conflict ".$controller->getErrorMsg();
|
return "409 Conflict ".$controller->getErrorMsg();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($this->notifier){
|
||||||
|
if($this->logger)
|
||||||
|
$this->logger->log('DELETE: Sending Notifications', PEAR_LOG_INFO);
|
||||||
|
$subject = "document_deleted_email_subject";
|
||||||
|
$message = "document_deleted_email_body";
|
||||||
|
$params = array();
|
||||||
|
$params['name'] = $docname;
|
||||||
|
$params['folder_path'] = $folder->getFolderPathPlain();
|
||||||
|
$params['username'] = $this->user->getFullName();
|
||||||
|
$params['sitename'] = $settings->_siteName;
|
||||||
|
$params['http_root'] = $settings->_httpRoot;
|
||||||
|
$params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID();
|
||||||
|
$this->notifier->toList($this->user, $nl["users"], $subject, $message, $params);
|
||||||
|
foreach ($nl["groups"] as $grp) {
|
||||||
|
$this->notifier->toGroup($this->user, $grp, $subject, $message, $params);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return "204 No Content";
|
return "204 No Content";
|
||||||
|
@ -855,6 +1041,8 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
*/
|
*/
|
||||||
function MOVE($options) /* {{{ */
|
function MOVE($options) /* {{{ */
|
||||||
{
|
{
|
||||||
|
global $settings;
|
||||||
|
|
||||||
$this->log_options('MOVE', $options);
|
$this->log_options('MOVE', $options);
|
||||||
|
|
||||||
// no copying to different WebDAV Servers yet
|
// no copying to different WebDAV Servers yet
|
||||||
|
@ -908,13 +1096,13 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
$fspath = $this->dms->contentDir.'/'.$content->getPath();
|
$fspath = $this->dms->contentDir.'/'.$content->getPath();
|
||||||
|
|
||||||
/* save the content as a new version in the destination document */
|
/* save the content as a new version in the destination document */
|
||||||
if(!$objdest->addContent('', $this->user, $fspath, $content->getOriginalFileName(), $content->getFileType(), $content->getMimeType, array(), array(), 0)) {
|
if(!$objdest->addContent('', $this->user, $fspath, $content->getOriginalFileName(), $content->getFileType(), $content->getMimeType(), array(), array(), 0)) {
|
||||||
unlink($tmpFile);
|
unlink($tmpFile);
|
||||||
return "409 Conflict";
|
return "409 Conflict";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* change the name of the destination object */
|
/* change the name of the destination object */
|
||||||
$objdest->setName($objsource->getName());
|
// $objdest->setName($objsource->getName());
|
||||||
|
|
||||||
/* delete the source object */
|
/* delete the source object */
|
||||||
$objsource->remove();
|
$objsource->remove();
|
||||||
|
@ -922,11 +1110,84 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
return "204 No Content";
|
return "204 No Content";
|
||||||
} elseif(get_class($objdest) == $this->dms->getClassname('folder')) {
|
} elseif(get_class($objdest) == $this->dms->getClassname('folder')) {
|
||||||
/* Set the new Folder of the source object */
|
/* Set the new Folder of the source object */
|
||||||
if(get_class($objsource) == $this->dms->getClassname('document'))
|
if(get_class($objsource) == $this->dms->getClassname('document')) {
|
||||||
$objsource->setFolder($objdest);
|
/* Check if name already exists in the folder */
|
||||||
elseif(get_class($objsource) == $this->dms->getClassname('folder'))
|
/*
|
||||||
$objsource->setParent($objdest);
|
if(!$settings->_enableDuplicateDocNames) {
|
||||||
else
|
if($objdest->hasDocumentByName($objsource->getName())) {
|
||||||
|
return "403 Forbidden";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
$oldFolder = $objsource->getFolder();
|
||||||
|
if($objsource->setFolder($objdest)) {
|
||||||
|
if($this->notifier) {
|
||||||
|
if($this->logger)
|
||||||
|
$this->logger->log('MOVE: Sending Notifications', PEAR_LOG_INFO);
|
||||||
|
$nl1 = $oldFolder->getNotifyList();
|
||||||
|
$nl2 = $objsource->getNotifyList();
|
||||||
|
$nl3 = $objdest->getNotifyList();
|
||||||
|
$nl = array(
|
||||||
|
'users'=>array_unique(array_merge($nl1['users'], $nl2['users'], $nl3['users']), SORT_REGULAR),
|
||||||
|
'groups'=>array_unique(array_merge($nl1['groups'], $nl2['groups'], $nl3['groups']), SORT_REGULAR)
|
||||||
|
);
|
||||||
|
$subject = "document_moved_email_subject";
|
||||||
|
$message = "document_moved_email_body";
|
||||||
|
$params = array();
|
||||||
|
$params['name'] = $objsource->getName();
|
||||||
|
$params['old_folder_path'] = $oldFolder->getFolderPathPlain();
|
||||||
|
$params['new_folder_path'] = $objdest->getFolderPathPlain();
|
||||||
|
$params['username'] = $this->user->getFullName();
|
||||||
|
$params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$objsource->getID();
|
||||||
|
$params['sitename'] = $settings->_siteName;
|
||||||
|
$params['http_root'] = $settings->_httpRoot;
|
||||||
|
$this->notifier->toList($this->user, $nl["users"], $subject, $message, $params);
|
||||||
|
foreach ($nl["groups"] as $grp) {
|
||||||
|
$this->notifier->toGroup($this->user, $grp, $subject, $message, $params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return "500 Internal server error";
|
||||||
|
}
|
||||||
|
} elseif(get_class($objsource) == $this->dms->getClassname('folder')) {
|
||||||
|
/* Check if name already exists in the folder */
|
||||||
|
if(!$settings->_enableDuplicateSubFolderNames) {
|
||||||
|
if($objdest->hasSubFolderByName($objsource->getName())) {
|
||||||
|
return "403 Forbidden";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$oldFolder = $objsource->getParent();
|
||||||
|
if($objsource->setParent($objdest)) {
|
||||||
|
if($this->notifier) {
|
||||||
|
if($this->logger)
|
||||||
|
$this->logger->log('MOVE: Sending Notifications', PEAR_LOG_INFO);
|
||||||
|
$nl1 = $oldFolder->getNotifyList();
|
||||||
|
$nl2 = $objsource->getNotifyList();
|
||||||
|
$nl3 = $objdest->getNotifyList();
|
||||||
|
$nl = array(
|
||||||
|
'users'=>array_unique(array_merge($nl1['users'], $nl2['users'], $nl3['users']), SORT_REGULAR),
|
||||||
|
'groups'=>array_unique(array_merge($nl1['groups'], $nl2['groups'], $nl3['groups']), SORT_REGULAR)
|
||||||
|
);
|
||||||
|
$subject = "folder_moved_email_subject";
|
||||||
|
$message = "folder_moved_email_body";
|
||||||
|
$params = array();
|
||||||
|
$params['name'] = $objsource->getName();
|
||||||
|
$params['old_folder_path'] = $oldFolder->getFolderPathPlain();
|
||||||
|
$params['new_folder_path'] = $objdest->getFolderPathPlain();
|
||||||
|
$params['username'] = $this->user->getFullName();
|
||||||
|
$params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID();
|
||||||
|
$params['sitename'] = $settings->_siteName;
|
||||||
|
$params['http_root'] = $settings->_httpRoot;
|
||||||
|
$this->notifier->toList($this->user, $nl["users"], $subject, $message, $params);
|
||||||
|
foreach ($nl["groups"] as $grp) {
|
||||||
|
$this->notifier->toGroup($this->user, $grp, $subject, $message, $params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return "500 Internal server error";
|
||||||
|
}
|
||||||
|
} else
|
||||||
return "500 Internal server error";
|
return "500 Internal server error";
|
||||||
if($newdocname)
|
if($newdocname)
|
||||||
$objsource->setName($newdocname);
|
$objsource->setName($newdocname);
|
||||||
|
@ -940,12 +1201,11 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
* @param array general parameter passing array
|
* @param array general parameter passing array
|
||||||
* @return bool true on success
|
* @return bool true on success
|
||||||
*/
|
*/
|
||||||
function COPY($options, $del=false) /* {{{ */
|
function COPY($options) /* {{{ */
|
||||||
{
|
{
|
||||||
global $settings, $indexconf;
|
global $settings, $indexconf;
|
||||||
|
|
||||||
if(!$del)
|
$this->log_options('COPY', $options);
|
||||||
$this->log_options('COPY', $options);
|
|
||||||
|
|
||||||
// TODO Property updates still broken (Litmus should detect this?)
|
// TODO Property updates still broken (Litmus should detect this?)
|
||||||
|
|
||||||
|
@ -974,6 +1234,8 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
// get dest folder or document
|
// get dest folder or document
|
||||||
$objdest = $this->reverseLookup($options["dest"]);
|
$objdest = $this->reverseLookup($options["dest"]);
|
||||||
|
|
||||||
|
// If the destination doesn't exists, then check if the parent folder exists
|
||||||
|
// and set $newdocname, which is later used to create a new document
|
||||||
$newdocname = '';
|
$newdocname = '';
|
||||||
if(!$objdest) {
|
if(!$objdest) {
|
||||||
/* check if at least the dest directory exists */
|
/* check if at least the dest directory exists */
|
||||||
|
@ -995,7 +1257,7 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
return "403 Forbidden";
|
return "403 Forbidden";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If destination object is a document it must be overwritten */
|
/* If destination object is a document the source document will create a new version */
|
||||||
if(get_class($objdest) == $this->dms->getClassname('document')) {
|
if(get_class($objdest) == $this->dms->getClassname('document')) {
|
||||||
if (!$options["overwrite"]) {
|
if (!$options["overwrite"]) {
|
||||||
return "412 precondition failed";
|
return "412 precondition failed";
|
||||||
|
@ -1009,13 +1271,19 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
$content = $objsource->getLatestContent();
|
$content = $objsource->getLatestContent();
|
||||||
$fspath = $this->dms->contentDir.'/'.$content->getPath();
|
$fspath = $this->dms->contentDir.'/'.$content->getPath();
|
||||||
|
|
||||||
|
/* If the checksum of source and destination are equal, then do not copy */
|
||||||
|
if($content->getChecksum() == $objdest->getLatestContent()->getChecksum()) {
|
||||||
|
return "204 No Content";
|
||||||
|
}
|
||||||
|
|
||||||
/* save the content as a new version in the destination document */
|
/* save the content as a new version in the destination document */
|
||||||
if(!$objdest->addContent('', $this->user, $fspath, $content->getOriginalFileName(), $content->getFileType(), $content->getMimeType, array(), array(), 0)) {
|
if(!$objdest->addContent('', $this->user, $fspath, $content->getOriginalFileName(), $content->getFileType(), $content->getMimeType(), array(), array(), 0)) {
|
||||||
unlink($tmpFile);
|
unlink($tmpFile);
|
||||||
return "409 Conflict";
|
return "409 Conflict";
|
||||||
}
|
}
|
||||||
|
|
||||||
$objdest->setName($objsource->getName());
|
/* Since 5.1.13 do not overwrite the name anymore
|
||||||
|
$objdest->setName($objsource->getName()); */
|
||||||
|
|
||||||
return "204 No Content";
|
return "204 No Content";
|
||||||
} elseif(get_class($objdest) == $this->dms->getClassname('folder')) {
|
} elseif(get_class($objdest) == $this->dms->getClassname('folder')) {
|
||||||
|
@ -1033,6 +1301,15 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
if(!$newdocname)
|
if(!$newdocname)
|
||||||
$newdocname = $objsource->getName();
|
$newdocname = $objsource->getName();
|
||||||
|
|
||||||
|
/* Check if name already exists in the folder */
|
||||||
|
/*
|
||||||
|
if(!$settings->_enableDuplicateDocNames) {
|
||||||
|
if($objdest->hasDocumentByName($newdocname)) {
|
||||||
|
return "403 Forbidden";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
/* get the latest content of the source object */
|
/* get the latest content of the source object */
|
||||||
$content = $objsource->getLatestContent();
|
$content = $objsource->getLatestContent();
|
||||||
$fspath = $this->dms->contentDir.'/'.$content->getPath();
|
$fspath = $this->dms->contentDir.'/'.$content->getPath();
|
||||||
|
@ -1084,6 +1361,34 @@ class HTTP_WebDAV_Server_SeedDMS extends HTTP_WebDAV_Server
|
||||||
$this->logger->log('COPY: error copying object', PEAR_LOG_ERR);
|
$this->logger->log('COPY: error copying object', PEAR_LOG_ERR);
|
||||||
return "409 Conflict";
|
return "409 Conflict";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($this->notifier) {
|
||||||
|
if($this->logger)
|
||||||
|
$this->logger->log('COPY: Sending Notifications', PEAR_LOG_INFO);
|
||||||
|
$fnl = $objdest->getNotifyList();
|
||||||
|
$dnl = $document->getNotifyList();
|
||||||
|
$nl = array(
|
||||||
|
'users'=>array_unique(array_merge($dnl['users'], $fnl['users']), SORT_REGULAR),
|
||||||
|
'groups'=>array_unique(array_merge($dnl['groups'], $fnl['groups']), SORT_REGULAR)
|
||||||
|
);
|
||||||
|
|
||||||
|
$subject = "new_document_email_subject";
|
||||||
|
$message = "new_document_email_body";
|
||||||
|
$params = array();
|
||||||
|
$params['name'] = $name;
|
||||||
|
$params['folder_name'] = $objdest->getName();
|
||||||
|
$params['folder_path'] = $objdest->getFolderPathPlain();
|
||||||
|
$params['username'] = $this->user->getFullName();
|
||||||
|
$params['comment'] = '';
|
||||||
|
$params['version_comment'] = '';
|
||||||
|
$params['url'] = "http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$settings->_httpRoot."out/out.ViewFolder.php?folderid=".$objdest->getID();
|
||||||
|
$params['sitename'] = $settings->_siteName;
|
||||||
|
$params['http_root'] = $settings->_httpRoot;
|
||||||
|
$this->notifier->toList($this->user, $nl["users"], $subject, $message, $params);
|
||||||
|
foreach ($nl["groups"] as $grp) {
|
||||||
|
$this->notifier->toGroup($this->user, $grp, $subject, $message, $params);
|
||||||
|
}
|
||||||
|
}
|
||||||
return "201 Created";
|
return "201 Created";
|
||||||
}
|
}
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user