mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-03-12 00:45:34 +00:00
Merge branch 'seeddms-5.1.x' into seeddms-6.0.x
This commit is contained in:
commit
6fbfe15baf
|
@ -201,6 +201,12 @@
|
|||
- add document list which can be exported as an archive
|
||||
- search results can be exported
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Changes in version 5.1.24
|
||||
--------------------------------------------------------------------------------
|
||||
- fix sending of some notification mails to groups
|
||||
- check view access for FolderAccess and DocumentAccess
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
Changes in version 5.1.23
|
||||
--------------------------------------------------------------------------------
|
||||
|
|
|
@ -8,13 +8,13 @@ SeedDMS is a web-based application written in PHP. It uses MySQL,
|
|||
sqlite3 or postgresql to manage the documents that were uploaded into
|
||||
the application. Be aware that postgresql is not very well tested.
|
||||
|
||||
Make sure you have PHP 7.x and MySQL 5 or higher installed. SeedDMS
|
||||
Make sure you have PHP >= 7.2 and MySQL 5 or higher installed. SeedDMS
|
||||
will work with PHP running in CGI-mode as well as running as a module under
|
||||
apache.
|
||||
|
||||
Here is a detailed list of requirements:
|
||||
|
||||
1. A web server with at least php 7.0
|
||||
1. A web server with at least php 7.2
|
||||
2. A mysql database, unless you use sqlite
|
||||
3. The php installation must have support for `pdo_mysql`, `pdo_pgsql` or `pdo_sqlite`,
|
||||
`php_gd2`, `php_mbstring`, `php_xml`
|
||||
|
@ -30,23 +30,24 @@ Here is a detailed list of requirements:
|
|||
It is highly recommended to use the quickstart archive
|
||||
(seeddms-quickstart-x.y.z.tar.gz) because it includes all software packages
|
||||
(excluding those listing above in item 1. to 6.) for running SeedDMS. Hence,
|
||||
you still need a working web server with PHP and a mysql or postgres database
|
||||
unless you intend to use sqlite.
|
||||
you still need a working web server with PHP and in addition a mysql or postgres database unless you intend to use sqlite.
|
||||
|
||||
QUICKSTART
|
||||
===========
|
||||
|
||||
The fastes way to get SeedDMS running is by unpacking the archive
|
||||
`seeddms-quickstart-x.y.z.tar.gz` on your webserver.
|
||||
Let's assume you use seeddms-quickstart-5.1.10.tar.gz.
|
||||
Let's assume you use seeddms-quickstart-5.1.x.tar.gz.
|
||||
It will create a new directory `seeddms51x` containing everything you
|
||||
need to run SeedDMS with sqlite3.
|
||||
need to run SeedDMS with sqlite3. Even if you intend to use mysql in the
|
||||
long run it is advisable to first set up SeedDMS with sqlite3 and than
|
||||
just switch the database.
|
||||
|
||||
Setting up the web server
|
||||
--------------------------
|
||||
|
||||
First you will need to set up your web server. Here, we will only focus
|
||||
on apache.
|
||||
First of all you will need to set up your web server. Here, we will only focus
|
||||
on apache running on Debian/GNU Linux.
|
||||
Either let the document root of your web server point to the directory `www`
|
||||
below `seeddms51x`
|
||||
|
||||
|
@ -95,7 +96,7 @@ http://your-domain/ or http://your-domain/seeddms51x.
|
|||
SECURITY CONSIDERATIONS
|
||||
=======================
|
||||
|
||||
First of all you should always access your SeedDMS installation through
|
||||
You should always access your SeedDMS installation through
|
||||
a secured https connection, unless you know precisly what are you doing.
|
||||
SeedDMS ships an .htaccess file which already has some common security
|
||||
http headers set. In order for them to apply you need to activate the
|
||||
|
@ -110,13 +111,15 @@ Protect directories with data or configuration
|
|||
|
||||
A crucial point when setting up SeedDMS is the propper placement of the
|
||||
data directory. Do not place it below your document root as
|
||||
configured in your web server! If you do so, there is good change that
|
||||
attackers can easily access your documents with a regular browser.
|
||||
If you can't place the data directory outside of document root, that either
|
||||
configured in your web server! If you do so, there is a good change that
|
||||
attackers can easily access your documents with a regular web browser.
|
||||
If you cannot place the data directory outside of document root, than either
|
||||
restrict access to it with an appropriate .htaccess file or/and change
|
||||
the `contentOffsetDir` in `settings.xml` to something random, but ensure it
|
||||
is still a valid directory name. If you change contentOffsetDir then
|
||||
do not forget to move `data/1048576` to `data/<your random name>`.
|
||||
Also turn off directory listings in your apache configuration for the
|
||||
`data` directory.
|
||||
|
||||
Example for .htaccess file in data directory
|
||||
----------------------------------------------
|
||||
|
@ -146,7 +149,8 @@ can be crucial for those configuration options where external commands are
|
|||
being configured, e.g. for the full text engine or creating preview images.
|
||||
As a hoster you may not want this configuration options being set by a SeedDMS
|
||||
administrator. For now you need to make the configuration file `settings.xml`
|
||||
unwritable for the web server.
|
||||
unwritable for the web server. In that case the SeedDMS administrator can
|
||||
still see the configuration but will not be able to change it.
|
||||
|
||||
Setting a new encryption key
|
||||
------------------------------
|
||||
|
@ -564,16 +568,4 @@ LICENSING
|
|||
|
||||
SeedDMS is licensed unter GPLv2
|
||||
|
||||
Jumploader is licensed as stated by the author on th web site
|
||||
<http://jumploader.com/>
|
||||
|
||||
-- Taken from web site of jumploader ---
|
||||
You may use this software for free, however, you should not:
|
||||
|
||||
- Decompile binaries.
|
||||
- Alter or replace class and/or resource files.
|
||||
- Redistribute this software under different name or authority.
|
||||
|
||||
If you would like a customized version, I can do this for a fee. Don't hesitate to contact me with questions or comments.
|
||||
|
||||
Uwe Steinmann <info@seeddms.org>
|
||||
|
|
|
@ -725,7 +725,7 @@ class SeedDMS_NotificationService {
|
|||
}
|
||||
$this->toList($user, $notifyList["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
foreach ($notifyList["groups"] as $grp) {
|
||||
$notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
}
|
||||
}
|
||||
} /* }}} */
|
||||
|
@ -881,7 +881,7 @@ class SeedDMS_NotificationService {
|
|||
if($obj->isType('user'))
|
||||
$this->toIndividual($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
elseif($obj->isType('group'))
|
||||
$notifier->toGroup($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
$this->toGroup($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
} /* }}} */
|
||||
|
||||
public function sendNewFolderNotifyMail($folder, $user, $obj) { /* {{{ */
|
||||
|
@ -898,7 +898,7 @@ class SeedDMS_NotificationService {
|
|||
if($obj->isType('user'))
|
||||
$this->toIndividual($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
elseif($obj->isType('group'))
|
||||
$notifier->toGroup($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
$this->toGroup($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
} /* }}} */
|
||||
|
||||
public function sendDeleteDocumentNotifyMail($document, $user, $obj) { /* {{{ */
|
||||
|
@ -916,7 +916,7 @@ class SeedDMS_NotificationService {
|
|||
if($obj->isType('user'))
|
||||
$this->toIndividual($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
elseif($obj->isType('group'))
|
||||
$notifier->toGroup($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
$this->toGroup($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
} /* }}} */
|
||||
|
||||
public function sendDeleteFolderNotifyMail($folder, $user, $obj) { /* {{{ */
|
||||
|
@ -933,7 +933,7 @@ class SeedDMS_NotificationService {
|
|||
if($obj->isType('user'))
|
||||
$this->toIndividual($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
elseif($obj->isType('group'))
|
||||
$notifier->toGroup($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
$this->toGroup($user, $obj, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
} /* }}} */
|
||||
|
||||
public function sendSubmittedReviewMail($content, $user, $reviewlog) { /* {{{ */
|
||||
|
@ -978,7 +978,7 @@ class SeedDMS_NotificationService {
|
|||
|
||||
$this->toList($user, $nl["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
foreach ($nl["groups"] as $grp)
|
||||
$notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
|
||||
// $this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_OWNER);
|
||||
|
||||
} /* }}} */
|
||||
|
|
|
@ -2620,12 +2620,15 @@ $(function() {
|
|||
} /* }}} */
|
||||
|
||||
function printAccessButton($object, $return=false) { /* {{{ */
|
||||
$accessobject = $this->params['accessobject'];
|
||||
$content = '';
|
||||
$objid = $object->getId();
|
||||
if($object->isType('document')) {
|
||||
$content .= '<a class="access-document-btn" href="'.$this->params['settings']->_httpRoot.'out/out.DocumentAccess.php?documentid='.$objid.'" title="'.getMLText('edit_document_access').'"><i class="fa fa-bolt"></i></a>';
|
||||
if($accessobject->check_view_access('DocumentAccess'))
|
||||
$content .= '<a class="access-document-btn" href="'.$this->params['settings']->_httpRoot.'out/out.DocumentAccess.php?documentid='.$objid.'" title="'.getMLText('edit_document_access').'"><i class="fa fa-bolt"></i></a>';
|
||||
} elseif($object->isType('folder')) {
|
||||
$content .= '<a class="access-folder-btn" href="'.$this->params['settings']->_httpRoot.'out/out.FolderAccess.php?folderid='.$objid.'" title="'.getMLText('edit_folder_access').'"><i class="fa fa-bolt"></i></a>';
|
||||
if($accessobject->check_view_access('FolderAccess'))
|
||||
$content .= '<a class="access-folder-btn" href="'.$this->params['settings']->_httpRoot.'out/out.FolderAccess.php?folderid='.$objid.'" title="'.getMLText('edit_folder_access').'"><i class="fa fa-bolt"></i></a>';
|
||||
}
|
||||
if($return)
|
||||
return $content;
|
||||
|
|
|
@ -2594,12 +2594,15 @@ $(function() {
|
|||
} /* }}} */
|
||||
|
||||
function printAccessButton($object, $return=false) { /* {{{ */
|
||||
$accessobject = $this->params['accessobject'];
|
||||
$content = '';
|
||||
$objid = $object->getId();
|
||||
if($object->isType('document')) {
|
||||
$content .= '<a class="access-document-btn" href="'.$this->params['settings']->_httpRoot.'out/out.DocumentAccess.php?documentid='.$objid.'" title="'.getMLText('edit_document_access').'"><i class="fa fa-bolt"></i></a>';
|
||||
if($accessobject->check_view_access('DocumentAccess'))
|
||||
$content .= '<a class="access-document-btn" href="'.$this->params['settings']->_httpRoot.'out/out.DocumentAccess.php?documentid='.$objid.'" title="'.getMLText('edit_document_access').'"><i class="fa fa-bolt"></i></a>';
|
||||
} elseif($object->isType('folder')) {
|
||||
$content .= '<a class="access-folder-btn" href="'.$this->params['settings']->_httpRoot.'out/out.FolderAccess.php?folderid='.$objid.'" title="'.getMLText('edit_folder_access').'"><i class="fa fa-bolt"></i></a>';
|
||||
if($accessobject->check_view_access('FolderAccess'))
|
||||
$content .= '<a class="access-folder-btn" href="'.$this->params['settings']->_httpRoot.'out/out.FolderAccess.php?folderid='.$objid.'" title="'.getMLText('edit_folder_access').'"><i class="fa fa-bolt"></i></a>';
|
||||
}
|
||||
if($return)
|
||||
return $content;
|
||||
|
|
Loading…
Reference in New Issue
Block a user