- has been moved into install directory some time ago

This commit is contained in:
steinm 2012-12-14 07:17:37 +00:00
parent 2fdc48f325
commit 43eabc489e
3 changed files with 0 additions and 171 deletions

View File

@ -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();
?>

View File

@ -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;

View File

@ -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.