'key', 'report'=>'int', 'width' => 'int', 'height' => 'int', 'x' => 'int', 'y' => 'int', 'label'=>'string', 'view' => 'string', 'meta' => 'text', 'background' => 'string' ); public function elements(){ require_once(__DIR__.SLASH.'WidgetElement.class.php'); return WidgetElement::getElementsByWidget($this->id); } //Vérification des acces sur le widget courant ou sur le rapport du widget courant public function check_access($crud,$user = null){ global $myUser; if(!isset($user)) $user = $myUser; //pour avoir 'lacces, l'utilisateur doit être le créateur OU avoir access au rapport OU avoir acces au widget return $user->login == $this->creator || $user->can('statistic_report',$crud,$this->report) || $user->can('statistic_widget',$crud,$this->id); } public function remove(){ require_once(__DIR__.SLASH.'element'.SLASH.'Query.class.php'); require_once(__DIR__.SLASH.'element'.SLASH.'Treatment.class.php'); self::deleteById($this->id); Query::delete(array('widget'=>$this->id)); Treatment::delete(array('widget'=>$this->id)); } //affiche un widget a partir de son id public static function show($id,$options = array(),$checkPermission = true){ require_once(__DIR__.SLASH.'WidgetElement.class.php'); global $myUser; $statsWidget = Widget::getById($id); if(!$statsWidget || $statsWidget->id == 0) throw new Exception("Widget #$id introuvable",404); if($myUser->login != $statsWidget->creator && !$myUser->can('statistic','read',$statsWidget->id) ) throw new Exception("Vous n'avez pas la permission pour afficher cette statistique"); $item = array(); $item = $statsWidget->toArray(); $view = $statsWidget->view; if($view==null) throw new Exception("Vue introuvable",404); require_once(__DIR__.SLASH.'view'.SLASH.$view.'.class.php'); $results = $statsWidget->cascadePreview( isset($options['filters']) ? $options['filters']: array() ); return $view::toHtml(null,$results,$options); } public function cascadePreview($filters = array()){ $elements = WidgetElement::getElementsByWidget($this->id); $lastElement = end($elements); if(!$lastElement) throw new Exception("Veuillez spécifier au moins une requête ou un traitement pour afficher le bloc"); return WidgetElement::cascadePreview(get_class($lastElement),$lastElement->id,$filters,$this); } } ?>