| /**␊ |
| * Update user's details.␊ |
| */␊ |
| class IDF_Form_Admin_UserUpdate extends Pluf_Form␊ |
| class IDF_Form_Admin_UserUpdate extends Pluf_Form␊ |
| {␊ |
| public $user = null;␊ |
| ␊ |
| public function initFields($extra=array())␊ |
| {␊ |
| $this->user = $extra['user'];␊ |
| $user_data = IDF_UserData::factory($this->user);␊ |
| ␊ |
| $this->fields['first_name'] = new Pluf_Form_Field_Varchar(␊ |
| array('required' => false,␊ |
| 'label' => __('First name'),␊ |
|
| 'initial' => $this->user->language,␊ |
| 'widget' => 'Pluf_Form_Widget_SelectInput',␊ |
| 'widget_attrs' => array(␊ |
| 'choices' => ␊ |
| 'choices' =>␊ |
| Pluf_L10n::getInstalledLanguages()␊ |
| ),␊ |
| ));␊ |
|
| ),␊ |
| ));␊ |
| ␊ |
| $this->fields['description'] = new Pluf_Form_Field_Varchar(␊ |
| array('required' => false,␊ |
| 'label' => __('Description'),␊ |
| 'initial' => $user_data->description,␊ |
| 'widget_attrs' => array('rows' => 3,␊ |
| 'cols' => 40),␊ |
| 'widget' => 'Pluf_Form_Widget_TextareaInput',␊ |
| ));␊ |
| ␊ |
| $this->fields['twitter'] = new Pluf_Form_Field_Varchar(␊ |
| array('required' => false,␊ |
| 'label' => __('Twitter username'),␊ |
| 'initial' => $user_data->twitter,␊ |
| 'widget_attrs' => array(␊ |
| 'maxlength' => 50,␊ |
| 'size' => 15,␊ |
| ),␊ |
| ));␊ |
| ␊ |
| $this->fields['public_email'] = new Pluf_Form_Field_Email(␊ |
| array('required' => false,␊ |
| 'label' => __('Public email address'),␊ |
| 'initial' => $user_data->public_email,␊ |
| 'widget_attrs' => array(␊ |
| 'maxlength' => 50,␊ |
| 'size' => 15,␊ |
| ),␊ |
| ));␊ |
| ␊ |
| $this->fields['website'] = new Pluf_Form_Field_Url(␊ |
| array('required' => false,␊ |
| 'label' => __('Website URL'),␊ |
| 'initial' => $user_data->website,␊ |
| 'widget_attrs' => array(␊ |
| 'maxlength' => 50,␊ |
| 'size' => 15,␊ |
| ),␊ |
| ));␊ |
| ␊ |
| $this->fields['custom_avatar'] = new Pluf_Form_Field_File(␊ |
| array('required' => false,␊ |
| 'label' => __('Upload custom avatar'),␊ |
| 'initial' => '',␊ |
| 'max_size' => Pluf::f('max_upload_size', 2097152),␊ |
| 'move_function_params' => array('upload_path' => Pluf::f('upload_path').'/avatars',␊ |
| 'upload_path_create' => true,␊ |
| 'upload_overwrite' => true,␊ |
| 'file_name' => 'user_'.$this->user->id.'_%s'),␊ |
| 'help_text' => __('An image file with a width and height not larger than 60 pixels (bigger images are scaled down).'),␊ |
| ));␊ |
| ␊ |
| $this->fields['remove_custom_avatar'] = new Pluf_Form_Field_Boolean(␊ |
| array('required' => false,␊ |
| 'label' => __('Remove custom avatar'),␊ |
| 'initial' => false,␊ |
| 'widget' => 'Pluf_Form_Widget_CheckboxInput',␊ |
| 'widget_attrs' => array(),␊ |
| 'help_text' => __('Tick this to delete the custom avatar.'),␊ |
| ));␊ |
| ␊ |
| if ($extra['request']->user->administrator) {␊ |
| $this->fields['staff'] = new Pluf_Form_Field_Boolean(␊ |
| array('required' => false,␊ |
|
| $update_pass = true;␊ |
| }␊ |
| $this->user->setFromFormData($this->cleaned_data);␊ |
| ␊ |
| if ($commit) {␊ |
| $this->user->update();␊ |
| ␊ |
| // FIXME: go the extra mile and check the input lengths for␊ |
| // all fields here!␊ |
| // FIXME: this is all doubled in UserAccount!␊ |
| ␊ |
| $user_data = IDF_UserData::factory($this->user);␊ |
| ␊ |
| // Add or remove avatar - we need to do this here because every␊ |
| // single setter directly leads to a save in the database␊ |
| if ($user_data->avatar != '' &&␊ |
| ($this->cleaned_data['remove_custom_avatar'] == 1 ||␊ |
| $this->cleaned_data['custom_avatar'] != '')) {␊ |
| $avatar_path = Pluf::f('upload_path').'/avatars/'.basename($user_data->avatar);␊ |
| if (basename($avatar_path) != '' && is_file($avatar_path)) {␊ |
| unlink($avatar_path);␊ |
| }␊ |
| $user_data->avatar = '';␊ |
| }␊ |
| ␊ |
| if ($this->cleaned_data['custom_avatar'] != '') {␊ |
| $user_data->avatar = $this->cleaned_data['custom_avatar'];␊ |
| }␊ |
| ␊ |
| $user_data->description = $this->cleaned_data['description'];␊ |
| $user_data->twitter = $this->cleaned_data['twitter'];␊ |
| $user_data->public_email = $this->cleaned_data['public_email'];␊ |
| $user_data->website = $this->cleaned_data['website'];␊ |
| ␊ |
| if ($update_pass) {␊ |
| /**␊ |
| * [signal]␊ |
|
| {␊ |
| $last_name = trim($this->cleaned_data['last_name']);␊ |
| if ($last_name == mb_strtoupper($last_name)) {␊ |
| return mb_convert_case(mb_strtolower($last_name), ␊ |
| return mb_convert_case(mb_strtolower($last_name),␊ |
| MB_CASE_TITLE, 'UTF-8');␊ |
| }␊ |
| return $last_name;␊ |
|
| throw new Pluf_Form_Invalid(__('--- is not a valid first name.'));␊ |
| }␊ |
| if ($first_name == mb_strtoupper($first_name)) {␊ |
| $first_name = mb_convert_case(mb_strtolower($first_name), ␊ |
| $first_name = mb_convert_case(mb_strtolower($first_name),␊ |
| MB_CASE_TITLE, 'UTF-8');␊ |
| }␊ |
| return $first_name;␊ |
|
| return $email;␊ |
| }␊ |
| ␊ |
| function clean_custom_avatar()␊ |
| {␊ |
| // Just png, jpeg/jpg or gif␊ |
| if (!preg_match('/\.(png|jpg|jpeg|gif)$/i', $this->cleaned_data['custom_avatar']) &&␊ |
| $this->cleaned_data['custom_avatar'] != '') {␊ |
| @unlink(Pluf::f('upload_path').'/avatars/'.$this->cleaned_data['custom_avatar']);␊ |
| throw new Pluf_Form_Invalid(__('For security reason, you cannot upload a file with this extension.'));␊ |
| }␊ |
| return $this->cleaned_data['custom_avatar'];␊ |
| }␊ |
| ␊ |
| /**␊ |
| * Check to see if the 2 passwords are the same.␊ |
| * Check to see if the two passwords are the same.␊ |
| */␊ |
| public function clean()␊ |
| {␊ |
| if (!isset($this->errors['password']) ␊ |
| if (!isset($this->errors['password'])␊ |
| && !isset($this->errors['password2'])) {␊ |
| $password1 = $this->cleaned_data['password'];␊ |
| $password2 = $this->cleaned_data['password2'];␊ |