]> git.mxchange.org Git - quix0rs-gnu-social.git/blob - plugins/Facebook/facebookinvite.php
e02c7bf3ed3f4ebedb00f3ab814e1c71a27e412c
[quix0rs-gnu-social.git] / plugins / Facebook / facebookinvite.php
1 <?php
2 /*
3  * StatusNet - the distributed open-source microblogging tool
4  * Copyright (C) 2008, 2009, StatusNet, Inc.
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU Affero General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.     See the
14  * GNU Affero General Public License for more details.
15  *
16  * You should have received a copy of the GNU Affero General Public License
17  * along with this program.     If not, see <http://www.gnu.org/licenses/>.
18  */
19
20 if (!defined('STATUSNET') && !defined('LACONICA')) {
21     exit(1);
22 }
23
24 require_once INSTALLDIR . '/plugins/Facebook/facebookaction.php';
25
26 class FacebookinviteAction extends FacebookAction
27 {
28
29     function handle($args)
30     {
31         parent::handle($args);
32         $this->showForm();
33     }
34
35     /**
36      * Wrapper for showing a page
37      *
38      * Stores an error and shows the page
39      *
40      * @param string $error Error, if any
41      *
42      * @return void
43      */
44
45     function showForm($error=null)
46     {
47         $this->error = $error;
48         $this->showPage();
49     }
50
51     /**
52      * Show the page content
53      *
54      * Either shows the registration form or, if registration was successful,
55      * instructions for using the site.
56      *
57      * @return void
58      */
59
60     function showContent()
61     {
62         if ($this->arg('ids')) {
63             $this->showSuccessContent();
64         } else {
65             $this->showFormContent();
66         }
67     }
68
69     function showSuccessContent()
70     {
71
72         $this->element('h2', null, sprintf(_m('Thanks for inviting your friends to use %s'),
73             common_config('site', 'name')));
74         $this->element('p', null, _m('Invitations have been sent to the following users:'));
75
76         $friend_ids = $_POST['ids']; // XXX: Hmm... is this the best way to access the list?
77
78         $this->elementStart('ul', array('id' => 'facebook-friends'));
79
80         foreach ($friend_ids as $friend) {
81             $this->elementStart('li');
82             $this->element('fb:profile-pic', array('uid' => $friend, 'size' => 'square'));
83             $this->element('fb:name', array('uid' => $friend,
84                                             'capitalize' => 'true'));
85             $this->elementEnd('li');
86         }
87
88         $this->elementEnd("ul");
89
90     }
91
92     function showFormContent()
93     {
94         $content = sprintf(_m('You have been invited to %s'), common_config('site', 'name')) .
95             htmlentities('<fb:req-choice url="' . $this->app_uri . '" label="Add"/>');
96
97         $this->elementStart('fb:request-form', array('action' => 'invite.php',
98                                                       'method' => 'post',
99                                                       'invite' => 'true',
100                                                       'type' => common_config('site', 'name'),
101                                                       'content' => $content));
102         $this->hidden('invite', 'true');
103         $actiontext = sprintf(_m('Invite your friends to use %s'), common_config('site', 'name'));
104
105         $multi_params = array('showborder' => 'false');
106         $multi_params['actiontext'] = $actiontext;
107         $multi_params['bypass'] = 'cancel';
108         $multi_params['cols'] = 4;
109
110         // Get a list of users who are already using the app for exclusion
111         $exclude_ids = $this->facebook->api_client->friends_getAppUsers();
112         $exclude_ids_csv = null;
113
114         // fbml needs these as a csv string, not an array
115         if ($exclude_ids) {
116             $exclude_ids_csv = implode(',', $exclude_ids);
117             $multi_params['exclude_ids'] = $exclude_ids_csv;
118         }
119
120         $this->element('fb:multi-friend-selector', $multi_params);
121         $this->elementEnd('fb:request-form');
122
123         if ($exclude_ids) {
124
125             $this->element('h2', null, sprintf(_m('Friends already using %s:'),
126                 common_config('site', 'name')));
127             $this->elementStart('ul', array('id' => 'facebook-friends'));
128
129             foreach ($exclude_ids as $friend) {
130                 $this->elementStart('li');
131                 $this->element('fb:profile-pic', array('uid' => $friend, 'size' => 'square'));
132                 $this->element('fb:name', array('uid' => $friend,
133                                                 'capitalize' => 'true'));
134                 $this->elementEnd('li');
135             }
136
137             $this->elementEnd("ul");
138         }
139     }
140
141     function title()
142     {
143         return sprintf(_m('Send invitations'));
144     }
145
146 }