* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
*/
-if (!defined('STATUSNET')) {
- exit(1);
-}
+if (!defined('GNUSOCIAL')) { exit(1); }
/**
* Edit user settings for Facebook
*
* @see SettingsAction
*/
-class FacebooksettingsAction extends ConnectSettingsAction {
-
+class FacebooksettingsAction extends SettingsAction {
private $facebook; // Facebook PHP-SDK client obj
- private $flink;
- private $user;
- /**
- * For initializing members of the class.
- *
- * @param array $argarray misc. arguments
- *
- * @return boolean true
- */
- function prepare($args) {
- parent::prepare($args);
+ protected $flink;
+ protected function doPreparation()
+ {
$this->facebook = new Facebook(
array(
'appId' => common_config('facebook', 'appid'),
)
);
- $this->user = common_current_user();
-
$this->flink = Foreign_link::getByUserID(
- $this->user->id,
+ $this->scoped->getID(),
FACEBOOK_SERVICE
);
-
- return true;
}
- /*
- * Check the sessions token and dispatch
- */
- function handlePost($args) {
- // CSRF protection
-
- $token = $this->trimmed('token');
- if (!$token || $token != common_session_token()) {
- $this->showForm(
- _m('There was a problem with your session token. Try again, please.')
- );
- return;
- }
-
+ protected function doPost()
+ {
if ($this->arg('save')) {
- $this->saveSettings();
+ return $this->saveSettings();
} else if ($this->arg('disconnect')) {
- $this->disconnect();
+ return $this->disconnect();
}
+
+ throw new ClientException(_('No action to take on POST.'));
}
/**
*/
function title() {
// TRANS: Page title for Facebook settings.
- return _m('Facebook settings');
+ return _m('TITLE','Facebook settings');
}
/**
* @return instructions for use
*/
function getInstructions() {
- return _('Facebook settings');
+ // TRANS: Instructions for Facebook settings.
+ return _m('Facebook settings');
}
/*
* @return void
*/
function showContent() {
+ if (!$this->flink instanceof Foreign_link) {
+ throw new ServerException(_m('You have not linked this account to Facebook.'));
+ }
- if (!empty($this->flink)) {
-
- $this->elementStart(
- 'form',
- array(
- 'method' => 'post',
- 'id' => 'form_settings_facebook',
- 'class' => 'form_settings',
- 'action' => common_local_url('facebooksettings')
- )
- );
-
- $this->hidden('token', common_session_token());
-
- $this->element('p', 'form_note', _m('Connected Facebook user'));
-
- $this->elementStart('p', array('class' => 'facebook-user-display'));
+ $this->elementStart(
+ 'form',
+ array(
+ 'method' => 'post',
+ 'id' => 'form_settings_facebook',
+ 'class' => 'form_settings',
+ 'action' => common_local_url('facebooksettings')
+ )
+ );
- $this->element(
- 'fb:profile-pic',
- array(
- 'uid' => $this->flink->foreign_id,
- 'size' => 'small',
- 'linked' => 'true',
- 'facebook-logo' => 'true'
- )
- );
+ $this->hidden('token', common_session_token());
- $this->element(
- 'fb:name',
- array('uid' => $this->flink->foreign_id, 'useyou' => 'false')
- );
+ // TRANS: Form note. User is connected to facebook.
+ $this->element('p', 'form_note', _m('Connected Facebook user'));
- $this->elementEnd('p');
+ $this->elementStart('p', array('class' => 'facebook-user-display'));
- $this->elementStart('ul', 'form_data');
+ $this->element(
+ 'fb:profile-pic',
+ array(
+ 'uid' => $this->flink->foreign_id,
+ 'size' => 'small',
+ 'linked' => 'true',
+ 'facebook-logo' => 'true'
+ )
+ );
- $this->elementStart('li');
+ $this->element(
+ 'fb:name',
+ array('uid' => $this->flink->foreign_id, 'useyou' => 'false')
+ );
- $this->checkbox(
- 'noticesync',
- _m('Publish my notices to Facebook.'),
- ($this->flink) ? ($this->flink->noticesync & FOREIGN_NOTICE_SEND) : true
- );
+ $this->elementEnd('p');
- $this->elementEnd('li');
+ $this->elementStart('ul', 'form_data');
- $this->elementStart('li');
+ $this->elementStart('li');
- $this->checkbox(
- 'replysync',
- _m('Send "@" replies to Facebook.'),
- ($this->flink) ? ($this->flink->noticesync & FOREIGN_NOTICE_SEND_REPLY) : true
- );
+ $this->checkbox(
+ 'noticesync',
+ // TRANS: Checkbox label in Facebook settings.
+ _m('Publish my notices to Facebook.'),
+ $this->flink->noticesync & FOREIGN_NOTICE_SEND
+ );
- $this->elementEnd('li');
+ $this->elementEnd('li');
- $this->elementStart('li');
+ $this->elementStart('li');
- // TRANS: Submit button to save synchronisation settings.
- $this->submit('save', _m('BUTTON', 'Save'));
+ $this->checkbox(
+ 'replysync',
+ // TRANS: Checkbox label in Facebook settings.
+ _m('Send "@" replies to Facebook.'),
+ $this->flink->noticesync & FOREIGN_NOTICE_SEND_REPLY
+ );
- $this->elementEnd('li');
+ $this->elementEnd('li');
- $this->elementEnd('ul');
+ $this->elementStart('li');
- $this->elementStart('fieldset');
+ // TRANS: Submit button to save synchronisation settings.
+ $this->submit('save', _m('BUTTON', 'Save'));
- // TRANS: Legend.
- $this->element('legend', null, _m('Disconnect my account from Facebook'));
+ $this->elementEnd('li');
- if (empty($this->user->password)) {
+ $this->elementEnd('ul');
- $this->elementStart('p', array('class' => 'form_guide'));
+ $this->elementStart('fieldset');
- $msg = sprintf(
- _m(
- 'Disconnecting your Faceboook would make it impossible to '
- . 'log in! Please [set a password](%s) first.'
- ),
- common_local_url('passwordsettings')
- );
+ // TRANS: Fieldset legend for form to disconnect from Facebook.
+ $this->element('legend', null, _m('Disconnect my account from Facebook'));
- $this->raw(common_markup_to_html($msg));
- $this->elementEnd('p');
+ if (!$this->scoped->hasPassword()) {
+ $this->elementStart('p', array('class' => 'form_guide'));
- } else {
+ $msg = sprintf(
+ // TRANS: Notice in disconnect from Facebook form if user has no local StatusNet password.
+ _m('Disconnecting your Faceboook would make it impossible to '.
+ 'log in! Please [set a password](%s) first.'),
+ common_local_url('passwordsettings')
+ );
- $msg = sprintf(
- _m(
- 'Keep your %1$s account but disconnect from Facebook. ' .
- 'You\'ll use your 1%$s password to log in.'
- ),
- common_config('site', 'name')
- );
+ $this->raw(common_markup_to_html($msg));
+ $this->elementEnd('p');
+ } else {
+ // @todo FIXME: i18n: This message is not being used.
+ // TRANS: Message displayed when initiating disconnect of a StatusNet user
+ // TRANS: from a Facebook account. %1$s is the StatusNet site name.
+ $msg = sprintf(_m('Keep your %1$s account but disconnect from Facebook. ' .
+ 'You\'ll use your %1$s password to log in.'),
+ common_config('site', 'name')
+ );
- // TRANS: Submit button.
- $this->submit('disconnect', _m('BUTTON', 'Disconnect'));
- }
+ // TRANS: Submit button.
+ $this->submit('disconnect', _m('BUTTON', 'Disconnect'));
+ }
- $this->elementEnd('fieldset');
+ $this->elementEnd('fieldset');
- $this->elementEnd('form');
- }
+ $this->elementEnd('form');
}
/*
* @return void
*/
function saveSettings() {
-
$noticesync = $this->boolean('noticesync');
$replysync = $this->boolean('replysync');
$result = $this->flink->update($original);
if ($result === false) {
- $this->showForm(_m('There was a problem saving your sync preferences.'));
- } else {
- // TRANS: Confirmation that synchronisation settings have been saved into the system.
- $this->showForm(_m('Sync preferences saved.'), true);
+ // TRANS: Notice in case saving of synchronisation preferences fail.
+ throw new ServerException(_m('There was a problem saving your sync preferences.'));
}
+ // TRANS: Confirmation that synchronisation settings have been saved into the system.
+ return _m('Sync preferences saved.');
}
/*
* and shows the user a success message if all goes well.
*/
function disconnect() {
-
$result = $this->flink->delete();
$this->flink = null;
if ($result === false) {
- common_log_db_error($user, 'DELETE', __FILE__);
- $this->serverError(_m('Couldn\'t delete link to Facebook.'));
- return;
+ common_log_db_error($this->flink, 'DELETE', __FILE__);
+ // TRANS: Server error displayed when deleting the link to a Facebook account fails.
+ throw new ServerException(_m('Could not delete link to Facebook.'));
}
- $this->showForm(_m('You have disconnected from Facebook.'), true);
+ // TRANS: Confirmation message. GNU social account was unlinked from Facebook.
+ return _m('You have disconnected this account from Facebook.');
}
-
}