Move App to src
[friendica.git/.git] / mod / profperm.php
1 <?php
2
3 use Friendica\App;
4
5 function profperm_init(App $a) {
6
7         if (! local_user()) {
8                 return;
9         }
10
11         $which = $a->user['nickname'];
12         $profile = $a->argv[1];
13
14         profile_load($a,$which,$profile);
15
16 }
17
18
19 function profperm_content(App $a) {
20
21         if (! local_user()) {
22                 notice( t('Permission denied') . EOL);
23                 return;
24         }
25
26
27         if($a->argc < 2) {
28                 notice( t('Invalid profile identifier.') . EOL );
29                 return;
30         }
31
32         // Switch to text mod interface if we have more than 'n' contacts or group members
33
34         $switchtotext = get_pconfig(local_user(),'system','groupedit_image_limit');
35         if($switchtotext === false)
36                 $switchtotext = get_config('system','groupedit_image_limit');
37         if($switchtotext === false)
38                 $switchtotext = 400;
39
40
41         if(($a->argc > 2) && intval($a->argv[1]) && intval($a->argv[2])) {
42                 $r = q("SELECT `id` FROM `contact` WHERE `blocked` = 0 AND `pending` = 0 AND `self` = 0
43                         AND `network` = '%s' AND `id` = %d AND `uid` = %d LIMIT 1",
44                         dbesc(NETWORK_DFRN),
45                         intval($a->argv[2]),
46                         intval(local_user())
47                 );
48                 if (dbm::is_result($r))
49                         $change = intval($a->argv[2]);
50         }
51
52
53         if(($a->argc > 1) && (intval($a->argv[1]))) {
54                 $r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d AND `is-default` = 0 LIMIT 1",
55                         intval($a->argv[1]),
56                         intval(local_user())
57                 );
58                 if (! dbm::is_result($r)) {
59                         notice( t('Invalid profile identifier.') . EOL );
60                         return;
61                 }
62                 $profile = $r[0];
63
64                 $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `profile-id` = %d",
65                         intval(local_user()),
66                         intval($a->argv[1])
67                 );
68
69                 $ingroup = array();
70                 if (dbm::is_result($r))
71                         foreach($r as $member)
72                                 $ingroup[] = $member['id'];
73
74                 $members = $r;
75
76                 if($change) {
77                         if(in_array($change,$ingroup)) {
78                                 q("UPDATE `contact` SET `profile-id` = 0 WHERE `id` = %d AND `uid` = %d",
79                                         intval($change),
80                                         intval(local_user())
81                                 );
82                         }
83                         else {
84                                 q("UPDATE `contact` SET `profile-id` = %d WHERE `id` = %d AND `uid` = %d",
85                                         intval($a->argv[1]),
86                                         intval($change),
87                                         intval(local_user())
88                                 );
89
90                         }
91
92                         $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `profile-id` = %d",
93                                 intval(local_user()),
94                                 intval($a->argv[1])
95                         );
96
97                         $members = $r;
98
99                         $ingroup = array();
100                         if (dbm::is_result($r))
101                                 foreach($r as $member)
102                                         $ingroup[] = $member['id'];
103                 }
104
105                 $o .= '<h2>' . t('Profile Visibility Editor') . '</h2>';
106
107                 $o .= '<h3>' . t('Profile') . ' \'' . $profile['profile-name'] . '\'</h3>';
108
109                 $o .= '<div id="prof-edit-desc">' . t('Click on a contact to add or remove.') . '</div>';
110
111         }
112
113         $o .= '<div id="prof-update-wrapper">';
114         if($change)
115                 $o = '';
116
117         $o .= '<div id="prof-members-title">';
118         $o .= '<h3>' . t('Visible To') . '</h3>';
119         $o .= '</div>';
120         $o .= '<div id="prof-members">';
121
122         $textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false);
123
124         foreach($members as $member) {
125                 if($member['url']) {
126                         $member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['id'] . '); return true;';
127                         $o .= micropro($member,true,'mpprof', $textmode);
128                 }
129         }
130         $o .= '</div><div id="prof-members-end"></div>';
131         $o .= '<hr id="prof-separator" />';
132
133         $o .= '<div id="prof-all-contcts-title">';
134         $o .= '<h3>' . t("All Contacts \x28with secure profile access\x29") . '</h3>';
135         $o .= '</div>';
136         $o .= '<div id="prof-all-contacts">';
137
138                 $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `blocked` = 0 and `pending` = 0 and `self` = 0
139                         AND `network` = '%s' ORDER BY `name` ASC",
140                         intval(local_user()),
141                         dbesc(NETWORK_DFRN)
142                 );
143
144                 if (dbm::is_result($r)) {
145                         $textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false);
146                         foreach($r as $member) {
147                                 if(! in_array($member['id'],$ingroup)) {
148                                         $member['click'] = 'profChangeMember(' . $profile['id'] . ',' . $member['id'] . '); return true;';
149                                         $o .= micropro($member,true,'mpprof',$textmode);
150                                 }
151                         }
152                 }
153
154                 $o .= '</div><div id="prof-all-contacts-end"></div>';
155
156         if($change) {
157                 echo $o;
158                 killme();
159         }
160         $o .= '</div>';
161         return $o;
162
163 }
164