📄 upgradefunctions.inc.php.tmp
字号:
$sFieldsTable = KTUtil::getTableName('document_fields'); $sQuery = sprintf("SELECT id, name, is_generic FROM %s", $sFieldsTable); $aFields = DBUtil::getResultArray($sQuery); foreach ($aFields as $aField) { $sName = $aField['name']; $sNamespace = 'local.' . str_replace(array(' '), array(), strtolower($sName)); $iFieldId = $aField['id']; $bIsGeneric = $aField['is_generic']; $sFieldsetsTable = KTUtil::getTableName('fieldsets'); $iFieldsetId = DBUtil::autoInsert($sFieldsetsTable, array( 'name' => $sName, 'namespace' => $sNamespace, 'mandatory' => false, 'is_conditional' => false, 'master_field' => $iFieldId, 'is_generic' => $bIsGeneric, )); if (PEAR::isError($iFieldsetId)) { return $iFieldsetId; } $sQuery = sprintf("UPDATE %s SET parent_fieldset = ? WHERE id = ?", $sFieldsTable); $aParams = array($iFieldsetId, $iFieldId); $res = DBUtil::runQuery(array($sQuery, $aParams)); if (PEAR::isError($res)) { return $res; } $sTable = KTUtil::getTableName('document_type_fields'); $aQuery = array( "SELECT document_type_id FROM $sTable WHERE field_id = ?", array($iFieldId) ); $aDocumentTypeIds = DBUtil::getResultArrayKey($aQuery, 'document_type_id'); $sTable = KTUtil::getTableName('document_type_fieldsets'); foreach ($aDocumentTypeIds as $iDocumentTypeId) { $res = DBUtil::autoInsert($sTable, array( 'document_type_id' => $iDocumentTypeId, 'fieldset_id' => $iFieldsetId, )); if (PEAR::isError($res)) { return $res; } } } } // }}} // {{{ normaliseDocuments function normaliseDocuments() { $sDocumentsTable = KTUtil::getTableName('documents'); DBUtil::runQuery("SET FOREIGN_KEY_CHECKS=0"); $aDocuments = DBUtil::getResultArray("SELECT * FROM $sDocumentsTable WHERE metadata_version_id IS NULL"); $oConfig = KTConfig::getSingleton(); foreach ($aDocuments as $aRow) { $aMetadataVersionIds = array(); $sTransTable = KTUtil::getTableName("document_transactions"); $sQuery = "SELECT DISTINCT version, datetime, user_id FROM $sTransTable WHERE document_id = ? AND transaction_namespace = ?"; $aParams = array($aRow['id'], 'ktcore.transactions.check_out'); $sCurrentVersion = sprintf("%d.%d", $aRow['major_version'], $aRow['minor_version']); $aVersions = DBUtil::getResultArray(array($sQuery, $aParams)); $iMetadataVersion = 0; foreach ($aVersions as $sVersionInfo) { $sVersion = $sVersionInfo['version']; $sDate = $sVersionInfo['datetime']; $iUserId = $sVersionInfo['user_id']; $aVersionSplit = split("\.", $sVersion); $iMajor = $aVersionSplit[0]; $iMinor = $aVersionSplit[1]; $sStoragePath = $aRow['storage_path'] . "-" . $sVersion; $sPath = sprintf("%s/%s", $oConfig->get('urls/documentRoot'), $sStoragePath); if ($sCurrentVersion == $sVersion) { continue; } if (file_exists($sPath)) { $iFileSize = filesize($sPath); } else { $iFileSize = $aRow['size']; } $aContentInfo = array( 'document_id' => $aRow['id'], 'filename' => $aRow['filename'], 'size' => $iFileSize, 'mime_id' => $aRow['mime_id'], 'major_version' => $iMajor, 'minor_version' => $iMinor, 'storage_path' => $sStoragePath, ); $iContentId = DBUtil::autoInsert(KTUtil::getTableName('document_content_version'), $aContentInfo); $aMetadataInfo = array( 'document_id' => $aRow['id'], 'content_version_id' => $iContentId, 'document_type_id' => $aRow['document_type_id'], 'name' => $aRow['name'], 'description' => $aRow['description'], 'status_id' => $aRow['status_id'], 'metadata_version' => $iMetadataVersion, 'version_created' => $sDate, 'version_creator_id' => $iUserId, ); $iMetadataId = DBUtil::autoInsert(KTUtil::getTableName('document_metadata_version'), $aMetadataInfo); $aMetadataVersionIds[] = $iMetadataId; $iMetadataVersion++; } $aContentInfo = array( 'document_id' => $aRow['id'], 'filename' => $aRow['filename'], 'size' => $aRow['size'], 'mime_id' => $aRow['mime_id'], 'major_version' => $aRow['major_version'], 'minor_version' => $aRow['minor_version'], 'storage_path' => $aRow['storage_path'], ); $iContentId = DBUtil::autoInsert(KTUtil::getTableName('document_content_version'), $aContentInfo); $aMetadataInfo = array( 'document_id' => $aRow['id'], 'content_version_id' => $iContentId, 'document_type_id' => $aRow['document_type_id'], 'name' => $aRow['name'], 'description' => $aRow['description'], 'status_id' => $aRow['status_id'], 'metadata_version' => $iMetadataVersion, 'version_created' => $aRow['modified'], 'version_creator_id' => $aRow['modified_user_id'], ); $iMetadataId = DBUtil::autoInsert(KTUtil::getTableName('document_metadata_version'), $aMetadataInfo); $aMetadataVersionIds[] = $iMetadataId; if (PEAR::isError($iMetadataId)) { var_dump($iMetadataId); } $sDFLTable = KTUtil::getTableName('document_fields_link'); $aInfo = DBUtil::getResultArray(array("SELECT document_field_id, value FROM $sDFLTable WHERE metadata_version_id IS NULL AND document_id = ?", array($aRow['id']))); foreach ($aInfo as $aInfoRow) { unset($aInfoRow['id']); foreach ($aMetadataVersionIds as $iMetadataVersionId) { $aInfoRow['metadata_version_id'] = $iMetadataVersionId; DBUtil::autoInsert($sDFLTable, $aInfoRow); } } DBUtil::runQuery(array("UPDATE $sDocumentsTable SET metadata_version_id = ? WHERE id = ?", array($iMetadataId, $aRow['id']))); DBUtil::runQuery(array("DELETE FROM $sDFLTable WHERE metadata_version_id IS NULL AND document_id = ?", array($aRow['id']))); } DBUtil::runQuery("SET FOREIGN_KEY_CHECKS=1"); } // }}} // {{{ applyDiscussionUpgrade function applyDiscussionUpgrade() { $sUpgradesTable = KTUtil::getTableName('upgrades'); $bIsVersionApplied = DBUtil::getOneResultKey("SELECT MAX(result) AS result FROM $sUpgradesTable WHERE descriptor = 'upgrade*2.99.7*99*upgrade2.99.7'", "result"); if (empty($bIsVersionApplied)) { // print "Version is not applied!<br />\n"; return; } $bIsDiscussionApplied = DBUtil::getOneResultKey("SELECT MAX(result) AS result FROM $sUpgradesTable WHERE descriptor = 'sql*2.99.7*0*2.99.7/discussion.sql'", "result"); if (!empty($bIsDiscussionApplied)) { // print "Discussion is applied!<br />\n"; return; } // print "Discussion is not applied!<br />\n"; $f = array( 'descriptor' => 'sql*2.99.7*0*2.99.7/discussion.sql', 'result' => true, ); $res = DBUtil::autoInsert($sUpgradesTable, $f); return; } // }}} // {{{ fixUnits function fixUnits() { // First, assign the unit to a group directly on the group // table, not via the group_units table, since groups could only // belong to a single unit anyway. $sGULTable = KTUtil::getTableName("groups_units"); $sGroupsTable = KTUtil::getTableName('groups'); $aGroupUnits = DBUtil::getResultArray("SELECT group_id, unit_id FROM $sGULTable"); foreach ($aGroupUnits as $aRow) { // $curunit = DBUtil::getOneResultKey(array("SELECT unit_id FROM $sGroupsTable WHERE id = ?", array($aRow['group_id'])), "unit_id"); DBUtil::autoUpdate($sGroupsTable, array('unit_id' => $aRow['unit_id']), $aRow['group_id']); } // Now, assign the unit folder id to the unit directly, instead // of storing the unit_id on every folder beneath the unit // folder. $sFoldersTable = KTUtil::getTableName('folders'); $sUnitsTable = KTUtil::getTableName('units'); $sQuery = "SELECT id FROM folders WHERE unit_id = ? ORDER BY LENGTH(parent_folder_ids) LIMIT 1"; $aUnitIds = DBUtil::getResultArrayKey("SELECT id FROM $sUnitsTable", 'id'); foreach ($aUnitIds as $iUnitId) { $aParams = array($iUnitId); $iFolderId = DBUtil::getOneResultKey(array($sQuery, $aParams), 'id'); if (!empty($iFolderId)) { DBUtil::autoUpdate($sUnitsTable, array('folder_id' => $iFolderId), $iUnitId); } } return true; } // }}} // {{{ createLdapAuthenticationProvider function createLdapAuthenticationProvider() { if (!file_exists(KT_DIR . '/config/environment.php')) { return; } global $default; $new_default = $default; $default = null; require_once(KT_DIR . '/config/environment.php'); $old_default = $default; $default = $new_default; if ($old_default->authenticationClass !== "LDAPAuthenticator") { return; } $sName = "Autocreated by upgrade"; $sNamespace = KTUtil::nameToLocalNamespace("authenticationsources", $sName); $aConfig = array( 'searchattributes' => split(',', 'cn,mail,sAMAccountName'), 'objectclasses' => split(',', 'user,inetOrgPerson,posixAccount'), 'servername' => $old_default->ldapServer, 'basedn' => $old_default->ldapRootDn, 'searchuser' => $old_default->ldapSearchUser, 'searchpassword' => $old_default->ldapSearchPassword, ); if ($old_default->ldapServerType == "ActiveDirectory") { $sProvider = "ktstandard.authentication.adprovider" ; } else { $sProvider = "ktstandard.authentication.ldapprovider" ; } require_once(KT_LIB_DIR . '/authentication/authenticationsource.inc.php'); $oSource = KTAuthenticationSource::createFromArray(array( 'name' => $sName, 'namespace' => $sNamespace, 'config' => serialize($aConfig), 'authenticationprovider' => $sProvider, )); if (PEAR::isError($oSource)) { return $oSource; } $sUsersTable = KTUtil::getTableName('users'); $sQuery = "UPDATE $sUsersTable SET authentication_source_id = ? WHERE authentication_source_id IS NULL AND LENGTH(authentication_details_s1)"; $aParams = array($oSource->getId()); $res = DBUtil::runQuery(array($sQuery, $aParams)); return $res; } // }}} // {{{ createSecurityDeletePermissions function createSecurityDeletePermissions() { $sPermissionsTable = KTUtil::getTableName('permissions'); $aPermissionInfo = array( 'human_name' => 'Core: Manage security', 'name' => 'ktcore.permissions.security', 'built_in' => true, ); $res = DBUtil::autoInsert($sPermissionsTable, $aPermissionInfo); if (PEAR::isError($res)) { return $res; } $iSecurityPermissionId = $res; $aPermissionInfo = array( 'human_name' => 'Core: Delete', 'name' => 'ktcore.permissions.delete', 'built_in' => true,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -