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>
This commit is contained in:
@@ -13,9 +13,9 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
|
||||
| WARNING: You MUST set this value!
|
||||
|
|
||||
| If it is not set, then CodeIgniter will try guess the protocol and path
|
||||
| your installation, but due to security concerns the hostname will be set
|
||||
| to $_SERVER['SERVER_ADDR'] if available, or localhost otherwise.
|
||||
| If it is not set, then CodeIgniter will try to guess the protocol and
|
||||
| path to your installation, but due to security concerns the hostname will
|
||||
| be set to $_SERVER['SERVER_ADDR'] if available, or localhost otherwise.
|
||||
| The auto-detection mechanism exists only for convenience during
|
||||
| development and MUST NOT be used in production!
|
||||
|
|
||||
@@ -66,7 +66,9 @@ $config['uri_protocol'] = 'REQUEST_URI';
|
||||
| This option allows you to add a suffix to all URLs generated by CodeIgniter.
|
||||
| For more information please see the user guide:
|
||||
|
|
||||
| https://codeigniter.com/user_guide/general/urls.html
|
||||
| https://codeigniter.com/userguide3/general/urls.html
|
||||
|
|
||||
| Note: This option is ignored for CLI requests.
|
||||
*/
|
||||
$config['url_suffix'] = '';
|
||||
|
||||
@@ -90,7 +92,7 @@ $config['language'] = 'english';
|
||||
| This determines which character set is used by default in various methods
|
||||
| that require a character set to be provided.
|
||||
|
|
||||
| See http://php.net/htmlspecialchars for a list of supported charsets.
|
||||
| See https://secure.php.net/htmlspecialchars for a list of supported charsets.
|
||||
|
|
||||
*/
|
||||
$config['charset'] = 'UTF-8';
|
||||
@@ -114,8 +116,8 @@ $config['enable_hooks'] = FALSE;
|
||||
| This item allows you to set the filename/classname prefix when extending
|
||||
| native libraries. For more information please see the user guide:
|
||||
|
|
||||
| https://codeigniter.com/user_guide/general/core_classes.html
|
||||
| https://codeigniter.com/user_guide/general/creating_libraries.html
|
||||
| https://codeigniter.com/userguide3/general/core_classes.html
|
||||
| https://codeigniter.com/userguide3/general/creating_libraries.html
|
||||
|
|
||||
*/
|
||||
$config['subclass_prefix'] = 'MY_';
|
||||
@@ -135,7 +137,7 @@ $config['subclass_prefix'] = 'MY_';
|
||||
|
|
||||
| $config['composer_autoload'] = '/path/to/vendor/autoload.php';
|
||||
|
|
||||
| For more information about Composer, please visit http://getcomposer.org/
|
||||
| For more information about Composer, please visit https://getcomposer.org/
|
||||
|
|
||||
| Note: This will NOT disable or override the CodeIgniter-specific
|
||||
| autoloading (application/config/autoload.php)
|
||||
@@ -161,6 +163,8 @@ $config['composer_autoload'] = FALSE;
|
||||
|
|
||||
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
|
||||
|
|
||||
| Note: This option is ignored for CLI requests.
|
||||
|
|
||||
*/
|
||||
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
|
||||
|
||||
@@ -191,20 +195,6 @@ $config['controller_trigger'] = 'c';
|
||||
$config['function_trigger'] = 'm';
|
||||
$config['directory_trigger'] = 'd';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Allow $_GET array
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| By default CodeIgniter enables access to the $_GET array. If for some
|
||||
| reason you would like to disable it, set 'allow_get_array' to FALSE.
|
||||
|
|
||||
| WARNING: This feature is DEPRECATED and currently available only
|
||||
| for backwards compatibility purposes!
|
||||
|
|
||||
*/
|
||||
$config['allow_get_array'] = TRUE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Error Logging Threshold
|
||||
@@ -235,21 +225,32 @@ $config['log_threshold'] = 1;
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Leave this BLANK unless you would like to set something other than the default
|
||||
| application/logs/ directory. Use a full server path with trailing slash.
|
||||
| application/logs/ directory. Use a full server path.
|
||||
|
|
||||
*/
|
||||
$config['log_path'] = '';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Log File Extension
|
||||
| Error Logging FILENAME
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The default filename extension for log files. The default 'php' allows for
|
||||
| protecting the log files via basic scripting, when they are to be stored
|
||||
| under a publicly accessible directory.
|
||||
| Leave this BLANK unless you would like to set something other than the default
|
||||
| 'log-'.date('Y-m-d').'.php'. No DIRECTORY_SEPARATOR(s), just the filename.
|
||||
|
|
||||
| Note: Leaving it blank will default to 'php'.
|
||||
*/
|
||||
$config['log_filename'] = '';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Log File Extension (DEPRECATED)
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option is deprecated. Use 'log_filename' instead.
|
||||
| Kept for backward compatibility with CI 3.1.x configurations.
|
||||
|
|
||||
| If 'log_filename' is set, this option is ignored.
|
||||
| Example: 'txt' or 'log' (without leading dot)
|
||||
|
|
||||
*/
|
||||
$config['log_file_extension'] = '';
|
||||
@@ -283,7 +284,7 @@ $config['log_date_format'] = 'Y-m-d H:i:s';
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Leave this BLANK unless you would like to set something other than the default
|
||||
| application/views/errors/ directory. Use a full server path with trailing slash.
|
||||
| application/views/errors/ directory. Use a full server path.
|
||||
|
|
||||
*/
|
||||
$config['error_views_path'] = '';
|
||||
@@ -294,7 +295,7 @@ $config['error_views_path'] = '';
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Leave this BLANK unless you would like to set something other than the default
|
||||
| application/cache/ directory. Use a full server path with trailing slash.
|
||||
| application/cache/ directory. Use a full server path.
|
||||
|
|
||||
*/
|
||||
$config['cache_path'] = '';
|
||||
@@ -325,7 +326,7 @@ $config['cache_query_string'] = FALSE;
|
||||
| If you use the Encryption class, you must set an encryption key.
|
||||
| See the user guide for more info.
|
||||
|
|
||||
| https://codeigniter.com/user_guide/libraries/encryption.html
|
||||
| https://codeigniter.com/userguide3/libraries/encryption.html
|
||||
|
|
||||
*/
|
||||
$config['encryption_key'] = '';
|
||||
@@ -343,6 +344,10 @@ $config['encryption_key'] = '';
|
||||
|
|
||||
| The session cookie name, must contain only [0-9a-z_-] characters
|
||||
|
|
||||
| 'sess_samesite'
|
||||
|
|
||||
| Session cookie SameSite attribute: Lax (default), Strict or None
|
||||
|
|
||||
| 'sess_expiration'
|
||||
|
|
||||
| The number of SECONDS you want the session to last.
|
||||
@@ -383,6 +388,7 @@ $config['encryption_key'] = '';
|
||||
*/
|
||||
$config['sess_driver'] = 'files';
|
||||
$config['sess_cookie_name'] = 'ci_session';
|
||||
$config['sess_samesite'] = 'Lax';
|
||||
$config['sess_expiration'] = 7200;
|
||||
$config['sess_save_path'] = NULL;
|
||||
$config['sess_match_ip'] = FALSE;
|
||||
@@ -399,6 +405,7 @@ $config['sess_regenerate_destroy'] = FALSE;
|
||||
| 'cookie_path' = Typically will be a forward slash
|
||||
| 'cookie_secure' = Cookie will only be set if a secure HTTPS connection exists.
|
||||
| 'cookie_httponly' = Cookie will only be accessible via HTTP(S) (no javascript)
|
||||
| 'cookie_samesite' = Cookie's samesite attribute (Lax, Strict or None)
|
||||
|
|
||||
| Note: These settings (with the exception of 'cookie_prefix' and
|
||||
| 'cookie_httponly') will also affect sessions.
|
||||
@@ -409,34 +416,7 @@ $config['cookie_domain'] = '';
|
||||
$config['cookie_path'] = '/';
|
||||
$config['cookie_secure'] = FALSE;
|
||||
$config['cookie_httponly'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Standardize newlines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Determines whether to standardize newline characters in input data,
|
||||
| meaning to replace \r\n, \r, \n occurrences with the PHP_EOL value.
|
||||
|
|
||||
| WARNING: This feature is DEPRECATED and currently available only
|
||||
| for backwards compatibility purposes!
|
||||
|
|
||||
*/
|
||||
$config['standardize_newlines'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Global XSS Filtering
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Determines whether the XSS filter is always active when GET, POST or
|
||||
| COOKIE data is encountered
|
||||
|
|
||||
| WARNING: This feature is DEPRECATED and currently available only
|
||||
| for backwards compatibility purposes!
|
||||
|
|
||||
*/
|
||||
$config['global_xss_filtering'] = FALSE;
|
||||
$config['cookie_samesite'] = 'Lax';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -494,20 +474,6 @@ $config['compress_output'] = FALSE;
|
||||
*/
|
||||
$config['time_reference'] = 'local';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Rewrite PHP Short Tags
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If your PHP installation does not have short tag support enabled CI
|
||||
| can rewrite the tags on-the-fly, enabling you to utilize that syntax
|
||||
| in your view files. Options are TRUE or FALSE (boolean)
|
||||
|
|
||||
| Note: You need to have eval() enabled for this to work.
|
||||
|
|
||||
*/
|
||||
$config['rewrite_short_tags'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Reverse Proxy IPs
|
||||
|
||||
@@ -88,6 +88,8 @@ return array(
|
||||
'png' => array('image/png', 'image/x-png'),
|
||||
'tiff' => 'image/tiff',
|
||||
'tif' => 'image/tiff',
|
||||
'heic' => 'image/heic',
|
||||
'heif' => 'image/heif',
|
||||
'css' => array('text/css', 'text/plain'),
|
||||
'html' => array('text/html', 'text/plain'),
|
||||
'htm' => array('text/html', 'text/plain'),
|
||||
@@ -114,7 +116,7 @@ return array(
|
||||
'word' => array('application/msword', 'application/octet-stream'),
|
||||
'xl' => 'application/excel',
|
||||
'eml' => 'message/rfc822',
|
||||
'json' => array('application/json', 'text/json'),
|
||||
'json' => array('application/json', 'text/json', 'text/plain'),
|
||||
'pem' => array('application/x-x509-user-cert', 'application/x-pem-file', 'application/octet-stream'),
|
||||
'p10' => array('application/x-pkcs10', 'application/pkcs10'),
|
||||
'p12' => 'application/x-pkcs12',
|
||||
@@ -160,7 +162,7 @@ return array(
|
||||
'cdr' => array('application/cdr', 'application/coreldraw', 'application/x-cdr', 'application/x-coreldraw', 'image/cdr', 'image/x-cdr', 'zz-application/zz-winassoc-cdr'),
|
||||
'wma' => array('audio/x-ms-wma', 'video/x-ms-asf'),
|
||||
'jar' => array('application/java-archive', 'application/x-java-application', 'application/x-jar', 'application/x-compressed'),
|
||||
'svg' => array('image/svg+xml', 'application/xml', 'text/xml'),
|
||||
'svg' => array('image/svg+xml', 'image/svg', 'application/xml', 'text/xml'),
|
||||
'vcf' => 'text/x-vcard',
|
||||
'srt' => array('text/srt', 'text/plain'),
|
||||
'vtt' => array('text/vtt', 'text/plain'),
|
||||
@@ -180,5 +182,6 @@ return array(
|
||||
'odt' => 'application/vnd.oasis.opendocument.text',
|
||||
'odm' => 'application/vnd.oasis.opendocument.text-master',
|
||||
'ott' => 'application/vnd.oasis.opendocument.text-template',
|
||||
'oth' => 'application/vnd.oasis.opendocument.text-web'
|
||||
'oth' => 'application/vnd.oasis.opendocument.text-web',
|
||||
'webp' => 'image/webp'
|
||||
);
|
||||
|
||||
@@ -61,7 +61,8 @@ $platforms = array(
|
||||
$browsers = array(
|
||||
'OPR' => 'Opera',
|
||||
'Flock' => 'Flock',
|
||||
'Edge' => 'Edge',
|
||||
'Edge' => 'Edge Legacy',
|
||||
'Edg' => 'Edge',
|
||||
'Chrome' => 'Chrome',
|
||||
// Opera 10+ always reports Opera/9.80 and appends Version/<real version> to the user agent string
|
||||
'Opera.*?Version' => 'Opera',
|
||||
@@ -87,7 +88,8 @@ $browsers = array(
|
||||
'amaya' => 'Amaya',
|
||||
'IBrowse' => 'IBrowse',
|
||||
'Maxthon' => 'Maxthon',
|
||||
'Ubuntu' => 'Ubuntu Web Browser'
|
||||
'Ubuntu' => 'Ubuntu Web Browser',
|
||||
'Vivaldi' => 'Vivaldi'
|
||||
);
|
||||
|
||||
$mobiles = array(
|
||||
@@ -152,6 +154,11 @@ $mobiles = array(
|
||||
'open web' => 'Open Web',
|
||||
'openweb' => 'OpenWeb',
|
||||
'meizu' => 'Meizu',
|
||||
'huawei' => 'Huawei',
|
||||
'xiaomi' => 'Xiaomi',
|
||||
'oppo' => 'Oppo',
|
||||
'vivo' => 'Vivo',
|
||||
'infinix' => 'Infinix',
|
||||
|
||||
// Operating Systems
|
||||
'android' => 'Android',
|
||||
@@ -212,5 +219,6 @@ $robots = array(
|
||||
'curious george' => 'Curious George',
|
||||
'ia_archiver' => 'Alexa Crawler',
|
||||
'MJ12bot' => 'Majestic-12',
|
||||
'Uptimebot' => 'Uptimebot'
|
||||
'Uptimebot' => 'Uptimebot',
|
||||
'UptimeRobot' => 'UptimeRobot'
|
||||
);
|
||||
|
||||
@@ -57,7 +57,7 @@ class Nivoprofielen extends MY_controller {
|
||||
"naam" => "Gebruikersactiviteiten/inhouden",
|
||||
"omschrijving" => 'activiteiten aangemaakt door niet-framework gebruikers');
|
||||
$pijlers=$this->Pijlers_model->get_pijlers($versieID);
|
||||
array_push($pijlers, $pijlernul);
|
||||
if (is_array($pijlers)) array_push($pijlers, $pijlernul);
|
||||
}
|
||||
else{
|
||||
$pijlers= array(array("id" => 0,
|
||||
|
||||
@@ -432,7 +432,7 @@ class Partituur extends MY_Controller {
|
||||
$wenssituaties = $this->Wenssituaties_model->getgewenstvoorpartituur($ovid,$this->globorgid);
|
||||
foreach($scores as $score) {
|
||||
$waarde = 1;
|
||||
$res= round($score->somscore / $score->num);
|
||||
$res= round($score->num != 0 ? $score->somscore / $score->num : 0);
|
||||
$waarde= $this->kleurcodes->getnummer($res);
|
||||
|
||||
switch ($score->nummer){
|
||||
|
||||
@@ -165,8 +165,8 @@ class Planning extends MY_controller {
|
||||
$partpijler = $this->ModPartPijlers->get_record_by_id($ppijlerID, FALSE,TRUE);
|
||||
$seq = $this->input->post('selSeq');
|
||||
|
||||
if ($this->clean_input('positie') == 'na') {$seq = $seq + 1; }
|
||||
else {$seq = $seq - 1;};
|
||||
if ($this->clean_input('positie') == 'na') {$seq = (int)$seq + 1; }
|
||||
else {$seq = (int)$seq - 1;};
|
||||
$data = array('sequence' => $seq,
|
||||
'partituurID' => $partID,
|
||||
'pijlerID' => $ppijlerID,
|
||||
|
||||
@@ -216,6 +216,7 @@ class Reports extends MY_Controller {
|
||||
$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");
|
||||
@@ -224,6 +225,7 @@ class Reports extends MY_Controller {
|
||||
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
|
||||
@@ -398,6 +400,7 @@ class Reports extends MY_Controller {
|
||||
$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;
|
||||
};
|
||||
@@ -671,7 +674,7 @@ class Reports extends MY_Controller {
|
||||
$beelden=$this->Niveaus_model->get_niveaus();
|
||||
$beelden2=array();
|
||||
foreach($beelden as $beeld){
|
||||
if (in_array($beeld->id, $criteria->beelden) ) {
|
||||
if (is_array($criteria->beelden) && in_array($beeld->id, $criteria->beelden) ) {
|
||||
array_push($beelden2 , $beeld);
|
||||
$profielen[] = $this->Nivoprofielen_model->get_profielen_profiel($beeld->id);
|
||||
};
|
||||
@@ -682,7 +685,7 @@ class Reports extends MY_Controller {
|
||||
$pijlers[$i]= new stdClass;
|
||||
$pijlers[$i]->naam = $voorbeeld->naam;
|
||||
$pijlers[$i]->score=array();
|
||||
for ($j=0; $j < count($criteria->beelden );$j++ ){
|
||||
for ($j=0; $j < count((array)$criteria->beelden );$j++ ){
|
||||
$pijlers[$i]->score[$j]=$profielen[$j][$i]->waarde;
|
||||
};
|
||||
$i= $i+1;
|
||||
@@ -691,7 +694,7 @@ class Reports extends MY_Controller {
|
||||
foreach($criteria->beelden as $beeld){
|
||||
array_push($descriptions , $this->Niveaus_model->get_niveau($beeld));
|
||||
};
|
||||
$data = array( 'aantal' =>count($criteria->beelden) ,
|
||||
$data = array( 'aantal' =>count((array)$criteria->beelden) ,
|
||||
'beelden' =>$beelden2,
|
||||
'pijlers' =>$pijlers,
|
||||
'descriptions' =>$descriptions,
|
||||
@@ -714,6 +717,7 @@ class Reports extends MY_Controller {
|
||||
$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");
|
||||
@@ -722,6 +726,7 @@ class Reports extends MY_Controller {
|
||||
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");
|
||||
@@ -948,7 +953,7 @@ private function GetMax($code){
|
||||
$i = $i + 1;
|
||||
$j = 0;
|
||||
};
|
||||
$aantal = count( $scholen);
|
||||
$aantal = isset($scholen) ? count( $scholen) : 0;
|
||||
|
||||
if ($aantal >= 1) {
|
||||
$k=0;
|
||||
@@ -964,10 +969,10 @@ private function GetMax($code){
|
||||
};
|
||||
};
|
||||
|
||||
$grandGem = round($grandGem / ($k * $aantal),0);
|
||||
$grandGem = round(($k * $aantal) != 0 ? $grandGem / ($k * $aantal) : 0,0);
|
||||
$grandSchoolbeeld = $this->GetBeeldGem($grandGem );
|
||||
|
||||
$grandProf = round($grandProf / (7 * $aantal), 0);
|
||||
$grandProf = round($aantal != 0 ? $grandProf / (7 * $aantal) : 0, 0);
|
||||
$SBcolor = $this->GetColorBijBeeld($grandSchoolbeeld);
|
||||
|
||||
$data = array( 'pijlers' =>$pijlers,
|
||||
@@ -995,6 +1000,7 @@ private function GetMax($code){
|
||||
$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;
|
||||
@@ -1006,6 +1012,7 @@ private function GetMax($code){
|
||||
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;
|
||||
|
||||
@@ -274,6 +274,7 @@ class Monfin2overzicht extends MY_Controller{
|
||||
}
|
||||
$index += 1;
|
||||
};
|
||||
if (! isset($somasarray[0])) $somasarray[0] = new stdClass();
|
||||
$somasarray[0]->som = $regelsom;
|
||||
$somasarray[0]->budgetsom = $regelsom2;
|
||||
$somasarray[0]->budgetrestant = $regelsom2 - $regelsom;
|
||||
@@ -304,6 +305,7 @@ class Monfin2overzicht extends MY_Controller{
|
||||
$grandtot->verschilGeb =0;
|
||||
|
||||
$targetorg = $this->Organisaties_model->get_record_by_id($targetorgid);
|
||||
if (! $targetorg) $targetorg = new stdClass();
|
||||
$targetorg->bestemmingen = $this->get_bestuur_bestemmingen($targetorgid, $kalenderjaarnr);
|
||||
$targetorg->budgetten = $this->get_bestuur_gebudget($targetorgid, $kalenderjaarnr);
|
||||
$verschil = $targetorg->budgetten['som']-$targetorg->bestemmingen['som'];
|
||||
@@ -539,6 +541,7 @@ class Monfin2overzicht extends MY_Controller{
|
||||
$targetorgid = $this->clean_input('orgid');
|
||||
$kalenderjaarnr = $this->clean_input("jaarnr");
|
||||
$targetorg = $this->Organisaties_model->get_record_by_id($targetorgid);
|
||||
if (! $targetorg) $targetorg = new stdClass();
|
||||
list($targetorg->pms, $targetorg->bud, $targetorg->kleur, $otherorgs) = $this->get_bestuur_pms($targetorgid, $kalenderjaarnr);
|
||||
$sumother = $this->getsumotherpms($otherorgs);
|
||||
$sumtot = $this->getsumtotpms($targetorg, $sumother);
|
||||
|
||||
@@ -198,7 +198,7 @@ class Berichten extends MY_Controller {
|
||||
// $clusters[$y]->vinkje = 'T';
|
||||
$s = 0;
|
||||
$v = $s;
|
||||
$aantal = count( $clusters[ $y ]->modules );//ga per module na of er een bericht bij hoort, dan true
|
||||
$aantal = is_array( $clusters[ $y ]->modules ) ? count( $clusters[ $y ]->modules ) : 0;//ga per module na of er een bericht bij hoort, dan true
|
||||
$clusters[ $y ]->aantal = $aantal;
|
||||
for ( $s = 0; $s < $aantal; $s ++ )
|
||||
{
|
||||
@@ -311,7 +311,7 @@ class Berichten extends MY_Controller {
|
||||
$berichtid = $this->clean_input( "berichtid" );
|
||||
$clusterid = $this->clean_input( "clusterid" );
|
||||
$mededeling = "er is iets mis gegaan";
|
||||
if ( $vinkje && $berichtid && $clusterid >= 0 )
|
||||
if ( $vinkje && $berichtid && (int)$clusterid >= 0 )
|
||||
{
|
||||
$modules = $this->Modules_model->get_records_where( array("cluster_id" => $clusterid) );
|
||||
if ( $vinkje == 'T' )
|
||||
|
||||
@@ -124,9 +124,9 @@ class Diversiteit extends MY_Controller{
|
||||
$schoolgewogentot = $schoolgewogentot + 24; }
|
||||
}; // foreach
|
||||
}// if
|
||||
$schooldq = round($schooldiversiteit / $schoolgewogentot , 2);
|
||||
if ($schoolgewogentot != 0) $schooldq = round($schooldiversiteit / $schoolgewogentot , 2);
|
||||
$today = date("d-m-Y");
|
||||
$aantalgroepen = sizeof($groepen);
|
||||
$aantalgroepen = is_array($groepen) ? sizeof($groepen) : 0;
|
||||
$richtlijn=array('85%', '10%','3%','25');
|
||||
$data=array('organisatie' => $organisatie,
|
||||
"schooljaarnaam" => $schooljaarnaam,
|
||||
@@ -183,11 +183,11 @@ class Diversiteit extends MY_Controller{
|
||||
|
||||
}; // foreach
|
||||
}// if
|
||||
$sbodq = $sbodiversiteit/$sbogewogentot;
|
||||
$sodq = $sodiversiteit/$sodiversiteit;
|
||||
$sbodq = $sbogewogentot != 0 ? $sbodiversiteit/$sbogewogentot : 0;
|
||||
$sodq = $sodiversiteit != 0 ? $sodiversiteit/$sodiversiteit : 0;
|
||||
$schooldq = round( $sbodq + $sodq, 2);
|
||||
$today = date("d-m-Y");
|
||||
$aantalgroepen = sizeof($groepen);
|
||||
$aantalgroepen = is_array($groepen) ? sizeof($groepen) : 0;
|
||||
$richtlijn=array('85%', '10%','3%','25');
|
||||
$data=array('organisatie' => $organisatie,
|
||||
"schooljaarnaam" => $schooljaarnaam,
|
||||
|
||||
@@ -120,7 +120,7 @@ class Groepen extends MY_Controller{
|
||||
if (!$this->userid ) die;
|
||||
$groepid = $this->clean_input('id');
|
||||
$nivos = $this->clean_input("niveauarray");
|
||||
$nstring = implode(';', $nivos);
|
||||
$nstring = is_array($nivos) ? implode(';', $nivos) : null;
|
||||
|
||||
$data=array('naam' => $this->clean_input('naam'),
|
||||
'niveau' => $nstring,
|
||||
@@ -388,7 +388,7 @@ class Groepen extends MY_Controller{
|
||||
$schooljaarnr = $this->clean_input('schooljaar');
|
||||
$orgid = $this->clean_input('orgid');
|
||||
$module = $this->clean_input('module');
|
||||
$vorigegroepen = $this->Groepen_model->get(['schooljaarnr'=> $schooljaarnr - 1,
|
||||
$vorigegroepen = $this->Groepen_model->get(['schooljaarnr'=> (int)$schooljaarnr - 1,
|
||||
'organisatie_id' =>$orgid,
|
||||
'schooltype' => 'R',
|
||||
'module' => $module], false, false);
|
||||
@@ -425,7 +425,7 @@ class Groepen extends MY_Controller{
|
||||
$schooljaarnr = $this->clean_input('schooljaar');
|
||||
$orgid = $this->clean_input('orgid');
|
||||
|
||||
$vorigegroepen = $this->Groepen_model->get(['schooljaarnr'=> $schooljaarnr - 1,
|
||||
$vorigegroepen = $this->Groepen_model->get(['schooljaarnr'=> (int)$schooljaarnr - 1,
|
||||
'organisatie_id' =>$orgid,
|
||||
'schooltype' => 'R',
|
||||
'module' => 270], false, false);
|
||||
|
||||
@@ -74,7 +74,7 @@ class Overzichtsop extends MY_Controller{
|
||||
{
|
||||
if (!$this->userid) die;
|
||||
$schooljaarnr = $this->clean_input("schooljaarnr");
|
||||
$criteriumID = $this->clean_input("criteriumID");
|
||||
$criteriumID = (int)$this->clean_input("criteriumID");
|
||||
|
||||
$organisatie = $this->Organisaties_model->getorg($this->globorgid);
|
||||
$organisatie->sop = 'F';
|
||||
|
||||
@@ -108,7 +108,7 @@ class Rapijkpunten extends MY_Controller{
|
||||
$soort = $this->Organisaties_model->get_fieldvalue(array("id"=>$this->globorgid), 'soort' );
|
||||
$level123 = false;
|
||||
|
||||
if ($soort > 0 && soort < 4) {
|
||||
if ($soort > 0 && $soort < 4) {
|
||||
$level123 == true;
|
||||
}
|
||||
echo json_encode($level123);
|
||||
|
||||
@@ -76,12 +76,12 @@ class Rapmatrix extends MY_Controller
|
||||
{
|
||||
$orgID = $this->clean_input('orgid');
|
||||
$orgsoort = $this->clean_input('orgsoort');
|
||||
$criteriumID = $this->clean_input('criteriumid');
|
||||
$criteriumID = (int)$this->clean_input('criteriumid');
|
||||
$orgversieID = $this->clean_input('orgversieid');
|
||||
$toporg = $this->clean_input('toporg');
|
||||
$ijkpunten = $this->Ijkpunten_model->getijkpuntenMetIndicatoren($orgversieID);
|
||||
|
||||
$aantalY = count($ijkpunten);
|
||||
$aantalY = is_array($ijkpunten) ? count($ijkpunten) : 0;
|
||||
$kleurtabel = $this->kleurcodes->getkleurlegenda();
|
||||
|
||||
$orgversie = $this->Orgversies_model->get_record_by_id($orgversieID);
|
||||
@@ -129,7 +129,7 @@ class Rapmatrix extends MY_Controller
|
||||
function haalInspectieScoresOp(){
|
||||
$orgID = $this->clean_input('orgid');
|
||||
$orgsoort = $this->clean_input('orgsoort');
|
||||
$criteriumID = $this->clean_input('criteriumid');
|
||||
$criteriumID = (int)$this->clean_input('criteriumid');
|
||||
$orgversieID = $this->clean_input('orgversieid');
|
||||
|
||||
$ijkpunten = $this->Orgversies_model->getijkpunten($orgversieID);
|
||||
@@ -153,7 +153,7 @@ class Rapmatrix extends MY_Controller
|
||||
echo json_encode(
|
||||
array("labels" => $labels,
|
||||
"ijkpunten" => $ijkpunten,
|
||||
"aantalY" => count($ijkpunten),
|
||||
"aantalY" => is_array($ijkpunten) ? count($ijkpunten) : 0,
|
||||
"uitslagen" => $uitslagen,
|
||||
"kleurtabel" => $kleurtabel));
|
||||
}
|
||||
@@ -628,7 +628,7 @@ return $labels;
|
||||
|
||||
private function getGemiddeldeScores($labels, $ijkpunten, $kleuren, $scoretype){
|
||||
|
||||
$aantalY = count($ijkpunten);
|
||||
$aantalY = is_array($ijkpunten) ? count($ijkpunten) : 0;
|
||||
$waarden = 0;
|
||||
$nvt = [];
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ class Rapontwikkel extends MY_Controller {
|
||||
$orgversieid = $this->clean_input( "orgversionid" );
|
||||
$orguserid = $this->clean_input( "orguserid" );
|
||||
|
||||
if ( $orguserid == 0 )
|
||||
if ( (int)$orguserid == 0 )
|
||||
{
|
||||
$orguserid = NULL;
|
||||
}
|
||||
@@ -163,7 +163,7 @@ class Rapontwikkel extends MY_Controller {
|
||||
|
||||
if ($werktEr)
|
||||
{
|
||||
if ( pow( 4, $orgsoort ) == $this->userrole)
|
||||
if ( pow( 4, (int)$orgsoort ) == $this->userrole)
|
||||
{
|
||||
$rechten = TRUE;
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ class Schoolgegevens extends MY_Controller{
|
||||
|
||||
// als nivo < 10 alleen verwijderen via accounts
|
||||
$autorisatienivo = $this->Autorisaties_model->get(['orguser_id' =>$orguser->id], 'nivo_id', true);
|
||||
if ($autorisatienivo != 10) $errorstring += " Deze gebruiker mag alleen verwijderd worden via accounts.";
|
||||
if ($autorisatienivo != 10) $errorstring .= " Deze gebruiker mag alleen verwijderd worden via accounts.";
|
||||
|
||||
if ($errorstring <= ''){
|
||||
$this->Autorisaties_model->update_record_where(['nivo_id'=>100], ['orguser_id' =>$orguser->id]);
|
||||
|
||||
@@ -318,7 +318,7 @@ class Sop extends MY_Controller{
|
||||
$sopkeuze = (new Sopkeuze($sopid));
|
||||
$labels = $sopkeuze->getLabels();
|
||||
$soplabels = $sopkeuze->getHoofdstukLabels();
|
||||
$aantal = count($soplabels);
|
||||
$aantal = is_array($soplabels) ? count($soplabels) : 0;
|
||||
$tweedeid='';
|
||||
if($aantal > 1) {
|
||||
$tweede = $soplabels[1];
|
||||
|
||||
@@ -57,7 +57,7 @@ class Sortering extends MY_Controller {
|
||||
$label->sortering_id = $criterium->id;
|
||||
$label->naam ='niet ingedeeld';
|
||||
$label->volgorde = 'LAATST';
|
||||
array_push($labels, $label);
|
||||
if (is_array($labels)) array_push($labels, $label);
|
||||
$criterium->labels = $labels;
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ class Sortering extends MY_Controller {
|
||||
$label->sortering_id = $criteriumid;
|
||||
$label->naam ='niet ingedeeld';
|
||||
$label->volgorde = 'LAATST';
|
||||
array_push($labels, $label);
|
||||
if (is_array($labels)) array_push($labels, $label);
|
||||
$swv = $this->Organisaties_model->get_record_by_id($swvid);
|
||||
$swv->kamers = $this->Organisaties_model->getorgsvanaf($swvid);
|
||||
|
||||
|
||||
@@ -273,7 +273,7 @@ class Streefcijfers extends MY_Controller{
|
||||
}
|
||||
|
||||
$ambitie = $this->Ambities_model->mh_get_ambities($module, $this->globorgid, $this->globorgid);
|
||||
if($ambitie) $ambities = array_merge($ambities,$ambitie);
|
||||
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);
|
||||
@@ -345,6 +345,7 @@ class Streefcijfers extends MY_Controller{
|
||||
// $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;
|
||||
|
||||
@@ -478,7 +479,7 @@ class Streefcijfers extends MY_Controller{
|
||||
// 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 ($id ==0 || !$alaanwezig ){
|
||||
if ((int)$id ==0 || !$alaanwezig ){
|
||||
$data=array("organisatie_id" => $this->globorgid,
|
||||
"orgversie_id" => $this->clean_input("orgversie_id"),
|
||||
"gem_score" => $this->clean_input("gemscore"),
|
||||
|
||||
@@ -189,7 +189,7 @@ class Filefolders extends MY_Controller {
|
||||
}
|
||||
|
||||
private function magDelete($fileid){
|
||||
$owner = $this->Files_model->get(['id'=>$fileid],owner,true);
|
||||
$owner = $this->Files_model->get(['id'=>$fileid],'owner',true);
|
||||
if ($owner == $this->userid) return true;
|
||||
else return false;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ class Functies extends MY_Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($functies && sizeof($functies > 1)) {
|
||||
if ($functies) {
|
||||
$test = (array)$functies;
|
||||
usort($test, array($this, 'opDoelgroep'));
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ class Organisaties extends MY_Controller{
|
||||
}
|
||||
else {
|
||||
$orgs = $this->Organisaties_model->getuserorgs($this->userid);
|
||||
if (count($orgs) == 1) $orgs = null; // als er maar 1 organisatie is , kan de gebruiker niet switchen
|
||||
if (!$orgs || count($orgs) == 1) $orgs = null; // als er maar 1 organisatie is , kan de gebruiker niet switchen
|
||||
}
|
||||
echo json_encode($orgs);
|
||||
}
|
||||
@@ -227,7 +227,7 @@ class Organisaties extends MY_Controller{
|
||||
$zoekstr = $this->input->post("zoekstring");
|
||||
$results = $this->Organisaties_model->zoekorgs($zoekstr);
|
||||
if (!$results){$errortekst = "Geen resultaten gevonden";};
|
||||
if (count($results) > 150) {
|
||||
if ($results && count($results) > 150) {
|
||||
$errortekst ="Teveel overeenkomende gegevens gevonden. Maak uw zoekcriteria specifieker.";
|
||||
$results = '';}
|
||||
echo json_encode(array("results"=>$results, "errortekst" =>$errortekst));
|
||||
|
||||
@@ -309,7 +309,7 @@ class Portal extends MY_Controller {
|
||||
|
||||
$licenties = array_merge( $ongeclusterd, $clusters);
|
||||
usort($licenties, array($this, 'opAlfabet'));
|
||||
usort($keuze, array($this, 'opAlfabet'));
|
||||
if (is_array($keuze)) usort($keuze, array($this, 'opAlfabet'));
|
||||
$clusternaam = $this->Licenties_model->get_clusterNaam($clusterId);
|
||||
|
||||
$geselecteerd = $this->arrayinArray($licenties, $keuzesarray, $clusterId, $clusternaam);
|
||||
|
||||
@@ -49,7 +49,7 @@ class Upload extends MY_Controller {
|
||||
}
|
||||
private function sharedUpload($fn, $folder, $module,$docID = false){
|
||||
$newName = $this->random_str(12);
|
||||
$fileExists = $this->CheckFileExists($fn['name'], $module);
|
||||
$fileExists = $this->CheckFileExists(is_array($fn) ? $fn['name'] : '', $module);
|
||||
// nog afvangen : file exists maar een doc id meegegeven: dan moet de file overschreven worden
|
||||
$error ='';
|
||||
if ($fn) {
|
||||
|
||||
@@ -178,7 +178,7 @@ class MY_Controller extends CI_Controller{
|
||||
|
||||
|
||||
function clean_input($post){
|
||||
return str_replace('null', '', $this->db->escape_str($this->input->post($post), TRUE));
|
||||
return str_replace('null', '', $this->db->escape_str($this->input->post($post) ?? '', TRUE));
|
||||
}
|
||||
function check_online_status() {
|
||||
if ( ! $this->uri->segment( 2 ) || $this->uri->segment( 1 ) == 'login' ) return TRUE;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
return date('d-m-Y', strtotime($date));
|
||||
}
|
||||
function mysql2bedrag($bedrag){
|
||||
$bedrag2=number_format($bedrag,2,",",".");
|
||||
$bedrag2=number_format((float)$bedrag,2,",",".");
|
||||
return $bedrag2;
|
||||
}
|
||||
|
||||
|
||||
@@ -1323,7 +1323,7 @@ class FirePHP {
|
||||
|
||||
$name = $raw_name;
|
||||
|
||||
if ($name{0} == "\0") {
|
||||
if ($name[0] == "\0") {
|
||||
$parts = explode("\0", $name);
|
||||
$name = $parts[2];
|
||||
}
|
||||
@@ -1370,7 +1370,7 @@ class FirePHP {
|
||||
if (self::is_utf8($Object)) {
|
||||
return $Object;
|
||||
} else {
|
||||
return utf8_encode($Object);
|
||||
return mb_convert_encoding((string)$Object, 'UTF-8', 'ISO-8859-1');
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
@@ -1502,17 +1502,17 @@ class FirePHP {
|
||||
case 2:
|
||||
// return a UTF-16 character from a 2-byte UTF-8 char
|
||||
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
return chr(0x07 & (ord($utf8{0}) >> 2))
|
||||
. chr((0xC0 & (ord($utf8{0}) << 6))
|
||||
| (0x3F & ord($utf8{1})));
|
||||
return chr(0x07 & (ord($utf8[0]) >> 2))
|
||||
. chr((0xC0 & (ord($utf8[0]) << 6))
|
||||
| (0x3F & ord($utf8[1])));
|
||||
|
||||
case 3:
|
||||
// return a UTF-16 character from a 3-byte UTF-8 char
|
||||
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
return chr((0xF0 & (ord($utf8{0}) << 4))
|
||||
| (0x0F & (ord($utf8{1}) >> 2)))
|
||||
. chr((0xC0 & (ord($utf8{1}) << 6))
|
||||
| (0x7F & ord($utf8{2})));
|
||||
return chr((0xF0 & (ord($utf8[0]) << 4))
|
||||
| (0x0F & (ord($utf8[1]) >> 2)))
|
||||
. chr((0xC0 & (ord($utf8[1]) << 6))
|
||||
| (0x7F & ord($utf8[2])));
|
||||
}
|
||||
|
||||
// ignoring UTF-32 for now, sorry
|
||||
@@ -1564,7 +1564,7 @@ class FirePHP {
|
||||
*/
|
||||
for ($c = 0; $c < $strlen_var; ++$c) {
|
||||
|
||||
$ord_var_c = ord($var{$c});
|
||||
$ord_var_c = ord($var[$c]);
|
||||
|
||||
switch (true) {
|
||||
case $ord_var_c == 0x08:
|
||||
@@ -1587,18 +1587,18 @@ class FirePHP {
|
||||
case $ord_var_c == 0x2F:
|
||||
case $ord_var_c == 0x5C:
|
||||
// double quote, slash, slosh
|
||||
$ascii .= '\\'.$var{$c};
|
||||
$ascii .= '\\'.$var[$c];
|
||||
break;
|
||||
|
||||
case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
|
||||
// characters U-00000000 - U-0000007F (same as ASCII)
|
||||
$ascii .= $var{$c};
|
||||
$ascii .= $var[$c];
|
||||
break;
|
||||
|
||||
case (($ord_var_c & 0xE0) == 0xC0):
|
||||
// characters U-00000080 - U-000007FF, mask 110XXXXX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c, ord($var{$c + 1}));
|
||||
$char = pack('C*', $ord_var_c, ord($var[$c + 1]));
|
||||
$c += 1;
|
||||
$utf16 = $this->json_utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
@@ -1608,8 +1608,8 @@ class FirePHP {
|
||||
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}));
|
||||
ord($var[$c + 1]),
|
||||
ord($var[$c + 2]));
|
||||
$c += 2;
|
||||
$utf16 = $this->json_utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
@@ -1619,9 +1619,9 @@ class FirePHP {
|
||||
// characters U-00010000 - U-001FFFFF, mask 11110XXX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}),
|
||||
ord($var{$c + 3}));
|
||||
ord($var[$c + 1]),
|
||||
ord($var[$c + 2]),
|
||||
ord($var[$c + 3]));
|
||||
$c += 3;
|
||||
$utf16 = $this->json_utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
@@ -1631,10 +1631,10 @@ class FirePHP {
|
||||
// characters U-00200000 - U-03FFFFFF, mask 111110XX
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}),
|
||||
ord($var{$c + 3}),
|
||||
ord($var{$c + 4}));
|
||||
ord($var[$c + 1]),
|
||||
ord($var[$c + 2]),
|
||||
ord($var[$c + 3]),
|
||||
ord($var[$c + 4]));
|
||||
$c += 4;
|
||||
$utf16 = $this->json_utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
@@ -1644,11 +1644,11 @@ class FirePHP {
|
||||
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
|
||||
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
|
||||
$char = pack('C*', $ord_var_c,
|
||||
ord($var{$c + 1}),
|
||||
ord($var{$c + 2}),
|
||||
ord($var{$c + 3}),
|
||||
ord($var{$c + 4}),
|
||||
ord($var{$c + 5}));
|
||||
ord($var[$c + 1]),
|
||||
ord($var[$c + 2]),
|
||||
ord($var[$c + 3]),
|
||||
ord($var[$c + 4]),
|
||||
ord($var[$c + 5]));
|
||||
$c += 5;
|
||||
$utf16 = $this->json_utf82utf16($char);
|
||||
$ascii .= sprintf('\u%04s', bin2hex($utf16));
|
||||
|
||||
@@ -14,6 +14,9 @@ class Diversiteit
|
||||
private $vormen;
|
||||
private $factoren ='';
|
||||
private $diversiteit = [];
|
||||
private $schooljaarnr;
|
||||
private $orgid;
|
||||
private $modulenr;
|
||||
|
||||
public function getDiversiteit(){
|
||||
return $this->diversiteit;
|
||||
|
||||
@@ -46,6 +46,9 @@ class Diversiteitafbeeldingen {
|
||||
private $somdq;
|
||||
private $totdq;
|
||||
private $diversiteitafbeeldingen =[];
|
||||
private $modulenr;
|
||||
private $orgversieid;
|
||||
private $diversiteit;
|
||||
|
||||
public function __construct($diversiteit, $modulenr, $orgversieid){
|
||||
$this->CI = & get_instance();
|
||||
|
||||
@@ -37,6 +37,11 @@ class Gemiddeldenafbeeldingen {
|
||||
private $disablenvt = 0;
|
||||
|
||||
private $gemiddeldenafbeeldingen;
|
||||
private $gemiddeldescores;
|
||||
private $modulenr;
|
||||
private $orgversieid;
|
||||
private $orgid;
|
||||
private $clusterid;
|
||||
|
||||
public function __construct(Gemiddeldescores $gemiddeldescores, $modulenr, $orgversieid, $clusterid, $orgid){
|
||||
$this->CI = & get_instance();
|
||||
|
||||
@@ -24,6 +24,18 @@ class Gemiddeldescores
|
||||
private $welkehoogste;
|
||||
private $laagstescore = 110;
|
||||
private $hoogstescore = 0;
|
||||
private $orgversieid;
|
||||
private $orgid;
|
||||
private $scoretype;
|
||||
private $results;
|
||||
private $org;
|
||||
private $orgnaam;
|
||||
private $kleuren;
|
||||
private $onderorgs;
|
||||
private $orgstring;
|
||||
private $leerkrachtscores;
|
||||
private $ijkpuntscore;
|
||||
private $gemiddelde;
|
||||
|
||||
|
||||
|
||||
@@ -446,7 +458,7 @@ class Gemiddeldescores
|
||||
}
|
||||
|
||||
private function addGemiddeldeScore(){
|
||||
if(! $this->gemiddelde) return;
|
||||
if(! $this->gemiddelde || ! is_array($this->ijkpunten)) return;
|
||||
array_push($this->ijkpunten, $this->gemiddelde);
|
||||
|
||||
}
|
||||
@@ -491,7 +503,7 @@ class Gemiddeldescores
|
||||
|
||||
private function setGevuldeVersies12(){
|
||||
$orgids = [];
|
||||
if (count($this->onderorgs) > 0) {
|
||||
if (!empty($this->onderorgs)) {
|
||||
foreach ($this->onderorgs as $index => $this->org) {
|
||||
$orgids[] = $this->org->id;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,9 @@ class Hoofdstuk
|
||||
private $vervangingscode;
|
||||
private $contentid;
|
||||
private $hoofdstuk;
|
||||
private $chapterid;
|
||||
private $orgversieid;
|
||||
private $profielid;
|
||||
|
||||
|
||||
private $CI;
|
||||
|
||||
@@ -16,8 +16,11 @@ class Hoofdstukkeuze
|
||||
private $selectie;
|
||||
private $selecties = [];
|
||||
private $CI;
|
||||
private $orgversieid;
|
||||
private $chapterid;
|
||||
private $vergelijkingen;
|
||||
|
||||
public function __construct($chapterid, $orgversieid= false, $vergelijkingen)
|
||||
public function __construct($chapterid, $orgversieid, $vergelijkingen)
|
||||
{
|
||||
$this->CI =& get_instance();
|
||||
$this->orgversieid = $orgversieid;
|
||||
|
||||
@@ -11,6 +11,7 @@ class Inleiding
|
||||
private $valtonder_id;
|
||||
private $bgid;
|
||||
private $inleiding;
|
||||
private $orgid;
|
||||
|
||||
|
||||
public function __construct($orgid)
|
||||
|
||||
@@ -21,6 +21,11 @@ class Inspectieafbeeldingen {
|
||||
private $orgbreedte;
|
||||
private $vantm;
|
||||
private $inspectieafbeeldingen;
|
||||
private $modulenr;
|
||||
private $orgversieid;
|
||||
private $inspectieoordelen;
|
||||
private $orgid;
|
||||
private $clusterid;
|
||||
|
||||
public function __construct($inspectieOordelen, $modulenr, $orgversieid, $orgid){
|
||||
$this->CI = & get_instance();
|
||||
|
||||
@@ -9,6 +9,9 @@ class Inspectieoordelen
|
||||
private $ijkpunten;
|
||||
private $melding;
|
||||
private $inspectieoordelen;
|
||||
private $orgversieid;
|
||||
private $orgid;
|
||||
private $clusterid;
|
||||
|
||||
public function __construct($orgversieid, $orgid, $clusterid){
|
||||
$this->CI =& get_instance();
|
||||
|
||||
@@ -134,7 +134,7 @@ class Kleurcodes {
|
||||
return $codes;
|
||||
}
|
||||
|
||||
public function getKleurcodesOrg($clusterid = FALSE, $swvid){
|
||||
public function getKleurcodesOrg($clusterid, $swvid){
|
||||
if (! $clusterid) $clusterid = 0;
|
||||
$sql = " SELECT *
|
||||
FROM tb_kleurcodes KC
|
||||
|
||||
@@ -32,6 +32,11 @@ class Schoolafbeeldingen {
|
||||
private $schoolafbeeldingen;
|
||||
private $resultaten;
|
||||
private $disablenvt;
|
||||
private $schoolscores;
|
||||
private $modulenr;
|
||||
private $orgversieid;
|
||||
private $orgid;
|
||||
private $clusterid;
|
||||
|
||||
public function __construct(Schoolscores $schoolscores, $modulenr, $orgversieid, $clusterid, $orgid){
|
||||
$this->CI = & get_instance();
|
||||
|
||||
@@ -16,6 +16,7 @@ Schooljaarversies
|
||||
private $schooljaarversies = [];
|
||||
private $sopaanwezig = 'F';
|
||||
private $versies;
|
||||
private $modulenr;
|
||||
|
||||
public function __construct($chapterid, $profielid, $modulenr)
|
||||
{
|
||||
|
||||
@@ -21,6 +21,15 @@ class Schoolscores
|
||||
private $laagstescore = 110;
|
||||
private $hoogstescore = 0;
|
||||
private $gemiddelde;
|
||||
private $orgversieid;
|
||||
private $orgid;
|
||||
private $scoretype;
|
||||
private $isVergelijking;
|
||||
private $orgstring;
|
||||
private $orgnaam;
|
||||
private $metingen;
|
||||
private $kleuren;
|
||||
private $results;
|
||||
|
||||
|
||||
public function __construct( $orgversieid, $orgid, $scoretype, $isVergelijking)
|
||||
@@ -106,7 +115,7 @@ class Schoolscores
|
||||
|
||||
private function setMetingen(){
|
||||
$this->metingen = new stdClass();
|
||||
if(count($this->scores)==0)
|
||||
if(empty($this->scores))
|
||||
$this->metingen->aantal= 0;
|
||||
$this->metingen->aantalorgs = 0;
|
||||
|
||||
|
||||
@@ -21,6 +21,15 @@ class Scores
|
||||
private $laagstescore = 110;
|
||||
private $hoogstescore = 0;
|
||||
private $gemiddelde;
|
||||
private $orgversieid;
|
||||
private $orgid;
|
||||
private $scoretype;
|
||||
private $isVergelijking;
|
||||
private $orgstring;
|
||||
private $orgnaam;
|
||||
private $metingen;
|
||||
private $kleuren;
|
||||
private $results;
|
||||
|
||||
|
||||
public function __construct( $orgversieid, $orgid, $scoretype, $isVergelijking)
|
||||
@@ -103,7 +112,7 @@ class Scores
|
||||
|
||||
private function setMetingen(){
|
||||
$this->metingen = new stdClass();
|
||||
if(count($this->scores)==0)
|
||||
if(empty($this->scores))
|
||||
$this->metingen->aantal= 0;
|
||||
$this->metingen->aantalorgs = 0;
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ class Sopkeuze
|
||||
private $keuzelabels = [];
|
||||
private $labels;
|
||||
private $sopkeuze;
|
||||
private $labelsids;
|
||||
|
||||
|
||||
private $CI;
|
||||
@@ -154,7 +155,7 @@ class Sopkeuze
|
||||
$this->labels = $this->hfstlabels;
|
||||
}
|
||||
if($this->keuzelabels){
|
||||
$this->labels = array_merge($this->hfstlabels, $this->keuzelabels);
|
||||
$this->labels = array_merge($this->hfstlabels ?: [], $this->keuzelabels);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,10 +10,11 @@ class Tabellen
|
||||
private $view;
|
||||
private $tab;
|
||||
//ls okt 2020 private $imagecode;
|
||||
private tabelid;
|
||||
private $tabelid;
|
||||
private $imagedata;
|
||||
private $sopinhoud;
|
||||
private $updateid;
|
||||
private $sopinhoudid;
|
||||
|
||||
private $CI;
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ class Versions
|
||||
private $geopendeversies = [];
|
||||
private $sopaanwezig = 'F';
|
||||
private $versies;
|
||||
private $modulenr;
|
||||
|
||||
public function __construct($chapterid, $profielid, $modulenr)
|
||||
{
|
||||
|
||||
@@ -33,6 +33,9 @@ class Compacteonderdelen
|
||||
private $data;
|
||||
private $onderdelenNew;
|
||||
private $compacteonderdelen;
|
||||
private $schooljaarnr;
|
||||
private $onderdelen;
|
||||
private $orgid;
|
||||
|
||||
public function __construct($schooljaarnr, $onderdelen, $omvangjaren, $orgid){
|
||||
$this->CI = &get_instance();
|
||||
@@ -203,7 +206,7 @@ class Compacteonderdelen
|
||||
}
|
||||
|
||||
private function setSetOmvang(){
|
||||
if(! isset($this->omvangjaren) || count($this->omvangjaren) < 1 || !$this->omvangjaren) return;
|
||||
if(! isset($this->omvangjaren) || ! is_array($this->omvangjaren) || count($this->omvangjaren) < 1 || !$this->omvangjaren) return;
|
||||
$jaren = implode("','", $this->omvangjaren);
|
||||
$jaren = "'" . $jaren . "'";
|
||||
|
||||
@@ -343,13 +346,13 @@ class Compacteonderdelen
|
||||
$this->CI->globorgid, $this->jaarnummer, 'BASIS');
|
||||
|
||||
$this->somB = str_replace(',','', $this->somB);
|
||||
$this->somB = number_format(($this->somB ), 0,',','.');
|
||||
$this->somB = is_numeric($this->somB) ? number_format(($this->somB ), 0,',','.') : null; // PHP 8: number_format('') is a TypeError
|
||||
|
||||
|
||||
$this->somE = $this->CI->Finbestemmingen_model->setSomSubsoort(
|
||||
$this->CI->globorgid, $this->jaarnummer, 'EXTRA');
|
||||
$this->somE = str_replace(',','', $this->somE);
|
||||
$this->somE = number_format(($this->somE ), 0,',','.');
|
||||
$this->somE = is_numeric($this->somE) ? number_format(($this->somE ), 0,',','.') : null; // PHP 8: number_format('') is a TypeError
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ class Compactepaginas
|
||||
|
||||
private $gegevens;
|
||||
private $gegevensarray = [];
|
||||
private $compacteonderdelen;
|
||||
private $sopid;
|
||||
|
||||
public function __construct($onderdelen, $paginas){
|
||||
$this->CI = &get_instance();
|
||||
|
||||
@@ -22,6 +22,9 @@ class Compacteversies
|
||||
private $gevuldschooljaar;
|
||||
private $vormtekst;
|
||||
private $filledversie;
|
||||
private $schooljaarnr;
|
||||
private $orgid;
|
||||
private $orgsoortnr;
|
||||
|
||||
public function getOnderdelen(){
|
||||
return $this->onderdelen;
|
||||
|
||||
@@ -7,6 +7,9 @@ class Bestuurscores
|
||||
private $orgstring;
|
||||
private $metingen;
|
||||
private $ambities;
|
||||
private $orgversieid;
|
||||
private $orgid;
|
||||
private $vorm;
|
||||
|
||||
|
||||
public function __construct( $orgversieid, $orgid, $vorm)
|
||||
|
||||
@@ -21,6 +21,13 @@ class Individuelescores
|
||||
private $welkehoogste;
|
||||
private $laagstescore = 110;
|
||||
private $hoogstescore = 0;
|
||||
private $orgversieid;
|
||||
private $orgid;
|
||||
private $orguserid;
|
||||
private $scoretype;
|
||||
private $org;
|
||||
private $orgnaam;
|
||||
private $ijkpunten;
|
||||
|
||||
|
||||
public function __construct( $orgversieid, $orguserid, $orgid, $scoretype)
|
||||
|
||||
@@ -10,6 +10,9 @@ class Kamerscores
|
||||
private $scores;
|
||||
private $metingen;
|
||||
private $ambities;
|
||||
private $orgversieid;
|
||||
private $orgid;
|
||||
private $vorm;
|
||||
|
||||
public function __construct( $orgversieid, $orgid, $vorm)
|
||||
{
|
||||
|
||||
@@ -17,6 +17,11 @@ class Lijsten
|
||||
private $nieuwsteversie;
|
||||
private $sopinfo;
|
||||
private $eigenambitie = 'F';
|
||||
private $orgid;
|
||||
private $selecties;
|
||||
private $organisatie;
|
||||
private $gemiddelden;
|
||||
private $scoresobject;
|
||||
|
||||
public function getLijsten(){
|
||||
return $this->lijsten;
|
||||
@@ -164,6 +169,8 @@ class Lijsten
|
||||
if(!isset($this->vergelijkingen) || !$this->vergelijkingen) return;
|
||||
|
||||
foreach($this->vergelijkingen['scores'] AS $i => $vergelijking){
|
||||
if (!$this->scores) $this->scores = []; // PHP 8.1: no implicit false-to-array conversion
|
||||
if (!isset($this->scores[$i])) $this->scores[$i] = new stdClass(); // PHP 8: no auto-vivification of objects
|
||||
$this->scores[$i]->gemV = $vergelijking->gem;
|
||||
$this->scores[$i]->kleurV = $vergelijking->kleur;
|
||||
$this->scores[$i]->disabledV = $vergelijking->disabled;
|
||||
|
||||
@@ -10,6 +10,9 @@ class Swvscores
|
||||
private $scores;
|
||||
private $metingen;
|
||||
private $ambities;
|
||||
private $orgversieid;
|
||||
private $orgid;
|
||||
private $vorm;
|
||||
|
||||
|
||||
public function __construct( $orgversieid, $orgid, $vorm)
|
||||
|
||||
@@ -9,6 +9,15 @@ class Userlijsten
|
||||
private $lijsten = [];
|
||||
private $nieuwste = 0;
|
||||
private $nieuwsteversie;
|
||||
private $orguserid;
|
||||
private $orgid;
|
||||
private $orgversies;
|
||||
private $versienaam;
|
||||
private $organisatie;
|
||||
private $individueel;
|
||||
private $results;
|
||||
private $scores;
|
||||
private $vergelijkingen;
|
||||
|
||||
public function getLijsten(){
|
||||
return $this->lijsten;
|
||||
@@ -94,6 +103,7 @@ class Userlijsten
|
||||
if( (!isset($this->vergelijkingen) ||! $this->vergelijkingen )) return;
|
||||
|
||||
foreach($this->vergelijkingen['scores'] AS $i =>$vergelijking){
|
||||
if (!isset($this->scores[$i])) $this->scores[$i] = new stdClass(); // PHP 8: no auto-vivification of objects
|
||||
$this->scores[$i]->gemV = $vergelijking->gem;
|
||||
$this->scores[$i]->kleurV = $vergelijking->kleur;
|
||||
$this->scores[$i]->disabledV = $vergelijking->disabled;
|
||||
|
||||
@@ -19,6 +19,8 @@ class Vergelijkbareversies
|
||||
private $periode;
|
||||
private $specificaties = [];
|
||||
private $filledids;
|
||||
private $orgid;
|
||||
private $modulenr;
|
||||
|
||||
|
||||
public function getSeries(){
|
||||
|
||||
@@ -46,6 +46,9 @@ class DivMonitor
|
||||
private $criteriumdq;
|
||||
private $beschikbaar = 'F';
|
||||
private $monitor;
|
||||
private $schooljaarnr;
|
||||
private $criteriumid;
|
||||
private $module;
|
||||
|
||||
|
||||
|
||||
@@ -88,6 +91,7 @@ class DivMonitor
|
||||
$this->normaantallen = $normaantallen;
|
||||
}
|
||||
else{
|
||||
$this->normaantallen = new stdClass();
|
||||
$this->normaantallen->groep12 = $this->groep12;
|
||||
$this->normaantallen->groep38 = $this->groep38;
|
||||
}
|
||||
|
||||
@@ -14,10 +14,12 @@ class IngedeeldeScholen
|
||||
private $schoollabel;
|
||||
private $schoollabels =[];
|
||||
private $verschil;
|
||||
private $criteriumid;
|
||||
private $module;
|
||||
|
||||
public function __construct($criteriumid, $module){
|
||||
$this->CI =& get_instance();
|
||||
$this->criteriumid = $criteriumid;
|
||||
$this->criteriumid = ($criteriumid === '') ? 0 : $criteriumid; // PHP 8: '' == 0 is false, keep PHP 7 behaviour
|
||||
$this->module = $module;
|
||||
$this->handle();
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ class Partituur_home {
|
||||
*/
|
||||
|
||||
var $tokensecret;
|
||||
var $ci;
|
||||
|
||||
function __construct(){
|
||||
|
||||
|
||||
@@ -133,14 +133,14 @@ class Phantom2_model extends CI_Model{
|
||||
if(!$margins){
|
||||
return $this->margins;
|
||||
}elseif(!is_array($margins)){
|
||||
$margins = str_replace('cm', $margins);
|
||||
$margins = str_replace('cm', '', $margins);
|
||||
|
||||
if(!is_numeric($margins)) return $this->margins;
|
||||
|
||||
return array($margins.'cm',$margins.'cm',$margins.'cm',$margins.'cm');
|
||||
}elseif(count($margins)==2){
|
||||
$margin1 = str_replace('cm', $margins[0]);
|
||||
$margin2 = str_replace('cm', $margins[1]);
|
||||
$margin1 = str_replace('cm', '', $margins[0]);
|
||||
$margin2 = str_replace('cm', '', $margins[1]);
|
||||
|
||||
if(!is_numeric($margin1) && !is_numeric($margins2)) return $this->margins;
|
||||
|
||||
|
||||
@@ -55,8 +55,8 @@ class Phantom_model extends CI_Model{
|
||||
if( $footer ) $data['footer'] = $footer;
|
||||
if( $margins ) $data['margins'] = serialize($margins);
|
||||
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
curl_setopt_array($curl, array(
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0),
|
||||
CURLOPT_RETURNTRANSFER => 1,
|
||||
CURLOPT_URL => $_ENV['printserver']. 'test/1',
|
||||
CURLOPT_POST => 1,
|
||||
@@ -100,7 +100,7 @@ class Phantom_model extends CI_Model{
|
||||
return $file;
|
||||
}
|
||||
|
||||
function create_and_get_pdf($html, $file, $header = FALSE, $footer = FALSE, $margins = array(), $orientation, $footerFirstpage=TRUE, $headerFirstpage=TRUE)
|
||||
function create_and_get_pdf($html, $file, $header, $footer, $margins, $orientation, $footerFirstpage=TRUE, $headerFirstpage=TRUE)
|
||||
{
|
||||
//margins [left, right, top, bottom, height header]
|
||||
if ( ! is_array( $margins ) ) $margins = array();
|
||||
|
||||
@@ -28,7 +28,7 @@ class Modfases extends MY_Model{
|
||||
ORDER BY volgorde";
|
||||
$res = $this->get_query_result();
|
||||
$onb = (object) array("naam"=>"onbekend", "kleur"=>"#989898");
|
||||
array_unshift($res,$onb );
|
||||
if (is_array($res)) array_unshift($res,$onb );
|
||||
return $res;
|
||||
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ class ModPartActKosten extends MY_Model{
|
||||
FROM tbPartActKosten
|
||||
WHERE id = $kostID" ;
|
||||
$results = $this->get_query_row();
|
||||
if (! $results) $results = new stdClass();
|
||||
$results->kosten = mysql2bedrag($results->kosten);
|
||||
return $results;
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ class Mutatielog_model extends MY_Model{
|
||||
function store_mutatie($mutatie){
|
||||
$sql = "
|
||||
INSERT INTO replicatie.replicatielog (replicatie_data, creation_date, created_by, last_update_date, last_updated_by)
|
||||
VALUES('".mysql_real_escape_string(serialize($mutatie))."', NOW(), 'cron', NOW(), 'cron')";
|
||||
VALUES('".$this->db->escape_str(serialize($mutatie))."', NOW(), 'cron', NOW(), 'cron')";
|
||||
$this->db->query($sql);
|
||||
}
|
||||
|
||||
|
||||
@@ -132,14 +132,14 @@ class Phantom_model extends CI_Model{
|
||||
if(!$margins){
|
||||
return $this->margins;
|
||||
}elseif(!is_array($margins)){
|
||||
$margins = str_replace('cm', $margins);
|
||||
$margins = str_replace('cm', '', $margins);
|
||||
|
||||
if(!is_numeric($margins)) return $this->margins;
|
||||
|
||||
return array($margins.'cm',$margins.'cm',$margins.'cm',$margins.'cm');
|
||||
}elseif(count($margins)==2){
|
||||
$margin1 = str_replace('cm', $margins[0]);
|
||||
$margin2 = str_replace('cm', $margins[1]);
|
||||
$margin1 = str_replace('cm', '', $margins[0]);
|
||||
$margin2 = str_replace('cm', '', $margins[1]);
|
||||
|
||||
if(!is_numeric($margin1) && !is_numeric($margins2)) return $this->margins;
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@ class Diversiteits_model extends MY_Model{
|
||||
$school->oov = round(($aantalmetvraag / $school->aantallln) * 100);
|
||||
$school->cat1 =$school->aantallln - $aantalmetvraag;
|
||||
$school->tgd = round($schooltgd + $school->cat1);
|
||||
$school->dq = round(($school->tgd / $normtot) * 100) / 100;
|
||||
$school->dq = ($normtot != 0) ? round(($school->tgd / $normtot) * 100) / 100 : 0;
|
||||
$bggem->cat1 = $bggem->cat1 + $school->cat1;
|
||||
$bggem->oov = $bggem->oov + $school->oov;
|
||||
$bggem->tgd = $bggem->tgd + $school->tgd ;
|
||||
@@ -308,7 +308,7 @@ class Diversiteits_model extends MY_Model{
|
||||
|
||||
};
|
||||
$groep->diversiteit = ($groep->som5 * 2) + ($groep->som6 * 3) + ($groep->som7 * 4) +($groep ->som8 * 5);
|
||||
$groep->groepdq = round($groep->diversiteit/$groep->normaantal);
|
||||
$groep->groepdq = ($groep->normaantal != 0) ? round($groep->diversiteit/$groep->normaantal) : 0;
|
||||
$normtot = $normtot + $groep->normaantal;
|
||||
$somschooldq = $somschooldq + $groep->groepdq;
|
||||
}
|
||||
@@ -351,7 +351,7 @@ class Diversiteits_model extends MY_Model{
|
||||
|
||||
if ($school->aantallln > 0) {
|
||||
$school->tgd = round($schooltgd);
|
||||
$school->dq = round(($school->tgd / $school->normaantal) * 100) / 100;
|
||||
$school->dq = ($school->normaantal != 0) ? round(($school->tgd / $school->normaantal) * 100) / 100 : 0;
|
||||
$bggem->tgd = $bggem->tgd + $school->tgd ;
|
||||
$bggem->dq= $bggem->dq + $school->dq;
|
||||
$usedaantalscholen ++;
|
||||
|
||||
@@ -230,6 +230,7 @@ class Maakinhoudnieuw_model extends MY_Model{
|
||||
function setVersie($orgversieid){
|
||||
$orgversie = $this->Orgversies_model->get_record_by_id($orgversieid);
|
||||
$versie = $this->Versies_model ->get_record_by_id($orgversie->versie_id);
|
||||
if (! $versie) $versie = new stdClass();
|
||||
$versie->naam = $versie->naam . ', periode: ' . $orgversie->periodenummer . ': ' . $orgversie->geldigvanaf . ' - ' . $orgversie->geldigtm;
|
||||
return $versie;
|
||||
}
|
||||
|
||||
@@ -311,7 +311,7 @@ class Sopinhouden_model extends MY_Model{
|
||||
|
||||
$factor =$normaantallen->groep38;
|
||||
if (strpos($groep->niveau,'1') !== false || strpos($groep->niveau,'2') !== false) {$factor = $normaantallen->groep12;};
|
||||
$groep->dq= round(($groep->diversiteit / $factor),2);
|
||||
$groep->dq= ($factor != 0) ? round(($groep->diversiteit / $factor),2) : 0;
|
||||
$totaal = $totaal + $groep->totaantal;
|
||||
$hoeveelgroepen = $hoeveelgroepen + 1;
|
||||
if (strpos($groep->niveau, ';') > 0){$combi = $combi + 1;}
|
||||
@@ -432,7 +432,7 @@ class Sopinhouden_model extends MY_Model{
|
||||
if (strpos($groep->niveau,';') >0) {$groep->diversiteit = $groep->diversiteit + 1.5;};
|
||||
$factor =$normaantallen->groep38;
|
||||
if (strpos($groep->niveau,'1') > 0 || strpos($groep->niveau,'2') > 0) {$factor = $normaantallen->groep12;};
|
||||
$groep->dq= round(($groep->diversiteit / $factor),2);
|
||||
$groep->dq= ($factor != 0) ? round(($groep->diversiteit / $factor),2) : 0;
|
||||
$som1= $som1 + $groep->som1;
|
||||
$som2= $som2 + $groep->som2;
|
||||
$som3= $som3 + $groep->som3;
|
||||
@@ -734,7 +734,7 @@ class Sopinhouden_model extends MY_Model{
|
||||
$score->disablenvt = 'F';
|
||||
if($score->aantalvier > 0 && $score->aantalvier == $score->aantalnvt) $score->disablenvt = 'T';
|
||||
if($score->disabled == 'F' && $score->disablenvt == 'F') {
|
||||
$score->gem = $score->somscore / $score->num;
|
||||
$score->gem = ($score->num != 0) ? $score->somscore / $score->num : 0;
|
||||
$score->colorcode = $this->kleurcodes->getkleur($score->gem);
|
||||
$som = $som + $score->gem;
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ class Organisaties_model extends MY_Model{
|
||||
AND actief = 1";
|
||||
return $this->get_query_row();
|
||||
}
|
||||
function checkbrin($orgid=false, $brin){
|
||||
function checkbrin($orgid, $brin){
|
||||
$this->sql =" SELECT COUNT(id) as aantal
|
||||
FROM tb_organisaties
|
||||
WHERE lower(brin) = lower('{$brin}')";
|
||||
@@ -559,7 +559,7 @@ class Organisaties_model extends MY_Model{
|
||||
return $lijst;
|
||||
}
|
||||
|
||||
function getKleurcodesOrg($clusterid = FALSE, $swvid){
|
||||
function getKleurcodesOrg($clusterid, $swvid){
|
||||
if (! $clusterid) $clusterid = 0;
|
||||
$sql = " SELECT *
|
||||
FROM tb_kleurcodes KC
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
|
||||
@@ -7,37 +7,51 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
<title>404 Page Not Found</title>
|
||||
<style type="text/css">
|
||||
|
||||
::selection { background-color: #E13300; color: white; }
|
||||
::-moz-selection { background-color: #E13300; color: white; }
|
||||
::selection { background-color: #f07746; color: #fff; }
|
||||
::-moz-selection { background-color: #f07746; color: #fff; }
|
||||
|
||||
body {
|
||||
background-color: #fff;
|
||||
margin: 40px;
|
||||
font: 13px/20px normal Helvetica, Arial, sans-serif;
|
||||
color: #4F5155;
|
||||
margin: 40px auto;
|
||||
max-width: 1024px;
|
||||
font: 16px/24px normal "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #003399;
|
||||
color: #dd4814;
|
||||
background-color: transparent;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #97310e;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #444;
|
||||
background-color: transparent;
|
||||
border-bottom: 1px solid #D0D0D0;
|
||||
font-size: 19px;
|
||||
font-weight: normal;
|
||||
color: #fff;
|
||||
background-color: #dd4814;
|
||||
border-bottom: 1px solid #d0d0d0;
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
margin: 0 0 14px 0;
|
||||
padding: 14px 15px 10px 15px;
|
||||
padding: 5px 15px;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color:#404040;
|
||||
margin:0;
|
||||
padding:0 0 10px 0;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: Consolas, Monaco, Courier New, Courier, monospace;
|
||||
font-size: 12px;
|
||||
background-color: #f9f9f9;
|
||||
border: 1px solid #D0D0D0;
|
||||
font-size: 13px;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #e3e3e3;
|
||||
border-radius: 4px;
|
||||
color: #002166;
|
||||
display: block;
|
||||
margin: 14px 0 14px 0;
|
||||
@@ -46,19 +60,28 @@ code {
|
||||
|
||||
#container {
|
||||
margin: 10px;
|
||||
border: 1px solid #D0D0D0;
|
||||
box-shadow: 0 0 8px #D0D0D0;
|
||||
border: 1px solid #d0d0d0;
|
||||
box-shadow: 0 0 8px #d0d0d0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 12px 15px 12px 15px;
|
||||
margin: 0 0 10px;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
#body {
|
||||
margin: 0 15px 0 15px;
|
||||
min-height: 96px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<h1><?php echo $heading; ?></h1>
|
||||
<div id="body">
|
||||
<?php echo $message; ?>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -7,37 +7,51 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
<title>Database Error</title>
|
||||
<style type="text/css">
|
||||
|
||||
::selection { background-color: #E13300; color: white; }
|
||||
::-moz-selection { background-color: #E13300; color: white; }
|
||||
::selection { background-color: #f07746; color: #fff; }
|
||||
::-moz-selection { background-color: #f07746; color: #fff; }
|
||||
|
||||
body {
|
||||
background-color: #fff;
|
||||
margin: 40px;
|
||||
font: 13px/20px normal Helvetica, Arial, sans-serif;
|
||||
color: #4F5155;
|
||||
margin: 40px auto;
|
||||
max-width: 1024px;
|
||||
font: 16px/24px normal "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #003399;
|
||||
color: #dd4814;
|
||||
background-color: transparent;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #97310e;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #444;
|
||||
background-color: transparent;
|
||||
border-bottom: 1px solid #D0D0D0;
|
||||
font-size: 19px;
|
||||
font-weight: normal;
|
||||
color: #fff;
|
||||
background-color: #dd4814;
|
||||
border-bottom: 1px solid #d0d0d0;
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
margin: 0 0 14px 0;
|
||||
padding: 14px 15px 10px 15px;
|
||||
padding: 5px 15px;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color:#404040;
|
||||
margin:0;
|
||||
padding:0 0 10px 0;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: Consolas, Monaco, Courier New, Courier, monospace;
|
||||
font-size: 12px;
|
||||
background-color: #f9f9f9;
|
||||
border: 1px solid #D0D0D0;
|
||||
font-size: 13px;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #e3e3e3;
|
||||
border-radius: 4px;
|
||||
color: #002166;
|
||||
display: block;
|
||||
margin: 14px 0 14px 0;
|
||||
@@ -46,19 +60,28 @@ code {
|
||||
|
||||
#container {
|
||||
margin: 10px;
|
||||
border: 1px solid #D0D0D0;
|
||||
box-shadow: 0 0 8px #D0D0D0;
|
||||
border: 1px solid #d0d0d0;
|
||||
box-shadow: 0 0 8px #d0d0d0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 12px 15px 12px 15px;
|
||||
margin: 0 0 10px;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
#body {
|
||||
margin: 0 15px 0 15px;
|
||||
min-height: 96px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<h1><?php echo $heading; ?></h1>
|
||||
<div id="body">
|
||||
<?php echo $message; ?>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
?>
|
||||
|
||||
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
|
||||
<div style="border:1px solid #dd4814;padding-left:20px;margin:10px 0;">
|
||||
|
||||
<h4>An uncaught Exception was encountered</h4>
|
||||
|
||||
|
||||
@@ -7,37 +7,51 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
<title>Error</title>
|
||||
<style type="text/css">
|
||||
|
||||
::selection { background-color: #E13300; color: white; }
|
||||
::-moz-selection { background-color: #E13300; color: white; }
|
||||
::selection { background-color: #f07746; color: #fff; }
|
||||
::-moz-selection { background-color: #f07746; color: #fff; }
|
||||
|
||||
body {
|
||||
background-color: #fff;
|
||||
margin: 40px;
|
||||
font: 13px/20px normal Helvetica, Arial, sans-serif;
|
||||
color: #4F5155;
|
||||
margin: 40px auto;
|
||||
max-width: 1024px;
|
||||
font: 16px/24px normal "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
color: #808080;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #003399;
|
||||
color: #dd4814;
|
||||
background-color: transparent;
|
||||
font-weight: normal;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #97310e;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #444;
|
||||
background-color: transparent;
|
||||
border-bottom: 1px solid #D0D0D0;
|
||||
font-size: 19px;
|
||||
font-weight: normal;
|
||||
color: #fff;
|
||||
background-color: #dd4814;
|
||||
border-bottom: 1px solid #d0d0d0;
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
margin: 0 0 14px 0;
|
||||
padding: 14px 15px 10px 15px;
|
||||
padding: 5px 15px;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color:#404040;
|
||||
margin:0;
|
||||
padding:0 0 10px 0;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: Consolas, Monaco, Courier New, Courier, monospace;
|
||||
font-size: 12px;
|
||||
background-color: #f9f9f9;
|
||||
border: 1px solid #D0D0D0;
|
||||
font-size: 13px;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #e3e3e3;
|
||||
border-radius: 4px;
|
||||
color: #002166;
|
||||
display: block;
|
||||
margin: 14px 0 14px 0;
|
||||
@@ -46,19 +60,28 @@ code {
|
||||
|
||||
#container {
|
||||
margin: 10px;
|
||||
border: 1px solid #D0D0D0;
|
||||
box-shadow: 0 0 8px #D0D0D0;
|
||||
border: 1px solid #d0d0d0;
|
||||
box-shadow: 0 0 8px #d0d0d0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 12px 15px 12px 15px;
|
||||
margin: 0 0 10px;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
#body {
|
||||
margin: 0 15px 0 15px;
|
||||
min-height: 96px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<h1><?php echo $heading; ?></h1>
|
||||
<div id="body">
|
||||
<?php echo $message; ?>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
?>
|
||||
|
||||
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
|
||||
<div style="border:1px solid #dd4814;padding-left:20px;margin:10px 0;">
|
||||
|
||||
<h4>A PHP Error was encountered</h4>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
for($i = 0; $i < count($data['subsoorten']); $i++ ){
|
||||
for($i = 0; $i < ($data['subsoorten'] ? count($data['subsoorten']) : 0); $i++ ){
|
||||
if($data['subsoorten'][$i]->categorie == "BASIS"):
|
||||
if(($i == 0) || ($i != 0 && $data['subsoorten'][$i]->soort != $data['subsoorten'][$i-1]->soort)): ?>
|
||||
<tr style=" background-color: #AF62A3 !important;">
|
||||
@@ -86,7 +86,7 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
for($i = 0; $i < count($data['subsoorten']); $i++ ){
|
||||
for($i = 0; $i < ($data['subsoorten'] ? count($data['subsoorten']) : 0); $i++ ){
|
||||
if($data['subsoorten'][$i]->categorie == "EXTRA"):?>
|
||||
<tr style="font-weight:normal; background-color:#d7d8d7 !important">
|
||||
<td style="padding-right: 3px; padding-left: 3px; border-right:1px solid #ffffff"><?php echo $data['subsoorten'][$i]->subsoort?></td>
|
||||
|
||||
@@ -45,25 +45,25 @@
|
||||
<tr style="border-bottom: 1px solid #f2f2f2">
|
||||
<td> Aantal leerlingen categorie 1</td>
|
||||
<td style="text-align: right" ><?=$schoolsom1?></td>
|
||||
<td style="text-align: right"><?=round(($schoolsom1/$schooltotaal) * 100).'%'?></td>
|
||||
<td style="text-align: right"><?=($schooltotaal ? round(($schoolsom1/$schooltotaal) * 100) : 0).'%'?></td>
|
||||
<td style="text-align: right"><?=$richtlijn[0]?></td>
|
||||
</tr>
|
||||
<tr style="border-bottom: 1px solid #f2f2f2">
|
||||
<td> Aantal leerlingen categorie 2</td>
|
||||
<td style="text-align: right" ><?=$schoolsom2?></td>
|
||||
<td style="text-align: right" ><?=round(($schoolsom2/$schooltotaal) * 100).'%' ?></td>
|
||||
<td style="text-align: right" ><?=($schooltotaal ? round(($schoolsom2/$schooltotaal) * 100) : 0).'%' ?></td>
|
||||
<td style="text-align: right"><?=$richtlijn[1]?></td>
|
||||
</tr>
|
||||
<tr style="border-bottom: 1px solid #f2f2f2">
|
||||
<td> Aantal leerlingen categorie 3</td>
|
||||
<td style="text-align: right" ><?=$schoolsom3?></td>
|
||||
<td style="text-align: right" ><?=round(($schoolsom3/$schooltotaal) * 100).'%' ?></td>
|
||||
<td style="text-align: right" ><?=($schooltotaal ? round(($schoolsom3/$schooltotaal) * 100) : 0).'%' ?></td>
|
||||
<td style="text-align: right"><?=$richtlijn[2]?></td>
|
||||
</tr>
|
||||
<tr style="border-bottom: 1px solid #f2f2f2">
|
||||
<td> Aantal leerlingen categorie 4</td>
|
||||
<td style="text-align: right"><?=$schoolsom4?></td>
|
||||
<td style="text-align: right" ><?=round(($schoolsom4/$schooltotaal) * 100).'%' ?></td>
|
||||
<td style="text-align: right" ><?=($schooltotaal ? round(($schoolsom4/$schooltotaal) * 100) : 0).'%' ?></td>
|
||||
<td style="text-align: right"><?=$richtlijn[3]?></td>
|
||||
</tr>s
|
||||
<tr style="border-bottom: 1px solid #f2f2f2">
|
||||
|
||||
@@ -42,22 +42,22 @@
|
||||
<tr style="border-bottom: 1px solid #f2f2f2">
|
||||
<td> Aantal leerlingen SBO</td>
|
||||
<td style="text-align: right" ><?=$schoolsom5?></td>
|
||||
<td style="text-align: right"><?=round(($schoolsom5/$schooltotaal) * 100).'%'?></td>
|
||||
<td style="text-align: right"><?=($schooltotaal ? round(($schoolsom5/$schooltotaal) * 100) : 0).'%'?></td>
|
||||
</tr>
|
||||
<tr style="border-bottom: 1px solid #f2f2f2">
|
||||
<td> Aantal leerlingen TLV SO-1</td>
|
||||
<td style="text-align: right" ><?=$schoolsom6?></td>
|
||||
<td style="text-align: right" ><?=round(($schoolsom6/$schooltotaal) * 100).'%' ?></td>
|
||||
<td style="text-align: right" ><?=($schooltotaal ? round(($schoolsom6/$schooltotaal) * 100) : 0).'%' ?></td>
|
||||
</tr>
|
||||
<tr style="border-bottom: 1px solid #f2f2f2">
|
||||
<td> Aantal leerlingen TLV SO-2</td>
|
||||
<td style="text-align: right" ><?=$schoolsom7?></td>
|
||||
<td style="text-align: right" ><?=round(($schoolsom7/$schooltotaal) * 100).'%' ?></td>
|
||||
<td style="text-align: right" ><?=($schooltotaal ? round(($schoolsom7/$schooltotaal) * 100) : 0).'%' ?></td>
|
||||
</tr>
|
||||
<tr style="border-bottom: 1px solid #f2f2f2">
|
||||
<td> Aantal leerlingen TLV SO-3</td>
|
||||
<td style="text-align: right"><?=$schoolsom8?></td>
|
||||
<td style="text-align: right" ><?=round(($schoolsom8/$schooltotaal) * 100).'%' ?></td>
|
||||
<td style="text-align: right" ><?=($schooltotaal ? round(($schoolsom8/$schooltotaal) * 100) : 0).'%' ?></td>
|
||||
</tr>s
|
||||
<tr style="border-bottom: 1px solid #f2f2f2">
|
||||
<td> Totaal gewogen diversiteit</td>
|
||||
|
||||
@@ -38,13 +38,13 @@
|
||||
|
||||
|
||||
<tr style="background-color: #f2f2f2">
|
||||
<td colspan=<?php echo count($data['groepen']) + 2; ?> >
|
||||
<td colspan=<?php echo ($data['groepen'] ? count($data['groepen']) : 0) + 2; ?> >
|
||||
<i>Uitsplitsing onderwijsvraag per groep</i>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr style="background-color:#6F0B3D ; color:#ffffff;">
|
||||
<td colspan=<?php echo count($data['groepen']) + 2; ?> >Basisondersteuning</td>
|
||||
<td colspan=<?php echo ($data['groepen'] ? count($data['groepen']) : 0) + 2; ?> >Basisondersteuning</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
@@ -61,7 +61,7 @@
|
||||
</tr>
|
||||
|
||||
<tr style="background-color:#6F0B3D ; color:#ffffff;">
|
||||
<td colspan=<?php echo count($data['groepen']) + 2; ?>>Basisondersteuning-plus</td>
|
||||
<td colspan=<?php echo ($data['groepen'] ? count($data['groepen']) : 0) + 2; ?>>Basisondersteuning-plus</td>
|
||||
</tr>
|
||||
|
||||
<?php if($data['osvormen']){
|
||||
@@ -92,7 +92,7 @@
|
||||
</tr>
|
||||
|
||||
<tr style="background-color:#6F0B3D ; color:#ffffff;">
|
||||
<td colspan=<?php echo count($data['groepen']) + 2; ?> >Extra ondersteuning</td>
|
||||
<td colspan=<?php echo ($data['groepen'] ? count($data['groepen']) : 0) + 2; ?> >Extra ondersteuning</td>
|
||||
</tr>
|
||||
<?php foreach($data['osvormen'] as $osvorm){
|
||||
if ($osvorm->nivo ==3){?>
|
||||
@@ -121,7 +121,7 @@
|
||||
|
||||
|
||||
<tr style="background-color:#6F0B3D ; color:#ffffff;">
|
||||
<td colspan=<?php echo count($data['groepen']) + 2; ?> >Extra ondersteuning-plus</td>
|
||||
<td colspan=<?php echo ($data['groepen'] ? count($data['groepen']) : 0) + 2; ?> >Extra ondersteuning-plus</td>
|
||||
</tr>
|
||||
<?php foreach($data['osvormen'] as $osvorm){
|
||||
if ($osvorm->nivo ==4){?>
|
||||
|
||||
@@ -39,13 +39,13 @@
|
||||
|
||||
|
||||
<tr style="background-color: #f2f2f2">
|
||||
<td colspan=<?php echo count($data['groepen']) + 2; ?> >
|
||||
<td colspan=<?php echo ($data['groepen'] ? count($data['groepen']) : 0) + 2; ?> >
|
||||
<i>Uitsplitsing onderwijsvraag per groep</i>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr style="background-color:#6F0B3D ; color:#ffffff;">
|
||||
<td colspan=<?php echo count($data['groepen']) + 2; ?>>TLV-SBO</td>
|
||||
<td colspan=<?php echo ($data['groepen'] ? count($data['groepen']) : 0) + 2; ?>>TLV-SBO</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
@@ -77,7 +77,7 @@
|
||||
</tr>
|
||||
|
||||
<tr style="background-color:#6F0B3D ; color:#ffffff;">
|
||||
<td colspan=<?php echo count($data['groepen']) + 2; ?> >TLV-SO1</td>
|
||||
<td colspan=<?php echo ($data['groepen'] ? count($data['groepen']) : 0) + 2; ?> >TLV-SO1</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
@@ -111,7 +111,7 @@
|
||||
|
||||
|
||||
<tr style="background-color:#6F0B3D ; color:#ffffff;">
|
||||
<td colspan=<?php echo count($data['groepen']) + 2; ?> >TLV-SO2</td>
|
||||
<td colspan=<?php echo ($data['groepen'] ? count($data['groepen']) : 0) + 2; ?> >TLV-SO2</td>
|
||||
</tr>
|
||||
<?php if($data['osvormen']){
|
||||
foreach($data['osvormen'] as $osvorm){
|
||||
@@ -140,7 +140,7 @@
|
||||
</tr>
|
||||
|
||||
<tr style="background-color:#6F0B3D ; color:#ffffff;">
|
||||
<td colspan=<?php echo count($data['groepen']) + 2; ?> >TLV-SO3</td>
|
||||
<td colspan=<?php echo ($data['groepen'] ? count($data['groepen']) : 0) + 2; ?> >TLV-SO3</td>
|
||||
</tr>
|
||||
<?php if($data['osvormen']){
|
||||
foreach($data['osvormen'] as $osvorm){
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
"source": "https://github.com/bcit-ci/CodeIgniter"
|
||||
},
|
||||
"require": {
|
||||
"php": "7.4.33",
|
||||
"php": "^7.4 || ^8.0",
|
||||
"sonata-project/google-authenticator": "^2.0",
|
||||
"mailgun/mailgun-php": "^3.5",
|
||||
"kriswallsmith/buzz": "^1.2",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -47,7 +48,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Libraries
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/benchmark.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/benchmark.html
|
||||
*/
|
||||
class CI_Benchmark {
|
||||
|
||||
|
||||
+23
-73
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -46,7 +47,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage CodeIgniter
|
||||
* @category Front-controller
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/
|
||||
* @link https://codeigniter.com/userguide3/
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -55,7 +56,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @var string
|
||||
*
|
||||
*/
|
||||
const CI_VERSION = '3.1.11';
|
||||
const CI_VERSION = '3.4.5';
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
@@ -79,57 +80,6 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
*/
|
||||
require_once(BASEPATH.'core/Common.php');
|
||||
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
* Security procedures
|
||||
* ------------------------------------------------------
|
||||
*/
|
||||
|
||||
if ( ! is_php('5.4'))
|
||||
{
|
||||
ini_set('magic_quotes_runtime', 0);
|
||||
|
||||
if ((bool) ini_get('register_globals'))
|
||||
{
|
||||
$_protected = array(
|
||||
'_SERVER',
|
||||
'_GET',
|
||||
'_POST',
|
||||
'_FILES',
|
||||
'_REQUEST',
|
||||
'_SESSION',
|
||||
'_ENV',
|
||||
'_COOKIE',
|
||||
'GLOBALS',
|
||||
'HTTP_RAW_POST_DATA',
|
||||
'system_path',
|
||||
'application_folder',
|
||||
'view_folder',
|
||||
'_protected',
|
||||
'_registered'
|
||||
);
|
||||
|
||||
$_registered = ini_get('variables_order');
|
||||
foreach (array('E' => '_ENV', 'G' => '_GET', 'P' => '_POST', 'C' => '_COOKIE', 'S' => '_SERVER') as $key => $superglobal)
|
||||
{
|
||||
if (strpos($_registered, $key) === FALSE)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach (array_keys($$superglobal) as $var)
|
||||
{
|
||||
if (isset($GLOBALS[$var]) && ! in_array($var, $_protected, TRUE))
|
||||
{
|
||||
$GLOBALS[$var] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
* Define a custom error handler so we can log PHP errors
|
||||
@@ -192,20 +142,6 @@ if ( ! is_php('5.4'))
|
||||
$BM->mark('total_execution_time_start');
|
||||
$BM->mark('loading_time:_base_classes_start');
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
* Instantiate the hooks class
|
||||
* ------------------------------------------------------
|
||||
*/
|
||||
$EXT =& load_class('Hooks', 'core');
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
* Is there a "pre_system" hook?
|
||||
* ------------------------------------------------------
|
||||
*/
|
||||
$EXT->call_hook('pre_system');
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
* Instantiate the config class
|
||||
@@ -227,6 +163,20 @@ if ( ! is_php('5.4'))
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
* Instantiate the hooks class
|
||||
* ------------------------------------------------------
|
||||
*/
|
||||
$EXT =& load_class('Hooks', 'core', $CFG);
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
* Is there a "pre_system" hook?
|
||||
* ------------------------------------------------------
|
||||
*/
|
||||
$EXT->call_hook('pre_system');
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
* Important charset-related stuff
|
||||
@@ -294,14 +244,14 @@ if ( ! is_php('5.4'))
|
||||
* Instantiate the UTF-8 class
|
||||
* ------------------------------------------------------
|
||||
*/
|
||||
$UNI =& load_class('Utf8', 'core');
|
||||
$UNI =& load_class('Utf8', 'core', $charset);
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
* Instantiate the URI class
|
||||
* ------------------------------------------------------
|
||||
*/
|
||||
$URI =& load_class('URI', 'core');
|
||||
$URI =& load_class('URI', 'core', $CFG);
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
@@ -332,14 +282,14 @@ if ( ! is_php('5.4'))
|
||||
* Load the security class for xss and csrf support
|
||||
* -----------------------------------------------------
|
||||
*/
|
||||
$SEC =& load_class('Security', 'core');
|
||||
$SEC =& load_class('Security', 'core', $charset);
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
* Load the Input class and sanitize globals
|
||||
* ------------------------------------------------------
|
||||
*/
|
||||
$IN =& load_class('Input', 'core');
|
||||
$IN =& load_class('Input', 'core', $SEC);
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------
|
||||
@@ -434,7 +384,7 @@ if ( ! is_php('5.4'))
|
||||
* ReflectionMethod::isConstructor() is the ONLY reliable check,
|
||||
* knowing which method will be executed as a constructor.
|
||||
*/
|
||||
elseif ( ! is_callable(array($class, $method)))
|
||||
else
|
||||
{
|
||||
$reflection = new ReflectionMethod($class, $method);
|
||||
if ( ! $reflection->isPublic() OR $reflection->isConstructor())
|
||||
|
||||
+16
-12
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -46,7 +47,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage CodeIgniter
|
||||
* @category Common Functions
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/
|
||||
* @link https://codeigniter.com/userguide3/
|
||||
*/
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
@@ -81,8 +82,7 @@ if ( ! function_exists('is_really_writable'))
|
||||
* Tests for file writability
|
||||
*
|
||||
* is_writable() returns TRUE on Windows servers when you really can't write to
|
||||
* the file, based on the read-only attribute. is_writable() is also unreliable
|
||||
* on Unix servers if safe_mode is on.
|
||||
* the file, based on the read-only attribute.
|
||||
*
|
||||
* @link https://bugs.php.net/bug.php?id=54709
|
||||
* @param string
|
||||
@@ -90,8 +90,8 @@ if ( ! function_exists('is_really_writable'))
|
||||
*/
|
||||
function is_really_writable($file)
|
||||
{
|
||||
// If we're on a Unix server with safe_mode off we call is_writable
|
||||
if (DIRECTORY_SEPARATOR === '/' && (is_php('5.4') OR ! ini_get('safe_mode')))
|
||||
// If we're on a UNIX-like server, just is_writable()
|
||||
if (DIRECTORY_SEPARATOR === '/')
|
||||
{
|
||||
return is_writable($file);
|
||||
}
|
||||
@@ -499,6 +499,7 @@ if ( ! function_exists('set_status_header'))
|
||||
$stati = array(
|
||||
100 => 'Continue',
|
||||
101 => 'Switching Protocols',
|
||||
103 => 'Early Hints',
|
||||
|
||||
200 => 'OK',
|
||||
201 => 'Created',
|
||||
@@ -507,6 +508,7 @@ if ( ! function_exists('set_status_header'))
|
||||
204 => 'No Content',
|
||||
205 => 'Reset Content',
|
||||
206 => 'Partial Content',
|
||||
207 => 'Multi-Status',
|
||||
|
||||
300 => 'Multiple Choices',
|
||||
301 => 'Moved Permanently',
|
||||
@@ -515,6 +517,7 @@ if ( ! function_exists('set_status_header'))
|
||||
304 => 'Not Modified',
|
||||
305 => 'Use Proxy',
|
||||
307 => 'Temporary Redirect',
|
||||
308 => 'Permanent Redirect',
|
||||
|
||||
400 => 'Bad Request',
|
||||
401 => 'Unauthorized',
|
||||
@@ -534,11 +537,13 @@ if ( ! function_exists('set_status_header'))
|
||||
415 => 'Unsupported Media Type',
|
||||
416 => 'Requested Range Not Satisfiable',
|
||||
417 => 'Expectation Failed',
|
||||
421 => 'Misdirected Request',
|
||||
422 => 'Unprocessable Entity',
|
||||
426 => 'Upgrade Required',
|
||||
428 => 'Precondition Required',
|
||||
429 => 'Too Many Requests',
|
||||
431 => 'Request Header Fields Too Large',
|
||||
451 => 'Unavailable For Legal Reasons',
|
||||
|
||||
500 => 'Internal Server Error',
|
||||
501 => 'Not Implemented',
|
||||
@@ -565,7 +570,7 @@ if ( ! function_exists('set_status_header'))
|
||||
return;
|
||||
}
|
||||
|
||||
$server_protocol = (isset($_SERVER['SERVER_PROTOCOL']) && in_array($_SERVER['SERVER_PROTOCOL'], array('HTTP/1.0', 'HTTP/1.1', 'HTTP/2'), TRUE))
|
||||
$server_protocol = (isset($_SERVER['SERVER_PROTOCOL']) && in_array($_SERVER['SERVER_PROTOCOL'], array('HTTP/1.0', 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0'), TRUE))
|
||||
? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1';
|
||||
header($server_protocol.' '.$code.' '.$text, TRUE, $code);
|
||||
}
|
||||
@@ -625,7 +630,7 @@ if ( ! function_exists('_error_handler'))
|
||||
|
||||
// If the error is fatal, the execution of the script should be stopped because
|
||||
// errors can't be recovered from. Halting the script conforms with PHP's
|
||||
// default error handling. See http://www.php.net/manual/en/errorfunc.constants.php
|
||||
// default error handling. See https://secure.php.net/manual/en/errorfunc.constants.php
|
||||
if ($is_error)
|
||||
{
|
||||
exit(1); // EXIT_ERROR
|
||||
@@ -722,7 +727,7 @@ if ( ! function_exists('remove_invisible_characters'))
|
||||
|
||||
do
|
||||
{
|
||||
$str = preg_replace($non_displayables, '', $str, -1, $count);
|
||||
$str = preg_replace($non_displayables, '', (string)$str, -1, $count);
|
||||
}
|
||||
while ($count);
|
||||
|
||||
@@ -778,11 +783,9 @@ if ( ! function_exists('_stringify_attributes'))
|
||||
*/
|
||||
function _stringify_attributes($attributes, $js = FALSE)
|
||||
{
|
||||
$atts = NULL;
|
||||
|
||||
if (empty($attributes))
|
||||
{
|
||||
return $atts;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (is_string($attributes))
|
||||
@@ -792,6 +795,7 @@ if ( ! function_exists('_stringify_attributes'))
|
||||
|
||||
$attributes = (array) $attributes;
|
||||
|
||||
$atts = '';
|
||||
foreach ($attributes as $key => $val)
|
||||
{
|
||||
$atts .= ($js) ? $key.'='.$val.',' : ' '.$key.'="'.$val.'"';
|
||||
|
||||
+18
-17
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -46,7 +47,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Libraries
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/config.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/config.html
|
||||
*/
|
||||
class CI_Config {
|
||||
|
||||
@@ -169,7 +170,7 @@ class CI_Config {
|
||||
$this->is_loaded[] = $file_path;
|
||||
$config = NULL;
|
||||
$loaded = TRUE;
|
||||
log_message('debug', 'Config file loaded: '.$file_path);
|
||||
log_message('info', 'Config file loaded: '.$file_path);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -324,6 +325,20 @@ class CI_Config {
|
||||
|
||||
// -------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* System URL
|
||||
*
|
||||
* @deprecated 3.0.0
|
||||
* @return string
|
||||
*/
|
||||
public function system_url()
|
||||
{
|
||||
$x = explode('/', preg_replace('|/*(.+?)/*$|', '\\1', BASEPATH));
|
||||
return $this->slash_item('base_url').end($x).'/';
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Build URI string
|
||||
*
|
||||
@@ -350,20 +365,6 @@ class CI_Config {
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* System URL
|
||||
*
|
||||
* @deprecated 3.0.0 Encourages insecure practices
|
||||
* @return string
|
||||
*/
|
||||
public function system_url()
|
||||
{
|
||||
$x = explode('/', preg_replace('|/*(.+?)/*$|', '\\1', BASEPATH));
|
||||
return $this->slash_item('base_url').end($x).'/';
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Set a config file item
|
||||
*
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -47,8 +48,9 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Libraries
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/general/controllers.html
|
||||
* @link https://codeigniter.com/userguide3/general/controllers.html
|
||||
*/
|
||||
#[AllowDynamicProperties]
|
||||
class CI_Controller {
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -44,7 +45,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Exceptions
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/exceptions.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/exceptions.html
|
||||
*/
|
||||
class CI_Exceptions {
|
||||
|
||||
@@ -62,9 +63,11 @@ class CI_Exceptions {
|
||||
*/
|
||||
public $levels = array(
|
||||
E_ERROR => 'Error',
|
||||
E_RECOVERABLE_ERROR => 'Recoverable Error',
|
||||
E_WARNING => 'Warning',
|
||||
E_PARSE => 'Parsing Error',
|
||||
E_NOTICE => 'Notice',
|
||||
E_DEPRECATED => 'Deprecated Notice',
|
||||
E_CORE_ERROR => 'Core Error',
|
||||
E_CORE_WARNING => 'Core Warning',
|
||||
E_COMPILE_ERROR => 'Compile Error',
|
||||
@@ -72,7 +75,12 @@ class CI_Exceptions {
|
||||
E_USER_ERROR => 'User Error',
|
||||
E_USER_WARNING => 'User Warning',
|
||||
E_USER_NOTICE => 'User Notice',
|
||||
E_STRICT => 'Runtime Notice'
|
||||
E_USER_DEPRECATED => 'User Deprecated Notice',
|
||||
|
||||
# 2048 is E_STRICT, but it's deprecated in PHP 8.4.
|
||||
# We're keeping this here for backwards compatibility.
|
||||
# If we're on older PHP, E_STRICT errors will be labelled correctly, and if we're on PHP 8.4+, this will be ignored.
|
||||
2048 => 'Strict Notice',
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -161,6 +169,10 @@ class CI_Exceptions {
|
||||
{
|
||||
$templates_path = VIEWPATH.'errors'.DIRECTORY_SEPARATOR;
|
||||
}
|
||||
else
|
||||
{
|
||||
$templates_path = rtrim($templates_path, '/\\').DIRECTORY_SEPARATOR;
|
||||
}
|
||||
|
||||
if (is_cli())
|
||||
{
|
||||
@@ -194,6 +206,10 @@ class CI_Exceptions {
|
||||
{
|
||||
$templates_path = VIEWPATH.'errors'.DIRECTORY_SEPARATOR;
|
||||
}
|
||||
else
|
||||
{
|
||||
$templates_path = rtrim($templates_path, '/\\').DIRECTORY_SEPARATOR;
|
||||
}
|
||||
|
||||
$message = $exception->getMessage();
|
||||
if (empty($message))
|
||||
@@ -240,6 +256,10 @@ class CI_Exceptions {
|
||||
{
|
||||
$templates_path = VIEWPATH.'errors'.DIRECTORY_SEPARATOR;
|
||||
}
|
||||
else
|
||||
{
|
||||
$templates_path = rtrim($templates_path, '/\\').DIRECTORY_SEPARATOR;
|
||||
}
|
||||
|
||||
$severity = isset($this->levels[$severity]) ? $this->levels[$severity] : $severity;
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -46,7 +47,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Libraries
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/general/hooks.html
|
||||
* @link https://codeigniter.com/userguide3/general/hooks.html
|
||||
*/
|
||||
class CI_Hooks {
|
||||
|
||||
@@ -83,16 +84,16 @@ class CI_Hooks {
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
* @param CI_Config $config
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
public function __construct(CI_Config $config)
|
||||
{
|
||||
$CFG =& load_class('Config', 'core');
|
||||
log_message('info', 'Hooks Class Initialized');
|
||||
|
||||
// If hooks are not enabled in the config file
|
||||
// there is nothing else to do
|
||||
if ($CFG->item('enable_hooks') === FALSE)
|
||||
if ($config->item('enable_hooks') === FALSE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
+74
-249
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -46,7 +47,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Input
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/input.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/input.html
|
||||
*/
|
||||
class CI_Input {
|
||||
|
||||
@@ -57,45 +58,6 @@ class CI_Input {
|
||||
*/
|
||||
protected $ip_address = FALSE;
|
||||
|
||||
/**
|
||||
* Allow GET array flag
|
||||
*
|
||||
* If set to FALSE, then $_GET will be set to an empty array.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $_allow_get_array = TRUE;
|
||||
|
||||
/**
|
||||
* Standardize new lines flag
|
||||
*
|
||||
* If set to TRUE, then newlines are standardized.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $_standardize_newlines;
|
||||
|
||||
/**
|
||||
* Enable XSS flag
|
||||
*
|
||||
* Determines whether the XSS filter is always active when
|
||||
* GET, POST or COOKIE data is encountered.
|
||||
* Set automatically based on config setting.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $_enable_xss = FALSE;
|
||||
|
||||
/**
|
||||
* Enable CSRF flag
|
||||
*
|
||||
* Enables a CSRF cookie token to be set.
|
||||
* Set automatically based on config setting.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $_enable_csrf = FALSE;
|
||||
|
||||
/**
|
||||
* List of all HTTP request headers
|
||||
*
|
||||
@@ -122,8 +84,15 @@ class CI_Input {
|
||||
*/
|
||||
protected $_input_stream;
|
||||
|
||||
/**
|
||||
* CI_Security instance
|
||||
*
|
||||
* Used for the optional $xss_filter parameter that most
|
||||
* getter methods have here.
|
||||
*
|
||||
* @var CI_Security
|
||||
*/
|
||||
protected $security;
|
||||
protected $uni;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
@@ -135,30 +104,9 @@ class CI_Input {
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
public function __construct(CI_Security &$security)
|
||||
{
|
||||
$this->_allow_get_array = (config_item('allow_get_array') !== FALSE);
|
||||
$this->_enable_xss = (config_item('global_xss_filtering') === TRUE);
|
||||
$this->_enable_csrf = (config_item('csrf_protection') === TRUE);
|
||||
$this->_standardize_newlines = (bool) config_item('standardize_newlines');
|
||||
|
||||
$this->security =& load_class('Security', 'core');
|
||||
|
||||
// Do we need the UTF-8 class?
|
||||
if (UTF8_ENABLED === TRUE)
|
||||
{
|
||||
$this->uni =& load_class('Utf8', 'core');
|
||||
}
|
||||
|
||||
// Sanitize global arrays
|
||||
$this->_sanitize_globals();
|
||||
|
||||
// CSRF Protection check
|
||||
if ($this->_enable_csrf === TRUE && ! is_cli())
|
||||
{
|
||||
$this->security->csrf_verify();
|
||||
}
|
||||
|
||||
$this->security = $security;
|
||||
log_message('info', 'Input Class Initialized');
|
||||
}
|
||||
|
||||
@@ -174,10 +122,8 @@ class CI_Input {
|
||||
* @param bool $xss_clean Whether to apply XSS filtering
|
||||
* @return mixed
|
||||
*/
|
||||
protected function _fetch_from_array(&$array, $index = NULL, $xss_clean = NULL)
|
||||
protected function _fetch_from_array(&$array, $index = NULL, $xss_clean = FALSE)
|
||||
{
|
||||
is_bool($xss_clean) OR $xss_clean = $this->_enable_xss;
|
||||
|
||||
// If $index is NULL, it means that the whole $array is requested
|
||||
isset($index) OR $index = array_keys($array);
|
||||
|
||||
@@ -237,7 +183,7 @@ class CI_Input {
|
||||
* @param bool $xss_clean Whether to apply XSS filtering
|
||||
* @return mixed
|
||||
*/
|
||||
public function get($index = NULL, $xss_clean = NULL)
|
||||
public function get($index = NULL, $xss_clean = FALSE)
|
||||
{
|
||||
return $this->_fetch_from_array($_GET, $index, $xss_clean);
|
||||
}
|
||||
@@ -251,7 +197,7 @@ class CI_Input {
|
||||
* @param bool $xss_clean Whether to apply XSS filtering
|
||||
* @return mixed
|
||||
*/
|
||||
public function post($index = NULL, $xss_clean = NULL)
|
||||
public function post($index = NULL, $xss_clean = FALSE)
|
||||
{
|
||||
return $this->_fetch_from_array($_POST, $index, $xss_clean);
|
||||
}
|
||||
@@ -265,11 +211,10 @@ class CI_Input {
|
||||
* @param bool $xss_clean Whether to apply XSS filtering
|
||||
* @return mixed
|
||||
*/
|
||||
public function post_get($index, $xss_clean = NULL)
|
||||
public function post_get($index, $xss_clean = FALSE)
|
||||
{
|
||||
return isset($_POST[$index])
|
||||
? $this->post($index, $xss_clean)
|
||||
: $this->get($index, $xss_clean);
|
||||
$output = $this->post($index, $xss_clean);
|
||||
return isset($output) ? $output : $this->get($index, $xss_clean);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
@@ -281,11 +226,10 @@ class CI_Input {
|
||||
* @param bool $xss_clean Whether to apply XSS filtering
|
||||
* @return mixed
|
||||
*/
|
||||
public function get_post($index, $xss_clean = NULL)
|
||||
public function get_post($index, $xss_clean = FALSE)
|
||||
{
|
||||
return isset($_GET[$index])
|
||||
? $this->get($index, $xss_clean)
|
||||
: $this->post($index, $xss_clean);
|
||||
$output = $this->get($index, $xss_clean);
|
||||
return isset($output) ? $output : $this->post($index, $xss_clean);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
@@ -297,7 +241,7 @@ class CI_Input {
|
||||
* @param bool $xss_clean Whether to apply XSS filtering
|
||||
* @return mixed
|
||||
*/
|
||||
public function cookie($index = NULL, $xss_clean = NULL)
|
||||
public function cookie($index = NULL, $xss_clean = FALSE)
|
||||
{
|
||||
return $this->_fetch_from_array($_COOKIE, $index, $xss_clean);
|
||||
}
|
||||
@@ -311,7 +255,7 @@ class CI_Input {
|
||||
* @param bool $xss_clean Whether to apply XSS filtering
|
||||
* @return mixed
|
||||
*/
|
||||
public function server($index, $xss_clean = NULL)
|
||||
public function server($index, $xss_clean = FALSE)
|
||||
{
|
||||
return $this->_fetch_from_array($_SERVER, $index, $xss_clean);
|
||||
}
|
||||
@@ -327,7 +271,7 @@ class CI_Input {
|
||||
* @param bool $xss_clean Whether to apply XSS filtering
|
||||
* @return mixed
|
||||
*/
|
||||
public function input_stream($index = NULL, $xss_clean = NULL)
|
||||
public function input_stream($index = NULL, $xss_clean = FALSE)
|
||||
{
|
||||
// Prior to PHP 5.6, the input stream can only be read once,
|
||||
// so we'll need to check if we have already done that first.
|
||||
@@ -357,14 +301,15 @@ class CI_Input {
|
||||
* @param string $prefix Cookie name prefix
|
||||
* @param bool $secure Whether to only transfer cookies via SSL
|
||||
* @param bool $httponly Whether to only makes the cookie accessible via HTTP (no javascript)
|
||||
* @param string $samesite SameSite attribute
|
||||
* @return void
|
||||
*/
|
||||
public function set_cookie($name, $value = '', $expire = '', $domain = '', $path = '/', $prefix = '', $secure = NULL, $httponly = NULL)
|
||||
public function set_cookie($name, $value = '', $expire = 0, $domain = '', $path = '/', $prefix = '', $secure = NULL, $httponly = NULL, $samesite = NULL)
|
||||
{
|
||||
if (is_array($name))
|
||||
{
|
||||
// always leave 'name' in last place, as the loop will break otherwise, due to $$item
|
||||
foreach (array('value', 'expire', 'domain', 'path', 'prefix', 'secure', 'httponly', 'name') as $item)
|
||||
foreach (array('value', 'expire', 'domain', 'path', 'prefix', 'secure', 'httponly', 'samesite', 'name') as $item)
|
||||
{
|
||||
if (isset($name[$item]))
|
||||
{
|
||||
@@ -396,16 +341,56 @@ class CI_Input {
|
||||
? (bool) config_item('cookie_httponly')
|
||||
: (bool) $httponly;
|
||||
|
||||
if ( ! is_numeric($expire))
|
||||
if ( ! is_numeric($expire) OR $expire < 0)
|
||||
{
|
||||
$expire = time() - 86500;
|
||||
$expire = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$expire = ($expire > 0) ? time() + $expire : 0;
|
||||
}
|
||||
|
||||
setcookie($prefix.$name, $value, $expire, $path, $domain, $secure, $httponly);
|
||||
isset($samesite) OR $samesite = config_item('cookie_samesite');
|
||||
if (isset($samesite))
|
||||
{
|
||||
$samesite = ucfirst(strtolower($samesite));
|
||||
in_array($samesite, array('Lax', 'Strict', 'None'), TRUE) OR $samesite = 'Lax';
|
||||
}
|
||||
else
|
||||
{
|
||||
$samesite = 'Lax';
|
||||
}
|
||||
|
||||
if ($samesite === 'None' && ! $secure)
|
||||
{
|
||||
log_message('error', $name.' cookie sent with SameSite=None, but without Secure attribute.');
|
||||
}
|
||||
|
||||
if ( ! is_php('7.3'))
|
||||
{
|
||||
$maxage = $expire - time();
|
||||
if ($maxage < 1)
|
||||
{
|
||||
$maxage = 0;
|
||||
}
|
||||
|
||||
$cookie_header = 'Set-Cookie: '.$prefix.$name.'='.rawurlencode($value);
|
||||
$cookie_header .= ($expire === 0 ? '' : '; Expires='.gmdate('D, d-M-Y H:i:s T', $expire)).'; Max-Age='.$maxage;
|
||||
$cookie_header .= '; Path='.$path.($domain !== '' ? '; Domain='.$domain : '');
|
||||
$cookie_header .= ($secure ? '; Secure' : '').($httponly ? '; HttpOnly' : '').'; SameSite='.$samesite;
|
||||
header($cookie_header);
|
||||
return;
|
||||
}
|
||||
|
||||
$setcookie_options = array(
|
||||
'expires' => $expire,
|
||||
'path' => $path,
|
||||
'domain' => $domain,
|
||||
'secure' => $secure,
|
||||
'httponly' => $httponly,
|
||||
'samesite' => $samesite,
|
||||
);
|
||||
setcookie($prefix.$name, $value, $setcookie_options);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
@@ -565,7 +550,7 @@ class CI_Input {
|
||||
$which = FILTER_FLAG_IPV6;
|
||||
break;
|
||||
default:
|
||||
$which = NULL;
|
||||
$which = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -579,174 +564,13 @@ class CI_Input {
|
||||
*
|
||||
* @return string|null User Agent string or NULL if it doesn't exist
|
||||
*/
|
||||
public function user_agent($xss_clean = NULL)
|
||||
public function user_agent($xss_clean = FALSE)
|
||||
{
|
||||
return $this->_fetch_from_array($_SERVER, 'HTTP_USER_AGENT', $xss_clean);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Sanitize Globals
|
||||
*
|
||||
* Internal method serving for the following purposes:
|
||||
*
|
||||
* - Unsets $_GET data, if query strings are not enabled
|
||||
* - Cleans POST, COOKIE and SERVER data
|
||||
* - Standardizes newline characters to PHP_EOL
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function _sanitize_globals()
|
||||
{
|
||||
// Is $_GET data allowed? If not we'll set the $_GET to an empty array
|
||||
if ($this->_allow_get_array === FALSE)
|
||||
{
|
||||
$_GET = array();
|
||||
}
|
||||
elseif (is_array($_GET))
|
||||
{
|
||||
foreach ($_GET as $key => $val)
|
||||
{
|
||||
$_GET[$this->_clean_input_keys($key)] = $this->_clean_input_data($val);
|
||||
}
|
||||
}
|
||||
|
||||
// Clean $_POST Data
|
||||
if (is_array($_POST))
|
||||
{
|
||||
foreach ($_POST as $key => $val)
|
||||
{
|
||||
$_POST[$this->_clean_input_keys($key)] = $this->_clean_input_data($val);
|
||||
}
|
||||
}
|
||||
|
||||
// Clean $_COOKIE Data
|
||||
if (is_array($_COOKIE))
|
||||
{
|
||||
// Also get rid of specially treated cookies that might be set by a server
|
||||
// or silly application, that are of no use to a CI application anyway
|
||||
// but that when present will trip our 'Disallowed Key Characters' alarm
|
||||
// http://www.ietf.org/rfc/rfc2109.txt
|
||||
// note that the key names below are single quoted strings, and are not PHP variables
|
||||
unset(
|
||||
$_COOKIE['$Version'],
|
||||
$_COOKIE['$Path'],
|
||||
$_COOKIE['$Domain']
|
||||
);
|
||||
|
||||
foreach ($_COOKIE as $key => $val)
|
||||
{
|
||||
if (($cookie_key = $this->_clean_input_keys($key)) !== FALSE)
|
||||
{
|
||||
$_COOKIE[$cookie_key] = $this->_clean_input_data($val);
|
||||
}
|
||||
else
|
||||
{
|
||||
unset($_COOKIE[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sanitize PHP_SELF
|
||||
$_SERVER['PHP_SELF'] = strip_tags($_SERVER['PHP_SELF']);
|
||||
|
||||
log_message('debug', 'Global POST, GET and COOKIE data sanitized');
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Clean Input Data
|
||||
*
|
||||
* Internal method that aids in escaping data and
|
||||
* standardizing newline characters to PHP_EOL.
|
||||
*
|
||||
* @param string|string[] $str Input string(s)
|
||||
* @return string
|
||||
*/
|
||||
protected function _clean_input_data($str)
|
||||
{
|
||||
if (is_array($str))
|
||||
{
|
||||
$new_array = array();
|
||||
foreach (array_keys($str) as $key)
|
||||
{
|
||||
$new_array[$this->_clean_input_keys($key)] = $this->_clean_input_data($str[$key]);
|
||||
}
|
||||
return $new_array;
|
||||
}
|
||||
|
||||
/* We strip slashes if magic quotes is on to keep things consistent
|
||||
|
||||
NOTE: In PHP 5.4 get_magic_quotes_gpc() will always return 0 and
|
||||
it will probably not exist in future versions at all.
|
||||
*/
|
||||
if ( ! is_php('5.4') && get_magic_quotes_gpc())
|
||||
{
|
||||
$str = stripslashes($str);
|
||||
}
|
||||
|
||||
// Clean UTF-8 if supported
|
||||
if (UTF8_ENABLED === TRUE)
|
||||
{
|
||||
$str = $this->uni->clean_string($str);
|
||||
}
|
||||
|
||||
// Remove control characters
|
||||
$str = remove_invisible_characters($str, FALSE);
|
||||
|
||||
// Standardize newlines if needed
|
||||
if ($this->_standardize_newlines === TRUE)
|
||||
{
|
||||
return preg_replace('/(?:\r\n|[\r\n])/', PHP_EOL, $str);
|
||||
}
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Clean Keys
|
||||
*
|
||||
* Internal method that helps to prevent malicious users
|
||||
* from trying to exploit keys we make sure that keys are
|
||||
* only named with alpha-numeric text and a few other items.
|
||||
*
|
||||
* @param string $str Input string
|
||||
* @param bool $fatal Whether to terminate script exection
|
||||
* or to return FALSE if an invalid
|
||||
* key is encountered
|
||||
* @return string|bool
|
||||
*/
|
||||
protected function _clean_input_keys($str, $fatal = TRUE)
|
||||
{
|
||||
if ( ! preg_match('/^[a-z0-9:_\/|-]+$/i', $str))
|
||||
{
|
||||
if ($fatal === TRUE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
set_status_header(503);
|
||||
echo 'Disallowed Key Characters.';
|
||||
exit(7); // EXIT_USER_INPUT
|
||||
}
|
||||
}
|
||||
|
||||
// Clean UTF-8 if supported
|
||||
if (UTF8_ENABLED === TRUE)
|
||||
{
|
||||
return $this->uni->clean_string($str);
|
||||
}
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Request Headers
|
||||
*
|
||||
@@ -844,6 +668,7 @@ class CI_Input {
|
||||
* Test to see if a request was made from the command line.
|
||||
*
|
||||
* @deprecated 3.0.0 Use is_cli() instead
|
||||
* @see is_cli()
|
||||
* @return bool
|
||||
*/
|
||||
public function is_cli_request()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -44,7 +45,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Language
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/language.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/language.html
|
||||
*/
|
||||
class CI_Lang {
|
||||
|
||||
@@ -189,7 +190,7 @@ class CI_Lang {
|
||||
*/
|
||||
public function line($line, $log_errors = TRUE)
|
||||
{
|
||||
$value = isset($this->language[$line]) ? $this->language[$line] : FALSE;
|
||||
$value = ($line !== NULL && isset($this->language[$line])) ? $this->language[$line] : FALSE;
|
||||
|
||||
// Because killer robots like unicorns!
|
||||
if ($value === FALSE && $log_errors === TRUE)
|
||||
|
||||
+62
-29
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -46,8 +47,9 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Loader
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/loader.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/loader.html
|
||||
*/
|
||||
#[AllowDynamicProperties]
|
||||
class CI_Loader {
|
||||
|
||||
// All these are set automatically. Don't mess with them.
|
||||
@@ -93,6 +95,13 @@ class CI_Loader {
|
||||
*/
|
||||
protected $_ci_cached_vars = array();
|
||||
|
||||
/**
|
||||
* Stack of variable arrays to provide nested _ci_load calls with all variables from parent calls
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_ci_load_vars_stack = array();
|
||||
|
||||
/**
|
||||
* List of loaded classes
|
||||
*
|
||||
@@ -348,9 +357,10 @@ class CI_Loader {
|
||||
throw new RuntimeException('Unable to locate the model you have specified: '.$model);
|
||||
}
|
||||
}
|
||||
elseif ( ! is_subclass_of($model, 'CI_Model'))
|
||||
|
||||
if ( ! is_subclass_of($model, 'CI_Model'))
|
||||
{
|
||||
throw new RuntimeException("Class ".$model." already exists and doesn't extend CI_Model");
|
||||
throw new RuntimeException("Class ".$model." doesn't extend CI_Model");
|
||||
}
|
||||
|
||||
$this->_ci_models[] = $name;
|
||||
@@ -367,19 +377,16 @@ class CI_Loader {
|
||||
*
|
||||
* @param mixed $params Database configuration options
|
||||
* @param bool $return Whether to return the database object
|
||||
* @param bool $query_builder Whether to enable Query Builder
|
||||
* (overrides the configuration setting)
|
||||
*
|
||||
* @return object|bool Database object if $return is set to TRUE,
|
||||
* FALSE on failure, CI_Loader instance in any other case
|
||||
*/
|
||||
public function database($params = '', $return = FALSE, $query_builder = NULL)
|
||||
public function database($params = '', $return = FALSE)
|
||||
{
|
||||
// Grab the super object
|
||||
$CI =& get_instance();
|
||||
|
||||
// Do we even need to load the database class?
|
||||
if ($return === FALSE && $query_builder === NULL && isset($CI->db) && is_object($CI->db) && ! empty($CI->db->conn_id))
|
||||
if ($return === FALSE && isset($CI->db) && is_object($CI->db) && ! empty($CI->db->conn_id))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -388,7 +395,7 @@ class CI_Loader {
|
||||
|
||||
if ($return === TRUE)
|
||||
{
|
||||
return DB($params, $query_builder);
|
||||
return DB($params);
|
||||
}
|
||||
|
||||
// Initialize the db variable. Needed to prevent
|
||||
@@ -396,7 +403,7 @@ class CI_Loader {
|
||||
$CI->db = '';
|
||||
|
||||
// Load the DB class
|
||||
$CI->db =& DB($params, $query_builder);
|
||||
$CI->db =& DB($params);
|
||||
return $this;
|
||||
}
|
||||
|
||||
@@ -492,7 +499,20 @@ class CI_Loader {
|
||||
*/
|
||||
public function view($view, $vars = array(), $return = FALSE)
|
||||
{
|
||||
return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_prepare_view_vars($vars), '_ci_return' => $return));
|
||||
$measure = "View - $view";
|
||||
$CI =& get_instance();
|
||||
|
||||
if (property_exists($CI, "debugbar") && $CI->debugbar) {
|
||||
$CI->debugbar["time"]->startMeasure($measure);
|
||||
}
|
||||
|
||||
$result = $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_prepare_view_vars($vars), '_ci_return' => $return));
|
||||
|
||||
if (property_exists($CI, "debugbar") && $CI->debugbar && $CI->debugbar["time"]->hasStartedMeasure($measure)) {
|
||||
$CI->debugbar["time"]->stopMeasure($measure);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
@@ -933,17 +953,38 @@ class CI_Loader {
|
||||
}
|
||||
|
||||
/*
|
||||
* Extract and cache variables
|
||||
* Extract and stack variables
|
||||
*
|
||||
* You can either set variables using the dedicated $this->load->vars()
|
||||
* function or via the second parameter of this function. We'll merge
|
||||
* the two types and cache them so that views that are embedded within
|
||||
* other views can have access to these variables.
|
||||
* the two types so that loaded views and files have access to these
|
||||
* variables.
|
||||
* Additionally we want all subsequent nested _ci_load() calls embedded
|
||||
* within the current file to 'inherit' all variables that are
|
||||
* accessible to the current file. For this purpose we push the current
|
||||
* variable configuration (_ci_vars) to the stack and remove it again
|
||||
* after the file or view is completely loaded. Nested _ci_load() calls
|
||||
* within the current file extend the stack with their variable
|
||||
* configuration.
|
||||
*/
|
||||
empty($_ci_vars) OR $this->_ci_cached_vars = array_merge($this->_ci_cached_vars, $_ci_vars);
|
||||
extract($this->_ci_cached_vars);
|
||||
|
||||
/*
|
||||
is_array($_ci_vars) OR $_ci_vars = array();
|
||||
|
||||
// Include the global cached vars into the current _ci_vars if needed
|
||||
empty($this->_ci_cached_vars) OR $_ci_vars = array_merge($this->_ci_cached_vars, $_ci_vars);
|
||||
|
||||
// Merge the last variable configuration from a parent _ci_load()
|
||||
// call into the current _ci_vars
|
||||
if ( ! empty($this->_ci_load_vars_stack))
|
||||
{
|
||||
$previous_variable_configuration = end($this->_ci_load_vars_stack);
|
||||
$_ci_vars = array_merge($previous_variable_configuration, $_ci_vars);
|
||||
}
|
||||
|
||||
array_push($this->_ci_load_vars_stack, $_ci_vars);
|
||||
extract($_ci_vars);
|
||||
|
||||
/**
|
||||
* Buffer the output
|
||||
*
|
||||
* We buffer the output for two reasons:
|
||||
@@ -956,20 +997,12 @@ class CI_Loader {
|
||||
*/
|
||||
ob_start();
|
||||
|
||||
// If the PHP installation does not support short tags we'll
|
||||
// do a little string replacement, changing the short tags
|
||||
// to standard PHP echo statements.
|
||||
if ( ! is_php('5.4') && ! ini_get('short_open_tag') && config_item('rewrite_short_tags') === TRUE)
|
||||
{
|
||||
echo eval('?>'.preg_replace('/;*\s*\?>/', '; ?>', str_replace('<?=', '<?php echo ', file_get_contents($_ci_path))));
|
||||
}
|
||||
else
|
||||
{
|
||||
include($_ci_path); // include() vs include_once() allows for multiple views with the same name
|
||||
}
|
||||
|
||||
log_message('info', 'File loaded: '.$_ci_path);
|
||||
|
||||
// Remove current _ci_vars from stack
|
||||
array_pop($this->_ci_load_vars_stack);
|
||||
|
||||
// Return the file data if requested
|
||||
if ($_ci_return === TRUE)
|
||||
{
|
||||
|
||||
+30
-19
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -44,7 +45,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Logging
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/general/errors.html
|
||||
* @link https://codeigniter.com/userguide3/general/errors.html
|
||||
*/
|
||||
class CI_Log {
|
||||
|
||||
@@ -55,6 +56,13 @@ class CI_Log {
|
||||
*/
|
||||
protected $_log_path;
|
||||
|
||||
/**
|
||||
* Log filename
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_log_filename;
|
||||
|
||||
/**
|
||||
* File permissions
|
||||
*
|
||||
@@ -83,13 +91,6 @@ class CI_Log {
|
||||
*/
|
||||
protected $_date_fmt = 'Y-m-d H:i:s';
|
||||
|
||||
/**
|
||||
* Filename extension
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_file_ext;
|
||||
|
||||
/**
|
||||
* Whether or not the logger can write to the log files
|
||||
*
|
||||
@@ -122,11 +123,24 @@ class CI_Log {
|
||||
{
|
||||
$config =& get_config();
|
||||
|
||||
isset(self::$func_overload) OR self::$func_overload = (extension_loaded('mbstring') && ini_get('mbstring.func_overload'));
|
||||
isset(self::$func_overload) OR self::$func_overload = ( ! is_php('8.0') && extension_loaded('mbstring') && @ini_get('mbstring.func_overload'));
|
||||
|
||||
$this->_log_path = ($config['log_path'] !== '') ? $config['log_path'] : APPPATH.'logs/';
|
||||
$this->_file_ext = (isset($config['log_file_extension']) && $config['log_file_extension'] !== '')
|
||||
? ltrim($config['log_file_extension'], '.') : 'php';
|
||||
$this->_log_path = ($config['log_path'] !== '')
|
||||
? rtrim($config['log_path'], '/\\').DIRECTORY_SEPARATOR : APPPATH.'logs'.DIRECTORY_SEPARATOR;
|
||||
|
||||
if (isset($config['log_filename']) && $config['log_filename'] !== '')
|
||||
{
|
||||
$this->_log_filename = $config['log_filename'];
|
||||
}
|
||||
elseif (isset($config['log_file_extension']) && $config['log_file_extension'] !== '')
|
||||
{
|
||||
$ext = ltrim($config['log_file_extension'], '.');
|
||||
$this->_log_filename = 'log-'.date('Y-m-d').'.'.$ext;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_log_filename = 'log-'.date('Y-m-d').'.php';
|
||||
}
|
||||
|
||||
file_exists($this->_log_path) OR mkdir($this->_log_path, 0755, TRUE);
|
||||
|
||||
@@ -182,14 +196,14 @@ class CI_Log {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$filepath = $this->_log_path.'log-'.date('Y-m-d').'.'.$this->_file_ext;
|
||||
$filepath = $this->_log_path.$this->_log_filename;
|
||||
$message = '';
|
||||
|
||||
if ( ! file_exists($filepath))
|
||||
{
|
||||
$newfile = TRUE;
|
||||
// Only add protection to php files
|
||||
if ($this->_file_ext === 'php')
|
||||
if (substr($this->_log_filename, -3, 3) === 'php')
|
||||
{
|
||||
$message .= "<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>\n\n";
|
||||
}
|
||||
@@ -217,7 +231,7 @@ class CI_Log {
|
||||
|
||||
$message .= $this->_format_line($level, $date, $msg);
|
||||
|
||||
for ($written = 0, $length = self::strlen($message); $written < $length; $written += $result)
|
||||
for ($result = $written = 0, $length = self::strlen($message); $written < $length; $written += $result)
|
||||
{
|
||||
if (($result = fwrite($fp, self::substr($message, $written))) === FALSE)
|
||||
{
|
||||
@@ -283,9 +297,6 @@ class CI_Log {
|
||||
{
|
||||
if (self::$func_overload)
|
||||
{
|
||||
// mb_substr($str, $start, null, '8bit') returns an empty
|
||||
// string on PHP 5.3
|
||||
isset($length) OR $length = ($start >= 0 ? self::strlen($str) - $start : -$start);
|
||||
return mb_substr($str, $start, $length, '8bit');
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -44,8 +45,9 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Libraries
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/config.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/config.html
|
||||
*/
|
||||
#[AllowDynamicProperties]
|
||||
class CI_Model {
|
||||
|
||||
/**
|
||||
|
||||
+21
-19
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -46,7 +47,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Output
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/output.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/output.html
|
||||
*/
|
||||
class CI_Output {
|
||||
|
||||
@@ -55,7 +56,7 @@ class CI_Output {
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $final_output;
|
||||
public $final_output = '';
|
||||
|
||||
/**
|
||||
* Cache expiration time
|
||||
@@ -145,7 +146,7 @@ class CI_Output {
|
||||
&& extension_loaded('zlib')
|
||||
);
|
||||
|
||||
isset(self::$func_overload) OR self::$func_overload = (extension_loaded('mbstring') && ini_get('mbstring.func_overload'));
|
||||
isset(self::$func_overload) OR self::$func_overload = ( ! is_php('8.0') && extension_loaded('mbstring') && @ini_get('mbstring.func_overload'));
|
||||
|
||||
// Get mime types for later
|
||||
$this->mimes =& get_mimes();
|
||||
@@ -299,10 +300,14 @@ class CI_Output {
|
||||
*/
|
||||
public function get_header($header)
|
||||
{
|
||||
// Combine headers already sent with our batched headers
|
||||
$headers = array_merge(
|
||||
// We only need [x][0] from our multi-dimensional array
|
||||
array_map('array_shift', $this->headers),
|
||||
$header_lines = array_map(function ($headers)
|
||||
{
|
||||
return array_shift($headers);
|
||||
}, $this->headers);
|
||||
|
||||
$headers = array_merge(
|
||||
$header_lines,
|
||||
headers_list()
|
||||
);
|
||||
|
||||
@@ -412,7 +417,7 @@ class CI_Output {
|
||||
* @param string $output Output data override
|
||||
* @return void
|
||||
*/
|
||||
public function _display($output = '')
|
||||
public function _display($output = NULL)
|
||||
{
|
||||
// Note: We use load_class() because we can't use $CI =& get_instance()
|
||||
// since this function is sometimes called by the caching mechanism,
|
||||
@@ -429,7 +434,7 @@ class CI_Output {
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
// Set the output data
|
||||
if ($output === '')
|
||||
if ($output === NULL)
|
||||
{
|
||||
$output =& $this->final_output;
|
||||
}
|
||||
@@ -451,7 +456,7 @@ class CI_Output {
|
||||
|
||||
$elapsed = $BM->elapsed_time('total_execution_time_start', 'total_execution_time_end');
|
||||
|
||||
if ($this->parse_exec_vars === TRUE)
|
||||
if ($this->parse_exec_vars === TRUE && !empty($output))
|
||||
{
|
||||
$memory = round(memory_get_usage() / 1024 / 1024, 2).'MB';
|
||||
$output = str_replace(array('{elapsed_time}', '{memory_usage}'), array($elapsed, $memory), $output);
|
||||
@@ -502,7 +507,7 @@ class CI_Output {
|
||||
|
||||
echo $output;
|
||||
log_message('info', 'Final output sent to browser');
|
||||
log_message('debug', 'Total execution time: '.$elapsed);
|
||||
log_message('info', 'Total execution time: '.$elapsed);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -539,7 +544,7 @@ class CI_Output {
|
||||
}
|
||||
|
||||
log_message('info', 'Final output sent to browser');
|
||||
log_message('debug', 'Total execution time: '.$elapsed);
|
||||
log_message('info', 'Total execution time: '.$elapsed);
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
@@ -554,7 +559,7 @@ class CI_Output {
|
||||
{
|
||||
$CI =& get_instance();
|
||||
$path = $CI->config->item('cache_path');
|
||||
$cache_path = ($path === '') ? APPPATH.'cache/' : $path;
|
||||
$cache_path = ($path === '') ? APPPATH.'cache'.DIRECTORY_SEPARATOR : rtrim($path, '/\\').DIRECTORY_SEPARATOR;
|
||||
|
||||
if ( ! is_dir($cache_path) OR ! is_really_writable($cache_path))
|
||||
{
|
||||
@@ -563,7 +568,7 @@ class CI_Output {
|
||||
}
|
||||
|
||||
$uri = $CI->config->item('base_url')
|
||||
.$CI->config->item('index_page')
|
||||
.$CI->config->slash_item('index_page')
|
||||
.$CI->uri->uri_string();
|
||||
|
||||
if (($cache_query_string = $CI->config->item('cache_query_string')) && ! empty($_SERVER['QUERY_STRING']))
|
||||
@@ -658,7 +663,7 @@ class CI_Output {
|
||||
$cache_path = ($CFG->item('cache_path') === '') ? APPPATH.'cache/' : $CFG->item('cache_path');
|
||||
|
||||
// Build the file path. The file name is an MD5 hash of the full URI
|
||||
$uri = $CFG->item('base_url').$CFG->item('index_page').$URI->uri_string;
|
||||
$uri = $CFG->item('base_url').$CFG->slash_item('index_page').$URI->uri_string;
|
||||
|
||||
if (($cache_query_string = $CFG->item('cache_query_string')) && ! empty($_SERVER['QUERY_STRING']))
|
||||
{
|
||||
@@ -761,7 +766,7 @@ class CI_Output {
|
||||
}
|
||||
}
|
||||
|
||||
$cache_path .= md5($CI->config->item('base_url').$CI->config->item('index_page').ltrim($uri, '/'));
|
||||
$cache_path .= md5($CI->config->item('base_url').$CI->config->slash_item('index_page').ltrim($uri, '/'));
|
||||
|
||||
if ( ! @unlink($cache_path))
|
||||
{
|
||||
@@ -829,9 +834,6 @@ class CI_Output {
|
||||
{
|
||||
if (self::$func_overload)
|
||||
{
|
||||
// mb_substr($str, $start, null, '8bit') returns an empty
|
||||
// string on PHP 5.3
|
||||
isset($length) OR $length = ($start >= 0 ? self::strlen($str) - $start : -$start);
|
||||
return mb_substr($str, $start, $length, '8bit');
|
||||
}
|
||||
|
||||
|
||||
+12
-4
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -46,7 +47,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Libraries
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/general/routing.html
|
||||
* @link https://codeigniter.com/userguide3/general/routing.html
|
||||
*/
|
||||
class CI_Router {
|
||||
|
||||
@@ -57,6 +58,13 @@ class CI_Router {
|
||||
*/
|
||||
public $config;
|
||||
|
||||
/**
|
||||
* CI_URI class object
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
public $uri;
|
||||
|
||||
/**
|
||||
* List of routes
|
||||
*
|
||||
@@ -83,7 +91,7 @@ class CI_Router {
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $directory;
|
||||
public $directory = '';
|
||||
|
||||
/**
|
||||
* Default controller (and method if specific)
|
||||
@@ -332,7 +340,7 @@ class CI_Router {
|
||||
protected function _validate_request($segments)
|
||||
{
|
||||
$c = count($segments);
|
||||
$directory_override = isset($this->directory);
|
||||
$directory_override = $this->directory !== '';
|
||||
|
||||
// Loop through our segments and return as soon as a controller
|
||||
// is found or when such a directory doesn't exist
|
||||
|
||||
+37
-40
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -44,7 +45,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category Security
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/security.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/security.html
|
||||
*/
|
||||
class CI_Security {
|
||||
|
||||
@@ -169,10 +170,12 @@ class CI_Security {
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
public function __construct($charset)
|
||||
{
|
||||
$this->charset = $charset;
|
||||
|
||||
// Is CSRF protection enabled?
|
||||
if (config_item('csrf_protection'))
|
||||
if (config_item('csrf_protection') && ! is_cli())
|
||||
{
|
||||
// CSRF config
|
||||
foreach (array('csrf_expire', 'csrf_token_name', 'csrf_cookie_name') as $key)
|
||||
@@ -191,10 +194,9 @@ class CI_Security {
|
||||
|
||||
// Set the CSRF hash
|
||||
$this->_csrf_set_hash();
|
||||
$this->csrf_verify();
|
||||
}
|
||||
|
||||
$this->charset = strtoupper(config_item('charset'));
|
||||
|
||||
log_message('info', 'Security Class Initialized');
|
||||
}
|
||||
|
||||
@@ -272,15 +274,35 @@ class CI_Security {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (is_php('7.3'))
|
||||
{
|
||||
setcookie(
|
||||
$this->_csrf_cookie_name,
|
||||
$this->_csrf_hash,
|
||||
$expire,
|
||||
config_item('cookie_path'),
|
||||
config_item('cookie_domain'),
|
||||
$secure_cookie,
|
||||
config_item('cookie_httponly')
|
||||
array(
|
||||
'expires' => $expire,
|
||||
'path' => config_item('cookie_path'),
|
||||
'domain' => config_item('cookie_domain'),
|
||||
'secure' => $secure_cookie,
|
||||
'httponly' => config_item('cookie_httponly'),
|
||||
'samesite' => 'Strict'
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$domain = trim(config_item('cookie_domain'));
|
||||
header('Set-Cookie: '.$this->_csrf_cookie_name.'='.$this->_csrf_hash
|
||||
.'; Expires='.gmdate('D, d-M-Y H:i:s T', $expire)
|
||||
.'; Max-Age='.$this->_csrf_expire
|
||||
.'; Path='.implode('/', array_map('rawurlencode', explode('/', config_item('cookie_path'))))
|
||||
.($domain === '' ? '' : '; Domain='.$domain)
|
||||
.($secure_cookie ? '; Secure' : '')
|
||||
.(config_item('cookie_httponly') ? '; HttpOnly' : '')
|
||||
.'; SameSite=Strict'
|
||||
);
|
||||
}
|
||||
|
||||
log_message('info', 'CSRF cookie sent');
|
||||
|
||||
return $this;
|
||||
@@ -635,11 +657,10 @@ class CI_Security {
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
||||
if (is_readable('/dev/urandom') && ($fp = fopen('/dev/urandom', 'rb')) !== FALSE)
|
||||
{
|
||||
// Try not to waste entropy ...
|
||||
is_php('5.4') && stream_set_chunk_size($fp, $length);
|
||||
stream_set_chunk_size($fp, $length);
|
||||
$output = fread($fp, $length);
|
||||
fclose($fp);
|
||||
if ($output !== FALSE)
|
||||
@@ -669,7 +690,7 @@ class CI_Security {
|
||||
* correctly. html_entity_decode() does not convert entities without
|
||||
* semicolons, so we are left with our own little solution here. Bummer.
|
||||
*
|
||||
* @link http://php.net/html-entity-decode
|
||||
* @link https://secure.php.net/html-entity-decode
|
||||
*
|
||||
* @param string $str Input
|
||||
* @param string $charset Character set
|
||||
@@ -685,25 +706,7 @@ class CI_Security {
|
||||
static $_entities;
|
||||
|
||||
isset($charset) OR $charset = $this->charset;
|
||||
$flag = is_php('5.4')
|
||||
? ENT_COMPAT | ENT_HTML5
|
||||
: ENT_COMPAT;
|
||||
|
||||
if ( ! isset($_entities))
|
||||
{
|
||||
$_entities = array_map('strtolower', get_html_translation_table(HTML_ENTITIES, $flag, $charset));
|
||||
|
||||
// If we're not on PHP 5.4+, add the possibly dangerous HTML 5
|
||||
// entities to the array manually
|
||||
if ($flag === ENT_COMPAT)
|
||||
{
|
||||
$_entities[':'] = ':';
|
||||
$_entities['('] = '(';
|
||||
$_entities[')'] = ')';
|
||||
$_entities["\n"] = '
';
|
||||
$_entities["\t"] = '	';
|
||||
}
|
||||
}
|
||||
isset($_entities) OR $_entities = array_map('strtolower', get_html_translation_table(HTML_ENTITIES, ENT_COMPAT | ENT_HTML5, $charset));
|
||||
|
||||
do
|
||||
{
|
||||
@@ -728,14 +731,9 @@ class CI_Security {
|
||||
// Decode numeric & UTF16 two byte entities
|
||||
$str = html_entity_decode(
|
||||
preg_replace('/(&#(?:x0*[0-9a-f]{2,5}(?![0-9a-f;])|(?:0*\d{2,4}(?![0-9;]))))/iS', '$1;', $str),
|
||||
$flag,
|
||||
ENT_COMPAT | ENT_HTML5,
|
||||
$charset
|
||||
);
|
||||
|
||||
if ($flag === ENT_COMPAT)
|
||||
{
|
||||
$str = str_replace(array_values($_entities), array_keys($_entities), $str);
|
||||
}
|
||||
}
|
||||
while ($str_compare !== $str);
|
||||
return $str;
|
||||
@@ -1087,5 +1085,4 @@ class CI_Security {
|
||||
|
||||
return $this->_csrf_hash;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+50
-24
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 1.0.0
|
||||
@@ -46,10 +47,17 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category URI
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/uri.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/uri.html
|
||||
*/
|
||||
class CI_URI {
|
||||
|
||||
/**
|
||||
* CI_Config instance
|
||||
*
|
||||
* @var CI_Config
|
||||
*/
|
||||
public $config;
|
||||
|
||||
/**
|
||||
* List of cached URI segments
|
||||
*
|
||||
@@ -96,23 +104,19 @@ class CI_URI {
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
public function __construct(CI_Config $config)
|
||||
{
|
||||
$this->config =& load_class('Config', 'core');
|
||||
|
||||
// If query strings are enabled, we don't need to parse any segments.
|
||||
// However, they don't make sense under CLI.
|
||||
if (is_cli() OR $this->config->item('enable_query_strings') !== TRUE)
|
||||
{
|
||||
$this->_permitted_uri_chars = $this->config->item('permitted_uri_chars');
|
||||
$this->config = $config;
|
||||
|
||||
// If it's a CLI request, ignore the configuration
|
||||
if (is_cli())
|
||||
{
|
||||
$uri = $this->_parse_argv();
|
||||
$this->_set_uri_string($this->_parse_argv(), TRUE);
|
||||
}
|
||||
else
|
||||
// If query strings are enabled, we don't need to parse any segments.
|
||||
elseif ($this->config->item('enable_query_strings') !== TRUE)
|
||||
{
|
||||
$this->_permitted_uri_chars = $this->config->item('permitted_uri_chars');
|
||||
$protocol = $this->config->item('uri_protocol');
|
||||
empty($protocol) && $protocol = 'REQUEST_URI';
|
||||
|
||||
@@ -132,9 +136,8 @@ class CI_URI {
|
||||
: $this->_parse_request_uri();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$this->_set_uri_string($uri);
|
||||
$this->_set_uri_string($uri, FALSE);
|
||||
}
|
||||
|
||||
log_message('info', 'URI Class Initialized');
|
||||
@@ -145,16 +148,41 @@ class CI_URI {
|
||||
/**
|
||||
* Set URI String
|
||||
*
|
||||
* @param string $str
|
||||
* @param string $str Input URI string
|
||||
* @param bool $is_cli Whether the input comes from CLI
|
||||
* @return void
|
||||
*/
|
||||
protected function _set_uri_string($str)
|
||||
protected function _set_uri_string($str, $is_cli = FALSE)
|
||||
{
|
||||
// CLI requests have a bit simpler logic
|
||||
if ($is_cli)
|
||||
{
|
||||
if (($this->uri_string = trim($str, '/')) === '')
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
$this->segments[0] = NULL;
|
||||
foreach (explode('/', $this->uri_string) as $segment)
|
||||
{
|
||||
if (($segment = trim($segment)) !== '')
|
||||
{
|
||||
$this->segments[] = $segment;
|
||||
}
|
||||
}
|
||||
|
||||
unset($this->segments[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
// Filter out control characters and trim slashes
|
||||
$this->uri_string = trim(remove_invisible_characters($str, FALSE), '/');
|
||||
|
||||
if ($this->uri_string !== '')
|
||||
if ($this->uri_string === '')
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove the URL suffix, if present
|
||||
if (($suffix = (string) $this->config->item('url_suffix')) !== '')
|
||||
{
|
||||
@@ -167,22 +195,20 @@ class CI_URI {
|
||||
}
|
||||
|
||||
$this->segments[0] = NULL;
|
||||
// Populate the segments array
|
||||
foreach (explode('/', trim($this->uri_string, '/')) as $val)
|
||||
foreach (explode('/', trim($this->uri_string, '/')) as $segment)
|
||||
{
|
||||
$val = trim($val);
|
||||
$segment = trim($segment);
|
||||
// Filter segments for security
|
||||
$this->filter_uri($val);
|
||||
$this->filter_uri($segment);
|
||||
|
||||
if ($val !== '')
|
||||
if ($segment !== '')
|
||||
{
|
||||
$this->segments[] = $val;
|
||||
$this->segments[] = $segment;
|
||||
}
|
||||
}
|
||||
|
||||
unset($this->segments[0]);
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 2.0.0
|
||||
@@ -46,7 +47,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage Libraries
|
||||
* @category UTF-8
|
||||
* @author EllisLab Dev Team
|
||||
* @link https://codeigniter.com/user_guide/libraries/utf8.html
|
||||
* @link https://codeigniter.com/userguide3/libraries/utf8.html
|
||||
*/
|
||||
class CI_Utf8 {
|
||||
|
||||
@@ -57,21 +58,21 @@ class CI_Utf8 {
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
public function __construct($charset)
|
||||
{
|
||||
if (
|
||||
defined('PREG_BAD_UTF8_ERROR') // PCRE must support UTF-8
|
||||
&& (ICONV_ENABLED === TRUE OR MB_ENABLED === TRUE) // iconv or mbstring must be installed
|
||||
&& strtoupper(config_item('charset')) === 'UTF-8' // Application charset must be UTF-8
|
||||
&& $charset === 'UTF-8' // Application charset must be UTF-8
|
||||
)
|
||||
{
|
||||
define('UTF8_ENABLED', TRUE);
|
||||
log_message('debug', 'UTF-8 Support Enabled');
|
||||
log_message('info', 'UTF-8 Support Enabled');
|
||||
}
|
||||
else
|
||||
{
|
||||
define('UTF8_ENABLED', FALSE);
|
||||
log_message('debug', 'UTF-8 Support Disabled');
|
||||
log_message('info', 'UTF-8 Support Disabled');
|
||||
}
|
||||
|
||||
log_message('info', 'Utf8 Class Initialized');
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* This content is released under the MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 - 2019, British Columbia Institute of Technology
|
||||
* Copyright (c) 2019 - 2022, CodeIgniter Foundation
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -30,6 +30,7 @@
|
||||
* @author EllisLab Dev Team
|
||||
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
|
||||
* @copyright Copyright (c) 2014 - 2019, British Columbia Institute of Technology (https://bcit.ca/)
|
||||
* @copyright Copyright (c) 2019 - 2022, CodeIgniter Foundation (https://codeigniter.com/)
|
||||
* @license https://opensource.org/licenses/MIT MIT License
|
||||
* @link https://codeigniter.com
|
||||
* @since Version 3.0.0
|
||||
@@ -44,8 +45,8 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
* @subpackage CodeIgniter
|
||||
* @category Compatibility
|
||||
* @author Andrey Andreev
|
||||
* @link https://codeigniter.com/user_guide/
|
||||
* @link http://php.net/hash
|
||||
* @link https://codeigniter.com/userguide3/
|
||||
* @link https://secure.php.net/hash
|
||||
*/
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
@@ -62,7 +63,7 @@ if ( ! function_exists('hash_equals'))
|
||||
/**
|
||||
* hash_equals()
|
||||
*
|
||||
* @link http://php.net/hash_equals
|
||||
* @link https://secure.php.net/hash_equals
|
||||
* @param string $known_string
|
||||
* @param string $user_string
|
||||
* @return bool
|
||||
@@ -108,7 +109,7 @@ if ( ! function_exists('hash_pbkdf2'))
|
||||
/**
|
||||
* hash_pbkdf2()
|
||||
*
|
||||
* @link http://php.net/hash_pbkdf2
|
||||
* @link https://secure.php.net/hash_pbkdf2
|
||||
* @param string $algo
|
||||
* @param string $password
|
||||
* @param string $salt
|
||||
@@ -205,8 +206,6 @@ if ( ! function_exists('hash_pbkdf2'))
|
||||
'ripemd160' => 64,
|
||||
'ripemd256' => 64,
|
||||
'ripemd320' => 64,
|
||||
'salsa10' => 64,
|
||||
'salsa20' => 64,
|
||||
'sha1' => 64,
|
||||
'sha224' => 64,
|
||||
'sha256' => 64,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>403 Forbidden</title>
|
||||
</head>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user