public function edit($data, $field, $newdata, $olddata, $object) { $user = FW4_User::get_user(); if (isset($field['limit']) && $user['id'] != 0) { $dolimit = true; if (isset($field['limit_condition'])) { $dolimit = false; $invert = false; if (substr($field['limit_condition'], 0, 1) == '!') { $invert = true; $field['limit_condition'] = substr($field['limit_condition'], 1); } $limit_fields = explode('.', $field['limit_condition']); $limit_field = $user; foreach ($limit_fields as $current_field) { if (isset($limit_field[$current_field]) && $limit_field[$current_field]) { $limit_field = $limit_field[$current_field]; } else { if (isset($limit_field[$current_field])) { $limit_field = false; break; } else { $limit_field = true; break; } } } $dolimit = $invert ? !$limit_field : $limit_field; } if ($dolimit) { $limit_fields = explode('.', $field['limit']); $limit_field = $user; foreach ($limit_fields as $current_field) { if (isset($limit_field[$current_field])) { $limit_field = $limit_field[$current_field]; } else { $limit_field = false; break; } } $data[strval($field['name']) . '_id'] = $limit_field; return $data; } } $fieldname = strval($field['name']); if (isset($field['multiple'])) { if (!isset($newdata[strval($field['name'])])) { $newdata[strval($field['name'])] = array(); } if (isset($olddata->id)) { foreach (self::get_current_multiple_choices($object, $field, $olddata->id) as $row) { if (in_array($row->{$fieldname}, $newdata[$fieldname])) { unset($newdata[$fieldname][array_search($row->{$fieldname}, $newdata[strval($field['name'])])]); } else { where('id = %d', $row->id)->delete($object['stack'] . '/' . $field['name']); } } } self::$choice_ids_to_insert = $newdata[strval($field['name'])]; } else { if (isset($newdata[strval($field['name'])])) { if (isset($field['source'])) { $data[strval($field['name']) . '_id'] = $newdata[strval($field['name'])]; if (isset($field['parent_name'])) { $data[strval($field['parent_name']) . '_id'] = 0; if ($source_rows = self::get_source_rows(strval($field['source']), $field)) { if ($row = $source_rows->row_with_id($newdata[strval($field['name'])])) { $data[strval($field['parent_name']) . '_id'] = $row->parent()->id; } } } } else { $data[strval($field['name'])] = $newdata[strval($field['name'])]; } } } return $data; }