/**
  * Used as a helper function in simple conditional fieldset
  * administration, this function either returns the existing value
  * instance for a lookup, or creates a new value instance and
  * returns that.
  */
 function &getOrCreateValueInstanceForLookup(&$oLookup)
 {
     $oLookup =& KTUtil::getObject('MetaData', $oLookup);
     $oValueInstance =& KTValueInstance::getByLookupSingle($oLookup);
     if (PEAR::isError($oValueInstance)) {
         return $oValueInstance;
     }
     // If we got a value instance, return it.
     if (!is_null($oValueInstance)) {
         return $oValueInstance;
     }
     // Else create one and return it.
     return KTValueInstance::createFromArray(array('fieldid' => $oLookup->getDocFieldId(), 'fieldvalueid' => $oLookup->getId()));
 }
 function do_useBehaviourAndAssign()
 {
     $parent_behaviour = KTUtil::arrayGet($_REQUEST, 'parent_behaviour');
     $fieldset_id = KTUtil::arrayGet($_REQUEST, 'fieldset_id');
     $field_id = KTUtil::arrayGet($_REQUEST, 'field_id');
     $behaviour_id = KTUtil::arrayGet($_REQUEST, 'behaviour_id');
     $lookups_to_assign = KTUtil::arrayGet($_REQUEST, 'lookups_to_assign');
     // array
     $oBehaviour =& $this->oValidator->validateBehaviour($behaviour_id);
     $aValueInstanceIds = array();
     foreach ($lookups_to_assign as $iLookupId) {
         $res = $oValueInstance =& KTValueInstance::createFromArray(array('fieldid' => $field_id, 'behaviourid' => $oBehaviour->getId(), 'fieldvalueid' => abs($iLookupId)));
         $aValueInstanceIds[] = $res->getId();
     }
     if ($parent_behaviour) {
         $oParentBehaviour =& $this->oValidator->validateBehaviour($parent_behaviour);
         $sTable = KTUtil::getTableName('field_behaviour_options');
         $aOptions = array('noid' => true);
         foreach ($aValueInstanceIds as $iId) {
             $res = DBUtil::autoInsert($sTable, array('behaviour_id' => $oParentBehaviour->getId(), 'field_id' => $field_id, 'instance_id' => $iId), $aOptions);
         }
     }
     header('Content-type: application/xml');
     $oTemplating =& KTTemplating::getSingleton();
     $oTemplate =& $oTemplating->loadTemplate('ktcore/metadata/conditional/ajax_complex_use_behaviour_and_assign');
     return $oTemplate->render();
 }