ktrss.inc.php.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 749 行 · 第 1/2 页
SVN-BASE
749 行
$xmlItemHead = "<item>\n <title>".htmlspecialchars($aItem[0][0][name], ENT_QUOTES, 'UTF-8')."</title>\n <link>".$hostPath."action.php?kt_path_info=ktcore.actions.".htmlspecialchars($sTypeSelect, ENT_QUOTES, 'UTF-8')."=".$aItem[0][0]['id']."</link>\n <description>\n"; $htmlItem = "<table border='0' width='90%'>\n <tr>\n <td width='5%' height='16px'> <a href='".$hostPath."action.php?kt_path_info=ktcore.actions.".$sTypeSelect."=".$aItem[0][0][id]."' > <img src='".$aItem[0][mimeTypeIcon]."' align='left' height='16px' width='16px' alt='' border='0' /></a> </td>\n <td align='left'> ".$aItem[0][mimeTypeFName]."</td>\n </tr>\n <tr>\n <td colspan='2'>\n ".ucfirst($aItem[0]['itemType'])." Information (ID: ".$aItem[0][0][id].")</>\n <hr>\n <table width='95%'>\n <tr>\n <td>"._kt('Filename').": ".htmlspecialchars($aItem[0][0][filename], ENT_QUOTES, 'UTF-8')."</td>\n </tr>\n <tr>\n <td>"._kt('Author').": ".htmlspecialchars($aItem[0][0][author], ENT_QUOTES, 'UTF-8')."</td>\n </tr>\n <tr>\n <td>"._kt('Owner').": ".htmlspecialchars($owner, ENT_QUOTES, 'UTF-8')."</td>\n <td></td>\n </tr>\n ".$type."\n <tr>\n <td>"._kt('Workflow status').": ".htmlspecialchars($workflow, ENT_QUOTES, 'UTF-8')."</td>\n <td></td>\n </tr>\n </table><br>\n "._kt('Transaction Summary (Last 4)')."\n <hr>\n <table width='100%'>\n"; foreach($aItem[1] as $item){ $htmlItem .= "<tr>\n <td>".$item[type]." name:</td>\n <td>".htmlspecialchars($item[name], ENT_QUOTES, 'UTF-8')."</td>\n </tr>\n <tr>\n <td>Path:</td>\n <td>".htmlspecialchars($item[fullpath], ENT_QUOTES, 'UTF-8')."</td>\n </tr>\n <tr>\n <td>Transaction:</td>\n <td>".htmlspecialchars($item[transaction_name], ENT_QUOTES, 'UTF-8')."</td>\n </tr>\n <tr>\n <td>Comment:</td>\n <td>".htmlspecialchars($item[comment], ENT_QUOTES, 'UTF-8')."</td>\n </tr>\n <tr>\n"; if($item[version]){ $htmlItem .= "<td>Version:</td>\n <td>".$item[version]."</td>\n"; } $htmlItem .= "</tr>\n <tr>\n <td>Date:</td>\n <td>".$item[datetime]."</td>\n </tr>\n <tr>\n <td>User:</td>\n <td>".htmlspecialchars($item[user_name], ENT_QUOTES, 'UTF-8')."</td>\n </tr>\n <tr>\n <td colspan='2'><hr width='100' align='left'></td>\n </tr>\n"; } $htmlItem .= "</table>\n </td>\n </tr>\n </table>"; $xmlItemFooter = "</description>\n</item>\n"; // Use htmlspecialchars to allow html tags in the xml. $htmlItem = htmlspecialchars($htmlItem, ENT_QUOTES, 'UTF-8'); $feed .= $xmlItemHead.$htmlItem.$xmlItemFooter; } $footer = "</channel>\n</rss>\n"; return $head.$feed.$footer; } // Takes in an array as a parameter and returns rss2.0 compatible xml function errorToXML($sError){ // Build path to host $aPath = explode('/', trim($_SERVER['PHP_SELF'])); global $default; $hostPath = "http" . ($default->sslEnabled ? "s" : "") . "://".$_SERVER['HTTP_HOST']."/".$aPath[1]."/"; $feed = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n <rss version=\"2.0\">\n <channel>\n <title>".APP_NAME." RSS</title>\n <copyright>(c) 2008 KnowledgeTree Inc.</copyright>\n <link>{$hostPath}</link>\n <description>KT-RSS</description>\n <image>\n <title>".APP_NAME." RSS</title>\n <width>140</width>\n <height>28</height> <link>{$hostPath}knowledgeTree/</link>\n <url>{$hostPath}resources/graphics/ktlogo_rss.png</url>\n </image>\n <item>\n <title>Feed load error</title>\n <description>".$sError."</description>\n </item>\n </channel>\n </rss>\n"; return $feed; } // Delete feed function function deleteFeed($iFeedId){ $res = DBUtil::autoDelete('plugin_rss', $iFeedId); } // Get title for external feed function getExternalFeedTitle($iFeedId){ $sQuery = "SELECT title FROM plugin_rss WHERE id = ?"; $aParams = array($iFeedId); $sFeedTitle = DBUtil::getOneResultKey(array($sQuery, $aParams), 'title'); if (PEAR::isError($sFeedTitle)) { // XXX: log error return false; } if ($sFeedTitle) { return $sFeedTitle; } } // Get url for external feed function getExternalFeedUrl($iFeedId){ $sQuery = "SELECT url FROM plugin_rss WHERE id = ?"; $aParams = array($iFeedId); $sFeedUrl = DBUtil::getOneResultKey(array($sQuery, $aParams), 'url'); if (PEAR::isError($sFeedUrl)) { // XXX: log error return false; } if ($sFeedUrl) { return $sFeedUrl; } } // Update external feed data function updateFeed($iFeedId, $sFeedTitle, $sFeedUrl){ $sQuery = "UPDATE plugin_rss SET title=?, url=? WHERE id=?"; $aParams = array($sFeedTitle, $sFeedUrl, $iFeedId); $res = DBUtil::runQuery(array($sQuery, $aParams)); return $res; } // Create new external feed function createFeed($sFeedTitle, $sFeedUrl, $iUserId){ $aParams = array( 'user_id' => $iUserId, 'url' => $sFeedUrl, 'title' => $sFeedTitle, ); $res = DBUtil::autoInsert('plugin_rss', $aParams); return $res; } // 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 if(!isset($_SESSION["userID"])){ $_SESSION['userID'] = $iUserId; } // get document object $oDocument =& Document::get($iDocumentId); if (PEAR::isError($oDocument)) { return false; } // check permissions for document if(Permission::userHasDocumentReadPermission($oDocument)){ return true; }else{ return false; } } // Function to validate that a user has permissions for a specific folder function validateFolderPermissions($iUserId, $iFolderId){ // check if user id is in session. If not, set it if(!isset($_SESSION["userID"])){ $_SESSION['userID'] = $iUserId; } // get folder object $oFolder = Folder::get($iFolderId); if (PEAR::isError($oFolder)) { return false; } // check permissions for folder if(Permission::userHasFolderReadPermission($oFolder)){ return true; }else{ return false; } } // get icon link for rss function getRssLinkIcon(){ // built server path global $default; $sHostPath = "http" . ($default->sslEnabled ? "s" : "") . "://".$_SERVER['HTTP_HOST']."/".$GLOBALS['KTRootUrl']."/"; // create image $icon = "<img src='".$sHostPath."resources/graphics/rss.gif' alt='RSS' border=0/>"; return $icon; } // get rss link for a document/folder function getRssLink($iItemId, $sItemType){ $item = strToLower($sItemType); if($item == 'folder'){ $sItemParameter = '?folderId'; }else if($item == 'document'){ $sItemParameter = '?docId'; } // built server path global $default; $sHostPath = "http" . ($default->sslEnabled ? "s" : "") . "://" . $_SERVER['HTTP_HOST']; // build link $sLink = $sHostPath.KTBrowseUtil::buildBaseUrl('rss').$sItemParameter.'='.$iItemId; return $sLink; } // get rss icon link function getImageLink($iItemId, $sItemType){ return "<a href='".KTrss::getRssLink($iItemId, $sItemType)."' target='_blank'>".KTrss::getRssLinkIcon()."</a>"; } // 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){ global $default; $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" . ($default->sslEnabled ? "s" : "") . "://".$_SERVER['HTTP_HOST']."/".$GLOBALS['KTRootUrl']."/resources/mimetypes/".KTMime::getIconPath($mimeinfo['typeId']).".png"; //icon path return $mimeinfo; } // get the default folder icon function getFolderIcon(){ global $default; return $mimeinfo['typeIcon'] = "http" . ($default->sslEnabled ? "s" : "") . "://".$_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($aDocumentIds){ $sDocumentIds = implode(', ', $aDocumentIds); $sQuery = "SELECT DT.datetime AS datetime, 'Document' AS type, DMV.name, D.full_path AS fullpath, DTT.name AS transaction_name, U.name AS user_name, DT.version AS version, DT.comment AS comment 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 LEFT JOIN documents AS D ON DT.document_id = D.id LEFT JOIN document_metadata_version AS DMV ON D.metadata_version_id = DMV.id WHERE DT.document_id IN ($sDocumentIds) ORDER BY DT.datetime DESC LIMIT 4"; $aDocumentTransactions = DBUtil::getResultArray($sQuery); if(!PEAR::isError($aDocumentTransactions)){ return $aDocumentTransactions; } } // Get a listing of the latest transactions for a folder and its child folders function getFolderTransactions($aFolderIds){ $sFolderIds = implode(', ', $aFolderIds); $sQuery = "SELECT FT.datetime AS datetime, 'Folder' AS type, F.name, F.full_path AS fullpath, DTT.name AS transaction_name, U.name AS user_name, FT.comment AS comment 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 LEFT JOIN folders AS F ON FT.folder_id = F.id WHERE FT.folder_id IN ($sFolderIds) ORDER BY FT.datetime DESC LIMIT 4"; $aFolderTransactions = DBUtil::getResultArray($sQuery); return $aFolderTransactions; }}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?