[ Index ] |
|
Code source de eGroupWare 1.2.106-2 |
1 <?php 2 include ("../inc/inc.Settings.php"); 3 include ("../inc/inc.AccessUtils.php"); 4 include ("../inc/inc.ClassAccess.php"); 5 include ("../inc/inc.ClassDocument.php"); 6 include ("../inc/inc.ClassFolder.php"); 7 include ("../inc/inc.ClassGroup.php"); 8 include ("../inc/inc.ClassUser.php"); 9 include ("../inc/inc.DBAccess.php"); 10 include ("../inc/inc.FileUtils.php"); 11 include ("../inc/inc.Language.php"); 12 include ("../inc/inc.OutUtils.php"); 13 include ("../inc/inc.Utils.php"); 14 15 function addExpiredMsg($document, $users) 16 { 17 GLOBAL $msgs; 18 19 $folder = $document->getFolder(); 20 $path = $folder->getPath(); 21 $pathStr = ""; 22 for ($i = 0; $i < count($path); $i++) 23 { 24 $pathStr .= $path[$i]->getName(); 25 if ($i+1 < count($path)) 26 $pathStr .= "/"; 27 } 28 foreach ($users as $user) 29 { 30 if (!isset($msgs[$user->getEmail()])) 31 $msgs[$user->getEmail()] = array(); 32 array_push( 33 $msgs[$user->getEmail()], 34 getMLText("msg_document_expired", 35 array( 36 "documentname" => $document->getName(), 37 "path" => $pathStr, 38 "documentid" => $document->getID(), 39 "expires" => getReadableDate($document->getExpires()) 40 ) 41 ) 42 ); 43 } 44 } 45 46 function addChangedMsg($document, $users) 47 { 48 GLOBAL $msgs; 49 50 $latestContent = $document->getLatestContent(); 51 52 $folder = $document->getFolder(); 53 $path = $folder->getPath(); 54 $pathStr = ""; 55 for ($i = 0; $i < count($path); $i++) 56 { 57 $pathStr .= $path[$i]->getName(); 58 if ($i+1 < count($path)) 59 $pathStr .= "/"; 60 } 61 62 foreach ($users as $user) 63 { 64 if (!isset($msgs[$user->getEmail()])) 65 $msgs[$user->getEmail()] = array(); 66 67 array_push( 68 $msgs[$user->getEmail()], 69 getMLText("msg_document_updated", 70 array( 71 "documentname" => $document->getName(), 72 "path" => $pathStr, 73 "documentid" => $document->getID(), 74 "updated" => getLongReadableDate($latestContent->getDate()) 75 ) 76 ) 77 ); 78 } 79 } 80 81 function getUserOnlyNotifyList($obj, $oldList, $mode) 82 { 83 $newList = $oldList; 84 $listToAdd = $obj->getNotifyList(); 85 86 $tmpList = $listToAdd["users"]; 87 foreach ($listToAdd["groups"] as $group) 88 { 89 $members = $group->getUsers(); 90 foreach ($members as $member) 91 array_push($tmpList, $member); 92 } 93 unset($listToAdd); 94 foreach ($tmpList as $user) 95 { 96 $alreadyInList = false; 97 foreach ($newList as $_user) 98 { 99 if ($_user->getID() == $user->getID()) 100 { 101 $alreadyInList = true; 102 break; 103 } 104 } 105 if (!$alreadyInList) 106 array_push($newList, $user); 107 } 108 return filterUsersByAccess($obj, $newList, $mode); 109 } 110 111 function notifyForDocument($document, $users) 112 { 113 GLOBAl $settings; 114 115 $newUsers = getUserOnlyNotifyList($document, $users, M_READ); 116 117 //wenn das letzte update keine 24h (eher updateNotifyTime sek.) zurückliegt, werden 118 //alle Benutzer, die in der alten Liste sowie in der Liste für diese Datei enthalten sind, 119 //und mindestens Lese-Zugriff haben, benachrichtigt 120 $latestContent = $document->getLatestContent(); 121 if (mktime() - $latestContent->getDate() < $settings->_updateNotifyTime) 122 addChangedMsg($document, $newUsers); 123 124 //über veraltete Inhalte werden nur solche Benutzer informiert, die auch noch über Schreib-Rechte verfügen 125 if ($document->expires() && (mktime() > $document->getExpires())) 126 addExpiredMsg($document, filterUsersByAccess($document, $newUsers, M_READWRITE)); 127 } 128 129 function notifyForFolder($folder, $users) 130 { 131 $newUsers = getUserOnlyNotifyList($folder, $users, M_READ); 132 133 $documents = $folder->getDocuments(); 134 foreach ($documents as $document) 135 notifyForDocument($document, $newUsers); 136 137 $subFolders = $folder->getSubFolders(); 138 foreach ($subFolders as $subFolder) 139 notifyForFolder($subFolder, $newUsers); 140 } 141 142 $rootFolder = getFolder($settings->_rootFolderID); 143 $msgs = array(); 144 notifyForFolder($rootFolder, array()); 145 146 print "<pre>"; 147 print_r($msgs); 148 print "</pre>"; 149 150 $receivers = array_keys($msgs); 151 foreach ($receivers as $receiver) 152 { 153 $msg = implode("\n\n", $msgs[$receiver]); 154 mail($receiver, getMLText("notify_subject"), $msg); 155 } 156 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 17:20:01 2007 | par Balluche grâce à PHPXref 0.7 |