Example #1
0
 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;
 }