diff --git a/config/dmsDefaults.php b/config/dmsDefaults.php index 2bbe897..c42ebd6 100644 --- a/config/dmsDefaults.php +++ b/config/dmsDefaults.php @@ -131,6 +131,7 @@ $default->owl_archiving_date_settings_table = "archiving_date_settings"; $default->owl_archiving_utilisation_settings_table = "archiving_utilisation_settings"; $default->owl_time_period_table = "time_period"; $default->owl_time_unit_lookup_table = "time_unit_lookup"; +$default->owl_archive_restoration_table = "archive_restoration_request"; $default->owl_status_table = "status_lookup"; // logo file that must reside inside lang/graphics directory @@ -168,7 +169,7 @@ $default->siteMap->addPage("modifyDocumentGenericMetaData", "/presentation/lookA $default->siteMap->addPage("archiveDocument", "/presentation/lookAndFeel/knowledgeTree/documentmanagement/archiving/archiveDocumentBL.php", "Manage Documents", User, "Archive Document", false); $default->siteMap->addPage("addDocumentArchiveSettings", "/presentation/lookAndFeel/knowledgeTree/documentmanagement/archiving/addArchiveSettingsBL.php", "Manage Documents", User, "Add Document Archive Settings", false); $default->siteMap->addPage("modifyDocumentArchiveSettings", "/presentation/lookAndFeel/knowledgeTree/documentmanagement/archiving/modifyArchiveSettingsBL.php", "Manage Documents", User, "Modify Document Archive Settings", false); - +$default->siteMap->addPage("requestDocumentRestore", "/presentation/lookAndFeel/knowledgeTree/documentmanagement/archiving/requestDocumentRestoreBL.php", "Manage Documents", User, "Request Document Restoration", false); $default->siteMap->addPage("addFolder", "/presentation/lookAndFeel/knowledgeTree/foldermanagement/addFolderBL.php", "Manage Documents", User, "Add A Folder"); $default->siteMap->addPage("addFolderDocType", "/presentation/lookAndFeel/knowledgeTree/foldermanagement/addFolderDocTypeBL.php", "Manage Documents", User, ""); diff --git a/lib/archiving/ArchiveRestorationRequest.inc b/lib/archiving/ArchiveRestorationRequest.inc new file mode 100644 index 0000000..78e10ec --- /dev/null +++ b/lib/archiving/ArchiveRestorationRequest.inc @@ -0,0 +1,251 @@ +, Jam Warehouse (Pty) Ltd, South Africa + * @package lib.archiving + */ + +class ArchiveRestorationRequest { + + /** + * The primary key + */ + var $iId; + /** + * The document to be restored + */ + var $iDocumentID; + /** + * The user requesting the restoration + */ + var $iRequestUserID; + /** + * The administrator to perform the restore + */ + var $iAdminUserID; + /** + * Timestamp + */ + var $dDateTime; + + /** + * Constructs an archive restoration request instance + * + * @param integer the document id + * @param integer the request user id + * @param integer the admin user id + */ + function ArchiveRestorationRequest($iNewDocumentID, $iNewRequestUserID, $iNewAdminUserID, $dNewDateTime = "") { + global $default; + + // primary key not set as this is not stored yet + $this->iId = -1; + $this->iDocumentID = $iNewDocumentID; + $this->iRequestUserID = $iNewRequestUserID; + $this->iAdminUserID = $iNewAdminUserID; + $this->dDateTime = strlen($dNewDateTime) == 0 ? getCurrentDateTime() : $dNewDateTime; + } + + /** + * Gets the primary key + */ + function getID(){ + return $this->iId; + } + + /** + * Gets the document id + */ + function getDocumentID(){ + return $this->iDocumentID; + } + + /** + * Sets the document id + * + * @param integer the new document id + */ + function setDocumentID($iNewDocumentID){ + $this->iDocumentID = $iNewDocumentID; + } + + /** + * Gets the request user + */ + function getRequestUserID(){ + return $this->iRequestUserID; + } + + /** + * Sets the request user + * + * @param integer the new user id + */ + function setRequestUserID($iNewRequestUserID){ + $this->iRequestUserID = $iNewRequestUserID; + } + + /** + * Gets the admin user + */ + function getAdminUserID(){ + return $this->iAdminUserID; + } + + /** + * Sets the admin user + * + * @param integer the new user id + */ + function setAdminUserID($iNewAdminUserID){ + $this->iAdminUserID = $iNewAdminUserID; + } + + /** + * Gets the datetime + */ + function getDateTime(){ + return $this->dDateTime; + } + + /** + * Sets the datetime + * + * @param datetime the new date time + */ + function setDateTime($dNewDateTime){ + $this->dDateTime = $dNewDateTime; + } + + /** + * Inserts the restoration request into the database + * + * @return boolean true on successful update, false otherwise + */ + function create(){ + global $default; + //if the id >= 0, then the object has already been created + if ($this->iId < 0) { + $sql = $default->db; + $result = $sql->query("INSERT INTO $default->owl_archive_restoration_table (document_id, request_user_id, admin_user_id, datetime) " . + "VALUES ($this->iDocumentID, $this->iRequestUserID, $this->iAdminUserID, '$this->dDateTime')"); + if ($result) { + //set the current primary key + $this->iId = $sql->insert_id(); + return true; + } + return false; + } + return false; + } + + /** + * Update the restoration request current values in the database + * + * @return boolean true on successful update, false otherwise + */ + function update(){ + global $default; + if ($this->iId >= 0) { + $sql = $default->db; + $sQuery = "UPDATE $default->owl_archive_restoration_table SET " . + "document_id = $this->iDocumentID, " . + "request_user_id = $this->iRequestUserID, " . + "admin_user_id = $this->iAdminUserID, " . + "datetime = '$this->dDateTime' " . + "WHERE id = $this->iId"; + $result = $sql->query($sQuery); + if ($result) { + return true; + } + return false; + } + return false; + } + + /** + * Delete the current restoration request from the database. Set the primary key to -1 + * on successful deletion + * + * @return boolean true and reset id to -1 on successful deletion, false otherwise + */ + function delete() { + global $default; + if ($this->iId >= 0) { + $sql = $default->db; + $result = $sql->query("DELETE FROM $default->owl_archive_restoration_table WHERE id = $this->iId"); + if ($result) { + $this->iId = -1; + return true; + } + return false; + } + return false; + } + + /** + * Static function. Given a document primary key will create + * a ArchiveRestorationRequest object and populate it with the corresponding + * database values + * + * @return ArchiveRestorationRequest populated ArchiveRestorationRequest object on success, false otherwise + */ + function & getFromDocumentID($iDocumentID) { + global $default; + $sql = $default->db; + $sql->query("SELECT * FROM $default->owl_archive_restoration_table WHERE document_id = $iDocumentID"); + if ($sql->next_record()) { + $oArchiveRestorationRequest = & new ArchiveRestorationRequest($sql->f("document_id"), $sql->f("request_user_id"), $sql->f("admin_user_id"), $sql->f("datetime")); + $oArchiveRestorationRequest->iId = $sql->f("id"); + return $oArchiveRestorationRequest; + } + return false; + } + + /** + * Static function. Given a news item primary key will create + * a ArchiveRestorationRequest object and populate it with the corresponding + * database values + * + * @return ArchiveRestorationRequest populated ArchiveRestorationRequest object on success, false otherwise + */ + function & get($iArchiveRestorationRequestID) { + global $default; + $sql = $default->db; + $sql->query("SELECT * FROM $default->owl_archive_restoration_table WHERE id = $iArchiveRestorationRequestID"); + if ($sql->next_record()) { + $oArchiveRestorationRequest = & new ArchiveRestorationRequest($sql->f("document_id"), $sql->f("request_user_id"), $sql->f("admin_user_id"), $sql->f("datetime")); + $oArchiveRestorationRequest->iId = $iArchiveRestorationRequestID; + return $oArchiveRestorationRequest; + } + return false; + } + + /** + * Static function + * Get a list of ArchiveRestorationRequest objects + * + * @param String Where clause (optional) + * @return Array array of ArchiveRestorationRequest objects, false otherwise + */ + function getList($sWhereClause = null) { + global $default; + $aArchiveRestorationRequestArray = array(); + $sql = $default->db; + $result = $sql->query("SELECT * FROM $default->owl_archive_restoration_table " . (isset($sWhereClause) ? " WHERE " . $sWhereClause : "")); + if ($result) { + while ($sql->next_record()) { + $aArchiveRestorationRequestArray[] = & new ArchiveRestorationRequest($sql->f("document_id"), $sql->f("request_user_id"), $sql->f("admin_user_id"), $sql->f("datetime")); + } + return $aArchiveRestorationRequestArray; + } + return false; + } +} \ No newline at end of file diff --git a/sql/tables.sql b/sql/tables.sql index ee156e8..470da16 100644 --- a/sql/tables.sql +++ b/sql/tables.sql @@ -7,6 +7,14 @@ lastused DATETIME, ip CHAR(30) ) TYPE = InnoDB; +CREATE TABLE archive_restoration_request ( +id INTEGER NOT NULL UNIQUE AUTO_INCREMENT, +document_id INTEGER NOT NULL, +request_user_id INTEGER NOT NULL, +admin_user_id INTEGER NOT NULL, +datetime DATETIME NOT NULL +) TYPE = InnoDB; + CREATE TABLE archiving_type_lookup ( id INTEGER NOT NULL UNIQUE AUTO_INCREMENT, name CHAR(100) diff --git a/sql/upgrade-alter.sql b/sql/upgrade-alter.sql index 0398a86..65db229 100644 --- a/sql/upgrade-alter.sql +++ b/sql/upgrade-alter.sql @@ -26,6 +26,14 @@ document_transaction_id INTEGER, time_period_id INTEGER ) TYPE = InnoDB; +CREATE TABLE archive_restoration_request ( +id INTEGER NOT NULL UNIQUE AUTO_INCREMENT, +document_id INTEGER NOT NULL, +request_user_id INTEGER NOT NULL, +admin_user_id INTEGER NOT NULL, +datetime DATETIME NOT NULL +) TYPE = InnoDB; + CREATE TABLE dependant_document_instance ( id INTEGER NOT NULL UNIQUE AUTO_INCREMENT, document_title TEXT NOT NULL, @@ -42,25 +50,6 @@ template_document_id INTEGER, group_folder_approval_link_id INTEGER ) TYPE = InnoDB; -CREATE TABLE discussion_threads ( -id INTEGER NOT NULL UNIQUE AUTO_INCREMENT, -document_id INTEGER NOT NULL, -first_comment_id INTEGER NOT NULL, -last_comment_id INTEGER NOT NULL, -views INTEGER NOT NULL, -replies INTEGER NOT NULL, -creator_id INTEGER NOT NULL -)TYPE = InnoDB; - -CREATE TABLE discussion_comments ( -id INTEGER NOT NULL UNIQUE AUTO_INCREMENT, -thread_id INTEGER NOT NULL, -user_id INTEGER NOT NULL, -subject TEXT, -body TEXT, -date datetime -)TYPE = InnoDB; - CREATE TABLE document_link ( id INTEGER NOT NULL UNIQUE AUTO_INCREMENT, parent_document_id INTEGER NOT NULL, @@ -80,17 +69,6 @@ archiving_settings_id INTEGER ALTER TABLE folders_users_roles_link ADD column dependant_documents_created bit; update folders_users_roles_link set dependant_documents_created = 1; -CREATE TABLE news ( -id INTEGER NOT NULL UNIQUE AUTO_INCREMENT, -synopsis VARCHAR(255) NOT NULL, -body TEXT, -rank INTEGER, -image TEXT, -image_size INTEGER, -image_mime_type_id INTEGER, -active BIT -) TYPE = InnoDB; - CREATE TABLE status_lookup ( id INTEGER NOT NULL UNIQUE AUTO_INCREMENT, name CHAR(255) diff --git a/tests/archiving/testSuite.php b/tests/archiving/testSuite.php index 2d00c5c..ff78199 100644 --- a/tests/archiving/testSuite.php +++ b/tests/archiving/testSuite.php @@ -17,7 +17,8 @@ require_once("../../config/dmsDefaults.php"); echo "
";
-$aClasses = array("archiving/DocumentArchiving" => array("DocumentID", "ArchivingTypeID", "ArchivingSettingsID"),
+$aClasses = array("archiving/ArchiveRestorationRequest" => array("DocumentID", "RequestUserID", "AdminUserID", "DateTime"),
+ "archiving/DocumentArchiving" => array("DocumentID", "ArchivingTypeID", "ArchivingSettingsID"),
"archiving/TimeUnit" => array("Name"),
"archiving/ArchivingType" => array("Name"),
"archiving/ArchivingUtilisationSettings" => array("DocumentTransactionID", "TimePeriodID"),
@@ -25,13 +26,15 @@ $aClasses = array("archiving/DocumentArchiving" => array("DocumentID", "Archivin
"archiving/ArchivingDateSettings" => array("ExpirationDate", "TimePeriodID"));
$aInitialValues = array("1,2,3",
+ "1,2,3",
"hour",
"\"blah's\"",
"5, 1",
"1, 10",
"'2002-10-10', 1");
-$aSetValues = array(array(9,8,7),
+$aSetValues = array(array(4,5,6,"2010-10-10"),
+ array(9,8,7),
array("minute"),
array("fooblar's"),
array(6,6),