📄 upgradefunctions.inc.php.svn-base
字号:
$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 + -