/**
  * @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';
 }
Ejemplo n.º 2
0
 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;
 }