conditional.inc.php.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 660 行 · 第 1/2 页
SVN-BASE
660 行
)); return $oForm; } function do_manageordering() { $oTemplate =& $this->oValidator->validateTemplate("ktcore/metadata/conditional/manage_ordering"); $this->oPage->setBreadcrumbDetails(_kt("Manage Field Ordering")); $sTable = KTUtil::getTableName('field_orders'); $aQuery = array( "SELECT parent_field_id, child_field_id FROM $sTable WHERE fieldset_id = ?", array($this->oFieldset->getId()) ); $aFieldOrders = DBUtil::getResultArray($aQuery); $aFields = $this->oFieldset->getFields(); $aFreeFieldIds = array(); foreach ($aFields as $oField) { $aFreeFieldIds[] = $oField->getId(); } if ($this->oFieldset->getMasterFieldId()) { $aParentFieldIds = array($this->oFieldset->getMasterFieldId()); foreach ($aFieldOrders as $aRow) { $aParentFieldIds[] = $aRow['child_field_id']; } $aParentFields = array(); foreach (array_unique($aParentFieldIds) as $iId) { $aParentFields[] =& DocumentField::get($iId); } $aFreeFields = array(); foreach ($aFreeFieldIds as $iId) { if (in_array($iId, $aParentFieldIds)) { continue; } $aFreeFields[] =& DocumentField::get($iId); } } $oTemplate->setData(array( 'context' => $this, 'parent_fields' => $aParentFields, 'free_fields' => $aFreeFields, 'aFieldOrders' => $aFieldOrders, 'master_form' => $this->form_setmasterfield(), 'orderingargs' => $this->meldPersistQuery("", "orderfields",true), )); return $oTemplate->render(); } // {{{ do_orderFields function do_orderfields() { $oFieldset =& $this->oFieldset; $aFreeFieldIds = $_REQUEST['fFreeFieldIds']; if (empty($aFreeFieldIds)) { $this->errorRedirectTo('manageConditional', 'No children fields selected', 'fFieldsetId=' . $oFieldset->getId()); } $iParentFieldId = $_REQUEST['fParentFieldId']; if (in_array($iParentFieldId, $aFreeFieldIds)) { $this->errorRedirectTo('manageConditional', _kt('Field cannot be its own parent field'), 'fFieldsetId=' . $oFieldset->getId()); } foreach ($aFreeFieldIds as $iChildFieldId) { $res = KTMetadataUtil::addFieldOrder($iParentFieldId, $iChildFieldId, $oFieldset); $this->oValidator->notError($res, array( 'redirect_to' => array('manageConditional', 'fFieldsetId=' . $oFieldset->getId()), 'message' => _kt('Error adding Fields'), )); } $this->commitTransaction(); $this->addInfoMessage(_kt("Fields ordered.")); redirect($this->sParentUrl); exit(0); } // }}} // {{{ do_setMasterField function do_setmasterfield() { $oForm = $this->form_setmasterfield(); $res = $oForm->validate(); if (!empty($res['errors'])) { $oForm->handleError(); } $data = $res['results']; $oField = $data['master_field']; // remove all existing behaviors $aFieldIds = array(); foreach($this->oFieldset->getFields() as $i) { $aFieldIds[] = $i->getId(); } $sTable = KTUtil::getTableName('field_behaviours'); $aQuery = array("DELETE FROM $sTable WHERE field_id IN (" . DBUtil::paramArray($aFieldIds) . ")", $aFieldIds); $res = DBUtil::runQuery($aQuery); $res = KTMetadataUtil::removeFieldOrdering($this->oFieldset); $this->oFieldset->setMasterFieldId($oField->getId()); $res = $this->oFieldset->update(); $this->commitTransaction(); redirect($this->sParentUrl); exit(0); } // }}} // {{{ do_checkComplete /** * Checks whether the fieldset is complete, and if it is, sets it to * be complete in the database. Otherwise, set it to not be * complete in the database (just in case), and set the error * messages as to why it isn't. */ function do_checkComplete() { $oFieldset =& $this->oValidator->validateFieldset($_REQUEST['fFieldsetId']); $res = KTMetadataUtil::checkConditionalFieldsetCompleteness($oFieldset); if ($res === true) { $oFieldset->setIsComplete(true); $oFieldset->update(); $this->successRedirectTo('manageConditional', _kt('Set to complete'), 'fFieldsetId=' . $oFieldset->getId()); } $oFieldset->setIsComplete(false); $oFieldset->update(); // Success, as we want to save the incompleteness to the // database... $this->successRedirectTo('manageConditional', _kt('Could not to complete'), 'fFieldsetId=' . $oFieldset->getId()); } // }}} // {{{ do_changeToSimple function do_changeToSimple() { $this->startTransaction(); $oFieldset =& $this->oValidator->validateFieldset($_REQUEST['fFieldsetId']); $oFieldset->setIsComplex(false); $res = $oFieldset->update(); $this->oValidator->notError($res, array( 'redirect_to' => array('manageConditional', 'fFieldsetId=' . $oFieldset->getId()), 'message' => _kt('Error changing to simple'), )); $aFields = DocumentField::getByFieldset($oFieldset); if (!empty($aFields)) { $aFieldIds = array(); foreach ($aFields as $oField) { $aFieldIds[] = $oField->getId(); } // value instances $sTable = KTUtil::getTableName('field_value_instances'); $aQuery = array( "DELETE FROM $sTable WHERE field_id IN (" . DBUtil::paramArray($aFieldIds) . ")", $aFieldIds, ); $res = DBUtil::runQuery($aQuery); //$this->addInfoMessage('value instances: ' . print_r($res, true)); // behaviours $sTable = KTUtil::getTableName('field_behaviours'); $aQuery = array( "DELETE FROM $sTable WHERE field_id IN (" . DBUtil::paramArray($aFieldIds) . ")", $aFieldIds, ); $res = DBUtil::runQuery($aQuery); //$this->addInfoMessage('behaviours: ' . print_r($res, true)); } $this->oValidator->notError($res, array( 'redirect_to' => array('manageConditional', 'fFieldsetId=' . $oFieldset->getId()), 'message' => _kt('Error changing to simple'), )); KTEntityUtil::clearAllCaches('KTFieldBehaviour'); KTEntityUtil::clearAllCaches('KTValueInstance'); $this->commitTransaction(); $this->addInfoMessage(_kt('Changed to simple')); redirect($this->sParentUrl); exit(0); } // }}} // {{{ do_changeToComplex function do_changeToComplex() { $oFieldset =& $this->oFieldset; $oFieldset->setIsComplex(true); $res = $oFieldset->update(); $this->commitTransaction(); $this->addInfoMessage(_kt('Changed to simple')); redirect($this->sParentUrl); exit(0); } // }}} function do_viewOverview() { $fieldset_id = $this->oFieldset->getId(); $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate("ktcore/metadata/conditional/conditional_overview"); $oFieldset =& $this->oFieldset; $aFields =& $oFieldset->getFields(); $this->oPage->setBreadcrumbDetails(_kt("Behaviour Overview")); $aBehaviours = array(); foreach ($aFields as $oField) { $aOpts = KTFieldBehaviour::getByField($oField); $aBehaviours = kt_array_merge($aBehaviours, $aOpts); } $aTemplateData = array( "context" => &$this, "fieldset_id" => $fieldset_id, "aFields" => $aFields, "behaviours" => $aBehaviours, "iMasterFieldId" => $oFieldset->getMasterFieldId(), ); return $oTemplate->render($aTemplateData); } function getSetsForBehaviour($oBehaviour, $fieldset_id) { $oFieldset =& $this->oFieldset; if (is_null($oBehaviour)) { $fid = $oFieldset->getMasterFieldId(); $aQuery = array( sprintf('SELECT df.name as field_name, ml.name as lookup_name, fb.id as behaviour_id, fb.name as behaviour_name FROM %s as fvi LEFT JOIN %s as fb ON (fvi.behaviour_id = fb.id) LEFT JOIN %s AS df ON (fvi.field_id = df.id) LEFT JOIN metadata_lookup AS ml ON (fvi.field_value_id = ml.id) WHERE fvi.field_id = ? ORDER BY df.name ASC, ml.name ASC', KTUtil::getTableName('field_value_instances'), KTUtil::getTableName('field_behaviours'), KTUtil::getTableName('document_fields'), KTUtil::getTableName('metadata')), array($fid), ); $res = DBUtil::getResultArray($aQuery); return $res; } else { $bid = $oBehaviour->getId(); $aQuery = array( sprintf('SELECT df.name as field_name, ml.name as lookup_name, fb.id as behaviour_id, fb.name as behaviour_name FROM %s AS fbo LEFT JOIN %s as fvi ON (fbo.instance_id = fvi.id) LEFT JOIN %s as fb ON (fvi.behaviour_id = fb.id) LEFT JOIN %s AS df ON (fvi.field_id = df.id) LEFT JOIN metadata_lookup AS ml ON (fvi.field_value_id = ml.id) WHERE fbo.behaviour_id = ? ORDER BY df.name ASC, ml.name ASC', KTUtil::getTableName('field_behaviour_options'), KTUtil::getTableName('field_value_instances'), KTUtil::getTableName('field_behaviours'), KTUtil::getTableName('document_fields'), KTUtil::getTableName('metadata')), array($bid), ); $res = DBUtil::getResultArray($aQuery); return $res; } return $aNextFieldValues; } function do_renameBehaviours() { $fieldset_id = $this->oFieldset->getId(); $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate("ktcore/metadata/conditional/conditional_rename_behaviours"); $oFieldset =& $this->oFieldset; $aFields =& $oFieldset->getFields(); $aBehaviours = array(); foreach ($aFields as $oField) { $aOpts = KTFieldBehaviour::getByField($oField); $aBehaviours = kt_array_merge($aBehaviours, $aOpts); } $aTemplateData = array( "context" => &$this, 'args' => $this->meldPersistQuery("","finalRename", true), "fieldset_id" => $fieldset_id, "behaviours" => $aBehaviours, ); return $oTemplate->render($aTemplateData); } function do_finalRename() { $fieldset_id = KTUtil::arrayGet($_REQUEST, "fieldset_id"); $aRenamed = (array) KTUtil::arrayGet($_REQUEST, "renamed"); $this->startTransaction(); foreach ($aRenamed as $bid => $new_name) { $oBehaviour = KTFieldBehaviour::get($bid); if (PEAR::isError($oBehaviour)) { continue; } // skip it... $oBehaviour->setName(trim($new_name)); $res = $oBehaviour->update(); if (PEAR::isError($res)) { $this->errorRedirectToMain(_kt('Failed to change name of behaviour.'), sprintf('action=edit&fFieldsetId=%s',$fieldset_id)); } } $this->addInfoMessage(_kt("Behaviour names changed.")); $this->commitTransaction(); redirect($this->sParentUrl); exit(0); } function getIncomplete($oFieldset) { $res = KTMetadataUtil::checkConditionalFieldsetCompleteness($oFieldset); if (PEAR::isError($res)) { $sIncomplete = $res->getMessage(); } else { $sIncomplete = null; } return $sIncomplete; } }?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?