/** * Function to store custom field * * @access public * @param \Illuminate\Http\Request $request * @param \Syscover\Pulsar\Models\CustomFieldGroup $customFieldGroup * @param string $resource * @param integer $objectId * @param string $lang * @return void */ public static function storeCustomFieldResults($request, $customFieldGroup, $resource, $objectId, $lang) { $customFieldGroup = CustomFieldGroup::find($customFieldGroup); $customFields = CustomField::getRecords(['lang_026' => $lang, 'group_id_026' => $customFieldGroup->id_025]); $dataTypes = collect(config('pulsar.dataTypes'))->keyBy('id'); $customFieldResults = []; foreach ($customFields as $customField) { // if we return an array but the data to be saved is not an array, we will keep as many records containing the array elements if (is_array($request->input($customField->name_026 . '_custom')) && $dataTypes[$customField->data_type_id_026]->type != 'array') { foreach ($request->input($customField->name_026 . '_custom') as $value) { $customFieldResult = ['object_id_028' => $objectId, 'lang_id_028' => $lang, 'resource_id_028' => $resource, 'field_id_028' => $customField->id_026, 'data_type_type_028' => $dataTypes[$customField->data_type_id_026]->type, 'value_028' => $value]; $customFieldResults[] = $customFieldResult; } } else { $customFieldResult = ['object_id_028' => $objectId, 'lang_id_028' => $lang, 'resource_id_028' => $resource, 'field_id_028' => $customField->id_026, 'data_type_type_028' => $dataTypes[$customField->data_type_id_026]->type]; // if we return an array and the data to be saved is an array, the array will keep like string expression. // using insert not access to mutators on Syscover\Pulsar\Models\CustomFieldResult to change the value type of a string to array automatically // we have to do manually casting if (is_array($request->input($customField->name_026 . '_custom')) && $dataTypes[$customField->data_type_id_026]->type == 'array') { $customFieldResult['value_028'] = implode(',', $request->input($customField->name_026 . '_custom')); } else { // get value and record in your field data type, add suffix '_custom' to avoid conflict with other field names if ($dataTypes[$customField->data_type_id_026]->type == 'boolean') { $customFieldResult['value_028'] = $request->has($customField->name_026 . '_custom'); } else { $customFieldResult['value_028'] = $request->input($customField->name_026 . '_custom'); } } $customFieldResults[] = $customFieldResult; } } if (count($customFieldResults) > 0) { CustomFieldResult::insert($customFieldResults); } }