From a58f48290a5fcd38c8fc9d223bd2dba147d5df65 Mon Sep 17 00:00:00 2001 From: Rachael Sewell Date: Tue, 12 Apr 2016 16:45:02 +0000 Subject: [PATCH] inc.ClassDMS.php - Added a new method to retrieve the next memo number given a user and fixed bug where the getDocumetnIDByNumber method wasn't updated for the new name in a mysql table column. inc.ClassFolder.php - Updated methodology to generate memo numbers. A new indexNumber column was added to tblMemoNumbers to contain the numeric portion of the memo number. The maximum value in the indexNumber column is found and 1 is added to it to automatically generate the next memo number. However, if a docNumber is passed in the addDocument method, it will be used instead only if it does not already exist. op.AddDocument.php - Added a check to get post data if set for the document number. If set, pass it to the addDocument method. class.AddDocument.php - Add an input to display the next memo number and allow user to modify it before submitting memo. class.Search.php - Removed status column. --- SeedDMS_Core/Core/inc.ClassDMS.php | 16 +++++++++++++++- SeedDMS_Core/Core/inc.ClassFolder.php | 22 ++++++++++++++-------- install/create_tables-innodb.sql | 1 + languages/en_GB/lang.inc | 1 + op/op.AddDocument.php | 8 +++++++- styles/bootstrap/application.css | 4 ++++ views/bootstrap/class.AddDocument.php | 6 ++++++ views/bootstrap/class.Search.php | 2 -- 8 files changed, 48 insertions(+), 12 deletions(-) diff --git a/SeedDMS_Core/Core/inc.ClassDMS.php b/SeedDMS_Core/Core/inc.ClassDMS.php index 6e7b15d..f8808aa 100644 --- a/SeedDMS_Core/Core/inc.ClassDMS.php +++ b/SeedDMS_Core/Core/inc.ClassDMS.php @@ -530,7 +530,7 @@ function getDocument($id) { /* {{{ */ function getDocumentIDByNumber($number) { /* {{{ */ if(!$number) return false; - $queryStr = "SELECT `document` AS `myDoc` FROM `tblMemoNumbers` WHERE `number`='".$number."' UNION SELECT `document` AS `myDoc` FROM `tblSpecNumbers` WHERE `number`='".$number."'"; + $queryStr = "SELECT `documentID` AS `myDoc` FROM `tblMemoNumbers` WHERE `number`='".$number."' UNION SELECT `documentID` AS `myDoc` FROM `tblSpecNumbers` WHERE `number`='".$number."'"; $resArr = $this->db->getResultArray($queryStr); if (is_bool($resArr) && !$resArr) @@ -548,6 +548,20 @@ function getDocumentsByUser($user) { /* {{{ */ return $user->getDocuments(); } /* }}} */ + /** + * Gets the next memo number for a given user. + * The return value does not include the + * user login string. + * + * @param int $userID + * @return int number of next memo + */ + function getNextMemoNum($userID) { + $queryStr = "SELECT MAX(indexNumber) AS num FROM tblMemoNumbers WHERE userID=".$userID; + $resArr = $this->db->getResultArray($queryStr); + return $resArr[0]["num"] + 1; + } + /** * Returns all documents locked by a given user * diff --git a/SeedDMS_Core/Core/inc.ClassFolder.php b/SeedDMS_Core/Core/inc.ClassFolder.php index 3bb5ea4..454c6bb 100644 --- a/SeedDMS_Core/Core/inc.ClassFolder.php +++ b/SeedDMS_Core/Core/inc.ClassFolder.php @@ -842,22 +842,28 @@ function addDocument($name, $comment, $expires, $owner, $keywords, $categories, } $memoID = $db->getInsertID(); // Get count of memos by user to generate the next doc num - $resArr = $db->getResultArray("SELECT COUNT(*) AS num FROM tblMemoNumbers WHERE userID=".$owner->getID()." FOR UPDATE"); - // Document indexes will start at 0 - $docIndex = (integer)$resArr[0]["num"]-1; + $resArr = $db->getResultArray("SELECT MAX(indexNumber) AS num FROM tblMemoNumbers WHERE userID=".$owner->getID()." FOR UPDATE"); + // Document indexes will start at 1 + $docIndex = (integer)$resArr[0]["num"] + 1; // Assemble the new document number in format: - $docNum = $owner->_login."-".$docIndex; - $queryStr = "UPDATE tblMemoNumbers SET number='".$docNum."' WHERE id=".$memoID; + $queryStr = "UPDATE tblMemoNumbers SET indexNumber='".$docIndex."', number='".$docNum."' WHERE id=".$memoID; if (!$db->getResult($queryStr)) { $db->rollbackTransaction(); return false; } } else { - // Allow adding previously created documents with existing numbers. - $queryStr = "INSERT INTO tblMemoNumbers (documentID, userID, number, parade) VALUES (".$document->getID().", ".$owner->getID().", ".$docNumber.", ".$paradeDoc.")"; - if (!$db->getResult($queryStr)) { - $db->rollbackTransaction(); + // Check for collisions with already existing numbers + $resArr = $db->getResultArray("SELECT COUNT(*) AS num FROM tblMemoNumbers WHERE number='" . $owner->_login. " . " . $docNumber . "' FOR UPDATE"); + if((integer)$resArr[0]["num"] != 0) { return false; + } else { + // Allow adding previously created documents with existing numbers. + $queryStr = "INSERT INTO tblMemoNumbers (documentID, userID, indexNumber, number, parade) VALUES (".$document->getID().", ".$owner->getID().", ".$docNumber.", \"" . $owner->_login . "-" . $docNumber. "\", ".$paradeDoc.")"; + if (!$db->getResult($queryStr)) { + $db->rollbackTransaction(); + return "2"; + } } } } diff --git a/install/create_tables-innodb.sql b/install/create_tables-innodb.sql index 36ef102..40d5dd5 100644 --- a/install/create_tables-innodb.sql +++ b/install/create_tables-innodb.sql @@ -359,6 +359,7 @@ CREATE TABLE `tblMemoNumbers` ( `id` int(11) NOT NULL auto_increment, `userID` int(11) NOT NULL default '0', `documentID` int(11) NOT NULL default '0', + `indexNumber` int(11) NOT NULL default '0', `number` varchar(150) default NULL, `parade` smallint(1) default '1', PRIMARY KEY (`id`), diff --git a/languages/en_GB/lang.inc b/languages/en_GB/lang.inc index 2c174d0..539f19e 100644 --- a/languages/en_GB/lang.inc +++ b/languages/en_GB/lang.inc @@ -700,6 +700,7 @@ URL: [url]', 'no_version_check' => 'Checking for a new version of SeedDMS has failed! This could be caused by allow_url_fopen being set to 0 in your php configuration.', 'no_version_modification' => 'No version modification', 'no_workflow_available' => 'No workflow available', +'number' => 'Number', 'objectcheck' => 'Folder/Document check', 'obsolete' => 'Obsolete', 'october' => 'October', diff --git a/op/op.AddDocument.php b/op/op.AddDocument.php index 950cab8..641f036 100644 --- a/op/op.AddDocument.php +++ b/op/op.AddDocument.php @@ -62,6 +62,12 @@ if($version_comment == "" && isset($_POST["use_comment"])) $version_comment = $comment; +if(isset($_POST['setDocNumber'])) { + $setDocNumber = $_POST['setDocNumber']; +} else { + $setDocNumber = null; +} + $keywords = $_POST["keywords"]; $categories = isset($_POST["categories"]) ? $_POST["categories"] : null; if(isset($_POST["attributes"])) @@ -309,7 +315,7 @@ $cats, $userfiletmp, basename($userfilename), $fileType, $userfiletype, $sequence, $reviewers, $approvers, $reqversion, - $version_comment, $attributes, $attributes_version, $workflow); + $version_comment, $attributes, $attributes_version, $workflow, $setDocNumber); if (is_bool($res) && !$res) { UI::exitError(getMLText("folder_title", array("foldername" => $folder->getName())),getMLText("error_occured")); diff --git a/styles/bootstrap/application.css b/styles/bootstrap/application.css index 3e2028a..83a5bb4 100644 --- a/styles/bootstrap/application.css +++ b/styles/bootstrap/application.css @@ -21,6 +21,10 @@ img.mimeicon { margin-bottom: 10px; } +.input-margin-correction { + margin-bottom: 0 !important; +} + .input-with-button { width: 85%; } diff --git a/views/bootstrap/class.AddDocument.php b/views/bootstrap/class.AddDocument.php index dd9df0e..9982711 100644 --- a/views/bootstrap/class.AddDocument.php +++ b/views/bootstrap/class.AddDocument.php @@ -209,6 +209,12 @@ function(data) { contentSubHeading(getMLText("document_infos")); ?> + + : + _login . " - " ?> + : diff --git a/views/bootstrap/class.Search.php b/views/bootstrap/class.Search.php index d8254a4..91e5e4c 100644 --- a/views/bootstrap/class.Search.php +++ b/views/bootstrap/class.Search.php @@ -451,7 +451,6 @@ function show() { /* {{{ */ print "".getMLText("doc_number")."\n"; print "".getMLText("name")."\n"; print "".getMLText("owner")."\n"; - print "".getMLText("status")."\n"; print "\n\n\n"; $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout); @@ -499,7 +498,6 @@ function show() { /* {{{ */ print htmlspecialchars($owner->getFullName()); $display_status=$lc->getStatus(); print ""; - print "".getOverallStatusText($display_status["status"]). ""; print "\n"; } } elseif(get_class($entry) == $dms->getClassname('folder')) {