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

📄 upgradefunctions.inc.php.svn-base

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
        require_once(KT_LIB_DIR . '/metadata/fieldset.inc.php');        $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',

⌨️ 快捷键说明

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