<?php use Core\Model; class Agences extends Model { public function __construct() { parent::__construct(); $this->table = 'ca_agences'; } public function getAllowedAgencies(){ $profiles_access = isset($GLOBALS["BO_CONF"]["ACCESS_PROFILES"]["RAPPORT_DCC"]) && $GLOBALS["BO_CONF"]["ACCESS_PROFILES"]["RAPPORT_DCC"] ? $GLOBALS["BO_CONF"]["ACCESS_PROFILES"]["RAPPORT_DCC"] : array('1','10','2','90', '100', '70'); if(isset($_SESSION['profil']) && in_array($_SESSION["profil"], $profiles_access) || (isset($_SESSION["profiles"]) && in_array("DA",$_SESSION["profiles"]))){ // Admins has access to all agencies if((isset($_SESSION['profil']) && ($_SESSION['profil']==100 || $_SESSION['profil']==90) && $_SESSION["user"] != "conseiller") || ($_SESSION["user"] == "conseiller" && !$GLOBALS["STATS_CONF"]["CLOISONNEMENT"])){ return false; } $agences = array(); $args = array($_SESSION["id"]); $agencesList = array(); if($_SESSION['user'] !== 'admin'){ $only_agency_from_pile = isset($GLOBALS["BO_CONF"]["ONLY_AGENCY_FROM_PILE"]) && $GLOBALS["BO_CONF"]["ONLY_AGENCY_FROM_PILE"] ? " AND id_agence=".$_SESSION["agence"] : ""; if(isset($GLOBALS["BO_CONF"]["HIERARCHICAL"]) && $GLOBALS["BO_CONF"]["HIERARCHICAL"]["ENABLED"] && in_array('agence_principale',$GLOBALS["BO_CONF"]["HIERARCHICAL"]["HIERARCHY"])){ // different d'un admin $parent = $GLOBALS["BO_CONF"]["HIERARCHICAL"]["HIERARCHY"][count($GLOBALS["BO_CONF"]["HIERARCHICAL"]["HIERARCHY"])-2]; $query = "SELECT id_agence FROM ca_agences a WHERE id_".$parent." IN (SELECT id_parent FROM ca_directeur_aps WHERE id_conseiller = ?)".$only_agency_from_pile; } else{ $query = "SELECT id_agence,TIMESTAMPDIFF(SECOND,last_active,now()) last_active_sec, temporaire FROM ca_conseiller_agence WHERE id_conseiller =". intval($_SESSION["id"])." AND id_profile=6".$only_agency_from_pile; } $result = excuteQuery($query); if($result['status']){ if($result['stmt']->rowCount()){ while ($row = $result['stmt']->fetch(PDO::FETCH_OBJ)) { if($row->temporaire == 1){ if(intval($row->last_active_sec) < 15){ $agencesList[] = $row->id_agence; } }else{ $agencesList[] = $row->id_agence; } } $agencesList = $this->flatten($agencesList); } } }else if ($_SESSION["profil"] != 100 && $_SESSION['user'] == 'admin') { $query = "SELECT l.id_agence FROM ca_links l WHERE l.id_admin =". intval($_SESSION["id"]); $result = excuteQuery($query); if($result['status']){ if($result['stmt']->rowCount()){ while ($row = $result['stmt']->fetch(PDO::FETCH_OBJ)) { $agencesList[] = $row->id_agence; } $agencesList = $this->flatten($agencesList); } } }else{ $query = "SELECT id_agence FROM ca_agences WHERE supp =0"; $result = excuteQuery($query); if($result['status']){ if($result['stmt']->rowCount()){ while ($row = $result['stmt']->fetch(PDO::FETCH_OBJ)) { $agencesList[] = $row->id_agence; } $agencesList = $this->flatten($agencesList); } } } if($_SESSION["agence"]) $agencesList[] = $_SESSION["agence"]; $agences = $_SESSION["agences"] ? array_merge($agencesList,$_SESSION["agences"]) : $agencesList; $agences = array_unique($agences); return $agences?implode(',' , $agences):'0'; } return '-1'; } public function flatten(array $array) { $return = array(); array_walk_recursive($array, function($a) use (&$return) { $return[] = $a; }); return $return; } public function listAgences() { $allowedAgencies = $this->getAllowedAgencies(); $agenciesFilter = $allowedAgencies ? " AND id_agence IN (".$allowedAgencies.")" : ""; $sql = "SELECT id_agence, eds, code_agence, nom_agence FROM ".$this->table." WHERE inactif=0 AND supp=0 ".$agenciesFilter." AND is_active=1 ORDER BY nom_agence ASC"; $results = $this->selectall($sql); return $results; } }