예제 #1
0
 $field_size = get_numeric_posted_value('field_size', null);
 $field_repeat = get_numeric_posted_value('field_repeat', new Expression('NULL'));
 $fixed_values = get_form_value('fixed_values', '');
 if ($field_id != '' && $field_perm != '') {
     $duplicated = $dyn_fields->isDuplicate($zdb, $form_name, $field_name, $field_id);
     if ($duplicated) {
         $error_detected[] = _T("- Field name already used.");
     } else {
         $select = $zdb->select(DynamicFieldType::TABLE);
         $select->columns(array('field_name'))->where(array('field_id' => $field_id));
         $results = $zdb->execute($select);
         $result = $results->current();
         $old_field_name = $result->field_name;
         if ($old_field_name && $field_name != $old_field_name) {
             addDynamicTranslation($field_name, $error_detected);
             deleteDynamicTranslation($old_field_name, $error_detected);
         }
     }
     if (count($error_detected) == 0) {
         try {
             $values = array('field_name' => $field_name, 'field_perm' => $field_perm, 'field_required' => $field_required, 'field_width' => $field_width, 'field_height' => $field_height, 'field_size' => $field_size, 'field_repeat' => $field_repeat);
             $update = $zdb->update(DynamicFieldType::TABLE);
             $update->set($values)->where('field_id = ' . $field_id);
             $zdb->execute($update);
         } catch (Exception $e) {
             Analog::log('An error occured storing field | ' . $e->getMessage(), Analog::ERROR);
             $error_detected[] = _T("An error occured storing the field.");
         }
     }
     if ($df->hasFixedValues()) {
         $values = array();
예제 #2
0
/**
* Modify an entry
*
* @param integer $id    Entry's id
* @param string  $class current class name
*
* @return void
*/
function modifyEntry($id, $class)
{
    global $zdb, $error_detected, $fields, $className;
    $label = '';
    $oldlabel = $class->getLabel($id, false);
    if (!$oldlabel) {
        $error_detected[] = _T("- Label does not exist");
        return;
    }
    $toup = array();
    /* Check field values. */
    foreach ($fields[$className] as $field) {
        $value = null;
        if (!isset($_POST[$field])) {
            if ($field == $fields['ContributionsTypes']['field']) {
                $value = 0;
            } else {
                continue;
            }
        } else {
            $value = $_POST[$field];
        }
        if ($field == $fields[$className]['name']) {
            $label = $value;
        }
        checkFieldValue($class, $field, $value);
        $toup[$field] = trim($value);
    }
    /* Update only if all fields are OK. */
    if (count($error_detected) > 0) {
        return;
    }
    foreach ($toup as $field => $value) {
        $ret = $class->update($id, $field, $value);
        if ($ret !== true) {
            if ($ret == $class::ID_NOT_EXITS) {
                $error_detected[] = _T("- Label does not exist");
            } elseif ($ret == -1) {
                $error_detected[] = _T("- Database error: ") . $class->getErrorMessage();
            }
        }
    }
    if (isset($label) && $oldlabel != $label) {
        deleteDynamicTranslation($oldlabel, $error_detected);
        addDynamicTranslation($label, $error_detected);
    }
    return;
}
예제 #3
0
         if ($action == 'del') {
             $update = $zdb->update(DynamicFieldType::TABLE);
             $update->set(array('field_index' => new Expression('field_index-1')))->where->greaterThan('field_index', $old_rank)->equalTo('field_form', $form_name);
             $zdb->execute($update);
             $delete = $zdb->delete(DynamicFields::TABLE);
             $delete->where(array('field_id' => $field_id, 'field_form' => $form_name));
             $zdb->execute($delete);
             $delete = $zdb->delete(DynamicFieldType::TABLE);
             $delete->where(array('field_id' => $field_id, 'field_form' => $form_name));
             $zdb->execute($delete);
             $df = $dyn_fields->getFieldType($result->field_type);
             if ($df->hasFixedValues()) {
                 $contents_table = DynamicFields::getFixedValuesTableName($field_id);
                 $zdb->db->query('DROP TABLE IF EXISTS ' . $contents_table, Adapter::QUERY_MODE_EXECUTE);
             }
             deleteDynamicTranslation($result->field_name, $error_detected);
         } else {
             $direction = $action == "up" ? -1 : 1;
             $new_rank = $old_rank + $direction;
             $update = $zdb->update(DynamicFieldType::TABLE);
             $update->set(array('field_index' => $old_rank))->where(array('field_index' => $new_rank, 'field_form' => $form_name));
             $zdb->execute($update);
             $update = $zdb->update(DynamicFieldType::TABLE);
             $update->set(array('field_index' => $new_rank))->where(array('field_id' => $field_id, 'field_form' => $form_name));
             $zdb->execute($update);
         }
     }
     $zdb->connection->commit();
 } catch (Exception $e) {
     $zdb->connection->rollBack();
     Analog::log('Unable to change field ' . $field_id . ' rank | ' . $e->getMessage(), Analog::ERROR);