/** * Método que cria um gráfico de estatisticas de acesso pela classe Graph do pacote * Open Chart Flash http://sourceforge.net/projects/o-flash-chart/ * * @author Deivid Martins * @access public * @param Object $stats * @param Integer $startYear * @param Integer $lastYear * @return Boolean $graficoStatus se o gráfico foi montado ou não **/ function buildGraphicByYearFlash($stats, $startYear, $lastYear) { $graph = new Graph(); $graficoStatus = false; // Se existem ou não estatisticas $dadosRequeridos = array(); // Estatisticas que usuario pediu $maximo = 0; // Maior valor do gráfico // Gabarito de cores para linhas do gráfico $cores = array("#191970", "#FFA500", "#A020F0", "#008B8B", "#CD1076", "#FF0000", "#A0522D", "#66CDAA", "#8B8B7A", "#FFB5C5", "#8B0000", "#006400"); // DarkGreen $stat = $stats->getRequests(); foreach ($stat as $s) { $mes = intval($s->getMonth()); $ano = intval($s->getYear()); if ($s->getNumberOfRequests() == "") { $values[$ano][$mes] = 0; } else { $values[$ano][$mes] = $s->getNumberOfRequests(); } } // Montamos o gráfico //$graph->title( utf8_encode(ARTICLE_ACCESS), 14, '#000000' ); //Estamos montando o titulo no html $graph->bg_colour = '#FFFFFF'; $graph->set_inner_background('#F8F8FF', '#CBD7E6', 90); // Somente monta o gráfico dos anos exigidos pelo usuário for ($i = 0; $i <= $lastYear - $startYear; $i++) { $dadosRequeridos[$i] = range(0, 11); $graficoStatus = true; // entrou no for significa que o gráfico vai ser construido for ($j = 0; $j < 12; $j++) { /* Tem alguns meses que não existem estatisticas e retorna null e o php retorna o array quebrado Ex: ([0] => 5, [1] => 7, [5] => 6) pulando alguns elementos */ if (is_null($values[$startYear + $i][$j + 1])) { $dadosRequeridos[$i][$j] = 'null'; } else { $dadosRequeridos[$i][$j] = $values[$startYear + $i][$j + 1]; } } // Procuramos o maior valor daquele ano $tempMax = max($values[$startYear + $i]); if ($tempMax > $maximo) { $maximo = $tempMax; } // Criamos a linha de um determinado ano $graph->set_data($dadosRequeridos[$i]); $graph->line_hollow(2, 3, $cores[$i], $startYear + $i, 11); $graph->set_tool_tip(ACCESSES . ': #val#'); } // Não existem dados, portanto o gráfico não deve ser montado if ($graficoStatus == false) { return $graficoStatus; } // Dados eixo X $graph->set_x_labels(explode(",", MONTH_LIST)); $graph->set_x_label_style(11, '#333333', 2); // Valor máximo do eixo Y $graph->set_y_max($maximo + 2); $graph->set_y_label_style(11, '#333333'); $graph->y_label_steps(4); // Legendas eixo X e Y $graph->set_x_legend(MONTHS, 12, '#444444'); $graph->set_y_legend(ACCESSES, 12, '#444444'); $graph->set_x_tick_size(10); // Cores da grade $graph->x_axis_colour('#68838B', '#FFFFFF'); $graph->y_axis_colour('#68838B', '#FFFFFF'); // Mostra o gráfico somente se, o ano que o usuario entrou existir estatisticas if ($graficoStatus == true) { echo $graph->render(); } return $graficoStatus; }