$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();
/** * 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; }
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);