]> git.mxchange.org Git - friendica.git/blob - include/group.php
848db43bd3485c5add4bd70c6cd7eee64d1801bf
[friendica.git] / include / group.php
1 <?php
2
3
4 function group_add($uid,$name) {
5
6         $ret = false;
7         if(x($uid) && x($name)) {
8                 $r = group_byname($uid,$name); // check for dups
9                 if($r !== false) 
10                         return true;
11                 $r = q("INSERT INTO `group` ( `uid`, `name` )
12                         VALUES( %d, '%s' ) ",
13                         intval($uid),
14                         dbesc($name)
15                 );
16                 $ret = $r;
17         }       
18         return $ret;
19 }
20
21
22 function group_rmv($uid,$name) {
23         $ret = false;
24         if(x($uid) && x($name)) {
25                 $r = q("SELECT * FROM `group` WHERE `uid` = %d AND `name` = '%s' LIMIT 1",
26                         intval($uid),
27                         dbesc($name)
28                 );
29                 if(count($r))
30                         $group_id = $r[0]['id'];
31                 if(! $group_id)
32                         return false;
33
34                 // remove all members
35                 $r = q("DELETE FROM `group_member` WHERE `uid` = %d AND `gid` = %d ",
36                         intval($uid),
37                         intval($group_id)
38                 );
39
40                 // remove group
41                 $r = q("DELETE FROM `group` WHERE `uid` = %d AND `id` = %d LIMIT 1",
42                         intval($uid),
43                         dbesc($name)
44                 );
45
46                 $ret = $r;
47
48         }
49         // TODO!! remove this group from all content ACL's !!
50
51         return $ret;
52 }
53
54 function group_byname($uid,$name) {
55         if((! $uid) || (! strlen($name)))
56                 return false;
57         $r = q("SELECT * FROM `group` WHERE `uid` = %d AND `name` = '%s' LIMIT 1",
58                 intval($uid),
59                 dbesc($name)
60         );
61         if(count($r))
62                 return $r[0]['id'];
63         return false;
64 }
65
66 function group_rmv_member($uid,$name,$member) {
67         $gid = group_byname($uid,$name);
68         if(! $gid)
69                 return false;
70         if(! ( $uid && $gid && $member))
71                 return false;
72         $r = q("DELETE FROM `group_member` WHERE `uid` = %d AND `gid` = %d AND `contact-id` = %d LIMIT 1 ",
73                 intval($uid),
74                 intval($gid),
75                 intval($member)
76         );
77         return $r;
78         
79
80 }
81
82
83 function group_add_member($uid,$name,$member) {
84         $gid = group_byname($uid,$name);
85         if((! $gid) || (! $uid) || (! $member))
86                 return false;
87
88         $r = q("SELECT * FROM `group_member` WHERE `uid` = %d AND `id` = %d AND `contact-id` = %d LIMIT 1",     
89                 intval($uid),
90                 intval($gid),
91                 intval($member)
92         );
93         if(count($r))
94                 return true;    // You might question this, but 
95                                 // we indicate success because the group was in fact created
96                                 // -- It was just created at another time
97         if(! count($r))
98                 $r = q("INSERT INTO `group_member` (`uid`, `gid`, `contact-id`)
99                         VALUES( %d, %d, %d ) ",
100                         intval($uid),
101                         intval($gid),
102                         intval($member)
103         );
104         return $r;
105 }
106
107 function group_get_members($gid) {
108         $ret = array();
109         if(intval($gid)) {
110                 $r = q("SELECT `group_member`.`contact-id`, `contact`.* FROM `group_member` 
111                         LEFT JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id` 
112                         WHERE `gid` = %d AND `group_member`.`uid` = %d",
113                         intval($gid),
114                         intval($_SESSION['uid'])
115                 );
116                 if(count($r))
117                         $ret = $r;
118         }
119         return $ret;
120 }
121
122
123
124 function group_side($every="contacts",$each="group") {
125
126         if(! local_user())
127                 return;
128
129 $createtext = t('Create a new group');
130 $linktext= t('Everybody');
131
132 $o .= <<< EOT
133
134 <div id="group-sidebar">
135 <h3>Groups</h3>
136
137 <div id="sidebar-new-group">
138 <a href="group/new">$createtext</a>
139 </div>
140
141 <div id="sidebar-group-list">
142         <ul id="sidebar-group-ul">
143         <li class="sidebar-group-li" ><a href="$every" >$linktext</a></li>
144
145 EOT;
146
147         $r = q("SELECT * FROM `group` WHERE `uid` = %d",
148                 intval($_SESSION['uid'])
149         );
150         if(count($r)) {
151                 foreach($r as $rr)
152                         $o .= " <li class=\"sidebar-group-li\"><a href=\"$each/{$rr['id']}\">{$rr['name']}</a></li>\r\n";
153         }
154         $o .= " </ul>\r\n       </div>\r\n</div>";      
155
156         return $o;
157 }
158
159 function expand_groups($a) {
160         if(! (is_array($a) && count($a)))
161                 return array();
162         $groups = implode(',', $a);
163         $groups = dbesc($groups);
164         $r = q("SELECT `contact-id` FROM `group_member` WHERE `gid` IN ( $groups )");
165         $ret = array();
166         if(count($r))
167                 foreach($r as $rr)
168                         $ret[] = $rr['contact-id'];
169         return $ret;
170 }