mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-05-16 22:51:32 +00:00
- has been moved into install directory some time ago
This commit is contained in:
parent
2fdc48f325
commit
43eabc489e
|
@ -1,116 +0,0 @@
|
||||||
<?php
|
|
||||||
// MyDMS. Document Management System
|
|
||||||
// Copyright (C) 2002-2005 Markus Westphal
|
|
||||||
// Copyright (C) 2006-2008 Malcolm Cowe
|
|
||||||
// Copyright (C) 2010 Matteo Lucarelli
|
|
||||||
//
|
|
||||||
// This program is free software; you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation; either version 2 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
|
|
||||||
include("../inc/inc.Version.php");
|
|
||||||
include("../inc/inc.Settings.php");
|
|
||||||
include("../inc/inc.DBInit.php");
|
|
||||||
include("../inc/inc.Language.php");
|
|
||||||
include("../inc/inc.ClassUI.php");
|
|
||||||
include("../inc/inc.Authentication.php");
|
|
||||||
|
|
||||||
if (!$user->isAdmin()) {
|
|
||||||
print "<b>ERROR: You must be administrator to execute the update</b>";
|
|
||||||
die;
|
|
||||||
}
|
|
||||||
|
|
||||||
function check($doupdate=0) {
|
|
||||||
global $db, $settings;
|
|
||||||
|
|
||||||
$arr = array();
|
|
||||||
$arr['tblDocuments'] = array('key'=>'id', 'fields'=>array('name', 'comment', 'keywords'));
|
|
||||||
$arr['tblDocumentFiles'] = array('key'=>'id', 'fields'=>array('name', 'comment', 'mimeType'));
|
|
||||||
$arr['tblFolders'] = array('key'=>'id', 'fields'=>array('name', 'comment'));
|
|
||||||
$arr['tblUsers'] = array('key'=>'id', 'fields'=>array('fullName', 'comment'));
|
|
||||||
$arr['tblGroups'] = array('key'=>'id', 'fields'=>array('name', 'comment'));
|
|
||||||
$arr['tblKeywords'] = array('key'=>'id', 'fields'=>array('keywords'));
|
|
||||||
$arr['tblKeywordCategories'] = array('key'=>'id', 'fields'=>array('name'));
|
|
||||||
$arr['tblCategory'] = array('key'=>'id', 'fields'=>array('name'));
|
|
||||||
$arr['tblEvents'] = array('key'=>'id', 'fields'=>array('name', 'comment'));
|
|
||||||
$arr['tblDocumentApproveLog'] = array('key'=>'approveLogId', 'fields'=>array('comment'));
|
|
||||||
$arr['tblDocumentStatusLog'] = array('key'=>'statusLogId', 'fields'=>array('comment'));
|
|
||||||
$arr['tblDocumentReviewLog'] = array('key'=>'reviewLogId', 'fields'=>array('comment'));
|
|
||||||
$arr['tblDocumentContent'] = array('keys'=>array('document', 'version'), 'fields'=>array('comment', 'mimeType'));
|
|
||||||
|
|
||||||
$allupdates = array();
|
|
||||||
echo "<table>\n";
|
|
||||||
echo "<tr><th>Table</th><th>Field</th><th>Old Value</th><th>New Value</th><th>Update statement</th></tr>\n";
|
|
||||||
foreach($arr as $tblname => $schema) {
|
|
||||||
if(isset($schema['key']))
|
|
||||||
$queryStr = "SELECT ".$schema['key'].", `".implode('`,`', $schema['fields'])."` FROM ".$tblname;
|
|
||||||
elseif(isset($schema['keys']))
|
|
||||||
$queryStr = "SELECT ".implode(',', $schema['keys']).", `".implode('`,`', $schema['fields'])."` FROM ".$tblname;
|
|
||||||
$recs = $db->getResultArray($queryStr);
|
|
||||||
foreach($recs as $rec) {
|
|
||||||
foreach($schema['fields'] as $field) {
|
|
||||||
if($rec[$field] !== mydmsDecodeString($rec[$field])) {
|
|
||||||
$updateSql = "UPDATE ".$tblname." SET `".$field."`=".$db->qstr(mydmsDecodeString($rec[$field]))." where ";
|
|
||||||
if(isset($schema['key']))
|
|
||||||
$updateSql .= $schema['key']."=".$rec[$schema['key']];
|
|
||||||
elseif(isset($schema['keys'])) {
|
|
||||||
$where = array();
|
|
||||||
foreach($schema['keys'] as $key) {
|
|
||||||
$where[] = $key."=".$rec[$key];
|
|
||||||
}
|
|
||||||
$updateSql .= implode(' AND ', $where);
|
|
||||||
}
|
|
||||||
$allupdates[] = $updateSql;
|
|
||||||
echo "<tr><td>".$tblname."</td><td>".$field."</td><td>".htmlspecialchars($rec[$field])."</td><td>".htmlspecialchars(mydmsDecodeString($rec[$field]))."</td><td><pre>".htmlspecialchars($updateSql)."</pre></td></tr>\n";
|
|
||||||
if($doupdate) {
|
|
||||||
$res = $db->getResult($updateSql);
|
|
||||||
if(!$res) {
|
|
||||||
$errormsg = 'Could not execute update statement';
|
|
||||||
echo "<tr><td colspan=\"5\"><span style=\"color: red;\">".$errormsg."</span></td></tr>\n";
|
|
||||||
} else {
|
|
||||||
$errormsg = 'Object updated';
|
|
||||||
echo "<tr><td colspan=\"5\"><span style=\"color: green;\">".$errormsg."</span></td></tr>\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
echo "</table>\n";
|
|
||||||
echo "<b>Summary of all updates</b><br />\n";
|
|
||||||
echo "<pre>".implode("<br />", $allupdates)."</pre>";
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
UI::htmlStartPage('Database update');
|
|
||||||
UI::globalNavigation();
|
|
||||||
UI::pageNavigation('Database update');
|
|
||||||
UI::contentContainerStart();
|
|
||||||
|
|
||||||
if(isset($_GET['doupdate']) && $_GET['doupdate'] == 1)
|
|
||||||
$doupdate = 1;
|
|
||||||
else
|
|
||||||
$doupdate = 0;
|
|
||||||
|
|
||||||
if (!check($doupdate)) {
|
|
||||||
die;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!$doupdate) {
|
|
||||||
print "<p>If the above update statements look ok, either execute them in your prefered mysql client or click on the link below.</p>";
|
|
||||||
print "<a href=\"?doupdate=1\">Execute update</a><br />\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
UI::contentContainerEnd();
|
|
||||||
UI::htmlEndPage();
|
|
||||||
?>
|
|
|
@ -1,4 +0,0 @@
|
||||||
UPDATE tblVersion set major=3, minor=3, subminor=0;
|
|
||||||
ALTER TABLE tblDocumentContent MODIFY mimeType varchar(100);
|
|
||||||
ALTER TABLE tblDocumentFiles MODIFY mimeType varchar(100);
|
|
||||||
ALTER TABLE tblFolders ADD COLUMN `folderList` text NOT NULL;
|
|
|
@ -1,51 +0,0 @@
|
||||||
Release information for 3.3.0
|
|
||||||
-------------------------------------
|
|
||||||
|
|
||||||
This release contains various improvements which require your manual
|
|
||||||
interaction during an upgrade from an earlier version. You ѕhould definitely
|
|
||||||
make a backup of your database and possibly your content folder.
|
|
||||||
|
|
||||||
Folder search
|
|
||||||
-------------
|
|
||||||
The new folder search has introduced a new database field which has to
|
|
||||||
be initially filled. Without that field searching for subfolders in a
|
|
||||||
folder will not work.
|
|
||||||
|
|
||||||
Data conversion
|
|
||||||
---------------
|
|
||||||
The conversion of strings like names and comments of documents and folders,
|
|
||||||
when saved in the database, has been completely droped. This was originally
|
|
||||||
done for security reasons, both to prevent sql injections and cross side
|
|
||||||
scripting. Basically any field data that could do any harm, was replaced
|
|
||||||
by 'harmless' chars. Ampersands, semi colons, quotes, etc., they all have
|
|
||||||
been replaced by their html entity or masked by a backslash. The output of
|
|
||||||
those fields on html pages was not decoded anymore, but any other application
|
|
||||||
that accessed the database had to decode the data.
|
|
||||||
|
|
||||||
The new approach with less impact on the data keeps the data
|
|
||||||
unmodified when saving it in the database without opening new security
|
|
||||||
wholes. Protection against cross side scripting is done when the data
|
|
||||||
is placed on a html page.
|
|
||||||
|
|
||||||
As a consequence the complete database has to be searched for those
|
|
||||||
previously converted strings and converted back into the original value.
|
|
||||||
|
|
||||||
For both of the above improvements a php script is provided which has to be
|
|
||||||
called after the database update.
|
|
||||||
|
|
||||||
Content directory
|
|
||||||
-----------------
|
|
||||||
Each document in LetoDMS is associated with a directory in the file system.
|
|
||||||
Consequently, there is a limitation of documents set by the maximum number
|
|
||||||
of subdirectories in a directory of the filesystem. The currently most used
|
|
||||||
filesystem on Linux (ext3) supports only 31998 directories. In order to
|
|
||||||
overcome this limitation another level of directories has been put inbetween
|
|
||||||
the content directory and the document directory numbered from 1 to maxDirId.
|
|
||||||
|
|
||||||
If you intend to switch to the new content directory format, you will have
|
|
||||||
to create a new directory with name '1' below the content dir and move all
|
|
||||||
document directories into it. If you have already a document with id 1, you
|
|
||||||
must choose a different name for your new sub directory and rename to 1 after
|
|
||||||
all document directories have been moved.
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user