Files
MoniqueandClaude Opus 5.5 172fcf566c CodeIgniter 3.1.11 -> 3.4.5 (pocketarc fork) en PHP 8.3-fixes
- system/ vervangen door CodeIgniter 3.4.5 (pocketarc/codeigniter, PHP 8.2-8.5 compatibel)
- config.php, mimes.php, user_agents.php en error-views bijgewerkt naar 3.4.5
- composer.json: php-constraint "^7.4 || ^8.0" zodat composer install op 8.3 werkt
- PHP 8-fatals opgelost: count()/array-functies op FALSE/null, rekenen met lege
  strings, delen door nul, property zetten op FALSE, curly-brace string offsets,
  ongedefinieerde constanten, foute curl_setopt in Phantom_model::create_img
- dynamic properties gedeclareerd in libraries, optionele parameters voor verplichte opgelost
- vergelijkingen waar '' == 0 in PHP 8 anders uitvalt gecast naar (int)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 09:34:46 +02:00

1146 lines
41 KiB
PHP

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Description of Reports
*
* @author Theo Weijmer
* @date juni 29, 2013
*
* @purpose
*
*/
class Reports extends MY_Controller {
function __construct(){
parent::__construct();
$models = array('ijkpartituur/Reports_model',
'Phantom2_model',
'shared/Users_model',
'shared/Orgusers_model',
'ijkpartituur/ModHulpmiddelen',
'shared/Organisaties_model',
'ijkpartituur/ModPijlers', "ijkpartituur/ModRuweScores",
'ijkpartituur/Modactiviteiten','ijkpartituur/ModActHulp',
'ijkpartituur/ModActDoel','ijkpartituur/ModKosten',
'ijkpartituur/Partituurs_model','ijkpartituur/ModPartPijlers','ijkpartituur/Modpartactiviteiten',
'ijkpartituur/ModPartActResultaten','ijkpartituur/ModPartActxHulpmiddel',
'ijkpartituur/ModPartActxDoelgroep','ijkpartituur/Modpartactxorgusers','ijkpartituur/ModPartActKosten',
'ijkpartituur/ModAgenda','ijkpartituur/Niveaus_model','ijkpartituur/Nivoprofielen_model',
"ijkpartituur/Documents_model",
'ijkpartituur/ModPortfolio');
$this->load->model($models);
$this->load->helper("string");
$this->load->library('monpas/kleurcodes');
if ( ! $this->check_online_status() ) {
echo json_encode( array('offline' => TRUE) );
die;
};// if
}
function index(){
$reports= $this->Reports_model->get_reports_by_level();
echo json_encode(array('reports'=>$reports));
}
private function maakPDF ($naam,$orientation,$pdf,$post,$titel=false){
if (!$orientation){ $orientation = "portrait" ;};
$data = array(
'url' => base_url()."index.php/ijkpartituur/reports/PDF".$naam.'/'.$pdf.'/0?data='.$post,
'filename' => $naam.'.pdf' ,
'orientation' => $orientation ,
'header' => $this->load->view('ijkpartituur/reports/default_header', $titel) ,
'margins' =>array("1.5cm", "1.5cm", "1.5cm", "1.0cm") );
$this->Phantom2_model->get_pdf($data);
}
// hieronder de functie om een report te maken als een format.
// deze functie (Public function HierdeNaam ) kan gecopieerd worden
// vul de naam van het gewenste rapport in
public function PDFHierdeNaam(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
if ($init==1) {
$titel =array("titeltekst" => "<HIER DE NAAM VAN HET OVERZICHT>");
$this->maakPDF('<hier report functienaam>','portrait',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
// hier dan de database activiteiten die nodig zijn voor het report
// maar de array data om door te geven aan de view
$x;
$y;
$data = array( 'x' =>$x,
'y' =>$y);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/<HIER DE NAAM VAN DE REPORTFUNCTiE>_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/<HIER DE NAAM VAN DE REPORTFUNCTiE>_view", $data, TRUE);
echo $html;
};
}; // else
}
public function PDFmensen(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
//var_dump($post);
if ($init==1) {
$titel =array("titeltekst" => "Mensen in tijd");
$this->maakPDF('mensen','landscape',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
// hier dan de database activiteiten die nodig zijn voor het report
$terugwaarde = $this->MaakBackground($criteria->van, $criteria->tot, $criteria->periode);
$i=0;
foreach($criteria->orgusers as $cMens){
if (!isset($mensen[$i])) $mensen[$i]= new stdClass;
$mensen[$i]->naam = $cMens->fullname;
// hier maak de html voor each mens
// 1. get de activiteiten
$Verant = $this->Modpartactiviteiten->get_activiteiten_per_user($cMens->id, $criteria->partituur->id);
$Uitv = $this->Modpartactxorgusers->get_activiteiten_per_user($cMens->id, $criteria->partituur->id);
//2. combineer de gegevens voor de html
$mensen[$i]->html = $this->MaakMensIntijd(clone $terugwaarde['vandag'], $terugwaarde['totdag'], $Verant, $Uitv,$cMens, $terugwaarde['pxperdag']);
$i++;
};
$data = array('partituur' =>$criteria->partituur,
"van" =>$criteria->van,
"tm" =>$criteria->tot,
'error' =>$terugwaarde['error'],
'px_per_dag'=>$terugwaarde['pxperdag'],
'header2' =>$terugwaarde['matrix']['header2'],
'header1' =>$terugwaarde['matrix']['header1'],
'mensen' =>$mensen);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/mensen_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/mensen_view", $data, TRUE);
echo $html;
};
}; // else
}
//************************ //
private function MaakMensInTijd($van, $tot, $v, $u, $Mens,$pxperdag){
$nums;
$i=0;
while (($van->diff($tot)->format('%a') > 0) && $i < 1600){
$actcounter = 0;
$vacties = '';
$uacties ='';
if ($v){
foreach($v as $taakv){
if ($van->getTimestamp() >= strtotime($taakv->start) &&
$van->getTimestamp() <= strtotime($taakv->eind) ){
$actcounter =$actcounter + 1;
$vacties .= $taakv->naam . ";";
}; // if
};// foreach
}
if ($u){
foreach ($u as $taaku){
if ($van->getTimestamp() >= strtotime($taaku->start) &&
$van->getTimestamp() <= strtotime($taaku->eind) ){
$actcounter=$actcounter + 1;
$uacties .= $taaku->naam . ";";
}; // if
}; // foreach
};
if (!isset($nums[$i])) $nums[$i]= new stdClass;
$nums[$i]->counter = $actcounter;
$nums[$i]->vacts = $vacties;
$nums[$i]->uacts = $uacties;
$van->add(new DateInterval('P1D'));
$i++;
}; // while
$html= "<div class='mensregel' id='m".$Mens->id ."' >".
"<div style='float:left; width: 200px; overflow-x:hidden;resize:none'>" .$Mens->fullname."</div>" .
"<div class='upholder3' ".
" style='float:left; height :15px; ' >" ;
$dikte = 0;
if (isset($nums[0]) ) {$dikte= $nums[0]->counter;};
$dagen = 0;
foreach ($nums as $num){
if ($num->counter != $dikte){
if ($dikte > 10) {$dikte = 10;};
$html .= "<div class='lijnstuk' ".
"style='float:left;background-color: #576297; height: " .($dikte * 2) ."px; margin-top:" .(10 - ($dikte * 2)) . "px;width:" .($dagen * $pxperdag ) ."px;' " .
"title='dagen: " . $dagen . " verantwoordelijk:" . $vacts . " uitvoerende: " . $uacts ."' " .
" dagen= " . $dagen . "> </div>" ;
$dagen = 1;
$dikte = $num->counter;
$vacts = $num->vacts;
$uacts = $num->uacts;
}
else {$dagen = $dagen + 1;
$vacts = $num->vacts;
$uacts = $num->uacts;};
}; // for each
if ($dikte > 0){
$html .= "<div class='lijnstuk' " .
"style='float:left;background-color:#576297; height: " . ($dikte * 2) . "px; margin-top:" . (10 - ($dikte * 2)) .
"px;width:" . ($dagen * $pxperdag ) . "px;' " .
" dagen= " . $dagen . "> </div>" ;
}; // if
$html .= "</div></div> <div class='clearfix'></div>" ;
return $html;
}
// ***********************//
public function PDFmensactief(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
$post = json_decode($this->input->get('data'));
if ($init==1) {
if ($post === null) $post = new stdClass;
$post->orgid = $this->globorgid;
$post = json_encode($post);
$titel =array("titeltekst" => "Mensen/activiteiten");
$this->maakPDF('mensactief','portrait',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
if (!$pdf){
if ($criteria === null) $criteria = new stdClass;
$criteria->orgid = $this->globorgid;
};
// hier dan de database activiteiten die nodig zijn voor het report
$partID = $criteria->partituur->id;
$pijlers = $this->ModPartPijlers->get_pijlers_per_partituur($partID);
foreach ($pijlers as $pijler){
$pijler->activiteiten = $this->Modpartactiviteiten->get_kortelijst($pijler->id);
if ($pijler->activiteiten) {
foreach($pijler->activiteiten as $activiteit){
$i=0;
foreach($criteria->orgusers as $user){
if ($user->id == $activiteit->verantwoordelijke) {
$activiteit->actief[$i] = 1;
} // if
else {
$activiteit->actief[$i] = 0;
};
$where=array('activiteitID' =>$activiteit->id,
"orguserID"=>$user->id);
if ($this->Modpartactxorgusers->check_for_record($where)){
$activiteit->actief[$i] = $activiteit->actief[$i] + 2;
};
$i ++;
} // each orgusers
}; // foreach
}; //if
}
$data = array( 'criteria' => $criteria,
'orguser' => $criteria->orgusers,
'pijlers' =>$pijlers);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/mensactief_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/mensactief_view", $data, TRUE);
echo $html;
};
}; // else
}
public function PDFinhouden(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
if ($init==1) {
$titel =array("titeltekst" => "Inhouden");
$this->maakPDF('inhouden','portrait',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
$i=0;
foreach ($criteria->pijlers as $pijler) {
//get pijlernaam
if (!isset($pijlers[$i])) $pijlers[$i] = new stdClass;
$pijlers[$i]->naam= $this->ModPijlers->get_record_by_id($pijler, "naam",true);
$pijlers[$i]->inhouden=$this->ModHulpmiddelen->get_hulpmiddelen_per_pijler($pijler, 0, false);
if ($pijlers[$i]->inhouden) {
foreach($pijlers[$i]->inhouden as $inhoud){
$where=array("document_hulpmiddel_id" => $inhoud->id);
$inhoud->docs = $this->Documents_model->get_details($where);
};
};
$i=$i + 1;
};
if ($criteria->pijlerNul){
if (!isset($pijlers[$i])) $pijlers[$i] = new stdClass;
$pijlers[$i]->naam= "gebruikersactiviteiten";
$pijlers[$i]->inhouden=$this->ModHulpmiddelen->get_hulpmiddelen_per_pijler(0, 0, false);
if ($pijlers[$i]->inhouden) {
foreach($pijlers[$i]->inhouden as $inhoud){
$where=array("document_hulpmiddel_id" => $inhoud->id);
$inhoud->docs = $this->Documents_model->get_details($where);
};
};
};
$data = array( 'pijlers' =>$pijlers,
'details' =>$criteria->details);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/inhouden_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/inhouden_view", $data, TRUE);
echo $html;
};
}; // else
}
public function PDFsactiviteiten(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
if ($init==1) {
$titel =array("titeltekst" => "Kennisbank activiteiten");
$this->maakPDF('sactiviteiten','portrait',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
// hier dan de database activiteiten die nodig zijn voor het report
// maar de array data om door te geven aan de view
$i=0;
foreach ($criteria->pijlers as $pijler) {
//get pijlernaam
if (!isset($pijlers[$i])) $pijlers[$i] = new stdClass;
$pijlers[$i]->naam= $this->ModPijlers->get_record_by_id($pijler, "naam",true);
$pijlers[$i]->activiteiten=$this->Modactiviteiten->get_activiteiten_per_pijler($pijler, 0, false);
if ($pijlers[$i]->activiteiten){
foreach($pijlers[$i]->activiteiten as $activiteit){
if ($activiteit->email_pleider == 1) {$activiteit->email_pleider="projectleider";}
else {$activiteit->email_pleider = "";};
if ($activiteit->email_verantwoordelijke == 1) {$activiteit->email_verantwoordelijke="verantwoordelijke";}
else {$activiteit->email_verantwoordelijke = "";};
$activiteit->inhouden= $this->ModActHulp->middelen_per_activiteit($activiteit->id);
$activiteit->doelgroepen = $this->ModActDoel->doelgroepen_per_activiteit($activiteit->id);
$activiteit->kosten =$this->ModKosten->get_kosten_per_activiteit($activiteit->id);
};
};
$i = $i + 1;
};
if ($criteria->pijlerNul){
if (!isset($pijlers[$i])) $pijlers[$i] = new stdClass;
$pijlers[$i]->naam= "gebruikersactiviteiten";
$pijlers[$i]->activiteiten=$this->Modactiviteiten->get_activiteiten_per_pijler(0, 0, false);
if ($pijlers[$i]->activiteiten){
foreach($pijlers[$i]->activiteiten as $activiteit){
if ($activiteit->email_pleider == 1) {$activiteit->email_pleider="projectleider";}
else {$activiteit->email_pleider = "";};
if ($activiteit->email_verantwoordelijke == 1) {$activiteit->email_verantwoordelijke="verantwoordelijke";}
else {$activiteit->email_verantwoordelijke = "";};
$activiteit->inhouden= $this->ModActHulp->middelen_per_activiteit($activiteit->id);
$activiteit->doelgroepen = $this->ModActDoel->doelgroepen_per_activiteit($activiteit->id);
$activiteit->kosten =$this->ModKosten->get_kosten_per_activiteit($activiteit->id);
};
};
}
$data = array( 'pijlers' =>$pijlers,
"details" =>$criteria->details);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/sactiviteiten_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/sactiviteiten_view", $data, TRUE);
echo $html;
};
}; // else
}
public function PDForganisaties(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
if ($init==1) {
$titel =array("titeltekst" => "Organisaties");
$this->maakPDF('organisaties','landscape',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
$orgs=array();
$i = 0;
foreach($criteria->BGs as $BGid) {
$orgs[$i]= $this->Organisaties_model->get_BG_by_id($BGid);
if (! $orgs[$i]) $orgs[$i] = new stdClass();
$orgs[$i]->organisaties = $this->Organisaties_model->get_orgs_per_bg($BGid);
$i = $i + 1;
};
$data = array( 'orgs' =>$orgs);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/organisaties_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/organisaties_view", $data);
echo $html;
};
}; // else
}
Private function MaakBackground($van, $tot, $periode){
$error = '';
$matrix = "";
$dag1=new DateTime(date2mysql($van));
$dag2=new DateTime(date2mysql($tot));
if ($periode == 2) {
$dag1->setDate((int)$dag1->format('Y'), (int)$dag1->format('m'),1);
$dag2->setDate((int)$dag2->format('Y'), (int)$dag2->format('m'),$this->DagenInMaand( (int)$dag2->format('m'), (int)$dag2->format('Y') ) );
};
if ($periode == 3){
// $dag1->setDate((int)$dag1->format('Y'), (int)$dag1->format('m'),1);
$dag1->setDate((int)$dag1->format('Y'), 1,1);
$dag2->setDate((int)$dag2->format('Y'), 12, 31 );
}
if ($periode == 1) ($px_per_dag = 20);
if ($periode == 2) ($px_per_dag = 2);
if ($periode == 3) ($px_per_dag = 0.41);
$dagen = ($dag1->diff($dag2)->days) + 1; // nodig om te bepalen of de matrix te groot is
if (($dagen * $px_per_dag) > 1000){
$error = "Tijdspanne is te lang. Kies andere datums of pas de periode aan.";
}
else {
$matrix=$this->getColumns(clone $dag1,clone $dag2,$periode);
};
$returndata = array('error' =>$error,
"matrix" => $matrix,
'pxperdag' =>$px_per_dag,
'vandag' => $dag1,
'totdag' => $dag2);
return $returndata;
}
public function PDFplanning(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
if ($init==1) {
$titel =array("titeltekst" => "Planning");
$this->maakPDF('planning','landscape',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
// hier dan de database activiteiten die nodig zijn voor het report
// maar de array data om door te geven aan de view
$partituurnaam = $this->Partituurs_model->get_record_by_id($criteria->partituur, 'partituur_naam', TRUE);
$dag1=new DateTime(date2mysql($criteria->vandatum));
$dag2=new DateTime(date2mysql($criteria->totdatum));
$kleuren =array();
if ($criteria->periode == 2) {
$dag1->setDate((int)$dag1->format('Y'), (int)$dag1->format('m'),1);
$dag2->setDate((int)$dag2->format('Y'), (int)$dag2->format('m'),$this->DagenInMaand( (int)$dag2->format('m'), (int)$dag2->format('Y') ) );
};
if ($criteria->periode == 3){
// $dag1->setDate((int)$dag1->format('Y'), (int)$dag1->format('m'),1);
$dag1->setDate((int)$dag1->format('Y'), 1,1);
$dag2->setDate((int)$dag2->format('Y'), 12, 31 );
}
$vandag = clone $dag1;
$totdag = clone $dag2;
$matrix=$this->getColumns($vandag, $totdag,$criteria->periode);
$dagen = ($dag1->diff($dag2)->days) +1 ;
$px_per_dag = 1100 / $dagen;
if ($criteria->periode == 1) ($px_per_dag = 20);
if ($criteria->periode == 2) ($px_per_dag = 2);
if ($criteria->periode == 3)($px_per_dag = 0.41);
if ($criteria->overzicht == 1){
$type="per partituur";
$selectedPijler= '';
$pijlers= $this->ModPartPijlers->pijlers_in_periode($criteria->partituur,
date2mysql($criteria->vandatum),
date2mysql($criteria->totdatum));
foreach($pijlers as $pijler) { $pijler->kleur = "#975796"; };
}
else {
$type = "per pijler";
$selectedPijler = $this->ModPartPijlers->get_pijlernaam($criteria->selectedPijler);
$pijlers =$this->Modpartactiviteiten->get_activiteiten_per_pijler($criteria->selectedPijler);
$kleuren = $this->Modfases->get_kleuren();
};
if ($pijlers) {
foreach($pijlers as $pijler){
$dag= new DateTime($pijler->start);
$eind = new DateTime($pijler->eind);
if ($dag > $dag2 || $eind <= $dag1){$plusfactor = 0 ;}
else {$plusfactor = 1 ;} ;
if ($dag < $dag1) {$dag = clone $dag1 ;} ;
if ($dag > $dag2) {$dag = clone $dag2 ; };
$dagen = ($dag1->diff($dag)->days) ;
if ($criteria->periode ==1) {$aantalborders = ($dag1->diff($dag)->days) ; };
if ($criteria->periode == 2) {$aantalborders=($dag1->diff($dag)->format('m')) ;};
if ($criteria->periode == 3) {$aantalborders=($dag1->diff($dag)->format('y')) ;};
$left= ($dagen * $px_per_dag) + 200 ;
if ($eind > $dag2) { $eind= clone $dag2 ;};
if ($eind < $dag1 || $eind < $dag) {$eind = clone $dag; };
$dagen = ($dag->diff($eind)->days) + $plusfactor ;
$width=($dagen * $px_per_dag ) ;
$geefkleur = $pijler->kleur;
if (!$pijler->kleur){$geefkleur = '#989898' ;};
$pijler->html="<div style= 'position: absolute;
z-index:400;
background-color:".$geefkleur." ;
height: 10px;
margin:0px;
padding:0px;
top:5px;
left: ".$left."px;
width: ".$width."px;'></div>";
};
};
$dagen = ($dag1->diff($dag2)->days) + 1; // nodig om te bepalen of de matrix te groot is
$data = array( 'partituurnaam' => $partituurnaam,
'type' => $type,
'van' =>$criteria->vandatum,
'tm' => $criteria->totdatum,
'selectedPijler' => $selectedPijler,
'pijlers' =>$pijlers,
"dagen" =>$dagen,
"px_per_dag" =>$px_per_dag,
'header2' =>$matrix['header2'],
'header1' =>$matrix['header1'],
'kleuren' =>$kleuren,
'acts' =>$criteria->overzicht);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/planning_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/planning_view", $data, TRUE);
echo $html;
};
}; // else
}
Public function DagenInMaand($maand, $jaar){
$daysInMonth = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
// If evenly divisible by 4 and not evenly divisible by 100,
// or is evenly divisible by 400, then a leap year
if ((!($jaar % 4) && $jaar % 100) || !($jaar % 400)) {
$daysInMonth[1] = 29;
};
return $daysInMonth[($maand -1)];
}
private function getColumns($van, $tot, $periode){
$MaandArray = array('jan', 'feb','mrt','apr','mei','jun','jul','aug','sep','okt','nov','dec');
$tdatum=$van;
$i=0;
if ($periode == 1 ) {
$switcher = (int)$tdatum->format('m');};
if ($periode == 2) {
$switcher = (int)$tdatum->format("Y");
$tdatum->setDate((int)$van->format('Y'), (int)$van->format('m'),1);
$tot->setDate((int)$tot->format('Y'), (int)$tot->format('m'),$this->DagenInMaand( (int)$tot->format('m'), (int)$tot->format('Y') ) );
};
if ($periode == 3){
$switcher = (int)$tdatum->format("Y");
$tdatum->setDate((int)$van->format('Y'), (int)$van->format('m'),1);
$tot->setDate((int)$tot->format('Y'), 12, 31 );
}
$colskop1 = 1;
$header1 = array();
$header1[$colskop1 -1] = new stdClass;
$header1[$colskop1 -1]->days = 0;
while ($tdatum <= $tot && $i < 900){
if ($periode ==1){
if ($switcher != (int)$tdatum->format('m') ) {
$switcher = (int)$tdatum->format('m') ;
$colskop1 += 1;
if (!isset($header1[$colskop1 -1])) $header1[$colskop1 -1]=new stdClass;
$header1[$colskop1 -1]->tekst= $MaandArray[ ( (int) $tdatum->format('m') ) - 1] .' '.$tdatum->format('Y');;
$header1[$colskop1 -1]->days= 0;
} ;
if (!isset($header2[$i])) $header2[$i]=new stdClass;
$header2[$i]->label=$tdatum->format('d');
$header2[$i]->days= 1;
$header2[$i]->datum[$i]=date_format($tdatum, "d-m-y");
$header1[$colskop1 -1]->days= $header1[$colskop1 -1]->days + 1;
$header1[$colskop1 -1]->tekst=$MaandArray[ ( (int) $tdatum->format('m') ) - 1] .' '.$tdatum->format('Y');
$i = $i + 1;
date_add($tdatum, date_interval_create_from_date_string("1 day"));
};
if ($periode ==2){
if ($switcher != (int)$tdatum->format('Y') ) {
$switcher = (int)$tdatum->format('Y') ;
$colskop1 += 1;
$header1[$colskop1 -1]= new stdClass;
$header1[$colskop1 -1]->tekst= (int) $tdatum->format('Y');
$header1[$colskop1 -1]->days= 0;
} ;
if (! isset($header2[$i])) $header2[$i]=new stdClass;
$header2[$i]->label = $MaandArray[ ( (int) $tdatum->format('m') ) - 1] ;
$header2[$i]->days = $this->DagenInMaand( (int)$tdatum->format('m'), (int)$tdatum->format('Y') ) ; ;
$header2[$i]->datum[$i] = date_format($tdatum, "d-m-y");
$header1[$colskop1 -1]->days = $header1[$colskop1 -1]->days + $header2[$i]->days;
$header1[$colskop1 -1]->tekst = (int) $tdatum->format('Y');
$i = $i + 1;
date_add($tdatum, date_interval_create_from_date_string("1 month"));
};
if ($periode ==3){
if ($switcher != (int)$tdatum->format('Y') ) {
$switcher = (int)$tdatum->format('Y') ;
$colskop1 += 1;
if (!isset($header1[$colskop1 -1])) $header1[$colskop1 -1] = new stdClass;
$header1[$colskop1 -1]->tekst= (int) $tdatum->format('Y');
$header1[$colskop1 -1]->days= 0;
} ;
$header2[$i] = new stdClass;
$header2[$i]->label = (int) $tdatum->format('Y') ;
$header2[$i]->days = 365;
$header2[$i]->datum[$i] = date_format($tdatum, "d-m-y");
$header1[$colskop1 -1]->days = $header1[$colskop1 -1]->days + 365;
$header1[$colskop1 -1]->tekst = (int) $tdatum->format('Y');
$i = $i + 1;
date_add($tdatum, date_interval_create_from_date_string("1 year"));
};
};
return array( 'header1' =>$header1,
'header2' =>$header2 );
}
public function PDFschoolbeelden(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
if ($init==1) {
$titel =array("titeltekst" => "Schoolbeelden");
$this->maakPDF('schoolbeelden','landscape',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
// hier dan de database activiteiten die nodig zijn voor het report
// maar de array data om door te geven aan de view
$beelden=$this->Niveaus_model->get_niveaus();
$beelden2=array();
foreach($beelden as $beeld){
if (is_array($criteria->beelden) && in_array($beeld->id, $criteria->beelden) ) {
array_push($beelden2 , $beeld);
$profielen[] = $this->Nivoprofielen_model->get_profielen_profiel($beeld->id);
};
};
$pijlers=array();
$i =0;
foreach($profielen[0] as $voorbeeld){
$pijlers[$i]= new stdClass;
$pijlers[$i]->naam = $voorbeeld->naam;
$pijlers[$i]->score=array();
for ($j=0; $j < count((array)$criteria->beelden );$j++ ){
$pijlers[$i]->score[$j]=$profielen[$j][$i]->waarde;
};
$i= $i+1;
};
$descriptions=array();
foreach($criteria->beelden as $beeld){
array_push($descriptions , $this->Niveaus_model->get_niveau($beeld));
};
$data = array( 'aantal' =>count((array)$criteria->beelden) ,
'beelden' =>$beelden2,
'pijlers' =>$pijlers,
'descriptions' =>$descriptions,
"kleurcodes" => $this->kleurcodes->getkleurcodesfromdatabase() );
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/schoolbeelden_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/schoolbeelden_view", $data, TRUE);
echo $html;
};
}; // else
}
public function PDFeigenschoolbeeld(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
$post = json_decode($this->input->get('data'));
if ($init==1) {
if ($post === null) $post = new stdClass;
$post->orgid = $this->globorgid;
$post = json_encode($post);
$titel =array("titeltekst" => "Eigen schoolbeeld");
$this->maakPDF('eigenschoolbeeld','portrait',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
if (!$pdf){
if ($criteria === null) $criteria = new stdClass;
$criteria->orgid = $this->globorgid;
};
$orgnaam=$this->Organisaties_model->get_record_by_id($criteria->orgid,"naam");
// hier dan de database activiteiten die nodig zijn voor het report
// maak de array data om door te geven aan de view
$partituurID = $criteria->partituurID;
$partNaam = $this->Partituurs_model->get_record_by_id($partituurID, "partituur_naam");
$partInfo = $this->Partituurs_model->get_single_details(array('id' =>$partituurID));
$schoolmeterscores = $this->ModRuweScores->get_scores($partituurID);
$somhuidig = 0;
if ($schoolmeterscores) {
foreach($schoolmeterscores as $score){
$somhuidig = $somhuidig + $score->score;
};
};
$beeldhuidig = $this->GetBeeld($somhuidig);
$pijlers = $this->ModPartPijlers->get_joined_details($partituurID);
$gemgewenst = 0;
$mingewenst = 0;
$maxgewenst = 0;
foreach($pijlers as $pijler){
$mingewenst = $mingewenst + $this->GetMin($pijler->gewenst);
$maxgewenst = $maxgewenst + $this->GetMax($pijler->gewenst);
}
$gemgewenst = ($mingewenst + $maxgewenst) / 2;
$beeldgewenst = $this->GetBeeld($gemgewenst);
$beelden = $this->Niveaus_model->get_niveaus();
foreach ($beelden as $beeld){
$descriptions[]=$this->Niveaus_model->get_niveau($beeld->id);
};
$data = array( 'partituurNaam' =>$partNaam,
'partituurInfo' =>$partInfo,
'pijlers' =>$pijlers,
'somhuidig' =>$somhuidig,
"beeldhuidig" =>$beeldhuidig,
"mingewenst" =>$mingewenst,
"maxgewenst" =>$maxgewenst,
"beeldgewenst" =>$beeldgewenst,
"descriptions" =>$descriptions,
'orgnaam' =>$orgnaam,
"kleurcodes" =>$this->kleurcodes->getkleurcodesfromdatabase()
);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/eigenschoolbeeld_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/eigenschoolbeeld_view", $data, TRUE);
echo $html;
};
}; // else
}
private function GetBeeld ($res){
if ($res <= 725) {return 1;};
if ($res > 725 && $res <= 880) {return 2;};
if ($res > 880 && $res <=964) {return 3;};
if ($res > 965 && $res <= 1126) {return 4;};
if ($res >1126 && $res <= 1300) {return 5;};
}
private function GetBeeldGem($gem){
if ($gem <= 56) {return 1;};
if ($gem > 57 && $gem <= 68) {return 2;};
if ($gem> 69 && $gem <=74) {return 3;};
if ($gem > 75 && $gem <= 87) {return 4;};
if ($gem >88 && $gem <= 100) {return 5;};
}
Public function GetColorBijBeeld($s){
if ($s ==1) { return '#f40d17';};
if ($s == 2) {return '#f6f14e';};
if ($s ==3) {return '#f99443';};
if ($s==4) { return'#53d744';};
if ($s ==5) {return '#0d7bfb';};
}
Public function GetColor($score){
if ($score <= 50) { return '#f40d17';};
if ($score >50 && $score <= 65) {return '#f6f14e';};
if ($score >65 && $score<= 79) {return '#f99443';};
if ($score>79 && $score<= 90) { return'#53d744';};
if ($score >90 && $score<= 100) {return '#0d7bfb';};
}
private function GetMin($code){
if ($code == 1){return 0; } ;
if ($code == 2){return 51; } ;
if ($code == 3){return 66; } ;
if ($code == 4){return 80; } ;
if ($code == 5){return 91; } ;
}
private function GetMax($code){
if ($code == 1){return 50; } ;
if ($code == 2){return 65; } ;
if ($code == 3){return 79; } ;
if ($code == 4){return 90; } ;
if ($code == 5){return 100; } ;
}
public function PDFGebruikers(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
if ($init==1) {
$titel =array("titeltekst" => "Gebruikers");
$this->maakPDF('gebruikers','portrait',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
$i = 0;
foreach ($criteria->orgs as $org ){
$orga[$i] =$this->Organisaties_model->get_org_by_id($org);
if ($orga[$i]) {
if (strlen($this->super) >= 1) {$admin= $this->super;}
else {$admin = false;};
$orga[$i]->users=$this->Orgusers_model->get_full_users($org,$this->super);
if ($orga[$i]->users) {
foreach($orga[$i]->users as $user){
$user->rechten = $this->Autorisaties_model->get_autorisaties($user->level);
};
};
$i = $i + 1;
};
};
$data = array( 'orgs' =>$orga);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/gebruikers_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/gebruikers_view", $data, TRUE);
echo $html;
};
}; // else
}
public function PDFschoolmeterscores(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = $this->input->get('data');
if ($init==1) {
$titel =array("titeltekst" => "Schoolmeterscores");
$this->maakPDF('schoolmeterscores','portrait',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
$pijlers = $this->ModPijlers->get_pijlers($this->globProfielVersieID);
$vandatum = date2mysql($criteria->vandatum);
$tmdatum = date2mysql($criteria->tmdatum);
$i=0;
foreach ($pijlers as $pijler){
$gemperpijler[$i]['mean']=0;
$gemperpijler[$i]['color']='';
$i++;
};
$i = 0;
$grandGem =0;
$grandProf = 0;
foreach ($criteria->orgs as $orgID) {
$orgnaam = $this->Organisaties_model->get_record_by_id($orgID,"naamkort");
$partituurID = $this->ModRuweScores->get_partituurID($vandatum,$tmdatum,$orgID);
$scholen[$i]['school'] = $orgnaam;
if ($partituurID) {
$scholen[$i]['scores'] = $this->ModRuweScores->get_scores($partituurID);
}
else {
$scholen[$i]['scores']=NULL;
};
$tot = 0;
$prof = 0;
$aantal = 0;
$j = 0;
if ($scholen[$i]['scores'] ) {
$tot=0;
foreach($scholen[$i]['scores'] as $score) {
$tot = $tot + $score->score;
$grandGem = $grandGem + $score->score;
if ( in_array($score->pijlerID, array(1,5,6,7,8,9,10) ) ){
$prof = $prof + $score->score;
$grandProf = $grandProf + $score->score;
}
$aantal = $aantal +1;
$gemperpijler[$j]['mean'] =$gemperpijler[$j]['mean'] + $score->score;
$j =$j + 1;
$score->color = $this->GetColor($score->score);
} ;
$gem=0;
if ($aantal > 0){$gem=round($tot/$aantal , 0) ;} ;
$scholen[$i]['scores'][$aantal] = new stdClass;
$scholen[$i]['scores'][($aantal + 1)] = new stdClass;
$scholen[$i]['scores'][($aantal + 2)] = new stdClass;
$scholen[$i]['scores'][$aantal]->score=$gem;
$scholen[$i]['scores'][$aantal]->color="#a5a5a5";
$scholen[$i]['scores'][($aantal + 1)]->score = round($prof / 7 , 0);
$scholen[$i]['scores'][($aantal + 1)]->color="#a5a5a5";
$scholen[$i]['scores'][($aantal+2)]->score=$this->GetBeeld($tot);
switch($scholen[$i]['scores'][($aantal+2)]->score)
{case 1:
$scholen[$i]['scores'][($aantal+2)]->color="#f40d17";
break;
case 2:
$scholen[$i]['scores'][($aantal+2)]->color="#f6f14e";;
break;
case 3:
$scholen[$i]['scores'][($aantal+2)]->color="#f99443";
break;
case 4:
$scholen[$i]['scores'][($aantal+2)]->color="#53d744";
break;
case 5:
$scholen[$i]['scores'][($aantal+2)]->color="#0d7bfb";
break;
default:$scholen[$i]['scores'][($aantal + 1)]->color="#a5a5a5";
};
};
$i = $i + 1;
$j = 0;
};
$aantal = isset($scholen) ? count( $scholen) : 0;
if ($aantal >= 1) {
$k=0;
foreach($gemperpijler as &$gempijler){
$gempijler['mean']=round($gempijler['mean'] / $aantal, 0);
if ($gempijler['mean']<= 50) {$gempijler['color']= '#f40d17';};
if ($gempijler['mean'] >50 && $gempijler['mean'] <= 65) {$gempijler['color'] = '#f6f14e';};
if ($gempijler['mean'] >65 && $gempijler['mean']<= 79) {$gempijler['color']= '#f99443';};
if ($gempijler['mean']>79 && $gempijler['mean'] <= 90) {$gempijler['color'] ='#53d744';};
if ($gempijler['mean'] >90 && $gempijler['mean'] <= 100){$gempijler['color']= '#0d7bfb';};
$k++;
};
};
$grandGem = round(($k * $aantal) != 0 ? $grandGem / ($k * $aantal) : 0,0);
$grandSchoolbeeld = $this->GetBeeldGem($grandGem );
$grandProf = round($aantal != 0 ? $grandProf / (7 * $aantal) : 0, 0);
$SBcolor = $this->GetColorBijBeeld($grandSchoolbeeld);
$data = array( 'pijlers' =>$pijlers,
'scholen' =>$scholen,
'gem' =>$gemperpijler,
'criteria' =>$criteria,
'grandGem' => $grandGem,
'grandProf' => $grandProf,
'grandSB' => $grandSchoolbeeld,
'grandSBcolor' => $SBcolor);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/schoolmeterscores_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/schoolmeterscores_view", $data, TRUE);
echo $html;
};
}
}
public function PDFactiviteiten(){
$pdf = $this->uri->segment(4);
$init = $this->uri->segment(5);
$post = json_decode($this->input->get('data'));
if ($init==1) {
if ($post === null) $post = new stdClass;
$post->role = $this->userrole;
$post->userid = $this->userid;
$post->orgid = $this->globorgid;
$post = json_encode($post);
$titel =array("titeltekst" => "Activiteiten");
$this->maakPDF('Activiteiten','portrait',$pdf,$post,$titel);
}
else {
$criteria=json_decode($this->input->get("data")) ;
if (!$pdf){
if ($criteria === null) $criteria = new stdClass;
$criteria->userlevel = $this->userrole;
$criteria->userid = $this->userid;
$criteria->orgid = $this->globorgid;
};
if (isset($criteria->partituur)) {$partituurID = $criteria->partituur; }
else $partituurID =0 ;
$pijlerset = array();
$criteria->partNaam = $this->Partituurs_model->get_record_by_id($partituurID, "partituur_naam");
if ( isset($criteria->pijlers) ){
$i=0;
foreach($criteria->pijlers as $pijler){
$pijlerset[$i]= new stdClass;
$pijlerset[$i]->pijler = $this->ModPartPijlers->get_part_pijler_info($pijler);
$pijlerset[$i]->activiteiten = $this->Modpartactiviteiten->get_activiteiten_per_pijler($pijler);
if ($pijlerset[$i]->activiteiten) {
foreach ($pijlerset[$i]->activiteiten as $activiteit) {
$actID = $activiteit->id;
$activiteit->uitvoerenden = $this->Modpartactxorgusers->get_uitvoerenden($actID);
$activiteit->resultaten = $this->ModPartActResultaten->get_info($actID);
$activiteit->inhouden= $this->ModPartActxHulpmiddel->get_hulpmiddelenlijst_per_activiteit($actID);
$activiteit->doelgroepen = $this->ModPartActxDoelgroep->get_doelgroepen_per_act($actID);
$activiteit->kosten = $this->ModPartActKosten->get_kosten_per_activiteit($actID);
$activiteit->afspraken=null;
$activiteit->portfolio = $this->ModPortfolio->get_notes($actID);
if($criteria->agenda==true){
$activiteit->afspraken=$this->ModAgenda->get_all_items($actID,$criteria->userid,$criteria->userlevel,$criteria->orgid);
};
};
}; //
$i=$i + 1;
};
};
$data = array( 'pijlerset' =>$pijlerset,
'criteria' =>$criteria
);
if($pdf){
$data['pdf'] = 1;
$this->load->view("ijkpartituur/reports/activiteiten_view", $data);
}
else{
$html = $this->load->view("ijkpartituur/reports/activiteiten_view", $data, TRUE);
echo $html;
};
}
}
public function getOrgs(){
$organisatie = $this->Organisaties_model->get_record_by_id($this->globorgid);
if ($organisatie->soort < 4){
$where = array("valtonder_id" =>$this->globorgid);
}
else {
$where= array('id' =>$this->globorgid);
}
// $orgs=$this->Organisaties_model->get_details($where);
if ($organisatie->soort ==4){$orgs = $this->Organisaties_model->getorgs($organisatie->soort , $organisatie->valtonder_id);}
else $orgs = $this->Organisaties_model->getorgs($organisatie->soort + 1, $organisatie->id);
if ($orgs){
foreach($orgs as $org){
if ($org->plaats == null) {$org->plaats = "onbekend";};
};
};
echo json_encode($orgs);
}
Public function getOrganisaties(){
$orgid = -1;
if ($this->super){$orgid =0; }
else {if ($this->globOrgIsBG ){$orgid=$this->globorgid; }; };
if ($orgid >= 0){
$organisaties = $this->Organisaties_model->get_orgs($orgid);
if ($organisaties) {
foreach ($organisaties as $organisatie){
$organisatie->toon=true;
};
};
};
if ($orgid >= 0 ) {echo json_encode( $organisaties); }
else {echo FALSE;} ;
}
public function getPartituren(){
// haal de partituren bij de organisatie op
$partituren = $this->Partituurs_model->getPartituren($this->globorgid);
echo json_encode($partituren );
}
public function getPijlers(){
$partID= $this->uri->segment(4);
$pijlers = $this->ModPartPijlers->get_pijlers_per_partituur($partID);
echo json_encode($pijlers);
}
public function getBeelden(){
$beelden=$this->Niveaus_model->get_niveaus();
echo json_encode(array('beelden'=>$beelden));
}
public function getPartPijlers(){
// find active partituur
if (!$this->partituurid) {return;};
$partituur= $this->Partituurs_model->get_record_by_id($this->partituurid);
$partituur->partituur_start=mysql2date($partituur->partituur_start);
$partituur->partituur_eind=mysql2date($partituur->partituur_eind);
$pijlers=$this->ModPartPijlers->get_pijlers_per_partituur($this->partituurid);
echo json_encode(array('partituur' =>$partituur,
"pijlers" => $pijlers));
}
public function getBGs(){
$bgs = $this->Organisaties_model->get_bgs();
echo json_encode($bgs);
}
public function getStandaardPijlers(){
$pijlers=$this->ModPijlers->get_pijlers($this->globProfielVersieID);
echo json_encode($pijlers);
}
public function getUsers(){
$users = $this->Orgusers_model->get_org_users($this->globorgid);
echo json_encode($users);
}
public function getActievePartituur(){
$where= array("partituur_actief" => 1, 'partituur_organisatie_id'=>$this->globorgid);
$partituur = $this->Partituurs_model->get_records_where($where,TRUE);
if ($partituur){
$partituur->partituur_start = MySql2Date($partituur->partituur_start);
$partituur->partituur_eind = MySql2Date($partituur->partituur_eind);};
echo json_encode($partituur);
}
}