ktworkflowtriggers.inc.php.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 671 行 · 第 1/2 页
SVN-BASE
671 行
return _kt('This trigger has no configuration.'); } // the actual permissions are stored in the array. $perms = array(); if (empty($this->aConfig) || is_null($this->aConfig['group_id'])) { return _kt('No group is required to perform this transition'); } $oGroup = Group::get($this->aConfig['group_id']); if (PEAR::isError($oGroup)) { return _kt('The group required for this trigger has been deleted, so anyone can perform this action.'); } else { return sprintf(_kt('The user must be a member of the group "<strong>%s</strong>".'), htmlentities($oGroup->getName(), ENT_NOQUOTES, 'UTF-8')); } }}class ConditionGuardTrigger extends KTWorkflowTrigger { var $sNamespace = 'ktcore.workflowtriggers.conditionguard'; var $sFriendlyName; var $sDescription; var $oTriggerInstance; var $aConfig = array(); // generic requirements - both can be true var $bIsGuard = true; var $bIsAction = false; function ConditionGuardTrigger() { $this->sFriendlyName = _kt('Conditional Restrictions'); $this->sDescription = _kt('Prevents this transition from occuring if the condition specified is not met for the document.'); } // override the allow transition hook. function allowTransition($oDocument, $oUser) { if (!$this->isLoaded()) { return true; } $iConditionId = $this->aConfig['condition_id']; $oCondition = KTSavedSearch::get($this->aConfig['condition_id']); if (PEAR::isError($oCondition)) { return true; // fail safe for cases where the role is deleted. } return KTSearchUtil::testConditionOnDocument($iConditionId, $oDocument); } function displayConfiguration($args) { // permissions $aKeyedConditions = array(); $aConditions = KTSavedSearch::getConditions(); foreach ($aConditions as $oCondition) { $aKeyedConditions[$oCondition->getId()] = $oCondition->getName(); } $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate('ktcore/workflowtriggers/condition'); $aTemplateData = array( 'context' => $this, 'conditions' => $aKeyedConditions, 'current_condition' => KTUtil::arrayGet($this->aConfig, 'condition_id'), 'args' => $args, ); return $oTemplate->render($aTemplateData); } function saveConfiguration() { $condition_id = KTUtil::arrayGet($_REQUEST, 'condition_id', null); $oCondition = KTSavedSearch::get($condition_id); if (PEAR::isError($oCondition)) { // silenty ignore $condition_id = null; // $_SESSION['ktErrorMessages'][] = _kt('Unable to use the group you specified.'); } $config = array(); $config['condition_id'] = $condition_id; $this->oTriggerInstance->setConfig($config); $res = $this->oTriggerInstance->update(); return $res; } function getConfigDescription() { if (!$this->isLoaded()) { return _kt('This trigger has no configuration.'); } // the actual permissions are stored in the array. $perms = array(); if (empty($this->aConfig) || is_null($this->aConfig['condition_id'])) { return _kt('No condition must be fulfilled before this transition becomes available.'); } $oCondition = KTSavedSearch::get($this->aConfig['condition_id']); if (PEAR::isError($oCondition)) { return _kt('The condition required for this trigger has been deleted, so it is always available.'); } else { return sprintf(_kt('The document must match condition "<strong>%s</strong>".'), htmlentities($oCondition->getName(), ENT_NOQUOTES, 'UTF-8')); } }}class BaseCopyActionTrigger extends KTWorkflowTrigger { var $sNamespace; var $sFriendlyName; var $sDescription; var $oTriggerInstance; var $aConfig = array(); // generic requirements - both can be true var $bIsGuard = false; var $bIsAction = true; var $isCopy; function BaseCopyActionTrigger($namespace, $friendlyName, $description, $isCopy) { $this->sNamespace = $namespace; $this->sFriendlyName = $friendlyName; $this->sDescription = $description; $this->isCopy = $isCopy; } // perform more expensive checks -before- performTransition. function precheckTransition($oDocument, $oUser) { $iFolderId = KTUtil::arrayGet($this->aConfig, 'folder_id'); $oFolder = Folder::get($iFolderId); if (PEAR::isError($oFolder)) { if ($this->isCopy) return PEAR::raiseError(_kt('The folder to which this document should be copied does not exist. Cancelling the transition - please contact a system administrator.')); else return PEAR::raiseError(_kt('The folder to which this document should be moved does not exist. Cancelling the transition - please contact a system administrator.')); } return true; } function performTransition($oDocument, $oUser) { $iFolderId = KTUtil::arrayGet($this->aConfig, 'folder_id'); $oToFolder = Folder::get($iFolderId); if (PEAR::isError($oFolder)) { if ($this->isCopy) return PEAR::raiseError(_kt('The folder to which this document should be copied does not exist. Cancelling the transition - please contact a system administrator.')); else return PEAR::raiseError(_kt('The folder to which this document should be moved does not exist. Cancelling the transition - please contact a system administrator.')); } if ($this->isCopy) return KTDocumentUtil::copy($oDocument, $oToFolder); else return KTDocumentUtil::move($oDocument, $oToFolder, $oUser); } function displayConfiguration($args) { $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate('ktcore/workflowtriggers/moveaction'); require_once(KT_LIB_DIR . '/browse/DocumentCollection.inc.php'); require_once(KT_LIB_DIR . '/browse/columnregistry.inc.php'); $collection = new AdvancedCollection; $oColumnRegistry = KTColumnRegistry::getSingleton(); $aColumns = array(); $aColumns[] = $oColumnRegistry->getColumn('ktcore.columns.singleselection'); $aColumns[] = $oColumnRegistry->getColumn('ktcore.columns.title'); $collection->addColumns($aColumns); $aOptions = $collection->getEnvironOptions(); // extract data from the environment $qsFrag = array(); foreach ($args as $k => $v) { if ($k == 'action') { $v = 'editactiontrigger'; } // horrible hack - we really need iframe embedding. $qsFrag[] = sprintf('%s=%s',urlencode($k), urlencode($v)); } $qs = implode('&',$qsFrag); $aOptions['result_url'] = KTUtil::addQueryStringSelf($qs); $aOptions['show_documents'] = false; $fFolderId = KTUtil::arrayGet($_REQUEST, 'fFolderId', KTUtil::arrayGet($this->aConfig, 'folder_id', 1)); $oFolder = Folder::get($fFolderId); if(PEAR::isError($oFolder)) { $iRoot = 1; $oFolder = Folder::get($iRoot); $fFolderId = 1; } $collection->setOptions($aOptions); $collection->setQueryObject(new BrowseQuery($fFolderId, $this->oUser)); $collection->setColumnOptions('ktcore.columns.singleselection', array( 'rangename' => 'folder_id', 'show_folders' => true, 'show_documents' => false, )); $collection->setColumnOptions('ktcore.columns.title', array( 'direct_folder' => false, 'folder_link' => $aOptions['result_url'], )); $aBreadcrumbs = array(); $folder_path_names = $oFolder->getPathArray(); $folder_path_ids = explode(',', $oFolder->getParentFolderIds()); $folder_path_ids[] = $oFolder->getId(); if ($folder_path_ids[0] == 0) { array_shift($folder_path_ids); array_shift($folder_path_names); } foreach (range(0, count($folder_path_ids) - 1) as $index) { $id = $folder_path_ids[$index]; $qsFrag2 = $qsFrag; $qsFrag2[] = sprintf('fFolderId=%d', $id); $qs2 = implode('&',$qsFrag2); $url = KTUtil::addQueryStringSelf($qs2); $aBreadcrumbs[] = sprintf('<a href="%s">%s</a>', $url, htmlentities($folder_path_names[$index], ENT_NOQUOTES, 'UTF-8')); } $sBreadcrumbs = implode(' » ', $aBreadcrumbs); $aTemplateData = array( 'context' => $this, 'breadcrumbs' => $sBreadcrumbs, 'collection' => $collection, 'args' => $args, ); return $oTemplate->render($aTemplateData); } function saveConfiguration() { $folder_id = KTUtil::arrayGet($_REQUEST, 'folder_id', null); $oFolder = Folder::get($folder_id); if (PEAR::isError($oFolder)) { // silenty ignore $folder_id = null; } $config = array(); $config['folder_id'] = $folder_id; $this->oTriggerInstance->setConfig($config); $res = $this->oTriggerInstance->update(); return $res; } function getConfigDescription() { if (!$this->isLoaded()) { return _kt('This trigger has no configuration.'); } // the actual permissions are stored in the array. $perms = array(); if (empty($this->aConfig) || is_null($this->aConfig['folder_id'])) { return _kt('<strong>This transition cannot be performed: no folder has been selected.</strong>'); } $oFolder = Folder::get($this->aConfig['folder_id']); if (PEAR::isError($oFolder)) { return _kt('<strong>The folder required for this trigger has been deleted, so the transition cannot be performed.</strong>'); } else { if ($this->isCopy) return sprintf(_kt('The document will be copied to folder "<a href="%s">%s</a>".'), KTBrowseUtil::getUrlForFolder($oFolder), htmlentities($oFolder->getName(), ENT_NOQUOTES, 'UTF-8')); else return sprintf(_kt('The document will be moved to folder "<a href="%s">%s</a>".'), KTBrowseUtil::getUrlForFolder($oFolder), htmlentities($oFolder->getName(), ENT_NOQUOTES, 'UTF-8')); } }}// This is actually the move!class CopyActionTrigger extends BaseCopyActionTrigger{ function CopyActionTrigger() { parent::BaseCopyActionTrigger( 'ktcore.workflowtriggers.copyaction', _kt('Moves Document'), _kt('Moves the document to another folder.'), false ); }}// This is actually the copy! Note that we keep this naming issue// so that there are no complications with the upgrade path!class MoveActionTrigger extends BaseCopyActionTrigger{ function MoveActionTrigger() { parent::BaseCopyActionTrigger( 'ktcore.workflowtriggers.moveaction', _kt('Copies Document'), _kt('Copies the document to another folder.'), true ); }}class CheckoutGuardTrigger extends KTWorkflowTrigger { var $sNamespace = 'ktcore.workflowtriggers.checkoutguard'; var $sFriendlyName; var $sDescription; var $oTriggerInstance; var $aConfig = array(); // generic requirements - both can be true var $bIsGuard = true; var $bIsAction = false; var $bIsConfigurable = false; function CheckoutGuardTrigger() { $this->sFriendlyName = _kt('Checkout Guard'); $this->sDescription = _kt('Prevents a transition from being followed if the document is checked out..'); } // override the allow transition hook. function allowTransition($oDocument, $oUser) { return (!$oDocument->getIsCheckedOut()); } function getConfigDescription() { return _kt('This transition cannot be performed while the document is checked out.'); }}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?