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]."

" . "
" . - ""; + "
"; for($i=0;$i + - - - - - "; + "; } $reposonse .= "
".$aRSSArray[items][$i][title]."
".$aRSSArray[items][$i][description]."".$aRSSArray[items][$i][pubDate]."
... read more



"; 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}

- +
{section name=i start=0 loop=$itemcount} - + - - - - - + {/section}
{$internalrss.items[i].title}{$internalrss.items[i].title}
{$internalrss.items[i].description}{$internalrss.items[i].pubDate}
...read more story



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