X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=actions%2Ffacebookinvite.php;h=1302064ad7fc6c8b33f540c3c8eb4df06beaccc3;hb=df07786f28e89474f66a910eeb3d454e3a5b75ba;hp=00efa654b12cf41553d2db2a64f06f3302a96de3;hpb=fd6f9b9d7622f280f92810770deb217eb7301c14;p=quix0rs-gnu-social.git diff --git a/actions/facebookinvite.php b/actions/facebookinvite.php index 00efa654b1..1302064ad7 100644 --- a/actions/facebookinvite.php +++ b/actions/facebookinvite.php @@ -27,23 +27,120 @@ class FacebookinviteAction extends FacebookAction function handle($args) { parent::handle($args); + $this->showForm(); + } + + /** + * Wrapper for showing a page + * + * Stores an error and shows the page + * + * @param string $error Error, if any + * + * @return void + */ + + function showForm($error=null) + { + $this->error = $error; + $this->showPage(); + } - $this->display(); + /** + * Show the page content + * + * Either shows the registration form or, if registration was successful, + * instructions for using the site. + * + * @return void + */ + + function showContent() + { + if ($this->arg('ids')) { + $this->showSuccessContent(); + } else { + $this->showFormContent(); + } } - function display() + function showSuccessContent() { - $facebook = get_facebook(); + $this->element('h2', null, sprintf(_('Thanks for inviting your friends to use %s'), + common_config('site', 'name'))); + $this->element('p', null, _('Invitations have been sent to the following users:')); - $fbuid = $facebook->require_login(); + $friend_ids = $_POST['ids']; // XXX: Hmm... is this the best way to access the list? - $this->show_header('Invite'); + $this->elementStart('ul', array('id' => 'facebook-friends')); - echo '

Coming soon...

'; + foreach ($friend_ids as $friend) { + $this->elementStart('li'); + $this->element('fb:profile-pic', array('uid' => $friend, 'size' => 'square')); + $this->element('fb:name', array('uid' => $friend, + 'capitalize' => 'true')); + $this->elementEnd('li'); + } - $this->show_footer(); + $this->elementEnd("ul"); } + function showFormContent() + { + + // Get a list of users who are already using the app for exclusion + $exclude_ids = $this->facebook->api_client->friends_getAppUsers(); + $exclude_ids_csv = null; + + // fbml needs these as a csv string, not an array + if ($exclude_ids) { + $exclude_ids_csv = implode(',', $exclude_ids); + } + + $content = sprintf(_('You have been invited to %s'), common_config('site', 'name')) . + htmlentities(''); + + $this->elementStart('fb:request-form', array('action' => 'invite.php', + 'method' => 'post', + 'invite' => 'true', + 'type' => common_config('site', 'name'), + 'content' => $content)); + $this->hidden('invite', 'true'); + $actiontext = sprintf(_('Invite your friends to use %s'), common_config('site', 'name')); + + $multi_params = array('showborder' => 'false'); + $multi_params['actiontext'] = $actiontext; + + if ($exclude_ids_csv) { + $multi_params['exclude_ids'] = $exclude_ids_csv; + } + + $multi_params['bypass'] = 'cancel'; + + $this->element('fb:multi-friend-selector', $multi_params); + + $this->elementEnd('fb:request-form'); + + $this->element('h2', null, sprintf(_('Friends already using %s:'), + common_config('site', 'name'))); + $this->elementStart('ul', array('id' => 'facebook-friends')); + + foreach ($exclude_ids as $friend) { + $this->elementStart('li'); + $this->element('fb:profile-pic', array('uid' => $friend, 'size' => 'square')); + $this->element('fb:name', array('uid' => $friend, + 'capitalize' => 'true')); + $this->elementEnd('li'); + } + + $this->elementEnd("ul"); + } + + function title() + { + return sprintf(_('Send invitations')); + } + }