. */ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } require_once INSTALLDIR . '/plugins/Facebook/facebookaction.php'; 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(); } /** * 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 showSuccessContent() { $this->element('h2', null, sprintf(_m('Thanks for inviting your friends to use %s'), common_config('site', 'name'))); $this->element('p', null, _m('Invitations have been sent to the following users:')); $friend_ids = $_POST['ids']; // XXX: Hmm... is this the best way to access the list? $this->elementStart('ul', array('id' => 'facebook-friends')); 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->elementEnd("ul"); } function showFormContent() { $content = sprintf(_m('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(_m('Invite your friends to use %s'), common_config('site', 'name')); $multi_params = array('showborder' => 'false'); $multi_params['actiontext'] = $actiontext; $multi_params['bypass'] = 'cancel'; $multi_params['cols'] = 4; // 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); $multi_params['exclude_ids'] = $exclude_ids_csv; } $this->element('fb:multi-friend-selector', $multi_params); $this->elementEnd('fb:request-form'); if ($exclude_ids) { $this->element('h2', null, sprintf(_m('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(_m('Send invitations')); } }