📄 upgradefunctions.inc.php.tmp
字号:
); $res = DBUtil::autoInsert($sPermissionsTable, $aPermissionInfo); if (PEAR::isError($res)) { return $res; } $iDeletePermissionId = $res; $sQuery = "SELECT id FROM $sPermissionsTable WHERE name = ?"; $aParams = array("ktcore.permissions.write"); $iWritePermissionId = DBUtil::getOneResultKey(array($sQuery, $aParams), "id"); $sPermissionAssignmentsTable = KTUtil::getTableName('permission_assignments'); $sQuery = "SELECT permission_object_id, permission_descriptor_id FROM $sPermissionAssignmentsTable WHERE permission_id = ?"; $aParams = array($iWritePermissionId); $aRows = DBUtil::getResultArray(array($sQuery, $aParams)); foreach ($aRows as $aRow) { $aRow['permission_id'] = $iSecurityPermissionId; DBUtil::autoInsert($sPermissionAssignmentsTable, $aRow); $aRow['permission_id'] = $iDeletePermissionId; DBUtil::autoInsert($sPermissionAssignmentsTable, $aRow); } $sDocumentTable = KTUtil::getTableName('documents'); $sFolderTable = KTUtil::getTableName('folders'); DBUtil::runQuery("UPDATE $sDocumentTable SET permission_lookup_id = NULL"); DBUtil::runQuery("UPDATE $sFolderTable SET permission_lookup_id = NULL"); } // }}} // {{{ addTransactionTypes3013 function addTransactionTypes3013() { $sTable = KTUtil::getTableName('transaction_types'); $aTypes = array( 'ktcore.transactions.permissions_change' => 'Permissions changed', 'ktcore.transactions.role_allocations_change' => 'Role allocations changed', ); foreach ($aTypes as $sNamespace => $sName) { $res = DBUtil::autoInsert($sTable, array( 'namespace' => $sNamespace, 'name' => $sName, )); } } // }}} // {{{ createWorkflowPermission function createWorkflowPermission() { $sPermissionsTable = KTUtil::getTableName('permissions'); $aPermissionInfo = array( 'human_name' => 'Core: Manage workflow', 'name' => 'ktcore.permissions.workflow', 'built_in' => true, ); $res = DBUtil::autoInsert($sPermissionsTable, $aPermissionInfo); if (PEAR::isError($res)) { return $res; } $iWorkflowPermissionId = $res; $sQuery = "SELECT id FROM $sPermissionsTable WHERE name = ?"; $aParams = array("ktcore.permissions.security"); $iSecurityPermissionId = DBUtil::getOneResultKey(array($sQuery, $aParams), "id"); $sPermissionAssignmentsTable = KTUtil::getTableName('permission_assignments'); $sQuery = "SELECT permission_object_id, permission_descriptor_id FROM $sPermissionAssignmentsTable WHERE permission_id = ?"; $aParams = array($iSecurityPermissionId); $aRows = DBUtil::getResultArray(array($sQuery, $aParams)); foreach ($aRows as $aRow) { $aRow['permission_id'] = $iWorkflowPermissionId; DBUtil::autoInsert($sPermissionAssignmentsTable, $aRow); } $sDocumentTable = KTUtil::getTableName('documents'); $sFolderTable = KTUtil::getTableName('folders'); DBUtil::runQuery("UPDATE $sDocumentTable SET permission_lookup_id = NULL"); DBUtil::runQuery("UPDATE $sFolderTable SET permission_lookup_id = NULL"); } // }}} // {{{ fixDocumentRoleAllocation function fixDocumentRoleAllocation() { $sUpgradesTable = KTUtil::getTableName('upgrades'); $f = array( 'descriptor' => 'sql*3.0.2*0*3.0.2/document_role_allocations.sql', 'result' => true, ); $res = DBUtil::autoInsert($sUpgradesTable, $f); return; } // }}} // {{{ createFolderDetailsPermission function createFolderDetailsPermission() { $sPermissionsTable = KTUtil::getTableName('permissions'); $bExists = DBUtil::getOneResultKey("SELECT COUNT(id) AS cnt FROM $sPermissionsTable WHERE name = 'ktcore.permissions.folder_details'", 'cnt'); if ($bExists) { return; } DBUtil::startTransaction(); $aPermissionInfo = array( 'human_name' => 'Core: Folder Details', 'name' => 'ktcore.permissions.folder_details', 'built_in' => true, ); $res = DBUtil::autoInsert($sPermissionsTable, $aPermissionInfo); if (PEAR::isError($res)) { return $res; } $iFolderDetailsPermissionId = $res; $sQuery = "SELECT id FROM $sPermissionsTable WHERE name = ?"; $aParams = array("ktcore.permissions.read"); $iReadPermissionId = DBUtil::getOneResultKey(array($sQuery, $aParams), "id"); $sPermissionAssignmentsTable = KTUtil::getTableName('permission_assignments'); $sQuery = "SELECT permission_object_id, permission_descriptor_id FROM $sPermissionAssignmentsTable WHERE permission_id = ?"; $aParams = array($iReadPermissionId); $aRows = DBUtil::getResultArray(array($sQuery, $aParams)); foreach ($aRows as $aRow) { $aRow['permission_id'] = $iFolderDetailsPermissionId; DBUtil::autoInsert($sPermissionAssignmentsTable, $aRow); } $sDocumentTable = KTUtil::getTableName('documents'); $sFolderTable = KTUtil::getTableName('folders'); DBUtil::runQuery("UPDATE $sDocumentTable SET permission_lookup_id = NULL"); DBUtil::runQuery("UPDATE $sFolderTable SET permission_lookup_id = NULL"); DBUtil::commit(); } // }}} // {{{ generateWorkflowTriggers function generateWorkflowTriggers() { require_once(KT_LIB_DIR . '/workflow/workflowutil.inc.php'); // get all the transitions, and add a trigger to the util with the appropriate settings. $KTWFTriggerReg =& KTWorkflowTriggerRegistry::getSingleton(); $aTransitions = KTWorkflowTransition::getList(); foreach ($aTransitions as $oTransition) { // guard perm $iGuardPerm = $oTransition->getGuardPermissionId(); if (!is_null($iGuardPerm)) { $sNamespace = 'ktcore.workflowtriggers.permissionguard'; $oPerm = KTPermission::get($iGuardPerm); $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($sNamespace); $oTriggerConfig = KTWorkflowTriggerInstance::createFromArray(array( 'transitionid' => KTUtil::getId($oTransition), 'namespace' => $sNamespace, 'config' => array('perms' => array($oPerm->getName())), )); } // guard group $iGuardGroup = $oTransition->getGuardGroupId(); if (!is_null($iGuardGroup)) { $sNamespace = 'ktcore.workflowtriggers.groupguard'; $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($sNamespace); $oTriggerConfig = KTWorkflowTriggerInstance::createFromArray(array( 'transitionid' => KTUtil::getId($oTransition), 'namespace' => $sNamespace, 'config' => array('group_id' => $iGuardGroup), )); } // guard role $iGuardRole = $oTransition->getGuardRoleId(); if (!is_null($iGuardRole)) { $sNamespace = 'ktcore.workflowtriggers.roleguard'; $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($sNamespace); $oTriggerConfig = KTWorkflowTriggerInstance::createFromArray(array( 'transitionid' => KTUtil::getId($oTransition), 'namespace' => $sNamespace, 'config' => array('role_id' => $iGuardRole), )); } // guard condition $iGuardCondition = $oTransition->getGuardConditionId(); if (!is_null($iGuardCondition)) { $sNamespace = 'ktcore.workflowtriggers.conditionguard'; $oTrigger = $KTWFTriggerReg->getWorkflowTrigger($sNamespace); $oTriggerConfig = KTWorkflowTriggerInstance::createFromArray(array( 'transitionid' => KTUtil::getId($oTransition), 'namespace' => $sNamespace, 'config' => array('condition_id' => $iGuardCondition), )); } } } // }}} // {{{ rebuildAllPermissions function rebuildAllPermissions() { $oRootFolder = Folder::get(1); KTPermissionUtil::updatePermissionLookupRecursive($oRootFolder); } // }}} // {{{ _upgradeSavedSearch function _upgradeSavedSearch($aSearch) { $aMapping = array('-1' => 'ktcore.criteria.name', '-6' => 'ktcore.criteria.id', '-2' => 'ktcore.criteria.title', '-3' => 'ktcore.criteria.creator', '-4' => 'ktcore.criteria.datecreated', '-5' => 'ktcore.criteria.documenttype', '-7' => 'ktcore.criteria.datemodified', '-8' => 'ktcore.criteria.size', '-9' => 'ktcore.criteria.content', '-10' => 'ktcore.criteria.workflowstate', '-13' => 'ktcore.criteria.discussiontext', '-12' => 'ktcore.criteria.searchabletext', '-11' => 'ktcore.criteria.transactiontext'); $aFieldsets =& KTFieldset::getList('disabled != true'); foreach($aFieldsets as $oFieldset) { $aFields =& DocumentField::getByFieldset($oFieldset); foreach($aFields as $oField) { $sNamespace = $oFieldset->getNamespace() . '.' . $oField->getName(); $sId = (string) $oField->getId(); $aMapping[$sId] = $sNamespace; } } foreach(array_keys($aSearch['subgroup']) as $sgkey) { $sg =& $aSearch['subgroup'][$sgkey]; foreach(array_keys($sg['values']) as $vkey) { $item =& $sg['values'][$vkey]; $type = $item['type']; $toreplace = 'bmd' . ((int)$type < 0 ? '_' : '') . abs((int)$type); $item['type'] = $aMapping[$type]; $nData = array(); foreach($item['data'] as $k=>$v) { $k = str_replace($toreplace, $aMapping[$type], $k); $nData[$k] = $v; } $item['data'] = $nData; } } return $aSearch; } // }}} // {{{ upgradeSavedSearches function upgradeSavedSearches() { foreach(KTSavedSearch::getSearches() as $oS) { $sS = $oS->getSearch(); $aSearch = UpgradeFunctions::_upgradeSavedSearch($sS); $oS->setSearch($aSearch); $oS->update(); } } // }}} // {{{ cleanupGroupMembership function cleanupGroupMembership() { // 4 cases. $child_query = 'select L.id as link_id FROM groups_groups_link as L left outer join groups_lookup as G on (L.member_group_id = G.id) WHERE G.id IS NULL'; $parent_query = 'select L.id as link_id FROM groups_groups_link as L left outer join groups_lookup as G on (L.parent_group_id = G.id) WHERE G.id IS NULL'; $group_query = 'select L.id as link_id FROM users_groups_link as L left outer join groups_lookup as G on (L.group_id = G.id) WHERE G.id IS NULL'; $user_query = 'select L.id as link_id FROM users_groups_link as L left outer join users as U on (L.user_id = U.id) WHERE U.id IS NULL'; $bad_group_links = array(); $res = DBUtil::getResultArrayKey(array($child_query, null), 'link_id'); if (PEAR::isError($res)) { return $res; } else { $bad_group_links = $res; } $res = DBUtil::getResultArrayKey(array($parent_query, null), 'link_id'); if (PEAR::isError($res)) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -