5.1.29 (2022-11-21) --------------------- - SeedDMS_Core_Folder::addDocument() does rollback transaction propperly when setting document categories fail - add $skiproot and $sep parameter to SeedDMS_Core_Folder::getFolderPathPlain() - add class name for 'documentfile' - add method SeedDMS_Core_KeywordCategory::countKeywordLists() 5.1.28 (2022-11-07) --------------------- - fix SeedDMS_Core_User::getDocumentContents() - fix SeedDMS_Core_File::fileExtension() - SeedDMS_Core_DMS::createPasswordRequest() creates a cryptographically secure hash - fix sql error when deleting a folder attribute - add SeedDMS_Core_Attribute::getParsedValue() and use it in SeedDMS_Core_Object::getAttributeValue() - add SeedDMS_Core_DMS::getDuplicateSequenceNo() and SeedDMS_Core_Folder::reorderDocuments() - add SeedDMS_Core_File::mimetype(), fix SeedDMS_Core_File::moveDir() - all file operations use methods of SeedDMS_Core_File - change namespace of iterators from SeedDMS to SeedDMS\Core 5.1.27 (2022-08-31) --------------------- - fix SeedDMS_Core_DMS::addAttributeDefinition() when objtype is 0 - sort search result even if sortorder is 'i' or 'n' - pass an array as an attribute to search() will OR each element 5.1.26 (2022-05-20) --------------------- - fix validating multi value attributes - SeedDMS_Core_User::removeFromProcesses() can be limited to a list of documents. In that case only the last version will be modified. - add more types to getStatisticalData() - add optional parameter $op to SeedDMS_Core_AttributeDefinition::getObjects() - SeedDMS_Core_AttributeDefinition::getObjects() will not filter by value if null is passed - SeedDMS_Core_DMS::getAllAttributeDefinitions() has second parameter to filter attributes by type 5.1.25 (2022-04-22) --------------------- - rename getLastWorkflowTransition() to getLastWorkflowLog() - getLastWorkflowLog() returns a workflow entry even if the workflow has ended - backport setFileType() from 6.0.x - add SeedDMS_Core_File::fileExtension() - add callbacks on onPostUpdateAttribute, onPostRemoveAttribute, onPostAddAttribute - fix searching for document content with a custom attribute having a value set 5.1.24 (2021-12-11) --------------------- - in SeedDMS_Core_DocumentContent::removeWorkflow() remove records from tblWorklflowLog before tblDWorkflowDocumentContent - make all class variables of SeedDMS_Core_User protected - fix various errors in SeedDMS_Core_AttributeDefinition::validate() - add lots of unit tests - replace incorrect use of array_search() by in_array() - move method SeedDMS_Core_DMS::createDump() into SeedDMS_Core_DatabaseAccess - lots of parameter checking when calling methods() - make sure callbacks are callable - SeedDMS_Core_Folder::getParent() returns null if there is no parent (used to be false) - SeedDMS_Core_DMS::search() will not find document without an expiration date anymore, if the search is limited by an expiration end date but no start date - add method SeedDMS_Core_Folder::getFoldersMinMax() - init internal cache variables of SeedDMS_Core_Folder/SeedDMS_Core_Document and add method clearCache() - SeedDMS_Core_Folder::hasDocuments() does not use the interal document cache anymore - SeedDMS_Core_Document::addDocumentLink() returns an object of type SeedDMS_Core_DocumentLink in case of success - trim email, comment, language, theme when setting data of user - more checks whether an id > 0 when getting a database record 5.1.23 (2021-08-19) --------------------- - SeedDMS_Core_DMS::getTimeline() uses status log instead of document content - add methods SeedDMS_Core_DocumentContent::getReviewers() and SeedDMS_Core_DocumentContent::getApprovers() - add methods SeedDMS_Core_DocumentContent::getApproveLog() and SeedDMS_Core_DocumentContent::getReviewLog() - better handling of document with an empty workflow state - fix checking of email addresses by using filter_var instead of regex - add new method SeedDMS_Core_Document::hasCategory() - add new method SeedDMS_Core_DocumentContent::removeReview() - add new method SeedDMS_Core_DocumentContent::removeApproval() - add new method SeedDMS_Core_User::getFolders() - add new method SeedDMS_Core_User::getDocumentContents() - add new method SeedDMS_Core_User::getDocumentFiles() - add new method SeedDMS_Core_User::getDocumentLinks() - add new type 'foldersperuser' to method SeedDMS_Core_DMS::getStatisticalData() 5.1.22 (2021-03-15) --------------------- - add SeedDMS_Core_DatabaseAccess::hasTable() - add SeedDMS_Core_User->isType() and SeedDMS_Core_Group->isType() - add SeedDMS_Core_User->getDMS() and SeedDMS_Core_Group->getDMS() - add new parameter to SeedDMS_Core_DMS->getDocumentList() for skipping expired documents - add parameter $incdisabled to SeedDMS_Core_Folder::getNotifyList() - do not validate value in SeedDMS_Core_Attribute::setValue(), it should have been done before - SeedDMS_Core_DMS::search() can search for last date of document status change - smarter caching in SeedDMS_Core_Document::getDocumentFiles() which fixes a potential problem when removing a document 5.1.21 (2020-09-29) --------------------- - SeedDMS_Folder_DMS::getAccessList() and getDefaultAccess() do not return fals anymore if the parent does not exists. They just stop inheritance. - pass attribute value to callback 'onAttributeValidate' - new paramter 'new' of methode SeedDMЅ_Core_AttributeDefinition::validate() - check if folder/document is below rootDir can be turned on (default off) - SeedDMS_Core_User::setHomeFolder() can be used to unset the home folder - check if attribute definition exists when setting attributes of folders and documents 5.1.20 (2020-09-29) --------------------- - SeedDMS_Core_DMS::getDocumentList() returns false, if an unknown list is passed - SeedDMS_Core_Document::getDocumentFiles() has new parameter to select only those files attached to a specific version of the document - removing a document version will not remove attachments of the document anymore - set dms of new user instances in SeedDMS_Core_Group 5.1.19 (2020-07-30) --------------------- - add method SeedDMS_Core_Document::setParent() as an alias for setFolder() - clear the save content list and latest content in SeedDMS_Core_Document after a version has been deleted. - new method SeedDMS_Core_Document::isLatestVersion() - add new attribute types 'document', 'folder', 'user', 'group' 5.1.18 (2020-05-28) --------------------- - fixed remaining todos - fixed parsing of file size in SeedDMS_Core_File::parse_filesize() - fix SeedDMS_Core_DMS::getDocumentByOriginalFilename() 5.1.17 (2020-05-22) --------------------- - add new callback onSetStatus - fix SeedDMS_Core_DMS::getExpiredDocuments(), sql statement failed because temp. tables were not created - add parameters $orderdir, $orderby, $update to SeedDMS_Core::getExpiredDocuments() 5.1.16 (2020-04-14) --------------------- - fix call of hooks in SeedDMS_Core - add variable lasterror in SeedDMS_Core_DMS which can be set by hooks to pass an error msg to the calling application - better error checking in SeedDMS_Core_Document::addDocumentFile() 5.1.15 (2020-03-02) --------------------- - no changes, just keep same version as seeddms application 5.1.14 (2020-02-17) --------------------- - speed up SeedDMS_Core_Folder::getSubFolders() SeedDMS_Core_Folder::getDocuments() by minimizing the number of sql queries. 5.1.13 (2019-09-06) --------------------- - add decorators - add new methods SeedDMS_Core_Document::isType(), SeedDMS_Core_Folder::isType(), SeedDMS_Core_DocumentContent::isType(). Use them instead of checking the class name. - skip a fileType with just a '.' 5.1.12 (2019-07-01) --------------------- - parameter $orderby passed to SeedDMS_Core_Folder::getDocuments() and SeedDMS_Core_Folder::getSubFolders() can be a string, but only the first char is evaluated - SeedDMS_Core_DMS::search() excepts parameters as array, added orderby - add SeedDMS_Core_Folder::hasSubFolderByName() - fix SeedDMS_Core_Folder::hasDocumentByName() which returned an int > 0 if documents has been loaded before and even if the document searching for was not among them. - add new method SeedDMS_Core_Folder::empty() 5.1.11 (2019-05-03) --------------------- - ??? 5.1.10 (2019-04-04) --------------------- - fix php warning if workflow state doesn' have next transition - add method SeedDMS_Core_DatabaseAccess::setLogFp() 5.1.9 (2018-11-13) --------------------- - context can be passed to getAccessMode() - call hook in SeedDMS_Core_Folder::getAccessMode() - new optional parameter $listguest for SeedDMS_Core_Document::getReadAccessList() - remove deprecated methods SeedDMS_Core_Document::convert(), SeedDMS_Core_Document::wasConverted(), SeedDMS_Core_Document::viewOnline(), SeedDMS_Core_Document::getUrl() 5.1.8 (2018-07-02) --------------------- - SeedDMS_Core_DMS::search() returns false in case of an error - do not use views in DBAccessPDO by default anymore, use temp. tables - SeedDMS_Core_Document::getNotifyList() has new parameter to include disabled user in list - fix possible sql injection in SeedDMS_Core_User 5.1.7 (2018-04-05) --------------------- - just bump version 5.1.6 (2018-02-14) --------------------- - add SeedDMS_Core_Folder::getDocumentsMinMax() - add lots of DocBlocks from merge request #8 - add SeedDMS_Core_AttributeDefinition::removeValue() 5.1.5 (2017-11-07) --------------------- - use views instead of temp. tables - add list of expired documents in SeedDMS_Core_DMS::getDocumentList() - add methods to set comment, name, public, version of document files - add method SeedDMS_Core_Document::transferToUser() - SeedDMS_Core_Document::addDocumentFile() returns object of file - add SeedDMS_Core_DocumentFile::setDate() - remove SeedDMS_Core_DocumentCategory::addCategory() and getCategories() - add optional parameters $limit and $offset to SeedDMS_Core_Folder::getDocuments() and SeedDMS_Core_Folder::getSubFolders() - getInstance() returns now null instead of false if the object was not found in the db - add new methods SeedDMS_Core_Document::addCategories() and SeedDMS_Core_Document::removeCategories() 5.1.4 (2017-09-05) --------------------- - add virtual access mode for document links and attachments plus callbacks to check access mode in a hook - add new method SeedDMS_Core_DMS::getDocumentsExpired() - all changes from 5.0.14 merged 5.1.3 (2017-08-23) --------------------- - SeedDMS_Core_Document::getNotifyList() and SeedDMS_Core_Folder::getNotifyList() returns just users which are not disabled - add new methods removeFromProcesses(), getWorkflowsInvolved(), getKeywordCategories() to SeedDMS_Core_User - add methods isMandatoryReviewerOf() and isMandatoryApproverOf() - add methods transferDocumentsFolders() and transferEvents() - add method SeedDMS_Core_DMS::getDocumentByOriginalFilename() 5.1.2 (2017-03-23) --------------------- - SeedDMS_Core_DMS::filterDocumentFiles() returns also documents which are not public if the owner tries to access them - Check return value of onPreRemove[Document Folder], return from calling method if bool - Add SeedDMS_Core_DMS::getDocumentList() - Limit number of duplicate files to 1000 - Add hook on(Pre Post)RemoveContent - Add hook onAttributeValidate 5.1.1 (2017-02-20) --------------------- - all changes from 5.0.11 merged 5.1.0 (2017-02-20) --------------------- - added postgres support 5.0.13 (2017-07-13) --------------------- - all changes from 4.3.36 merged 5.0.12 (2017-03-23) --------------------- all sql statements can be logged to a file do not sort some temporary tables anymore, because it causes an error in mysql if sql_mode=only_full_group_by is set 5.0.11 (2017-02-28) --------------------- - all changes from 4.3.34 merged 5.0.10 (2017-02-20) --------------------- - all changes from 4.3.33 merged 5.0.9 (2016-11-02) --------------------- - all changes from 4.3.32 merged 5.0.8 (2016-11-02) --------------------- - all changes from 4.3.31 merged 5.0.7 (2016-11-02) --------------------- - all changes from 4.3.30 merged - better attribute value checking 5.0.6 (2016-09-06) --------------------- - all changes from 4.3.29 merged 5.0.5 (2016-08-09) --------------------- - all changes from 4.3.28 merged 5.0.4 (2016-05-03) --------------------- - all changes from 4.3.27 merged 5.0.3 (2016-04-04) --------------------- - use classname from SeedDMS_Core_DMS::_classnames for SeedDMS_Core_DocumentContent - all changes from 4.3.26 merged 5.0.2 (2016-04-26) --------------------- - all changes from 4.3.25 merged 5.0.1 (2016-01-22) --------------------- - all changes from 4.3.24 merged 5.0.0 (2016-01-22) --------------------- - classes can be overloaded - clean workflow log when a document version was deleted 4.3.37 (2018-02-14) --------------------- - SeedDMS_Core_DMS::search() finds documents without a status log 4.3.36 (2017-03-22) --------------------- - fix sql statement for creating temp. tables (sqlite) 4.3.35 (2017-07-11) --------------------- do not sort some temporary tables anymore, because it causes an error in mysql if sql_mode=only_full_group_by is set 4.3.34 (2017-02-28) --------------------- SeedDMS_Core_DMS::getDuplicateDocumentContent() returns complete document 4.3.33 (2017-02-22) --------------------- - SeedDMЅ_Core_DMS::getTimeline() no longer returns duplicate documents - SeedDMЅ_Core_Document::addContent() sets workflow after status was set - SeedDMЅ_Core_Keyword::setOwner() fix sql statement - SeedDMЅ_Core_User::setFullname() minor fix in sql statement 4.3.32 (2017-01-12) --------------------- - order groups by name returned by getReadAccessList() - add optional parameter to SeedDMS_Core_DMS::filterDocumentLinks() - SeedDMS_Core_DMS::search() can search for document/folder id 4.3.31 (2016-11-02) --------------------- - new method SeedDMЅ_Core_WorkflowAction::getTransitions() - new method SeedDMЅ_Core_WorkflowState::getTransitions() - new method SeedDMЅ_Core_AttributeDefinition::parseValue() - add check for cycles in workflow SeedDMS_Core_Workflow::checkForCycles() 4.3.30 (2016-10-07) --------------------- - new method SeedDMЅ_Core_AttributeDefinition::getValueSetSeparator() - trim each value of a value set before saving the complete value set as a string 4.3.29 (2016-09-06) --------------------- - SeedDMЅ_Core_Object::getAttributes() orders attributes by name of attribute definition - SeedDMЅ_Core_Workflow::addTransition() force reload of transition list after adding a - SeedDMЅ_Core_Document::rewrite[Review Approval]Log() will also copy file if it exists - add method SeedDMЅ_Core_Document::rewriteWorkflowLog() 4.3.28 (2016-08-24) --------------------- - SeedDMЅ_Core_DMS::search() searches also comment of document version 4.3.27 (2016-04-26) --------------------- - callbacks can have more then one user function - fix some sql statements, because they didn't work with mysql 5.7.5 anymore 4.3.26 (2016-04-04) --------------------- - add more callbacks 4.3.25 (2016-03-08) --------------------- - rename SeedDMS_Core_Group::getNotificationsByGroup() to getNotifications() - use __construct() for all constructors - fix setting multi value attributes for versions 4.3.24 (2016-01-22) --------------------- - make sure boolean attribute is saved as 0/1 - add SeedDMS_Core_User::[g s]etMandatoryWorkflows() - add SeedDMS_Core_User::getNotifications() - add SeedDMS_Core_Group::getNotifications() - SeedDMS_Core_DMS::getNotificationsByGroup() and SeedDMS_Core_DMS::getNotificationsByUser() are deprecated - SeedDMS_Core_DocumentCategory::getDocumentsByCategory() now returns the documents - add SeedDMS_Core_Group::getWorkflowStatus() - SeedDMS_Core_User::getDocumentsLocked() sets locking user propperly 4.3.24 (2016-01-21) --------------------- - make sure boolean attribute is saved as 0/1 - add SeedDMS_Core_User::[g s]etMandatoryWorkflows() - add SeedDMS_Core_User::getNotifications() - add SeedDMS_Core_Group::getNotifications() - SeedDMS_Core_DMS::getNotificationsByGroup() and SeedDMS_Core_DMS::getNotificationsByUser() are deprecated - SeedDMS_Core_DocumentCategory::getDocumentsByCategory() now returns the documents - add SeedDMS_Core_Group::getWorkflowStatus() - SeedDMS_Core_User::getDocumentsLocked() sets locking user propperly 4.3.23 (2016-01-21) --------------------- - new method SeedDMS_Core_DMS::createDump() - minor improvements int SeedDMS_Core_Document::getReadAccessList() 4.3.22 (2015-11-09) --------------------- - fix sql statement to reset password - pass some more information for timeline 4.3.21 (2015-09-28) --------------------- - add method SeedDMS_Core_Database::getCurrentTimestamp() - add method SeedDMS_Core_Database::getCurrentDatetime() - user getCurrentTimestamp() and getCurrentDatetime() whenever possible 4.3.20 (2015-06-26) --------------------- - add method SeedDMS_Core_DMS::checkDate() - add method SeedDMS_Core_Document::setDate() - add method SeedDMS_Core_Folder::setDate() - date can be passed to SeedDMS_Core_DocumentContent::setStatus() - add method SeedDMS_Core_DocumentContent::rewriteStatusLog() - add method SeedDMS_Core_DocumentContent::rewriteReviewLog() - add method SeedDMS_Core_DocumentContent::rewriteApprovalLog() - access rights for guest are also taken into account if set in an acl. Previously guest could gain read rights even if the access was probibited by a group or user right 4.3.19 (2015-06-26) --------------------- - add optional paramter $noclean to clearAccessList(), setDefaultAccess(), setInheritAccess() - clearAccessList() will clean up the notifier list - new method cleanNotifyList() 4.3.18 (2015-06-09) --------------------- - add optional paramter $msg to SeedDMS_Core_DocumentContent::verifyStatus() - add method SeedDMS_Core_DMS::getDuplicateDocumentContent() 4.3.17 (2015-03-27) --------------------- clean workflow log when a document version was deleted 4.3.16 (2015-03-20) --------------------- no changes 4.3.15 (2015-02-12) --------------------- users returned by SeedDMS_Core_DMS::getAllUsers() have language and theme set again 4.3.13 (2014-11-27) --------------------- - fix searching for attributes - add some more documentation - SeedDMS_Core_DMS::getDocumentCategories() returns categories sorted by name (Bug #181) - new methode SeedDMS_Core_Document::replaceContent() which replaces the content of a version. 4.3.14 - add missing start transaction in SeedDMD_Core_Folder::remove() - SeedDMD_Core_Folder::isSubFolder() doesn't compare object instances anymore (Bug #194) 4.3.12 (2014-11-17) --------------------- - fix searching folders with multivalue attributes 4.3.11 (2014-11-13) --------------------- - fixed saving multivalue attributes - add method SeedDMS_Core_Attribute::getValueAsArray() 4.3.10 (2014-10-22) --------------------- new release 4.3.9 (2014-07-30) --------------------- - SeedDMS_Core_KeywordCategory::getKeywordLists() sorts keywords aphabetically - SeedDMS_Core_DMS::addUser() doesn't throw an error if sql_mode is set to STRICT_TRANS_TABLES and pwdexpiration is not set to a valid date. 4.3.8 (2014-04-09) --------------------- - new method SeedDMS_Core_DMS::getStatisticalData() 4.3.7 (2014-03-21) --------------------- no changes 4.3.6 (2014-03-18) --------------------- - add optional parameters $publiconly=false and $user=null to SeedDMS_Core_Document::getDocumentLinks() - add new method SeedDMS_Core_Document::getReverseDocumentLinks() 4.3.5 (2014-03-04) --------------------- no changes 4.3.4 (2014-02-01) --------------------- - fix handling of multivalue attributes 4.3.3 (2014-02-01) --------------------- - SeedDMS_Folder::getDocuments() and SeedDMS_Folder::getSubFolders() do not do any sorting if $orderby is not set. - database hostname can have port seperated by ':' - make all functions in SeedDMS_Core_File static (fixes problem with php 5.5.x) 4.3.2 (2013-11-27) --------------------- - new method SeedDMS_Core_Folder::isSubFolder() - check for subFolder in SeedDMS_Core_Folder::setParent() - new methods SeedDMS_Core_DMS::checkFolders() and SeedDMS_Core_DMS::checkDocuments() 4.3.0 (2013-09-05) --------------------- - various small corrections - comment of version is no longer taken from document if version comment is empty - passing an array of users to SeedDMЅ_Core_DMS::search() instead of a single user ist now allowed - turn on foreign key constraints for sqlite3 - SeedDMЅ_Core_Folder::getPath() can handle a subfolder treated as a root folder 4.2.2 (2013-05-17) --------------------- - admins can be added as reviewer/approver again 4.2.1 (2013-04-30) --------------------- - fixed bug in SeedDMS_Core_DocumentContent::addIndApp() 4.2.0 (2013-04-22) --------------------- - fixed bug in SeedDMS_Core_DocumentContent::addIndApp() 4.1.3 (2013-04-08) --------------------- - stay in sync with seeddms application 4.1.2 (2013-04-05) --------------------- - set propper folderList of sub folders after moving a folder 4.1.1 (2013-04-05) --------------------- - stay in sync with seeddms application 4.1.0 (2013-03-28) --------------------- - minor bugfixes 4.0.0 (2013-02-26) --------------------- - minor bugfixes 4.0.0pre5 (2013-02-14) --------------------- - changed name from letodms to seeddms - fixed SeedDMS_Database::TableList() 4.0.0pre4 (2013-02-11) --------------------- - calculate checksum for document versions - some bug fixes - some more documentation - added new methods SeedDMS_Core_Document::getReadUserList() and SeedDMS_Core_Folder::getReadUserList() which replaces getApproversList() - fixed sql statement in getReadUserList() for sqlite3 4.0.0pre3 (2013-02-08) --------------------- - minor bug fixes 4.0.0pre2 (2013-02-06) --------------------- - lots of bug fixes - replaced more of old var declaration - more code documentation 4.0.0pre1 (2013-01-24) --------------------- - added database transactions - new workflow - replaced old var declaration 4.0.0RC1 (2013-02-20) --------------------- - minor bugfixes 3.4.0 (2012-12-13) --------------------- - added PDO database driver, several sql changes for better compatiblity - fixed bug when adding a new document category - make sure the database remains consistent even in case of errors 3.3.9 (2012-09-19) --------------------- - version update to be in sync with letodms application 3.3.8 (2012-09-16) --------------------- - more sql injection protection in LetoDMS_Core_User 3.3.7 (2012-08-25) --------------------- - no changes, just keep same version as letodms application 3.3.6 (2012-07-16) --------------------- - no changes, just keep same version as letodms application 3.3.5 (2012-04-30) --------------------- - minor corrections 3.3.4 (2012-04-11) --------------------- - fixed bug in LetoDMS_Core_DocumentFile::getPath() 3.3.3 (2012-03-28) --------------------- - fixed bug in LetoDMS_Core_Document::getPath() 3.3.2 (2012-03-22) --------------------- - fixed bug in LetoDMS_Core_Document::getDir() 3.3.1 (2012-03-21) --------------------- - new release 3.3.0 (2012-02-08) --------------------- - added methods to find and repair errors in document and folder records - removed sendmail parameter from some methods in LetoDMS_Core_Document - do not use some of the temporay tables anymore - SetFetchMode(ADODB_FETCH_ASSOC) in LetoDMS_Core_DatabaseAccess::connect() 3.2.0 (2011-07-23) --------------------- New release 3.0.0 (2010-04-27) --------------------- Initial release