diff --git a/lib/subscriptions/DocumentSubscription.inc b/lib/subscriptions/DocumentSubscription.inc new file mode 100644 index 0000000..6da00df --- /dev/null +++ b/lib/subscriptions/DocumentSubscription.inc @@ -0,0 +1,180 @@ +, Jam Warehouse (Pty) Ltd, South Africa + * + * @package lib.subscriptions + */ +class DocumentSubscription { + + /** + * Primary key + */ + var $iID; + /** + * The ID of the document subscribed to + */ + var $iDocumentID; + /** + * The ID of the user subscribed to the document + */ + var $iUserID; + + /** + * Creates a new document subscription object + * + * @param integer the document ID + * @param integer the user ID + */ + function DocumentSubscription($iDocumentID, $iUserID) { + //id of -1 means that the object has not yet been stored in the database + $this->iID = -1; + $this->iDocumentID = $iDocumentID; + $this->iUserID = $iUserID; + } + + /** + * Get the primary key of the current document subscription object + * + * @return integer primary key of document subscription + */ + function getID() { + return $this->iID; + } + + /** + * Get the primary key of the document. + * + * @return integer primary key of document + */ + function getDocumentID() { + return $this->iDocumentID; + } + + /** + * Set the document id + * + * @param integer new document primary key + */ + function setDocumentID($iNewValue) { + $this->iDocumentID = $iNewValue; + } + + /** + * Get the primary key of the user + * + * @return integer primary key of user + */ + function getUserID() { + return $this->iUserID; + } + + /** + * Set the user id + * + * @param integer new user primary key + */ + function setUserID($iNewValue) { + $this->iUserID = $iNewValue; + } + + /** + * Create the current document subscription in the database + * + * @return boolean true and set $this->iID with new primary key, false otherwise and set $_SESSION["errorMessage"] + */ + function create() { + global $default, $lang_err_database; $lang_err_object_exists; + //if the object has not already been stored + if ($this->iID < 0) { + $sql = $default->db; + $result = $sql->query("INSERT INTO " . $default->owl_document_subscriptions_table . " (user_id, document_id) " . + "VALUES ($this->iUserID, $this->iDocumentID)"); + if ($result) { + $this->iID = $sql->insert_id(); + return true; + } + $_SESSION["errorMessage"] = $lang_err_database; + return false; + } + $_SESSION["errorMessage"] = $lang_err_object_exists . "id = " . $this->iID . " table = document_subscriptions"; + return false; + } + + /** + * Update the current document subscription values in the database + * + * @return boolean true on successful update, false otherwise and set $_SESSION["errorMessage"] + */ + function update() { + global $default, $lang_err_database, $lang_err_object_key; + //can only update the object if it has already been stored + if ($this->iID >= 0) { + $sql = $default->db; + $result = $sql->query("UPDATE " . $default->owl_document_subscriptions_table . " SET " . + "user_id = $this->iUserID, " . + "document_id = $this->iDocumentID " . + "WHERE id = " . $this->iID); + if ($result) { + return true; + } + $_SESSION["errorMessage"] = $lang_err_database; + return false; + } + $_SESSION["errorMessage"] = $lang_err_object_key; + } + + + /** + * Delete the current object from the database + * + * @return boolean true and reset id to -1 on successful delete, false otherwise and set $_SESSION["errorMessage"] + */ + function delete() { + global $default, $lang_err_database, $lang_err_object_key; + if ($this->iID >= 0) { + $sql = $default->db; + $result = $sql->query("DELETE FROM " . $default->owl_document_subscriptions_table . " WHERE id = " . $this->iID); + if ($result) { + $this->iID = -1; + return true; + } + $_SESSION["errorMessage"] = $lang_err_database; + return false; + } + $_SESSION["errorMessage"] = $lang_err_object_key; + return false; + + } + + /** + * Static function. + * Given a document subscription primary key will create + * a document subscription object and populate it with the corresponding + * database values + * + * @param integer primary key of document subscription to get + * + * @return object document subscription object on successful retrieval, false otherwise and set $_SESSION["errorMessage"] + */ + function get($iDocumentSubscriptionID) { + global $default, $lang_err_object_not_exist; + $sql = $default->db; + $sql->query("SELECT * FROM " . $default->owl_document_subscriptions_table . " WHERE id = " . $iDocumentSubscriptionID); + if ($sql->next_record()) { + $oDocumentSubscription = & new DocumentSubscription($sql->f("document_id"), $sql->f("user_id")); + $oDocumentSubscription->iID = $iDocumentSubscriptionID; + return $oDocumentSubscription; + } + $_SESSION["errorMessage"] = $lang_err_object_not_exist . "id = " . $iDocumentSubscriptionID . " table = document_subscriptions"; + return false; + } +} +?> diff --git a/lib/subscriptions/FolderSubscription.inc b/lib/subscriptions/FolderSubscription.inc new file mode 100644 index 0000000..c316995 --- /dev/null +++ b/lib/subscriptions/FolderSubscription.inc @@ -0,0 +1,182 @@ +, Jam Warehouse (Pty) Ltd, South Africa + * + * @package lib.subscriptions + */ +class FolderSubscription { + + /** + * Primary key + */ + var $iID; + /** + * The ID of the folder subscribed to + */ + var $iFolderID; + /** + * The ID of the user subscribed to the folder + */ + var $iUserID; + + /** + * Creates a new folder subscription object + * + * @param integer the folder ID + * @param integer the user ID + */ + function FolderSubscription($iFolderID, $iUserID) { + //id of -1 means that the object has not yet been stored in the database + $this->iID = -1; + $this->iFolderID = $iFolderID; + $this->iUserID = $iUserID; + } + + /** + * Get the primary key of the current folder subscription object + * + * @return integer primary key of folder subscription + */ + function getID() { + return $this->iID; + } + + /** + * Get the primary key of the folder. + * + * @return integer primary key of folder + */ + function getFolderID() { + return $this->iFolderID; + } + + /** + * Set the folder id + * + * @param integer new folder primary key + */ + function setFolderID($iNewValue) { + $this->iFolderID = $iNewValue; + } + + /** + * Get the primary key of the user + * + * @return integer primary key of user + */ + function getUserID() { + return $this->iUserID; + } + + /** + * Set the user id + * + * @param integer new user primary key + */ + function setUserID($iNewValue) { + $this->iUserID = $iNewValue; + } + + /** + * Create the current folder subscription in the database + * + * @return boolean true and set $this->iID with new primary key, false otherwise and set $_SESSION["errorMessage"] + */ + function create() { + global $default, $lang_err_database; $lang_err_object_exists; + //if the object has not already been stored + if ($this->iID < 0) { + $sql = $default->db; + $result = $sql->query("INSERT INTO " . $default->owl_folder_subscriptions_table . " (user_id, folder_id) " . + "VALUES ($this->iUserID, $this->iFolderID)"); + if ($result) { + $this->iID = $sql->insert_id(); + // TODO: now create subscriptions for all the documents in this folder + return true; + } + $_SESSION["errorMessage"] = $lang_err_database; + return false; + } + $_SESSION["errorMessage"] = $lang_err_object_exists . "id = " . $this->iID . " table = folder_subscriptions"; + return false; + } + + /** + * Update the current folder subscription values in the database + * + * @return boolean true on successful update, false otherwise and set $_SESSION["errorMessage"] + */ + function update() { + global $default, $lang_err_database, $lang_err_object_key; + //can only update the object if it has already been stored + if ($this->iID >= 0) { + $sql = $default->db; + $result = $sql->query("UPDATE " . $default->owl_folder_subscriptions_table . " SET " . + "user_id = $this->iUserID, " . + "folder_id = $this->iFolderID " . + "WHERE id = " . $this->iID); + if ($result) { + return true; + } + $_SESSION["errorMessage"] = $lang_err_database; + return false; + } + $_SESSION["errorMessage"] = $lang_err_object_key; + } + + + /** + * Delete the current object from the database + * + * @return boolean true and reset id to -1 on successful delete, false otherwise and set $_SESSION["errorMessage"] + */ + function delete() { + global $default, $lang_err_database, $lang_err_object_key; + if ($this->iID >= 0) { + $sql = $default->db; + $result = $sql->query("DELETE FROM " . $default->owl_folder_subscriptions_table . " WHERE id = " . $this->iID); + if ($result) { + $this->iID = -1; + // TODO: remove all document subscriptions? + return true; + } + $_SESSION["errorMessage"] = $lang_err_database; + return false; + } + $_SESSION["errorMessage"] = $lang_err_object_key; + return false; + + } + + /** + * Static function. + * Given a folder subscription primary key will create + * a folder subscription object and populate it with the corresponding + * database values + * + * @param integer primary key of folder subscription to get + * + * @return object folder subscription object on successful retrieval, false otherwise and set $_SESSION["errorMessage"] + */ + function get($iFolderSubscriptionID) { + global $default, $lang_err_object_not_exist; + $sql = $default->db; + $sql->query("SELECT * FROM " . $default->owl_folder_subscriptions_table . " WHERE id = " . $iFolderSubscriptionID); + if ($sql->next_record()) { + $oFolderSubscription = & new FolderSubscription($sql->f("folder_id"), $sql->f("user_id")); + $oFolderSubscription->iID = $iFolderSubscriptionID; + return $oFolderSubscription; + } + $_SESSION["errorMessage"] = $lang_err_object_not_exist . "id = " . $iFolderSubscriptionID . " table = folder_subscriptions"; + return false; + } +} +?> diff --git a/tests/subscriptions/documentSubscription.php b/tests/subscriptions/documentSubscription.php new file mode 100644 index 0000000..d466866 --- /dev/null +++ b/tests/subscriptions/documentSubscription.php @@ -0,0 +1,73 @@ +owl_fs_root/lib/subscriptions/DocumentSubscription.inc"); + + echo "Testing creation of new document subscription object
"; + $oDocumentSubscription = & new DocumentSubscription(1, 1); + if (isset($oDocumentSubscription)) { + echo "Passed document subscription creation test

"; + + echo "Testing getting and setting of values

"; + + echo "Current value of primary key: " . $oDocumentSubscription->getID() . "
"; + echo "This value CANNOT be altered manually

"; + + echo "Current value of document subscription user id: " . $oDocumentSubscription->getUserID() . "
"; + echo "Setting document subscription user id to: 12
"; + $oDocumentSubscription->setUserID(12); + echo "New value of document subscription user id: " . $oDocumentSubscription->getUserID() . "

"; + + echo "Current value of document subscription document id: " . $oDocumentSubscription->getDocumentID() . "
"; + echo "Setting document subscription document id to 34
"; + $oDocumentSubscription->setDocumentID(34); + echo "New document subscription document id: " . $oDocumentSubscription->getDocumentID() . "

"; + + echo "Testing storing of object in database
"; + if ($oDocumentSubscription->create()) { + echo "Passed storing of object in database test

"; + + echo "Testing object updating
"; + if ($oDocumentSubscription->update()) { + echo "Passed object updating test

"; + + echo "Testing getting of object from database using primary key
"; + $oNewDocumentSubscription = & DocumentSubscription::get($oDocumentSubscription->getID()); + if (isset($oNewDocumentSubscription)) { + echo "
 " . arrayToString($oNewDocumentSubscription) . "

"; + echo "Passed getting of object from db using primary key

"; + + echo "Testing deletion of object from database
"; + if ($oDocumentSubscription->delete()) { + echo "Passed deletion of object from database test.

END OF UNIT TEST"; + } else { + echo "Failed deletion of object from database test"; + } + } else { + echo "Failed getting of object test.
Tests not run (a)deletion of object
"; + } + } else { + echo "Failed object updating test.
Tests not run (a)deletion of object (b)getting of object using id
"; + } + } else { + echo "Failed storing of object in database test.
Tests not run (a)updating of object (b)deletion of object (c)getting of object using id
"; + } + } else { + echo "Failed document subscription creation tests.
Tests not run: (a)setting/getting of values (b)storing of object (c)updating of object (d)deletion of object (e)getting of object using id
"; + } +} + +?> diff --git a/tests/subscriptions/folderSubscription.php b/tests/subscriptions/folderSubscription.php new file mode 100644 index 0000000..35c54fb --- /dev/null +++ b/tests/subscriptions/folderSubscription.php @@ -0,0 +1,73 @@ +owl_fs_root/lib/subscriptions/FolderSubscription.inc"); + + echo "Testing creation of new folder subscription object
"; + $oFolderSubscription = & new FolderSubscription(1, 1); + if (isset($oFolderSubscription)) { + echo "Passed folder subscription creation test

"; + + echo "Testing getting and setting of values

"; + + echo "Current value of primary key: " . $oFolderSubscription->getID() . "
"; + echo "This value CANNOT be altered manually

"; + + echo "Current value of folder subscription user id: " . $oFolderSubscription->getUserID() . "
"; + echo "Setting folder subscription user id to: 23
"; + $oFolderSubscription->setUserID(23); + echo "New value of folder subscription user id: " . $oFolderSubscription->getUserID() . "

"; + + echo "Current value of folder subscription folder id: " . $oFolderSubscription->getFolderID() . "
"; + echo "Setting folder subscription folder id to 56
"; + $oFolderSubscription->setFolderID(56); + echo "New folder subscription folder id: " . $oFolderSubscription->getFolderID() . "

"; + + echo "Testing storing of object in database
"; + if ($oFolderSubscription->create()) { + echo "Passed storing of object in database test

"; + + echo "Testing object updating
"; + if ($oFolderSubscription->update()) { + echo "Passed object updating test

"; + + echo "Testing getting of object from database using primary key
"; + $oNewFolderSubscription = & FolderSubscription::get($oFolderSubscription->getID()); + if (isset($oNewFolderSubscription)) { + echo "
 " . arrayToString($oNewFolderSubscription) . "

"; + echo "Passed getting of object from db using primary key

"; + + echo "Testing deletion of object from database
"; + if ($oFolderSubscription->delete()) { + echo "Passed deletion of object from database test.

END OF UNIT TEST"; + } else { + echo "Failed deletion of object from database test(" . $_SESSION["errorMessage"] . ")"; + } + } else { + echo "Failed getting of object test(" . $_SESSION["errorMessage"] . ").
Tests not run (a)deletion of object
"; + } + } else { + echo "Failed object updating test(" . $_SESSION["errorMessage"] . ").
Tests not run (a)deletion of object (b)getting of object using id
"; + } + } else { + echo "Failed storing of object in database test (" . $_SESSION["errorMessage"] . ").
Tests not run (a)updating of object (b)deletion of object (c)getting of object using id
"; + } + } else { + echo "Failed folder subscription creation tests(" . $_SESSION["errorMessage"] . ").
Tests not run: (a)setting/getting of values (b)storing of object (c)updating of object (d)deletion of object (e)getting of object using id
"; + } +} + +?>