3 class sml_data_source_groupes extends mw_data{
5 function init_groupe_status(){
9 function source_groupes($id_source)
10 { $env = $this->env();
11 $sgbd = $this->sgbd();
13 $groupes_status = array();
14 if($rst = $sgbd->open_data("sml_sources_authors"))
15 { while($v_rst = $sgbd->fetch_data($rst))
16 { if(isset($v_rst) && isset($v_rst["id_author"]) && isset($v_rst["id_source"]) && isset($v_rst["id_sources_access"]))
17 { if($v_rst["id_source"] == $id_source) $groupes_status[$v_rst["id_author"]] = $v_rst["id_sources_access"];
20 { $groupes_status = false;
24 $sgbd->close_data($rst);
26 else $groupes_status = false;
27 if($groupes_status === false) return false;
28 if($rst = $sgbd->open_data("sml_authors"))
29 { while($v_rst = $sgbd->fetch_data($rst))
30 { if(isset($v_rst) && isset($v_rst["id"]))
31 { if(isset($groupes_status[$v_rst["id"]]))
32 { $groupes[$v_rst["id"]] = $v_rst;
33 $groupes[$v_rst["id"]]["id_groupe_status"] = $groupes_status[$v_rst["id"]];
34 $groupes[$v_rst["id"]]["image_uri"] =
36 $env->path("content")."uploads/".$v_rst["image"]
46 $sgbd->close_data($rst);
48 else $groupes = false;
52 function groupes_sources($params){
53 if(!isset($params["groupes"])) return false;
54 if(!isset($params["id_source_access"])) return false;
55 $satisfy_all_groupes_access = true;
56 if(isset($params["satisfy_all_groupes_access"])){
57 $satisfy_all_groupes_access = $params["satisfy_all_groupes_access"] ? true : false;
59 $source_access_ids = array();
60 if($params["id_source_access"] == $this->id_groupe_status_contributeur()){
61 $source_access_ids[$this->id_groupe_status_contributeur()] = true;
62 $source_access_ids[$this->id_groupe_status_editeur()] = true;
63 $source_access_ids[$this->id_groupe_status_admin()] = true;
65 elseif($params["id_source_access"] == $this->id_groupe_status_editeur()){
66 $source_access_ids[$this->id_groupe_status_editeur()] = true;
67 $source_access_ids[$this->id_groupe_status_admin()] = true;
69 elseif($params["id_source_access"] == $this->id_groupe_status_admin()){
70 $source_access_ids[$this->id_groupe_status_admin()] = true;
72 if(!$source_access_ids) return false;
74 if(!($groupes = $params["groupes"])) return $sources;
75 $author_ids = array();
76 foreach($groupes as $i => $groupe) $author_ids[$groupe["id"]] = true;
77 $sgbd = $this->sgbd();
79 if($rst = $sgbd->open_data("sml_sources_authors")){
80 while(($_sources !== false) && $v_rst = $sgbd->fetch_data($rst)){
84 && isset($v_rst["id_author"])
85 && isset($v_rst["id_source"])
86 && isset($v_rst["id_sources_access"])
89 isset($source_access_ids[$v_rst["id_sources_access"]])
90 && isset($author_ids[$v_rst["id_author"]])
92 $_sources[$v_rst["id_source"]] = array(
93 "id_source" => $v_rst["id_source"],
94 "id_author" => $v_rst["id_author"],
99 else $_sources = false;
101 $sgbd->close_data($rst);
103 else $_sources = false;
104 if($_sources === false) return false;
105 if($rst = $sgbd->open_data("sml_sources")){
106 while(($sources !== false) && $v_rst = $sgbd->fetch_data($rst)){
107 if(isset($v_rst) && isset($v_rst["id"])){
108 if(isset($_sources[$v_rst["id"]])){
109 if(!isset($sources[$v_rst["id"]])){
110 $sources[$v_rst["id"]] = $v_rst;
111 $sources[$v_rst["id"]]["authors"] = array();
113 $sources[$v_rst["id"]]["authors"][] = $_sources[$v_rst["id"]]["id_author"];
116 else $sources = false;
118 $sgbd->close_data($rst);
120 else $sources = false;
121 if($_sources === false) return false;
122 foreach($sources as $id_source => $source){
123 if($satisfy_all_groupes_access){
124 if(count($source["authors"]) < count($groupes)){
125 unset($sources[$id_source]);
129 if(!($sources[$id_source] = $this->load_source($source))) return false;
134 function source_has_groupe($id_source, $id_groupe){
135 $sgbd = $this->sgbd();
137 if($rst = $sgbd->open_data("sml_sources_authors")){
138 while(($HAS_THIS_GROUP !== false) && $v_rst = $sgbd->fetch_data($rst)){
139 if(isset($v_rst) && isset($v_rst["id"]) && isset($v_rst["id_author"]) && isset($v_rst["id_source"])){
141 ($v_rst["id_source"] == $id_source)
142 && ($v_rst["id_author"] == $id_groupe)
147 else $HAS_THIS_GROUP = false;
149 $sgbd->close_data($rst);
151 else $HAS_THIS_GROUP = false;
152 return $HAS_THIS_GROUP;
155 function add_source_groupe($id_source, $id_groupe, $id_groupe_status)
156 { $sgbd = $this->sgbd();
159 ( "sml_sources_authors",
161 ( "id_source" => $id_source,
162 "id_author" => $id_groupe,
163 "id_sources_access" => $id_groupe_status
172 function set_source_groupe($id, $id_groupe_status)
173 { if(($groupe = $this->groupe($id)) !== false)
176 ( "sml_sources_authors",
179 "id_sources_access" => $id_groupe_status
189 function del_source_groupes($id_source){
190 $sgbd = $this->sgbd();
192 if($rst = $sgbd->open_data("sml_sources_authors")){
193 while($OK && $v_rst = $sgbd->fetch_data($rst)){
194 if(isset($v_rst) && isset($v_rst["id"]) && isset($v_rst["id_source"])){
195 if($v_rst["id_source"] == $id_source) if(!$sgbd->del_data("sml_sources_authors", $v_rst["id"])) $OK = false;
199 $sgbd->close_data($rst);
205 function del_source_groupe($id_source, $id_author){
206 $sgbd = $this->sgbd();
208 if($rst = $sgbd->open_data("sml_sources_authors")){
209 while($OK && $v_rst = $sgbd->fetch_data($rst)){
210 if(isset($v_rst) && isset($v_rst["id"]) && isset($v_rst["id_author"]) && isset($v_rst["id_source"])){
212 ($v_rst["id_source"] == $id_source)
213 && ($v_rst["id_author"] == $id_author)
214 && !$sgbd->del_data("sml_sources_authors", $v_rst["id"])
219 $sgbd->close_data($rst);
225 // --------------------------------------------------------------------
227 function sources_access(){
228 $sgbd = $this->sgbd();
229 $sources_access = array();
230 $sgbd = $this->sgbd();
232 if($rst = $sgbd->open_data("sml_sources_access")){
233 while($OK && $v_rst = $sgbd->fetch_data($rst)){
234 if(isset($v_rst) && isset($v_rst["id"])){
235 $sources_access[$v_rst["id"]] = $v_rst;
239 $sgbd->close_data($rst);
242 return $sources_access;
245 function id_groupe_status_admin() { return 1; }
246 function id_groupe_status_editeur() { return 2; }
247 function id_groupe_status_contributeur() { return 3; }
249 function get_admin_groupe($groupes)
251 if(is_array($groupes)) foreach($groupes as $source_groupe)
252 { if($source_groupe["id_groupe_status"] == $this->id_groupe_status_admin())
253 { $groupe = $source_groupe;
260 function get_editor_groupes($groupes){
261 $editor_groupes = array();
262 if(is_array($groupes)) foreach($groupes as $source_groupe){
264 $source_groupe["id_groupe_status"] == $this->id_groupe_status_admin()
265 || $source_groupe["id_groupe_status"] == $this->id_groupe_status_editeur()
267 $editor_groupes[] = $source_groupe;
270 return $editor_groupes;
273 function source_permissions($source, $id_user)
274 { $permissions = array
277 "contributeur" => false
279 foreach($source["groupes"] as $id_groupe => $source_groupe)
280 { if($source_groupe["id_user"] == $id_user)
281 { if($source_groupe["id_groupe_status"] == $this->id_groupe_status_admin())
282 { $permissions["admin"] = true;
283 $permissions["editeur"] = true;
284 $permissions["contributeur"] = true;
286 elseif($source_groupe["id_groupe_status"] == $this->id_groupe_status_editeur())
287 { $permissions["editeur"] = true;
288 $permissions["contributeur"] = true;
290 elseif($source_groupe["id_groupe_status"] == $this->id_groupe_status_contributeur())
291 { $permissions["contributeur"] = true;
298 // --------------------------------------------------------------------
300 function sources_invitations($groupes, $id_user){
301 $sgbd = $this->sgbd();
302 $invitations = array("list" => array(), "total" => 0);
303 $groupes_in = array();
304 foreach($groupes as $id_groupe => $groupe) $groupes_in[$id_groupe] = true;
305 if($rst = $sgbd->open_data("sml_sources_invitations")){
306 while($v_rst = $sgbd->fetch_data($rst)){
308 if(!isset($v_rst["id"])) continue;
312 isset($v_rst["id_author"])
313 && isset($groupes_in[$v_rst["id_author"]])
320 && isset($v_rst["id_user"])
321 && $id_user == $v_rst["id_user"]
326 $invitations["list"][$v_rst["id"]] = $v_rst;
327 $invitations["total"]++;
331 $invitations = false;
335 $sgbd->close_data($rst);
337 else $invitations = false;