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

📄 upgradefunctions.inc.php.svn-base

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
		$schemautil = KTSchemaUtil::getSingleton();		$schemautil->createForeignKeys();    }    function createIndexes()    {		$schemautil = KTSchemaUtil::getSingleton();		$schemautil->createIndexes();    }    // {{{ setStorageEngine    function setStorageEngine()    {		$schemautil = KTSchemaUtil::getSingleton();		$schemautil->setTablesToInnoDb();    }    // }}}    function _removeSlashesFromFolders($folderid, $name, $full_path, $folder_ids)    {    	$name = str_replace(array('/','\\'),array('-','-'), $name);    	// get folders		$sql = "select id, name from folders where parent_id=$folderid";		$ids = DBUtil::getResultArray($sql);		// set to the latest values		$parent_ids = implode(',', $folder_ids);		if (empty($parent_ids)) $parent_ids = null;		if (empty($full_path)) $full_path = null;		if($folderid != 1) $full_path = (empty($full_path))?$name:($full_path . '/' . $name);		$folder_ids [] = $folderid;		$sql = "update folders set name=?,description=?, full_path=?, parent_folder_ids=? where id=?";		DBUtil::runQuery(array($sql, array($name,$name, $full_path, $parent_ids, $folderid)));		// update documents		$sql = "update documents set full_path=?, parent_folder_ids=? where folder_id=?";		DBUtil::runQuery(array($sql, array($full_path, $parent_ids, $folderid)));		// recurse subfolders		foreach($ids as $row)		{			$id = $row['id'];			$name = $row['name'];			UpgradeFunctions::_removeSlashesFromFolders($id, $name, $full_path, $folder_ids);		}    }    function removeSlashesFromObjects()    {    	$GLOBALS["_OBJECTCACHE"] = array();    	$sql = "select name from folders where id=1";		$name = DBUtil::getOneResultKey($sql,'name');		UpgradeFunctions::_removeSlashesFromFolders(1, $name, array(), array());		DBUtil::commit();    }    // {{{ _setPermissionFolder    function _setPermissionFolder($iFolderId) {        global $default;        $iInheritedFolderId = $iFolderId;        if ($iInheritedFolderId == 1) {            $sQuery = "UPDATE folders SET permission_folder_id = 1 WHERE id = 1";            DBUtil::runQuery($sQuery);            return;        }        while ($bFoundPermissions !== true) {            /*ok*/$aCheckQuery = array('SELECT id FROM groups_folders_link WHERE folder_id = ? LIMIT 1', $iInheritedFolderId);            if (count(DBUtil::getResultArrayKey($aCheckQuery, 'id')) == 0) {                $default->log->debug('No direct permissions on folder ' . $iInheritedFolderId);                $bInherited = true;                $aParentQuery = array('SELECT parent_id FROM folders WHERE id = ? LIMIT 1', $iInheritedFolderId);                $iParentId = DBUtil::getOneResultKey($aParentQuery, 'parent_id');                $iInheritedFolderId = $iParentId;                if ($iInheritedFolderId === false) {                    return;                }                if ($iInheritedFolderId === null) {                    return;                }                // if our parent knows the permission folder, use that.                $aQuery = array("SELECT permission_folder_id FROM folders WHERE id = ?", array($iInheritedFolderId));                $iPermissionFolderID = DBUtil::getOneResultKey($aQuery, 'permission_folder_id');                if (!empty($iPermissionFolderID)) {                    $aQuery = array(                            "UPDATE folders SET permission_folder_id = ? WHERE id = ?",                            array($iPermissionFolderID, $iFolderId)                            );                    DBUtil::runQuery($aQuery);                    return;                }                $default->log->debug('... trying parent: ' . $iInheritedFolderId);            } else {                $default->log->debug('Found direct permissions on folder ' . $iInheritedFolderId);                $iPermissionFolderID = $iInheritedFolderId;                $aQuery = array(                        "UPDATE folders SET permission_folder_id = ? WHERE id = ?",                        array($iPermissionFolderID, $iFolderId)                        );                DBUtil::runQuery($aQuery);                return;            }        }        $default->log->error('No permissions whatsoever for folder ' . $iFolderId);        // 0, which can never exist, for non-existent.  null for not set yet (database upgrade).        $iPermissionFolderID = 0;        $aQuery = array(                "UPDATE folders SET permission_folder_id = ? WHERE id = ?",                array($iPermissionFolderID, $iFolderId)                );        DBUtil::runQuery($aQuery);    }    // }}}    // {{{ setPermissionFolder    function setPermissionFolder() {        global $default;        require_once(KT_LIB_DIR . '/foldermanagement/Folder.inc');        $sQuery = "SELECT id FROM $default->folders_table WHERE permission_folder_id IS NULL ORDER BY LENGTH(parent_folder_ids)";        $aIDs = DBUtil::getResultArrayKey($sQuery, 'id');        foreach ($aIDs as $iId) {            $res = UpgradeFunctions::_setPermissionFolder($iId);            if (PEAR::isError($res)) {                return $res;            }        }    }    // }}}    // {{{ addTemplateMimeTypes    function addTemplateMimeTypes() {        global $default;        $table = $default->mimetypes_table;        $query = sprintf('SELECT id FROM %s WHERE filetypes = ?',                $table);        $newTypes = array(                array(                    'filetypes' => 'xlt',                    'mimetypes' => 'application/vnd.ms-excel',                    'icon_path' => 'icons/excel.gif',                    ),                array(                    'filetypes' => 'dot',                    'mimetypes' => 'application/msword',                    'icon_path' => 'icons/word.gif',                    ),                );        foreach ($newTypes as $types) {            $res = DBUtil::getOneResultKey(array($query, $types['filetypes']), 'id');            if (PEAR::isError($res)) {                return $res;            }            if (is_null($res)) {                $res = DBUtil::autoInsert($table, $types);                if (PEAR::isError($res)) {                    return $res;                }            }        }        return true;    }    // }}}    // {{{ _setRead    function _setRead($iID, $oPO) {        require_once(KT_LIB_DIR . '/permissions/permission.inc.php');        require_once(KT_LIB_DIR . '/permissions/permissionutil.inc.php');        $sTable = 'groups_folders_link';        $oPermission = KTPermission::getByName('ktcore.permissions.read');        $query = "SELECT group_id FROM $sTable WHERE folder_id = ? AND (can_read = ? OR can_write = ?)";        $aParams = array($iID, true, true);        $aGroupIDs = DBUtil::getResultArrayKey(array($query, $aParams), 'group_id');        $aAllowed = array("group" => $aGroupIDs);        KTPermissionUtil::setPermissionForID($oPermission, $oPO, $aAllowed);    }    // }}}    // {{{ _setWrite    function _setWrite($iID, $oPO) {        require_once(KT_LIB_DIR . '/permissions/permission.inc.php');        require_once(KT_LIB_DIR . '/permissions/permissionutil.inc.php');        $sTable = 'groups_folders_link';        $oPermission = KTPermission::getByName('ktcore.permissions.write');        $query = "SELECT group_id FROM $sTable WHERE folder_id = ? AND can_write = ?";        $aParams = array($iID, true);        $aGroupIDs = DBUtil::getResultArrayKey(array($query, $aParams), 'group_id');        $aAllowed = array("group" => $aGroupIDs);        KTPermissionUtil::setPermissionForID($oPermission, $oPO, $aAllowed);    }    // }}}    // {{{ _setAddFolder    function _setAddFolder($iID, $oPO) {        require_once(KT_LIB_DIR . '/permissions/permission.inc.php');        require_once(KT_LIB_DIR . '/permissions/permissionutil.inc.php');        $sTable = 'groups_folders_link';        $oPermission = KTPermission::getByName('ktcore.permissions.addFolder');        $query = "SELECT group_id FROM $sTable WHERE folder_id = ? AND can_write = ?";        $aParams = array($iID, true);        $aGroupIDs = DBUtil::getResultArrayKey(array($query, $aParams), 'group_id');        $aAllowed = array("group" => $aGroupIDs);        KTPermissionUtil::setPermissionForID($oPermission, $oPO, $aAllowed);    }    // }}}    // {{{ setPermissionObject    function setPermissionObject() {        global $default;        require_once(KT_LIB_DIR . '/permissions/permissionobject.inc.php');        DBUtil::runQuery("UPDATE folders SET permission_folder_id = 1 WHERE id = 1");        $aBrokenFolders = DBUtil::getResultArray('SELECT id, parent_id FROM folders WHERE permission_folder_id = 0 OR permission_folder_id IS NULL ORDER BY LENGTH(parent_folder_ids)');        foreach ($aBrokenFolders as $aFolderInfo) {            $iFolderId = $aFolderInfo['id'];            $iParentFolderId = $aFolderInfo['parent_id'];            $iParentFolderPermissionFolder = DBUtil::getOneResultKey(array("SELECT permission_folder_id FROM folders WHERE id = ?", array($iParentFolderId)), 'permission_folder_id');            $res = DBUtil::whereUpdate('folders', array('permission_folder_id' => $iParentFolderPermissionFolder), array('id' => $iFolderId));        }        // First, set permission object on all folders that were        // "permission folders".        $query = "SELECT id FROM $default->folders_table WHERE permission_folder_id = id AND permission_object_id IS NULL";        $aIDs = DBUtil::getResultArrayKey($query, 'id');        foreach ($aIDs as $iID) {            $oPO =& KTPermissionObject::createFromArray(array());            if (PEAR::isError($oPO)) {                var_dump($oPO);                exit(0);            }            $sTableName = KTUtil::getTableName('folders');            $query = sprintf("UPDATE %s SET permission_object_id = %d WHERE id = %d", $sTableName, $oPO->getId(), $iID);            $res = DBUtil::runQuery($query);            UpgradeFunctions::_setRead($iID, $oPO);            UpgradeFunctions::_setWrite($iID, $oPO);            UpgradeFunctions::_setAddFolder($iID, $oPO);        }        // Next, set permission object on all folders that weren't        // "permission folders" by using the permission object on their        // permission folders.        $query = "SELECT id FROM $default->folders_table WHERE permission_object_id IS NULL";        $aIDs = DBUtil::getResultArrayKey($query, 'id');        foreach ($aIDs as $iID) {            $sTableName = KTUtil::getTableName('folders');            $query = sprintf("SELECT F2.permission_object_id AS poi FROM %s AS F LEFT JOIN %s AS F2 ON F2.id = F.permission_folder_id WHERE F.id = ?", $sTableName, $sTableName);            $aParams = array($iID);            $iPermissionObjectId = DBUtil::getOneResultKey(array($query, $aParams), 'poi');            $sTableName = KTUtil::getTableName('folders');            $query = sprintf("UPDATE %s SET permission_object_id = %d WHERE id = %d", $sTableName, $iPermissionObjectId, $iID);            DBUtil::runQuery($query);        }        $sDocumentsTable = KTUtil::getTableName('documents');        $sFoldersTable = KTUtil::getTableName('folders');        $query = sprintf("UPDATE %s AS D, %s AS F SET D.permission_object_id = F.permission_object_id WHERE D.folder_id = F.id AND D.permission_object_id IS NULL", $sDocumentsTable, $sFoldersTable);        DBUtil::runQuery($query);    }    // }}}    // {{{ createFieldSets    function createFieldSets () {        global $default;

⌨️ 快捷键说明

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