diff --git a/plugins/rssplugin/KTrss.inc.php b/plugins/rssplugin/KTrss.inc.php
index a3635b9..2b68bb8 100644
--- a/plugins/rssplugin/KTrss.inc.php
+++ b/plugins/rssplugin/KTrss.inc.php
@@ -86,19 +86,9 @@ class KTrss{
$aDList = KTrss::getDocumentList($iUserId);
if($aDList){
foreach($aDList as $document_id){
- $sQuery = "SELECT dt.document_id AS id, dt.datetime AS date, dt.comment AS transaction, dmv.name AS name " .
- "FROM document_metadata_version AS dmv, document_subscriptions AS ds, document_transactions AS dt " .
- "WHERE dmv.document_id = ds.document_id " .
- "AND dt.document_id = ds.document_id " .
- "AND ds.document_id = ? " .
- "AND ds.user_id = ? " .
- "ORDER BY date DESC " .
- "LIMIT 1";
- $aParams = array($document_id, $iUserId);
- $aDocumentsInfo = DBUtil::getResultArray(array($sQuery, $aParams));
- $aDocumentsInfo['itemType'] = 'document';
- if($aDocumentsInfo){
- $aDocuments[] = $aDocumentsInfo;
+ $document = KTrss::getOneDocument($document_id, $iUserId);
+ if($document){
+ $aDocuments[] = $document;
}
}
}
@@ -116,19 +106,9 @@ class KTrss{
$aFList = KTrss::getFolderList($iUserId);
if($aFList){
foreach($aFList as $folder_id){
- $sQuery = "SELECT ft.folder_id AS id, ft.datetime AS date, ft.comment AS transaction, f.name AS name " .
- "FROM folders AS f, folder_subscriptions AS fs, folder_transactions AS ft " .
- "WHERE f.id = fs.folder_id " .
- "AND ft.folder_id = fs.folder_id " .
- "AND fs.folder_id = ? " .
- "AND fs.user_id = ? " .
- "ORDER BY date DESC " .
- "LIMIT 1";
- $aParams = array($folder_id, $iUserId);
- $aFoldersInfo = DBUtil::getResultArray(array($sQuery, $aParams));
- $aFoldersInfo['itemType'] = 'folder';
- if($aFoldersInfo){
- $aFolders[] = $aFoldersInfo;
+ $folder = KTrss::getOneFolder($folder_id, $iUserId);
+ if($folder){
+ $aFolders[] = $folder;
}
}
}
@@ -141,43 +121,49 @@ class KTrss{
}
}
- function getOneDocument($iDocumentId){
- $sQuery = "SELECT dt.document_id AS id, dt.datetime AS date, dt.comment AS transaction, dmv.name AS name " .
- "FROM document_metadata_version AS dmv, document_transactions AS dt " .
- "WHERE dmv.document_id = dt.document_id " .
- "AND dt.document_id = ? " .
- "ORDER BY date DESC ";
- $aParams = array($iDocumentId);
- $aDocumentInfo = DBUtil::getResultArray(array($sQuery, $aParams));
- if($aDocumentInfo){
- $aDocuments[] = $aDocumentInfo;
+ // get information on document
+ function getOneDocument($iDocumentId, $iUserId){
+ $aDData = KTrss::getDocumentData($iUserId, $iDocumentId);
+ $aDTransactions = KTrss::getDocumentTransactions($iDocumentId);
+ if($aDData){
+ $aDData['itemType'] = 'document';
+
+ // create mime info
+ $aMimeInfo = KTrss::getMimeTypeInfo($iUserId, $iDocumentId);
+ $aDData['mimeTypeFName'] = $aMimeInfo['typeFName'];
+ $aDData['mimeTypeIcon'] = $aMimeInfo['typeIcon'];
+
+ $aDocument[] = $aDData;
+ $aDocument[] = $aDTransactions;
}
- if (PEAR::isError($aDocumentInfo)) {
+ if (PEAR::isError($aDData)) {
return false;
}
- if ($aDocuments){
- return $aDocuments;
+ if ($aDocument){
+ return $aDocument;
}
}
+ // get information for folder
function getOneFolder($iFolderId){
- $sQuery = "SELECT ft.folder_id AS id, ft.datetime AS date, ft.comment AS transaction, f.name AS name " .
- "FROM folders AS f, folder_transactions AS ft " .
- "WHERE ft.folder_id = f.id " .
- "AND f.id = ? " .
- "ORDER BY date DESC " .
- "LIMIT 1";
- $aParams = array($iFolderId);
- $aFoldersInfo = DBUtil::getResultArray(array($sQuery, $aParams));
- if($aFoldersInfo){
- $aFolders[] = $aFoldersInfo;
+ $aFData = KTrss::getFolderData($iFolderId);
+ $aFTransactions = KTrss::getFolderTransactions($iFolderId);
+ if($aFData){
+ $aFData['itemType'] = 'folder';
+
+ // create mime info
+ $aFData['mimeTypeFName'] = 'Folder';
+ $aFData['mimeTypeIcon'] = KTrss::getFolderIcon();
+
+ $aFolder[] = $aFData;
+ $aFolder[] = $aFTransactions;
+ $aFolderBox[] = $aFolder;
}
- if (PEAR::isError($aFoldersInfo)) {
- // XXX: log error
+ if (PEAR::isError($aFData)) {
return false;
}
- if ($aFolders){
- return $aFolders;
+ if ($aFolder){
+ return $aFolder;
}
}
@@ -200,16 +186,79 @@ class KTrss{
"".$hostPath."knowledgeTree/\n".
"".$hostPath."resources/graphics/ktlogo_rss.png\n".
"\n";
- foreach($aItems as $item){
- if($item['itemType'] == 'folder'){
+ foreach($aItems as $aItems){
+ if($aItems[0][itemType] == 'folder'){
$sTypeSelect = 'folder.transactions&fFolderId';
- }elseif($item['itemType'] == 'document'){
+ }elseif($aItems[0][itemType] == 'document'){
$sTypeSelect = 'document.transactionhistory&fDocumentId';
}
$feed .= "- \n" .
- "".$item[0]['name']."\n" .
- "".$hostPath."action.php?kt_path_info=ktcore.actions.".$sTypeSelect."=".$item[0]['id']."\n" .
- "".$item[0]['transaction']."\n".
+ "".$aItems[0][0][name]."\n" .
+ "".$hostPath."action.php?kt_path_info=ktcore.actions.".$sTypeSelect."=".$aItems[0][0]['id']."\n" .
+ "\n" .
+ "<table border='0' width='90%'>\n".
+ "<tr>\n".
+ "<td width='5%' height='16px'>" .
+ "<a href='".$hostPath."action.php?kt_path_info=ktcore.actions.".$sTypeSelect."=".$aItems[0][0][id]."' ><img src='".$aItems[0][mimeTypeIcon]."' align='left' height='16px' width='16px' alt='' border='0' /></a>" .
+ "</td>\n".
+ "<td align='left'> ".$aItems[0][mimeTypeFName]."</td>\n".
+ "</tr>\n".
+ "<tr>\n".
+ "<td colspan='2'>\n".
+ ucfirst($aItems[0]['itemType'])." Information (ID: ".$aItems[0][0][id].")</>\n".
+ "<hr>\n".
+ "<table width='95%'>\n".
+ "<tr>\n".
+ "<td>Filename: ".$aItems[0][0][filename]."</td>\n".
+ "<td>\n".
+ "</tr>\n".
+ "<tr>\n".
+ "<td>Author: ".$aItems[0][0][author]."</td>\n".
+ "<td>\n".
+ "</tr>\n".
+ "<tr>\n".
+ "<td>Owner: ";if($aItems[0][0][owner]){$feed .= $aItems[0][0][owner];}else{$feed .= "None";}
+ $feed .= "</td>\n".
+ "<td></td>\n".
+ "</tr>\n".
+ "<tr>\n";if($aItems[0][0][type]){
+ $feed .= "<td>Document type: ".$aItems[0][0][type]."</td>\n".
+ "<td></td>\n";}
+ $feed .= "</tr>\n".
+ "<tr>\n".
+ "<td>Workflow status: ";if($aItems[0][0][workflow_status]){$feed .= $aItems[0][0][workflow_status];}else{$feed .= "No Workflow";}
+ $feed .= "</td>\n".
+ "<td></td>\n".
+ "</tr>\n".
+ "</table><br>\n".
+ "Transaction Summary (Last 3)\n".
+ "<hr>\n".
+ "<table width='100%'>\n";
+ foreach($aItems[1] as $item){
+ $feed .= "<tr>\n".
+ "<td>Description:</td>\n".
+ "<td>".$item[comment]."</td>\n".
+ "</tr>\n".
+ "<tr>\n";if($item[version]){
+ $feed .= "<td>Version:</td>\n".
+ "<td>".$item[version]."</td>\n";}
+ $feed .= "</tr>\n".
+ "<tr>\n".
+ "<td>Date:</td>\n".
+ "<td>".$item[datetime]."</td>\n".
+ "</tr>\n".
+ "<tr>\n".
+ "<td>User:</td>\n".
+ "<td>".$item[user_name]."</td>\n".
+ "</tr>\n".
+ "<tr>\n".
+ "<td colspan='2'><hr width='100' align='left'></td>\n".
+ "</tr>\n";}
+ $feed .= "</table>\n".
+ "</td>\n".
+ "</tr>\n".
+ "</table>".
+ "\n".
"
\n";
}
$feed .= "\n" .
@@ -303,36 +352,6 @@ class KTrss{
return $res;
}
- // Should be removed...not being used anywhere
- function authenticateFolder($iUserId, $iFolderId){
- $aFList = KTrss::getFolderList($iUserId);
- $result = false;
- if($aFList){
- foreach($aFList as $folder_id){
- if($folder_id == $iFolderId){
- $result = true;
- }
- }
- }
-
- return $result;
- }
-
- // Should be removed...not being used anywhere
- function authenticateDocument($iUserId ,$iDocumentId){
- $aDList = KTrss::getDocumentList($iUserId);
- $result = false;
- if($aDList){
- foreach($aDList as $document_id){
- if($document_id == $iDocumentId){
- $result = true;
- }
- }
- }
-
- return $result;
- }
-
// Function to validate that a user has permissions for a specific document
function validateDocumentPermissions($iUserId, $iDocumentId){
// check if user id is in session. If not, set it
@@ -373,6 +392,7 @@ class KTrss{
}
}
+ // get icon link for rss
function getRssLinkIcon(){
// built server path
$sHostPath = "http://".$_SERVER['HTTP_HOST']."/".$GLOBALS['KTRootUrl']."/";
@@ -383,6 +403,7 @@ class KTrss{
return $icon;
}
+ // get rss link for a document/folder
function getRssLink($iItemId, $sItemType){
$item = strToLower($sItemType);
if($item == 'folder'){
@@ -400,8 +421,115 @@ class KTrss{
return $sLink;
}
+ // get rss icon link
function getImageLink($iItemId, $sItemType){
return "".KTrss::getRssLinkIcon()."";
}
+
+ // get the mime type id for a document
+ function getDocumentMimeTypeId($iUserId, $iDocumentId){
+ if(!isset($_SESSION["userID"])){
+ $_SESSION['userID'] = $iUserId;
+ }
+ // get document object
+ $oDocument =& Document::get($iDocumentId);
+
+ $docMime = $oDocument->getMimeTypeID();
+ return $docMime;
+ }
+
+ // get mime information for a document
+ function getMimeTypeInfo($iUserId, $iDocumentId){
+ $mimeinfo['typeId'] = KTrss::getDocumentMimeTypeId($iUserId, $iDocumentId); // mime type id
+ $mimeinfo['typeName'] = KTMime::getMimeTypeName($mimeinfo['typeId']); // mime type name
+ $mimeinfo['typeFName'] = KTMime::getFriendlyNameForString($mimeinfo['typeName']); // mime type friendly name
+ $mimeinfo['typeIcon'] = "http://".$_SERVER['HTTP_HOST']."/".$GLOBALS['KTRootUrl']."/resources/mimetypes/".KTMime::getIconPath($mimeinfo['typeId']).".png"; //icon path
+
+ return $mimeinfo;
+ }
+
+ // get the default folder icon
+ function getFolderIcon(){
+ return $mimeinfo['typeIcon'] = "http://".$_SERVER['HTTP_HOST']."/".$GLOBALS['KTRootUrl']."/thirdparty/icon-theme/16x16/mimetypes/x-directory-normal.png"; //icon path
+ }
+
+ // get a document information
+ function getDocumentData($iUserId, $iDocumentId){
+ if(!isset($_SESSION["userID"])){
+ $_SESSION['userID'] = $iUserId;
+ }
+ // get document object
+ $oDocument =& Document::get($iDocumentId);
+
+ $cv = $oDocument->getContentVersionId();
+ $mv = $oDocument->getMetadataVersionId();
+
+ $sQuery = "SELECT dcv.document_id AS id, dmver.name AS name, dcv.filename AS filename, c.name AS author, o.name AS owner, dtl.name AS type, dwfs.name AS workflow_status " .
+ "FROM documents AS d LEFT JOIN document_content_version AS dcv ON d.id = dcv.document_id " .
+ "LEFT JOIN users AS o ON d.owner_id = o.id " .
+ "LEFT JOIN users AS c ON d.creator_id = c.id " .
+ "LEFT JOIN document_metadata_version AS dmv ON d.id = dmv.document_id " .
+ "LEFT JOIN document_types_lookup AS dtl ON dmv.document_type_id = dtl.id " .
+ "LEFT JOIN document_metadata_version AS dmver ON d.id = dmver.document_id " .
+ "LEFT JOIN workflow_states AS dwfs ON dmver.workflow_state_id = dwfs.id " .
+ "WHERE d.id = ? " .
+ "AND dmver.id = ? " .
+ "AND dcv.id = ? " .
+ "LIMIT 1";
+
+ $aParams = array($iDocumentId, $mv, $cv);
+ $aDocumentData = DBUtil::getResultArray(array($sQuery, $aParams));
+ if($aDocumentData){
+ return $aDocumentData;
+ }
+ }
+
+ // get a folder information
+ function getFolderData($iFolderId){
+ $sQuery = "SELECT f.id AS id, f.name AS name, f.name AS filename, c.name AS author, o.name AS owner, f.description AS description " .
+ "FROM folders AS f " .
+ "LEFT JOIN users AS o ON f.owner_id = o.id " .
+ "LEFT JOIN users AS c ON f.creator_id = c.id " .
+ "WHERE f.id = ? " .
+ "LIMIT 1";
+
+ $aParams = array($iFolderId);
+ $aFolderData = DBUtil::getResultArray(array($sQuery, $aParams));
+ if($aFolderData){
+ return $aFolderData;
+ }
+ }
+
+ // get a listing of the latest 3 transactions for a document
+ function getDocumentTransactions($iDocumentId){
+ $sQuery = "SELECT DTT.name AS transaction_name, U.name AS user_name, DT.version AS version, DT.comment AS comment, DT.datetime AS datetime " .
+ "FROM document_transactions AS DT INNER JOIN users AS U ON DT.user_id = U.id " .
+ "INNER JOIN document_transaction_types_lookup AS DTT ON DTT.namespace = DT.transaction_namespace " .
+ "WHERE DT.document_id = ? " .
+ "ORDER BY DT.datetime DESC " .
+ "LIMIT 3";
+
+ $aParams = array($iDocumentId);
+ $aDocumentTransactions = DBUtil::getResultArray(array($sQuery, $aParams));
+ if($aDocumentTransactions){
+ return $aDocumentTransactions;
+ }
+ }
+
+ // Get a listing of the latest 3 transactions for a folder
+ function getFolderTransactions($iFolderId){
+ $sQuery = "SELECT DTT.name AS transaction_name, U.name AS user_name, FT.comment AS comment, FT.datetime AS datetime " .
+ "FROM folder_transactions AS FT LEFT JOIN users AS U ON FT.user_id = U.id " .
+ "LEFT JOIN document_transaction_types_lookup AS DTT ON DTT.namespace = FT.transaction_namespace " .
+ "WHERE FT.folder_id = ? " .
+ "ORDER BY FT.datetime DESC " .
+ "LIMIT 3";
+
+ $aParams = array($iFolderId);
+ $aFolderTransactions = DBUtil::getResultArray(array($sQuery, $aParams));
+ if($iFolderId){
+ return $aFolderTransactions;
+ }
+ }
}
?>
diff --git a/plugins/rssplugin/loadFeed.inc.php b/plugins/rssplugin/loadFeed.inc.php
index 0a24e5d..6ffda65 100644
--- a/plugins/rssplugin/loadFeed.inc.php
+++ b/plugins/rssplugin/loadFeed.inc.php
@@ -24,19 +24,15 @@
// Prepare response data to be passed back to page
$reposonse = "
".$aRSSArray[channel][title]."
" .
"" .
- "
";
+ "";
diff --git a/plugins/rssplugin/templates/RSSPlugin/dashlet.smarty b/plugins/rssplugin/templates/RSSPlugin/dashlet.smarty
index ea09c81..d7f4567 100644
--- a/plugins/rssplugin/templates/RSSPlugin/dashlet.smarty
+++ b/plugins/rssplugin/templates/RSSPlugin/dashlet.smarty
@@ -65,19 +65,15 @@
{if ($internalrss)}
{$internalrss.channel.title}
-
+
diff --git a/rss.php b/rss.php
index 7ca5573..0c07a03 100644
--- a/rss.php
+++ b/rss.php
@@ -17,6 +17,8 @@ require_once(KT_LIB_DIR . "/widgets/FieldsetDisplayRegistry.inc.php");
require_once(KT_LIB_DIR . "/actions/documentaction.inc.php");
require_once(KT_LIB_DIR . "/browse/browseutil.inc.php");
+require_once(KT_LIB_DIR . '/mime.inc.php');
+
if (!validateUser($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) {
header('WWW-Authenticate: Basic realm="KnowledgeTree DMS"');
header('HTTP/1.0 401 Unauthorized');
@@ -33,9 +35,9 @@ if (!validateUser($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) {
if(KTrss::validateDocumentPermissions($id, $iDocumentId)){ // if document passes validation check
// get document info
- $aDocumentInfo = KTrss::getOneDocument($iDocumentId);
+ $aDocumentInfo[] = KTrss::getOneDocument($iDocumentId, $id);
- if($aDocumentInfo){
+ if($aDocumentInfo){
// create rss xml for document
$documentFeed = KTrss::arrayToXML($aDocumentInfo);
}else{
@@ -58,7 +60,7 @@ if (!validateUser($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) {
if(KTrss::validateFolderPermissions($id, $iFolderId)){ // if folder passes validation check
// get folder info
- $aFolderInfo = KTrss::getOneFolder($iFolderId);
+ $aFolderInfo[] = KTrss::getOneFolder($iFolderId);
if($aFolderInfo){
// create rss xml for folder