예제 #1
0
 function do_createlookupvalues()
 {
     $oForm = $this->form_addlookups();
     $res = $oForm->validate();
     $data = $res['results'];
     $errors = $res['errors'];
     $extra_errors = array();
     $failed = array();
     $lookups = array();
     $raw_lookups = $data['lookups'];
     $lookup_candidates = explode("\n", $raw_lookups);
     foreach ($lookup_candidates as $candidate) {
         $name = trim($candidate);
         if (empty($name)) {
             continue;
         }
         // check for existing or to-be-created lookups.
         if ($lookups[$name]) {
             $failed[$name] = $name;
             continue;
         }
         if ($failed[$name]) {
             continue;
             // already blown up, fix it.
         }
         $oOldLookup = MetaData::getByValueAndDocumentField($name, $this->oField);
         if (!PEAR::isError($oOldLookup)) {
             $failed[$name] = $name;
             continue;
         }
         $lookups[$name] = $name;
     }
     if (!empty($failed)) {
         $extra_errors['lookups'][] = sprintf(_kt("The following lookups you specified already exist, or are specified twice: %s"), implode(', ', $failed));
     } else {
         if (empty($lookups)) {
             $extra_errors['lookups'][] = _kt("You must have at least 1 new lookup value.");
         }
     }
     if (!empty($errors) || !empty($extra_errors)) {
         return $oForm->handleError(null, $extra_errors);
     }
     $data['lookups'] = $lookups;
     foreach ($lookups as $value) {
         $oLookup = MetaData::createFromArray(array('DocFieldId' => $this->oField->getId(), 'sName' => $value, 'iTreeParent' => null, 'bDisabled' => false, 'bIsStuck' => false));
         if (PEAR::isError($oLookup)) {
             return $oForm->handleError(sprintf(_kt("Failed to create lookup: %s"), $oLookup->getMessage()));
         }
     }
     $this->successRedirectTo('managefield', sprintf(_kt("%d lookups added."), count($lookups)));
 }