⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ktdownloadmanager.inc.php.svn-base

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 SVN-BASE
字号:
<?php/** * * $Id$ * * KTDownloadManager manages files in the download_files table. * * KnowledgeTree Community Edition * Document Management Made Simple * Copyright (C) 2008 KnowledgeTree Inc. * Portions copyright The Jam Warehouse Software (Pty) Limited * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 3 as published by the * Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with this program.  If not, see <http://www.gnu.org/licenses/>. * * You can contact KnowledgeTree Inc., PO Box 7775 #87847, San Francisco, * California 94120-7775, or email info@knowledgetree.com. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU General Public License version 3. * * In accordance with Section 7(b) of the GNU General Public License version 3, * these Appropriate Legal Notices must retain the display of the "Powered by * KnowledgeTree" logo and retain the original copyright notice. If the display of the * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices * must display the words "Powered by KnowledgeTree" and retain the original * copyright notice. * Contributor( s): ______________________________________ * */class KTDownloadManager{	var $session;	var $age;	var $download_url;	var $random;	/**	 * Constructor for the download manager.	 *	 * @param KTAPI_Session $session	 * @return KTDownloadManager	 */	function KTDownloadManager()	{		$config = &KTConfig::getSingleton();		$this->age = $config->get('webservice/downloadExpiry',5);		$protocol = $config->get('KnowledgeTree/sslEnabled')?'https':'http';		$this->download_url = $protocol . '://' . $_SERVER['HTTP_HOST'] . $config->get('webservice/downloadUrl');		$this->random=$config->get('webservice/randomKeyText','jhsdf8q1jkjpoiudfs7sd3ds1');	}	/**	 * Sets the current session.	 *	 * @param string $session	 */	function set_session($session)	{		$this->session = $session;	}	/**	 * This returns	 *	 * @access public	 * @param KTAPI_Document $document	 * @return string	 */	function allow_download($document, $content_version=null)	{		assert(!is_null($document));	   if ($document instanceof KTAPI_Document )	       $doc_id = $document->documentid;	   else if ($document instanceof Document || $document instanceof DocumentProxy)	       $doc_id = $document->getId();	   else if (is_numeric($document))	       $doc_id = $document;	   else die('gracefully');		//assert(is_a($document, 'KTAPI_Document'));		$hash = sha1("$doc_id $this->session $this->random");		$id = DBUtil::autoInsert('download_files',			array(				'document_id'=>$doc_id,				'session'=>$this->session,				'download_date'=>date('Y-m-d H:i:s'),				'hash'=>$hash				),				array('noid'=>true)			);		return $this->build_url($hash, $doc_id );	}	/**	 * This returns the url used to download a document.	 *	 * @param string $hash	 * @param int $documentid	 * @param int $userid	 * @return string	 */	function build_url($hash, $documentid )	{		return $this->download_url . "?code=$hash&d=$documentid&u=$this->session";	}	/**	 * This starts a download.	 *	 * @access public	 */	function download($document_id, $hash, $version = null)	{		$sql = "SELECT 1 FROM download_files WHERE hash=? AND session=? AND document_id=?";		$rows = DBUtil::getResultArray(array($sql, array($hash, $this->session, $document_id)));		if (PEAR::isError($rows))		{			return $rows;		}		if (count($rows) == 0)		{			return new PEAR_Error('Invalid session.');		}		// If document is being downloaded by an external user bypass the session checking		$check = strstr($this->session, 'ktext_'.$document_id);		if($check == 0 && $check !== false){		    // Use external download function		    return $this->download_ext($document_id, $hash, $version = null);		}		$storage =& KTStorageManagerUtil::getSingleton();        $ktapi = &new KTAPI();        $res = $ktapi->get_active_session($this->session);        if (PEAR::isError($res))        {        	return $res;        }        $document = $ktapi->get_document_by_id($document_id);        if (PEAR::isError($document))        {        	return $document;        }        if (!empty($version))        {            $version = KTDocumentContentVersion::get($version);            $res = $storage->downloadVersion($document->document, $version);        }        else        {            $res = $storage->download($document->document);        }        if (PEAR::isError($res))        {        	return $res;        }        $sql = "DELETE FROM download_files WHERE hash='$hash' AND session='$this->session' AND document_id=$document_id";        $result = DBUtil::runQuery($sql);        return true;	}	function download_ext($document_id, $hash, $version = null)	{	    $storage =& KTStorageManagerUtil::getSingleton();	    $document = Document::get($document_id);	    if (PEAR::isError($document))	    {	        return $document;	    }	    if (!empty($version))	    {	        $version = KTDocumentContentVersion::get($version);	        $res = $storage->downloadVersion($document, $version);	    }	    else	    {	        $res = $storage->download($document);	    }	    if (PEAR::isError($res))	    {	        return $res;	    }	    $sql = "DELETE FROM download_files WHERE hash='$hash' AND session='$this->session' AND document_id=$document_id";	    $result = DBUtil::runQuery($sql);	    return true;	}	/**	 * This will remove any temporary files that have not been dealt with in the correct timeframe.	 *	 * @access public	 */	function cleanup()	{		list($year,$mon,$day,$hour, $min) = explode(':', date('Y:m:d:H:i'));		$expirydate = date('Y-m-d H:i:s', mktime($hour, $min - $this->age, 0, $mon, $day, $year));		$sql = "DELETE FROM download_files WHERE download_date<'$expirydate'";		DBUtil::runQuery($sql);	}}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -