.", #--sml_sources_authors.id_sources_access as id_groupe_status"
." FROM #--sml_authors, #--sml_sources_authors"
." WHERE #--sml_sources_authors.id_author=#--sml_authors.id"
- ." AND #--sml_sources_authors.id_source=".$this->eq($id_source);
+ ." AND #--sml_sources_authors.id_source=".$this->eq($id_source)
+ ." ORDER BY nom";
$rst = $sgbd->query($sql);
$groupes = array();
while($v_rst = $sgbd->fetch_assoc($rst))
return $groupes;
}
+ function groupes_sources($params){
+ if(!isset($params["groupes"])) return false;
+ if(!isset($params["id_source_access"])) return false;
+ $satisfy_all_groupes_access = true;
+ if(isset($params["satisfy_all_groupes_access"])){
+ $satisfy_all_groupes_access = $params["satisfy_all_groupes_access"] ? true : false;
+ }
+ $source_access_ids = "";
+ if($params["id_source_access"] == $this->id_groupe_status_contributeur()){
+ $source_access_ids =
+ $this->id_groupe_status_contributeur()
+ .", ".$this->id_groupe_status_editeur()
+ .", ".$this->id_groupe_status_admin();
+ }
+ elseif($params["id_source_access"] == $this->id_groupe_status_editeur()){
+ $source_access_ids =
+ $this->id_groupe_status_editeur()
+ .", ".$this->id_groupe_status_admin();
+ }
+ elseif($params["id_source_access"] == $this->id_groupe_status_admin()){
+ $source_access_ids =
+ $this->id_groupe_status_admin();
+ }
+ if(!$source_access_ids) return false;
+ $sources = array();
+ if(!($groupes = $params["groupes"])) return $sources;
+ $author_ids = "";
+ foreach($groupes as $i => $groupe) $author_ids .= ($author_ids ? ", " : "").$groupe["id"];
+ $sgbd = $this->sgbd();
+ try{
+ $sql =
+ "SELECT #--sml_sources.*, #--sml_sources_authors.id_author"
+ ." FROM #--sml_sources, #--sml_sources_authors"
+ ." WHERE #--sml_sources.id=#--sml_sources_authors.id_source"
+ ." AND #--sml_sources_authors.id_sources_access IN(".$source_access_ids.")"
+ ." AND #--sml_sources_authors.id_author IN(".$author_ids.")";
+ if(isset($params["id_class"])){
+ $sql .= " AND #--sml_sources.id_class=".$this->eq($params["id_class"]);
+ }
+ $rst = $sgbd->query($sql);
+ while($v_rst = $sgbd->fetch_assoc($rst)){
+ if(!isset($sources[$v_rst["id"]])){
+ $sources[$v_rst["id"]] = $v_rst;
+ $sources[$v_rst["id"]]["authors"] = array();
+ }
+ $sources[$v_rst["id"]]["authors"][] = $v_rst["id_author"];
+ }
+ $sgbd->free_result($rst);
+ foreach($sources as $id_source => $source){
+ if($satisfy_all_groupes_access){
+ if(count($source["authors"]) < count($groupes)){
+ unset($sources[$id_source]);
+ continue;
+ }
+ }
+ if(!($sources[$id_source] = $this->load_source($source))) return false;
+ }
+ }
+ catch(Exception $e) { $sources = false; }
+ return $sources;
+ }
+
+ function source_has_groupe($id_source, $id_groupe){
+ $sgbd = $this->sgbd();
+ $HAS_THIS_GROUP = 0;
+ try{
+ $sql =
+ "SELECT count(*) as n FROM #--sml_sources_authors"
+ ." WHERE id_source=".$this->eq($id_source)
+ ." AND id_author=".$this->eq($id_groupe);
+ $rst = $sgbd->query($sql);
+ if($v_rst = $sgbd->fetch_assoc($rst)) $HAS_THIS_GROUP = $v_rst["n"];
+ $sgbd->free_result($rst);
+ }
+ catch(Exception $e) { $HAS_THIS_GROUP = false; }
+ return $HAS_THIS_GROUP;
+ }
+
function add_source_groupe($id_source, $id_groupe, $id_groupe_status)
{ $sgbd = $this->sgbd();
try{
return true;
}
- function del_source_groupe($id)
- { $sgbd = $this->sgbd();
+ function del_source_groupe($id_source, $id_author){
+ $sgbd = $this->sgbd();
try{
- $sql = "DELETE FROM #--sml_sources_authors WHERE id=".$this->eq($id);
+ $sql =
+ "DELETE FROM #--sml_sources_authors"
+ ." WHERE id_source=".$this->eq($id_source)
+ ." AND id_author=".$this->eq($id_author);
$sgbd->query($sql);
}
catch(Exception $e) { return false; }
// --------------------------------------------------------------------
+ function sources_access(){
+ $sgbd = $this->sgbd();
+ $sources_access = array();
+ try{
+ $sql = "SELECT * FROM #--sml_sources_access";
+ $rst = $sgbd->query($sql);
+ while($v_rst = $sgbd->fetch_assoc($rst)) $sources_access[$v_rst["id"]] = $v_rst;
+ $sgbd->free_result($rst);
+ }
+ catch(Exception $e) { $sources_access = false; }
+ return $sources_access;
+ }
+
function id_groupe_status_admin() { return 1; }
function id_groupe_status_editeur() { return 2; }
function id_groupe_status_contributeur() { return 3; }
return $groupe;
}
+ function get_editor_groupes($groupes){
+ $editor_groupes = array();
+ if(is_array($groupes)) foreach($groupes as $source_groupe)
+ { if(
+ $source_groupe["id_groupe_status"] == $this->id_groupe_status_admin()
+ || $source_groupe["id_groupe_status"] == $this->id_groupe_status_editeur()
+ ){
+ $editor_groupes[] = $source_groupe;
+ }
+ }
+ return $editor_groupes;
+ }
+
function source_permissions($source, $id_user)
{ $permissions = array
( "admin" => false,