2008-05-15 17:28:44 +01:00
< ? php
2008-05-19 13:27:08 +01:00
/*
2008-05-15 17:28:44 +01:00
* Laconica - a distributed open - source microblogging tool
* Copyright ( C ) 2008 , Controlez - Vous , Inc .
2008-05-19 13:27:08 +01:00
*
2008-05-15 17:28:44 +01:00
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
2008-05-19 13:27:08 +01:00
*
2008-05-15 17:28:44 +01:00
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Affero General Public License for more details .
2008-05-19 13:27:08 +01:00
*
2008-05-15 17:28:44 +01:00
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*/
2008-05-17 16:47:01 +01:00
if ( ! defined ( 'LACONICA' )) { exit ( 1 ); }
2008-05-15 17:28:44 +01:00
2008-05-17 18:54:16 +01:00
require_once ( INSTALLDIR . '/lib/settingsaction.php' );
2008-05-15 17:28:44 +01:00
class ProfilesettingsAction extends SettingsAction {
2008-05-19 13:27:08 +01:00
2008-06-30 18:03:42 +01:00
function get_instructions () {
2008-07-08 10:45:31 +01:00
return _ ( 'You can update your personal profile info here ' .
2008-06-30 18:03:42 +01:00
'so people know more about you.' );
2008-06-18 04:57:39 +01:00
}
2008-06-30 18:03:42 +01:00
2008-06-18 04:57:39 +01:00
function show_form ( $msg = NULL , $success = false ) {
2008-07-08 10:45:31 +01:00
$this -> form_header ( _ ( 'Profile settings' ), $msg , $success );
2008-09-06 08:06:51 +01:00
$this -> show_settings_form ();
2008-09-07 06:36:04 +01:00
common_element ( 'h2' , NULL , _ ( 'Avatar' ));
2008-09-06 08:06:51 +01:00
$this -> show_avatar_form ();
2008-09-07 06:36:04 +01:00
common_element ( 'h2' , NULL , _ ( 'Change password' ));
$this -> show_password_form ();
2008-11-23 21:50:59 +00:00
common_element ( 'h2' , NULL , _ ( 'Delete my account' ));
$this -> show_delete_form ();
2008-09-06 08:06:51 +01:00
common_show_footer ();
}
2008-06-18 04:57:39 +01:00
2008-09-06 08:06:51 +01:00
function handle_post () {
2008-09-05 20:47:32 +01:00
2008-09-06 08:06:51 +01:00
# CSRF protection
2008-09-05 20:47:32 +01:00
2008-09-06 08:06:51 +01:00
$token = $this -> trimmed ( 'token' );
if ( ! $token || $token != common_session_token ()) {
$this -> show_form ( _ ( 'There was a problem with your session token. Try again, please.' ));
return ;
2008-09-05 20:47:32 +01:00
}
2008-09-06 08:06:51 +01:00
if ( $this -> arg ( 'save' )) {
$this -> save_profile ();
} else if ( $this -> arg ( 'upload' )) {
$this -> upload_avatar ();
2008-09-07 06:36:04 +01:00
} else if ( $this -> arg ( 'changepass' )) {
$this -> change_password ();
2008-11-23 21:50:59 +00:00
} else if ( $this -> arg ( 'deleteaccount' )) {
$this -> delete_account ();
2008-09-05 20:47:32 +01:00
}
2008-11-23 21:50:59 +00:00
2008-09-06 08:06:51 +01:00
}
2008-09-05 20:47:32 +01:00
2008-09-06 08:06:51 +01:00
function show_settings_form () {
2008-09-05 20:47:32 +01:00
2008-09-06 08:06:51 +01:00
$user = common_current_user ();
$profile = $user -> getProfile ();
2008-09-05 20:47:32 +01:00
common_element_start ( 'form' , array ( 'method' => 'POST' ,
'id' => 'profilesettings' ,
'action' =>
common_local_url ( 'profilesettings' )));
common_hidden ( 'token' , common_session_token ());
2008-11-20 21:48:21 +00:00
2008-05-18 02:55:51 +01:00
# too much common patterns here... abstractable?
2008-11-20 21:48:21 +00:00
2008-07-08 10:45:31 +01:00
common_input ( 'nickname' , _ ( 'Nickname' ),
2008-06-12 17:52:01 +01:00
( $this -> arg ( 'nickname' )) ? $this -> arg ( 'nickname' ) : $profile -> nickname ,
2008-07-08 10:45:31 +01:00
_ ( '1-64 lowercase letters or numbers, no punctuation or spaces' ));
common_input ( 'fullname' , _ ( 'Full name' ),
2008-05-18 02:55:51 +01:00
( $this -> arg ( 'fullname' )) ? $this -> arg ( 'fullname' ) : $profile -> fullname );
2008-07-08 10:45:31 +01:00
common_input ( 'homepage' , _ ( 'Homepage' ),
2008-06-12 17:52:01 +01:00
( $this -> arg ( 'homepage' )) ? $this -> arg ( 'homepage' ) : $profile -> homepage ,
2008-07-08 10:45:31 +01:00
_ ( 'URL of your homepage, blog, or profile on another site' ));
common_textarea ( 'bio' , _ ( 'Bio' ),
2008-06-12 17:52:01 +01:00
( $this -> arg ( 'bio' )) ? $this -> arg ( 'bio' ) : $profile -> bio ,
2008-07-08 10:45:31 +01:00
_ ( 'Describe yourself and your interests in 140 chars' ));
common_input ( 'location' , _ ( 'Location' ),
2008-06-12 17:52:01 +01:00
( $this -> arg ( 'location' )) ? $this -> arg ( 'location' ) : $profile -> location ,
2008-07-08 10:45:31 +01:00
_ ( 'Where you are, like "City, State (or Region), Country"' ));
2008-11-20 21:48:21 +00:00
common_input ( 'tags' , _ ( 'Tags' ),
( $this -> arg ( 'tags' )) ? $this -> arg ( 'tags' ) : implode ( ' ' , $user -> getSelfTags ()),
_ ( 'Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated' ));
2008-07-21 14:56:37 +01:00
$language = common_language ();
common_dropdown ( 'language' , _ ( 'Language' ), get_nice_language_list (), _ ( 'Preferred language' ), TRUE , $language );
$timezone = common_timezone ();
$timezones = array ();
foreach ( DateTimeZone :: listIdentifiers () as $k => $v ) {
$timezones [ $v ] = $v ;
}
common_dropdown ( 'timezone' , _ ( 'Timezone' ), $timezones , _ ( 'What timezone are you normally in?' ), TRUE , $timezone );
common_checkbox ( 'autosubscribe' , _ ( 'Automatically subscribe to whoever subscribes to me (best for non-humans)' ),
( $this -> arg ( 'autosubscribe' )) ? $this -> boolean ( 'autosubscribe' ) : $user -> autosubscribe );
2008-09-05 20:47:32 +01:00
common_submit ( 'save' , _ ( 'Save' ));
2008-05-17 18:04:30 +01:00
common_element_end ( 'form' );
2008-09-06 08:06:51 +01:00
2008-05-15 17:28:44 +01:00
}
2008-05-19 13:27:08 +01:00
2008-09-06 08:06:51 +01:00
function show_avatar_form () {
2008-06-30 18:03:42 +01:00
2008-09-06 08:06:51 +01:00
$user = common_current_user ();
$profile = $user -> getProfile ();
2008-09-05 20:47:32 +01:00
2008-09-26 15:50:08 +01:00
if ( ! $profile ) {
common_log_db_error ( $user , 'SELECT' , __FILE__ );
$this -> server_error ( _ ( 'User without matching profile' ));
return ;
}
2008-09-06 08:06:51 +01:00
$original = $profile -> getOriginalAvatar ();
common_element_start ( 'form' , array ( 'enctype' => 'multipart/form-data' ,
'method' => 'POST' ,
2008-09-07 06:36:04 +01:00
'id' => 'avatar' ,
2008-09-06 08:06:51 +01:00
'action' =>
common_local_url ( 'profilesettings' )));
common_hidden ( 'token' , common_session_token ());
if ( $original ) {
common_element ( 'img' , array ( 'src' => $original -> url ,
'class' => 'avatar original' ,
'width' => $original -> width ,
'height' => $original -> height ,
'alt' => $user -> nickname ));
2008-09-05 20:47:32 +01:00
}
2008-09-06 08:06:51 +01:00
$avatar = $profile -> getAvatar ( AVATAR_PROFILE_SIZE );
if ( $avatar ) {
common_element ( 'img' , array ( 'src' => $avatar -> url ,
'class' => 'avatar profile' ,
'width' => AVATAR_PROFILE_SIZE ,
'height' => AVATAR_PROFILE_SIZE ,
'alt' => $user -> nickname ));
2008-09-05 20:47:32 +01:00
}
2008-09-06 08:06:51 +01:00
common_element ( 'input' , array ( 'name' => 'MAX_FILE_SIZE' ,
'type' => 'hidden' ,
'id' => 'MAX_FILE_SIZE' ,
'value' => MAX_AVATAR_SIZE ));
2008-09-07 06:36:04 +01:00
common_element_start ( 'p' );
2008-09-06 08:06:51 +01:00
common_element ( 'input' , array ( 'name' => 'avatarfile' ,
'type' => 'file' ,
'id' => 'avatarfile' ));
2008-09-07 06:36:04 +01:00
common_element_end ( 'p' );
2008-09-06 08:06:51 +01:00
common_submit ( 'upload' , _ ( 'Upload' ));
common_element_end ( 'form' );
2008-09-05 20:47:32 +01:00
}
2008-09-07 06:36:04 +01:00
function show_password_form () {
$user = common_current_user ();
common_element_start ( 'form' , array ( 'method' => 'POST' ,
'id' => 'password' ,
'action' =>
common_local_url ( 'profilesettings' )));
common_hidden ( 'token' , common_session_token ());
# Users who logged in with OpenID won't have a pwd
if ( $user -> password ) {
common_password ( 'oldpassword' , _ ( 'Old password' ));
}
common_password ( 'newpassword' , _ ( 'New password' ),
_ ( '6 or more characters' ));
common_password ( 'confirm' , _ ( 'Confirm' ),
_ ( 'same as password above' ));
common_submit ( 'changepass' , _ ( 'Change' ));
common_element_end ( 'form' );
}
2008-11-23 21:50:59 +00:00
2008-11-24 00:50:54 +00:00
function show_feeds_list ( $feeds ) {
common_element_start ( 'div' , array ( 'class' => 'feedsdel' ));
common_element ( 'p' , null , 'Feeds:' );
common_element_start ( 'ul' , array ( 'class' => 'xoxo' ));
foreach ( $feeds as $key => $value ) {
$this -> common_feed_item ( $feeds [ $key ]);
}
common_element_end ( 'ul' );
common_element_end ( 'div' );
}
function common_feed_item ( $feed ) {
$user = common_current_user ();
$nickname = $user -> nickname ;
switch ( $feed [ 'item' ]) {
case 'notices' : default :
$feed_classname = $feed [ 'type' ];
$feed_mimetype = " application/ " . $feed [ 'type' ] . " +xml " ;
$feed_title = " $nickname 's " . $feed [ 'version' ] . " notice feed " ;
$feed [ 'textContent' ] = " RSS " ;
break ;
case 'foaf' :
$feed_classname = " foaf " ;
$feed_mimetype = " application/ " . $feed [ 'type' ] . " +xml " ;
$feed_title = " $nickname 's FOAF file " ;
$feed [ 'textContent' ] = " FOAF " ;
break ;
}
common_element_start ( 'li' );
common_element ( 'a' , array ( 'href' => $feed [ 'href' ],
'class' => $feed_classname ,
'type' => $feed_mimetype ,
'title' => $feed_title ),
$feed [ 'textContent' ]);
common_element_end ( 'li' );
}
function show_delete_form () {
2008-11-23 21:50:59 +00:00
$user = common_current_user ();
2008-11-24 00:50:54 +00:00
$notices = DB_DataObject :: factory ( 'notice' );
$notices -> profile_id = $user -> id ;
$notice_count = ( int ) $notices -> count ();
2008-11-23 21:50:59 +00:00
common_element_start ( 'form' , array ( 'method' => 'POST' ,
2008-11-24 00:50:54 +00:00
'id' => 'delete' ,
2008-11-23 21:50:59 +00:00
'action' =>
common_local_url ( 'profilesettings' )));
common_hidden ( 'token' , common_session_token ());
2008-11-24 00:50:54 +00:00
common_element ( 'p' , null , " You can copy your notices and contacts by saving the two links belowxbefore deleting your account. Be careful, this operation cannot be undone. " );
$this -> show_feeds_list ( array ( 0 => array ( 'href' => common_local_url ( 'userrss' , array ( 'limit' => $notice_count , 'nickname' => $user -> nickname )),
'type' => 'rss' ,
'version' => 'RSS 1.0' ,
'item' => 'notices' ),
1 => array ( 'href' => common_local_url ( 'foaf' , array ( 'nickname' => $user -> nickname )),
'type' => 'rdf' ,
'version' => 'FOAF' ,
'item' => 'foaf' )));
2008-11-23 21:50:59 +00:00
common_submit ( 'deleteaccount' , _ ( 'Delete my account' ));
common_element_end ( 'form' );
}
2008-09-05 20:47:32 +01:00
function save_profile () {
2008-05-21 12:27:07 +01:00
$nickname = $this -> trimmed ( 'nickname' );
$fullname = $this -> trimmed ( 'fullname' );
$homepage = $this -> trimmed ( 'homepage' );
$bio = $this -> trimmed ( 'bio' );
$location = $this -> trimmed ( 'location' );
2008-07-21 14:56:37 +01:00
$autosubscribe = $this -> boolean ( 'autosubscribe' );
$language = $this -> trimmed ( 'language' );
$timezone = $this -> trimmed ( 'timezone' );
2008-11-20 21:48:21 +00:00
$tagstring = $this -> trimmed ( 'tags' );
2008-05-21 12:27:07 +01:00
# Some validation
2008-06-30 18:03:42 +01:00
2008-07-15 23:01:44 +01:00
if ( ! Validate :: string ( $nickname , array ( 'min_length' => 1 ,
'max_length' => 64 ,
'format' => VALIDATE_NUM . VALIDATE_ALPHA_LOWER ))) {
2008-07-13 06:37:48 +01:00
$this -> show_form ( _ ( 'Nickname must have only lowercase letters and numbers and no spaces.' ));
2008-05-21 12:27:07 +01:00
return ;
2008-06-22 19:04:37 +01:00
} else if ( ! User :: allowed_nickname ( $nickname )) {
2008-07-08 10:45:31 +01:00
$this -> show_form ( _ ( 'Not a valid nickname.' ));
2008-06-22 19:15:50 +01:00
return ;
2008-05-21 12:27:07 +01:00
} else if ( ! is_null ( $homepage ) && ( strlen ( $homepage ) > 0 ) &&
! Validate :: uri ( $homepage , array ( 'allowed_schemes' => array ( 'http' , 'https' )))) {
2008-07-08 10:45:31 +01:00
$this -> show_form ( _ ( 'Homepage is not a valid URL.' ));
2008-05-21 12:27:07 +01:00
return ;
} else if ( ! is_null ( $fullname ) && strlen ( $fullname ) > 255 ) {
2008-07-13 06:37:48 +01:00
$this -> show_form ( _ ( 'Full name is too long (max 255 chars).' ));
2008-05-21 12:27:07 +01:00
return ;
} else if ( ! is_null ( $bio ) && strlen ( $bio ) > 140 ) {
2008-07-08 10:45:31 +01:00
$this -> show_form ( _ ( 'Bio is too long (max 140 chars).' ));
2008-05-21 12:27:07 +01:00
return ;
} else if ( ! is_null ( $location ) && strlen ( $location ) > 255 ) {
2008-07-08 10:45:31 +01:00
$this -> show_form ( _ ( 'Location is too long (max 255 chars).' ));
2008-05-21 12:27:07 +01:00
return ;
2008-07-20 15:13:25 +01:00
} else if ( is_null ( $timezone ) || ! in_array ( $timezone , DateTimeZone :: listIdentifiers ())) {
$this -> show_form ( _ ( 'Timezone not selected.' ));
return ;
2008-05-21 12:27:07 +01:00
} else if ( $this -> nickname_exists ( $nickname )) {
2008-07-13 06:37:48 +01:00
$this -> show_form ( _ ( 'Nickname already in use. Try another one.' ));
2008-05-21 12:27:07 +01:00
return ;
2008-11-06 20:59:26 +00:00
} else if ( ! is_null ( $language ) && strlen ( $language ) > 50 ) {
$this -> show_form ( _ ( 'Language is too long (max 50 chars).' ));
2008-11-20 21:48:21 +00:00
return ;
2008-05-21 12:27:07 +01:00
}
2008-06-30 18:03:42 +01:00
2008-11-25 00:05:56 +00:00
if ( $tagstring ) {
$tags = array_map ( 'common_canonical_tag' , preg_split ( '/[\s,]+/' , $tagstring ));
} else {
$tags = array ();
}
2008-11-20 21:48:21 +00:00
foreach ( $tags as $tag ) {
if ( ! common_valid_profile_tag ( $tag )) {
$this -> show_form ( sprintf ( _ ( 'Invalid tag: "%s"' ), $tag ));
return ;
}
}
2008-05-15 17:28:44 +01:00
$user = common_current_user ();
2008-05-19 13:27:08 +01:00
2008-06-19 04:36:19 +01:00
$user -> query ( 'BEGIN' );
2008-05-20 20:14:12 +01:00
2008-07-20 15:13:25 +01:00
if ( $user -> nickname != $nickname ||
$user -> language != $language ||
$user -> timezone != $timezone ) {
2008-06-30 18:03:42 +01:00
2008-06-22 16:37:54 +01:00
common_debug ( 'Updating user nickname from ' . $user -> nickname . ' to ' . $nickname ,
__FILE__ );
2008-07-19 01:34:17 +01:00
common_debug ( 'Updating user language from ' . $user -> language . ' to ' . $language ,
__FILE__ );
2008-07-20 15:13:25 +01:00
common_debug ( 'Updating user timezone from ' . $user -> timezone . ' to ' . $timezone ,
__FILE__ );
2008-07-19 01:34:17 +01:00
$original = clone ( $user );
2008-07-20 15:13:25 +01:00
$user -> nickname = $nickname ;
2008-07-19 01:34:17 +01:00
$user -> language = $language ;
2008-07-20 15:13:25 +01:00
$user -> timezone = $timezone ;
2008-07-19 01:34:17 +01:00
$result = $user -> updateKeys ( $original );
if ( $result === FALSE ) {
common_log_db_error ( $user , 'UPDATE' , __FILE__ );
common_server_error ( _ ( 'Couldn\'t update user.' ));
return ;
2008-08-06 04:45:15 +01:00
} else {
# Re-initialize language environment if it changed
common_init_language ();
2008-07-19 01:34:17 +01:00
}
}
2008-05-15 17:28:44 +01:00
2008-07-21 00:37:12 +01:00
# XXX: XOR
2008-08-29 05:39:09 +01:00
2008-07-20 21:27:05 +01:00
if ( $user -> autosubscribe ^ $autosubscribe ) {
2008-08-29 05:39:09 +01:00
2008-07-20 21:27:05 +01:00
$original = clone ( $user );
2008-07-21 00:37:12 +01:00
$user -> autosubscribe = $autosubscribe ;
2008-07-20 21:27:05 +01:00
$result = $user -> update ( $original );
if ( $result === FALSE ) {
common_log_db_error ( $user , 'UPDATE' , __FILE__ );
2008-07-21 00:37:12 +01:00
common_server_error ( _ ( 'Couldn\'t update user for autosubscribe.' ));
2008-07-20 21:27:05 +01:00
return ;
}
}
2008-08-29 05:39:09 +01:00
2008-06-22 17:49:28 +01:00
$profile = $user -> getProfile ();
$orig_profile = clone ( $profile );
$profile -> nickname = $user -> nickname ;
$profile -> fullname = $fullname ;
$profile -> homepage = $homepage ;
$profile -> bio = $bio ;
$profile -> location = $location ;
$profile -> profileurl = common_profile_url ( $nickname );
common_debug ( 'Old profile: ' . common_log_objstring ( $orig_profile ), __FILE__ );
common_debug ( 'New profile: ' . common_log_objstring ( $profile ), __FILE__ );
2008-06-30 18:03:42 +01:00
2008-06-22 17:49:28 +01:00
$result = $profile -> update ( $orig_profile );
2008-06-30 18:03:42 +01:00
2008-06-22 17:49:28 +01:00
if ( ! $result ) {
common_log_db_error ( $profile , 'UPDATE' , __FILE__ );
2008-07-13 06:37:48 +01:00
common_server_error ( _ ( 'Couldn\'t save profile.' ));
2008-06-22 17:49:28 +01:00
return ;
}
2008-11-20 21:48:21 +00:00
# Set the user tags
2008-11-20 21:52:22 +00:00
$result = $user -> setSelfTags ( $tags );
2008-11-20 21:48:21 +00:00
if ( ! $result ) {
common_server_error ( _ ( 'Couldn\'t save tags.' ));
return ;
}
2008-06-22 15:20:15 +01:00
$user -> query ( 'COMMIT' );
2008-06-12 19:40:28 +01:00
common_broadcast_profile ( $profile );
2008-06-19 04:32:12 +01:00
2008-07-08 10:45:31 +01:00
$this -> show_form ( _ ( 'Settings saved.' ), TRUE );
2008-05-15 17:28:44 +01:00
}
2008-06-30 18:03:42 +01:00
2008-09-05 20:47:32 +01:00
function upload_avatar () {
switch ( $_FILES [ 'avatarfile' ][ 'error' ]) {
case UPLOAD_ERR_OK : # success, jump out
break ;
case UPLOAD_ERR_INI_SIZE :
case UPLOAD_ERR_FORM_SIZE :
$this -> show_form ( _ ( 'That file is too big.' ));
return ;
case UPLOAD_ERR_PARTIAL :
@ unlink ( $_FILES [ 'avatarfile' ][ 'tmp_name' ]);
$this -> show_form ( _ ( 'Partial upload.' ));
return ;
default :
$this -> show_form ( _ ( 'System error uploading file.' ));
return ;
}
$info = @ getimagesize ( $_FILES [ 'avatarfile' ][ 'tmp_name' ]);
if ( ! $info ) {
@ unlink ( $_FILES [ 'avatarfile' ][ 'tmp_name' ]);
$this -> show_form ( _ ( 'Not an image or corrupt file.' ));
return ;
}
switch ( $info [ 2 ]) {
case IMAGETYPE_GIF :
case IMAGETYPE_JPEG :
case IMAGETYPE_PNG :
break ;
default :
$this -> show_form ( _ ( 'Unsupported image file format.' ));
return ;
}
$user = common_current_user ();
$profile = $user -> getProfile ();
if ( $profile -> setOriginal ( $_FILES [ 'avatarfile' ][ 'tmp_name' ])) {
$this -> show_form ( _ ( 'Avatar updated.' ), true );
} else {
$this -> show_form ( _ ( 'Failed updating avatar.' ));
}
@ unlink ( $_FILES [ 'avatarfile' ][ 'tmp_name' ]);
}
2008-05-21 12:27:07 +01:00
function nickname_exists ( $nickname ) {
$user = common_current_user ();
$other = User :: staticGet ( 'nickname' , $nickname );
if ( ! $other ) {
return false ;
} else {
return $other -> id != $user -> id ;
}
}
2008-09-07 06:36:04 +01:00
function change_password () {
$user = common_current_user ();
assert ( ! is_null ( $user )); # should already be checked
# FIXME: scrub input
$newpassword = $this -> arg ( 'newpassword' );
$confirm = $this -> arg ( 'confirm' );
$token = $this -> arg ( 'token' );
if ( 0 != strcmp ( $newpassword , $confirm )) {
$this -> show_form ( _ ( 'Passwords don\'t match.' ));
return ;
}
if ( $user -> password ) {
$oldpassword = $this -> arg ( 'oldpassword' );
if ( ! common_check_user ( $user -> nickname , $oldpassword )) {
$this -> show_form ( _ ( 'Incorrect old password' ));
return ;
}
}
$original = clone ( $user );
$user -> password = common_munge_password ( $newpassword , $user -> id );
$val = $user -> validate ();
if ( $val !== TRUE ) {
$this -> show_form ( _ ( 'Error saving user; invalid.' ));
return ;
}
if ( ! $user -> update ( $original )) {
common_server_error ( _ ( 'Can\'t save new password.' ));
return ;
}
$this -> show_form ( _ ( 'Password saved.' ), true );
}
2008-11-23 21:50:59 +00:00
function delete_account () {
$user = common_current_user ();
assert ( ! is_null ( $user )); # should already be checked
2008-12-03 16:49:42 +00:00
// deleted later through the profile
/*
$avatar = new Avatar ;
$avatar -> profile_id = $user -> id ;
$n_avatars_deleted = $avatar -> delete ();
*/
$fave = new Fave ;
$fave -> user_id = $user -> id ;
$n_faves_deleted = $fave -> delete ();
$confirmation = new Confirm_address ;
$confirmation -> user_id = $user -> id ;
$n_confirmations_deleted = $confirmation -> delete ();
// TODO foreign stuff...
$invitation = new Invitation ;
$invitation -> user_id = $user -> id ;
$n_invitations_deleted = $invitation -> delete ();
$message_from = new Message ;
$message_from -> from_profile = $user -> id ;
$n_messages_from_deleted = $message_from -> delete ();
$message_to = new Message ;
$message_to -> to_profile = $user -> id ;
$n_messages_to_deleted = $message_to -> delete ();
$notice = new Notice ;
$notice -> profile_id = $user -> id ;
$n_notices_deleted = $notice -> delete ();
$notice_inbox = new Notice_inbox ;
$notice_inbox -> user_id = $user -> id ;
$n_notices_inbox_deleted = $notice_inbox -> delete ();
$profile_tagger = new Profile_tag ;
$profile_tagger -> tagger = $user -> id ;
$n_profiles_tagger_deleted = $profile_tagger -> delete ();
$profile_tagged = new Profile_tag ;
$profile_tagged -> tagged = $user -> id ;
$n_profiles_tagged_deleted = $profile_tagged -> delete ();
$remember_me = new Remember_me ;
$remember_me -> user_id = $user -> id ;
$n_remember_mes_deleted = $remember_me -> delete ();
$reply_from = new Reply ;
$reply_from -> profile_id = $user -> id ;
$n_replies_from_deleted = $reply_from -> delete ();
// not sure if this should be deleted...
//TODO: test
if ( 1 ) {
$reply_to = new Reply ;
$reply_to -> replied_id = $user -> id ;
$reply_to -> find ();
while ( $reply_to -> fetch ()) {
$str = print_r ( $reply_to , true );
}
// $n_replies_to_deleted = $reply_to->delete();
}
$subscriber = new Subscription ;
$subscriber -> subscriber = $user -> id ;
$n_subscribers_deleted = $subscriber -> delete ();
$subscribed = new Subscription ;
$subscribed -> subscribed = $user -> id ;
$n_subscribeds_deleted = $subscribed -> delete ();
$user_openid = new User_openid ;
$user_openid -> user_id = $user -> id ;
$n_user_openids_deleted = $user_openid -> delete ();
// last steps
if ( 0 ) {
$profile = new Profile ;
$profile -> id = $user -> id ;
$profile -> delete_avatars ();
$n_profiles_deleted = $profile -> delete ();
$n_users_deleted = $user -> delete ();
}
$this -> show_form ( _ ( " Your account has been deleted. ( $str ) " ), true );
2008-11-23 21:50:59 +00:00
}
2008-06-24 02:46:42 +01:00
}