value).' AS value, '.acym_secureDBColumn($fieldDB->title).' AS title FROM '.acym_secureDBColumn($fieldDB->database).'.'.acym_secureDBColumn($fieldDB->table); $query .= empty($fieldDB->where_value) ? '' : ' WHERE `'.acym_secureDBColumn($fieldDB->where).'` '.$fieldDB->where_sign.' '.acym_escapeDB($fieldDB->where_value); if (!empty($fieldDB->order_by)) $query .= ' ORDER BY '.acym_secureDBColumn($fieldDB->order_by).' '.acym_secureDBColumn($fieldDB->sort_order); return acym_loadObjectList($query); } public function store($fields, $userID) { if (!empty($_FILES['customField'])) { $uploadFolder = trim(acym_cleanPath(html_entity_decode(acym_getFilesFolder())), DS.' ').DS; $uploadPath = acym_cleanPath(ACYM_ROOT.$uploadFolder.'userfiles'.DS); foreach ($_FILES['customField']['tmp_name'] as $key => $value) { if (empty($value[0])) { continue; } $error = acym_uploadFile($value[0], $uploadPath.$_FILES['customField']['name'][$key][0]); if (!$error) { acym_enqueueNotification(acym_translation('ACYM_ERROR_SAVING'), 'error', 5000); return; } $fields[$key] = $_FILES['customField']['name'][$key][0]; } } foreach ($fields as $id => $field) { $query = 'INSERT INTO #__acym_user_has_field (`user_id`, `field_id`, `value`) VALUES '; if (is_array($field)) { $fullField = $this->getOneFieldByID($id); if (in_array($fullField->type, ['multiple_dropdown', 'radio', 'phone'])) { $field = implode(',', $field); } elseif ($fullField->type == 'checkbox') { $field = implode(',', array_keys($field)); } elseif ($fullField->type == 'date') { $field = implode('/', $field); } else { $field = json_encode($field); } } $query .= '('.intval($userID).', '.intval($id).', '.acym_escapeDB($field).')'; $query .= ' ON DUPLICATE KEY UPDATE `value`= VALUES(`value`)'; acym_query($query); } } public function getAllfieldBackEndListingByUserIds($ids, $fields, $forBackEnd = false) { $query = 'SELECT field.type as type, field.name as field_name, user_field.user_id as user_id, user_field.field_id as field_id, user_field.value as field_value FROM #__acym_user_has_field AS user_field LEFT JOIN #__acym_field AS field ON user_field.field_id = field.id'; $conditions = []; if ($forBackEnd) $conditions[] = 'field.backend_listing = 1'; if (!is_array($ids)) $ids = [$ids]; acym_arrayToInteger($ids); if (empty($ids)) $ids[] = 0; if (!is_array($fields)) $fields = [$fields]; acym_arrayToInteger($fields); if (empty($fields)) $fields[] = 0; $conditions[] = 'user_field.user_id IN ('.implode(',', $ids).')'; $conditions[] = 'user_field.field_id IN ('.implode(',', $fields).')'; $query .= !empty($conditions) ? ' WHERE ('.implode(') AND (', $conditions).')' : ''; $fieldValues = []; foreach (acym_loadObjectList($query) as $one) { $fieldValues[$one->field_id.$one->user_id] = is_array(json_decode($one->field_value)) ? implode(', ', json_decode($one->field_value)) : $one->field_value; } return $fieldValues; } public function getAllFieldsBackendListing() { $query = 'SELECT id, name FROM #__acym_field WHERE backend_listing = 1 AND id NOT IN (1, 2)'; $return = [ 'names' => [], 'ids' => [], ]; foreach (acym_loadObjectList($query) as $one) { $return['names'][] = $one->name; $return['ids'][] = $one->id; } return $return; } public function delete($elements) { if (!is_array($elements)) { $elements = [$elements]; } acym_arrayToInteger($elements); if (empty($elements)) { return 0; } acym_query('DELETE FROM #__acym_user_has_field WHERE field_id IN ('.implode(',', $elements).')'); return parent::delete($elements); } public function displayField($field, $defaultValue, $size, $valuesArray, $displayOutside = true, $displayFront = false, $user = null, $display = 1, $displayIf = '') { if ($display == 0) return ''; $cmsUser = false; if ($displayFront && !empty($user->id)) { $cmsUser = !empty($user->cms_id) ? true : false; if ($field->id == 1) { $defaultValue = $user->name; } elseif ($field->id == 2) { $defaultValue = $user->email; } else { $allValues = []; $defaultUserValue = $this->getFieldsValueByUserId($user->id); if (!empty($defaultUserValue)) { foreach ($defaultUserValue as $one) { $allValues[$one->field_id] = $one->value; } } if (isset($allValues[$field->id])) { $defaultValue = is_null(json_decode($allValues[$field->id])) ? $allValues[$field->id] : json_decode($allValues[$field->id]); } } } if (in_array($field->type, ['radio', 'checkbox'])) { $valuesArrayTmp = []; foreach ($valuesArray as $oneValue) { if (!is_object($oneValue)) { $valuesArrayTmp = $valuesArray; break; } if (!empty($oneValue->disable)) continue; $valuesArrayTmp[$oneValue->value] = $oneValue->text; } $valuesArray = $valuesArrayTmp; } if (is_array($valuesArray)) { foreach ($valuesArray as $key => $oneValue) { if (is_object($oneValue) && !empty($valuesArray[$key]->text)) { $valuesArray[$key]->text = acym_translation($valuesArray[$key]->text); } elseif (is_string($oneValue)) { $valuesArray[$key] = acym_translation($valuesArray[$key]); } } } $return = ''; $field->name = acym_translation($field->name); $style = empty($size) ? '' : ' style="'.$size.'"'; $messageRequired = empty($field->option->error_message) ? acym_translation_sprintf('ACYM_DEFAULT_REQUIRED_MESSAGE', $field->name) : acym_translation($field->option->error_message); $requiredJson = json_encode(['type' => $field->type, 'message' => $messageRequired]); $required = $field->required ? ' data-required="'.acym_escape($requiredJson).'"' : ''; $placeholder = ''; if (!$displayOutside) $placeholder = ' placeholder="'.acym_escape($field->name).'"'; $name = 'customField['.intval($field->id).']'; $nameAttribute = ' name="'.$name.'"'; $value = ' value="'.acym_escape($defaultValue).'"'; if ($field->type == 'date' || ($displayOutside && (in_array($field->id, [1, 2]) || in_array($field->type, ['text', 'textarea', 'single_dropdown', 'multiple_dropdown', 'custom_text'])))) { $return .= '