Guest User

GraficosController.php

a guest
Sep 12th, 2012
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.45 KB | None | 0 0
  1. <?php
  2.  
  3. class GraficosController extends Controller
  4. {
  5.     /**
  6.      * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
  7.      * using two-column layout. See 'protected/views/layouts/column2.php'.
  8.      */
  9.     public $layout='//layouts/column1';
  10.  
  11.     /**
  12.      * @return array action filters
  13.      */
  14.     public function filters()
  15.     {
  16.         return array(
  17.             'accessControl', // perform access control for CRUD operations
  18.         );
  19.     }
  20.  
  21.     /**
  22.      * Specifies the access control rules.
  23.      * This method is used by the 'accessControl' filter.
  24.      * @return array access control rules
  25.      */
  26.     public function accessRules()
  27.     {
  28.         $expressaoAdmin = " isset(Yii::app()->user->role) && (Yii::app()->user->role==='admin') ";
  29.        
  30.         $expressaoGestorOuAdmin = " isset(Yii::app()->user->role) && (Yii::app()->user->role==='gestor') ||
  31.                                    isset(Yii::app()->user->role) && (Yii::app()->user->role==='admin') ";
  32.         return array(
  33.             array('allow',
  34.                     'actions'=>array('view','index','grafico'),
  35.                     'users'=>array('@'),
  36.                     'expression'=>$expressaoGestorOuAdmin,
  37.             ),
  38.             array('allow',
  39.                     'actions'=>array('delete'), // Somente o administrador pode excluir usuarios
  40.                     'users'=>array('@'),
  41.                     'expression'=>$expressaoAdmin,
  42.             ),
  43.             array('deny',  // deny all users
  44.                 'users'=>array('*'),
  45.             ),
  46.         );
  47.     }
  48.    
  49.     /**
  50.     * Displays a particular model.
  51.     * @param integer $id the ID of the model to be displayed
  52.     */
  53.     public function actionView($id)
  54.     {
  55.         $model = $this->buscaRespostasUsuarios($id);
  56.  
  57.         if ($model!==null):
  58.             $this->render('view',array(
  59.                                         'model'=>$model,    
  60.                                         //'dataProvider'=>$dataProvider,                                       
  61.                                       ));
  62.         else:
  63.             throw new CHttpException(404,'Erro na requisição das respostas.');
  64.         endif;
  65.     }
  66.    
  67.     /**
  68.     * This is the default 'index' action that is invoked
  69.     * when an action is not explicitly requested by users.
  70.     */
  71.     public function actionIndex()
  72.     {      
  73.         if ( isset($_POST['painel_id']) ):
  74.             $this->redirect(array('view','id'=>$_POST['painel_id']));          
  75.         else:
  76.             $paineis_usuarios = $this->buscaPaineisUsuarios();
  77.             $this->render('index', array('paineis_usuarios'=>$paineis_usuarios) );
  78.         endif;
  79.     }
  80.        
  81.     /**
  82.     * Busca os paineis do usuario
  83.     * Seleciona todos os paineis que o usuário possui (abertos ou já respondidos)
  84.     */
  85.     public function buscaPaineisUsuarios()
  86.     {
  87.         $criteria = new CDbCriteria();
  88.         $criteria->with = 'paineis';
  89.         $criteria->condition = " rpu_usuario_fk = :id ";
  90.         $criteria->params = array(':id' => Yii::app()->user->id);
  91.        
  92.         $paineis_usuarios = RelPaineisUsuarios::model()->findAll( $criteria );
  93.        
  94.         return $paineis_usuarios;
  95.     }    
  96.    
  97.     /**
  98.     *  Busca os paineis do usuario
  99.     * Seleciona todos os paineis que o usuário possui (abertos ou já respondidos)
  100.     */
  101.     public function buscaRespostasUsuarios($id)
  102.     {
  103.         $criteria = new CDbCriteria();
  104.         $criteria->with = 'paineis';
  105.         $criteria->condition = " res_painel_fk = :id_painel ";
  106.         $criteria->params = array(':id_painel' => $id );
  107.        
  108.         $respostas_usuarios = Respostas::model()->find( $criteria );
  109.        
  110.         if ($respostas_usuarios!==null)
  111.             //$grafico = $this->geraGraficoRespostas($id);
  112.        
  113.         return $respostas_usuarios;    
  114.     }
  115.    
  116.     /**
  117.     *  Gera os graficos do painel selecionado    
  118.     */
  119.     public function actionGrafico()
  120.     {
  121.         //error_reporting(E_ALL);
  122.        
  123.         // Importa classes geradoras do gráfico
  124.         require_once('pChart/class/pData.class.php');
  125.         require_once('pChart/class/pDraw.class.php');
  126.         require_once('pChart/class/pImage.class.php');
  127.         require_once('pChart/class/pScatter.class.php');
  128.  
  129.         /* Create and populate the pData object */
  130.          $MyData = new pData();
  131.          for($i=0;$i<=20;$i++) {
  132.             $MyData->addPoints(rand(10,30)+$i,"Probe 1");
  133.          }
  134.          $MyData->setAxisName(0,"Temperatures");
  135.          $MyData->setAbscissaName("Samples");
  136.          
  137.          /* Create the pChart object */
  138.          $myPicture = new pImage(700,230,$MyData);
  139.          
  140.          /* Turn of Antialiasing */
  141.          $myPicture->Antialias = FALSE;
  142.          
  143.          /* Add a border to the picture */
  144.          $myPicture->drawRectangle(0,0,699,229,array("R"=>0,"G"=>0,"B"=>0));
  145.          
  146.          /* Write the chart title */
  147.          $myPicture->setFontProperties(array("FontName"=>dirname(__FILE__)."/../vendors/pChart/fonts/verdana.ttf","FontSize"=>11));
  148.          $myPicture->drawText(150,35,"Average temperature",array("FontSize"=>20,"Align"=>TEXT_ALIGN_BOTTOMMIDDLE));
  149.          
  150.          /* Set the default font */
  151.          $myPicture->setFontProperties(array("FontName"=>dirname(__FILE__)."/../vendors/pChart/fonts/verdana.ttf","FontSize"=>6));
  152.          
  153.          /* Define the chart area */
  154.          $myPicture->setGraphArea(60,40,680,200);
  155.          
  156.          /* Draw the scale */
  157.          $scaleSettings = array("XMargin"=>10,"YMargin"=>10,"Floating"=>TRUE,"GridR"=>200,"GridG"=>200,"GridB"=>200,"DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE);
  158.          $myPicture->drawScale($scaleSettings);
  159.          
  160.          /* Turn on Antialiasing */
  161.          $myPicture->Antialias = TRUE;
  162.          
  163.          /* Turn on shadows */
  164.          $myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10));
  165.          
  166.          /* Draw the line chart */
  167.          $myPicture->drawPlotChart();
  168.          
  169.          /* Draw the standard mean and the harmonic one */
  170.          $Mean         = $MyData->getSerieAverage("Probe 1");
  171.          $HarmonicMean = $MyData->getHarmonicMean("Probe 1");
  172.          $myPicture->drawThreshold($HarmonicMean,array("WriteCaption"=>TRUE,"Caption"=>"Harmonic mean"));
  173.          $myPicture->drawThreshold($Mean,array("WriteCaption"=>TRUE,"Caption"=>"Mean","CaptionAlign"=>CAPTION_RIGHT_BOTTOM));
  174.          
  175.          /* Write the computed values */
  176.          $myPicture->drawText(550,20,"Arithmetic average : ".round($Mean,2));
  177.          $myPicture->drawText(550,30,"Harmonic Mean : ".round($HarmonicMean,2));
  178.          
  179.          /* Render the picture (choose the best way) */
  180.          $diretorioGraficos = dirname(__FILE__)."/../../images/graficos/";       
  181.          $myPicture->render($diretorioGraficos.'grafico_painel_'.$id.'.png');
  182.          //$myPicture->autoOutput($diretorioGraficos.'grafico_painel_'.$id.'.png');
  183.          //$myPicture->Stroke();
  184.          //$myPicture->ReportWarnings();
  185.     }
  186. }
Advertisement
Add Comment
Please, Sign In to add comment