- 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>
509 lines
21 KiB
PHP
509 lines
21 KiB
PHP
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
|
class Streefcijfers extends MY_Controller{
|
|
|
|
function __construct(){
|
|
parent::__construct();
|
|
$models = array( "shared/Users_model",
|
|
'shared/Organisaties_model',
|
|
"monpas/Orgversies_model",
|
|
"monpas/Ambities_model",
|
|
"monpas/Modules_model" );
|
|
$this->load->model($models);
|
|
$this->load->helper('string');
|
|
if ( ! $this->check_online_status() ) {
|
|
echo json_encode( array('offline' => TRUE) );
|
|
die;
|
|
};// if
|
|
}
|
|
|
|
|
|
function gethierarchie($selfid){
|
|
if (!$this->userid) die;
|
|
$organisatie= $this->Organisaties_model->get_record_by_id($selfid);
|
|
$swvid = null;
|
|
$kamerid = null;
|
|
$bgid = null;
|
|
$schoolid = null;
|
|
switch ($organisatie->soort) {
|
|
case 1: $swvid = $organisatie->id;
|
|
break;
|
|
case 2: $kamerid = $organisatie->id;
|
|
$swvid =$organisatie->valtonder_id;
|
|
break;
|
|
case 3: $bgid = $organisatie->id;
|
|
$kamerid = $organisatie->valtonder_id;
|
|
$org2 = $this->Organisaties_model->get_record_by_id($kamerid);
|
|
$swvid = $org2->valtonder_id;
|
|
break;
|
|
case 4: $schoolid = $organisatie->id;
|
|
$bgid = $organisatie->valtonder_id;
|
|
$org2 = $this->Organisaties_model->get_record_by_id($bgid);
|
|
$kamerid = $org2->valtonder_id;
|
|
$org3 = $this->Organisaties_model->get_record_by_id($kamerid);
|
|
$swvid = $org2->valtonder_id;
|
|
break;
|
|
} ; // einde switch
|
|
return array('swvid'=>$swvid,
|
|
"kamerid" =>$kamerid,
|
|
"bgid" =>$bgid,
|
|
"schoolid" =>$schoolid);
|
|
}
|
|
|
|
|
|
function getorgversies_ambities(){
|
|
if (!$this->userid) die;
|
|
$targetorgid = $this->uri->segment(4);
|
|
$module = $this->session->userdata('module');
|
|
// get de ambities van de targetorganisatie
|
|
$ambities = $this->Ambities_model->getambities($targetorgid);
|
|
|
|
// zoek de huidige, actieve orgversie
|
|
$organisatie = $this->Organisaties_model->get_record_by_id($targetorgid);
|
|
$hierarchie = $this->gethierarchie($targetorgid);
|
|
|
|
switch ($organisatie->soort){
|
|
case 1: $orgversies = $this->Orgversies_model->getallorgversies($hierarchie['swvid'],$module,true);
|
|
// let op dit is een array
|
|
break;
|
|
case 2:
|
|
case 3:
|
|
case 4:$orgversies = $this->Orgversies_model->getallorgversies($hierarchie['kamerid'],$module, true);
|
|
if (!$orgversies){
|
|
$orgversies = $this->Orgversies_model->getallorgversies($hierarchie['swvid'],$module, true);
|
|
}
|
|
// een bg is voorlopig nog niet gekoppeld aan een orgversie
|
|
break;
|
|
}; //einde switch
|
|
|
|
if ($orgversies) {
|
|
// Als er voor de huidige, actieve orgversies voor de gegeven organisatie nog geen
|
|
//ambities zijn, zoek dan de ambitie van de hogere organisatie en anders de default
|
|
$alaanwezig = false;
|
|
if ($ambities){
|
|
foreach($ambities as $ambitie){
|
|
if ($ambitie->orgversie_id == $orgversies[0]->id) {$alaanwezig = true; };
|
|
}
|
|
}
|
|
|
|
if (!$alaanwezig){
|
|
switch($organisatie->soort){
|
|
case 1: $ambitie_new = $this->Ambities_model->getdefault2($orgversies[0]->id, $targetorgid);
|
|
break;
|
|
case 2: $ambitie_new = $this->Ambities_model->getambitie2($orgversies[0]->id, $hierarchie["swvid"]);
|
|
if (!$ambitie_new){
|
|
$ambitie_new = $this->Ambities_model->getdefault2($orgversies[0]->id, $targetorgid);
|
|
};
|
|
break;
|
|
case 3: $ambitie_new = $this->Ambities_model->getambitie2($orgversies[0]->id, $hierarchie["kamerid"]);
|
|
if (!$ambitie_new) {
|
|
$ambitie_new = $this->Ambities_model->getambitie2($orgversies[0]->id, $hierarchie["swvid"]);
|
|
if (!$ambitie_new){
|
|
$ambitie_new = $this->Ambities_model->getdefault2($orgversies[0]->id, $targetorgid);
|
|
}
|
|
}; // if
|
|
break;
|
|
};//switch
|
|
if ($ambities){
|
|
array_push($ambities,$ambitie_new); }
|
|
else {$ambities[0] = $ambitie_new;};
|
|
}; // if not al aanwezig
|
|
}; // if orgversies
|
|
if ($ambities){
|
|
foreach($ambities as $ambitie){
|
|
$ambitie->wijzigok = true;
|
|
// if (new DateTime( $ambitie->geldigtm) <= new DateTime() ) {$ambitie->wijzigok = false;};
|
|
$ambitie->geldigvanaf = mysql2date($ambitie->geldigvanaf);
|
|
$ambitie->geldigtm = mysql2date($ambitie->geldigtm);
|
|
}
|
|
}
|
|
echo json_encode($ambities);
|
|
}
|
|
|
|
function setBovenliggend($orgid, $ambitieorgs){
|
|
$ambitieorgs .= $orgid . ',';
|
|
$valtonder = $this->Organisaties_model->get_fieldvalue(['id' => $orgid], 'valtonder_id');
|
|
if($valtonder != $orgid){
|
|
return $this->setBovenliggend($valtonder, $ambitieorgs);
|
|
}
|
|
|
|
return $ambitieorgs;
|
|
|
|
}
|
|
|
|
|
|
|
|
function checkrecht(){
|
|
if (!$this->userid) die;
|
|
$manage = 'F';
|
|
if($this->super) $manage = 'T';
|
|
else {
|
|
$result = $this->Autorisatienivos_model->checkmanage($this->userid, $this->orgid);
|
|
if($result) $manage = 'T';
|
|
}
|
|
$soort = $this->Organisaties_model->get_fieldvalue(['id'=>$this->globorgid],'soort');
|
|
$this->json(['manage'=>$manage,
|
|
'soort' => $soort]);
|
|
}
|
|
|
|
|
|
function setSWVKamer($org){
|
|
$kamer = '';
|
|
$swv = '';
|
|
switch($org->soort ){
|
|
case 2: $kamer = $this->globorgid;
|
|
$swv = $org->valtonder_id;
|
|
break;
|
|
case 3: $kamer = $org->valtonder_id;
|
|
$swv = $this->Organisaties_model->get_fieldvalue(['id' => $org->valtonder_id], 'valtonder_id');
|
|
break;
|
|
case 4: $kamer = $this->Organisaties_model->get_fieldvalue(['id' => $org->valtonder_id], 'valtonder_id');
|
|
$swv = $this->Organisaties_model->get_fieldvalue(['id' => $kamer], 'valtonder_id');
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
return ['swv'=>$swv,
|
|
'kamer' =>$kamer];
|
|
|
|
}
|
|
|
|
function getambities()
|
|
{
|
|
if (!$this->userid) die;
|
|
|
|
$module = $this->session->userdata('module');
|
|
$modulenaam = $this->Modules_model->get_fieldvalue(['sysnr' => $module], 'naam');
|
|
$standaardNodig = true;
|
|
$standaardSWVNodig = false;
|
|
$org = $this->Organisaties_model->get_record_by_id($this->globorgid);
|
|
$orgversiesK = [];
|
|
$ambities = [];
|
|
$ambities2 = [];
|
|
|
|
$bovenliggend = '';
|
|
$bovenliggend = $this->setBovenliggend($this->globorgid, $bovenliggend);
|
|
$bovenliggend = rtrim($bovenliggend, ',');
|
|
$onderliggend = '';
|
|
if($org->soort < 4){
|
|
$orgs = $this->Organisaties_model->getlistrecursief($this->globorgid, []);
|
|
$onderliggend = implode(',', $orgs);
|
|
$ambitieorgs = $onderliggend .','. $bovenliggend;
|
|
}
|
|
if($org->soort == 1) {
|
|
$onderarray = [];
|
|
$onderstring = '';
|
|
$kamers = $this->Organisaties_model->get_onderliggende_orgs($this->globorgid);
|
|
$kamerarray = [];
|
|
$orgversiearray = [];
|
|
$onderarray = [];
|
|
$kamerstring = '';
|
|
if($kamers) {
|
|
foreach($kamers AS $kamer){
|
|
$kamerarray[] = $kamer->id;
|
|
}
|
|
foreach ($kamerarray as $kamer) {
|
|
$bgs = $this->Organisaties_model->get_onderliggende_orgs($kamer);
|
|
if ($bgs) {
|
|
foreach ($bgs as $bg) {
|
|
$scholen = $this->Organisaties_model->get_onderliggende_orgs($bg->id);
|
|
if ($scholen) {
|
|
foreach ($scholen as $school) {
|
|
$onderarray []= $school->id;
|
|
}
|
|
}
|
|
$onderarray[] = $bg->id;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (count($onderarray) > 0) {
|
|
foreach($onderarray as $element) {
|
|
$onderstring .= $element. ',';
|
|
}
|
|
|
|
$onderstring = rtrim( $onderstring, ',');
|
|
$ambities = $this->Ambities_model->mh_get_ambities($module, $onderstring, FALSE);
|
|
}
|
|
foreach($kamerarray As $kamer){
|
|
$kamerstring .= $kamer. ',';
|
|
}
|
|
$kamerstring = rtrim( $kamerstring, ',');
|
|
|
|
$ambitiesK = $this->Ambities_model->mh_get_ambities($module, $kamerstring, FALSE);
|
|
if (!$ambitiesK) $orgversiearray = $kamerarray;
|
|
else if (count($ambitiesK) == count($kamerarray)) $orgversiearray = [];
|
|
else {
|
|
foreach ($ambitiesK as $ambitieK) {
|
|
$ambitieids[] = $ambitieK->orgID;
|
|
}
|
|
$orgversiearray = array_diff($ambitieids, $kamerarray);
|
|
|
|
}
|
|
foreach ($orgversiearray as $kamer) {
|
|
$orgversie = $this->Orgversies_model->getOrgversie($kamer, $module);
|
|
if ($orgversie) $orgversiesK [] = $orgversie;
|
|
}
|
|
|
|
if ($orgversiesK) {
|
|
foreach ($orgversiesK as $orgversie) {
|
|
|
|
$aantalY = $this->Ijkpunten_model->telijkpunten($orgversie->orgversieID);
|
|
$ambitie = new stdClass();
|
|
$ambitie->ambitievan = 'standaard';
|
|
$ambitie->id = 0;
|
|
$ambitie->geldigtm = $orgversie->geldigtm;
|
|
$ambitie->geldigvanaf = $orgversie->geldigvanaf;
|
|
$ambitie->gemscore = 80;
|
|
$ambitie->naam = $orgversie->naam;
|
|
$ambitie->orgnaam = $org->naamkort;
|
|
$ambitie->versievan = $orgversie->versievan;
|
|
$ambitie->orgversieID = $orgversie->orgversieID;
|
|
$ambitie->periodenummer = $orgversie->periodenummer;
|
|
$ambitie->soort = 0;
|
|
$ambitie->xijkpunten = ROUND($aantalY * 0.8);
|
|
$ambitie->zprocent = 60;
|
|
$ambities[] = $ambitie;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
$ambitie = $this->Ambities_model->mh_get_ambities($module, $this->globorgid, $this->globorgid);
|
|
if($ambitie) $ambities = is_array($ambities) ? array_merge($ambities,$ambitie) : null; // PHP 7 gaf null bij $ambities === false
|
|
else{
|
|
$standaardSWVNodig = true;
|
|
$orgversie = $this->Orgversies_model->getOrgVersie($this->globorgid, $module);
|
|
}
|
|
|
|
}
|
|
if ($org->soort > 1) {
|
|
$orgs = $this->setSWVKamer($org);
|
|
$kamer = $orgs['kamer'];
|
|
$swv = $orgs['swv'];
|
|
$orgversie = $this->Orgversies_model->getOrgVersie($kamer, $module);
|
|
|
|
}
|
|
if($org->soort == 2) {
|
|
if ($orgversie) $ambities = $this->Ambities_model->mh_get_ambities($module, $ambitieorgs, $orgversie->orgversieID);
|
|
if (!$orgversie) {
|
|
$orgversie = $this->Orgversies_model->getOrgVersie($swv, $module);
|
|
if ($orgversie) {
|
|
$ambities = $this->Ambities_model->mh_get_ambities($module, $this->globorgid, $orgversie->orgversieID);
|
|
}
|
|
if (!$ambities) $ambities = $this->Ambities_model->mh_get_ambities($module, $swv, $orgversie->orgversieID);
|
|
$ambities2 = $this->Ambities_model->mh_get_ambities($module, $onderliggend, $orgversie->orgversieID);
|
|
}
|
|
}
|
|
if($org->soort == 3){
|
|
$onderliggend = '';
|
|
$scholen = $this->Organisaties_model->get_onderliggende_orgs($this->globorgid);
|
|
foreach($scholen AS $school){
|
|
$onderliggend .= $school->id . ',';
|
|
}
|
|
$onderliggend = rtrim($onderliggend, ',');
|
|
if ($orgversie) $ambities = $this->Ambities_model->mh_get_ambities($module, $this->globorgid, $orgversie->orgversieID);
|
|
if (!$ambities) $ambities = $this->Ambities_model->mh_get_ambities($module, $kamer, $orgversie->orgversieID);
|
|
if($orgversie) $ambities2 = $this->Ambities_model->mh_get_ambities($module, $onderliggend, $orgversie->orgversieID);
|
|
if (!$orgversie) {
|
|
$orgversie = $this->Orgversies_model->getOrgVersie($swv, $module);
|
|
if ($orgversie) $ambities = $this->Ambities_model->mh_get_ambities($module, $this->globorgid, $orgversie->orgversieID);
|
|
if (!$ambities) $ambities = $this->Ambities_model->mh_get_ambities($module, $kamer, $orgversie->orgversieID);
|
|
if (!$ambities) $ambities = $this->Ambities_model->mh_get_ambities($module, $swv, $orgversie->orgversieID);
|
|
$ambities2 = $this->Ambities_model->mh_get_ambities($module, $onderliggend, $orgversie->orgversieID);
|
|
}
|
|
}
|
|
if($org->soort == 4) {
|
|
if ($orgversie) {
|
|
$ambitie = $this->Ambities_model->mh_get_ambitie_orgversie($orgversie->orgversieID, $bovenliggend, $kamer);
|
|
if($ambitie) $ambities[] = $ambitie;
|
|
}
|
|
if (!$orgversie) {
|
|
$orgversie = $this->Orgversies_model->getOrgVersie($swv, $module);
|
|
if ($orgversie){
|
|
$ambitie = $this->Ambities_model->mh_get_ambitie_orgversie($orgversie->orgversieID, $bovenliggend, $swv);
|
|
if($ambitie) $ambities[] = $ambitie;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!$orgversie && !$orgversiesK) {
|
|
$this->json('geen results');
|
|
return;
|
|
}
|
|
|
|
if ($ambities) {
|
|
|
|
if($ambities2) $ambities = array_merge($ambities2, $ambities);
|
|
foreach ($ambities as $ambitie) {
|
|
if (intval($ambitie->soort ) <= intval($org->soort ) && $standaardSWVNodig == false) {
|
|
$standaardNodig = false;
|
|
}
|
|
// $ambitie->aantalY = $this->Ijkpunten_model->telijkpunten($ambitie->orgversieID);
|
|
}
|
|
}
|
|
if (empty($orgversie)) $orgversie = new stdClass(); // PHP 7 maakte hier impliciet een object aan
|
|
$orgversie->aantalY = $this->Ijkpunten_model->telijkpunten($orgversie->orgversieID);
|
|
$orgversie->ambitievan = $org->naamkort;
|
|
|
|
|
|
|
|
if ( $standaardNodig) {
|
|
$aantalY = $this->Ijkpunten_model->telijkpunten($orgversie->orgversieID);
|
|
$ambitie = new stdClass();
|
|
$ambitie->ambitievan = 'standaard';
|
|
$ambitie->id = 0;
|
|
$ambitie->geldigtm = $orgversie->geldigtm;
|
|
$ambitie->geldigvanaf = $orgversie->geldigvanaf;
|
|
$ambitie->gemscore = 80;
|
|
$ambitie->naam = $orgversie->naam;
|
|
$ambitie->orgnaam = $org->naamkort;
|
|
$ambitie->versievan = $orgversie->versievan;
|
|
$ambitie->orgversieID = $orgversie->orgversieID;
|
|
$ambitie->periodenummer = $orgversie->periodenummer;
|
|
$ambitie->soort = 0;
|
|
$ambitie->xijkpunten = ROUND($aantalY * 0.8);
|
|
$ambitie->zprocent = 60;
|
|
$ambities[] = $ambitie;
|
|
}
|
|
|
|
|
|
|
|
$this->json([
|
|
'orgversie' => $orgversie,
|
|
'ambities' => $ambities,
|
|
'module' => $modulenaam]);
|
|
|
|
|
|
}
|
|
|
|
function saveAmbitie(){
|
|
if (!$this->userid) die;
|
|
|
|
$orgversieid = $this->clean_input("orgversieid");
|
|
|
|
if($this->super == false) {
|
|
$result = $this->Autorisatienivos_model->checkmanage($this->userid, $this->globorgid);
|
|
$saveorg = $this->globorgid;
|
|
if (!$result) return;
|
|
}
|
|
else{
|
|
$saveorg = $this->globorgid;
|
|
}
|
|
$bestaand = $this->Ambities_model->get_fieldvalue(['organisatie_id'=>$saveorg,
|
|
'orgversie_id' =>$orgversieid], 'id');
|
|
if(!$bestaand) {
|
|
$id = $this->Ambities_model->insert_record([
|
|
'organisatie_id' => $saveorg,
|
|
'orgversie_id' => $orgversieid,
|
|
'gem_score' => $this->clean_input("gemscore"),
|
|
'x_ijkpunten' => $this->clean_input("xijkpunten"),
|
|
'z_procent' => $this->clean_input("zprocent")
|
|
|
|
]);
|
|
}
|
|
$this->json($id);
|
|
|
|
|
|
}
|
|
|
|
|
|
// function getorgversies_ambities_oud(){
|
|
// $versies = false;
|
|
// $module = $this->session->userdata('module');
|
|
// $targetorgid = $this->uri->segment(3);
|
|
// $organisatie = $this->Organisaties_model->get_record_by_id($targetorgid);
|
|
|
|
// $hierarchie = $this->gethierarchie($targetorgid);
|
|
|
|
// // haal alle orgversies op
|
|
// $orgversies = null;
|
|
// switch ($organisatie->soort){
|
|
// case 1: $orgversiesSWV = $this->Orgversies_model->getallorgversies($targetorgid,$module);
|
|
// break;
|
|
// case 2: $orgversiesSWV =$this->Orgversies_model->getallorgversies($targetorgid,$module);
|
|
// $orgversiesKamer = $this->Orgversies_model->getallorgversies($hierarchie["swvid"],$module);
|
|
// break;
|
|
// case 3: $orgversiesBG = $this->Orgversies_model->getallorgversies($hierarchie["bgid"],$module);
|
|
// $orgversiesKamer = $this->Orgversies_model->getallorgversies($hierarchie["kamerid"],$module);
|
|
// $orgversiesBG = $this->Orgversies_model->getallorgversies($hierarchie["swvid"], $module);
|
|
// break;
|
|
// }; //einde switch
|
|
|
|
|
|
// if ($orgversiesSWV){
|
|
// foreach($orgversiesSWV as $orgversie){
|
|
// $orgversie->ambitie = $this->Ambities_model->getambitie($orgversie->id,$targetorgid);
|
|
// }// foreach
|
|
// }; // if
|
|
// if ($orgversiesKamer){
|
|
// foreach($orgversiesKamer as $orgversie){
|
|
// $orgversie->ambitie = $this->Ambities_model->getambitie($orgversie->id,$targetorgid);
|
|
// }// foreach
|
|
// }; // if
|
|
// echo json_encode($orgversies);
|
|
// }
|
|
|
|
function getorganisaties(){
|
|
if (!$this->userid) die;
|
|
$orgid = $this->globorgid;
|
|
|
|
$organisatie = $this->Organisaties_model->get_record_by_id($orgid);
|
|
if ($organisatie->soort == 3){
|
|
// doe verder niks
|
|
}
|
|
if ($organisatie->soort == 2){
|
|
$organisatie->bgs = $this->Organisaties_model->getorgsvanaf($organisatie->id);
|
|
}
|
|
if ($organisatie->soort == 1) {
|
|
$organisatie->kamers = $this->Organisaties_model->getorgsvanaf($organisatie->id);
|
|
if ($organisatie->kamers){
|
|
foreach ($organisatie->kamers as $kamer){
|
|
$kamer->bgs = $this->Organisaties_model->getorgsvanaf($kamer->id);
|
|
}
|
|
}
|
|
}
|
|
echo json_encode($organisatie);
|
|
}
|
|
function getzelfniveau(){
|
|
if (!$this->userid) die;
|
|
$nivo = $this->Organisaties_model->get_fieldvalue(array("id"=>$this->globorgid), "soort");
|
|
echo json_encode($nivo);
|
|
}
|
|
function updateambitie(){
|
|
if (!$this->userid) die;
|
|
$id=$this->clean_input("id");
|
|
// zoek of de ambitie voor een nieuwe organisatie is
|
|
$alaanwezig = $this->Ambities_model->check_for_record(array("organisatie_id"=>$this->globorgid,
|
|
"orgversie_id" => $this->clean_input("orgversie_id")) );
|
|
if ((int)$id ==0 || !$alaanwezig ){
|
|
$data=array("organisatie_id" => $this->globorgid,
|
|
"orgversie_id" => $this->clean_input("orgversie_id"),
|
|
"gem_score" => $this->clean_input("gemscore"),
|
|
"x_ijkpunten" => $this->clean_input("xijkpunten"),
|
|
"z_procent" => $this->clean_input("zprocent"));
|
|
$newid= $this->Ambities_model->insert_record($data);
|
|
}
|
|
else {
|
|
$data=array("gem_score" => $this->clean_input("gemscore"),
|
|
"x_ijkpunten" => $this->clean_input("xijkpunten"),
|
|
"z_procent" => $this->clean_input("zprocent"));
|
|
$this->Ambities_model->update_record($data, $id);
|
|
$newid =false;
|
|
} ;
|
|
echo json_encode($newid);
|
|
}
|
|
|
|
function verwijder(){
|
|
$ambitieID = $this->clean_input('id');
|
|
$error = true;
|
|
if ($this->userid){
|
|
$this->Ambities_model->delete_record($ambitieID);
|
|
$error = false;
|
|
}
|
|
echo json_encode($error);
|
|
}
|
|
} |