Merge branch 'seeddms-6.0.x' into seeddms-6.1.x

This commit is contained in:
Uwe Steinmann 2021-08-18 10:19:08 +02:00
commit f82bff7a08
18 changed files with 677 additions and 1628 deletions

View File

@ -295,22 +295,26 @@ class SeedDMS_Core_DatabaseAccess {
$dsn = $this->_driver.":".$this->_database;
break;
}
/** @noinspection PhpUndefinedVariableInspection */
$this->_conn = new PDO($dsn, $this->_user, $this->_passw);
if (!$this->_conn)
return false;
try {
/** @noinspection PhpUndefinedVariableInspection */
$this->_conn = new PDO($dsn, $this->_user, $this->_passw);
if (!$this->_conn)
return false;
switch($this->_driver) {
case 'mysql':
$this->_conn->exec('SET NAMES utf8');
/* Turn this on if you want strict checking of default values, etc. */
// $this->_conn->exec("SET SESSION sql_mode = 'STRICT_TRANS_TABLES'");
/* The following is the default on Ubuntu 16.04 */
// $this->_conn->exec("SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'");
break;
case 'sqlite':
$this->_conn->exec('PRAGMA foreign_keys = ON');
break;
switch($this->_driver) {
case 'mysql':
$this->_conn->exec('SET NAMES utf8');
/* Turn this on if you want strict checking of default values, etc. */
/* $this->_conn->exec("SET SESSION sql_mode = 'STRICT_TRANS_TABLES'"); */
/* The following is the default on Ubuntu 16.04 */
/* $this->_conn->exec("SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'"); */
break;
case 'sqlite':
$this->_conn->exec('PRAGMA foreign_keys = ON');
break;
}
} catch (Exception $e) {
return false;
}
if($this->_useviews) {
$tmp = $this->ViewList();

View File

@ -41,8 +41,18 @@ The fastes way to get SeedDMS running is by unpacking the archive
Let's assume you use seeddms-quickstart-5.1.10.tar.gz.
It will create a new directory `seeddms51x` containing everything you
need to run SeedDMS with sqlite3.
Setting up the web server
--------------------------
First you will need to set up your web server. Here, we will only focus
on apache.
Either let the document root of your web server point to the directory `www`
below `seeddms51x` or add an alias. For apache this could be like
below `seeddms51x`
DocumentRoot /var/www/seeddms51x/www
or add an alias. For apache this could be like
Alias /seeddms51x /<some directory>/seeddms51x/www
@ -52,11 +62,16 @@ Alias /mydms /<some directory>/seeddms51x/www
Do not set the DocumentRoot or Alias to
the `seeddms51x` directory, because this will allow anybody to access
your `data` and `conf` directory. This is a major security risk.
your `data` and `conf` directory if it is not secured by a .htaccess file.
This is a major security risk.
Make sure that the subdirectory `seeddms51x/data` and the configuration file
`seeddms51/conf/settings.xml` is writeable by your web server. All other
directories must just be readable by your web server.
directories can be just readable by your web server, though it is advisable
to even protect them from writing.
Adjusting the configuration of SeedDMS
---------------------------------------
In the next step you need to adjust the configuration file in
`seeddms51x/conf/settings.xml`. Open the file in your favorite text editor
@ -71,7 +86,7 @@ It will first ask to unlock the installer by creating a file
`ENABLE_INSTALL_TOOL` in the diretory `seeddms51x/conf/`. Change all paths by
replacing `/home/www-data` with your base directory where you put seeddms51x.
Set httpRoot to '/' (if the document root points to`seeddms51x/www`) or
'/seeddms51x' (if you have set an alias like described above).
'/seeddms51x' (if you have set an alias `seeddms51x` like described above).
Once your configuration is done,
save it, remove the file `ENABLE_INSTALL_TOOL` and point your browser to

View File

@ -23,6 +23,7 @@
class Settings { /* {{{ */
// Config File Path
var $_configFilePath = null;
var $_configFileDir = '';
// Fields not shown in gui
var $_hiddenConfFields = '';
@ -386,6 +387,8 @@ class Settings { /* {{{ */
exit;
}
}
$this->_configFileDir = dirname($this->_configFilePath);
if(!$this->load($configFilePath)) {
echo "Your configuration contains errors.";
exit;
@ -1073,7 +1076,7 @@ class Settings { /* {{{ */
$this->setXMLAttributValue($node, "dbDatabase", $this->_dbDatabase);
$this->setXMLAttributValue($node, "dbUser", $this->_dbUser);
$this->setXMLAttributValue($node, "dbPass", $this->_dbPass);
$this->setXMLAttributValue($node, "doNotCheckVersion", $this->_doNotCheckDBVersion);
$this->setXMLAttributValue($node, "doNotCheckDBVersion", $this->_doNotCheckDBVersion);
// XML Path: /configuration/system/smtp
$node = $this->getXMLNode($xml, '/configuration/system', 'smtp');
@ -1254,6 +1257,10 @@ class Settings { /* {{{ */
* @return NULL|string config directory
*/
static function getConfigDir() { /* {{{ */
if(defined("SEEDDMS_CONFIG_FILE"))
return dirname(SEEDDMS_CONFIG_FILE);
elseif(getenv("SEEDDMS_CONFIG_FILE"))
return dirname(getenv("SEEDDMS_CONFIG_FILE"));
$_tmp = dirname($_SERVER['SCRIPT_FILENAME']);
$_arr = preg_split('/\//', rtrim(str_replace('\\', '/', $_tmp)));
$configDir = null;
@ -1360,6 +1367,7 @@ class Settings { /* {{{ */
// TODO
// $this->_coreDir
/*
if($this->_coreDir) {
if (!file_exists($this->_coreDir ."Core.php")) {
$result["coreDir"] = array(
@ -1380,7 +1388,7 @@ class Settings { /* {{{ */
);
}
}
*/
// $this->_httpRoot
$tmp = $this->curPageURL();
$tmp = str_replace ("install.php", "" , $tmp);
@ -1531,7 +1539,7 @@ class Settings { /* {{{ */
if(!empty($this->_coreDir))
require_once($this->_coreDir.'/Core.php');
else
require_once('SeedDMS/Core.php');
require_once($this->_rootDir.'../pear/SeedDMS/Core.php');
$tmpcore = new SeedDMS_Core_DMS(null, $this->_contentDir);
$db = new SeedDMS_Core_DatabaseAccess($this->_dbDriver, $this->_dbHostname, $this->_dbUser, $this->_dbPass, $this->_dbDatabase);
if(!$db->connect()) {
@ -1594,7 +1602,7 @@ class Settings { /* {{{ */
}
// Check PHP version
if (version_compare(PHP_VERSION, '5.6.38') < 0) {
if (version_compare(PHP_VERSION, '7.2.5') < 0) {
$result["php_version"] = array(
"status" => "versiontolow",
"type" => "error",
@ -1604,6 +1612,15 @@ class Settings { /* {{{ */
// Check PHP configuration
$loaded_extensions = get_loaded_extensions();
// xml
if (!in_array("xml", $loaded_extensions)) {
$result["php_xml"] = array(
"status" => "notfound",
"type" => "error",
"suggestion" => "activate_php_extension"
);
}
// gd2
if (!in_array("gd", $loaded_extensions)) {
$result["php_gd2"] = array(
@ -1622,6 +1639,42 @@ class Settings { /* {{{ */
);
}
// json
if (!in_array("json", $loaded_extensions)) {
$result["php_json"] = array(
"status" => "notfound",
"type" => "error",
"suggestion" => "activate_php_extension"
);
}
// zip
if (!in_array("zip", $loaded_extensions)) {
$result["php_zip"] = array(
"status" => "notfound",
"type" => "error",
"suggestion" => "activate_php_extension"
);
}
// fileinfo
if (!in_array("fileinfo", $loaded_extensions)) {
$result["php_fileinfo"] = array(
"status" => "notfound",
"type" => "error",
"suggestion" => "activate_php_extension"
);
}
// sqlite3
if (!in_array("sqlite3", $loaded_extensions)) {
$result["php_sqlite3"] = array(
"status" => "notfound",
"type" => "error",
"suggestion" => "activate_php_extension"
);
}
// database
if (!in_array('pdo_'.$this->_dbDriver, $loaded_extensions)) {
$result["php_dbDriver"] = array(
@ -1645,6 +1698,7 @@ class Settings { /* {{{ */
*/
// Check for HTTP/WebDAV/Server.php
/*
if (!Settings::findInIncPath('HTTP/WebDAV/Server.php')) {
$result["pear_webdav"] = array(
"status" => "notfound",
@ -1652,8 +1706,10 @@ class Settings { /* {{{ */
"suggestion" => "install_pear_package_webdav"
);
}
*/
// Check for Zend/Search/Lucene.php
/*
if (!Settings::findInIncPath('Zend/Search/Lucene.php')) {
$result["zendframework"] = array(
"status" => "notfound",
@ -1661,6 +1717,7 @@ class Settings { /* {{{ */
"suggestion" => "install_zendframework"
);
}
*/
return $result;
} /* }}} */

File diff suppressed because it is too large Load Diff

View File

@ -49,6 +49,9 @@ $dms = new SeedDMS_Core_DMS($db, $settings->_contentDir.$settings->_contentOffse
if(!$settings->_doNotCheckDBVersion && !$dms->checkVersion()) {
echo "Database update needed.";
if($v = $dms->getDBVersion()) {
echo " Database has version ".$v['major'].".".$v['minor'].".".$v['subminor']." but this is SeedDMS ".$dms->version.".";
}
exit;
}

View File

@ -25,7 +25,7 @@ elseif(getenv("SEEDDMS_CONFIG_FILE"))
$settings = new Settings(getenv("SEEDDMS_CONFIG_FILE"));
else
$settings = new Settings();
if(!defined("SEEDDMS_INSTALL") && file_exists(dirname($settings->_configFilePath)."/ENABLE_INSTALL_TOOL")) {
if(!defined("SEEDDMS_INSTALL") && file_exists($settings->_configFileDir."/ENABLE_INSTALL_TOOL")) {
die("SeedDMS won't run unless your remove the file ENABLE_INSTALL_TOOL from your configuration directory.");
}
@ -35,11 +35,13 @@ if(!trim($settings->_encryptionKey)) {
$settings->save();
}
if(isset($settings->_extraPath))
ini_set('include_path', $settings->_rootDir.'pear'. PATH_SEPARATOR .ini_get('include_path'));
if(!empty($settings->_extraPath)) {
ini_set('include_path', $settings->_extraPath. PATH_SEPARATOR .ini_get('include_path'));
/* composer is installed in pear directory */
require_once 'vendor/autoload.php';
}
/* composer is installed in pear directory, but install tool does not need it */
if(!defined("SEEDDMS_INSTALL"))
require_once $settings->_rootDir.'../pear/vendor/autoload.php';
if(isset($settings->_maxExecutionTime)) {
if (php_sapi_name() !== "cli") {
@ -67,3 +69,7 @@ if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
* relative to it.
*/
ini_set('include_path', $settings->_rootDir. PATH_SEPARATOR .ini_get('include_path'));
/* Add root Dir.'../pear'. Needed because the SeedDMS_Core, etc. are included
* relative to it.
*/
ini_set('include_path', $settings->_rootDir.'../pear'. PATH_SEPARATOR .ini_get('include_path'));

View File

@ -410,7 +410,7 @@ class SeedDMS_Task_Preview_Process_Folder { /* {{{ */
}
$files = $document->getDocumentFiles();
foreach($files as $file) {
$this->previewer->createPreview($file, $width['detail'], $isnew);
$this->previewer->createPreview($file, $width, $isnew);
if($isnew){
$this->logger->log('Task \'preview\': created preview ('.$width.'px) for attachment of document '.$document->getId().':'.$file->getId(), PEAR_LOG_INFO);
}

493
install/class.Install.php Normal file
View File

@ -0,0 +1,493 @@
<?php
include("../views/bootstrap/class.Bootstrap.php");
class SeedDMS_View_Install extends SeedDMS_Theme_Style {
protected function printError($error) { /* {{{ */
print "<div class=\"alert alert-error\">\n";
print $error;
print "</div>";
} /* }}} */
protected function printWarning($error) { /* {{{ */
print "<div class=\"alert alert-warning\">";
print $error;
print "</div>";
} /* }}} */
protected function printCheckError($resCheck) { /* {{{ */
$hasError = false;
foreach($resCheck as $keyRes => $paramRes) {
if(isset($paramRes['type']) && $paramRes['type'] == 'error')
$hasError = true;
$errorMes = getMLText("settings_$keyRes"). " : " . getMLText("settings_".$paramRes["status"]);
if (isset($paramRes["currentvalue"]))
$errorMes .= "<br/> =&gt; " . getMLText("settings_currentvalue") . " : " . $paramRes["currentvalue"];
if (isset($paramRes["suggestionvalue"]))
$errorMes .= "<br/> =&gt; " . getMLText("settings_suggestionvalue") . " : " . $paramRes["suggestionvalue"];
if (isset($paramRes["suggestion"]))
$errorMes .= "<br/> =&gt; " . getMLText("settings_".$paramRes["suggestion"]);
if (isset($paramRes["systemerror"]))
$errorMes .= "<br/> =&gt; " . $paramRes["systemerror"];
if(isset($paramRes['type']) && $paramRes['type'] == 'error')
$this->printError($errorMes);
else
$this->printWarning($errorMes);
}
return $hasError;
} /* }}} */
protected function openDBConnection($settings) { /* {{{ */
switch($settings->_dbDriver) {
case 'mysql':
case 'mysqli':
case 'mysqlnd':
case 'pgsql':
$tmp = explode(":", $settings->_dbHostname);
$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
if(isset($tmp[1]))
$dsn .= ";port=".$tmp[1];
break;
case 'sqlite':
$dsn = $settings->_dbDriver.":".$settings->_dbDatabase;
break;
}
$connTmp = new PDO($dsn, $settings->_dbUser, $settings->_dbPass);
return $connTmp;
} /* }}} */
public function intro() { /* {{{ */
$this->htmlStartPage("INSTALL");
$this->globalBanner();
$this->contentStart();
$this->contentHeading("SeedDMS Installation for version ".SEEDDMS_VERSION);
$this->contentContainerStart();
echo "<h2>".getMLText('settings_install_welcome_title')."</h2>";
echo "<div style=\"width: 600px;\">".getMLText('settings_install_welcome_text')."</div>";
echo '<p><a href="install.php">' . getMLText("settings_start_install") . '</a></p>';
$this->contentContainerEnd();
$this->contentEnd();
$this->htmlEndPage();
} /* }}} */
public function install($msg) { /* {{{ */
$settings = $this->params['settings'];
$configDir = $this->params['configdir'];
$this->htmlStartPage("INSTALL");
$this->globalBanner();
$this->contentStart();
$this->contentHeading("SeedDMS Installation for version ".SEEDDMS_VERSION);
if(isset($msg))
$this->warningMsg($msg);
$this->contentContainerStart();
/**
* Show phpinfo
*/
if (isset($_GET['phpinfo'])) {
echo '<a href="install.php">' . getMLText("back") . '</a>';
phpinfo();
$this->contentContainerEnd();
$this->contentEnd();
$this->htmlEndPage();
exit();
}
/**
* check if ENABLE_INSTALL_TOOL shall be removed
*/
if (isset($_GET['disableinstall'])) { /* {{{ */
if(file_exists($configDir."/ENABLE_INSTALL_TOOL")) {
if(unlink($configDir."/ENABLE_INSTALL_TOOL")) {
echo getMLText("settings_install_disabled");
echo "<br/><br/>";
echo '<a href="../out/out.Settings.php">' . getMLText("settings_more_settings") .'</a>';
} else {
echo getMLText("settings_cannot_disable");
echo "<br/><br/>";
echo '<a href="install.php">' . getMLText("back") . '</a>';
}
} else {
echo getMLText("settings_cannot_disable");
echo "<br/><br/>";
echo '<a href="install.php">' . getMLText("back") . '</a>';
}
$this->contentContainerEnd();
$this->contentEnd();
$this->htmlEndPage();
exit();
} /* }}} */
/**
* Check System
*/
if ($this->printCheckError( $settings->checkSystem())) { /* {{{ */
if (function_exists("apache_get_version")) {
echo "<br/>Apache version: " . apache_get_version();
}
echo "<br/>PHP version: " . phpversion();
echo "<br/>PHP include path: " . ini_get('include_path');
echo '<br/>';
echo '<br/>';
echo '<a href="' . $httpRoot . 'install/install.php">' . getMLText("refresh") . '</a>';
echo ' - ';
echo '<a href="' . $httpRoot . 'install/install.php?phpinfo">' . getMLText("version_info") . '</a>';
exit;
} /* }}} */
if (isset($_POST["action"])) $action=$_POST["action"];
else if (isset($_GET["action"])) $action=$_GET["action"];
else $action=NULL;
$showform = true;
if ($action=="setSettings") { /* {{{ */
/**
* Get Parameters
*/
$settings->_rootDir = $_POST["rootDir"];
$settings->_httpRoot = $_POST["httpRoot"];
$settings->_contentDir = $_POST["contentDir"];
$settings->_luceneDir = $_POST["luceneDir"];
$settings->_stagingDir = $_POST["stagingDir"];
$settings->_cacheDir = $_POST["cacheDir"];
$settings->_extraPath = $_POST["extraPath"];
$settings->_dbDriver = $_POST["dbDriver"];
$settings->_dbHostname = $_POST["dbHostname"];
$settings->_dbDatabase = $_POST["dbDatabase"];
$settings->_dbUser = $_POST["dbUser"];
$settings->_dbPass = $_POST["dbPass"];
$settings->_coreDir = ''; //$_POST["coreDir"];
$settings->_luceneClassDir = ''; //$_POST["luceneClassDir"];
if(isset($settings->_extraPath))
ini_set('include_path', $settings->_extraPath. PATH_SEPARATOR .ini_get('include_path'));
/**
* Check Parameters, require version 3.3.x
*/
$hasError = $this->printCheckError( $settings->check(substr(str_replace('.', '', SEEDDMS_VERSION), 0,2)));
if (!$hasError) {
// Create database
if (isset($_POST["createDatabase"])) {
$createOK = false;
$errorMsg = "";
$connTmp = $this->openDBConnection($settings);
if ($connTmp) {
// read SQL file
if ($settings->_dbDriver=="mysql")
$queries = file_get_contents("create_tables-innodb.sql");
elseif($settings->_dbDriver=="sqlite")
$queries = file_get_contents("create_tables-sqlite3.sql");
elseif($settings->_dbDriver=="pgsql")
$queries = file_get_contents("create_tables-postgres.sql");
else
die();
// generate SQL query
$queries = explode(";", $queries);
// execute queries
foreach($queries as $query) {
// var_dump($query);
$query = trim($query);
if (!empty($query)) {
$connTmp->exec($query);
if ($connTmp->errorCode() != 0) {
$errorMsg .= $connTmp->errorInfo()[2] . "<br/>";
}
}
}
}
// error ?
if (empty($errorMsg))
$createOK = true;
$connTmp = null;
// Show error
if (!$createOK) {
echo $errorMsg;
$hasError = true;
}
} // create database
if (!$hasError) {
// Save settings
$settings->save();
$needsupdate = false;
$connTmp = $this->openDBConnection($settings);
if ($connTmp) {
switch($settings->_dbDriver) {
case 'mysql':
case 'mysqli':
case 'mysqlnd':
case 'sqlite':
$sql = 'select * from `tblVersion`';
break;
case 'pgsql':
$sql = 'select * from "tblVersion"';
break;
}
$res = $connTmp->query($sql);
if($res) {
if($rec = $res->fetch(PDO::FETCH_ASSOC)) {
$updatedirs = array();
$d = dir(".");
while (false !== ($entry = $d->read())) {
if(preg_match('/update-([0-9.]*)/', $entry, $matches)) {
$updatedirs[] = $matches[1];
}
}
$d->close();
echo "Your current database schema has version ".$rec['major'].'.'.$rec['minor'].'.'.$rec['subminor'].". Please run all (if any)<br />of the update scripts below in the listed order.<br /><br />";
$connTmp = null;
if($updatedirs) {
asort($updatedirs);
foreach($updatedirs as $updatedir) {
if($updatedir > $rec['major'].'.'.$rec['minor'].'.'.$rec['subminor']) {
$needsupdate = true;
print "<h3>Database update to version ".$updatedir." needed</h3>";
if(file_exists('update-'.$updatedir.'/update.txt')) {
print "<p>Please read the comments on updating this version. <a href=\"update-".$updatedir."/update.txt\" target=\"_blank\">Read now</a></p>";
}
print "<p>Run the <a href=\"update.php?version=".$updatedir."\">update script</a>.</p>";
}
}
} else {
print "<p>Your current database is up to date.</p>";
}
}
if(!$needsupdate) {
echo getMLText("settings_install_success");
echo "<br/><br/>";
echo getMLText("settings_delete_install_folder");
echo "<br/><br/>";
echo '<a href="install.php?disableinstall=1">' . getMLText("settings_disable_install") . '</a>';
echo "<br/><br/>";
echo '<a href="../out/out.Settings.php">' . getMLText("settings_more_settings") .'</a>';
$showform = false;
}
} else {
print "<p>You does not seem to have a valid database. The table tblVersion is missing.</p>";
}
}
}
}
// Back link
echo '<br/>';
echo '<br/>';
// echo '<a href="' . $httpRoot . '/install/install.php">' . getMLText("back") . '</a>';
} /* }}} */
if($showform) { /* {{{ */
/**
* Set parameters
*/
?>
<form action="install.php" method="post" enctype="multipart/form-data">
<input type="Hidden" name="action" value="setSettings">
<table>
<!-- SETTINGS - SYSTEM - SERVER -->
<tr ><td><b> <?php printMLText("settings_Server");?></b></td> </tr>
<tr title="<?php printMLText("settings_rootDir_desc");?>">
<td><?php printMLText("settings_rootDir");?>:</td>
<td><input type="text" name="rootDir" value="<?php echo $settings->_rootDir ?>" size="100" /></td>
</tr>
<tr title="<?php printMLText("settings_httpRoot_desc");?>">
<td><?php printMLText("settings_httpRoot");?>:</td>
<td><input type="text" name="httpRoot" value="<?php echo $settings->_httpRoot ?>" size="100" /></td>
</tr>
<tr title="<?php printMLText("settings_contentDir_desc");?>">
<td><?php printMLText("settings_contentDir");?>:</td>
<td><input type="text" name="contentDir" value="<?php echo $settings->_contentDir ?>" size="100" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_luceneDir_desc");?>">
<td><?php printMLText("settings_luceneDir");?>:</td>
<td><input type="text" name="luceneDir" value="<?php echo $settings->_luceneDir ?>" size="100" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_stagingDir_desc");?>">
<td><?php printMLText("settings_stagingDir");?>:</td>
<td><input type="text" name="stagingDir" value="<?php echo $settings->_stagingDir ?>" size="100" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_cacheDir_desc");?>">
<td><?php printMLText("settings_cacheDir");?>:</td>
<td><input type="text" name="cacheDir" value="<?php echo $settings->_cacheDir ?>" size="100" style="background:yellow" /></td>
</tr>
<!--
<tr title="<?php printMLText("settings_coreDir_desc");?>">
<td><?php printMLText("settings_coreDir");?>:</td>
<td><input type="text" name="coreDir" value="<?php echo $settings->_coreDir ?>" size="100" /></td>
</tr>
<tr title="<?php printMLText("settings_luceneClassDir_desc");?>">
<td><?php printMLText("settings_luceneClassDir");?>:</td>
<td><input type="text" name="luceneClassDir" value="<?php echo $settings->_luceneClassDir ?>" size="100" /></td>
</tr>
-->
<tr title="<?php printMLText("settings_extraPath_desc");?>">
<td><?php printMLText("settings_extraPath");?>:</td>
<td><input type="text" name="extraPath" value="<?php echo $settings->_extraPath ?>" size="100" /></td>
</tr>
<!-- SETTINGS - SYSTEM - DATABASE -->
<tr ><td><b> <?php printMLText("settings_Database");?></b></td> </tr>
<tr title="<?php printMLText("settings_dbDriver_desc");?>">
<td><?php printMLText("settings_dbDriver");?>:</td>
<td><input type="text" name="dbDriver" value="<?php echo $settings->_dbDriver ?>" /></td>
</tr>
<tr title="<?php printMLText("settings_dbHostname_desc");?>">
<td><?php printMLText("settings_dbHostname");?>:</td>
<td><input type="text" name="dbHostname" value="<?php echo $settings->_dbHostname ?>" /></td>
</tr>
<tr title="<?php printMLText("settings_dbDatabase_desc");?>">
<td><?php printMLText("settings_dbDatabase");?>:</td>
<td><input type="text" name="dbDatabase" value="<?php echo $settings->_dbDatabase ?>" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_dbUser_desc");?>">
<td><?php printMLText("settings_dbUser");?>:</td>
<td><input type="text" name="dbUser" value="<?php echo $settings->_dbUser ?>" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_dbPass_desc");?>">
<td><?php printMLText("settings_dbPass");?>:</td>
<td><input name="dbPass" value="<?php echo $settings->_dbPass ?>" type="password" style="background:yellow" /></td>
</tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr>
<td><?php printMLText("settings_createdatabase");?>:</td>
<td><input name="createDatabase" type="checkbox" style="background:yellow"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="btn btn-primary" value="<?php printMLText("apply");?>" /></td>
</tr>
</table>
</form>
<?php
} /* }}} */
// just remove info for web page installation
$settings->_printDisclaimer = false;
$settings->_footNote = false;
// end of the page
$this->contentContainerEnd();
$this->contentEnd();
$this->htmlEndPage();
} /* }}} */
public function update() { /* {{{ */
$settings = $this->params['settings'];
$this->htmlStartPage('Database update');
$this->globalBanner();
$this->contentStart();
$this->contentHeading("SeedDMS Installation for version ".$_GET['version']);
$this->contentContainerStart();
$sqlfile = "update.sql";
switch($settings->_dbDriver) {
case 'mysql':
case 'mysqli':
case 'mysqlnd':
$tmp = explode(":", $settings->_dbHostname);
$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
if(isset($tmp[1]))
$dsn .= ";port=".$tmp[1];
break;
case 'sqlite':
$dsn = $settings->_dbDriver.":".$settings->_dbDatabase;
if(file_exists('update-'.$_GET['version'].'/update-sqlite3.sql'))
$sqlfile = "update-sqlite3.sql";
break;
case 'pgsql':
$tmp = explode(":", $settings->_dbHostname);
$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
if(isset($tmp[1]))
$dsn .= ";port=".$tmp[1];
if(file_exists('update-'.$_GET['version'].'/update-postgres.sql'))
$sqlfile = "update-postgres.sql";
}
$db = new PDO($dsn, $settings->_dbUser, $settings->_dbPass);
if (!$db) {
die;
}
$errorMsg = '';
$res = $db->query('select * from tblVersion');
$recs = $res->fetchAll(PDO::FETCH_ASSOC);
if(!empty($recs)) {
$rec = $recs[0];
if($_GET['version'] > $rec['major'].'.'.$rec['minor'].'.'.$rec['subminor']) {
if(file_exists('update-'.$_GET['version'].'/'.$sqlfile)) {
$queries = file_get_contents('update-'.$_GET['version'].'/'.$sqlfile);
$queries = explode(";", $queries);
// execute queries
if($queries) {
echo "<h3>Updating database schema</h3>";
foreach($queries as $query) {
$query = trim($query);
if (!empty($query)) {
echo $query."<br />";
if(false === $db->exec($query)) {
$e = $db->ErrorInfo();
$errorMsg .= $e[2] . "<br/>";
}
}
}
}
} else {
echo "<p>SQL file for update missing!</p>";
}
} else {
echo "<p>Database schema already up to date.</p>";
}
if(!$errorMsg) {
if(file_exists('update-'.$_GET['version'].'/update.php')) {
echo "<h3>Running update script</h3>";
include('update-'.$_GET['version'].'/update.php');
}
} else {
echo "<h3>Error Messages</h3>";
echo $errorMsg;
}
echo "<p><a href=\"install.php\">Go back to installation and recheck.</a></p>";
} else {
echo "<p>Could not determine database schema version.</p>";
}
$db = null;
// just remove info for web page installation
$settings->_printDisclaimer = false;
$settings->_footNote = false;
// end of the page
$this->contentContainerEnd();
$this->contentEnd();
$this->htmlEndPage();
} /* }}} */
}

View File

@ -1,23 +1,22 @@
<?php
require_once('../inc/inc.Version.php');
$ver = new SeedDMS_Version();
define("SEEDDMS_INSTALL", "on");
define("SEEDDMS_VERSION", $ver->version());
include("../inc/inc.Settings.php");
$settings = new Settings();
$rootDir = realpath ("..");
$settings->_rootDir = $rootDir.'/';
if(file_exists($rootDir.'/../www'))
$rootDir = realpath($rootDir.'/..').'/www';
$settings->_rootDir = str_replace("\\", "/" , $rootDir).'/';
$settings->_language = 'en_GB';
$theme = "bootstrap";
include("../inc/inc.Language.php");
include "../languages/en_GB/lang.inc";
include("../inc/inc.ClassUI.php");
include("class.Install.php");
UI::htmlStartPage("INSTALL");
UI::globalBanner();
UI::contentStart();
UI::contentHeading("SeedDMS Installation...");
UI::contentContainerStart();
echo "<h2>".getMLText('settings_install_welcome_title')."</h2>";
echo "<div style=\"width: 600px;\">".getMLText('settings_install_welcome_text')."</div>";
echo '<p><a href="install.php">' . getMLText("settings_start_install") . '</a></p>';
UI::contentContainerEnd();
UI::contentEnd();
UI::htmlEndPage();
?>
$view = new SeedDMS_View_Install(array('settings'=>$settings, 'session'=>null, 'sitename'=>'SeedDMS', 'printdisclaimer'=>0, 'showmissingtranslations'=>0, 'absbaseprefix'=>'/', 'enabledropfolderlist'=>0, 'enablemenutasks'=>0));
$view->intro();

View File

@ -46,66 +46,6 @@ if (!file_exists("settings.xml.template_install")) {
exit;
}
/**
* Functions
*/
function openDBConnection($settings) { /* {{{ */
switch($settings->_dbDriver) {
case 'mysql':
case 'mysqli':
case 'mysqlnd':
case 'pgsql':
$tmp = explode(":", $settings->_dbHostname);
$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
if(isset($tmp[1]))
$dsn .= ";port=".$tmp[1];
break;
case 'sqlite':
$dsn = $settings->_dbDriver.":".$settings->_dbDatabase;
break;
}
$connTmp = new PDO($dsn, $settings->_dbUser, $settings->_dbPass);
return $connTmp;
} /* }}} */
function printError($error) { /* {{{ */
print "<div class=\"alert alert-error\">\n";
print $error;
print "</div>";
} /* }}} */
function printWarning($error) { /* {{{ */
print "<div class=\"install_warning\">";
print "Warning<br />";
print $error;
print "</div>";
} /* }}} */
function printCheckError($resCheck) { /* {{{ */
$hasError = false;
foreach($resCheck as $keyRes => $paramRes) {
if(isset($paramRes['type']) && $paramRes['type'] == 'error')
$hasError = true;
$errorMes = getMLText("settings_$keyRes"). " : " . getMLText("settings_".$paramRes["status"]);
if (isset($paramRes["currentvalue"]))
$errorMes .= "<br/> =&gt; " . getMLText("settings_currentvalue") . " : " . $paramRes["currentvalue"];
if (isset($paramRes["suggestionvalue"]))
$errorMes .= "<br/> =&gt; " . getMLText("settings_suggestionvalue") . " : " . $paramRes["suggestionvalue"];
if (isset($paramRes["suggestion"]))
$errorMes .= "<br/> =&gt; " . getMLText("settings_".$paramRes["suggestion"]);
if (isset($paramRes["systemerror"]))
$errorMes .= "<br/> =&gt; " . $paramRes["systemerror"];
if(isset($paramRes['type']) && $paramRes['type'] == 'error')
printError($errorMes);
else
printWarning($errorMes);
}
return $hasError;
} /* }}} */
function fileExistsInIncludePath($file) { /* {{{ */
$paths = explode(PATH_SEPARATOR, get_include_path());
$found = false;
@ -140,7 +80,7 @@ if (!$configDir) {
}
if (!file_exists($configDir."/ENABLE_INSTALL_TOOL")) {
echo "For installation of SeedDMS, you must create the file conf/ENABLE_INSTALL_TOOL";
echo "For installation of SeedDMS, you must create the file ".$configDir."/ENABLE_INSTALL_TOOL";
exit;
}
@ -156,23 +96,27 @@ $settings = new Settings();
$settings->load($configDir."/settings.xml");
$rootDir = realpath ("..");
$rootDir = str_replace ("\\", "/" , $rootDir) . "/";
$installPath = realpath ("install.php");
$installPath = str_replace ("\\", "/" , $installPath);
$tmpToDel = str_replace ($rootDir, "" , $installPath);
$httpRoot = str_replace ($tmpToDel, "" , $_SERVER["REQUEST_URI"]);
$httpRoot = str_replace ($tmpToDel, "" , $_SERVER["SCRIPT_NAME"]).'/';
/* Correct rootDir to ensure it points to 'www' instead of the versioned
* seeddms dir.
*/
if(file_exists($rootDir.'/../www'))
$rootDir = realpath($rootDir.'/..').'/www';
$rootDir = str_replace ("\\", "/" , $rootDir) . "/";
do {
$httpRoot = str_replace ("//", "/" , $httpRoot, $count);
} while ($count<>0);
if(!$settings->_rootDir)
$settings->_rootDir = $rootDir;
elseif(realpath ("..") != realpath($settings->_rootDir)) { // Fix rootDir if required
$msg = '';
if($rootDir != $settings->_rootDir) {
$msg = "Your Root directory has been modified to fit your installation path!";
$settings->_rootDir = realpath ("..")."/";
}
$settings->_rootDir = $rootDir;
if(!$settings->_contentDir) {
if(!$settings->_contentDir || !is_dir($settings->_contentDir)) {
$settings->_contentDir = realpath($settings->_rootDir."..") . '/data/';
$settings->_luceneDir = $settings->_contentDir . 'lucene/';
$settings->_stagingDir = $settings->_contentDir . 'staging/';
@ -183,6 +127,11 @@ if(!$settings->_contentDir) {
$settings->_cacheDir = $settings->_contentDir . 'cache/';
}
}
if($settings->_dbDriver == 'sqlite') {
if(!$settings->_dbDatabase || !file_exists($settings->_dbDatabase)) {
$settings->_dbDatabase = $settings->_contentDir.'content.db';
}
}
$settings->_httpRoot = $httpRoot;
if(isset($settings->_extraPath))
@ -195,327 +144,8 @@ $theme = "bootstrap";
include("../inc/inc.Language.php");
include "../languages/en_GB/lang.inc";
include("../inc/inc.ClassUI.php");
include("class.Install.php");
$view = new SeedDMS_View_Install(array('settings'=>$settings, 'session'=>null, 'sitename'=>'SeedDMS', 'printdisclaimer'=>0, 'showmissingtranslations'=>0, 'absbaseprefix'=>'/', 'enabledropfolderlist'=>0, 'enablemenutasks'=>0, 'configdir'=>$configDir));
$view->install($msg);
UI::htmlStartPage("INSTALL");
UI::globalBanner();
UI::contentStart();
UI::contentHeading("SeedDMS Installation for version ".SEEDDMS_VERSION);
if(isset($msg))
echo "<div class=\"alert alert-warning\">".$msg."</div>";
UI::contentContainerStart();
/**
* Show phpinfo
*/
if (isset($_GET['phpinfo'])) {
echo '<a href="install.php">' . getMLText("back") . '</a>';
phpinfo();
UI::contentContainerEnd();
UI::contentEnd();
UI::htmlEndPage();
exit();
}
/**
* check if ENABLE_INSTALL_TOOL shall be removed
*/
if (isset($_GET['disableinstall'])) { /* {{{ */
if(file_exists($configDir."/ENABLE_INSTALL_TOOL")) {
if(unlink($configDir."/ENABLE_INSTALL_TOOL")) {
echo getMLText("settings_install_disabled");
echo "<br/><br/>";
echo '<a href="../out/out.Settings.php">' . getMLText("settings_more_settings") .'</a>';
} else {
echo getMLText("settings_cannot_disable");
echo "<br/><br/>";
echo '<a href="install.php">' . getMLText("back") . '</a>';
}
} else {
echo getMLText("settings_cannot_disable");
echo "<br/><br/>";
echo '<a href="install.php">' . getMLText("back") . '</a>';
}
UI::contentContainerEnd();
UI::contentEnd();
UI::htmlEndPage();
exit();
} /* }}} */
/**
* Check System
*/
if (printCheckError( $settings->checkSystem())) { /* {{{ */
if (function_exists("apache_get_version")) {
echo "<br/>Apache version: " . apache_get_version();
}
echo "<br/>PHP version: " . phpversion();
echo "<br/>PHP include path: " . ini_get('include_path');
echo '<br/>';
echo '<br/>';
echo '<a href="' . $httpRoot . 'install/install.php">' . getMLText("refresh") . '</a>';
echo ' - ';
echo '<a href="' . $httpRoot . 'install/install.php?phpinfo">' . getMLText("version_info") . '</a>';
exit;
} /* }}} */
if (isset($_POST["action"])) $action=$_POST["action"];
else if (isset($_GET["action"])) $action=$_GET["action"];
else $action=NULL;
$showform = true;
if ($action=="setSettings") {
/**
* Get Parameters
*/
$settings->_rootDir = $_POST["rootDir"];
$settings->_httpRoot = $_POST["httpRoot"];
$settings->_contentDir = $_POST["contentDir"];
$settings->_luceneDir = $_POST["luceneDir"];
$settings->_stagingDir = $_POST["stagingDir"];
$settings->_cacheDir = $_POST["cacheDir"];
$settings->_extraPath = $_POST["extraPath"];
$settings->_dbDriver = $_POST["dbDriver"];
$settings->_dbHostname = $_POST["dbHostname"];
$settings->_dbDatabase = $_POST["dbDatabase"];
$settings->_dbUser = $_POST["dbUser"];
$settings->_dbPass = $_POST["dbPass"];
$settings->_coreDir = $_POST["coreDir"];
$settings->_luceneClassDir = $_POST["luceneClassDir"];
if(isset($settings->_extraPath))
ini_set('include_path', $settings->_extraPath. PATH_SEPARATOR .ini_get('include_path'));
/**
* Check Parameters, require version 3.3.x
*/
$hasError = printCheckError( $settings->check(substr(str_replace('.', '', SEEDDMS_VERSION), 0,2)));
if (!$hasError) {
// Create database
if (isset($_POST["createDatabase"])) {
$createOK = false;
$errorMsg = "";
$connTmp =openDBConnection($settings);
if ($connTmp) {
// read SQL file
if ($settings->_dbDriver=="mysql")
$queries = file_get_contents("create_tables-innodb.sql");
elseif($settings->_dbDriver=="sqlite")
$queries = file_get_contents("create_tables-sqlite3.sql");
elseif($settings->_dbDriver=="pgsql")
$queries = file_get_contents("create_tables-postgres.sql");
else
die();
// generate SQL query
$queries = explode(";", $queries);
// execute queries
foreach($queries as $query) {
// var_dump($query);
$query = trim($query);
if (!empty($query)) {
$connTmp->exec($query);
if ($connTmp->errorCode() != 0) {
$errorMsg .= $connTmp->errorInfo()[2] . "<br/>";
}
}
}
}
// error ?
if (empty($errorMsg))
$createOK = true;
$connTmp = null;
// Show error
if (!$createOK) {
echo $errorMsg;
$hasError = true;
}
} // create database
if (!$hasError) {
// Save settings
$settings->save();
$needsupdate = false;
$connTmp =openDBConnection($settings);
if ($connTmp) {
switch($settings->_dbDriver) {
case 'mysql':
case 'mysqli':
case 'mysqlnd':
case 'sqlite':
$sql = 'select * from `tblVersion`';
break;
case 'pgsql':
$sql = 'select * from "tblVersion"';
break;
}
$res = $connTmp->query($sql);
if($res) {
if($rec = $res->fetch(PDO::FETCH_ASSOC)) {
$updatedirs = array();
$d = dir(".");
while (false !== ($entry = $d->read())) {
if(preg_match('/update-([0-9.]*)/', $entry, $matches)) {
$updatedirs[] = $matches[1];
}
}
$d->close();
echo "Your current database schema has version ".$rec['major'].'.'.$rec['minor'].'.'.$rec['subminor'].". Please run all (if any)<br />of the update scripts below in the listed order.<br /><br />";
$connTmp = null;
if($updatedirs) {
asort($updatedirs);
foreach($updatedirs as $updatedir) {
if($updatedir > $rec['major'].'.'.$rec['minor'].'.'.$rec['subminor']) {
$needsupdate = true;
print "<h3>Database update to version ".$updatedir." needed</h3>";
if(file_exists('update-'.$updatedir.'/update.txt')) {
print "<p>Please read the comments on updating this version. <a href=\"update-".$updatedir."/update.txt\" target=\"_blank\">Read now</a></p>";
}
print "<p><a href=\"update.php?version=".$updatedir."\" class=\"btn btn-primary\">Run the update script</a>.</p>";
}
}
} else {
print "<p>Your current database is up to date.</p>";
}
}
if(!$needsupdate) {
echo getMLText("settings_install_success");
echo "<br/><br/>";
echo getMLText("settings_delete_install_folder");
echo "<br/><br/>";
echo '<a href="install.php?disableinstall=1">' . getMLText("settings_disable_install") . '</a>';
echo "<br/><br/>";
echo '<a href="../out/out.Settings.php">' . getMLText("settings_more_settings") .'</a>';
$showform = false;
}
} else {
print "<p>You does not seem to have a valid database. The table tblVersion is missing.</p>";
}
}
}
}
// Back link
echo '<br/>';
echo '<br/>';
// echo '<a href="' . $httpRoot . '/install/install.php">' . getMLText("back") . '</a>';
}
if($showform) {
/**
* Set parameters
*/
?>
<form action="install.php" method="post" enctype="multipart/form-data">
<input type="Hidden" name="action" value="setSettings">
<table>
<!-- SETTINGS - SYSTEM - SERVER -->
<tr ><td><b> <?php printMLText("settings_Server");?></b></td> </tr>
<tr title="<?php printMLText("settings_rootDir_desc");?>">
<td><?php printMLText("settings_rootDir");?>:</td>
<td><input type="text" name="rootDir" value="<?php echo $settings->_rootDir ?>" size="100" /></td>
</tr>
<tr title="<?php printMLText("settings_httpRoot_desc");?>">
<td><?php printMLText("settings_httpRoot");?>:</td>
<td><input type="text" name="httpRoot" value="<?php echo $settings->_httpRoot ?>" size="100" /></td>
</tr>
<tr title="<?php printMLText("settings_contentDir_desc");?>">
<td><?php printMLText("settings_contentDir");?>:</td>
<td><input type="text" name="contentDir" value="<?php echo $settings->_contentDir ?>" size="100" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_luceneDir_desc");?>">
<td><?php printMLText("settings_luceneDir");?>:</td>
<td><input type="text" name="luceneDir" value="<?php echo $settings->_luceneDir ?>" size="100" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_stagingDir_desc");?>">
<td><?php printMLText("settings_stagingDir");?>:</td>
<td><input type="text" name="stagingDir" value="<?php echo $settings->_stagingDir ?>" size="100" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_cacheDir_desc");?>">
<td><?php printMLText("settings_cacheDir");?>:</td>
<td><input type="text" name="cacheDir" value="<?php echo $settings->_cacheDir ?>" size="100" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_coreDir_desc");?>">
<td><?php printMLText("settings_coreDir");?>:</td>
<td><input type="text" name="coreDir" value="<?php echo $settings->_coreDir ?>" size="100" /></td>
</tr>
<tr title="<?php printMLText("settings_luceneClassDir_desc");?>">
<td><?php printMLText("settings_luceneClassDir");?>:</td>
<td><input type="text" name="luceneClassDir" value="<?php echo $settings->_luceneClassDir ?>" size="100" /></td>
</tr>
<tr title="<?php printMLText("settings_extraPath_desc");?>">
<td><?php printMLText("settings_extraPath");?>:</td>
<td><input type="text" name="extraPath" value="<?php echo $settings->_extraPath ?>" size="100" /></td>
</tr>
<!-- SETTINGS - SYSTEM - DATABASE -->
<tr ><td><b> <?php printMLText("settings_Database");?></b></td> </tr>
<tr title="<?php printMLText("settings_dbDriver_desc");?>">
<td><?php printMLText("settings_dbDriver");?>:</td>
<td><input type="text" name="dbDriver" value="<?php echo $settings->_dbDriver ?>" /></td>
</tr>
<tr title="<?php printMLText("settings_dbHostname_desc");?>">
<td><?php printMLText("settings_dbHostname");?>:</td>
<td><input type="text" name="dbHostname" value="<?php echo $settings->_dbHostname ?>" /></td>
</tr>
<tr title="<?php printMLText("settings_dbDatabase_desc");?>">
<td><?php printMLText("settings_dbDatabase");?>:</td>
<td><input type="text" name="dbDatabase" value="<?php echo $settings->_dbDatabase ?>" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_dbUser_desc");?>">
<td><?php printMLText("settings_dbUser");?>:</td>
<td><input type="text" name="dbUser" value="<?php echo $settings->_dbUser ?>" style="background:yellow" /></td>
</tr>
<tr title="<?php printMLText("settings_dbPass_desc");?>">
<td><?php printMLText("settings_dbPass");?>:</td>
<td><input name="dbPass" value="<?php echo $settings->_dbPass ?>" type="password" style="background:yellow" /></td>
</tr>
<tr><td></td></tr>
<tr><td></td></tr>
<tr>
<td><?php printMLText("settings_createdatabase");?>:</td>
<td><input name="createDatabase" type="checkbox" style="background:yellow"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="btn btn-primary" value="<?php printMLText("apply");?>" /></td>
</tr>
</table>
</form>
<?php
}
/*
*/
// just remove info for web page installation
$settings->_printDisclaimer = false;
$settings->_footNote = false;
// end of the page
UI::contentContainerEnd();
UI::contentEnd();
UI::htmlEndPage();
?>

View File

@ -51,7 +51,9 @@ ALTER TABLE `new_tblDocumentContent` RENAME TO `tblDocumentContent`;
CREATE TABLE `new_tblDocumentFiles` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`document` INTEGER NOT NULL default 0 REFERENCES `tblDocuments` (`id`),
`version` INTEGER unsigned NOT NULL default '0',
`userID` INTEGER NOT NULL default 0 REFERENCES `tblUsers` (`id`),
`public` INTEGER NOT NULL default '0',
`comment` text,
`name` varchar(150) default NULL,
`date` INTEGER default NULL,
@ -61,16 +63,12 @@ CREATE TABLE `new_tblDocumentFiles` (
`mimeType` varchar(100) NOT NULL default ''
) ;
INSERT INTO `new_tblDocumentFiles` SELECT * FROM `tblDocumentFiles`;
INSERT INTO `new_tblDocumentFiles` SELECT `id`, `document`, 0, `userID`, 0, `comment`, `name`, `date`, `dir`, `orgFileName`, `fileType`, `mimeType` FROM `tblDocumentFiles`;
DROP TABLE `tblDocumentFiles`;
ALTER TABLE `new_tblDocumentFiles` RENAME TO `tblDocumentFiles`;
ALTER TABLE `tblDocumentFiles` ADD COLUMN `version` INTEGER unsigned NOT NULL DEFAULT '0';
ALTER TABLE `tblDocumentFiles` ADD COLUMN `public` INTEGER unsigned NOT NULL DEFAULT '0';
CREATE TABLE `new_tblUsers` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`login` varchar(50) default NULL,

View File

@ -37,94 +37,7 @@ $theme = "bootstrap";
require_once("../inc/inc.Language.php");
include "../languages/en_GB/lang.inc";
require_once("../inc/inc.ClassUI.php");
include("class.Install.php");
UI::htmlStartPage('Database update');
UI::globalBanner();
UI::contentStart();
UI::contentHeading("SeedDMS Installation for version ".$_GET['version']);
UI::contentContainerStart();
$sqlfile = "update.sql";
switch($settings->_dbDriver) {
case 'mysql':
case 'mysqli':
case 'mysqlnd':
$tmp = explode(":", $settings->_dbHostname);
$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
if(isset($tmp[1]))
$dsn .= ";port=".$tmp[1];
break;
case 'sqlite':
$dsn = $settings->_dbDriver.":".$settings->_dbDatabase;
if(file_exists('update-'.$_GET['version'].'/update-sqlite3.sql'))
$sqlfile = "update-sqlite3.sql";
break;
case 'pgsql':
$tmp = explode(":", $settings->_dbHostname);
$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
if(isset($tmp[1]))
$dsn .= ";port=".$tmp[1];
if(file_exists('update-'.$_GET['version'].'/update-postgres.sql'))
$sqlfile = "update-postgres.sql";
}
$db = new PDO($dsn, $settings->_dbUser, $settings->_dbPass);
if (!$db) {
die;
}
$errorMsg = '';
$res = $db->query('select * from tblVersion');
$recs = $res->fetchAll(PDO::FETCH_ASSOC);
if(!empty($recs)) {
$rec = $recs[0];
if($_GET['version'] > $rec['major'].'.'.$rec['minor'].'.'.$rec['subminor']) {
if(file_exists('update-'.$_GET['version'].'/'.$sqlfile)) {
$queries = file_get_contents('update-'.$_GET['version'].'/'.$sqlfile);
$queries = explode(";", $queries);
// execute queries
if($queries) {
echo "<h3>Updating database schema</h3>";
foreach($queries as $query) {
$query = trim($query);
if (!empty($query)) {
echo $query."<br />";
if(false === $db->exec($query)) {
$e = $db->ErrorInfo();
$errorMsg .= $query.": ".$e[2] . "<br/>";
}
}
}
}
} else {
echo "<p>SQL file for update missing!</p>";
}
} else {
echo "<p>Database schema already up to date.</p>";
}
if(!$errorMsg) {
if(file_exists('update-'.$_GET['version'].'/update.php')) {
echo "<h3>Running update script</h3>";
include('update-'.$_GET['version'].'/update.php');
}
} else {
echo "<h3>Error Messages</h3>";
echo $errorMsg;
}
echo "<p><a href=\"install.php\" class=\"btn btn-primary\">Go back to installation and recheck.</a></p>";
} else {
echo "<p>Could not determine database schema version.</p>";
}
$db = null;
// just remove info for web page installation
$settings->_printDisclaimer = false;
$settings->_footNote = false;
// end of the page
UI::contentContainerEnd();
UI::contentEnd();
UI::htmlEndPage();
?>
$view = new SeedDMS_View_Install(array('settings'=>$settings, 'session'=>null, 'sitename'=>'SeedDMS', 'printdisclaimer'=>0, 'showmissingtranslations'=>0, 'absbaseprefix'=>'/', 'enabledropfolderlist'=>0, 'enablemenutasks'=>0));
$view->update();

View File

@ -125,7 +125,7 @@ default:
$user = $controller->getUser();
if (isset($referuri) && strlen($referuri)>0) {
header("Location: " . getBaseUrl() . "/" . $referuri);
header("Location: " . getBaseUrl() . $referuri);
}
else {
header("Location: ".$settings->_httpRoot.(isset($settings->_siteDefaultPage) && strlen($settings->_siteDefaultPage)>0 ? $settings->_siteDefaultPage : "out/out.ViewFolder.php?folderid=".($user->getHomeFolder() ? $user->getHomeFolder() : $settings->_rootFolderID)));

View File

@ -84,10 +84,14 @@ foreach($tasks as $task) {
if(method_exists($taskobj, 'execute')) {
if(!$task->getDisabled() && $task->isDue()) {
if($mode == 'run') {
echo get_class($task);
/* Schedule the next run right away to prevent a second execution
* of the task when the cron job of the scheduler is called before
* the last run was finished. The task itself can still be scheduled
* to fast, but this is up to the admin of seeddms.
*/
$task->updateLastNextRun();
if($taskobj->execute($task)) {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." successful.");
$task->updateLastNextRun();
} else {
add_log_line("Execution of task ".$task->getExtension()."::".$task->getTask()." failed, task has been disabled.", PEAR_LOG_ERR);
$task->setDisabled(1);

View File

@ -148,7 +148,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
} /* }}} */
function htmlAddHeader($head, $type='js') { /* {{{ */
$this->extraheader[$type] .= $head;
if($type == 'logo' || $type == 'favicon')
$this->extraheader[$type] = $head;
else
$this->extraheader[$type] .= $head;
} /* }}} */
function htmlAddJsHeader($script) { /* {{{ */
@ -178,7 +181,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
$tmp['action'] = 'webrootjs';
if(isset($tmp['formtoken']))
unset($tmp['formtoken']);
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.http_build_query($tmp).'"></script>'."\n";
if(!empty($this->params['class']))
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.http_build_query($tmp).'"></script>'."\n";
echo '<script src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/application.js"></script>'."\n";
if($this->params['enablemenutasks'] && isset($this->params['user']) && $this->params['user']) {
$this->addFooterJS('SeedDMSTask.run();');
@ -285,7 +289,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
echo "<div class=\"navbar navbar-inverse navbar-fixed-top\">\n";
echo " <div class=\"navbar-inner\">\n";
echo " <div class=\"container-fluid\">\n";
echo " <a href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$this->params['dms']->getRootFolder()->getId()."\">".(!empty($this->extraheader['logo']) ? '<img src="'.$this->extraheader['logo'].'">' : '<img src="'.$this->params['settings']->_httpRoot.'views/bootstrap/images/seeddms-logo.svg">')."</a>";
echo " <a href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".(!empty($this->params['dms']) ? $this->params['dms']->getRootFolder()->getId() : '1')."\">".(!empty($this->extraheader['logo']) ? '<img src="'.$this->extraheader['logo'].'">' : '<img src="'.$this->params['settings']->_httpRoot.'views/bootstrap/images/seeddms-logo.svg">')."</a>";
echo " <a class=\"brand\" href=\"".$this->params['settings']->_httpRoot."out/out.ViewFolder.php\">".(strlen($this->params['sitename'])>0 ? $this->params['sitename'] : "SeedDMS")."</a>\n";
echo " </div>\n";
echo " </div>\n";

View File

@ -108,17 +108,19 @@ class SeedDMS_View_EditAttributes extends SeedDMS_Theme_Style {
$this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, $version->getAttribute($attrdef)));
}
}
}
$arrs = $this->callHook('addDocumentContentAttributes', $version);
if(is_array($arrs)) {
foreach($arrs as $arr) {
$this->formField($arr[0], $arr[1], isset($arr[2]) ? $arr[2] : null);
$arrs = $this->callHook('addDocumentContentAttributes', $version);
if(is_array($arrs)) {
foreach($arrs as $arr) {
$this->formField($arr[0], $arr[1], isset($arr[2]) ? $arr[2] : null);
}
} elseif(is_string($arrs)) {
echo $arrs;
}
} elseif(is_string($arrs)) {
echo $arrs;
$this->contentContainerEnd();
$this->formSubmit("<i class=\"fa fa-save\"></i> ".getMLText('save'));
} else {
$this->warningMsg(getMLText('no_attributes_defined'));
}
$this->contentContainerEnd();
$this->formSubmit("<i class=\"fa fa-save\"></i> ".getMLText('save'));
?>
</form>
<?php

View File

@ -16,6 +16,11 @@
*/
//require_once("class.Bootstrap.php");
/**
* Include class to preview documents
*/
require_once("SeedDMS/Preview.php");
/**
* Class which outputs the html page for RemoveUserFromProcesses view
*

View File

@ -181,7 +181,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
$tmp['action'] = 'webrootjs';
if(isset($tmp['formtoken']))
unset($tmp['formtoken']);
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.http_build_query($tmp).'"></script>'."\n";
if(!empty($this->params['class']))
echo '<script src="'.$this->params['absbaseprefix'].'out/out.'.$this->params['class'].'.php?'.http_build_query($tmp).'"></script>'."\n";
echo '<script src="'.$this->params['settings']->_httpRoot.'views/'.$this->theme.'/styles/application.js"></script>'."\n";
if($this->params['enablemenutasks'] && isset($this->params['user']) && $this->params['user']) {
$this->addFooterJS('SeedDMSTask.run();');