/** * * @return array */ public function areaReport() { $rows = $this->selectGraduated(); $data = array('MANE' => 0, 'FETO' => 0, 'total' => 0); $schoolData = array('total' => 0, 'MANE' => 0, 'FETO' => 0, 'porcent' => 0); $areaScholarity = array(); foreach ($rows as $row) { $gender = trim($row['gender']); $area = trim($row['scholarity_area']); if (!array_key_exists($area, $areaScholarity)) { $areaScholarity[$area] = $schoolData; } $areaScholarity[$area][$gender]++; $areaScholarity[$area]['total']++; $data['total']++; $data[$gender]++; } foreach ($areaScholarity as $area => $row) { $areaScholarity[$area]['porcent'] = round(100 * $row['total'] / $data['total'], 2); } $data['rows'] = $areaScholarity; if (!empty($data['rows'])) { $pie = array('series' => array(), 'labels' => array()); $column = array('series' => array(), 'labels' => array(), 'names' => array()); $man = array(); $woman = array(); $view = Zend_Layout::getMvcInstance()->getView(); foreach ($data['rows'] as $area => $row) { $area = App_General_String::addBreakLine($view->truncate(ucfirst(strtolower($area)), 20), 1); $pie['series'][] = $row['total']; $pie['labels'][] = $area; $man[] = $row['MANE']; $woman[] = $row['FETO']; $column['labels'][] = $area; } $column['series'] = array($man, $woman); $column['names'] = array('MANE', 'FETO'); $scaleConfig = array('LabelRotation' => 90, 'XMargin' => 20); $data['graph'][App_General_String::randomHash()] = App_Util_Chart::columnChart($column, 'Graduadu liu husi Area / Seksu', $scaleConfig); } return $data; }
/** * */ public function outputAction() { if (!$this->getRequest()->isPost()) { $this->_helper->redirector->goToSimple('index'); } $dataReport = $this->_mapper->setData($this->_getAllParams())->report(); $this->_helper->layout()->disableLayout(); $this->_helper->viewRenderer->setRender('templates/output', null, true); $layoutPath = APPLICATION_PATH . '/modules/report/views/scripts/'; $viewSpec = new Zend_View(); $viewSpec->setScriptPath($layoutPath); $viewSpec->addHelperPath('App/View/Helpers/', 'App_View_Helper'); $layoutView = new Zend_View(); $layoutView->setScriptPath($layoutPath); $layoutView->addHelperPath('App/View/Helpers/', 'App_View_Helper'); $viewSpec->data = $dataReport; $path = $this->_getParam('path'); $title = $this->_getParam('title'); require_once APPLICATION_PATH . '/../library/HTMLPurifier/HTMLPurifier.auto.php'; $config = HTMLPurifier_Config::createDefault(); $purifier = new HTMLPurifier($config); $layoutView->title = $title; $layoutView->path = $this->view->baseUrl(); $layoutView->content = $purifier->purify($viewSpec->render($path . '.phtml')); //$layoutView->content = $viewSpec->render( $path . '.phtml' ); if (preg_match('/fefop/i', $path)) { $layoutView->department = 'SECRETARIA DE ESTADO PARA A POLÍTICA DE FORMAÇÃO PROFISSIONAL E EMPREGO - FEFOP'; } $reportOutput = $layoutView->render('templates/report.phtml'); $id = App_General_String::randomHash(); if (empty($this->_session->reportOutput)) { $this->_session->reportOutput = array(); } $this->_session->reportOutput[$id] = $reportOutput; $this->_session->dataReport = $dataReport; $this->view->content = $reportOutput; $this->view->id = $id; }
/** * * @return array */ public function schoolQuarterReport() { $rows = $this->getFilteredRows($this->_data); $gender = array('mane' => 0, 'feto' => 0); $quarters = array_combine(range(1, 4), array_fill(0, 4, $gender)); $data = array('total' => 0, 'totals' => $quarters, 'rows' => array()); foreach ($rows as $row) { $school = empty($row['max_level_scholarity']) ? 'LA IHA' : $row['max_level_scholarity']; if (!array_key_exists($school, $data['rows'])) { $data['rows'][$school] = array('quarters' => $quarters, 'total' => 0); } $quarter = ceil($row['month_registration'] / 3); $gender = strtolower(trim($row['gender'])); $data['total']++; $data['totals'][$quarter][$gender]++; $data['rows'][$school]['total']++; $data['rows'][$school]['quarters'][$quarter][$gender]++; } $column = array('series' => array(), 'labels' => array(), 'names' => array()); $quarters = array(1 => array(), 2 => array(), 3 => array(), 4 => array()); foreach ($data['rows'] as $level => $row) { $column['labels'][] = $level; foreach ($row['quarters'] as $q => $value) { $quarters[$q][] = $value['mane'] + $value['feto']; } } $column['series'] = $quarters; $column['names'] = array(1 => 'QTR1', 'QTR2', 'QTR3', 'QTR4'); $data['graph'][App_General_String::randomHash()] = App_Util_Chart::columnChart($column, 'Nivel Edukasaun / Tinan ' . $this->_data['year']); return $data; }
/** * * @return boolean */ protected function _addGraphs() { $xpath = new DOMXPath($this->_dom); $graphs = $xpath->query('//div[@class="graphs"]', $this->_content); if (empty($graphs->length)) { return false; } $images = $graphs->item(0)->getElementsByTagName('img'); foreach ($images as $img) { $src = $img->getAttribute('src'); $src = preg_replace('/^.+image\\/id\\//i', '', $src); $src = preg_replace('/\\/image.png$/i', '', $src); $contents = App_Cache::load($src); $randomName = App_General_String::randomHash(); $fileName = $this->_tempDir . DIRECTORY_SEPARATOR . $randomName . '.png'; file_put_contents($fileName, $contents); $size = getimagesize($fileName); $this->_mainSection->addImage($fileName, array('align' => 'center', 'width' => 675, 'height' => $size[1])); } return true; }
/** * * @return boolean */ protected function _addGraphs() { $xpath = new DOMXPath($this->_dom); $graphs = $xpath->query('//div[@class="graphs"]', $this->_content); if (empty($graphs->length)) { return false; } $images = $graphs->item(0)->getElementsByTagName('img'); foreach ($images as $img) { $src = $img->getAttribute('src'); $src = preg_replace('/^.+image\\/id\\//i', '', $src); $src = preg_replace('/\\/image.png$/i', '', $src); $contents = App_Cache::load($src); $randomName = App_General_String::randomHash(); $fileName = $this->_tempDir . DIRECTORY_SEPARATOR . $randomName . '.png'; file_put_contents($fileName, $contents); $size = getimagesize($fileName); $position = PHPExcel_Cell::stringFromColumnIndex($this->_startCol) . ($this->_currentRow += 2); $objDrawing = new PHPExcel_Worksheet_Drawing(); $objDrawing->setPath($fileName)->setResizeProportional(true)->setCoordinates($position)->setWorksheet($this->_mainSheet); $this->_currentRow += ceil($size[1] / 25) + 4; } return true; }
/** * * @return array */ public function educationReport() { $rows = $this->filterAppliedJob($this->_data); $mapperClient = new Report_Model_Mapper_Client(); $data = $mapperClient->registerSchoolLevel($rows); $column = array('series' => array(), 'labels' => array(), 'names' => array()); $man = array(); $woman = array(); foreach ($data['rows'] as $school => $row) { $man[] = $row['MANE']; $woman[] = $row['FETO']; $column['labels'][] = $school; } $column['series'] = array($man, $woman); $column['names'] = array('MANE', 'FETO'); $data['graph'][App_General_String::randomHash()] = App_Util_Chart::columnChart($column, 'Nivel Eskola / Tinan ' . $this->_data['year']); return $data; }