| ␊ | 
| $this->fields['ssh_key'] = new Pluf_Form_Field_Varchar(␊ | 
| array('required' => false,␊ | 
| 'label' => __('Your public SSH key'),␊ | 
| 'label' => __('Add a public SSH key'),␊ | 
| 'initial' => '',␊ | 
| 'widget_attrs' => array('rows' => 3,␊ | 
| 'cols' => 40),␊ | 
|  | 
| ␊ | 
| }␊ | 
| ␊ | 
| ␊ | 
| /**␊ | 
| * Save the model in the database.␊ | 
| *␊ | 
|  | 
| $this->user->setMessage(sprintf(__('A validation email has been sent to "%s" to validate the email address change.'), Pluf_esc($new_email)));␊ | 
| }␊ | 
| $this->user->setFromFormData($this->cleaned_data);␊ | 
| // Get keys␊ | 
| $keys = $this->user->get_idf_key_list();␊ | 
| if ($keys->count() > 0) {␊ | 
| $key = $keys[0];␊ | 
| if ('' !== $this->cleaned_data['ssh_key']) {␊ | 
| $key->content = $this->cleaned_data['ssh_key'];␊ | 
| }␊ | 
| } else {␊ | 
| // Add key as needed.␊ | 
| if ('' !== $this->cleaned_data['ssh_key']) {␊ | 
| $key = new IDF_Key();␊ | 
| $key->user = $this->user;␊ | 
| $key->content = $this->cleaned_data['ssh_key'];␊ | 
| if ($commit) {␊ | 
| $key->create();␊ | 
| }␊ | 
| }␊ | 
| if ($commit) {␊ | 
| $this->user->update();␊ | 
| if ($key->id != '') {␊ | 
| $key->update();␊ | 
| } else {␊ | 
| $key->create();␊ | 
| }␊ | 
| if ($update_pass) {␊ | 
| /**␊ | 
| * [signal]␊ | 
|  | 
| return $this->user;␊ | 
| }␊ | 
| ␊ | 
| function clean_ssh_key()␊ | 
| {␊ | 
| $key = trim($this->cleaned_data['ssh_key']);␊ | 
| if (strlen($key) == 0) {␊ | 
| return '';␊ | 
| }␊ | 
| $key = str_replace(array("\n", "\r"), '', $key);␊ | 
| if (!preg_match('#^ssh\-[a-z]{3}\s(\S+)\s\S+$#', $key, $matches)) {␊ | 
| throw new Pluf_Form_Invalid(__('The format of the key is not valid. It must start with ssh-dss or ssh-rsa, a long string on a single line and at the end a comment.'));␊ | 
| }␊ | 
| return $key;␊ | 
| }␊ | 
| ␊ | 
| function clean_last_name()␊ | 
| {␊ | 
| $last_name = trim($this->cleaned_data['last_name']);␊ |