function getHandler($nsname) { if (!array_key_exists($nsname, $this->fieldset_types)) { // unfortunately, we need to do a bit more spelunking here. // if its conditional, we use a different item. ns is unsufficient. // // FIXME this is slightly wasteful from a performance POV, though DB caching should make it OK. $oFieldset =& KTFieldset::getByNamespace($nsname); if (PEAR::isError($oFieldset)) { global $default; $default->log->error('Could not resolve Fieldset by namespace: ' . $nsname . '. Error: ' . $oFieldset->getMessage()); return 'SimpleFieldsetDisplay'; } if (is_a($oFieldset, 'KTEntityNoObjects')) { global $default; $default->log->error('Could not resolve Fieldset by namespace: ' . $nsname . '. Error: KTEntityNoObjects returned.'); return 'SimpleFieldsetDisplay'; } if ($oFieldset->getIsConditional() && KTMetadataUtil::validateCompleteness($oFieldset)) { return 'ConditionalFieldsetDisplay'; } else { return 'SimpleFieldsetDisplay'; } } else { return $this->fieldset_types[$nsname]; } }
$sFieldName = "synctest"; $sSearch = "(objectClass=organizationalPerson)"; $sAttribute = "cn"; $sRootDN = null; $aAuthenticationSources =& KTAuthenticationSource::getList(); $oSource = null; foreach ($aAuthenticationSources as $oPotentialSource) { if ($oPotentialSource->getName() == $sSourceName) { $oSource =& $oPotentialSource; } } if (empty($oSource)) { printf("No authentication source named %s found\n", $sSourceName); exit(1); } $oFieldset =& KTFieldset::getByNamespace($sFieldsetNamespace); if (PEAR::isError($oFieldset)) { printf("No fieldset named %s found\n", $sFieldsetNamespace); exit(1); } $oField = DocumentField::getByFieldsetAndName($oFieldset, $sFieldName); if (PEAR::isError($oField)) { printf("No field named %s found in fieldset %s\n", $sFieldName, $sFieldsetNamespace); exit(1); } $oAuthenticator =& KTAuthenticationUtil::getAuthenticatorForSource($oSource); $oLdap =& $oAuthenticator->oLdap; $aParams = array('scope' => 'sub', 'attributes' => array($sAttribute)); $aResults = $oLdap->search($sRootDn, $sSearch, $aParams); $aValues = array(); foreach ($aResults->entries() as $oEntry) {
function do_create() { $oForm = $this->form_create(); $res = $oForm->validate(); $data = $res['results']; $errors = $res['errors']; $extra_errors = array(); if (!empty($data['name'])) { $oFieldset = KTFieldset::getByName($data['name']); if (!PEAR::isError($oFieldset)) { // means we're looking at an existing name $extra_errors['name'] = _kt("There is already a fieldset with that name."); } } $is_conditional = false; // FIXME this is inelegant. get it from somewhere else. if ($this->bHaveConditional && $data['fieldset_type'] == 'conditional') { $is_conditional = true; } if (!empty($errors) || !empty($extra_errors)) { return $oForm->handleError(null, $extra_errors); } // we also need a namespace. $temp_name = $data['name']; $namespace = KTUtil::nameToLocalNamespace('fieldsets', $temp_name); $oOldFieldset = KTFieldset::getByNamespace($namespace); while (!PEAR::isError($oOldFieldset)) { $temp_name .= '_'; $namespace = KTUtil::nameToLocalNamespace('fieldsets', $temp_name); $oOldFieldset = KTFieldset::getByNamespace($namespace); } // we now know its a non-conflicting one. // FIXME handle conditional fieldsets, which should be ... a different object. $oFieldset = KTFieldset::createFromArray(array("name" => $data['name'], "description" => $data['description'], "namespace" => $namespace, "mandatory" => false, "isConditional" => $is_conditional, "isGeneric" => $data['generic'], "isComplete" => false, "isComplex" => false, "isSystem" => false)); if (PEAR::isError($oFieldset)) { return $oForm->handleError(sprintf(_kt("Failed to create fieldset: %s"), $oFieldset->getMessage())); } $this->successRedirectTo('edit', _kt("Fieldset created."), sprintf('fFieldsetId=%d', $oFieldset->getId())); }