diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php
index 286585c2b..105b05123 100644
--- a/SeedDMS_Core/Core/inc.ClassDocument.php
+++ b/SeedDMS_Core/Core/inc.ClassDocument.php
@@ -4110,7 +4110,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
if (is_bool($res) && !$res) {
return -1;
}
- $receiptID = $db->getInsertID();
+ $receiptID = $db->getInsertID('tblDocumentRecipients', 'receiptID');
}
else {
$receiptID = isset($indstatus["receiptID"]) ? $indstatus["receiptID"] : NULL;
@@ -4172,7 +4172,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
if (is_bool($res) && !$res) {
return -1;
}
- $receiptID = $db->getInsertID();
+ $receiptID = $db->getInsertID('tblDocumentRecipients', 'receiptID');
}
else {
$receiptID = isset($status["receiptID"]) ? $status["receiptID"] : NULL;
@@ -4260,7 +4260,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
if (is_bool($res) && !$res) {
return -1;
}
- $revisionID = $db->getInsertID();
+ $revisionID = $db->getInsertID('tblDocumentRevisors', 'revisionID');
} else {
$revisionID = isset($indstatus["revisionID"]) ? $indstatus["revisionID"] : NULL;
}
@@ -4338,7 +4338,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
if (is_bool($res) && !$res)
return -1;
else {
- $receiptLogID = $db->getInsertID();
+ $receiptLogID = $db->getInsertID('tblDocumentReceiptLog', 'receiptLogID');
return $receiptLogID;
}
} /* }}} */
@@ -4387,7 +4387,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
if (is_bool($res) && !$res)
return -1;
else {
- $receiptLogID = $db->getInsertID();
+ $receiptLogID = $db->getInsertID('tblDocumentReceiptLog', 'receiptLogID');
return $receiptLogID;
}
} /* }}} */
@@ -4469,7 +4469,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
if (is_bool($res) && !$res)
return -1;
else {
- $revisionLogID = $db->getInsertID();
+ $revisionLogID = $db->getInsertID('tblDocumentRevisionLog', 'revisionLogID');
return $revisionLogID;
}
} /* }}} */
diff --git a/SeedDMS_Core/Core/inc.ClassTransmittal.php b/SeedDMS_Core/Core/inc.ClassTransmittal.php
index e0bb86674..cd63cfbe0 100644
--- a/SeedDMS_Core/Core/inc.ClassTransmittal.php
+++ b/SeedDMS_Core/Core/inc.ClassTransmittal.php
@@ -255,7 +255,7 @@ class SeedDMS_Core_Transmittal {
if(!$res) {
return false;
}
- $itemID = $db->getInsertID();
+ $itemID = $db->getInsertID('tblTransmittalItems');
return SeedDMS_Core_TransmittalItem::getInstance($itemID, $this->_dms);
} /* }}} */
diff --git a/SeedDMS_Core/Core/inc.DBAccessPDO.php b/SeedDMS_Core/Core/inc.DBAccessPDO.php
index d59a4fd62..a1c8a3bce 100644
--- a/SeedDMS_Core/Core/inc.DBAccessPDO.php
+++ b/SeedDMS_Core/Core/inc.DBAccessPDO.php
@@ -266,8 +266,10 @@ class SeedDMS_Core_DatabaseAccess {
}
$res = $this->_conn->query($queryStr);
if ($res === false) {
- if($this->_debug)
+ if($this->_debug) {
echo "error: ".$queryStr."
";
+ print_r($this->_conn->errorInfo());
+ }
return false;
}
$resArr = $res->fetchAll(PDO::FETCH_ASSOC);
@@ -290,8 +292,10 @@ class SeedDMS_Core_DatabaseAccess {
}
$res = $this->_conn->exec($queryStr);
if($res === false) {
- if($this->_debug)
+ if($this->_debug) {
echo "error: ".$queryStr."
";
+ print_r($this->_conn->errorInfo());
+ }
return false;
} else
return true;
@@ -519,6 +523,14 @@ class SeedDMS_Core_DatabaseAccess {
"GROUP BY `tblDocumentReceiptLog`.`receiptID` ".
"ORDER BY `maxLogID`";
break;
+ case 'pgsql':
+ $queryStr = "CREATE TEMPORARY TABLE IF NOT EXISTS `ttreceiptid` (`receiptID` INTEGER, `maxLogID` INTEGER, PRIMARY KEY (`receiptID`);".
+ "INSERT INTO `ttreceiptid` SELECT `tblDocumentReceiptLog`.`receiptID`, ".
+ "MAX(`tblDocumentReceiptLog`.`receiptLogID`) AS `maxLogID` ".
+ "FROM `tblDocumentReceiptLog` ".
+ "GROUP BY `tblDocumentReceiptLog`.`receiptID` ".
+ "ORDER BY `maxLogID`";
+ break;
default:
$queryStr = "CREATE TEMPORARY TABLE IF NOT EXISTS `ttreceiptid` (PRIMARY KEY (`receiptID`), INDEX (`maxLogID`)) ".
"SELECT `tblDocumentReceiptLog`.`receiptID`, ".
@@ -552,6 +564,14 @@ class SeedDMS_Core_DatabaseAccess {
"GROUP BY `tblDocumentRevisionLog`.`revisionID` ".
"ORDER BY `maxLogID`";
break;
+ case 'pgsql':
+ $queryStr = "CREATE TEMPORARY TABLE IF NOT EXISTS `ttrevisionid` (`revisionID` INTEGER, `maxLogID` INTEGER, PRIMARY KEY (`revisionID`));".
+ "INSERT INTO `ttrevisionid` SELECT `tblDocumentRevisionLog`.`revisionID`, ".
+ "MAX(`tblDocumentRevisionLog`.`revisionLogID`) AS `maxLogID` ".
+ "FROM `tblDocumentRevisionLog` ".
+ "GROUP BY `tblDocumentRevisionLog`.`revisionID` ".
+ "ORDER BY `maxLogID`";
+ break;
default:
$queryStr = "CREATE TEMPORARY TABLE IF NOT EXISTS `ttrevisionid` (PRIMARY KEY (`revisionID`), INDEX (`maxLogID`)) ".
"SELECT `tblDocumentRevisionLog`.`revisionID`, ".
diff --git a/install/create_tables-postgres.sql b/install/create_tables-postgres.sql
index 1d72069a6..067d2afa8 100644
--- a/install/create_tables-postgres.sql
+++ b/install/create_tables-postgres.sql
@@ -44,6 +44,22 @@ CREATE TABLE "tblAttributeDefinitions" (
-- --------------------------------------------------------
--
+<<<<<<< HEAD
+=======
+-- Table structure for table `tblUsers`
+--
+
+CREATE TABLE "tblRoles" (
+ "id" SERIAL UNIQUE,
+ "name" varchar(50) default NULL,
+ "role" INTEGER NOT NULL default '0',
+ "noaccess" varchar(30) NOT NULL default ''
+) ;
+
+-- --------------------------------------------------------
+
+--
+>>>>>>> seeddms-6.0.x-postgres
-- Table structure for table "tblUsers"
--
@@ -51,6 +67,10 @@ CREATE TABLE "tblUsers" (
"id" SERIAL UNIQUE,
"login" varchar(50) default NULL,
"pwd" varchar(50) default NULL,
+<<<<<<< HEAD
+=======
+ "secret" varchar(50) default NULL,
+>>>>>>> seeddms-6.0.x-postgres
"fullName" varchar(100) default NULL,
"email" varchar(70) default NULL,
"language" varchar(32) NOT NULL,
@@ -61,7 +81,11 @@ CREATE TABLE "tblUsers" (
"pwdExpiration" TIMESTAMP default NULL,
"loginfailures" INTEGER NOT NULL default '0',
"disabled" INTEGER NOT NULL default '0',
+<<<<<<< HEAD
"quota" BIGINT,
+=======
+ "quota" INTEGER,
+>>>>>>> seeddms-6.0.x-postgres
"homefolder" INTEGER default NULL,
UNIQUE ("login")
);
@@ -69,6 +93,21 @@ CREATE TABLE "tblUsers" (
-- --------------------------------------------------------
--
+<<<<<<< HEAD
+=======
+-- Table structure for table `tblUserSubstitutes`
+--
+
+CREATE TABLE "tblUserSubstitutes" (
+ "id" SERIAL UNIQUE,
+ "user" INTEGER NOT NULL default '0' REFERENCES "tblUsers" ("id") ON DELETE CASCADE,
+ "substitute" INTEGER NOT NULL default '0' REFERENCES "tblUsers" ("id") ON DELETE CASCADE
+);
+
+-- --------------------------------------------------------
+
+--
+>>>>>>> seeddms-6.0.x-postgres
-- Table structure for table "tblUserPasswordRequest"
--
@@ -102,7 +141,11 @@ CREATE TABLE "tblUserImages" (
"id" SERIAL UNIQUE,
"userID" INTEGER NOT NULL default '0' REFERENCES "tblUsers" ("id") ON DELETE CASCADE,
"image" TEXT NOT NULL,
+<<<<<<< HEAD
"mimeType" varchar(100) NOT NULL default ''
+=======
+ "mimeType" varchar(10) NOT NULL default ''
+>>>>>>> seeddms-6.0.x-postgres
) ;
-- --------------------------------------------------------
@@ -225,6 +268,7 @@ CREATE TABLE "tblDocumentContent" (
"mimeType" varchar(100) NOT NULL default '',
"fileSize" BIGINT,
"checksum" char(32),
+ "revisiondate" TIMESTAMP default NULL,
UNIQUE ("document","version")
) ;
@@ -290,6 +334,21 @@ CREATE TABLE "tblDocumentLocks" (
-- --------------------------------------------------------
+--
+-- Table structure for table `tblDocumentCheckOuts`
+--
+
+CREATE TABLE "tblDocumentCheckOuts" (
+ "document" INTEGER REFERENCES "tblDocuments" ("id") ON DELETE CASCADE,
+ "version" INTEGER NOT NULL default '0',
+ "userID" INTEGER NOT NULL default '0' REFERENCES "tblUsers" ("id"),
+ "date" TEXT NOT NULL,
+ "filename" varchar(255) NOT NULL default '',
+ UNIQUE ("document")
+) ;
+
+-- --------------------------------------------------------
+
--
-- Table structure for table "tblDocumentReviewers"
--
@@ -320,6 +379,67 @@ CREATE TABLE "tblDocumentReviewLog" (
-- --------------------------------------------------------
+--
+-- Table structure for table `tblDocumentRecipients`
+--
+
+CREATE TABLE "tblDocumentRecipients" (
+ "receiptID" SERIAL UNIQUE,
+ "documentID" INTEGER NOT NULL default '0' REFERENCES "tblDocuments" ("id") ON DELETE CASCADE,
+ "version" INTEGER NOT NULL default '0',
+ "type" INTEGER NOT NULL default '0',
+ "required" INTEGER NOT NULL default '0',
+ UNIQUE ("documentID","version","type","required")
+) ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table "tblDocumentReceiptLog"
+--
+
+CREATE TABLE "tblDocumentReceiptLog" (
+ "receiptLogID" SERIAL UNIQUE,
+ "receiptID" INTEGER NOT NULL default 0 REFERENCES "tblDocumentRecipients" ("receiptID") ON DELETE CASCADE,
+ "status" INTEGER NOT NULL default 0,
+ "comment" TEXT NOT NULL,
+ "date" TEXT NOT NULL,
+ "userID" INTEGER NOT NULL default 0 REFERENCES "tblUsers" ("id") ON DELETE CASCADE
+) ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `tblDocumentRevisors`
+--
+
+CREATE TABLE "tblDocumentRevisors" (
+ "revisionID" SERIAL UNIQUE,
+ "documentID" INTEGER NOT NULL default '0' REFERENCES "tblDocuments" ("id") ON DELETE CASCADE,
+ "version" INTEGER NOT NULL default '0',
+ "type" INTEGER NOT NULL default '0',
+ "required" INTEGER NOT NULL default '0',
+ "startdate" TIMESTAMP default NULL,
+ UNIQUE ("documentID","version","type","required")
+) ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table "tblDocumentRevisionLog"
+--
+
+CREATE TABLE "tblDocumentRevisionLog" (
+ "revisionLogID" SERIAL UNIQUE,
+ "revisionID" INTEGER NOT NULL default 0 REFERENCES "tblDocumentRevisors" ("revisionID") ON DELETE CASCADE,
+ "status" INTEGER NOT NULL default 0,
+ "comment" TEXT NOT NULL,
+ "date" TIMESTAMP default NULL,
+ "userID" INTEGER NOT NULL default 0 REFERENCES "tblUsers" ("id") ON DELETE CASCADE
+) ;
+
+-- --------------------------------------------------------
+
--
-- Table structure for table "tblDocumentStatus"
--
@@ -514,7 +634,8 @@ CREATE TABLE "tblWorkflowActions" (
CREATE TABLE "tblWorkflows" (
"id" SERIAL UNIQUE,
"name" text NOT NULL,
- "initstate" INTEGER NOT NULL REFERENCES "tblWorkflowStates" ("id") ON DELETE CASCADE
+ "initstate" INTEGER NOT NULL REFERENCES "tblWorkflowStates" ("id") ON DELETE CASCADE,
+ "layoutdata" text default NULL
) ;
-- --------------------------------------------------------
@@ -603,6 +724,82 @@ CREATE TABLE "tblWorkflowMandatoryWorkflow" (
-- --------------------------------------------------------
+--
+-- Table structure for transmittal
+--
+
+CREATE TABLE "tblTransmittals" (
+ "id" SERIAL UNIQUE,
+ "name" text NOT NULL,
+ "comment" text NOT NULL,
+ "userID" INTEGER NOT NULL default '0' REFERENCES "tblUsers" ("id") ON DELETE CASCADE,
+ "date" TIMESTAMP default NULL,
+ "public" INTEGER NOT NULL default '0'
+);
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for transmittal item
+--
+
+CREATE TABLE "tblTransmittalItems" (
+ "id" SERIAL UNIQUE,
+ "transmittal" INTEGER NOT NULL DEFAULT '0' REFERENCES "tblTransmittals" ("id") ON DELETE CASCADE,
+ "document" INTEGER default NULL REFERENCES "tblDocuments" ("id") ON DELETE CASCADE,
+ "version" INTEGER NOT NULL default '0',
+ "date" TIMESTAMP default NULL,
+ UNIQUE (transmittal, document, version)
+);
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for access request objects
+--
+
+CREATE TABLE "tblAros" (
+ "id" SERIAL UNIQUE,
+ "parent" INTEGER,
+ "model" TEXT NOT NULL,
+ "foreignid" INTEGER NOT NULL DEFAULT '0',
+ "alias" TEXT
+) ;
+
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for access control objects
+--
+
+CREATE TABLE "tblAcos" (
+ "id" SERIAL UNIQUE,
+ "parent" INTEGER,
+ "model" TEXT NOT NULL,
+ "foreignid" INTEGER NOT NULL DEFAULT '0',
+ "alias" TEXT
+) ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for acos/aros relation
+--
+
+CREATE TABLE "tblArosAcos" (
+ "id" SERIAL UNIQUE,
+ "aro" INTEGER NOT NULL DEFAULT '0' REFERENCES "tblAros" ("id") ON DELETE CASCADE,
+ "aco" INTEGER NOT NULL DEFAULT '0' REFERENCES "tblAcos" ("id") ON DELETE CASCADE,
+ "create" INTEGER NOT NULL DEFAULT '-1',
+ "read" INTEGER NOT NULL DEFAULT '-1',
+ "update" INTEGER NOT NULL DEFAULT '-1',
+ "delete" INTEGER NOT NULL DEFAULT '-1',
+ UNIQUE (aco, aro)
+) ;
+
+-- --------------------------------------------------------
+
--
-- Table structure for version
--
@@ -620,10 +817,16 @@ CREATE TABLE "tblVersion" (
-- Initial content for database
--
-INSERT INTO "tblUsers" VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 'Administrator', 'address@server.com', '', '', '', 1, 0, NULL, 0, 0, 0, NULL);
+INSERT INTO "tblRoles" ("id", "name", "role") VALUES (1, 'Admin', 1);
+SELECT nextval('"tblRoles_id_seq"');
+INSERT INTO "tblRoles" ("id", "name", "role") VALUES (2, 'Guest', 2);
+SELECT nextval('"tblRoles_id_seq"');
+INSERT INTO "tblRoles" ("id", "name", "role") VALUES (3, 'User', 0);
+SELECT nextval('"tblRoles_id_seq"');
+INSERT INTO "tblUsers" VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', '', 'Administrator', 'address@server.com', '', '', '', 1, 0, NULL, 0, 0, 0, NULL);
SELECT nextval('"tblUsers_id_seq"');
-INSERT INTO "tblUsers" VALUES (2, 'guest', NULL, 'Guest User', NULL, '', '', '', 2, 0, NULL, 0, 0, 0, NULL);
+INSERT INTO "tblUsers" VALUES (2, 'guest', NULL, '', 'Guest User', NULL, '', '', '', 2, 0, NULL, 0, 0, 0, NULL);
SELECT nextval('"tblUsers_id_seq"');
INSERT INTO "tblFolders" VALUES (1, 'DMS', 0, '', 'DMS root', extract(epoch from now()), 1, 0, 2, 0);
SELECT nextval('"tblFolders_id_seq"');
-INSERT INTO "tblVersion" VALUES (CURRENT_TIMESTAMP, 5, 0, 0);
+INSERT INTO "tblVersion" VALUES (CURRENT_TIMESTAMP, 5, 1, 0);
diff --git a/utils/xmlimport.php b/utils/xmlimport.php
index 34585d1d5..261bf279c 100644
--- a/utils/xmlimport.php
+++ b/utils/xmlimport.php
@@ -232,6 +232,7 @@ function insert_role($role) { /* {{{ */
$logger->err("Could not add role");
return false;
}
+ /*
if($aro = SeedDMS_Aro::getInstance($newRole, $dms)) {
$logger->info("Added aro");
if($role['acos']) {
@@ -253,6 +254,7 @@ function insert_role($role) { /* {{{ */
$logger->err("Could not add Aro");
return false;
}
+ */
} else {
$newRole = null;
}
@@ -1854,6 +1856,7 @@ require_once("SeedDMS/Core.php");
$db = new SeedDMS_Core_DatabaseAccess($settings->_dbDriver, $settings->_dbHostname, $settings->_dbUser, $settings->_dbPass, $settings->_dbDatabase);
$db->connect() or die ("Could not connect to db-server \"" . $settings->_dbHostname . "\"");
+$db->_debug = 1;
$dms = new SeedDMS_Core_DMS($db, $settings->_contentDir.$settings->_contentOffsetDir);
if(!$settings->_doNotCheckDBVersion && !$dms->checkVersion()) {