📄 upgradefunctions.inc.php
字号:
'built_in' => true,
);
$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');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -