/** * @Route("/ajax", methods="POST") * @Request({"field_id": "int", "action": "string"}) */ public function ajaxAction($field_id, $action) { if (!($field = Field::find($field_id))) { App::abort(400, __('Field not found.')); } $fieldValue = Profilevalue::create()->setField($field); $fieldType = $fieldValue->getFieldType(); if (method_exists($fieldType, $action)) { return call_user_func([$fieldType, $action], $fieldValue); } return 'No response'; }
public function onUserChange($event, User $user) { /** @var \Bixie\Userprofile\Model\Profilevalue $profilevalue */ foreach (App::request()->request->get('profilevalues', []) as $data) { // is new ? if (!($profilevalue = Profilevalue::find($data['id']))) { if ($data['id']) { App::abort(404, __('Userprofilevalue not found.')); } $profilevalue = Profilevalue::create(); } $profilevalue->field_id = $data['field_id']; $profilevalue->user_id = $user->id; $profilevalue->multiple = $data['multiple']; $profilevalue->setValue($data['value']); $profilevalue->save(); } }
/** * @param User|null $user * @param bool $asArray * @param bool $checkAccess * @return array|bool */ public function getProfile(User $user = null, $asArray = true, $checkAccess = true) { $profile = []; if (!$this->framework) { return $profile; } if ($user = $user ?: App::user() and $user->id > 0) { $profileValues = Profilevalue::getUserProfilevalues($user); } foreach (Field::getProfileFields($checkAccess) as $field) { $fieldValue = isset($profileValues[$field->id]) ? $profileValues[$field->id] : Profilevalue::create(['field_id' => $field->id, 'user_id' => $user->id, 'multiple' => $field->get('multiple') == 1 ? 1 : 0, 'data' => $field->get('data')])->setField($field)->setValue($field->get('value')); if ($asArray) { $profile[$field->slug] = $fieldValue->setField($field)->toFormattedArray(['id' => $fieldValue->id]); } else { $profile[$field->slug] = $fieldValue->setField($field); } } return $profile; }