Posts: 11
Threads: 6
Joined: Oct 2010
Reputation:
0
In an old post I saw that notification list inheritance was introduced in version 1.9. I'm running version 3.01, but it seems it doesn't work?
What am I missing?
Thank you very much.
Franco
Posts: 431
Threads: 15
Joined: Oct 2010
Reputation:
0
(10-21-2011, 08:33 PM)f_lombardo Wrote: In an old post I saw that notification list inheritance was introduced in version 1.9. I'm running version 3.01, but it seems it doesn't work?
What am I missing?
That was before I entered the project. From looking at the source files I can't see any inheritance.
But that would really be a nice feature.
Uwe
Posts: 11
Threads: 6
Joined: Oct 2010
Reputation:
0
(10-22-2011, 01:02 AM)steinm Wrote: But that would really be a nice feature.
I tried to do it this way.
In inc.ClassFolder.php I created this method
Code: function propagateNotifier($newElement) {
$this->getNotifyList();
foreach ($this->_notifyList["groups"] as $grp) {
$newElement->addNotify($grp->getID(), false);
}
foreach ($this->_notifyList["users"] as $usr) {
$newElement->addNotify($usr->getID(), true);
}
}
Then I changed these methods
Code: function addSubFolder($name, $comment, $owner, $sequence) { /* {{{ */
$db = $this->_dms->getDB();
//inheritAccess = true, defaultAccess = M_READ
$queryStr = "INSERT INTO tblFolders (name, parent, comment, date, owner, inheritAccess, defaultAccess, sequence) ".
"VALUES ('".$name."', ".$this->_id.", '".$comment."', ".mktime().", ".$owner->getID().", 1, ".M_READ.", ".$sequence.")";
if (!$db->getResult($queryStr))
return false;
$newFolder = $this->_dms->getFolder($db->getInsertID());
//MY CHANGHE HERE
$this->propagateNotifier($newFolder);
unset($this->_subFolders);
return $newFolder;
} /* }}} */
function addDocument($name, $comment, $expires, $owner, $keywords, $tmpFile, $orgFileName, $fileType, $mimeType, $sequence, $reviewers=array(), $approvers=array(),$reqversion,$version_comment="") { /* {{{ */
$db = $this->_dms->getDB();
$expires = (!$expires) ? 0 : $expires;
// Must also ensure that the document has a valid folderList.
$pathPrefix="";
$path = $this->getPath();
foreach ($path as $f) {
$pathPrefix .= ":".$f->getID();
}
if (strlen($pathPrefix)>1) {
$pathPrefix .= ":";
}
$queryStr = "INSERT INTO tblDocuments (name, comment, date, expires, owner, folder, folderList, inheritAccess, defaultAccess, locked, keywords, sequence) VALUES ".
"('".$name."', '".$comment."', " . mktime().", ".$expires.", ".$owner->getID().", ".$this->_id.",'".$pathPrefix."', 1, ".M_READ.", -1, '".$keywords."', " . $sequence . ")";
if (!$db->getResult($queryStr))
return false;
$document = $this->_dms->getDocument($db->getInsertID());
if ($version_comment!="")
$res = $document->addContent($version_comment, $owner, $tmpFile, $orgFileName, $fileType, $mimeType, $reviewers, $approvers,$reqversion);
else $res = $document->addContent($comment, $owner, $tmpFile, $orgFileName, $fileType, $mimeType, $reviewers, $approvers,$reqversion);
if (is_bool($res) && !$res) {
$queryStr = "DELETE FROM tblDocuments WHERE id = " . $document->getID();
$db->getResult($queryStr);
return false;
}
//MY CHANGE HERE
$this->propagateNotifier($document);
return array($document, $res);
} /* }}} */
In op.FolderNotify.php I created this function
Code: function add_folder_notify($folder, $userid, $isUser) {
global $dms;
$folder->addNotify($userid, $isUser);
// include all folder's document
$documents = $folder->getDocuments();
$documents = LetoDMS_Core_DMS::filterAccess($documents, $dms->getUser($userid), M_READ);
foreach($documents as $document)
$document->addNotify($userid, $isUser);
// recurse all folder's folders
$subFolders = $folder->getSubFolders();
$subFolders = LetoDMS_Core_DMS::filterAccess($subFolders, $dms->getUser($userid), M_READ);
foreach($subFolders as $subFolder)
add_folder_notify($subFolder,$userid,$isUser);
}
Then I called it ...
Code: else if ($action == "addnotify") {
if ($userid != -1) {
//...
case 0:
add_folder_notify($folder, $userid, true);
//....
if ($groupid != -1) {
//...
case 0:
add_folder_notify($folder, $groupid, false);
By the way, is the file op.ManageNotify.php still used anywhere?
Thanks.
Bye
Franco
Posts: 431
Threads: 15
Joined: Oct 2010
Reputation:
0
(10-24-2011, 05:02 PM)f_lombardo Wrote: By the way, is the file op.ManageNotify.php still used anywhere?
Thanks for your implementation. I'll see if I can integrate it.
op.ManageNotify.php isn't used for some time.
Uwe
|