https://wiki.mahara.org/api.php?action=feedcontributions&user=Gold&feedformat=atom
Mahara Wiki - User contributions [en-gb]
2024-03-28T20:22:32Z
User contributions
MediaWiki 1.35.10
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad/Add_PHP8&diff=13582
User:Gold/PHP 8 Scratchpad/Add PHP8
2023-02-23T22:31:47Z
<p>Gold: /* PHP */ broken tag</p>
<hr />
<div>== Check available versions ==<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ apt-cache search php | sort | grep fpm<br />
php7.4-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)<br />
php-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) (default)<br />
</syntaxhighlight><br />
If there are no php 8 options we need to add the repo and check again.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo add-apt-repository ppa:ondrej/php<br />
</syntaxhighlight><br />
You will likely be challenged to install ppa:ondrej/apache2. We are not using mod-php so there is no need to do that.<br />
<br />
To check php8 is available rerun the <syntaxhighlight lang=bash inline>apt-cache</syntaxhighlight> call above. You should see many more options.<br />
<br />
=== Install PHP 7.4 and 8.1 ===<br />
Testing on PHP 7.4 and PHP 8.1 so install the related supporting packages that Mahara needs. There is no <syntaxhighlight lang=bash inline>php8.1-json</syntaxhighlight> package. This is part of <syntaxhighlight lang=bash inline>php8.1-common</syntaxhighlight> now.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo apt install \<br />
libapache2-mod-fcgid \<br />
php7.4-cli php7.4-common php7.4-curl php7.4-fpm php7.4-gd \<br />
php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-pgsql \<br />
php7.4-xml php7.4-xmlrpc php7.4-zip \<br />
php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd \<br />
php8.1-intl php8.1-ldap php8.1-mbstring php8.1-pgsql php8.1-xml \<br />
php8.1-xmlrpc php8.1-zip <br />
</syntaxhighlight><br />
<br />
=== Set up Apache ===<br />
==== PHP ====<br />
We need to modify how apache2 works with PHP. This requires that we switch from mod_php (the likely default install) to php-fpm which lets us use multiple stand-alone php servers that we can select on a site by site basis.<br />
<br />
Check which modules you have installed with <syntaxhighlight lang=bash inline>sudo apache2ctl -M</syntaxhighlight> as we may need to refer to the php version on some of the mods. We will use php7.2 as the reference. Swap this out for the version you currently have.<br />
<br />
* Disable mod-php with <syntaxhighlight lang=bash inline>sudo a2dismod php7.2</syntaxhighlight><br />
* Enable Fast-CGI <syntaxhighlight lang=bash inline>sudo a2enmod proxy_fcgi setenvif</syntaxhighlight><br />
* Disable MPM-prefork with <syntaxhighlight lang=bash inline>sudo a2dismod mpm_prefork</syntaxhighlight><br />
* Enable MPM-event <syntaxhighlight lang=bash inline>sudo a2enmod mpm_event</syntaxhighlight><br />
* Restart the server: <syntaxhighlight lang=bash inline>sudo systemctl restart apache2</syntaxhighlight><br />
<br />
Update php.ini for our new versions.<br />
<syntaxhighlight lang=bash><br />
sudo sh -c "echo 'post_max_size = 37M' >> /etc/php/7.4/cli/php.ini"<br />
sudo sh -c "echo 'upload_max_filesize = 32M' >> /etc/php/7.4/cli/php.ini"<br />
sudo sh -c "echo 'post_max_size = 37M' >> /etc/php/8.1/fpm/php.ini"<br />
sudo sh -c "echo 'upload_max_filesize = 32M' >> /etc/php/8.1/fpm/php.ini"<br />
</syntaxhighlight><br />
<br />
With PHP running as a service we need to restart this for new config to be seen now. You can use <syntaxhighlight lang=bash inline>sudo systemctl | grep fpm</syntaxhighlight> to list the php-fpm services you have running. For each restart with: <br />
<syntaxhighlight lang=bash><br />
sudo systemctl restart php7.4-fpm.service<br />
sudo systemctl restart php8.1-fpm.service<br />
</syntaxhighlight><br />
<br />
==== SSL ====<br />
Enable SSL via <syntaxhighlight lang=bash inline>sudo a2enmod ssl</syntaxhighlight><br />
<br />
Set up the SSL certs. We use <syntaxhighlight land=bash inline>-days 365</syntaxhighlight> as apparently some modern browsers will reject SSL certs that last longer than that.<br />
<syntaxhighlight lang=bash><br />
sudo mkdir /etc/apache2/ssl && \<br />
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \<br />
-keyout /etc/apache2/ssl/apache.key \<br />
-out /etc/apache2/ssl/apache.crt<br />
</syntaxhighlight><br />
<br />
==== Sites ====<br />
I'm configuring 2 sites. One for PHP 7.4 and one for PHP 8.1. At this point I'm not supporting PHP 7.2 and 8.0 is not the default in Ubuntu 22.04 which is our target platform.<br />
<br />
I have updated my local <syntaxhighlight lang=bash inline>/etc/hosts</syntaxhighlight> file and added entries for https://php74.mahara.local/ and https://php81.mahara.local/. While I'm ignoring 7.2 and 8.0 I'm including the minor version for future-proofing. Just in case.<br />
<br />
Next the following is added as mahara-php8.conf and a <syntaxhighlight lang=bash inline>sudo a2ensite mahara-php8 && sudo systemctl reload apache2</syntaxhighlight> to enable it.<br />
<br />
===== /etc/apache2/sites-available/mahara-php8.conf =====<br />
<syntaxhighlight lang=xml><br />
<VirtualHost *:80><br />
ServerName php81.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
<br />
<Directory /home/gold/Mahara/codereview><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel debug<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
<br />
<IfModule mod_ssl.c><br />
<VirtualHost _default_:443><br />
ServerName php81.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.crt<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
<FilesMatch \.php$><br />
SSLOptions +StdEnvVars<br />
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"<br />
</FilesMatch><br />
<Directory /home/gold/Mahara/php8><br />
SSLOptions +StdEnvVars<br />
DirectoryIndex index.php<br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
</VirtualHost><br />
</IfModule><br />
<br />
<VirtualHost *:80><br />
ServerName php74.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
<br />
<Directory /home/gold/Mahara/codereview><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel debug<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
<br />
<IfModule mod_ssl.c><br />
<VirtualHost _default_:443><br />
ServerName php74.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.crt<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
<FilesMatch \.php$><br />
SSLOptions +StdEnvVars<br />
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"<br />
</FilesMatch><br />
<Directory /home/gold/Mahara/php8><br />
SSLOptions +StdEnvVars<br />
DirectoryIndex index.php<br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
</VirtualHost><br />
</IfModule><br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/94&diff=13542
Developer Area/Developer Meetings/94
2023-01-25T02:23:01Z
<p>Gold: Correcting date for UTC.</p>
<hr />
<div>Agenda for the 94th Mahara developer meeting on '''[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+dev+meeting&iso=20230322T12&p1=264 Tuesday, 21 March 2023 at 23:00 UTC]'''<br />
<br />
We will meet online using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our #Mahara channel on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
*Chair: Robert Lyon (Bob)<br />
*Minute taker: Kristina Hoeppner <br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
==Agenda==<br />
Items from previous meetings<br />
* Change to makefile to add some basic security checks<br />
* Update coding and code review guidelines to add words around security<br />
<br />
General items<br />
*Any other business<br />
*Next meeting and chair</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings&diff=13541
Developer Area/Developer Meetings
2023-01-25T02:22:13Z
<p>Gold: Adding Dev meeting 94</p>
<hr />
<div>Regular developer meetings are held online. Please see the agenda for the meeting room information.<br />
<br />
For information on chairing a meeting and taking minutes, see [[Developer_Area/Developer_Meetings/Chair_Duties|Chair Duties]].<br />
<br />
Old [https://git.mahara.org/info/mahara-minutes IRC meeting minutes] are archived on git.mahara.org as well. <br />
<br />
<br />
{| summary="Summary including Time, Date, Agenda, Minutes and IRC logs from meetings" style="border-collapse: collapse; border: 1px solid;" width="600" cellpadding="1px" border="1"<br />
! style="text-align: center" |Dev. meeting<br />
! style="text-align: center" |Date/Time<br />
! style="text-align: center" |Agenda<br />
! style="text-align: center" |Minutes<br />
! style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |94<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+dev+meeting&iso=20230322T12&p1=264 Tuesday, 21 March 2023 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/94|Agenda]]<br />
|-<br />
|style="text-align: center" | 93<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+dev+meeting&iso=20230125T12&p1=264 Tuesday, 24 January 2023 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/93|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |92<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+dev+meeting&iso=20221109T12&p1=264 Tuesday, 8 November 2022 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/92|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |91<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+Developer+Meeting&iso=20220914T10&p1=264&ah=1 Tuesday, 13 September 2022 at 22:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/91|Agenda and minutes]]<br />
|-<br />
|-<br />
| style="text-align: center" |90<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=90th+Mahara+developer+meeting&iso=20220713T10&p1=264&ah=1 Tuesday, 12 July 2022 at 22:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/90|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |89<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220413T11&p1=264 Tuesday, 12 April 2022 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/89|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |88<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220302T2030&p1=264& Wednesday, 2 March 2022 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/88|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |87<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220118T1030&p1=264 Tuesday, 18 January 2022 at 10:30 NZDT]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/87|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |86<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20211013T1100&p1=22 Tuesday, 12 October 2021 at 22:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/86|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |85<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210804T1100&p1=22 Tuesday, 3 August 2021 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/85|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |84<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210608T1930&p1=22 Tuesday, 8 June 2021 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/84|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |83<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210216T2030&p1=22 Tuesday, 16 February 2021 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/83|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |82<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20201103T2030&p1=22 Tuesday, 3 November 2020 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/82|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |81<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200908T1930&p1=22 Tuesday, 8 September 2020 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/81|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |80<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200722T0730&p1=%3A Wednesday, 22 July 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/80|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |79<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200603T0730&p1=%3A Wednesday, 3 June 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/79|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |78<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+Developers+Meeting&iso=20200304T0730&p1=1440 Wednesday, 4 March 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/78|Agenda and minutes]]<br />
|-<br />
|-<br />
| style="text-align: center" |77<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200129T0730&p1=%3A Wednesday, 29 January 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/77|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |76<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20191209T07&p1=%3A Monday, 9 December 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/76|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |75<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20191017T07&p1=%3A Thursday, 17 October 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/75|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |74<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190828T07&p1=1440 Wednesday, 28 August 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/74|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |73 (cancelled)<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190731T07&p1=1440 Wednesday, 31 July 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/73|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |72<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190626T07&p1=1440 Wednesday, 26 June 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/72|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |71<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190502T07&p1=1440 Thursday, 2 May 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/71|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |70<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190319T07&p1=1440 Tuesday, 19 March 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/70|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |69<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190129T07&p1=1440 Tuesday, 29 January 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/69|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |68<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20181106T07&p1=1440 Tuesday, 6 November 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/68|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2019/mahara-dev.2019-01-16-23.27.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2019/mahara-dev.2019-01-16-23.27.log.html IRC log]<br />
|-<br />
| style="text-align: center" |67<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180808T07&p1=1440 Wednesday, 8 August 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/67|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-08-08-22.35.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-08-08-22.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |66<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180613T07&p1=1440 Wednesday, 13 June 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/66|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-06-13-08.35.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-06-13-08.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |65<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180426T07&p1=1440 Thursday, 26 April 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/65|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-04-26-07.03.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-04-26-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |64<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180321T07&p1=136 Wednesday, 21 March 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/64|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-03-21-07.06.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-03-21-07.06.log.html IRC log]<br />
|-<br />
| style="text-align: center" |63<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180117T07&p1=136 Wednesday, 17 January 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/63|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-01-17-07.05.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-01-17-07.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |62<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20171123T07&p1=136 Thursday, 23 November 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/62|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-11-23-06.49.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-11-23-06.49.log.html IRC log]<br />
|-<br />
| style="text-align: center" |61<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170615T07&p1=1440 Thursday, 15 June 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/61|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-06-15-07.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-06-15-07.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |60<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170504T07&p1=1440 Thursday, 4 May 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/60|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-05-04-07.03.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-05-04-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |59<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170309T08&p1=1440 Thursday, 9 March 2017, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/59|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-03-09-21.50.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-03-09-21.50.log.html IRC log]<br />
|-<br />
| style="text-align: center" |58<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20170118T08&p1=1440 Wednesday, 18 January 2017, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/58|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-01-18-21.56.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-01-18-21.56.log.html IRC log]<br />
|-<br />
| style="text-align: center" |57<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20161109T08&p1=1440 Wednesday, 9 November 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/57|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-11-09-07.54.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-11-09-07.54.log.html IRC log]<br />
|-<br />
| style="text-align: center" |56<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160907T08&p1=1440 Wednesday, 7 September 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/56|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-09-07-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-09-07-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |55<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160803T08 Wednesday, 3 August 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/55|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-08-03-07.56.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-08-03-07.56.log.html IRC log]<br />
|-<br />
| style="text-align: center" |54<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160629T08 Wednesday, 29 June 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/54|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-06-29-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-06-29-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |53<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160526T08 Thursday, 26 May 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/53|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-05-26-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-05-26-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |52<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160428T07 Thursday, 28 April 2016, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/52|Agenda]]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-04-28-07.16.txt Minutes]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-04-28-07.16.log.txt IRC log]<br />
|-<br />
| style="text-align: center" |51<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160310T08 Thursday, 10 March 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/51|Agenda]]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-03-10-08.02.txt Minutes]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-03-10-08.02.log.txt IRC log]<br />
|-<br />
| style="text-align: center" |50<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160202T0730 Tuesday, 2 February 2016, 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/50|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-02-02-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-02-02-07.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |49<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20151201T08 Tuesday, 1 December 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/49|Agenda]]<br />
| style="text-align: center" |Minutes<br />
| style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |48<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20151027T07 Tuesday, 27 October 2015, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/48|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-10-27-07.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-10-27-07.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |47<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20150930T07 Wednesday, 30 September 2015, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/47|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-09-30-07.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-09-30-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |46<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=46th+Mahara+developer+meeting&iso=20150826T08 Wednesday, 26 August 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/46|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-08-26-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-08-26-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |45<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=45th+Mahara+developer+meeting&iso=20150729T09&p1=1440 Wednesday, 29 July 2015, 9:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/45|Agenda]]<br />
| style="text-align: center" |Minutes<br />
| style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |44<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=44th+Mahara+developer+meeting&iso=20150528T08&p1=1440 Thursday, 28 May 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/44|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-05-28-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-05-28-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |43<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=43rd+Mahara+developer+meeting&iso=20150423T08&p1=1440 Thursday, 23 April 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/43|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-04-23-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-04-23-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |42<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=42nd+Mahara+Developer+Meeting&iso=20150326T08 Thursday, 26 March 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/42|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-03-26-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-03-26-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |41<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=41st+Mahara+Developer+Meeting&iso=20150226T08 Thursday, 26 February 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/41|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-02-26-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-02-26-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |40<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=40th+Mahara+Developer+Meeting&iso=20150122T08 Thursday, 22 January 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/40|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-01-22-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-01-22-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |39<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=39th+Mahara+Developer+Meeting&iso=20141218T08 Thursday, 18 December 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/39|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-12-18-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-12-18-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |38<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=38th+Mahara+Developer+Meeting&iso=20141127T08 Thursday, 27 November 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/38|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-11-27-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-11-27-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |37<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+37th+Developer+Meeting&iso=20141023T08 Thursday, 23 October 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/37|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-10-23-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-10-23-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |36<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+36th+Developer+Meeting&iso=20140925T08 Thursday, 25 September 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/36|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-09-25-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-09-25-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |35<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+35th+Developer+Meeting&iso=20140814T08 Thursday, 14 August 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/35|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-08-14-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-08-14-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |34<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+34th+Developer+Meeting&iso=20140710T08 Thursday, 10 July 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/34|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-07-10-08.06.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-07-10-08.06.log.html IRC log]<br />
|-<br />
| style="text-align: center" |33<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+33rd+Developer+Meeting&iso=20140605T08 Thursday, 5 June 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/33|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-06-05-08.15.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-06-05-08.15.log.html IRC log]<br />
|-<br />
| style="text-align: center" |32<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=32nd+Mahara+developer+meeting&iso=20140501T08 Thursday, 1 May 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/32|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-05-01-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-05-01-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |31<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140327T08&p1=1440 Thursday, 27 March 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-03-27-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-03-27-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |30<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140123T08&p1=1440 Thursday, 23 January 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/30|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-01-23-08.04.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-01-23-08.04.log.html IRC log]<br />
|-<br />
| style="text-align: center" |29<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20131205T08&p1=1440 Thursday, 5 December 2013, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-12-05-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-12-05-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |28<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20131003T20&p1=1440 Thursday, 3 October 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-10-03|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-10-03-20.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-10-03-20.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |27<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20130905T08 Thursday, 5 September 2013, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-09-05|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-09-05-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-09-05-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |26<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20130813T20 Tuesday, 13 August 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-05-28|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-08-13-21.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-08-13-21.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |25<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=25th+Mahara+Developer+Meeting&iso=20130416T08 Wednesday, 16 April 2013, 08:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-04-16|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-04-16-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-04-16-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |24<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=24th+Mahara+Developer+Meeting&iso=20130226T20 Tuesday, 26 February 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-02-26|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-02-26-20.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-02-26-20.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |23<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=23rd+Mahara+Developer+Meeting&iso=20130116T08 Wednesday, 16 January 2013, 08:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-01-16|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-01-16-08.04.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-01-16-08.04.log.html IRC log]<br />
|-<br />
| style="text-align: center" |22<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=22nd+Mahara+Developer+Meeting&iso=20121121T20 Wednesday, 21 November 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-11-21|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-11-21-20.07.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-11-21-20.07.log.html IRC log]<br />
|-<br />
| style="text-align: center" |21<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20121017T0730&msg=21st%20Mahara%20Developer%20Meeting Wednesday, 17 October 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-10-17|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-10-17-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-10-17-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |20<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=20th+Mahara+Developer+Meeting&iso=20120829T20 Wednesday, 29 August 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-08-29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-08-29-20.10.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-08-29-20.10.log.html IRC log]<br />
|-<br />
| style="text-align: center" |19<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=19th+Mahara+Developer+Meeting&iso=20120731T0730 Tuesday, 31 July 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-07-31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-07-31-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-07-31-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |18<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=18th+Mahara+Developer+Meeting&iso=20120627T2000 Wednesday, 27 June 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-06-27|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-06-27-20.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-06-27-20.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |17<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=17th+Mahara+Developer+Meeting&iso=20120523T0730 Wednesday, 23 May 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-05-23|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-05-23-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-05-23-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |16<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=16th+Mahara+Developer+Meeting&iso=20120425T20 Wednesday, 25 April 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-04-25|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-04-25-20.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-04-25-20.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |15<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20120327T0730 Tuesday, 27 March 2012, 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-03-27|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-27-07.41.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-27-07.41.log.html IRC log]<br />
|-<br />
| style="text-align: center" |14<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20120131T1930 Tuesday, 31 January 2012 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-01-31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-01-31-19.33.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-01-31-19.33.log.html IRC log]<br />
|-<br />
| style="text-align: center" |13<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111206T0730 Tuesday, 6 December 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-12-06|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-12-06-07.32.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-12-06-07.32.log.html IRC log]<br />
|-<br />
| style="text-align: center" |12<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111108T1930 Tuesday, 8 November 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-11-08|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-11-08-19.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-11-08-19.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |11<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111005T0730 Wednesday, 5 October 2011 - 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-10-05|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-10-05-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-10-05-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |10<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110906T1930 Tuesday, 6 September 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-09-06|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-09-06-19.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-09-06-19.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |9<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110803T0730 Wednesday, 3 August 2011 - 07:30:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-08-03|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-08-03-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-08-03-07.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |8<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110629T1930 Wednesday 29 June 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-06-29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-06-29-19.35.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-06-29-19.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |7<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110525T0730 Wednesday 25 May 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-05-25|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-05-25-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-05-25-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |6<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=20&month=4&year=2011&hour=19&min=30&sec=0&p1=0 Wednesday 20 April 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-04-20|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-04-20-19.40.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-04-20-19.40.log.html IRC log]<br />
|-<br />
| style="text-align: center" |5<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=23&month=3&year=2011&hour=7&min=30&sec=0&p1=0 Wednesday, 23 March 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-03-23|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-03-23-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-03-23-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |4<br />
| style="text-align: left" |[http://bit.ly/e29nNk Thursday, 17 February 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-02-17|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-02-17-19.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-02-17-19.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |3<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=19&month=1&year=2011&hour=7&min=30&sec=0&p1=0 Wednesday, 19 January 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-01-19|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-01-19-07.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-01-19-07.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |2<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/meetingdetails.html?year=2010&month=12&day=14&hour=19&min=30&sec=0&p1=22&p2=189&p3=268&iv=1800 Tuesday 14 December 2010 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2010-12-14|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-12-14-19.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-12-14-19.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |1<br />
| style="text-align: left" |Wednesday 10 November 2010 - 07:30 UTC (following [https://mahara.org/interaction/forum/topic.php?id=2070 a discussion])<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2010-11-10|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-11-10-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-11-10-07.34.log.html IRC log]<br />
|}<br />
<br />
===Other meetings===<br />
<br />
{| summary="Summary including Time, Date, Agenda, Minutes and IRC logs from meetings" style="border-collapse: collapse; border: 1px solid;" width="600" cellpadding="1px" border="1"<br />
! style="text-align: center" |Meeting title<br />
! style="text-align: center" |Date/Time<br />
! style="text-align: center" |Agenda<br />
! style="text-align: center" |Minutes<br />
! style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |Theme / plugin repository<br />
| style="text-align: left" |Thursday, 8 March 2012, 18:00-19:30 UTC<br />
| style="text-align: center" |<br />
| style="text-align: center" |<br />
[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-08-18.21.html Minutes]<br />
| style="text-align: center" |<br />
[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-08-18.21.log.html IRC log]<br />
|}</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/94&diff=13540
Developer Area/Developer Meetings/94
2023-01-25T02:12:32Z
<p>Gold: Dev meeting 94</p>
<hr />
<div>Agenda for the 94th Mahara developer meeting on '''[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+dev+meeting&iso=20230322T12&p1=264 Wednesday, 22 March 2023 at 23:00 UTC]'''<br />
<br />
We will meet online using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our #Mahara channel on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
*Chair: Robert Lyon (Bob)<br />
*Minute taker: Kristina Hoeppner <br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
==Agenda==<br />
Items from previous meetings<br />
* Change to makefile to add some basic security checks<br />
* Update coding and code review guidelines to add words around security<br />
<br />
General items<br />
*Any other business<br />
*Next meeting and chair</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/93&diff=13539
Developer Area/Developer Meetings/93
2023-01-25T02:02:24Z
<p>Gold: Added a link to a Proposal page for the code linter.</p>
<hr />
<div>Agenda for the 93rd Mahara developer meeting on '''[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+dev+meeting&iso=20230124T12&p1=264 Tuesday, 24 January 2023 at 23:00 UTC]'''<br />
<br />
We will meet online using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our #Mahara channel on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
*Chair: Doris Tam<br />
*Minute taker: Gold<br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
==Agenda==<br />
Items from previous meetings<br />
*Change to makefile to add some basic security checks<br />
*Update coding and code review guidelines to add words around security<br />
*PHP 8.1 progress<br />
*Idea to progress towards PHP 8.1: Introduce a project-wide linter<br />
**What we currently have: <code>make minaccept</code> <br />
**#Written in 2010 at the time of ''PHP 5.3'' standards (12 years ago, which matched that standards at the time of it was written)<br />
**#Unmanaged and difficult to update and manage as it's hard-coded, covering a small subset of rules<br />
**How does a linting tool help us?<br />
**# Less time spent on syntax, more on implementing and pushing solutions (towards PHP 8 compliance).<br />
**# Easily to change, update, and adapt the rules within the project as we need and in our speed.<br />
**# Eventually, CI/CD can warn us of issues of new code we push the code before merging, i.e. on GitLab<br />
**# With a standardised syntax, the core team can more easily work with community patches and get them in faster.<br />
**What is a linter and formatter?<br />
***A linter is a static analysis tool that can show us area of bad coding practice.<br />
*** A static analysis tool to find weak spots in the code, highlighting issues<br />
*** where rules are configurable<br />
*** We can change the strictness, warnings vs. errors.<br />
*** Formatters provide syntax checking and updates code<br />
**How does it help other teams at Catalyst?<br />
*** The frontend team use Prettier formatter – a set of rules to follow<br />
*** Fix once, get the benefits going forwards with minimal changes<br />
*** By using Prettier for JavaScript, they can adjust the rules in a prettier.rc/.json for each project.<br />
*** The frontend team agreed to use Airbnb style guide to help use best practices, but there are many others to choose from.<br />
*** Look into prettier for formatter, ESLint for linter. When starting on ESLint, it asks you for the rules you like.<br />
*** We could have it as a tool that formats the code, so we can diff before pushing change<br />
<br />
== Minutes ==<br />
[https://seafile.catalyst.net.nz/f/65b34a582bb3462b8815/ Audio recording of the meeting].<br />
<br />
* Attendees<br />
** Doris Tam (Wellington, NZ) - Mahara developer, Catalyst IT<br />
** Gold (Wellington, NZ) - Mahara developer, Catalyst IT<br />
** Kristina Hoeppner (Wellington, NZ), Mahara project lead, Catalyst IT<br />
** Adam Bark (Texas, US), Co-founder, LearnOpenTech<br />
* Apologies<br />
** Robert Lyon<br />
* Agenda<br />
** `make minaccept` updates : postponed for Bob being present<br />
** `make security` updates: still needs attention<br />
** PHP 8.2 compatibility<br />
*** Mahara Core has no Errors or Warnings <br />
*** Third party libraries in the Mahara codebase still have some issues, but not a lot. Updates may resolve these.<br />
** Project wide code linter<br />
***[https://github.com/PHPCompatibility/PHPCompatibility PHPCodeSniffer]<br />
*** [https://www.phpro.be/en/partners-and-tools/grumphp GrumPHP]<br />
*** A JS linter will also be needed but will discuss in the future<br />
*** [[Developer Area/Coding guidelines|https://wiki.mahara.org/wiki/Developer_Area/Coding_guidelines]]<br />
*** [https://wiki.mahara.org/wiki/Proposals/Code_Standards_checking_on_commit Extra discovery has been done and captured as this proposal as well].<br />
* Other business<br />
** Adam - Is there object storage support in Mahara?<br />
*** There is an [https://github.com/catalyst/mahara-module_objectfs S3 module]. This is one Adam already knew about and has raised [https://github.com/catalyst/mahara-module_objectfs/issues/15 an issue] on it.<br />
*** There is also an OpenStack module in the works, but it isn't public yet.<br />
** Kristina - there are new episodes of the [https://podcast.mahara.org/ podcast].<br />
* Next Developer Meeting<br />
** Who: Bob (Chair), Kristina (Note taker)<br />
** When: Wednesday, 22 March 2023 at 23:00 UTC</div>
Gold
https://wiki.mahara.org/index.php?title=Proposals/Code_Standards_checking_on_commit&diff=13538
Proposals/Code Standards checking on commit
2023-01-25T01:57:29Z
<p>Gold: Adding the discovery for GrumPHP and PHP_CodeSniffer</p>
<hr />
<div>The proposal is that we add a git pre-commit hook that checks the code about to be committed for standards compatibility. Many of the developers are also employed by Catalyst IT and the Drupal team there already use this approach. Adding initial standards checking should be straight forward and we already have a template, in the form of the Drupal Coder module, to use as guide for adding any Mahara specific standards we want to enforce. <br />
<br />
While working through [[Developer_Area/Developer_Meetings/93|the minutes]] I followed links for [https://www.phpro.be/en/partners-and-tools/grumphp GrumPHP] and [https://github.com/PHPCompatibility/PHPCompatibility PHP_CodeSniffer].<br />
<br />
==tl;dr;==<br />
GrumPHP uses PHP_CodeSniffer so we have one project that we actually need to focus on when writing the code standards.<br />
<br />
We use GrumPHP in the git commit hook that is already in the `make push` step allowing us to remove `make minaccept`, or replace it with a call to Grupphp, and when we want to do a project wide check we can call `phpsc` directly.<br />
<br />
==Discovery==<br />
<br />
Starting at [https://www.phpro.be/en/partners-and-tools/grumphp GrumPHP] (which we use as the commit checker in Drupalland) I checked to see how Drupal does it and that lead me to [https://github.com/Nascom/grumphp-drupal grumphp-drupal].<br />
<br />
Checking the [https://github.com/Nascom/grumphp-drupal/blob/master/src/CodingStandards/Drupal/ruleset.xml Ruleset there] I found that it was referencing [https://git.drupalcode.org/project/coder/-/tree/8.3.x/coder_sniffer/Drupal <syntaxhighlight inline>vendor/drupal/coder/coder_sniffer/Drupal</syntaxhighlight>]. The [https://git.drupalcode.org/project/coder Drupal Coder module] is the module that houses the <syntaxhighlight inline>PHP_CodeSniffer</syntaxhighlight> sniffs for Drupal compatibility.<br />
<br />
This tells us that GrumPHP is using PHP_CodeSniffer and we just need to focus on the latter for any custom compatibility rules.</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/93&diff=13537
Developer Area/Developer Meetings/93
2023-01-25T01:22:16Z
<p>Gold: Added the Minutes section.</p>
<hr />
<div>Agenda for the 93rd Mahara developer meeting on '''[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+dev+meeting&iso=20230124T12&p1=264 Tuesday, 24 January 2023 at 23:00 UTC]'''<br />
<br />
We will meet online using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our #Mahara channel on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
*Chair: Doris Tam<br />
*Minute taker: Gold<br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
==Agenda==<br />
Items from previous meetings<br />
*Change to makefile to add some basic security checks<br />
*Update coding and code review guidelines to add words around security<br />
*PHP 8.1 progress<br />
*Idea to progress towards PHP 8.1: Introduce a project-wide linter<br />
**What we currently have: <code>make minaccept</code> <br />
**#Written in 2010 at the time of ''PHP 5.3'' standards (12 years ago, which matched that standards at the time of it was written)<br />
**#Unmanaged and difficult to update and manage as it's hard-coded, covering a small subset of rules<br />
**How does a linting tool help us?<br />
**# Less time spent on syntax, more on implementing and pushing solutions (towards PHP 8 compliance).<br />
**# Easily to change, update, and adapt the rules within the project as we need and in our speed.<br />
**# Eventually, CI/CD can warn us of issues of new code we push the code before merging, i.e. on GitLab<br />
**# With a standardised syntax, the core team can more easily work with community patches and get them in faster.<br />
**What is a linter and formatter?<br />
***A linter is a static analysis tool that can show us area of bad coding practice.<br />
*** A static analysis tool to find weak spots in the code, highlighting issues<br />
*** where rules are configurable<br />
*** We can change the strictness, warnings vs. errors.<br />
*** Formatters provide syntax checking and updates code<br />
**How does it help other teams at Catalyst?<br />
*** The frontend team use Prettier formatter – a set of rules to follow<br />
*** Fix once, get the benefits going forwards with minimal changes<br />
*** By using Prettier for JavaScript, they can adjust the rules in a prettier.rc/.json for each project.<br />
*** The frontend team agreed to use Airbnb style guide to help use best practices, but there are many others to choose from.<br />
*** Look into prettier for formatter, ESLint for linter. When starting on ESLint, it asks you for the rules you like.<br />
*** We could have it as a tool that formats the code, so we can diff before pushing change<br />
<br />
== Minutes ==<br />
[https://seafile.catalyst.net.nz/f/65b34a582bb3462b8815/ Audio recording of the meeting].<br />
<br />
* Attendees<br />
** Doris Tam (Wellington, NZ) - Mahara developer, Catalyst IT<br />
** Gold (Wellington, NZ) - Mahara developer, Catalyst IT<br />
** Kristina Hoeppner (Wellington, NZ), Mahara project lead, Catalyst IT<br />
** Adam Bark (Texas, US), Co-founder, LearnOpenTech<br />
* Apologies<br />
** Robert Lyon<br />
* Agenda<br />
** `make minaccept` updates : postponed for Bob being present<br />
** `make security` updates: still needs attention<br />
** PHP 8.2 compatibility<br />
*** Mahara Core has no Errors or Warnings <br />
*** Third party libraries in the Mahara codebase still have some issues, but not a lot. Updates may resolve these.<br />
** Project wide code linter<br />
*** [https://github.com/PHPCompatibility/PHPCompatibility PHPCodeSniffer]<br />
*** [https://www.phpro.be/en/partners-and-tools/grumphp GrumPHP]<br />
*** A JS linter will also be needed but will discuss in the future<br />
*** [[Developer Area/Coding guidelines|https://wiki.mahara.org/wiki/Developer_Area/Coding_guidelines]]<br />
* Other business<br />
** Adam - Is there object storage support in Mahara?<br />
*** There is an [https://github.com/catalyst/mahara-module_objectfs S3 module]. This is one Adam already knew about and has raised [https://github.com/catalyst/mahara-module_objectfs/issues/15 an issue] on it.<br />
*** There is also an OpenStack module in the works, but it isn't public yet.<br />
** Kristina - there are new episodes of the [https://podcast.mahara.org/ podcast].<br />
* Next Developer Meeting<br />
** Who: Bob (Chair), Kristina (Note taker)<br />
** When: Wednesday, 22 March 2023 at 23:00 UTC</div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/Notes&diff=13512
User:Gold/Notes
2022-12-21T22:09:36Z
<p>Gold: Created page with "* Help Icons"</p>
<hr />
<div>* [[Developer_Area/Core_Subsystems/Form_API_(Pieforms)/Form_APIElements/Help_Icon|Help Icons]]</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Core_Subsystems/Form_API_(Pieforms)/Form_APIElements/Help_Icon&diff=13511
Developer Area/Core Subsystems/Form API (Pieforms)/Form APIElements/Help Icon
2022-12-21T22:08:25Z
<p>Gold: Notes on the Help Icon in Pieforms</p>
<hr />
<div>Help Icons can be added to Pieform elements by the addition of <syntaxhighlight inline lang="php">'help' => true</syntaxhighlight> to the form element array. This will generate a help icon that will load a file via an AJAX callback.<br />
<br />
The file name is constructed in [https://git.mahara.org/search?search=function+get_helpfile_location&nav_source=navbar&project_id=4&group_id=9&search_code=true&repository_ref=main get_helpfile_location()] and requires that the form also has <syntaxhighlight inline lang="php">pluginname</syntaxhighlight> and <syntaxhighlight inline lang="php">plugintype</syntaxhighlight> also set.<br />
<br />
Optional: <syntaxhighlight inline lang="php">'helpinlabel' => true</syntaxhighlight> can be set to move the help icon into the label so it is close to the text of the label rather than the default location on the far right of the rendered element. This may be of use when a form has non-default layout.<br />
<br />
Minimal example:<br />
<syntaxhighlight lang="php"><br />
$searchform = [<br />
'name' => 'exampleform',<br />
'plugintype' => 'core',<br />
'pluginname' => 'view',<br />
'elements' => [<br />
'examplecheckbox' => [<br />
'type' => 'checkbox',<br />
'class' => 'stacked',<br />
'title' => get_string('examplecheckboxtitle', 'view'),<br />
'defaultvalue' => $examplecheckbox,<br />
'help' => true,<br />
'helpinlabel' => true,<br />
],<br />
],<br />
];<br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=Releases&diff=13446
Releases
2022-11-01T02:30:05Z
<p>Gold: /* Current and upcoming releases */ Added 22.04.3 to the releases</p>
<hr />
<div>=Release cycle and version support=<br />
<p>A new major version of Mahara is released every 6 months, in April and October. The version numbers reflect the year and the month in which a version was released. See [[Developer_Area/Version_Numbering_Policy|Version Numbering Policy]] for more details.<br><br />
<br />
{| class="wikitable" style="padding:0em; text-align:left" summary="Mahara's six monthly cycle for April and October releases."<br />
! scope="col" style="text-align:left; background-color:#566d31; color:#fff;" |Release cycle<br />
! scope="col" style="text-align:left;" |Nov - Apr<br />
! scope="col" style="text-align:left;" |May - Oct<br />
|-<br />
! scope="row" style="text-align:left;" |Feature freeze<br />
| style="background-color:#fff;" |Early February<br />
| style="background-color:#fff;" |Early August<br />
|-<br />
! scope="row" style="text-align:left;" |UI freeze<br />
| style="background-color:#fff;" |Early March<br />
| style="background-color:#fff;" |Early September<br />
|-<br />
! scope="row" style="text-align:left;" |Release candidate<br />
| style="background-color:#fff;" |Mid March<br />
| style="background-color:#fff;" |Mid September<br />
|-<br />
! scope="row" style="text-align:left;" |Official release<br />
| style="background-color:#fff;" |Late April<br />
| style="background-color:#fff;" |Late October<br />
|-<br />
|}<br />
<ul><br />
<li> Each release has 16 weeks before feature freeze.</li><br />
<li>For each release, We've put feature freeze at a month before the release candidate. Only non-feature bug fixes will be committed after this </li><br />
<li>The week before the release candidates is a UI freeze. This is a freeze to string changes and theme changes. String or UI fixes will need to be at least high importance.</li><br />
</ul></p><br />
<p></p><br />
<p><strong>The standard support lifetime of a major version is 18 months (3 release cycles):</strong><br><br />
<ul><br />
<li>Receives bug fixes and security fixes for the first 6 months</li><br />
<li>Receives security fixes only, for an additional 12 months</li><br />
</ul><br />
In the event that a major release substantially breaks backwards compatibility, we may declare the previous release to be an extended support release which will receive security fixes for 30 months (5 release cycles), to give sites more time to upgrade.</p><br />
<br />
=Older releases (pre Mahara 1.6)=<br />
<br />
Prior to Mahara 1.6, Mahara major versions were released as needed, according to no particular schedule. During the transition period to the 6 month release cycle, support for the older releases was provided for 2 release cycles.<br />
<br />
=Current and upcoming releases=<br />
<p>The latest <strong>stable</strong> version of Mahara is 22.04, released on 27 April 2022.</p><br />
<br />
<p>'''Note:''' This page is updated manually, and sometimes falls behind. For 100% up-to-date information, look for the release labelled "Current Stable Release" on our [https://launchpad.net/mahara/+series Launchpad release page], or use the "Download" link on the front page of https://mahara.org</p><br />
<br />
{| class="wikitable"<br />
| style="background:#ba2025; color:#fff" |Unsupported<br />
| style="background:#566d31; color:#fff" |Currently in support<br />
|Not yet released<br />
|}<br />
<br />
<!-- This is the template for the table sections below<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff"|'''[https://mahara.org/interaction/forum/topic.php?id= Major point release number]'''<br />
|<br />
* [https://launchpad.net/mahara/ Minor point release number]<br />
| '''Major point release date''' <br><br />
* Minor point release dates<br />
| style="background:#566d31; color:#fff" | End of support date<br />
|-<br />
--><br />
<br />
{| class="wikitable" summary="Release notes for major and minor versions of Mahara, official release dates and version support end date. Versions are listed in reverse chronological order. Table is four columns wide and 22 rows deep."<br />
|+ style="text-align:left;" |Mahara release notes and end of support<br />
|-<br />
! style="text-align:left;" |Major release<br />
! style="text-align:left;" |Minor release<br />
! style="text-align:left;" |Release date<br />
! style="text-align:left;" |End of support<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=9097 22.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/22.10.0#release-notes 22.10.0]<br />
|'''31 October 2022''' <br><br />
<br />
*31 October 2022<br />
| style="background:#566d31; color:#fff" |April 2024<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=9097 22.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/22.04.3#release-notes 22.04.3]<br />
*[https://launchpad.net/mahara/+milestone/22.04.2#release-notes 22.04.2]<br />
*[https://launchpad.net/mahara/+milestone/22.04.1#release-notes 22.04.1]<br />
*[https://launchpad.net/mahara/+milestone/22.04.0#release-notes 22.04.0]<br />
|'''27 April 2022''' <br><br />
<br />
*31 October 2022<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
| style="background:#566d31; color:#fff" |October 2023<br />
|-<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8955 21.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/21.10.5#release-notes 21.10.5]<br />
*[https://launchpad.net/mahara/+milestone/21.10.4#release-notes 21.10.4]<br />
*[https://launchpad.net/mahara/+milestone/21.10.3#release-notes 21.10.3]<br />
*[https://launchpad.net/mahara/+milestone/21.10.2#release-notes 21.10.2]<br />
*[https://launchpad.net/mahara/+milestone/21.10.1#release-notes 21.10.1]<br />
*[https://launchpad.net/mahara/+milestone/21.10.0#release-notes 21.10.0]<br />
|'''29 October 2021''' <br><br />
<br />
*31 October 2022<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
| style="background:#566d31; color:#fff" |April 2023<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8817 21.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/21.04.7#release-notes 21.04.7]<br />
*[https://launchpad.net/mahara/+milestone/21.04.6#release-notes 21.04.6]<br />
*[https://launchpad.net/mahara/+milestone/21.04.5#release-notes 21.04.5]<br />
*[https://launchpad.net/mahara/+milestone/21.04.4#release-notes 21.04.4]<br />
*[https://launchpad.net/mahara/+milestone/21.04.3#release-notes 21.04.3]<br />
*[https://launchpad.net/mahara/+milestone/21.04.2#release-notes 21.04.2]<br />
*[https://launchpad.net/mahara/+milestone/21.04.1#release-notes 21.04.1]<br />
*[https://launchpad.net/mahara/+milestone/21.04.0#release-notes 21.04.0]<br />
|'''30 April 2021''' <br><br />
<br />
*31 Oct 2022<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
*21 May 2021<br />
*30 April 2021<br />
| style="background:#ba2025; color:#fff" |October 2022<br />
(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8728 20.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/20.10.6#release-notes 20.10.6]<br />
*[https://launchpad.net/mahara/+milestone/20.10.5#release-notes 20.10.5]<br />
*[https://launchpad.net/mahara/+milestone/20.10.4#release-notes 20.10.4]<br />
*[https://launchpad.net/mahara/+milestone/20.10.3#release-notes 20.10.3]<br />
*[https://launchpad.net/mahara/+milestone/20.10.2#release-notes 20.10.2]<br />
*[https://launchpad.net/mahara/+milestone/20.10.1#release-notes 20.10.1]<br />
*[https://launchpad.net/mahara/+milestone/20.10.0#release-notes 20.10.0]<br />
|'''22 October 2020'''<br><br />
<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
*21 May 2021<br />
*4 May 2021<br />
*22 October 2020<br />
| style="background:#ba2025; color:#fff" |April 2022 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8611 20.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/20.04.5#release-notes 20.04.5]<br />
*[https://launchpad.net/mahara/+milestone/20.04.4#release-notes 20.04.4]<br />
*[https://launchpad.net/mahara/+milestone/20.04.3#release-notes 20.04.3]<br />
*[https://launchpad.net/mahara/+milestone/20.04.2#release-notes 20.04.2]<br />
*[https://launchpad.net/mahara/+milestone/20.04.1#release-notes 20.04.1]<br />
*[https://launchpad.net/mahara/20.04/20.04.0#release-notes 20.04.0]<br />
|'''29 April 2020'''<br><br />
<br />
*29 October 2021<br />
*22 May 2021<br />
*4 May 2021<br />
*22 October 2020<br />
*4 August 2020<br />
*29 April 2020<br />
| style="background:#ba2025; color:#fff" |October 2021 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8533 19.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/19.10.6#releasenotes 19.10.6]<br />
*[https://launchpad.net/mahara/+milestone/19.10.5#releasenotes 19.10.5]<br />
*[https://launchpad.net/mahara/+milestone/19.10.4#release-notes 19.10.4]<br />
*[https://launchpad.net/mahara/+milestone/19.10.3#release-notes 19.10.3]<br />
*[https://launchpad.net/mahara/+milestone/19.10.2#release-notes 19.10.2]<br />
*[https://launchpad.net/mahara/19.10/19.10.1#release-notes 19.10.1]<br />
*[https://launchpad.net/mahara/19.10/19.10.0#release-notes 19.10.0]<br />
|'''31 October 2019''' <br><br />
<br />
*4 May 2021<br />
*22 October 2020<br />
*4 August 2020<br />
*30 April 2020<br />
*4 April 2020<br />
*12 November 2019<br />
*31 October 2019<br />
| style="background:#ba2025; color:#fff" |April 2021 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8444 19.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/19.04/19.04.5#release-notes 19.04.5]<br />
*[https://launchpad.net/mahara/19.04/19.04.4#release-notes 19.04.4]<br />
*[https://launchpad.net/mahara/19.04/19.04.3#release-notes 19.04.3]<br />
*[https://launchpad.net/mahara/19.04/19.04.2#release-notes 19.04.2]<br />
*[https://launchpad.net/mahara/19.04/19.04.1#release-notes 19.04.1]<br />
*[https://launchpad.net/mahara/19.04/19.04.0#release-notes 19.04.0]<br />
|'''30 April 2019''' <br><br />
<br />
*30 April 2020<br />
*4 March 2020<br />
*12 November 2019<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
| style="background:#ba2025; color:#fff" |October 2020 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8365 18.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/18.10/18.10.6#release-notes 18.10.6]<br />
*[https://launchpad.net/mahara/18.10/18.10.5#release-notes 18.10.5]<br />
*[https://launchpad.net/mahara/18.10/18.10.4#release-notes 18.10.4]<br />
*[https://launchpad.net/mahara/18.10/18.10.3#release-notes 18.10.3]<br />
*[https://launchpad.net/mahara/18.10/18.10.2#release-notes 18.10.2]<br />
*[https://launchpad.net/mahara/18.10/18.10.1#release-notes 18.10.1]<br />
*[https://launchpad.net/mahara/18.10/18.10.0#release-notes 18.10.0]<br />
|'''25 October 2018''' <br><br />
<br />
*30 April 2020<br />
*4 March 2020<br />
*12 November 2019<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
*25 October 2018<br />
| style="background:#ba2025; color:#fff" |April 2020 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8216 18.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/18.04/18.04.6#release-notes 18.04.6]<br />
*[https://launchpad.net/mahara/18.04/18.04.5#release-notes 18.04.5]<br />
*[https://launchpad.net/mahara/18.04/18.04.4#release-notes 18.04.4]<br />
*[https://launchpad.net/mahara/18.04/18.04.3#release-notes 18.04.3]<br />
*[https://launchpad.net/mahara/18.04/18.04.2#release-notes 18.04.2]<br />
*[https://launchpad.net/mahara/18.04/18.04.1#release-notes 18.04.1]<br />
*[https://launchpad.net/mahara/18.04/18.04.0#release-notes 18.04.0]<br />
|'''6 April 2018''' <br><br />
<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
| style="background:#ba2025; color:#fff" |October 2019 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8084 17.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/17.10/17.10.9#release-notes 17.10.9]<br />
*[https://launchpad.net/mahara/17.10/17.10.8#release-notes 17.10.8]<br />
*[https://launchpad.net/mahara/17.10/17.10.7#release-notes 17.10.7]<br />
*[https://launchpad.net/mahara/17.10/17.10.6#release-notes 17.10.6]<br />
*[https://launchpad.net/mahara/17.10/17.10.5#release-notes 17.10.5]<br />
*[https://launchpad.net/mahara/17.10/17.10.4#release-notes 17.10.4]<br />
*[https://launchpad.net/mahara/17.10/17.10.3#release-notes 17.10.3]<br />
*[https://launchpad.net/mahara/17.10/17.10.2#release-notes 17.10.2]<br />
*[https://launchpad.net/mahara/17.10/17.10.1#release-notes 17.10.1]<br />
*[https://launchpad.net/mahara/17.10/17.10.0#release-notes 17.10.0]<br />
|'''30 October 2017''' <br><br />
<br />
*30 April 2019<br />
*30 April 2019<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*14 December 2017<br />
*30 October 2017<br />
| style="background:#ba2025; color:#fff;" |30 April 2019 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7926 17.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/17.04/17.04.10#release-notes 17.04.10]<br />
*[https://launchpad.net/mahara/17.04/17.04.9#release-notes 17.04.9]<br />
*[https://launchpad.net/mahara/17.04/17.04.8#release-notes 17.04.8]<br />
*[https://launchpad.net/mahara/17.04/17.04.7#release-notes 17.04.7]<br />
*[https://launchpad.net/mahara/17.04/17.04.6#release-notes 17.04.6]<br />
*[https://launchpad.net/mahara/17.04/17.04.5#release-notes 17.04.5]<br />
*[https://launchpad.net/mahara/17.04/17.04.4#release-notes 17.04.4]<br />
*[https://launchpad.net/mahara/17.04/17.04.3#release-notes 17.04.3]<br />
*[https://launchpad.net/mahara/17.04/17.04.2#release-notes 17.04.2]<br />
*[https://launchpad.net/mahara/17.04/17.04.1#release-notes 17.04.1]<br />
*[https://launchpad.net/mahara/17.04/17.04.0#release-notes 17.04.0]<br />
|'''27 April 2017''' <br><br />
<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*12 May 2017<br />
*27 April 2017<br />
| style="background:#ba2025; color:#fff" |25 October 2018 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7750 16.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/16.10/16.10.9#release-notes 16.10.9]<br />
*[https://launchpad.net/mahara/16.10/16.10.8#release-notes 16.10.8]<br />
*[https://launchpad.net/mahara/16.10/16.10.7#release-notes 16.10.7]<br />
*[https://launchpad.net/mahara/16.10/16.10.6#release-notes 16.10.6]<br />
*[https://launchpad.net/mahara/16.10/16.10.5#release-notes 16.10.5]<br />
*[https://launchpad.net/mahara/16.10/16.10.4#release-notes 16.10.4]<br />
*[https://launchpad.net/mahara/16.10/16.10.3#release-notes 16.10.3]<br />
*[https://launchpad.net/mahara/16.10/16.10.2#release-notes 16.10.2]<br />
*[https://launchpad.net/mahara/16.10/16.10.1#release-notes 16.10.1]<br />
*[https://launchpad.net/mahara/16.10/16.10.0#release-notes 16.10.0]<br />
|'''21 October 2016''' <br><br />
<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*13 December 2016<br />
*21 October 2016<br />
| style="background:#ba2025; color:#fff" |06 April 2018 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7585 16.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/16.04/16.04.9#release-notes 16.04.9]<br />
*[https://launchpad.net/mahara/16.04/16.04.8#release-notes 16.04.8]<br />
*[https://launchpad.net/mahara/16.04/16.04.7#release-notes 16.04.7]<br />
*[https://launchpad.net/mahara/16.04/16.04.6#release-notes 16.04.6]<br />
*[https://launchpad.net/mahara/16.04/16.04.5#release-notes 16.04.5]<br />
*[https://launchpad.net/mahara/16.04/16.04.4#release-notes 16.04.4]<br />
*[https://launchpad.net/mahara/16.04/16.04.3#release-notes 16.04.3]<br />
*[https://launchpad.net/mahara/16.04/16.04.2#release-notes 16.04.2]<br />
*[https://launchpad.net/mahara/16.04/16.04.1#release-notes 16.04.1]<br />
*[https://launchpad.net/mahara/16.04/16.04.0#release-notes 16.04.0]<br />
|'''28 April 2016''' <br><br />
<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*11 July 2016<br />
*9 June 2016<br />
*28 April 2016<br />
| style="background:#ba2025; color:#fff" |30 October 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7420 15.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/15.10/15.10.8#release-notes 15.10.8]<br />
*[https://launchpad.net/mahara/15.10/15.10.7#release-notes 15.10.7]<br />
*[https://launchpad.net/mahara/15.10/15.10.6#release-notes 15.10.6]<br />
*[https://launchpad.net/mahara/15.10/15.10.5#release-notes 15.10.5]<br />
*[https://launchpad.net/mahara/15.10/15.10.4#release-notes 15.10.4]<br />
*[https://launchpad.net/mahara/15.10/15.10.3#release-notes 15.10.3]<br />
*[https://launchpad.net/mahara/15.10/15.10.2#release-notes 15.10.2]<br />
*[https://launchpad.net/mahara/15.10/15.10.1#release-notes 15.10.1]<br />
*[https://launchpad.net/mahara/15.10/15.10.0#release-notes 15.10.0]<br />
|'''23 October 2015''' <br><br />
<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*11 July 2016<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*23 October 2015<br />
| style="background:#ba2025; color:#fff" |26 April 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7171 15.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/15.04/15.04.15#release-notes 15.04.15]<br />
*[https://launchpad.net/mahara/15.04/15.04.14#release-notes 15.04.14]<br />
*[https://launchpad.net/mahara/15.04/15.04.13#release-notes 15.04.13]<br />
*[https://launchpad.net/mahara/15.04/15.04.12#release-notes 15.04.12]<br />
*[https://launchpad.net/mahara/15.04/15.04.11#release-notes 15.04.11]<br />
*[https://launchpad.net/mahara/15.04/15.04.10#release-notes 15.04.10]<br />
*[https://launchpad.net/mahara/15.04/15.04.9#release-notes 15.04.9]<br />
*[https://launchpad.net/mahara/15.04/15.04.8#release-notes 15.04.8]<br />
*[https://launchpad.net/mahara/15.04/15.04.7#release-notes 15.04.7]<br />
*[https://launchpad.net/mahara/15.04/15.04.6#release-notes 15.04.6]<br />
*[https://launchpad.net/mahara/15.04/15.04.5#release-notes 15.04.5]<br />
*[https://launchpad.net/mahara/15.04/15.04.4#release-notes 15.04.4]<br />
*[https://launchpad.net/mahara/15.04/15.04.3#release-notes 15.04.3]<br />
*[https://launchpad.net/mahara/15.04/15.04.2#release-notes 15.04.2]<br />
*[https://launchpad.net/mahara/15.04/15.04.1#release-notes 15.04.1]<br />
*[https://launchpad.net/mahara/15.04/15.04.0#release-notes 15.04.0]<br />
|'''23 October 2015''' <br><br />
<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*12 July 2016<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*29 May 2015<br />
*17 April 2015<br />
| style="background:#ba2025; color:#fff" |30 October 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=6509 1.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.10/1.10.10#release-notes 1.10.10]<br />
*[https://launchpad.net/mahara/1.10/1.10.9#release-notes 1.10.9]<br />
*[https://launchpad.net/mahara/1.10/1.10.8#release-notes 1.10.8]<br />
*[https://launchpad.net/mahara/1.10/1.10.7#release-notes 1.10.7]<br />
*[https://launchpad.net/mahara/1.10/1.10.6#release-notes 1.10.6]<br />
*[https://launchpad.net/mahara/1.10/1.10.5#release-notes 1.10.5]<br />
*[https://launchpad.net/mahara/1.10/1.10.4#release-notes 1.10.4]<br />
*[https://launchpad.net/mahara/1.10/1.10.3#release-notes 1.10.3]<br />
*[https://launchpad.net/mahara/1.10/1.10.2#release-notes 1.10.2]<br />
*[https://launchpad.net/mahara/1.10/1.10.1#release-notes 1.10.1]<br />
*[https://launchpad.net/mahara/1.10/1.10.0#release-notes 1.10.0]<br />
|'''21 October 2014''' <br><br />
<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*29 May 2015<br />
*20 April 2015<br />
*13 January 2015<br />
*26 November 2014<br />
*21 October 2014<br />
| style="background:#ba2025; color:#fff" |2 May 2016 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=6254 1.9]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.9/1.9.9#release-notes 1.9.9]<br />
*[https://launchpad.net/mahara/1.9/1.9.8#release-notes 1.9.8]<br />
*[https://launchpad.net/mahara/1.9/1.9.7#release-notes 1.9.7]<br />
*[https://launchpad.net/mahara/1.9/1.9.6#release-notes 1.9.6]<br />
*[https://launchpad.net/mahara/1.9/1.9.5#release-notes 1.9.5]<br />
*[https://launchpad.net/mahara/1.9/1.9.4#release-notes 1.9.4]<br />
*[https://launchpad.net/mahara/1.9/1.9.3#release-notes 1.9.3]<br />
*[https://launchpad.net/mahara/1.9/1.9.2#release-notes 1.9.2]<br />
*[https://launchpad.net/mahara/1.9/1.9.1#release-notes 1.9.1]<br />
*[https://launchpad.net/mahara/1.9/1.9.0#release-notes 1.9.0]<br />
|'''15 April 2014''' <br><br />
<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*26 November 2014<br />
*22 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*15 April 2014<br />
| style="background:#ba2025; color:#fff" |27 October 2015 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=5833 1.8]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.8/1.8.7#release-notes 1.8.7]<br />
*[https://launchpad.net/mahara/1.8/1.8.6#release-notes 1.8.6]<br />
*[https://launchpad.net/mahara/1.8/1.8.5#release-notes 1.8.5]<br />
*[https://launchpad.net/mahara/1.8/1.8.4#release-notes 1.8.4]<br />
*[https://launchpad.net/mahara/1.8/1.8.3#release-notes 1.8.3]<br />
*[https://launchpad.net/mahara/1.8/1.8.2#release-notes 1.8.2]<br />
*[https://launchpad.net/mahara/1.8/1.8.1#release-notes 1.8.1]<br />
*[https://launchpad.net/mahara/1.8/1.8.0#release-notes 1.8.0]<br />
|'''24 October 2013''' <br><br />
<br />
*20 April 2015<br />
*26 November 2014<br />
*22 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*3 April 2014<br />
*18 December 2013<br />
*24 October 2013<br />
| style="background:#ba2025; color:#fff" |20 April 2015 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=5371 1.7]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.7/1.7.8#release-notes 1.7.8]<br />
*[https://launchpad.net/mahara/1.7/1.7.7#release-notes 1.7.7]<br />
*[https://launchpad.net/mahara/1.7/1.7.6#release-notes 1.7.6]<br />
*[https://launchpad.net/mahara/1.7/1.7.5#release-notes 1.7.5]<br />
*[https://launchpad.net/mahara/1.7/1.7.4#release-notes 1.7.4]<br />
*[https://launchpad.net/mahara/1.7/1.7.3#release-notes 1.7.3]<br />
*[https://launchpad.net/mahara/1.7/1.7.2#release-notes 1.7.2]<br />
*[https://launchpad.net/mahara/1.7/1.7.1#release-notes 1.7.1]<br />
*[https://launchpad.net/mahara/1.7/1.7.0#release-notes 1.7.0]<br />
|'''19 April 2013''' <br><br />
<br />
*21 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*29 October 2013<br />
*3 October 2013<br />
*3 April 2014<br />
*18 December 2013<br />
*24 October 2013<br />
*19 April 2013<br />
| style="background:#ba2025; color:#fff" |21 October 2014 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=4967 1.6]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.6/1.6.10#release-notes 1.6.10]<br />
*[https://launchpad.net/mahara/1.6/1.6.9#release-notes 1.6.9]<br />
*[https://launchpad.net/mahara/1.6/1.6.8#release-notes 1.6.8]<br />
*[https://launchpad.net/mahara/1.6/1.6.7#release-notes 1.6.7]<br />
*[https://launchpad.net/mahara/1.6/1.6.6#release-notes 1.6.6]<br />
*[https://launchpad.net/mahara/1.6/1.6.5#release-notes 1.6.5]<br />
*[https://launchpad.net/mahara/1.6/1.6.4#release-notes 1.6.4]<br />
*[https://launchpad.net/mahara/1.6/1.6.3#release-notes 1.6.3]<br />
*[https://launchpad.net/mahara/1.6/1.6.2#release-notes 1.6.2]<br />
*[https://launchpad.net/mahara/1.6/1.6.1#release-notes 1.6.1]<br />
*[https://launchpad.net/mahara/1.6/1.6.0#release-notes 1.6.0]<br />
|'''19 October 2019''' <br><br />
<br />
*13 May 2014<br />
*3 April 2014<br />
*29 October 2013<br />
*3 October 2013<br />
*25 July 2013<br />
*2 May 2013<br />
*15 April 2013<br />
*15 February 2013<br />
*23 November 2012<br />
*24 October 2012<br />
*19 October 2012<br />
| style="background:#ba2025; color:#fff" |29 April 2014 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=4469 1.5]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.5/1.5.13#release-notes 1.5.13]<br />
*[https://launchpad.net/mahara/1.5/1.5.12#release-notes 1.5.12]<br />
*[https://launchpad.net/mahara/1.5/1.5.11#release-notes 1.5.11]<br />
*[https://launchpad.net/mahara/1.5/1.5.10#release-notes 1.5.10]<br />
*[https://launchpad.net/mahara/1.5/1.5.9#release-notes 1.5.9]<br />
*[https://launchpad.net/mahara/1.5/1.5.8#release-notes 1.5.8]<br />
*[https://launchpad.net/mahara/1.5/1.5.7#release-notes 1.5.7]<br />
*[https://launchpad.net/mahara/1.5/1.5.6#release-notes 1.5.6]<br />
*[https://launchpad.net/mahara/1.5/1.5.4#release-notes 1.5.4]<br />
*[https://launchpad.net/mahara/1.5/1.5.3#release-notes 1.5.3]<br />
*[https://launchpad.net/mahara/1.5/1.5.2#release-notes 1.5.2]<br />
*[https://launchpad.net/mahara/1.5/1.5.1#release-notes 1.5.1]<br />
*[https://launchpad.net/mahara/1.5/1.5.0#release-notes 1.5.0]<br />
|'''17 April 2012''' <br><br />
<br />
*25 October 2013<br />
*3 October 2013<br />
*24 July 2013<br />
*2 May 2013<br />
*15 April 2013<br />
*15 February 2013<br />
*23 November 2012<br />
*17 October 2012<br />
*10 October 2012<br />
*14 September 2012<br />
*31 July 2012<br />
*3 May 2012<br />
*17 April 2012<br />
| style="background:#ba2025; color:#fff" |29 October 2013 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=3744 1.4]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.6 1.4.6]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.5 1.4.5]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.4 1.4.4]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.3 1.4.3]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.2 1.4.2]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.1 1.4.1]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.0 1.4.0]<br />
|'''13 June 2011''' <br><br />
<br />
*17 October 2012<br />
*10 October 2012<br />
*14 September 2012<br />
*31 July 2011<br />
*6 March 2011<br />
*3 November 2011<br />
*13 June 2011<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=2252 1.3]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.3.8 1.3.8]<br />
*[https://launchpad.net/mahara/+milestone/1.3.7 1.3.7]<br />
*[https://launchpad.net/mahara/+milestone/1.3.6 1.3.6]<br />
*[https://launchpad.net/mahara/+milestone/1.3.5 1.3.5]<br />
*[https://launchpad.net/mahara/+milestone/1.3.4 1.3.4]<br />
*[https://launchpad.net/mahara/+milestone/1.3.3 1.3.3]<br />
*[https://launchpad.net/mahara/+milestone/1.3.2 1.3.2]<br />
*[https://launchpad.net/mahara/+milestone/1.3.1 1.3.1]<br />
*[https://launchpad.net/mahara/+milestone/1.3.0 1.3.0]<br />
|'''10 September 2010''' <br><br />
<br />
*5 March 2012<br />
*3 Novemver 2011<br />
*10 May 2011<br />
*28 March 2011<br />
*24 March 2011<br />
*7 November 2010<br />
*8 October 2010<br />
*17 September 2010<br />
*10 September 2010<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=1226 1.2]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.2.9 1.2.9]<br />
*[https://launchpad.net/mahara/+milestone/1.2..8 1.2.8]<br />
*[https://launchpad.net/mahara/+milestone/1.2.7 1.2.7]<br />
*[https://launchpad.net/mahara/+milestone/1.2.6 1.2.6]<br />
*[https://launchpad.net/mahara/+milestone/1.2.5 1.2.5]<br />
*[https://launchpad.net/mahara/+milestone/1.2.4 1.2.4]<br />
*[https://launchpad.net/mahara/+milestone/1.2.3 1.2.3]<br />
*[https://launchpad.net/mahara/+milestone/1.2.2 1.2.2]<br />
*[https://launchpad.net/mahara/+milestone/1.2.1 1.2.1]<br />
*[https://launchpad.net/mahara/+milestone/1.2.0 1.2.0]<br />
|'''16 November 2009''' <br><br />
<br />
*10 May 2011<br />
*24 March 2011<br />
*1 September 2011<br />
*2 July 2010<br />
*6 April 2010<br />
*8 February 2010<br />
*8 December 2009<br />
*8 December 2009<br />
*16 November 2009<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://launchpad.net/mahara/+milestone/1.0.10 1.1]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.1.9 1.1.9]<br />
*[https://launchpad.net/mahara/+milestone/1.1.8 1.1.8]<br />
*[https://launchpad.net/mahara/+milestone/1.1.7 1.1.7]<br />
*[https://launchpad.net/mahara/+milestone/1.1.6 1.1.6]<br />
*[https://launchpad.net/mahara/+milestone/1.1.5 1.1.5]<br />
*[https://launchpad.net/mahara/+milestone/1.1.4 1.1.4]<br />
*[https://launchpad.net/mahara/+milestone/1.1.3 1.1.3]<br />
*[https://launchpad.net/mahara/+milestone/1.1.2 1.1.2]<br />
*[https://launchpad.net/mahara/+milestone/1.1.1 1.1.1]<br />
*[https://launchpad.net/mahara/+milestone/1.1.0 1.1.0]<br />
|'''25 February 2009''' <br><br />
<br />
*2 July 2010<br />
*6 April 2010<br />
*28 October 2009<br />
*21 June 2009<br />
*10 June 2009<br />
*21 April 2009<br />
*9 March 2009<br />
*26 February 2009<br />
*25 February 2009<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=292 1.0]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.0.15 1.0.15]<br />
*[https://launchpad.net/mahara/+milestone/1.0.14 1.0.14]<br />
*[https://launchpad.net/mahara/+milestone/1.0.13 1.0.13]<br />
*[https://launchpad.net/mahara/+milestone/1.0.12 1.0.12]<br />
*[https://launchpad.net/mahara/+milestone/1.0.11 1.0.11]<br />
*[https://launchpad.net/mahara/+milestone/1.0.10 1.0.10]<br />
*[[Releases/1.0.9|1.0.9]]<br />
*[[Releases/1.0.8|1.0.8]]<br />
*[[Releases/1.0.7|1.0.7]]<br />
|'''9 March 2009''' <br><br />
<br />
*2 July 2010<br />
*6 April 2010<br />
*28 October 2009<br />
*21 June 2009<br />
*21 April 2009<br />
*9 March 2009<br />
*Unavailable<br />
*Unavailable<br />
*Unavailable<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
|}<br />
<br />
=Definition of support=<br />
<br />
Being "supported" means:<br />
<br />
*The release team is committed to making available updates to Mahara that are security related. See [[Security]] to find out how to report security bugs to us.<br />
*Occasionally, some other serious bug fixes will be included, but these are not guaranteed. If you find another type of bug, please let us know by reporting it on the mahara.org forums or directly on Launchpad: https://bugs.launchpad.net/mahara/+filebug<br />
<br />
=Specific backporting rules=<br />
<br />
When deciding which bugs to backport to supported branches, these are the general principles:<br />
<br />
*'''[[Security]] bugs'''<br />
**'''All''' Critical and High priority security bugs should be backported.<br />
**'''Nearly all''' Medium and Low priority security bugs should be backported. At the maintenance team's discretion, these might not be backported if:<br />
***Backporting would be technically difficult due to differences between Mahara versions.<br />
***The bug fix requires database upgrades or dataroot manipulations.<br />
***The bug fix otherwise introduces a high risk of [https://en.wikipedia.org/wiki/Software_regression regressions].<br />
<br />
*'''Non-security bugs'''<br />
**'''All''' Critical bugs should be backported.<br />
**'''Most''' High priority bugs should be backported. At the maintenance team's discretion, these might not be backported if:<br />
***Backporting would be technically difficult due to differences between Mahara versions.<br />
***The bug fix requires database upgrades or dataroot manipulations.<br />
***The bug fix otherwise introduces a high risk of [https://en.wikipedia.org/wiki/Software_regression regressions].<br />
**'''No''' Medium or Low priority non-security bugs are backported.<br />
**'''No''' Wishlist bugs are backported. Wishlist items are only added to the current development branch.<br />
<br />
If you want to backport certain bug fixes or new features to your own instance of Mahara, you can do so on your own as the code is available.<br />
<br />
See [[Developer_Area/Bug_Status#Importance|Bug Status:Importance]] for the guidelines on how we decide whether a bug is Critical, High, Medium, or Low.<br />
<br />
[[Category:Release Notes]]</div>
Gold
https://wiki.mahara.org/index.php?title=Releases&diff=13445
Releases
2022-11-01T01:12:34Z
<p>Gold: /* Current and upcoming releases */ Updating the colour of End of support cell for the 21.04 branch</p>
<hr />
<div>=Release cycle and version support=<br />
<p>A new major version of Mahara is released every 6 months, in April and October. The version numbers reflect the year and the month in which a version was released. See [[Developer_Area/Version_Numbering_Policy|Version Numbering Policy]] for more details.<br><br />
<br />
{| class="wikitable" style="padding:0em; text-align:left" summary="Mahara's six monthly cycle for April and October releases."<br />
! scope="col" style="text-align:left; background-color:#566d31; color:#fff;" |Release cycle<br />
! scope="col" style="text-align:left;" |Nov - Apr<br />
! scope="col" style="text-align:left;" |May - Oct<br />
|-<br />
! scope="row" style="text-align:left;" |Feature freeze<br />
| style="background-color:#fff;" |Early February<br />
| style="background-color:#fff;" |Early August<br />
|-<br />
! scope="row" style="text-align:left;" |UI freeze<br />
| style="background-color:#fff;" |Early March<br />
| style="background-color:#fff;" |Early September<br />
|-<br />
! scope="row" style="text-align:left;" |Release candidate<br />
| style="background-color:#fff;" |Mid March<br />
| style="background-color:#fff;" |Mid September<br />
|-<br />
! scope="row" style="text-align:left;" |Official release<br />
| style="background-color:#fff;" |Late April<br />
| style="background-color:#fff;" |Late October<br />
|-<br />
|}<br />
<ul><br />
<li> Each release has 16 weeks before feature freeze.</li><br />
<li>For each release, We've put feature freeze at a month before the release candidate. Only non-feature bug fixes will be committed after this </li><br />
<li>The week before the release candidates is a UI freeze. This is a freeze to string changes and theme changes. String or UI fixes will need to be at least high importance.</li><br />
</ul></p><br />
<p></p><br />
<p><strong>The standard support lifetime of a major version is 18 months (3 release cycles):</strong><br><br />
<ul><br />
<li>Receives bug fixes and security fixes for the first 6 months</li><br />
<li>Receives security fixes only, for an additional 12 months</li><br />
</ul><br />
In the event that a major release substantially breaks backwards compatibility, we may declare the previous release to be an extended support release which will receive security fixes for 30 months (5 release cycles), to give sites more time to upgrade.</p><br />
<br />
=Older releases (pre Mahara 1.6)=<br />
<br />
Prior to Mahara 1.6, Mahara major versions were released as needed, according to no particular schedule. During the transition period to the 6 month release cycle, support for the older releases was provided for 2 release cycles.<br />
<br />
=Current and upcoming releases=<br />
<p>The latest <strong>stable</strong> version of Mahara is 22.04, released on 27 April 2022.</p><br />
<br />
<p>'''Note:''' This page is updated manually, and sometimes falls behind. For 100% up-to-date information, look for the release labelled "Current Stable Release" on our [https://launchpad.net/mahara/+series Launchpad release page], or use the "Download" link on the front page of https://mahara.org</p><br />
<br />
{| class="wikitable"<br />
| style="background:#ba2025; color:#fff" |Unsupported<br />
| style="background:#566d31; color:#fff" |Currently in support<br />
|Not yet released<br />
|}<br />
<br />
<!-- This is the template for the table sections below<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff"|'''[https://mahara.org/interaction/forum/topic.php?id= Major point release number]'''<br />
|<br />
* [https://launchpad.net/mahara/ Minor point release number]<br />
| '''Major point release date''' <br><br />
* Minor point release dates<br />
| style="background:#566d31; color:#fff" | End of support date<br />
|-<br />
--><br />
<br />
{| class="wikitable" summary="Release notes for major and minor versions of Mahara, official release dates and version support end date. Versions are listed in reverse chronological order. Table is four columns wide and 22 rows deep."<br />
|+ style="text-align:left;" |Mahara release notes and end of support<br />
|-<br />
! style="text-align:left;" |Major release<br />
! style="text-align:left;" |Minor release<br />
! style="text-align:left;" |Release date<br />
! style="text-align:left;" |End of support<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=9097 22.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/22.10.0#release-notes 22.10.0]<br />
|'''31 October 2022''' <br><br />
<br />
*31 October 2022<br />
| style="background:#566d31; color:#fff" |April 2024<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=9097 22.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/22.04.2#release-notes 22.04.2]<br />
*[https://launchpad.net/mahara/+milestone/22.04.1#release-notes 22.04.1]<br />
*[https://launchpad.net/mahara/+milestone/22.04.0#release-notes 22.04.0]<br />
|'''27 April 2022''' <br><br />
<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
| style="background:#566d31; color:#fff" |October 2023<br />
|-<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8955 21.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/21.10.5#release-notes 21.10.5]<br />
*[https://launchpad.net/mahara/+milestone/21.10.4#release-notes 21.10.4]<br />
*[https://launchpad.net/mahara/+milestone/21.10.3#release-notes 21.10.3]<br />
*[https://launchpad.net/mahara/+milestone/21.10.2#release-notes 21.10.2]<br />
*[https://launchpad.net/mahara/+milestone/21.10.1#release-notes 21.10.1]<br />
*[https://launchpad.net/mahara/+milestone/21.10.0#release-notes 21.10.0]<br />
|'''29 October 2021''' <br><br />
<br />
*31 October 2022<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
| style="background:#566d31; color:#fff" |April 2023<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8817 21.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/21.04.7#release-notes 21.04.7]<br />
*[https://launchpad.net/mahara/+milestone/21.04.6#release-notes 21.04.6]<br />
*[https://launchpad.net/mahara/+milestone/21.04.5#release-notes 21.04.5]<br />
*[https://launchpad.net/mahara/+milestone/21.04.4#release-notes 21.04.4]<br />
*[https://launchpad.net/mahara/+milestone/21.04.3#release-notes 21.04.3]<br />
*[https://launchpad.net/mahara/+milestone/21.04.2#release-notes 21.04.2]<br />
*[https://launchpad.net/mahara/+milestone/21.04.1#release-notes 21.04.1]<br />
*[https://launchpad.net/mahara/+milestone/21.04.0#release-notes 21.04.0]<br />
|'''30 April 2021''' <br><br />
<br />
*31 Oct 2022<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
*21 May 2021<br />
*30 April 2021<br />
| style="background:#ba2025; color:#fff" |October 2022<br />
(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8728 20.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/20.10.6#release-notes 20.10.6]<br />
*[https://launchpad.net/mahara/+milestone/20.10.5#release-notes 20.10.5]<br />
*[https://launchpad.net/mahara/+milestone/20.10.4#release-notes 20.10.4]<br />
*[https://launchpad.net/mahara/+milestone/20.10.3#release-notes 20.10.3]<br />
*[https://launchpad.net/mahara/+milestone/20.10.2#release-notes 20.10.2]<br />
*[https://launchpad.net/mahara/+milestone/20.10.1#release-notes 20.10.1]<br />
*[https://launchpad.net/mahara/+milestone/20.10.0#release-notes 20.10.0]<br />
|'''22 October 2020'''<br><br />
<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
*21 May 2021<br />
*4 May 2021<br />
*22 October 2020<br />
| style="background:#ba2025; color:#fff" |April 2022 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8611 20.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/20.04.5#release-notes 20.04.5]<br />
*[https://launchpad.net/mahara/+milestone/20.04.4#release-notes 20.04.4]<br />
*[https://launchpad.net/mahara/+milestone/20.04.3#release-notes 20.04.3]<br />
*[https://launchpad.net/mahara/+milestone/20.04.2#release-notes 20.04.2]<br />
*[https://launchpad.net/mahara/+milestone/20.04.1#release-notes 20.04.1]<br />
*[https://launchpad.net/mahara/20.04/20.04.0#release-notes 20.04.0]<br />
|'''29 April 2020'''<br><br />
<br />
*29 October 2021<br />
*22 May 2021<br />
*4 May 2021<br />
*22 October 2020<br />
*4 August 2020<br />
*29 April 2020<br />
| style="background:#ba2025; color:#fff" |October 2021 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8533 19.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/19.10.6#releasenotes 19.10.6]<br />
*[https://launchpad.net/mahara/+milestone/19.10.5#releasenotes 19.10.5]<br />
*[https://launchpad.net/mahara/+milestone/19.10.4#release-notes 19.10.4]<br />
*[https://launchpad.net/mahara/+milestone/19.10.3#release-notes 19.10.3]<br />
*[https://launchpad.net/mahara/+milestone/19.10.2#release-notes 19.10.2]<br />
*[https://launchpad.net/mahara/19.10/19.10.1#release-notes 19.10.1]<br />
*[https://launchpad.net/mahara/19.10/19.10.0#release-notes 19.10.0]<br />
|'''31 October 2019''' <br><br />
<br />
*4 May 2021<br />
*22 October 2020<br />
*4 August 2020<br />
*30 April 2020<br />
*4 April 2020<br />
*12 November 2019<br />
*31 October 2019<br />
| style="background:#ba2025; color:#fff" |April 2021 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8444 19.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/19.04/19.04.5#release-notes 19.04.5]<br />
*[https://launchpad.net/mahara/19.04/19.04.4#release-notes 19.04.4]<br />
*[https://launchpad.net/mahara/19.04/19.04.3#release-notes 19.04.3]<br />
*[https://launchpad.net/mahara/19.04/19.04.2#release-notes 19.04.2]<br />
*[https://launchpad.net/mahara/19.04/19.04.1#release-notes 19.04.1]<br />
*[https://launchpad.net/mahara/19.04/19.04.0#release-notes 19.04.0]<br />
|'''30 April 2019''' <br><br />
<br />
*30 April 2020<br />
*4 March 2020<br />
*12 November 2019<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
| style="background:#ba2025; color:#fff" |October 2020 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8365 18.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/18.10/18.10.6#release-notes 18.10.6]<br />
*[https://launchpad.net/mahara/18.10/18.10.5#release-notes 18.10.5]<br />
*[https://launchpad.net/mahara/18.10/18.10.4#release-notes 18.10.4]<br />
*[https://launchpad.net/mahara/18.10/18.10.3#release-notes 18.10.3]<br />
*[https://launchpad.net/mahara/18.10/18.10.2#release-notes 18.10.2]<br />
*[https://launchpad.net/mahara/18.10/18.10.1#release-notes 18.10.1]<br />
*[https://launchpad.net/mahara/18.10/18.10.0#release-notes 18.10.0]<br />
|'''25 October 2018''' <br><br />
<br />
*30 April 2020<br />
*4 March 2020<br />
*12 November 2019<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
*25 October 2018<br />
| style="background:#ba2025; color:#fff" |April 2020 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8216 18.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/18.04/18.04.6#release-notes 18.04.6]<br />
*[https://launchpad.net/mahara/18.04/18.04.5#release-notes 18.04.5]<br />
*[https://launchpad.net/mahara/18.04/18.04.4#release-notes 18.04.4]<br />
*[https://launchpad.net/mahara/18.04/18.04.3#release-notes 18.04.3]<br />
*[https://launchpad.net/mahara/18.04/18.04.2#release-notes 18.04.2]<br />
*[https://launchpad.net/mahara/18.04/18.04.1#release-notes 18.04.1]<br />
*[https://launchpad.net/mahara/18.04/18.04.0#release-notes 18.04.0]<br />
|'''6 April 2018''' <br><br />
<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
| style="background:#ba2025; color:#fff" |October 2019 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8084 17.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/17.10/17.10.9#release-notes 17.10.9]<br />
*[https://launchpad.net/mahara/17.10/17.10.8#release-notes 17.10.8]<br />
*[https://launchpad.net/mahara/17.10/17.10.7#release-notes 17.10.7]<br />
*[https://launchpad.net/mahara/17.10/17.10.6#release-notes 17.10.6]<br />
*[https://launchpad.net/mahara/17.10/17.10.5#release-notes 17.10.5]<br />
*[https://launchpad.net/mahara/17.10/17.10.4#release-notes 17.10.4]<br />
*[https://launchpad.net/mahara/17.10/17.10.3#release-notes 17.10.3]<br />
*[https://launchpad.net/mahara/17.10/17.10.2#release-notes 17.10.2]<br />
*[https://launchpad.net/mahara/17.10/17.10.1#release-notes 17.10.1]<br />
*[https://launchpad.net/mahara/17.10/17.10.0#release-notes 17.10.0]<br />
|'''30 October 2017''' <br><br />
<br />
*30 April 2019<br />
*30 April 2019<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*14 December 2017<br />
*30 October 2017<br />
| style="background:#ba2025; color:#fff;" |30 April 2019 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7926 17.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/17.04/17.04.10#release-notes 17.04.10]<br />
*[https://launchpad.net/mahara/17.04/17.04.9#release-notes 17.04.9]<br />
*[https://launchpad.net/mahara/17.04/17.04.8#release-notes 17.04.8]<br />
*[https://launchpad.net/mahara/17.04/17.04.7#release-notes 17.04.7]<br />
*[https://launchpad.net/mahara/17.04/17.04.6#release-notes 17.04.6]<br />
*[https://launchpad.net/mahara/17.04/17.04.5#release-notes 17.04.5]<br />
*[https://launchpad.net/mahara/17.04/17.04.4#release-notes 17.04.4]<br />
*[https://launchpad.net/mahara/17.04/17.04.3#release-notes 17.04.3]<br />
*[https://launchpad.net/mahara/17.04/17.04.2#release-notes 17.04.2]<br />
*[https://launchpad.net/mahara/17.04/17.04.1#release-notes 17.04.1]<br />
*[https://launchpad.net/mahara/17.04/17.04.0#release-notes 17.04.0]<br />
|'''27 April 2017''' <br><br />
<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*12 May 2017<br />
*27 April 2017<br />
| style="background:#ba2025; color:#fff" |25 October 2018 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7750 16.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/16.10/16.10.9#release-notes 16.10.9]<br />
*[https://launchpad.net/mahara/16.10/16.10.8#release-notes 16.10.8]<br />
*[https://launchpad.net/mahara/16.10/16.10.7#release-notes 16.10.7]<br />
*[https://launchpad.net/mahara/16.10/16.10.6#release-notes 16.10.6]<br />
*[https://launchpad.net/mahara/16.10/16.10.5#release-notes 16.10.5]<br />
*[https://launchpad.net/mahara/16.10/16.10.4#release-notes 16.10.4]<br />
*[https://launchpad.net/mahara/16.10/16.10.3#release-notes 16.10.3]<br />
*[https://launchpad.net/mahara/16.10/16.10.2#release-notes 16.10.2]<br />
*[https://launchpad.net/mahara/16.10/16.10.1#release-notes 16.10.1]<br />
*[https://launchpad.net/mahara/16.10/16.10.0#release-notes 16.10.0]<br />
|'''21 October 2016''' <br><br />
<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*13 December 2016<br />
*21 October 2016<br />
| style="background:#ba2025; color:#fff" |06 April 2018 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7585 16.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/16.04/16.04.9#release-notes 16.04.9]<br />
*[https://launchpad.net/mahara/16.04/16.04.8#release-notes 16.04.8]<br />
*[https://launchpad.net/mahara/16.04/16.04.7#release-notes 16.04.7]<br />
*[https://launchpad.net/mahara/16.04/16.04.6#release-notes 16.04.6]<br />
*[https://launchpad.net/mahara/16.04/16.04.5#release-notes 16.04.5]<br />
*[https://launchpad.net/mahara/16.04/16.04.4#release-notes 16.04.4]<br />
*[https://launchpad.net/mahara/16.04/16.04.3#release-notes 16.04.3]<br />
*[https://launchpad.net/mahara/16.04/16.04.2#release-notes 16.04.2]<br />
*[https://launchpad.net/mahara/16.04/16.04.1#release-notes 16.04.1]<br />
*[https://launchpad.net/mahara/16.04/16.04.0#release-notes 16.04.0]<br />
|'''28 April 2016''' <br><br />
<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*11 July 2016<br />
*9 June 2016<br />
*28 April 2016<br />
| style="background:#ba2025; color:#fff" |30 October 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7420 15.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/15.10/15.10.8#release-notes 15.10.8]<br />
*[https://launchpad.net/mahara/15.10/15.10.7#release-notes 15.10.7]<br />
*[https://launchpad.net/mahara/15.10/15.10.6#release-notes 15.10.6]<br />
*[https://launchpad.net/mahara/15.10/15.10.5#release-notes 15.10.5]<br />
*[https://launchpad.net/mahara/15.10/15.10.4#release-notes 15.10.4]<br />
*[https://launchpad.net/mahara/15.10/15.10.3#release-notes 15.10.3]<br />
*[https://launchpad.net/mahara/15.10/15.10.2#release-notes 15.10.2]<br />
*[https://launchpad.net/mahara/15.10/15.10.1#release-notes 15.10.1]<br />
*[https://launchpad.net/mahara/15.10/15.10.0#release-notes 15.10.0]<br />
|'''23 October 2015''' <br><br />
<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*11 July 2016<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*23 October 2015<br />
| style="background:#ba2025; color:#fff" |26 April 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7171 15.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/15.04/15.04.15#release-notes 15.04.15]<br />
*[https://launchpad.net/mahara/15.04/15.04.14#release-notes 15.04.14]<br />
*[https://launchpad.net/mahara/15.04/15.04.13#release-notes 15.04.13]<br />
*[https://launchpad.net/mahara/15.04/15.04.12#release-notes 15.04.12]<br />
*[https://launchpad.net/mahara/15.04/15.04.11#release-notes 15.04.11]<br />
*[https://launchpad.net/mahara/15.04/15.04.10#release-notes 15.04.10]<br />
*[https://launchpad.net/mahara/15.04/15.04.9#release-notes 15.04.9]<br />
*[https://launchpad.net/mahara/15.04/15.04.8#release-notes 15.04.8]<br />
*[https://launchpad.net/mahara/15.04/15.04.7#release-notes 15.04.7]<br />
*[https://launchpad.net/mahara/15.04/15.04.6#release-notes 15.04.6]<br />
*[https://launchpad.net/mahara/15.04/15.04.5#release-notes 15.04.5]<br />
*[https://launchpad.net/mahara/15.04/15.04.4#release-notes 15.04.4]<br />
*[https://launchpad.net/mahara/15.04/15.04.3#release-notes 15.04.3]<br />
*[https://launchpad.net/mahara/15.04/15.04.2#release-notes 15.04.2]<br />
*[https://launchpad.net/mahara/15.04/15.04.1#release-notes 15.04.1]<br />
*[https://launchpad.net/mahara/15.04/15.04.0#release-notes 15.04.0]<br />
|'''23 October 2015''' <br><br />
<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*12 July 2016<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*29 May 2015<br />
*17 April 2015<br />
| style="background:#ba2025; color:#fff" |30 October 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=6509 1.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.10/1.10.10#release-notes 1.10.10]<br />
*[https://launchpad.net/mahara/1.10/1.10.9#release-notes 1.10.9]<br />
*[https://launchpad.net/mahara/1.10/1.10.8#release-notes 1.10.8]<br />
*[https://launchpad.net/mahara/1.10/1.10.7#release-notes 1.10.7]<br />
*[https://launchpad.net/mahara/1.10/1.10.6#release-notes 1.10.6]<br />
*[https://launchpad.net/mahara/1.10/1.10.5#release-notes 1.10.5]<br />
*[https://launchpad.net/mahara/1.10/1.10.4#release-notes 1.10.4]<br />
*[https://launchpad.net/mahara/1.10/1.10.3#release-notes 1.10.3]<br />
*[https://launchpad.net/mahara/1.10/1.10.2#release-notes 1.10.2]<br />
*[https://launchpad.net/mahara/1.10/1.10.1#release-notes 1.10.1]<br />
*[https://launchpad.net/mahara/1.10/1.10.0#release-notes 1.10.0]<br />
|'''21 October 2014''' <br><br />
<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*29 May 2015<br />
*20 April 2015<br />
*13 January 2015<br />
*26 November 2014<br />
*21 October 2014<br />
| style="background:#ba2025; color:#fff" |2 May 2016 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=6254 1.9]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.9/1.9.9#release-notes 1.9.9]<br />
*[https://launchpad.net/mahara/1.9/1.9.8#release-notes 1.9.8]<br />
*[https://launchpad.net/mahara/1.9/1.9.7#release-notes 1.9.7]<br />
*[https://launchpad.net/mahara/1.9/1.9.6#release-notes 1.9.6]<br />
*[https://launchpad.net/mahara/1.9/1.9.5#release-notes 1.9.5]<br />
*[https://launchpad.net/mahara/1.9/1.9.4#release-notes 1.9.4]<br />
*[https://launchpad.net/mahara/1.9/1.9.3#release-notes 1.9.3]<br />
*[https://launchpad.net/mahara/1.9/1.9.2#release-notes 1.9.2]<br />
*[https://launchpad.net/mahara/1.9/1.9.1#release-notes 1.9.1]<br />
*[https://launchpad.net/mahara/1.9/1.9.0#release-notes 1.9.0]<br />
|'''15 April 2014''' <br><br />
<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*26 November 2014<br />
*22 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*15 April 2014<br />
| style="background:#ba2025; color:#fff" |27 October 2015 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=5833 1.8]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.8/1.8.7#release-notes 1.8.7]<br />
*[https://launchpad.net/mahara/1.8/1.8.6#release-notes 1.8.6]<br />
*[https://launchpad.net/mahara/1.8/1.8.5#release-notes 1.8.5]<br />
*[https://launchpad.net/mahara/1.8/1.8.4#release-notes 1.8.4]<br />
*[https://launchpad.net/mahara/1.8/1.8.3#release-notes 1.8.3]<br />
*[https://launchpad.net/mahara/1.8/1.8.2#release-notes 1.8.2]<br />
*[https://launchpad.net/mahara/1.8/1.8.1#release-notes 1.8.1]<br />
*[https://launchpad.net/mahara/1.8/1.8.0#release-notes 1.8.0]<br />
|'''24 October 2013''' <br><br />
<br />
*20 April 2015<br />
*26 November 2014<br />
*22 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*3 April 2014<br />
*18 December 2013<br />
*24 October 2013<br />
| style="background:#ba2025; color:#fff" |20 April 2015 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=5371 1.7]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.7/1.7.8#release-notes 1.7.8]<br />
*[https://launchpad.net/mahara/1.7/1.7.7#release-notes 1.7.7]<br />
*[https://launchpad.net/mahara/1.7/1.7.6#release-notes 1.7.6]<br />
*[https://launchpad.net/mahara/1.7/1.7.5#release-notes 1.7.5]<br />
*[https://launchpad.net/mahara/1.7/1.7.4#release-notes 1.7.4]<br />
*[https://launchpad.net/mahara/1.7/1.7.3#release-notes 1.7.3]<br />
*[https://launchpad.net/mahara/1.7/1.7.2#release-notes 1.7.2]<br />
*[https://launchpad.net/mahara/1.7/1.7.1#release-notes 1.7.1]<br />
*[https://launchpad.net/mahara/1.7/1.7.0#release-notes 1.7.0]<br />
|'''19 April 2013''' <br><br />
<br />
*21 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*29 October 2013<br />
*3 October 2013<br />
*3 April 2014<br />
*18 December 2013<br />
*24 October 2013<br />
*19 April 2013<br />
| style="background:#ba2025; color:#fff" |21 October 2014 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=4967 1.6]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.6/1.6.10#release-notes 1.6.10]<br />
*[https://launchpad.net/mahara/1.6/1.6.9#release-notes 1.6.9]<br />
*[https://launchpad.net/mahara/1.6/1.6.8#release-notes 1.6.8]<br />
*[https://launchpad.net/mahara/1.6/1.6.7#release-notes 1.6.7]<br />
*[https://launchpad.net/mahara/1.6/1.6.6#release-notes 1.6.6]<br />
*[https://launchpad.net/mahara/1.6/1.6.5#release-notes 1.6.5]<br />
*[https://launchpad.net/mahara/1.6/1.6.4#release-notes 1.6.4]<br />
*[https://launchpad.net/mahara/1.6/1.6.3#release-notes 1.6.3]<br />
*[https://launchpad.net/mahara/1.6/1.6.2#release-notes 1.6.2]<br />
*[https://launchpad.net/mahara/1.6/1.6.1#release-notes 1.6.1]<br />
*[https://launchpad.net/mahara/1.6/1.6.0#release-notes 1.6.0]<br />
|'''19 October 2019''' <br><br />
<br />
*13 May 2014<br />
*3 April 2014<br />
*29 October 2013<br />
*3 October 2013<br />
*25 July 2013<br />
*2 May 2013<br />
*15 April 2013<br />
*15 February 2013<br />
*23 November 2012<br />
*24 October 2012<br />
*19 October 2012<br />
| style="background:#ba2025; color:#fff" |29 April 2014 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=4469 1.5]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.5/1.5.13#release-notes 1.5.13]<br />
*[https://launchpad.net/mahara/1.5/1.5.12#release-notes 1.5.12]<br />
*[https://launchpad.net/mahara/1.5/1.5.11#release-notes 1.5.11]<br />
*[https://launchpad.net/mahara/1.5/1.5.10#release-notes 1.5.10]<br />
*[https://launchpad.net/mahara/1.5/1.5.9#release-notes 1.5.9]<br />
*[https://launchpad.net/mahara/1.5/1.5.8#release-notes 1.5.8]<br />
*[https://launchpad.net/mahara/1.5/1.5.7#release-notes 1.5.7]<br />
*[https://launchpad.net/mahara/1.5/1.5.6#release-notes 1.5.6]<br />
*[https://launchpad.net/mahara/1.5/1.5.4#release-notes 1.5.4]<br />
*[https://launchpad.net/mahara/1.5/1.5.3#release-notes 1.5.3]<br />
*[https://launchpad.net/mahara/1.5/1.5.2#release-notes 1.5.2]<br />
*[https://launchpad.net/mahara/1.5/1.5.1#release-notes 1.5.1]<br />
*[https://launchpad.net/mahara/1.5/1.5.0#release-notes 1.5.0]<br />
|'''17 April 2012''' <br><br />
<br />
*25 October 2013<br />
*3 October 2013<br />
*24 July 2013<br />
*2 May 2013<br />
*15 April 2013<br />
*15 February 2013<br />
*23 November 2012<br />
*17 October 2012<br />
*10 October 2012<br />
*14 September 2012<br />
*31 July 2012<br />
*3 May 2012<br />
*17 April 2012<br />
| style="background:#ba2025; color:#fff" |29 October 2013 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=3744 1.4]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.6 1.4.6]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.5 1.4.5]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.4 1.4.4]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.3 1.4.3]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.2 1.4.2]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.1 1.4.1]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.0 1.4.0]<br />
|'''13 June 2011''' <br><br />
<br />
*17 October 2012<br />
*10 October 2012<br />
*14 September 2012<br />
*31 July 2011<br />
*6 March 2011<br />
*3 November 2011<br />
*13 June 2011<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=2252 1.3]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.3.8 1.3.8]<br />
*[https://launchpad.net/mahara/+milestone/1.3.7 1.3.7]<br />
*[https://launchpad.net/mahara/+milestone/1.3.6 1.3.6]<br />
*[https://launchpad.net/mahara/+milestone/1.3.5 1.3.5]<br />
*[https://launchpad.net/mahara/+milestone/1.3.4 1.3.4]<br />
*[https://launchpad.net/mahara/+milestone/1.3.3 1.3.3]<br />
*[https://launchpad.net/mahara/+milestone/1.3.2 1.3.2]<br />
*[https://launchpad.net/mahara/+milestone/1.3.1 1.3.1]<br />
*[https://launchpad.net/mahara/+milestone/1.3.0 1.3.0]<br />
|'''10 September 2010''' <br><br />
<br />
*5 March 2012<br />
*3 Novemver 2011<br />
*10 May 2011<br />
*28 March 2011<br />
*24 March 2011<br />
*7 November 2010<br />
*8 October 2010<br />
*17 September 2010<br />
*10 September 2010<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=1226 1.2]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.2.9 1.2.9]<br />
*[https://launchpad.net/mahara/+milestone/1.2..8 1.2.8]<br />
*[https://launchpad.net/mahara/+milestone/1.2.7 1.2.7]<br />
*[https://launchpad.net/mahara/+milestone/1.2.6 1.2.6]<br />
*[https://launchpad.net/mahara/+milestone/1.2.5 1.2.5]<br />
*[https://launchpad.net/mahara/+milestone/1.2.4 1.2.4]<br />
*[https://launchpad.net/mahara/+milestone/1.2.3 1.2.3]<br />
*[https://launchpad.net/mahara/+milestone/1.2.2 1.2.2]<br />
*[https://launchpad.net/mahara/+milestone/1.2.1 1.2.1]<br />
*[https://launchpad.net/mahara/+milestone/1.2.0 1.2.0]<br />
|'''16 November 2009''' <br><br />
<br />
*10 May 2011<br />
*24 March 2011<br />
*1 September 2011<br />
*2 July 2010<br />
*6 April 2010<br />
*8 February 2010<br />
*8 December 2009<br />
*8 December 2009<br />
*16 November 2009<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://launchpad.net/mahara/+milestone/1.0.10 1.1]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.1.9 1.1.9]<br />
*[https://launchpad.net/mahara/+milestone/1.1.8 1.1.8]<br />
*[https://launchpad.net/mahara/+milestone/1.1.7 1.1.7]<br />
*[https://launchpad.net/mahara/+milestone/1.1.6 1.1.6]<br />
*[https://launchpad.net/mahara/+milestone/1.1.5 1.1.5]<br />
*[https://launchpad.net/mahara/+milestone/1.1.4 1.1.4]<br />
*[https://launchpad.net/mahara/+milestone/1.1.3 1.1.3]<br />
*[https://launchpad.net/mahara/+milestone/1.1.2 1.1.2]<br />
*[https://launchpad.net/mahara/+milestone/1.1.1 1.1.1]<br />
*[https://launchpad.net/mahara/+milestone/1.1.0 1.1.0]<br />
|'''25 February 2009''' <br><br />
<br />
*2 July 2010<br />
*6 April 2010<br />
*28 October 2009<br />
*21 June 2009<br />
*10 June 2009<br />
*21 April 2009<br />
*9 March 2009<br />
*26 February 2009<br />
*25 February 2009<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=292 1.0]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.0.15 1.0.15]<br />
*[https://launchpad.net/mahara/+milestone/1.0.14 1.0.14]<br />
*[https://launchpad.net/mahara/+milestone/1.0.13 1.0.13]<br />
*[https://launchpad.net/mahara/+milestone/1.0.12 1.0.12]<br />
*[https://launchpad.net/mahara/+milestone/1.0.11 1.0.11]<br />
*[https://launchpad.net/mahara/+milestone/1.0.10 1.0.10]<br />
*[[Releases/1.0.9|1.0.9]]<br />
*[[Releases/1.0.8|1.0.8]]<br />
*[[Releases/1.0.7|1.0.7]]<br />
|'''9 March 2009''' <br><br />
<br />
*2 July 2010<br />
*6 April 2010<br />
*28 October 2009<br />
*21 June 2009<br />
*21 April 2009<br />
*9 March 2009<br />
*Unavailable<br />
*Unavailable<br />
*Unavailable<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
|}<br />
<br />
=Definition of support=<br />
<br />
Being "supported" means:<br />
<br />
*The release team is committed to making available updates to Mahara that are security related. See [[Security]] to find out how to report security bugs to us.<br />
*Occasionally, some other serious bug fixes will be included, but these are not guaranteed. If you find another type of bug, please let us know by reporting it on the mahara.org forums or directly on Launchpad: https://bugs.launchpad.net/mahara/+filebug<br />
<br />
=Specific backporting rules=<br />
<br />
When deciding which bugs to backport to supported branches, these are the general principles:<br />
<br />
*'''[[Security]] bugs'''<br />
**'''All''' Critical and High priority security bugs should be backported.<br />
**'''Nearly all''' Medium and Low priority security bugs should be backported. At the maintenance team's discretion, these might not be backported if:<br />
***Backporting would be technically difficult due to differences between Mahara versions.<br />
***The bug fix requires database upgrades or dataroot manipulations.<br />
***The bug fix otherwise introduces a high risk of [https://en.wikipedia.org/wiki/Software_regression regressions].<br />
<br />
*'''Non-security bugs'''<br />
**'''All''' Critical bugs should be backported.<br />
**'''Most''' High priority bugs should be backported. At the maintenance team's discretion, these might not be backported if:<br />
***Backporting would be technically difficult due to differences between Mahara versions.<br />
***The bug fix requires database upgrades or dataroot manipulations.<br />
***The bug fix otherwise introduces a high risk of [https://en.wikipedia.org/wiki/Software_regression regressions].<br />
**'''No''' Medium or Low priority non-security bugs are backported.<br />
**'''No''' Wishlist bugs are backported. Wishlist items are only added to the current development branch.<br />
<br />
If you want to backport certain bug fixes or new features to your own instance of Mahara, you can do so on your own as the code is available.<br />
<br />
See [[Developer_Area/Bug_Status#Importance|Bug Status:Importance]] for the guidelines on how we decide whether a bug is Critical, High, Medium, or Low.<br />
<br />
[[Category:Release Notes]]</div>
Gold
https://wiki.mahara.org/index.php?title=Releases&diff=13444
Releases
2022-11-01T01:09:35Z
<p>Gold: /* Current and upcoming releases */ Updating for the EOL of 21.04</p>
<hr />
<div>=Release cycle and version support=<br />
<p>A new major version of Mahara is released every 6 months, in April and October. The version numbers reflect the year and the month in which a version was released. See [[Developer_Area/Version_Numbering_Policy|Version Numbering Policy]] for more details.<br><br />
<br />
{| class="wikitable" style="padding:0em; text-align:left" summary="Mahara's six monthly cycle for April and October releases."<br />
! scope="col" style="text-align:left; background-color:#566d31; color:#fff;" |Release cycle<br />
! scope="col" style="text-align:left;" |Nov - Apr<br />
! scope="col" style="text-align:left;" |May - Oct<br />
|-<br />
! scope="row" style="text-align:left;" |Feature freeze<br />
| style="background-color:#fff;" |Early February<br />
| style="background-color:#fff;" |Early August<br />
|-<br />
! scope="row" style="text-align:left;" |UI freeze<br />
| style="background-color:#fff;" |Early March<br />
| style="background-color:#fff;" |Early September<br />
|-<br />
! scope="row" style="text-align:left;" |Release candidate<br />
| style="background-color:#fff;" |Mid March<br />
| style="background-color:#fff;" |Mid September<br />
|-<br />
! scope="row" style="text-align:left;" |Official release<br />
| style="background-color:#fff;" |Late April<br />
| style="background-color:#fff;" |Late October<br />
|-<br />
|}<br />
<ul><br />
<li> Each release has 16 weeks before feature freeze.</li><br />
<li>For each release, We've put feature freeze at a month before the release candidate. Only non-feature bug fixes will be committed after this </li><br />
<li>The week before the release candidates is a UI freeze. This is a freeze to string changes and theme changes. String or UI fixes will need to be at least high importance.</li><br />
</ul></p><br />
<p></p><br />
<p><strong>The standard support lifetime of a major version is 18 months (3 release cycles):</strong><br><br />
<ul><br />
<li>Receives bug fixes and security fixes for the first 6 months</li><br />
<li>Receives security fixes only, for an additional 12 months</li><br />
</ul><br />
In the event that a major release substantially breaks backwards compatibility, we may declare the previous release to be an extended support release which will receive security fixes for 30 months (5 release cycles), to give sites more time to upgrade.</p><br />
<br />
=Older releases (pre Mahara 1.6)=<br />
<br />
Prior to Mahara 1.6, Mahara major versions were released as needed, according to no particular schedule. During the transition period to the 6 month release cycle, support for the older releases was provided for 2 release cycles.<br />
<br />
=Current and upcoming releases=<br />
<p>The latest <strong>stable</strong> version of Mahara is 22.04, released on 27 April 2022.</p><br />
<br />
<p>'''Note:''' This page is updated manually, and sometimes falls behind. For 100% up-to-date information, look for the release labelled "Current Stable Release" on our [https://launchpad.net/mahara/+series Launchpad release page], or use the "Download" link on the front page of https://mahara.org</p><br />
<br />
{| class="wikitable"<br />
| style="background:#ba2025; color:#fff" |Unsupported<br />
| style="background:#566d31; color:#fff" |Currently in support<br />
|Not yet released<br />
|}<br />
<br />
<!-- This is the template for the table sections below<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff"|'''[https://mahara.org/interaction/forum/topic.php?id= Major point release number]'''<br />
|<br />
* [https://launchpad.net/mahara/ Minor point release number]<br />
| '''Major point release date''' <br><br />
* Minor point release dates<br />
| style="background:#566d31; color:#fff" | End of support date<br />
|-<br />
--><br />
<br />
{| class="wikitable" summary="Release notes for major and minor versions of Mahara, official release dates and version support end date. Versions are listed in reverse chronological order. Table is four columns wide and 22 rows deep."<br />
|+ style="text-align:left;" |Mahara release notes and end of support<br />
|-<br />
! style="text-align:left;" |Major release<br />
! style="text-align:left;" |Minor release<br />
! style="text-align:left;" |Release date<br />
! style="text-align:left;" |End of support<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=9097 22.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/22.10.0#release-notes 22.10.0]<br />
|'''31 October 2022''' <br><br />
<br />
*31 October 2022<br />
| style="background:#566d31; color:#fff" |April 2024<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=9097 22.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/22.04.2#release-notes 22.04.2]<br />
*[https://launchpad.net/mahara/+milestone/22.04.1#release-notes 22.04.1]<br />
*[https://launchpad.net/mahara/+milestone/22.04.0#release-notes 22.04.0]<br />
|'''27 April 2022''' <br><br />
<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
| style="background:#566d31; color:#fff" |October 2023<br />
|-<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8955 21.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/21.10.5#release-notes 21.10.5]<br />
*[https://launchpad.net/mahara/+milestone/21.10.4#release-notes 21.10.4]<br />
*[https://launchpad.net/mahara/+milestone/21.10.3#release-notes 21.10.3]<br />
*[https://launchpad.net/mahara/+milestone/21.10.2#release-notes 21.10.2]<br />
*[https://launchpad.net/mahara/+milestone/21.10.1#release-notes 21.10.1]<br />
*[https://launchpad.net/mahara/+milestone/21.10.0#release-notes 21.10.0]<br />
|'''29 October 2021''' <br><br />
<br />
*31 October 2022<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
| style="background:#566d31; color:#fff" |April 2023<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8817 21.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/21.04.7#release-notes 21.04.7]<br />
*[https://launchpad.net/mahara/+milestone/21.04.6#release-notes 21.04.6]<br />
*[https://launchpad.net/mahara/+milestone/21.04.5#release-notes 21.04.5]<br />
*[https://launchpad.net/mahara/+milestone/21.04.4#release-notes 21.04.4]<br />
*[https://launchpad.net/mahara/+milestone/21.04.3#release-notes 21.04.3]<br />
*[https://launchpad.net/mahara/+milestone/21.04.2#release-notes 21.04.2]<br />
*[https://launchpad.net/mahara/+milestone/21.04.1#release-notes 21.04.1]<br />
*[https://launchpad.net/mahara/+milestone/21.04.0#release-notes 21.04.0]<br />
|'''30 April 2021''' <br><br />
<br />
*31 Oct 2022<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
*21 May 2021<br />
*30 April 2021<br />
| style="background:#566d31; color:#fff" |October 2022<br />
(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8728 20.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/20.10.6#release-notes 20.10.6]<br />
*[https://launchpad.net/mahara/+milestone/20.10.5#release-notes 20.10.5]<br />
*[https://launchpad.net/mahara/+milestone/20.10.4#release-notes 20.10.4]<br />
*[https://launchpad.net/mahara/+milestone/20.10.3#release-notes 20.10.3]<br />
*[https://launchpad.net/mahara/+milestone/20.10.2#release-notes 20.10.2]<br />
*[https://launchpad.net/mahara/+milestone/20.10.1#release-notes 20.10.1]<br />
*[https://launchpad.net/mahara/+milestone/20.10.0#release-notes 20.10.0]<br />
|'''22 October 2020'''<br><br />
<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
*21 May 2021<br />
*4 May 2021<br />
*22 October 2020<br />
| style="background:#ba2025; color:#fff" |April 2022 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8611 20.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/20.04.5#release-notes 20.04.5]<br />
*[https://launchpad.net/mahara/+milestone/20.04.4#release-notes 20.04.4]<br />
*[https://launchpad.net/mahara/+milestone/20.04.3#release-notes 20.04.3]<br />
*[https://launchpad.net/mahara/+milestone/20.04.2#release-notes 20.04.2]<br />
*[https://launchpad.net/mahara/+milestone/20.04.1#release-notes 20.04.1]<br />
*[https://launchpad.net/mahara/20.04/20.04.0#release-notes 20.04.0]<br />
|'''29 April 2020'''<br><br />
<br />
*29 October 2021<br />
*22 May 2021<br />
*4 May 2021<br />
*22 October 2020<br />
*4 August 2020<br />
*29 April 2020<br />
| style="background:#ba2025; color:#fff" |October 2021 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8533 19.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/19.10.6#releasenotes 19.10.6]<br />
*[https://launchpad.net/mahara/+milestone/19.10.5#releasenotes 19.10.5]<br />
*[https://launchpad.net/mahara/+milestone/19.10.4#release-notes 19.10.4]<br />
*[https://launchpad.net/mahara/+milestone/19.10.3#release-notes 19.10.3]<br />
*[https://launchpad.net/mahara/+milestone/19.10.2#release-notes 19.10.2]<br />
*[https://launchpad.net/mahara/19.10/19.10.1#release-notes 19.10.1]<br />
*[https://launchpad.net/mahara/19.10/19.10.0#release-notes 19.10.0]<br />
|'''31 October 2019''' <br><br />
<br />
*4 May 2021<br />
*22 October 2020<br />
*4 August 2020<br />
*30 April 2020<br />
*4 April 2020<br />
*12 November 2019<br />
*31 October 2019<br />
| style="background:#ba2025; color:#fff" |April 2021 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8444 19.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/19.04/19.04.5#release-notes 19.04.5]<br />
*[https://launchpad.net/mahara/19.04/19.04.4#release-notes 19.04.4]<br />
*[https://launchpad.net/mahara/19.04/19.04.3#release-notes 19.04.3]<br />
*[https://launchpad.net/mahara/19.04/19.04.2#release-notes 19.04.2]<br />
*[https://launchpad.net/mahara/19.04/19.04.1#release-notes 19.04.1]<br />
*[https://launchpad.net/mahara/19.04/19.04.0#release-notes 19.04.0]<br />
|'''30 April 2019''' <br><br />
<br />
*30 April 2020<br />
*4 March 2020<br />
*12 November 2019<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
| style="background:#ba2025; color:#fff" |October 2020 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8365 18.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/18.10/18.10.6#release-notes 18.10.6]<br />
*[https://launchpad.net/mahara/18.10/18.10.5#release-notes 18.10.5]<br />
*[https://launchpad.net/mahara/18.10/18.10.4#release-notes 18.10.4]<br />
*[https://launchpad.net/mahara/18.10/18.10.3#release-notes 18.10.3]<br />
*[https://launchpad.net/mahara/18.10/18.10.2#release-notes 18.10.2]<br />
*[https://launchpad.net/mahara/18.10/18.10.1#release-notes 18.10.1]<br />
*[https://launchpad.net/mahara/18.10/18.10.0#release-notes 18.10.0]<br />
|'''25 October 2018''' <br><br />
<br />
*30 April 2020<br />
*4 March 2020<br />
*12 November 2019<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
*25 October 2018<br />
| style="background:#ba2025; color:#fff" |April 2020 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8216 18.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/18.04/18.04.6#release-notes 18.04.6]<br />
*[https://launchpad.net/mahara/18.04/18.04.5#release-notes 18.04.5]<br />
*[https://launchpad.net/mahara/18.04/18.04.4#release-notes 18.04.4]<br />
*[https://launchpad.net/mahara/18.04/18.04.3#release-notes 18.04.3]<br />
*[https://launchpad.net/mahara/18.04/18.04.2#release-notes 18.04.2]<br />
*[https://launchpad.net/mahara/18.04/18.04.1#release-notes 18.04.1]<br />
*[https://launchpad.net/mahara/18.04/18.04.0#release-notes 18.04.0]<br />
|'''6 April 2018''' <br><br />
<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
| style="background:#ba2025; color:#fff" |October 2019 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8084 17.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/17.10/17.10.9#release-notes 17.10.9]<br />
*[https://launchpad.net/mahara/17.10/17.10.8#release-notes 17.10.8]<br />
*[https://launchpad.net/mahara/17.10/17.10.7#release-notes 17.10.7]<br />
*[https://launchpad.net/mahara/17.10/17.10.6#release-notes 17.10.6]<br />
*[https://launchpad.net/mahara/17.10/17.10.5#release-notes 17.10.5]<br />
*[https://launchpad.net/mahara/17.10/17.10.4#release-notes 17.10.4]<br />
*[https://launchpad.net/mahara/17.10/17.10.3#release-notes 17.10.3]<br />
*[https://launchpad.net/mahara/17.10/17.10.2#release-notes 17.10.2]<br />
*[https://launchpad.net/mahara/17.10/17.10.1#release-notes 17.10.1]<br />
*[https://launchpad.net/mahara/17.10/17.10.0#release-notes 17.10.0]<br />
|'''30 October 2017''' <br><br />
<br />
*30 April 2019<br />
*30 April 2019<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*14 December 2017<br />
*30 October 2017<br />
| style="background:#ba2025; color:#fff;" |30 April 2019 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7926 17.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/17.04/17.04.10#release-notes 17.04.10]<br />
*[https://launchpad.net/mahara/17.04/17.04.9#release-notes 17.04.9]<br />
*[https://launchpad.net/mahara/17.04/17.04.8#release-notes 17.04.8]<br />
*[https://launchpad.net/mahara/17.04/17.04.7#release-notes 17.04.7]<br />
*[https://launchpad.net/mahara/17.04/17.04.6#release-notes 17.04.6]<br />
*[https://launchpad.net/mahara/17.04/17.04.5#release-notes 17.04.5]<br />
*[https://launchpad.net/mahara/17.04/17.04.4#release-notes 17.04.4]<br />
*[https://launchpad.net/mahara/17.04/17.04.3#release-notes 17.04.3]<br />
*[https://launchpad.net/mahara/17.04/17.04.2#release-notes 17.04.2]<br />
*[https://launchpad.net/mahara/17.04/17.04.1#release-notes 17.04.1]<br />
*[https://launchpad.net/mahara/17.04/17.04.0#release-notes 17.04.0]<br />
|'''27 April 2017''' <br><br />
<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*12 May 2017<br />
*27 April 2017<br />
| style="background:#ba2025; color:#fff" |25 October 2018 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7750 16.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/16.10/16.10.9#release-notes 16.10.9]<br />
*[https://launchpad.net/mahara/16.10/16.10.8#release-notes 16.10.8]<br />
*[https://launchpad.net/mahara/16.10/16.10.7#release-notes 16.10.7]<br />
*[https://launchpad.net/mahara/16.10/16.10.6#release-notes 16.10.6]<br />
*[https://launchpad.net/mahara/16.10/16.10.5#release-notes 16.10.5]<br />
*[https://launchpad.net/mahara/16.10/16.10.4#release-notes 16.10.4]<br />
*[https://launchpad.net/mahara/16.10/16.10.3#release-notes 16.10.3]<br />
*[https://launchpad.net/mahara/16.10/16.10.2#release-notes 16.10.2]<br />
*[https://launchpad.net/mahara/16.10/16.10.1#release-notes 16.10.1]<br />
*[https://launchpad.net/mahara/16.10/16.10.0#release-notes 16.10.0]<br />
|'''21 October 2016''' <br><br />
<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*13 December 2016<br />
*21 October 2016<br />
| style="background:#ba2025; color:#fff" |06 April 2018 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7585 16.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/16.04/16.04.9#release-notes 16.04.9]<br />
*[https://launchpad.net/mahara/16.04/16.04.8#release-notes 16.04.8]<br />
*[https://launchpad.net/mahara/16.04/16.04.7#release-notes 16.04.7]<br />
*[https://launchpad.net/mahara/16.04/16.04.6#release-notes 16.04.6]<br />
*[https://launchpad.net/mahara/16.04/16.04.5#release-notes 16.04.5]<br />
*[https://launchpad.net/mahara/16.04/16.04.4#release-notes 16.04.4]<br />
*[https://launchpad.net/mahara/16.04/16.04.3#release-notes 16.04.3]<br />
*[https://launchpad.net/mahara/16.04/16.04.2#release-notes 16.04.2]<br />
*[https://launchpad.net/mahara/16.04/16.04.1#release-notes 16.04.1]<br />
*[https://launchpad.net/mahara/16.04/16.04.0#release-notes 16.04.0]<br />
|'''28 April 2016''' <br><br />
<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*11 July 2016<br />
*9 June 2016<br />
*28 April 2016<br />
| style="background:#ba2025; color:#fff" |30 October 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7420 15.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/15.10/15.10.8#release-notes 15.10.8]<br />
*[https://launchpad.net/mahara/15.10/15.10.7#release-notes 15.10.7]<br />
*[https://launchpad.net/mahara/15.10/15.10.6#release-notes 15.10.6]<br />
*[https://launchpad.net/mahara/15.10/15.10.5#release-notes 15.10.5]<br />
*[https://launchpad.net/mahara/15.10/15.10.4#release-notes 15.10.4]<br />
*[https://launchpad.net/mahara/15.10/15.10.3#release-notes 15.10.3]<br />
*[https://launchpad.net/mahara/15.10/15.10.2#release-notes 15.10.2]<br />
*[https://launchpad.net/mahara/15.10/15.10.1#release-notes 15.10.1]<br />
*[https://launchpad.net/mahara/15.10/15.10.0#release-notes 15.10.0]<br />
|'''23 October 2015''' <br><br />
<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*11 July 2016<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*23 October 2015<br />
| style="background:#ba2025; color:#fff" |26 April 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7171 15.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/15.04/15.04.15#release-notes 15.04.15]<br />
*[https://launchpad.net/mahara/15.04/15.04.14#release-notes 15.04.14]<br />
*[https://launchpad.net/mahara/15.04/15.04.13#release-notes 15.04.13]<br />
*[https://launchpad.net/mahara/15.04/15.04.12#release-notes 15.04.12]<br />
*[https://launchpad.net/mahara/15.04/15.04.11#release-notes 15.04.11]<br />
*[https://launchpad.net/mahara/15.04/15.04.10#release-notes 15.04.10]<br />
*[https://launchpad.net/mahara/15.04/15.04.9#release-notes 15.04.9]<br />
*[https://launchpad.net/mahara/15.04/15.04.8#release-notes 15.04.8]<br />
*[https://launchpad.net/mahara/15.04/15.04.7#release-notes 15.04.7]<br />
*[https://launchpad.net/mahara/15.04/15.04.6#release-notes 15.04.6]<br />
*[https://launchpad.net/mahara/15.04/15.04.5#release-notes 15.04.5]<br />
*[https://launchpad.net/mahara/15.04/15.04.4#release-notes 15.04.4]<br />
*[https://launchpad.net/mahara/15.04/15.04.3#release-notes 15.04.3]<br />
*[https://launchpad.net/mahara/15.04/15.04.2#release-notes 15.04.2]<br />
*[https://launchpad.net/mahara/15.04/15.04.1#release-notes 15.04.1]<br />
*[https://launchpad.net/mahara/15.04/15.04.0#release-notes 15.04.0]<br />
|'''23 October 2015''' <br><br />
<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*12 July 2016<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*29 May 2015<br />
*17 April 2015<br />
| style="background:#ba2025; color:#fff" |30 October 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=6509 1.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.10/1.10.10#release-notes 1.10.10]<br />
*[https://launchpad.net/mahara/1.10/1.10.9#release-notes 1.10.9]<br />
*[https://launchpad.net/mahara/1.10/1.10.8#release-notes 1.10.8]<br />
*[https://launchpad.net/mahara/1.10/1.10.7#release-notes 1.10.7]<br />
*[https://launchpad.net/mahara/1.10/1.10.6#release-notes 1.10.6]<br />
*[https://launchpad.net/mahara/1.10/1.10.5#release-notes 1.10.5]<br />
*[https://launchpad.net/mahara/1.10/1.10.4#release-notes 1.10.4]<br />
*[https://launchpad.net/mahara/1.10/1.10.3#release-notes 1.10.3]<br />
*[https://launchpad.net/mahara/1.10/1.10.2#release-notes 1.10.2]<br />
*[https://launchpad.net/mahara/1.10/1.10.1#release-notes 1.10.1]<br />
*[https://launchpad.net/mahara/1.10/1.10.0#release-notes 1.10.0]<br />
|'''21 October 2014''' <br><br />
<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*29 May 2015<br />
*20 April 2015<br />
*13 January 2015<br />
*26 November 2014<br />
*21 October 2014<br />
| style="background:#ba2025; color:#fff" |2 May 2016 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=6254 1.9]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.9/1.9.9#release-notes 1.9.9]<br />
*[https://launchpad.net/mahara/1.9/1.9.8#release-notes 1.9.8]<br />
*[https://launchpad.net/mahara/1.9/1.9.7#release-notes 1.9.7]<br />
*[https://launchpad.net/mahara/1.9/1.9.6#release-notes 1.9.6]<br />
*[https://launchpad.net/mahara/1.9/1.9.5#release-notes 1.9.5]<br />
*[https://launchpad.net/mahara/1.9/1.9.4#release-notes 1.9.4]<br />
*[https://launchpad.net/mahara/1.9/1.9.3#release-notes 1.9.3]<br />
*[https://launchpad.net/mahara/1.9/1.9.2#release-notes 1.9.2]<br />
*[https://launchpad.net/mahara/1.9/1.9.1#release-notes 1.9.1]<br />
*[https://launchpad.net/mahara/1.9/1.9.0#release-notes 1.9.0]<br />
|'''15 April 2014''' <br><br />
<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*26 November 2014<br />
*22 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*15 April 2014<br />
| style="background:#ba2025; color:#fff" |27 October 2015 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=5833 1.8]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.8/1.8.7#release-notes 1.8.7]<br />
*[https://launchpad.net/mahara/1.8/1.8.6#release-notes 1.8.6]<br />
*[https://launchpad.net/mahara/1.8/1.8.5#release-notes 1.8.5]<br />
*[https://launchpad.net/mahara/1.8/1.8.4#release-notes 1.8.4]<br />
*[https://launchpad.net/mahara/1.8/1.8.3#release-notes 1.8.3]<br />
*[https://launchpad.net/mahara/1.8/1.8.2#release-notes 1.8.2]<br />
*[https://launchpad.net/mahara/1.8/1.8.1#release-notes 1.8.1]<br />
*[https://launchpad.net/mahara/1.8/1.8.0#release-notes 1.8.0]<br />
|'''24 October 2013''' <br><br />
<br />
*20 April 2015<br />
*26 November 2014<br />
*22 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*3 April 2014<br />
*18 December 2013<br />
*24 October 2013<br />
| style="background:#ba2025; color:#fff" |20 April 2015 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=5371 1.7]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.7/1.7.8#release-notes 1.7.8]<br />
*[https://launchpad.net/mahara/1.7/1.7.7#release-notes 1.7.7]<br />
*[https://launchpad.net/mahara/1.7/1.7.6#release-notes 1.7.6]<br />
*[https://launchpad.net/mahara/1.7/1.7.5#release-notes 1.7.5]<br />
*[https://launchpad.net/mahara/1.7/1.7.4#release-notes 1.7.4]<br />
*[https://launchpad.net/mahara/1.7/1.7.3#release-notes 1.7.3]<br />
*[https://launchpad.net/mahara/1.7/1.7.2#release-notes 1.7.2]<br />
*[https://launchpad.net/mahara/1.7/1.7.1#release-notes 1.7.1]<br />
*[https://launchpad.net/mahara/1.7/1.7.0#release-notes 1.7.0]<br />
|'''19 April 2013''' <br><br />
<br />
*21 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*29 October 2013<br />
*3 October 2013<br />
*3 April 2014<br />
*18 December 2013<br />
*24 October 2013<br />
*19 April 2013<br />
| style="background:#ba2025; color:#fff" |21 October 2014 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=4967 1.6]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.6/1.6.10#release-notes 1.6.10]<br />
*[https://launchpad.net/mahara/1.6/1.6.9#release-notes 1.6.9]<br />
*[https://launchpad.net/mahara/1.6/1.6.8#release-notes 1.6.8]<br />
*[https://launchpad.net/mahara/1.6/1.6.7#release-notes 1.6.7]<br />
*[https://launchpad.net/mahara/1.6/1.6.6#release-notes 1.6.6]<br />
*[https://launchpad.net/mahara/1.6/1.6.5#release-notes 1.6.5]<br />
*[https://launchpad.net/mahara/1.6/1.6.4#release-notes 1.6.4]<br />
*[https://launchpad.net/mahara/1.6/1.6.3#release-notes 1.6.3]<br />
*[https://launchpad.net/mahara/1.6/1.6.2#release-notes 1.6.2]<br />
*[https://launchpad.net/mahara/1.6/1.6.1#release-notes 1.6.1]<br />
*[https://launchpad.net/mahara/1.6/1.6.0#release-notes 1.6.0]<br />
|'''19 October 2019''' <br><br />
<br />
*13 May 2014<br />
*3 April 2014<br />
*29 October 2013<br />
*3 October 2013<br />
*25 July 2013<br />
*2 May 2013<br />
*15 April 2013<br />
*15 February 2013<br />
*23 November 2012<br />
*24 October 2012<br />
*19 October 2012<br />
| style="background:#ba2025; color:#fff" |29 April 2014 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=4469 1.5]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.5/1.5.13#release-notes 1.5.13]<br />
*[https://launchpad.net/mahara/1.5/1.5.12#release-notes 1.5.12]<br />
*[https://launchpad.net/mahara/1.5/1.5.11#release-notes 1.5.11]<br />
*[https://launchpad.net/mahara/1.5/1.5.10#release-notes 1.5.10]<br />
*[https://launchpad.net/mahara/1.5/1.5.9#release-notes 1.5.9]<br />
*[https://launchpad.net/mahara/1.5/1.5.8#release-notes 1.5.8]<br />
*[https://launchpad.net/mahara/1.5/1.5.7#release-notes 1.5.7]<br />
*[https://launchpad.net/mahara/1.5/1.5.6#release-notes 1.5.6]<br />
*[https://launchpad.net/mahara/1.5/1.5.4#release-notes 1.5.4]<br />
*[https://launchpad.net/mahara/1.5/1.5.3#release-notes 1.5.3]<br />
*[https://launchpad.net/mahara/1.5/1.5.2#release-notes 1.5.2]<br />
*[https://launchpad.net/mahara/1.5/1.5.1#release-notes 1.5.1]<br />
*[https://launchpad.net/mahara/1.5/1.5.0#release-notes 1.5.0]<br />
|'''17 April 2012''' <br><br />
<br />
*25 October 2013<br />
*3 October 2013<br />
*24 July 2013<br />
*2 May 2013<br />
*15 April 2013<br />
*15 February 2013<br />
*23 November 2012<br />
*17 October 2012<br />
*10 October 2012<br />
*14 September 2012<br />
*31 July 2012<br />
*3 May 2012<br />
*17 April 2012<br />
| style="background:#ba2025; color:#fff" |29 October 2013 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=3744 1.4]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.6 1.4.6]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.5 1.4.5]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.4 1.4.4]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.3 1.4.3]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.2 1.4.2]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.1 1.4.1]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.0 1.4.0]<br />
|'''13 June 2011''' <br><br />
<br />
*17 October 2012<br />
*10 October 2012<br />
*14 September 2012<br />
*31 July 2011<br />
*6 March 2011<br />
*3 November 2011<br />
*13 June 2011<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=2252 1.3]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.3.8 1.3.8]<br />
*[https://launchpad.net/mahara/+milestone/1.3.7 1.3.7]<br />
*[https://launchpad.net/mahara/+milestone/1.3.6 1.3.6]<br />
*[https://launchpad.net/mahara/+milestone/1.3.5 1.3.5]<br />
*[https://launchpad.net/mahara/+milestone/1.3.4 1.3.4]<br />
*[https://launchpad.net/mahara/+milestone/1.3.3 1.3.3]<br />
*[https://launchpad.net/mahara/+milestone/1.3.2 1.3.2]<br />
*[https://launchpad.net/mahara/+milestone/1.3.1 1.3.1]<br />
*[https://launchpad.net/mahara/+milestone/1.3.0 1.3.0]<br />
|'''10 September 2010''' <br><br />
<br />
*5 March 2012<br />
*3 Novemver 2011<br />
*10 May 2011<br />
*28 March 2011<br />
*24 March 2011<br />
*7 November 2010<br />
*8 October 2010<br />
*17 September 2010<br />
*10 September 2010<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=1226 1.2]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.2.9 1.2.9]<br />
*[https://launchpad.net/mahara/+milestone/1.2..8 1.2.8]<br />
*[https://launchpad.net/mahara/+milestone/1.2.7 1.2.7]<br />
*[https://launchpad.net/mahara/+milestone/1.2.6 1.2.6]<br />
*[https://launchpad.net/mahara/+milestone/1.2.5 1.2.5]<br />
*[https://launchpad.net/mahara/+milestone/1.2.4 1.2.4]<br />
*[https://launchpad.net/mahara/+milestone/1.2.3 1.2.3]<br />
*[https://launchpad.net/mahara/+milestone/1.2.2 1.2.2]<br />
*[https://launchpad.net/mahara/+milestone/1.2.1 1.2.1]<br />
*[https://launchpad.net/mahara/+milestone/1.2.0 1.2.0]<br />
|'''16 November 2009''' <br><br />
<br />
*10 May 2011<br />
*24 March 2011<br />
*1 September 2011<br />
*2 July 2010<br />
*6 April 2010<br />
*8 February 2010<br />
*8 December 2009<br />
*8 December 2009<br />
*16 November 2009<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://launchpad.net/mahara/+milestone/1.0.10 1.1]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.1.9 1.1.9]<br />
*[https://launchpad.net/mahara/+milestone/1.1.8 1.1.8]<br />
*[https://launchpad.net/mahara/+milestone/1.1.7 1.1.7]<br />
*[https://launchpad.net/mahara/+milestone/1.1.6 1.1.6]<br />
*[https://launchpad.net/mahara/+milestone/1.1.5 1.1.5]<br />
*[https://launchpad.net/mahara/+milestone/1.1.4 1.1.4]<br />
*[https://launchpad.net/mahara/+milestone/1.1.3 1.1.3]<br />
*[https://launchpad.net/mahara/+milestone/1.1.2 1.1.2]<br />
*[https://launchpad.net/mahara/+milestone/1.1.1 1.1.1]<br />
*[https://launchpad.net/mahara/+milestone/1.1.0 1.1.0]<br />
|'''25 February 2009''' <br><br />
<br />
*2 July 2010<br />
*6 April 2010<br />
*28 October 2009<br />
*21 June 2009<br />
*10 June 2009<br />
*21 April 2009<br />
*9 March 2009<br />
*26 February 2009<br />
*25 February 2009<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=292 1.0]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.0.15 1.0.15]<br />
*[https://launchpad.net/mahara/+milestone/1.0.14 1.0.14]<br />
*[https://launchpad.net/mahara/+milestone/1.0.13 1.0.13]<br />
*[https://launchpad.net/mahara/+milestone/1.0.12 1.0.12]<br />
*[https://launchpad.net/mahara/+milestone/1.0.11 1.0.11]<br />
*[https://launchpad.net/mahara/+milestone/1.0.10 1.0.10]<br />
*[[Releases/1.0.9|1.0.9]]<br />
*[[Releases/1.0.8|1.0.8]]<br />
*[[Releases/1.0.7|1.0.7]]<br />
|'''9 March 2009''' <br><br />
<br />
*2 July 2010<br />
*6 April 2010<br />
*28 October 2009<br />
*21 June 2009<br />
*21 April 2009<br />
*9 March 2009<br />
*Unavailable<br />
*Unavailable<br />
*Unavailable<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
|}<br />
<br />
=Definition of support=<br />
<br />
Being "supported" means:<br />
<br />
*The release team is committed to making available updates to Mahara that are security related. See [[Security]] to find out how to report security bugs to us.<br />
*Occasionally, some other serious bug fixes will be included, but these are not guaranteed. If you find another type of bug, please let us know by reporting it on the mahara.org forums or directly on Launchpad: https://bugs.launchpad.net/mahara/+filebug<br />
<br />
=Specific backporting rules=<br />
<br />
When deciding which bugs to backport to supported branches, these are the general principles:<br />
<br />
*'''[[Security]] bugs'''<br />
**'''All''' Critical and High priority security bugs should be backported.<br />
**'''Nearly all''' Medium and Low priority security bugs should be backported. At the maintenance team's discretion, these might not be backported if:<br />
***Backporting would be technically difficult due to differences between Mahara versions.<br />
***The bug fix requires database upgrades or dataroot manipulations.<br />
***The bug fix otherwise introduces a high risk of [https://en.wikipedia.org/wiki/Software_regression regressions].<br />
<br />
*'''Non-security bugs'''<br />
**'''All''' Critical bugs should be backported.<br />
**'''Most''' High priority bugs should be backported. At the maintenance team's discretion, these might not be backported if:<br />
***Backporting would be technically difficult due to differences between Mahara versions.<br />
***The bug fix requires database upgrades or dataroot manipulations.<br />
***The bug fix otherwise introduces a high risk of [https://en.wikipedia.org/wiki/Software_regression regressions].<br />
**'''No''' Medium or Low priority non-security bugs are backported.<br />
**'''No''' Wishlist bugs are backported. Wishlist items are only added to the current development branch.<br />
<br />
If you want to backport certain bug fixes or new features to your own instance of Mahara, you can do so on your own as the code is available.<br />
<br />
See [[Developer_Area/Bug_Status#Importance|Bug Status:Importance]] for the guidelines on how we decide whether a bug is Critical, High, Medium, or Low.<br />
<br />
[[Category:Release Notes]]</div>
Gold
https://wiki.mahara.org/index.php?title=Releases&diff=13297
Releases
2022-06-16T03:30:25Z
<p>Gold: /* Current and upcoming releases */ Added the release date for 21.04.6</p>
<hr />
<div>=Release cycle and version support=<br />
<p>A new major version of Mahara is released every 6 months, in April and October. The version numbers reflect the year and the month in which a version was released. See [[Developer_Area/Version_Numbering_Policy|Version Numbering Policy]] for more details.<br><br />
<br />
{| class="wikitable" style="padding:0em; text-align:left" summary="Mahara's six monthly cycle for April and October releases."<br />
! scope="col" style="text-align:left; background-color:#566d31; color:#fff;" |Release cycle<br />
! scope="col" style="text-align:left;" |Nov - Apr<br />
! scope="col" style="text-align:left;" |May - Oct<br />
|-<br />
! scope="row" style="text-align:left;" |Feature freeze<br />
| style="background-color:#fff;" |Early February<br />
| style="background-color:#fff;" |Early August<br />
|-<br />
! scope="row" style="text-align:left;" |UI freeze<br />
| style="background-color:#fff;" |Early March<br />
| style="background-color:#fff;" |Early September<br />
|-<br />
! scope="row" style="text-align:left;" |Release candidate<br />
| style="background-color:#fff;" |Mid March<br />
| style="background-color:#fff;" |Mid September<br />
|-<br />
! scope="row" style="text-align:left;" |Official release<br />
| style="background-color:#fff;" |Late April<br />
| style="background-color:#fff;" |Late October<br />
|-<br />
|}<br />
<ul><br />
<li> Each release has 16 weeks before feature freeze.</li><br />
<li>For each release, We've put feature freeze at a month before the release candidate. Only non-feature bug fixes will be committed after this </li><br />
<li>The week before the release candidates is a UI freeze. This is a freeze to string changes and theme changes. String or UI fixes will need to be at least high importance.</li><br />
</ul></p><br />
<p></p><br />
<p><strong>The standard support lifetime of a major version is 18 months (3 release cycles):</strong><br><br />
<ul><br />
<li>Receives bug fixes and security fixes for the first 6 months</li><br />
<li>Receives security fixes only, for an additional 12 months</li><br />
</ul><br />
In the event that a major release substantially breaks backwards compatibility, we may declare the previous release to be an extended support release which will receive security fixes for 30 months (5 release cycles), in order to give sites more time to upgrade.</p><br />
<br />
=Older releases (pre Mahara 1.6)=<br />
<br />
Prior to Mahara 1.6, Mahara major versions were released as needed, according to no particular schedule. During the transition period to the 6 month release cycle, support for the older releases was provided for 2 release cycles.<br />
<br />
=Current and upcoming releases=<br />
<p>The latest <strong>stable</strong> version of Mahara is 22.04, released on 27 April 2022.</p><br />
<br />
<p>'''Note:''' This page is updated manually, and sometimes falls behind. For 100% up-to-date information, look for the release labelled "Current Stable Release" on our [https://launchpad.net/mahara/+series Launchpad release page], or use the "Download" link on the front page of https://mahara.org</p><br />
<br />
{| class="wikitable"<br />
| style="background:#ba2025; color:#fff" |Unsupported<br />
| style="background:#566d31; color:#fff" |Currently in support<br />
|Not yet released<br />
|}<br />
<br />
<!-- This is the template for the table sections below<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff"|'''[https://mahara.org/interaction/forum/topic.php?id= Major point release number]'''<br />
|<br />
* [https://launchpad.net/mahara/ Minor point release number]<br />
| '''Major point release date''' <br><br />
* Minor point release dates<br />
| style="background:#566d31; color:#fff" | End of support date<br />
|-<br />
--><br />
<br />
{| class="wikitable" summary="Release notes for major and minor versions of Mahara, official release dates and version support end date. Versions are listed in reverse chronological order. Table is four columns wide and 22 rows deep."<br />
|+ style="text-align:left;" |Mahara release notes and end of support<br />
|-<br />
! style="text-align:left;" |Major release<br />
! style="text-align:left;" |Minor release<br />
! style="text-align:left;" |Release date<br />
! style="text-align:left;" |End of support<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=9097 22.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/22.04.2#release-notes 22.04.2]<br />
*[https://launchpad.net/mahara/+milestone/22.04.1#release-notes 22.04.1]<br />
*[https://launchpad.net/mahara/+milestone/22.04.0#release-notes 22.04.0]<br />
|'''27 April 2022''' <br><br />
<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
| style="background:#566d31; color:#fff" |October 2023<br />
|-<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8955 21.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/21.10.3#release-notes 21.10.3]<br />
*[https://launchpad.net/mahara/+milestone/21.10.2#release-notes 21.10.2]<br />
*[https://launchpad.net/mahara/+milestone/21.10.1#release-notes 21.10.1]<br />
*[https://launchpad.net/mahara/+milestone/21.10.0#release-notes 21.10.0]<br />
|'''29 October 2021''' <br><br />
<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
| style="background:#566d31; color:#fff" |April 2023<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8817 21.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/21.04.6#release-notes 21.04.6]<br />
*[https://launchpad.net/mahara/+milestone/21.04.5#release-notes 21.04.5]<br />
*[https://launchpad.net/mahara/+milestone/21.04.4#release-notes 21.04.4]<br />
*[https://launchpad.net/mahara/+milestone/21.04.3#release-notes 21.04.3]<br />
*[https://launchpad.net/mahara/+milestone/21.04.2#release-notes 21.04.2]<br />
*[https://launchpad.net/mahara/+milestone/21.04.1#release-notes 21.04.1]<br />
*[https://launchpad.net/mahara/+milestone/21.04.0#release-notes 21.04.0]<br />
|'''30 April 2021''' <br><br />
<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
*21 May 2021<br />
*30 April 2021<br />
| style="background:#566d31; color:#fff" |October 2022<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8728 20.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/20.10.6#release-notes 20.10.6]<br />
*[https://launchpad.net/mahara/+milestone/20.10.5#release-notes 20.10.5]<br />
*[https://launchpad.net/mahara/+milestone/20.10.4#release-notes 20.10.4]<br />
*[https://launchpad.net/mahara/+milestone/20.10.3#release-notes 20.10.3]<br />
*[https://launchpad.net/mahara/+milestone/20.10.2#release-notes 20.10.2]<br />
*[https://launchpad.net/mahara/+milestone/20.10.1#release-notes 20.10.1]<br />
*[https://launchpad.net/mahara/+milestone/20.10.0#release-notes 20.10.0]<br />
|'''22 October 2020'''<br><br />
<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
*21 May 2021<br />
*4 May 2021<br />
*22 October 2020<br />
| style="background:#ba2025; color:#fff" |April 2022 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8611 20.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/20.04.5#release-notes 20.04.5]<br />
*[https://launchpad.net/mahara/+milestone/20.04.4#release-notes 20.04.4]<br />
*[https://launchpad.net/mahara/+milestone/20.04.3#release-notes 20.04.3]<br />
*[https://launchpad.net/mahara/+milestone/20.04.2#release-notes 20.04.2]<br />
*[https://launchpad.net/mahara/+milestone/20.04.1#release-notes 20.04.1]<br />
*[https://launchpad.net/mahara/20.04/20.04.0#release-notes 20.04.0]<br />
|'''29 April 2020'''<br><br />
<br />
*29 October 2021<br />
*22 May 2021<br />
*4 May 2021<br />
*22 October 2020<br />
*4 August 2020<br />
*29 April 2020<br />
| style="background:#ba2025; color:#fff" |October 2021 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8533 19.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/19.10.6#releasenotes 19.10.6]<br />
*[https://launchpad.net/mahara/+milestone/19.10.5#releasenotes 19.10.5]<br />
*[https://launchpad.net/mahara/+milestone/19.10.4#release-notes 19.10.4]<br />
*[https://launchpad.net/mahara/+milestone/19.10.3#release-notes 19.10.3]<br />
*[https://launchpad.net/mahara/+milestone/19.10.2#release-notes 19.10.2]<br />
*[https://launchpad.net/mahara/19.10/19.10.1#release-notes 19.10.1]<br />
*[https://launchpad.net/mahara/19.10/19.10.0#release-notes 19.10.0]<br />
|'''31 October 2019''' <br><br />
<br />
*4 May 2021<br />
*22 October 2020<br />
*4 August 2020<br />
*30 April 2020<br />
*4 April 2020<br />
*12 November 2019<br />
*31 October 2019<br />
| style="background:#ba2025; color:#fff" |April 2021 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8444 19.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/19.04/19.04.5#release-notes 19.04.5]<br />
*[https://launchpad.net/mahara/19.04/19.04.4#release-notes 19.04.4]<br />
*[https://launchpad.net/mahara/19.04/19.04.3#release-notes 19.04.3]<br />
*[https://launchpad.net/mahara/19.04/19.04.2#release-notes 19.04.2]<br />
*[https://launchpad.net/mahara/19.04/19.04.1#release-notes 19.04.1]<br />
*[https://launchpad.net/mahara/19.04/19.04.0#release-notes 19.04.0]<br />
|'''30 April 2019''' <br><br />
<br />
*30 April 2020<br />
*4 March 2020<br />
*12 November 2019<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
| style="background:#ba2025; color:#fff" |October 2020 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8365 18.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/18.10/18.10.6#release-notes 18.10.6]<br />
*[https://launchpad.net/mahara/18.10/18.10.5#release-notes 18.10.5]<br />
*[https://launchpad.net/mahara/18.10/18.10.4#release-notes 18.10.4]<br />
*[https://launchpad.net/mahara/18.10/18.10.3#release-notes 18.10.3]<br />
*[https://launchpad.net/mahara/18.10/18.10.2#release-notes 18.10.2]<br />
*[https://launchpad.net/mahara/18.10/18.10.1#release-notes 18.10.1]<br />
*[https://launchpad.net/mahara/18.10/18.10.0#release-notes 18.10.0]<br />
|'''25 October 2018''' <br><br />
<br />
*30 April 2020<br />
*4 March 2020<br />
*12 November 2019<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
*25 October 2018<br />
| style="background:#ba2025; color:#fff" |April 2020 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8216 18.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/18.04/18.04.6#release-notes 18.04.6]<br />
*[https://launchpad.net/mahara/18.04/18.04.5#release-notes 18.04.5]<br />
*[https://launchpad.net/mahara/18.04/18.04.4#release-notes 18.04.4]<br />
*[https://launchpad.net/mahara/18.04/18.04.3#release-notes 18.04.3]<br />
*[https://launchpad.net/mahara/18.04/18.04.2#release-notes 18.04.2]<br />
*[https://launchpad.net/mahara/18.04/18.04.1#release-notes 18.04.1]<br />
*[https://launchpad.net/mahara/18.04/18.04.0#release-notes 18.04.0]<br />
|'''6 April 2018''' <br><br />
<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
| style="background:#ba2025; color:#fff" |October 2019 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8084 17.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/17.10/17.10.9#release-notes 17.10.9]<br />
*[https://launchpad.net/mahara/17.10/17.10.8#release-notes 17.10.8]<br />
*[https://launchpad.net/mahara/17.10/17.10.7#release-notes 17.10.7]<br />
*[https://launchpad.net/mahara/17.10/17.10.6#release-notes 17.10.6]<br />
*[https://launchpad.net/mahara/17.10/17.10.5#release-notes 17.10.5]<br />
*[https://launchpad.net/mahara/17.10/17.10.4#release-notes 17.10.4]<br />
*[https://launchpad.net/mahara/17.10/17.10.3#release-notes 17.10.3]<br />
*[https://launchpad.net/mahara/17.10/17.10.2#release-notes 17.10.2]<br />
*[https://launchpad.net/mahara/17.10/17.10.1#release-notes 17.10.1]<br />
*[https://launchpad.net/mahara/17.10/17.10.0#release-notes 17.10.0]<br />
|'''30 October 2017''' <br><br />
<br />
*30 April 2019<br />
*30 April 2019<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*14 December 2017<br />
*30 October 2017<br />
| style="background:#ba2025; color:#fff;" |30 April 2019 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7926 17.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/17.04/17.04.10#release-notes 17.04.10]<br />
*[https://launchpad.net/mahara/17.04/17.04.9#release-notes 17.04.9]<br />
*[https://launchpad.net/mahara/17.04/17.04.8#release-notes 17.04.8]<br />
*[https://launchpad.net/mahara/17.04/17.04.7#release-notes 17.04.7]<br />
*[https://launchpad.net/mahara/17.04/17.04.6#release-notes 17.04.6]<br />
*[https://launchpad.net/mahara/17.04/17.04.5#release-notes 17.04.5]<br />
*[https://launchpad.net/mahara/17.04/17.04.4#release-notes 17.04.4]<br />
*[https://launchpad.net/mahara/17.04/17.04.3#release-notes 17.04.3]<br />
*[https://launchpad.net/mahara/17.04/17.04.2#release-notes 17.04.2]<br />
*[https://launchpad.net/mahara/17.04/17.04.1#release-notes 17.04.1]<br />
*[https://launchpad.net/mahara/17.04/17.04.0#release-notes 17.04.0]<br />
|'''27 April 2017''' <br><br />
<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*12 May 2017<br />
*27 April 2017<br />
| style="background:#ba2025; color:#fff" |25 October 2018 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7750 16.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/16.10/16.10.9#release-notes 16.10.9]<br />
*[https://launchpad.net/mahara/16.10/16.10.8#release-notes 16.10.8]<br />
*[https://launchpad.net/mahara/16.10/16.10.7#release-notes 16.10.7]<br />
*[https://launchpad.net/mahara/16.10/16.10.6#release-notes 16.10.6]<br />
*[https://launchpad.net/mahara/16.10/16.10.5#release-notes 16.10.5]<br />
*[https://launchpad.net/mahara/16.10/16.10.4#release-notes 16.10.4]<br />
*[https://launchpad.net/mahara/16.10/16.10.3#release-notes 16.10.3]<br />
*[https://launchpad.net/mahara/16.10/16.10.2#release-notes 16.10.2]<br />
*[https://launchpad.net/mahara/16.10/16.10.1#release-notes 16.10.1]<br />
*[https://launchpad.net/mahara/16.10/16.10.0#release-notes 16.10.0]<br />
|'''21 October 2016''' <br><br />
<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*13 December 2016<br />
*21 October 2016<br />
| style="background:#ba2025; color:#fff" |06 April 2018 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7585 16.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/16.04/16.04.9#release-notes 16.04.9]<br />
*[https://launchpad.net/mahara/16.04/16.04.8#release-notes 16.04.8]<br />
*[https://launchpad.net/mahara/16.04/16.04.7#release-notes 16.04.7]<br />
*[https://launchpad.net/mahara/16.04/16.04.6#release-notes 16.04.6]<br />
*[https://launchpad.net/mahara/16.04/16.04.5#release-notes 16.04.5]<br />
*[https://launchpad.net/mahara/16.04/16.04.4#release-notes 16.04.4]<br />
*[https://launchpad.net/mahara/16.04/16.04.3#release-notes 16.04.3]<br />
*[https://launchpad.net/mahara/16.04/16.04.2#release-notes 16.04.2]<br />
*[https://launchpad.net/mahara/16.04/16.04.1#release-notes 16.04.1]<br />
*[https://launchpad.net/mahara/16.04/16.04.0#release-notes 16.04.0]<br />
|'''28 April 2016''' <br><br />
<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*11 July 2016<br />
*9 June 2016<br />
*28 April 2016<br />
| style="background:#ba2025; color:#fff" |30 October 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7420 15.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/15.10/15.10.8#release-notes 15.10.8]<br />
*[https://launchpad.net/mahara/15.10/15.10.7#release-notes 15.10.7]<br />
*[https://launchpad.net/mahara/15.10/15.10.6#release-notes 15.10.6]<br />
*[https://launchpad.net/mahara/15.10/15.10.5#release-notes 15.10.5]<br />
*[https://launchpad.net/mahara/15.10/15.10.4#release-notes 15.10.4]<br />
*[https://launchpad.net/mahara/15.10/15.10.3#release-notes 15.10.3]<br />
*[https://launchpad.net/mahara/15.10/15.10.2#release-notes 15.10.2]<br />
*[https://launchpad.net/mahara/15.10/15.10.1#release-notes 15.10.1]<br />
*[https://launchpad.net/mahara/15.10/15.10.0#release-notes 15.10.0]<br />
|'''23 October 2015''' <br><br />
<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*11 July 2016<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*23 October 2015<br />
| style="background:#ba2025; color:#fff" |26 April 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7171 15.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/15.04/15.04.15#release-notes 15.04.15]<br />
*[https://launchpad.net/mahara/15.04/15.04.14#release-notes 15.04.14]<br />
*[https://launchpad.net/mahara/15.04/15.04.13#release-notes 15.04.13]<br />
*[https://launchpad.net/mahara/15.04/15.04.12#release-notes 15.04.12]<br />
*[https://launchpad.net/mahara/15.04/15.04.11#release-notes 15.04.11]<br />
*[https://launchpad.net/mahara/15.04/15.04.10#release-notes 15.04.10]<br />
*[https://launchpad.net/mahara/15.04/15.04.9#release-notes 15.04.9]<br />
*[https://launchpad.net/mahara/15.04/15.04.8#release-notes 15.04.8]<br />
*[https://launchpad.net/mahara/15.04/15.04.7#release-notes 15.04.7]<br />
*[https://launchpad.net/mahara/15.04/15.04.6#release-notes 15.04.6]<br />
*[https://launchpad.net/mahara/15.04/15.04.5#release-notes 15.04.5]<br />
*[https://launchpad.net/mahara/15.04/15.04.4#release-notes 15.04.4]<br />
*[https://launchpad.net/mahara/15.04/15.04.3#release-notes 15.04.3]<br />
*[https://launchpad.net/mahara/15.04/15.04.2#release-notes 15.04.2]<br />
*[https://launchpad.net/mahara/15.04/15.04.1#release-notes 15.04.1]<br />
*[https://launchpad.net/mahara/15.04/15.04.0#release-notes 15.04.0]<br />
|'''23 October 2015''' <br><br />
<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*12 July 2016<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*29 May 2015<br />
*17 April 2015<br />
| style="background:#ba2025; color:#fff" |30 October 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=6509 1.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.10/1.10.10#release-notes 1.10.10]<br />
*[https://launchpad.net/mahara/1.10/1.10.9#release-notes 1.10.9]<br />
*[https://launchpad.net/mahara/1.10/1.10.8#release-notes 1.10.8]<br />
*[https://launchpad.net/mahara/1.10/1.10.7#release-notes 1.10.7]<br />
*[https://launchpad.net/mahara/1.10/1.10.6#release-notes 1.10.6]<br />
*[https://launchpad.net/mahara/1.10/1.10.5#release-notes 1.10.5]<br />
*[https://launchpad.net/mahara/1.10/1.10.4#release-notes 1.10.4]<br />
*[https://launchpad.net/mahara/1.10/1.10.3#release-notes 1.10.3]<br />
*[https://launchpad.net/mahara/1.10/1.10.2#release-notes 1.10.2]<br />
*[https://launchpad.net/mahara/1.10/1.10.1#release-notes 1.10.1]<br />
*[https://launchpad.net/mahara/1.10/1.10.0#release-notes 1.10.0]<br />
|'''21 October 2014''' <br><br />
<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*29 May 2015<br />
*20 April 2015<br />
*13 January 2015<br />
*26 November 2014<br />
*21 October 2014<br />
| style="background:#ba2025; color:#fff" |2 May 2016 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=6254 1.9]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.9/1.9.9#release-notes 1.9.9]<br />
*[https://launchpad.net/mahara/1.9/1.9.8#release-notes 1.9.8]<br />
*[https://launchpad.net/mahara/1.9/1.9.7#release-notes 1.9.7]<br />
*[https://launchpad.net/mahara/1.9/1.9.6#release-notes 1.9.6]<br />
*[https://launchpad.net/mahara/1.9/1.9.5#release-notes 1.9.5]<br />
*[https://launchpad.net/mahara/1.9/1.9.4#release-notes 1.9.4]<br />
*[https://launchpad.net/mahara/1.9/1.9.3#release-notes 1.9.3]<br />
*[https://launchpad.net/mahara/1.9/1.9.2#release-notes 1.9.2]<br />
*[https://launchpad.net/mahara/1.9/1.9.1#release-notes 1.9.1]<br />
*[https://launchpad.net/mahara/1.9/1.9.0#release-notes 1.9.0]<br />
|'''15 April 2014''' <br><br />
<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*26 November 2014<br />
*22 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*15 April 2014<br />
| style="background:#ba2025; color:#fff" |27 October 2015 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=5833 1.8]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.8/1.8.7#release-notes 1.8.7]<br />
*[https://launchpad.net/mahara/1.8/1.8.6#release-notes 1.8.6]<br />
*[https://launchpad.net/mahara/1.8/1.8.5#release-notes 1.8.5]<br />
*[https://launchpad.net/mahara/1.8/1.8.4#release-notes 1.8.4]<br />
*[https://launchpad.net/mahara/1.8/1.8.3#release-notes 1.8.3]<br />
*[https://launchpad.net/mahara/1.8/1.8.2#release-notes 1.8.2]<br />
*[https://launchpad.net/mahara/1.8/1.8.1#release-notes 1.8.1]<br />
*[https://launchpad.net/mahara/1.8/1.8.0#release-notes 1.8.0]<br />
|'''24 October 2013''' <br><br />
<br />
*20 April 2015<br />
*26 November 2014<br />
*22 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*3 April 2014<br />
*18 December 2013<br />
*24 October 2013<br />
| style="background:#ba2025; color:#fff" |20 April 2015 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=5371 1.7]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.7/1.7.8#release-notes 1.7.8]<br />
*[https://launchpad.net/mahara/1.7/1.7.7#release-notes 1.7.7]<br />
*[https://launchpad.net/mahara/1.7/1.7.6#release-notes 1.7.6]<br />
*[https://launchpad.net/mahara/1.7/1.7.5#release-notes 1.7.5]<br />
*[https://launchpad.net/mahara/1.7/1.7.4#release-notes 1.7.4]<br />
*[https://launchpad.net/mahara/1.7/1.7.3#release-notes 1.7.3]<br />
*[https://launchpad.net/mahara/1.7/1.7.2#release-notes 1.7.2]<br />
*[https://launchpad.net/mahara/1.7/1.7.1#release-notes 1.7.1]<br />
*[https://launchpad.net/mahara/1.7/1.7.0#release-notes 1.7.0]<br />
|'''19 April 2013''' <br><br />
<br />
*21 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*29 October 2013<br />
*3 October 2013<br />
*3 April 2014<br />
*18 December 2013<br />
*24 October 2013<br />
*19 April 2013<br />
| style="background:#ba2025; color:#fff" |21 October 2014 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=4967 1.6]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.6/1.6.10#release-notes 1.6.10]<br />
*[https://launchpad.net/mahara/1.6/1.6.9#release-notes 1.6.9]<br />
*[https://launchpad.net/mahara/1.6/1.6.8#release-notes 1.6.8]<br />
*[https://launchpad.net/mahara/1.6/1.6.7#release-notes 1.6.7]<br />
*[https://launchpad.net/mahara/1.6/1.6.6#release-notes 1.6.6]<br />
*[https://launchpad.net/mahara/1.6/1.6.5#release-notes 1.6.5]<br />
*[https://launchpad.net/mahara/1.6/1.6.4#release-notes 1.6.4]<br />
*[https://launchpad.net/mahara/1.6/1.6.3#release-notes 1.6.3]<br />
*[https://launchpad.net/mahara/1.6/1.6.2#release-notes 1.6.2]<br />
*[https://launchpad.net/mahara/1.6/1.6.1#release-notes 1.6.1]<br />
*[https://launchpad.net/mahara/1.6/1.6.0#release-notes 1.6.0]<br />
|'''19 October 2019''' <br><br />
<br />
*13 May 2014<br />
*3 April 2014<br />
*29 October 2013<br />
*3 October 2013<br />
*25 July 2013<br />
*2 May 2013<br />
*15 April 2013<br />
*15 February 2013<br />
*23 November 2012<br />
*24 October 2012<br />
*19 October 2012<br />
| style="background:#ba2025; color:#fff" |29 April 2014 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=4469 1.5]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.5/1.5.13#release-notes 1.5.13]<br />
*[https://launchpad.net/mahara/1.5/1.5.12#release-notes 1.5.12]<br />
*[https://launchpad.net/mahara/1.5/1.5.11#release-notes 1.5.11]<br />
*[https://launchpad.net/mahara/1.5/1.5.10#release-notes 1.5.10]<br />
*[https://launchpad.net/mahara/1.5/1.5.9#release-notes 1.5.9]<br />
*[https://launchpad.net/mahara/1.5/1.5.8#release-notes 1.5.8]<br />
*[https://launchpad.net/mahara/1.5/1.5.7#release-notes 1.5.7]<br />
*[https://launchpad.net/mahara/1.5/1.5.6#release-notes 1.5.6]<br />
*[https://launchpad.net/mahara/1.5/1.5.4#release-notes 1.5.4]<br />
*[https://launchpad.net/mahara/1.5/1.5.3#release-notes 1.5.3]<br />
*[https://launchpad.net/mahara/1.5/1.5.2#release-notes 1.5.2]<br />
*[https://launchpad.net/mahara/1.5/1.5.1#release-notes 1.5.1]<br />
*[https://launchpad.net/mahara/1.5/1.5.0#release-notes 1.5.0]<br />
|'''17 April 2012''' <br><br />
<br />
*25 October 2013<br />
*3 October 2013<br />
*24 July 2013<br />
*2 May 2013<br />
*15 April 2013<br />
*15 February 2013<br />
*23 November 2012<br />
*17 October 2012<br />
*10 October 2012<br />
*14 September 2012<br />
*31 July 2012<br />
*3 May 2012<br />
*17 April 2012<br />
| style="background:#ba2025; color:#fff" |29 October 2013 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=3744 1.4]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.6 1.4.6]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.5 1.4.5]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.4 1.4.4]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.3 1.4.3]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.2 1.4.2]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.1 1.4.1]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.0 1.4.0]<br />
|'''13 June 2011''' <br><br />
<br />
*17 October 2012<br />
*10 October 2012<br />
*14 September 2012<br />
*31 July 2011<br />
*6 March 2011<br />
*3 November 2011<br />
*13 June 2011<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=2252 1.3]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.3.8 1.3.8]<br />
*[https://launchpad.net/mahara/+milestone/1.3.7 1.3.7]<br />
*[https://launchpad.net/mahara/+milestone/1.3.6 1.3.6]<br />
*[https://launchpad.net/mahara/+milestone/1.3.5 1.3.5]<br />
*[https://launchpad.net/mahara/+milestone/1.3.4 1.3.4]<br />
*[https://launchpad.net/mahara/+milestone/1.3.3 1.3.3]<br />
*[https://launchpad.net/mahara/+milestone/1.3.2 1.3.2]<br />
*[https://launchpad.net/mahara/+milestone/1.3.1 1.3.1]<br />
*[https://launchpad.net/mahara/+milestone/1.3.0 1.3.0]<br />
|'''10 September 2010''' <br><br />
<br />
*5 March 2012<br />
*3 Novemver 2011<br />
*10 May 2011<br />
*28 March 2011<br />
*24 March 2011<br />
*7 November 2010<br />
*8 October 2010<br />
*17 September 2010<br />
*10 September 2010<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=1226 1.2]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.2.9 1.2.9]<br />
*[https://launchpad.net/mahara/+milestone/1.2..8 1.2.8]<br />
*[https://launchpad.net/mahara/+milestone/1.2.7 1.2.7]<br />
*[https://launchpad.net/mahara/+milestone/1.2.6 1.2.6]<br />
*[https://launchpad.net/mahara/+milestone/1.2.5 1.2.5]<br />
*[https://launchpad.net/mahara/+milestone/1.2.4 1.2.4]<br />
*[https://launchpad.net/mahara/+milestone/1.2.3 1.2.3]<br />
*[https://launchpad.net/mahara/+milestone/1.2.2 1.2.2]<br />
*[https://launchpad.net/mahara/+milestone/1.2.1 1.2.1]<br />
*[https://launchpad.net/mahara/+milestone/1.2.0 1.2.0]<br />
|'''16 November 2009''' <br><br />
<br />
*10 May 2011<br />
*24 March 2011<br />
*1 September 2011<br />
*2 July 2010<br />
*6 April 2010<br />
*8 February 2010<br />
*8 December 2009<br />
*8 December 2009<br />
*16 November 2009<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://launchpad.net/mahara/+milestone/1.0.10 1.1]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.1.9 1.1.9]<br />
*[https://launchpad.net/mahara/+milestone/1.1.8 1.1.8]<br />
*[https://launchpad.net/mahara/+milestone/1.1.7 1.1.7]<br />
*[https://launchpad.net/mahara/+milestone/1.1.6 1.1.6]<br />
*[https://launchpad.net/mahara/+milestone/1.1.5 1.1.5]<br />
*[https://launchpad.net/mahara/+milestone/1.1.4 1.1.4]<br />
*[https://launchpad.net/mahara/+milestone/1.1.3 1.1.3]<br />
*[https://launchpad.net/mahara/+milestone/1.1.2 1.1.2]<br />
*[https://launchpad.net/mahara/+milestone/1.1.1 1.1.1]<br />
*[https://launchpad.net/mahara/+milestone/1.1.0 1.1.0]<br />
|'''25 February 2009''' <br><br />
<br />
*2 July 2010<br />
*6 April 2010<br />
*28 October 2009<br />
*21 June 2009<br />
*10 June 2009<br />
*21 April 2009<br />
*9 March 2009<br />
*26 February 2009<br />
*25 February 2009<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=292 1.0]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.0.15 1.0.15]<br />
*[https://launchpad.net/mahara/+milestone/1.0.14 1.0.14]<br />
*[https://launchpad.net/mahara/+milestone/1.0.13 1.0.13]<br />
*[https://launchpad.net/mahara/+milestone/1.0.12 1.0.12]<br />
*[https://launchpad.net/mahara/+milestone/1.0.11 1.0.11]<br />
*[https://launchpad.net/mahara/+milestone/1.0.10 1.0.10]<br />
*[[Releases/1.0.9|1.0.9]]<br />
*[[Releases/1.0.8|1.0.8]]<br />
*[[Releases/1.0.7|1.0.7]]<br />
|'''9 March 2009''' <br><br />
<br />
*2 July 2010<br />
*6 April 2010<br />
*28 October 2009<br />
*21 June 2009<br />
*21 April 2009<br />
*9 March 2009<br />
*Unavailable<br />
*Unavailable<br />
*Unavailable<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
|}<br />
<br />
=Definition of support=<br />
<br />
Being "supported" means:<br />
<br />
*The release team is committed to making available updates to Mahara that are security related. See [[Security]] to find out how to report security bugs to us.<br />
*Occasionally, some other serious bug fixes will be included, but these are not guaranteed. If you find another type of bug, please let us know by reporting it on the mahara.org forums or directly on Launchpad: https://bugs.launchpad.net/mahara/+filebug<br />
<br />
=Specific backporting rules=<br />
<br />
When deciding which bugs to backport to supported branches, these are the general principles:<br />
<br />
*'''[[Security]] bugs'''<br />
**'''All''' Critical and High priority security bugs should be backported.<br />
**'''Nearly all''' Medium and Low priority security bugs should be backported. At the maintenance team's discretion, these might not be backported if:<br />
***Backporting would be technically difficult due to differences between Mahara versions.<br />
***The bug fix requires database upgrades or dataroot manipulations.<br />
***The bug fix otherwise introduces a high risk of [https://en.wikipedia.org/wiki/Software_regression regressions].<br />
<br />
*'''Non-security bugs'''<br />
**'''All''' Critical bugs should be backported.<br />
**'''Most''' High priority bugs should be backported. At the maintenance team's discretion, these might not be backported if:<br />
***Backporting would be technically difficult due to differences between Mahara versions.<br />
***The bug fix requires database upgrades or dataroot manipulations.<br />
***The bug fix otherwise introduces a high risk of [https://en.wikipedia.org/wiki/Software_regression regressions].<br />
**'''No''' Medium or Low priority non-security bugs are backported.<br />
**'''No''' Wishlist bugs are backported. Wishlist items are only added to the current development branch.<br />
<br />
If you want to backport certain bug fixes or new features to your own instance of Mahara, you can do so on your own as the code is available.<br />
<br />
See [[Developer_Area/Bug_Status#Importance|Bug Status:Importance]] for the guidelines on how we decide whether a bug is Critical, High, Medium, or Low.<br />
<br />
[[Category:Release Notes]]</div>
Gold
https://wiki.mahara.org/index.php?title=Releases&diff=13296
Releases
2022-06-16T03:26:57Z
<p>Gold: /* Current and upcoming releases */ Added 21.04.6 release link</p>
<hr />
<div>=Release cycle and version support=<br />
<p>A new major version of Mahara is released every 6 months, in April and October. The version numbers reflect the year and the month in which a version was released. See [[Developer_Area/Version_Numbering_Policy|Version Numbering Policy]] for more details.<br><br />
<br />
{| class="wikitable" style="padding:0em; text-align:left" summary="Mahara's six monthly cycle for April and October releases."<br />
! scope="col" style="text-align:left; background-color:#566d31; color:#fff;" |Release cycle<br />
! scope="col" style="text-align:left;" |Nov - Apr<br />
! scope="col" style="text-align:left;" |May - Oct<br />
|-<br />
! scope="row" style="text-align:left;" |Feature freeze<br />
| style="background-color:#fff;" |Early February<br />
| style="background-color:#fff;" |Early August<br />
|-<br />
! scope="row" style="text-align:left;" |UI freeze<br />
| style="background-color:#fff;" |Early March<br />
| style="background-color:#fff;" |Early September<br />
|-<br />
! scope="row" style="text-align:left;" |Release candidate<br />
| style="background-color:#fff;" |Mid March<br />
| style="background-color:#fff;" |Mid September<br />
|-<br />
! scope="row" style="text-align:left;" |Official release<br />
| style="background-color:#fff;" |Late April<br />
| style="background-color:#fff;" |Late October<br />
|-<br />
|}<br />
<ul><br />
<li> Each release has 16 weeks before feature freeze.</li><br />
<li>For each release, We've put feature freeze at a month before the release candidate. Only non-feature bug fixes will be committed after this </li><br />
<li>The week before the release candidates is a UI freeze. This is a freeze to string changes and theme changes. String or UI fixes will need to be at least high importance.</li><br />
</ul></p><br />
<p></p><br />
<p><strong>The standard support lifetime of a major version is 18 months (3 release cycles):</strong><br><br />
<ul><br />
<li>Receives bug fixes and security fixes for the first 6 months</li><br />
<li>Receives security fixes only, for an additional 12 months</li><br />
</ul><br />
In the event that a major release substantially breaks backwards compatibility, we may declare the previous release to be an extended support release which will receive security fixes for 30 months (5 release cycles), in order to give sites more time to upgrade.</p><br />
<br />
=Older releases (pre Mahara 1.6)=<br />
<br />
Prior to Mahara 1.6, Mahara major versions were released as needed, according to no particular schedule. During the transition period to the 6 month release cycle, support for the older releases was provided for 2 release cycles.<br />
<br />
=Current and upcoming releases=<br />
<p>The latest <strong>stable</strong> version of Mahara is 22.04, released on 27 April 2022.</p><br />
<br />
<p>'''Note:''' This page is updated manually, and sometimes falls behind. For 100% up-to-date information, look for the release labelled "Current Stable Release" on our [https://launchpad.net/mahara/+series Launchpad release page], or use the "Download" link on the front page of https://mahara.org</p><br />
<br />
{| class="wikitable"<br />
| style="background:#ba2025; color:#fff" |Unsupported<br />
| style="background:#566d31; color:#fff" |Currently in support<br />
|Not yet released<br />
|}<br />
<br />
<!-- This is the template for the table sections below<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff"|'''[https://mahara.org/interaction/forum/topic.php?id= Major point release number]'''<br />
|<br />
* [https://launchpad.net/mahara/ Minor point release number]<br />
| '''Major point release date''' <br><br />
* Minor point release dates<br />
| style="background:#566d31; color:#fff" | End of support date<br />
|-<br />
--><br />
<br />
{| class="wikitable" summary="Release notes for major and minor versions of Mahara, official release dates and version support end date. Versions are listed in reverse chronological order. Table is four columns wide and 22 rows deep."<br />
|+ style="text-align:left;" |Mahara release notes and end of support<br />
|-<br />
! style="text-align:left;" |Major release<br />
! style="text-align:left;" |Minor release<br />
! style="text-align:left;" |Release date<br />
! style="text-align:left;" |End of support<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=9097 22.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/22.04.2#release-notes 22.04.2]<br />
*[https://launchpad.net/mahara/+milestone/22.04.1#release-notes 22.04.1]<br />
*[https://launchpad.net/mahara/+milestone/22.04.0#release-notes 22.04.0]<br />
|'''27 April 2022''' <br><br />
<br />
*16 June 2022<br />
*2 May 2022<br />
*27 April 2022<br />
| style="background:#566d31; color:#fff" |October 2023<br />
|-<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8955 21.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/21.10.3#release-notes 21.10.3]<br />
*[https://launchpad.net/mahara/+milestone/21.10.2#release-notes 21.10.2]<br />
*[https://launchpad.net/mahara/+milestone/21.10.1#release-notes 21.10.1]<br />
*[https://launchpad.net/mahara/+milestone/21.10.0#release-notes 21.10.0]<br />
|'''29 October 2021''' <br><br />
<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
| style="background:#566d31; color:#fff" |April 2023<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8817 21.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/21.04.6#release-notes 21.04.6]<br />
*[https://launchpad.net/mahara/+milestone/21.04.5#release-notes 21.04.5]<br />
*[https://launchpad.net/mahara/+milestone/21.04.4#release-notes 21.04.4]<br />
*[https://launchpad.net/mahara/+milestone/21.04.3#release-notes 21.04.3]<br />
*[https://launchpad.net/mahara/+milestone/21.04.2#release-notes 21.04.2]<br />
*[https://launchpad.net/mahara/+milestone/21.04.1#release-notes 21.04.1]<br />
*[https://launchpad.net/mahara/+milestone/21.04.0#release-notes 21.04.0]<br />
|'''30 April 2021''' <br><br />
<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
*21 May 2021<br />
*30 April 2021<br />
| style="background:#566d31; color:#fff" |October 2022<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8728 20.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/20.10.6#release-notes 20.10.6]<br />
*[https://launchpad.net/mahara/+milestone/20.10.5#release-notes 20.10.5]<br />
*[https://launchpad.net/mahara/+milestone/20.10.4#release-notes 20.10.4]<br />
*[https://launchpad.net/mahara/+milestone/20.10.3#release-notes 20.10.3]<br />
*[https://launchpad.net/mahara/+milestone/20.10.2#release-notes 20.10.2]<br />
*[https://launchpad.net/mahara/+milestone/20.10.1#release-notes 20.10.1]<br />
*[https://launchpad.net/mahara/+milestone/20.10.0#release-notes 20.10.0]<br />
|'''22 October 2020'''<br><br />
<br />
*2 May 2022<br />
*27 April 2022<br />
*9 February 2022<br />
*29 October 2021<br />
*21 May 2021<br />
*4 May 2021<br />
*22 October 2020<br />
| style="background:#ba2025; color:#fff" |April 2022 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8611 20.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/20.04.5#release-notes 20.04.5]<br />
*[https://launchpad.net/mahara/+milestone/20.04.4#release-notes 20.04.4]<br />
*[https://launchpad.net/mahara/+milestone/20.04.3#release-notes 20.04.3]<br />
*[https://launchpad.net/mahara/+milestone/20.04.2#release-notes 20.04.2]<br />
*[https://launchpad.net/mahara/+milestone/20.04.1#release-notes 20.04.1]<br />
*[https://launchpad.net/mahara/20.04/20.04.0#release-notes 20.04.0]<br />
|'''29 April 2020'''<br><br />
<br />
*29 October 2021<br />
*22 May 2021<br />
*4 May 2021<br />
*22 October 2020<br />
*4 August 2020<br />
*29 April 2020<br />
| style="background:#ba2025; color:#fff" |October 2021 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8533 19.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/19.10.6#releasenotes 19.10.6]<br />
*[https://launchpad.net/mahara/+milestone/19.10.5#releasenotes 19.10.5]<br />
*[https://launchpad.net/mahara/+milestone/19.10.4#release-notes 19.10.4]<br />
*[https://launchpad.net/mahara/+milestone/19.10.3#release-notes 19.10.3]<br />
*[https://launchpad.net/mahara/+milestone/19.10.2#release-notes 19.10.2]<br />
*[https://launchpad.net/mahara/19.10/19.10.1#release-notes 19.10.1]<br />
*[https://launchpad.net/mahara/19.10/19.10.0#release-notes 19.10.0]<br />
|'''31 October 2019''' <br><br />
<br />
*4 May 2021<br />
*22 October 2020<br />
*4 August 2020<br />
*30 April 2020<br />
*4 April 2020<br />
*12 November 2019<br />
*31 October 2019<br />
| style="background:#ba2025; color:#fff" |April 2021 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8444 19.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/19.04/19.04.5#release-notes 19.04.5]<br />
*[https://launchpad.net/mahara/19.04/19.04.4#release-notes 19.04.4]<br />
*[https://launchpad.net/mahara/19.04/19.04.3#release-notes 19.04.3]<br />
*[https://launchpad.net/mahara/19.04/19.04.2#release-notes 19.04.2]<br />
*[https://launchpad.net/mahara/19.04/19.04.1#release-notes 19.04.1]<br />
*[https://launchpad.net/mahara/19.04/19.04.0#release-notes 19.04.0]<br />
|'''30 April 2019''' <br><br />
<br />
*30 April 2020<br />
*4 March 2020<br />
*12 November 2019<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
| style="background:#ba2025; color:#fff" |October 2020 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8365 18.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/18.10/18.10.6#release-notes 18.10.6]<br />
*[https://launchpad.net/mahara/18.10/18.10.5#release-notes 18.10.5]<br />
*[https://launchpad.net/mahara/18.10/18.10.4#release-notes 18.10.4]<br />
*[https://launchpad.net/mahara/18.10/18.10.3#release-notes 18.10.3]<br />
*[https://launchpad.net/mahara/18.10/18.10.2#release-notes 18.10.2]<br />
*[https://launchpad.net/mahara/18.10/18.10.1#release-notes 18.10.1]<br />
*[https://launchpad.net/mahara/18.10/18.10.0#release-notes 18.10.0]<br />
|'''25 October 2018''' <br><br />
<br />
*30 April 2020<br />
*4 March 2020<br />
*12 November 2019<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
*25 October 2018<br />
| style="background:#ba2025; color:#fff" |April 2020 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8216 18.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/18.04/18.04.6#release-notes 18.04.6]<br />
*[https://launchpad.net/mahara/18.04/18.04.5#release-notes 18.04.5]<br />
*[https://launchpad.net/mahara/18.04/18.04.4#release-notes 18.04.4]<br />
*[https://launchpad.net/mahara/18.04/18.04.3#release-notes 18.04.3]<br />
*[https://launchpad.net/mahara/18.04/18.04.2#release-notes 18.04.2]<br />
*[https://launchpad.net/mahara/18.04/18.04.1#release-notes 18.04.1]<br />
*[https://launchpad.net/mahara/18.04/18.04.0#release-notes 18.04.0]<br />
|'''6 April 2018''' <br><br />
<br />
*1 November 2019<br />
*23 July 2019<br />
*30 April 2019<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
| style="background:#ba2025; color:#fff" |October 2019 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=8084 17.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/17.10/17.10.9#release-notes 17.10.9]<br />
*[https://launchpad.net/mahara/17.10/17.10.8#release-notes 17.10.8]<br />
*[https://launchpad.net/mahara/17.10/17.10.7#release-notes 17.10.7]<br />
*[https://launchpad.net/mahara/17.10/17.10.6#release-notes 17.10.6]<br />
*[https://launchpad.net/mahara/17.10/17.10.5#release-notes 17.10.5]<br />
*[https://launchpad.net/mahara/17.10/17.10.4#release-notes 17.10.4]<br />
*[https://launchpad.net/mahara/17.10/17.10.3#release-notes 17.10.3]<br />
*[https://launchpad.net/mahara/17.10/17.10.2#release-notes 17.10.2]<br />
*[https://launchpad.net/mahara/17.10/17.10.1#release-notes 17.10.1]<br />
*[https://launchpad.net/mahara/17.10/17.10.0#release-notes 17.10.0]<br />
|'''30 October 2017''' <br><br />
<br />
*30 April 2019<br />
*30 April 2019<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*14 December 2017<br />
*30 October 2017<br />
| style="background:#ba2025; color:#fff;" |30 April 2019 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7926 17.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/17.04/17.04.10#release-notes 17.04.10]<br />
*[https://launchpad.net/mahara/17.04/17.04.9#release-notes 17.04.9]<br />
*[https://launchpad.net/mahara/17.04/17.04.8#release-notes 17.04.8]<br />
*[https://launchpad.net/mahara/17.04/17.04.7#release-notes 17.04.7]<br />
*[https://launchpad.net/mahara/17.04/17.04.6#release-notes 17.04.6]<br />
*[https://launchpad.net/mahara/17.04/17.04.5#release-notes 17.04.5]<br />
*[https://launchpad.net/mahara/17.04/17.04.4#release-notes 17.04.4]<br />
*[https://launchpad.net/mahara/17.04/17.04.3#release-notes 17.04.3]<br />
*[https://launchpad.net/mahara/17.04/17.04.2#release-notes 17.04.2]<br />
*[https://launchpad.net/mahara/17.04/17.04.1#release-notes 17.04.1]<br />
*[https://launchpad.net/mahara/17.04/17.04.0#release-notes 17.04.0]<br />
|'''27 April 2017''' <br><br />
<br />
*25 October 2018<br />
*11 June 2018<br />
*30 May 2018<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*12 May 2017<br />
*27 April 2017<br />
| style="background:#ba2025; color:#fff" |25 October 2018 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7750 16.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/16.10/16.10.9#release-notes 16.10.9]<br />
*[https://launchpad.net/mahara/16.10/16.10.8#release-notes 16.10.8]<br />
*[https://launchpad.net/mahara/16.10/16.10.7#release-notes 16.10.7]<br />
*[https://launchpad.net/mahara/16.10/16.10.6#release-notes 16.10.6]<br />
*[https://launchpad.net/mahara/16.10/16.10.5#release-notes 16.10.5]<br />
*[https://launchpad.net/mahara/16.10/16.10.4#release-notes 16.10.4]<br />
*[https://launchpad.net/mahara/16.10/16.10.3#release-notes 16.10.3]<br />
*[https://launchpad.net/mahara/16.10/16.10.2#release-notes 16.10.2]<br />
*[https://launchpad.net/mahara/16.10/16.10.1#release-notes 16.10.1]<br />
*[https://launchpad.net/mahara/16.10/16.10.0#release-notes 16.10.0]<br />
|'''21 October 2016''' <br><br />
<br />
*6 April 2018<br />
*2 February 2018<br />
*17 January 2018<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*13 December 2016<br />
*21 October 2016<br />
| style="background:#ba2025; color:#fff" |06 April 2018 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7585 16.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/16.04/16.04.9#release-notes 16.04.9]<br />
*[https://launchpad.net/mahara/16.04/16.04.8#release-notes 16.04.8]<br />
*[https://launchpad.net/mahara/16.04/16.04.7#release-notes 16.04.7]<br />
*[https://launchpad.net/mahara/16.04/16.04.6#release-notes 16.04.6]<br />
*[https://launchpad.net/mahara/16.04/16.04.5#release-notes 16.04.5]<br />
*[https://launchpad.net/mahara/16.04/16.04.4#release-notes 16.04.4]<br />
*[https://launchpad.net/mahara/16.04/16.04.3#release-notes 16.04.3]<br />
*[https://launchpad.net/mahara/16.04/16.04.2#release-notes 16.04.2]<br />
*[https://launchpad.net/mahara/16.04/16.04.1#release-notes 16.04.1]<br />
*[https://launchpad.net/mahara/16.04/16.04.0#release-notes 16.04.0]<br />
|'''28 April 2016''' <br><br />
<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*11 July 2016<br />
*9 June 2016<br />
*28 April 2016<br />
| style="background:#ba2025; color:#fff" |30 October 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7420 15.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/15.10/15.10.8#release-notes 15.10.8]<br />
*[https://launchpad.net/mahara/15.10/15.10.7#release-notes 15.10.7]<br />
*[https://launchpad.net/mahara/15.10/15.10.6#release-notes 15.10.6]<br />
*[https://launchpad.net/mahara/15.10/15.10.5#release-notes 15.10.5]<br />
*[https://launchpad.net/mahara/15.10/15.10.4#release-notes 15.10.4]<br />
*[https://launchpad.net/mahara/15.10/15.10.3#release-notes 15.10.3]<br />
*[https://launchpad.net/mahara/15.10/15.10.2#release-notes 15.10.2]<br />
*[https://launchpad.net/mahara/15.10/15.10.1#release-notes 15.10.1]<br />
*[https://launchpad.net/mahara/15.10/15.10.0#release-notes 15.10.0]<br />
|'''23 October 2015''' <br><br />
<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*11 July 2016<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*23 October 2015<br />
| style="background:#ba2025; color:#fff" |26 April 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=7171 15.04]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/15.04/15.04.15#release-notes 15.04.15]<br />
*[https://launchpad.net/mahara/15.04/15.04.14#release-notes 15.04.14]<br />
*[https://launchpad.net/mahara/15.04/15.04.13#release-notes 15.04.13]<br />
*[https://launchpad.net/mahara/15.04/15.04.12#release-notes 15.04.12]<br />
*[https://launchpad.net/mahara/15.04/15.04.11#release-notes 15.04.11]<br />
*[https://launchpad.net/mahara/15.04/15.04.10#release-notes 15.04.10]<br />
*[https://launchpad.net/mahara/15.04/15.04.9#release-notes 15.04.9]<br />
*[https://launchpad.net/mahara/15.04/15.04.8#release-notes 15.04.8]<br />
*[https://launchpad.net/mahara/15.04/15.04.7#release-notes 15.04.7]<br />
*[https://launchpad.net/mahara/15.04/15.04.6#release-notes 15.04.6]<br />
*[https://launchpad.net/mahara/15.04/15.04.5#release-notes 15.04.5]<br />
*[https://launchpad.net/mahara/15.04/15.04.4#release-notes 15.04.4]<br />
*[https://launchpad.net/mahara/15.04/15.04.3#release-notes 15.04.3]<br />
*[https://launchpad.net/mahara/15.04/15.04.2#release-notes 15.04.2]<br />
*[https://launchpad.net/mahara/15.04/15.04.1#release-notes 15.04.1]<br />
*[https://launchpad.net/mahara/15.04/15.04.0#release-notes 15.04.0]<br />
|'''23 October 2015''' <br><br />
<br />
*30 October 2017<br />
*11 September 2017<br />
*25 May 2017<br />
*26 April 2017<br />
*29 December 2016<br />
*25 October 2016<br />
*8 August 2016<br />
*12 July 2016<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*29 May 2015<br />
*17 April 2015<br />
| style="background:#ba2025; color:#fff" |30 October 2017 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=6509 1.10]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.10/1.10.10#release-notes 1.10.10]<br />
*[https://launchpad.net/mahara/1.10/1.10.9#release-notes 1.10.9]<br />
*[https://launchpad.net/mahara/1.10/1.10.8#release-notes 1.10.8]<br />
*[https://launchpad.net/mahara/1.10/1.10.7#release-notes 1.10.7]<br />
*[https://launchpad.net/mahara/1.10/1.10.6#release-notes 1.10.6]<br />
*[https://launchpad.net/mahara/1.10/1.10.5#release-notes 1.10.5]<br />
*[https://launchpad.net/mahara/1.10/1.10.4#release-notes 1.10.4]<br />
*[https://launchpad.net/mahara/1.10/1.10.3#release-notes 1.10.3]<br />
*[https://launchpad.net/mahara/1.10/1.10.2#release-notes 1.10.2]<br />
*[https://launchpad.net/mahara/1.10/1.10.1#release-notes 1.10.1]<br />
*[https://launchpad.net/mahara/1.10/1.10.0#release-notes 1.10.0]<br />
|'''21 October 2014''' <br><br />
<br />
*2 May 2016<br />
*24 March 2016<br />
*27 November 2015<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*29 May 2015<br />
*20 April 2015<br />
*13 January 2015<br />
*26 November 2014<br />
*21 October 2014<br />
| style="background:#ba2025; color:#fff" |2 May 2016 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=6254 1.9]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.9/1.9.9#release-notes 1.9.9]<br />
*[https://launchpad.net/mahara/1.9/1.9.8#release-notes 1.9.8]<br />
*[https://launchpad.net/mahara/1.9/1.9.7#release-notes 1.9.7]<br />
*[https://launchpad.net/mahara/1.9/1.9.6#release-notes 1.9.6]<br />
*[https://launchpad.net/mahara/1.9/1.9.5#release-notes 1.9.5]<br />
*[https://launchpad.net/mahara/1.9/1.9.4#release-notes 1.9.4]<br />
*[https://launchpad.net/mahara/1.9/1.9.3#release-notes 1.9.3]<br />
*[https://launchpad.net/mahara/1.9/1.9.2#release-notes 1.9.2]<br />
*[https://launchpad.net/mahara/1.9/1.9.1#release-notes 1.9.1]<br />
*[https://launchpad.net/mahara/1.9/1.9.0#release-notes 1.9.0]<br />
|'''15 April 2014''' <br><br />
<br />
*27 October 2015<br />
*19 August 2015<br />
*10 July 2015<br />
*26 November 2014<br />
*22 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*15 April 2014<br />
| style="background:#ba2025; color:#fff" |27 October 2015 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=5833 1.8]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.8/1.8.7#release-notes 1.8.7]<br />
*[https://launchpad.net/mahara/1.8/1.8.6#release-notes 1.8.6]<br />
*[https://launchpad.net/mahara/1.8/1.8.5#release-notes 1.8.5]<br />
*[https://launchpad.net/mahara/1.8/1.8.4#release-notes 1.8.4]<br />
*[https://launchpad.net/mahara/1.8/1.8.3#release-notes 1.8.3]<br />
*[https://launchpad.net/mahara/1.8/1.8.2#release-notes 1.8.2]<br />
*[https://launchpad.net/mahara/1.8/1.8.1#release-notes 1.8.1]<br />
*[https://launchpad.net/mahara/1.8/1.8.0#release-notes 1.8.0]<br />
|'''24 October 2013''' <br><br />
<br />
*20 April 2015<br />
*26 November 2014<br />
*22 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*3 April 2014<br />
*18 December 2013<br />
*24 October 2013<br />
| style="background:#ba2025; color:#fff" |20 April 2015 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff;" |'''[https://mahara.org/interaction/forum/topic.php?id=5371 1.7]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.7/1.7.8#release-notes 1.7.8]<br />
*[https://launchpad.net/mahara/1.7/1.7.7#release-notes 1.7.7]<br />
*[https://launchpad.net/mahara/1.7/1.7.6#release-notes 1.7.6]<br />
*[https://launchpad.net/mahara/1.7/1.7.5#release-notes 1.7.5]<br />
*[https://launchpad.net/mahara/1.7/1.7.4#release-notes 1.7.4]<br />
*[https://launchpad.net/mahara/1.7/1.7.3#release-notes 1.7.3]<br />
*[https://launchpad.net/mahara/1.7/1.7.2#release-notes 1.7.2]<br />
*[https://launchpad.net/mahara/1.7/1.7.1#release-notes 1.7.1]<br />
*[https://launchpad.net/mahara/1.7/1.7.0#release-notes 1.7.0]<br />
|'''19 April 2013''' <br><br />
<br />
*21 October 2014<br />
*1 August 2014<br />
*13 May 2014<br />
*29 October 2013<br />
*3 October 2013<br />
*3 April 2014<br />
*18 December 2013<br />
*24 October 2013<br />
*19 April 2013<br />
| style="background:#ba2025; color:#fff" |21 October 2014 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=4967 1.6]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.6/1.6.10#release-notes 1.6.10]<br />
*[https://launchpad.net/mahara/1.6/1.6.9#release-notes 1.6.9]<br />
*[https://launchpad.net/mahara/1.6/1.6.8#release-notes 1.6.8]<br />
*[https://launchpad.net/mahara/1.6/1.6.7#release-notes 1.6.7]<br />
*[https://launchpad.net/mahara/1.6/1.6.6#release-notes 1.6.6]<br />
*[https://launchpad.net/mahara/1.6/1.6.5#release-notes 1.6.5]<br />
*[https://launchpad.net/mahara/1.6/1.6.4#release-notes 1.6.4]<br />
*[https://launchpad.net/mahara/1.6/1.6.3#release-notes 1.6.3]<br />
*[https://launchpad.net/mahara/1.6/1.6.2#release-notes 1.6.2]<br />
*[https://launchpad.net/mahara/1.6/1.6.1#release-notes 1.6.1]<br />
*[https://launchpad.net/mahara/1.6/1.6.0#release-notes 1.6.0]<br />
|'''19 October 2019''' <br><br />
<br />
*13 May 2014<br />
*3 April 2014<br />
*29 October 2013<br />
*3 October 2013<br />
*25 July 2013<br />
*2 May 2013<br />
*15 April 2013<br />
*15 February 2013<br />
*23 November 2012<br />
*24 October 2012<br />
*19 October 2012<br />
| style="background:#ba2025; color:#fff" |29 April 2014 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=4469 1.5]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.5/1.5.13#release-notes 1.5.13]<br />
*[https://launchpad.net/mahara/1.5/1.5.12#release-notes 1.5.12]<br />
*[https://launchpad.net/mahara/1.5/1.5.11#release-notes 1.5.11]<br />
*[https://launchpad.net/mahara/1.5/1.5.10#release-notes 1.5.10]<br />
*[https://launchpad.net/mahara/1.5/1.5.9#release-notes 1.5.9]<br />
*[https://launchpad.net/mahara/1.5/1.5.8#release-notes 1.5.8]<br />
*[https://launchpad.net/mahara/1.5/1.5.7#release-notes 1.5.7]<br />
*[https://launchpad.net/mahara/1.5/1.5.6#release-notes 1.5.6]<br />
*[https://launchpad.net/mahara/1.5/1.5.4#release-notes 1.5.4]<br />
*[https://launchpad.net/mahara/1.5/1.5.3#release-notes 1.5.3]<br />
*[https://launchpad.net/mahara/1.5/1.5.2#release-notes 1.5.2]<br />
*[https://launchpad.net/mahara/1.5/1.5.1#release-notes 1.5.1]<br />
*[https://launchpad.net/mahara/1.5/1.5.0#release-notes 1.5.0]<br />
|'''17 April 2012''' <br><br />
<br />
*25 October 2013<br />
*3 October 2013<br />
*24 July 2013<br />
*2 May 2013<br />
*15 April 2013<br />
*15 February 2013<br />
*23 November 2012<br />
*17 October 2012<br />
*10 October 2012<br />
*14 September 2012<br />
*31 July 2012<br />
*3 May 2012<br />
*17 April 2012<br />
| style="background:#ba2025; color:#fff" |29 October 2013 <br>(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=3744 1.4]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.6 1.4.6]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.5 1.4.5]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.4 1.4.4]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.3 1.4.3]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.2 1.4.2]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.1 1.4.1]<br />
*[https://launchpad.net/mahara/1.4/+milestone/1.4.0 1.4.0]<br />
|'''13 June 2011''' <br><br />
<br />
*17 October 2012<br />
*10 October 2012<br />
*14 September 2012<br />
*31 July 2011<br />
*6 March 2011<br />
*3 November 2011<br />
*13 June 2011<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=2252 1.3]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.3.8 1.3.8]<br />
*[https://launchpad.net/mahara/+milestone/1.3.7 1.3.7]<br />
*[https://launchpad.net/mahara/+milestone/1.3.6 1.3.6]<br />
*[https://launchpad.net/mahara/+milestone/1.3.5 1.3.5]<br />
*[https://launchpad.net/mahara/+milestone/1.3.4 1.3.4]<br />
*[https://launchpad.net/mahara/+milestone/1.3.3 1.3.3]<br />
*[https://launchpad.net/mahara/+milestone/1.3.2 1.3.2]<br />
*[https://launchpad.net/mahara/+milestone/1.3.1 1.3.1]<br />
*[https://launchpad.net/mahara/+milestone/1.3.0 1.3.0]<br />
|'''10 September 2010''' <br><br />
<br />
*5 March 2012<br />
*3 Novemver 2011<br />
*10 May 2011<br />
*28 March 2011<br />
*24 March 2011<br />
*7 November 2010<br />
*8 October 2010<br />
*17 September 2010<br />
*10 September 2010<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=1226 1.2]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.2.9 1.2.9]<br />
*[https://launchpad.net/mahara/+milestone/1.2..8 1.2.8]<br />
*[https://launchpad.net/mahara/+milestone/1.2.7 1.2.7]<br />
*[https://launchpad.net/mahara/+milestone/1.2.6 1.2.6]<br />
*[https://launchpad.net/mahara/+milestone/1.2.5 1.2.5]<br />
*[https://launchpad.net/mahara/+milestone/1.2.4 1.2.4]<br />
*[https://launchpad.net/mahara/+milestone/1.2.3 1.2.3]<br />
*[https://launchpad.net/mahara/+milestone/1.2.2 1.2.2]<br />
*[https://launchpad.net/mahara/+milestone/1.2.1 1.2.1]<br />
*[https://launchpad.net/mahara/+milestone/1.2.0 1.2.0]<br />
|'''16 November 2009''' <br><br />
<br />
*10 May 2011<br />
*24 March 2011<br />
*1 September 2011<br />
*2 July 2010<br />
*6 April 2010<br />
*8 February 2010<br />
*8 December 2009<br />
*8 December 2009<br />
*16 November 2009<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://launchpad.net/mahara/+milestone/1.0.10 1.1]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.1.9 1.1.9]<br />
*[https://launchpad.net/mahara/+milestone/1.1.8 1.1.8]<br />
*[https://launchpad.net/mahara/+milestone/1.1.7 1.1.7]<br />
*[https://launchpad.net/mahara/+milestone/1.1.6 1.1.6]<br />
*[https://launchpad.net/mahara/+milestone/1.1.5 1.1.5]<br />
*[https://launchpad.net/mahara/+milestone/1.1.4 1.1.4]<br />
*[https://launchpad.net/mahara/+milestone/1.1.3 1.1.3]<br />
*[https://launchpad.net/mahara/+milestone/1.1.2 1.1.2]<br />
*[https://launchpad.net/mahara/+milestone/1.1.1 1.1.1]<br />
*[https://launchpad.net/mahara/+milestone/1.1.0 1.1.0]<br />
|'''25 February 2009''' <br><br />
<br />
*2 July 2010<br />
*6 April 2010<br />
*28 October 2009<br />
*21 June 2009<br />
*10 June 2009<br />
*21 April 2009<br />
*9 March 2009<br />
*26 February 2009<br />
*25 February 2009<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
! style="text-align:left; background:#fff" |'''[https://mahara.org/interaction/forum/topic.php?id=292 1.0]'''<br />
|<br><br />
<br />
*[https://launchpad.net/mahara/+milestone/1.0.15 1.0.15]<br />
*[https://launchpad.net/mahara/+milestone/1.0.14 1.0.14]<br />
*[https://launchpad.net/mahara/+milestone/1.0.13 1.0.13]<br />
*[https://launchpad.net/mahara/+milestone/1.0.12 1.0.12]<br />
*[https://launchpad.net/mahara/+milestone/1.0.11 1.0.11]<br />
*[https://launchpad.net/mahara/+milestone/1.0.10 1.0.10]<br />
*[[Releases/1.0.9|1.0.9]]<br />
*[[Releases/1.0.8|1.0.8]]<br />
*[[Releases/1.0.7|1.0.7]]<br />
|'''9 March 2009''' <br><br />
<br />
*2 July 2010<br />
*6 April 2010<br />
*28 October 2009<br />
*21 June 2009<br />
*21 April 2009<br />
*9 March 2009<br />
*Unavailable<br />
*Unavailable<br />
*Unavailable<br />
| style="background:#ba2025; color:#fff" |(no longer supported)<br />
|- style="vertical-align: top;"<br />
|}<br />
<br />
=Definition of support=<br />
<br />
Being "supported" means:<br />
<br />
*The release team is committed to making available updates to Mahara that are security related. See [[Security]] to find out how to report security bugs to us.<br />
*Occasionally, some other serious bug fixes will be included, but these are not guaranteed. If you find another type of bug, please let us know by reporting it on the mahara.org forums or directly on Launchpad: https://bugs.launchpad.net/mahara/+filebug<br />
<br />
=Specific backporting rules=<br />
<br />
When deciding which bugs to backport to supported branches, these are the general principles:<br />
<br />
*'''[[Security]] bugs'''<br />
**'''All''' Critical and High priority security bugs should be backported.<br />
**'''Nearly all''' Medium and Low priority security bugs should be backported. At the maintenance team's discretion, these might not be backported if:<br />
***Backporting would be technically difficult due to differences between Mahara versions.<br />
***The bug fix requires database upgrades or dataroot manipulations.<br />
***The bug fix otherwise introduces a high risk of [https://en.wikipedia.org/wiki/Software_regression regressions].<br />
<br />
*'''Non-security bugs'''<br />
**'''All''' Critical bugs should be backported.<br />
**'''Most''' High priority bugs should be backported. At the maintenance team's discretion, these might not be backported if:<br />
***Backporting would be technically difficult due to differences between Mahara versions.<br />
***The bug fix requires database upgrades or dataroot manipulations.<br />
***The bug fix otherwise introduces a high risk of [https://en.wikipedia.org/wiki/Software_regression regressions].<br />
**'''No''' Medium or Low priority non-security bugs are backported.<br />
**'''No''' Wishlist bugs are backported. Wishlist items are only added to the current development branch.<br />
<br />
If you want to backport certain bug fixes or new features to your own instance of Mahara, you can do so on your own as the code is available.<br />
<br />
See [[Developer_Area/Bug_Status#Importance|Bug Status:Importance]] for the guidelines on how we decide whether a bug is Critical, High, Medium, or Low.<br />
<br />
[[Category:Release Notes]]</div>
Gold
https://wiki.mahara.org/index.php?title=Template:Changelog_And_Release_Notes&diff=13294
Template:Changelog And Release Notes
2022-06-16T01:53:31Z
<p>Gold: /* 📓 Changelog and release notes */ Clarifying how the templates are used.</p>
<hr />
<div>==📓 Changelog and release notes==<br />
<br />
Use the templates below to structure your changelog and release notes. These are just to be preped. Filenames don't matter, the text is used later.<br />
====Changelog template====<br />
Note: You can copy the list of bugs from the milestone page (https://launchpad.net/mahara/+milestone/XX.YY.Z) and re-format the list.<br />
<br />
[[File:Changelog template.png|720x720px|link=]]<br />
====Release notes templates====</div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad&diff=13262
User:Gold/PHP 8 Scratchpad
2022-05-16T22:13:01Z
<p>Gold: /* Sub pages */</p>
<hr />
<div>Just a place to scratch out thoughts on how to measure progress on PHP8 compliance that will give us some confidence and a sense of progress.<br />
<br />
== How to start ==<br />
We need to be able to measure what is not currently working.<br />
<br />
=== Behat & PHPUnit testing ===<br />
We currently use this quite a bit. I would propose that we start with these as the initial measurement tool.<br />
<br />
This would mean that we first need to get the behat tests to test using the target version of PHP. Then run the tests and assume that all failures are related to PHP8 non-compliance.<br />
<br />
PHPUnit will need to be updated so it is compatible with PHP 8.1 -> I note PHPUnit supports PHP 8.0 starting from version 9.3.0.<br />
<br />
=== Other tools ===<br />
All tools have an option to specifically test for PHP 8.1.<br />
<br />
* [https://github.com/phan/phan Phan] - Static analysis that prefers to prove incorrectness rather than correctness and minimize false-positives.<br />
* [https://github.com/PHPCompatibility/PHPCompatibility PHPCompatibility] is an extension for [https://github.com/squizlabs/PHP_CodeSniffer PHP_CodeSniffer].<br />
* [https://github.com/wunderio/grumphp-php-compatibility grumphp-php-compatibility] is an extension of PHPCompatibility that allows it to word with [https://github.com/phpro/grumphp GrumPHP] (aka Bad Santa).<br />
* [https://github.com/rectorphp/rector Reactor] is looking like a robust automated upgrade script too.<br />
<br />
== How to work ==<br />
=== Development Environment ===<br />
I'm going to maintain a single codebase to work from for this. I'll set up Apache to host 2 sites from it. One running on PHP 7.4 and the other on PHP 8.1. This will give the opportunity to test things in the browser in a very quick and simple manner. They will have a shared config so they'll have the same DB and maharadata area.<br />
<br />
=== Committing code ===<br />
I want this to be a quick, rapid process. A large number of very small patchsets. Each resolving a single Behat test.<br />
<br />
The commit message on a patchset will need to be small and concise. Ideally, just a reference to the behat test that this patchset fixes.<br />
<br />
There will be edge cases. I see these being where a fix on one test cascades out to multiple other tests and/or areas of Mahara. In these cases the commit message will need to be more comprehensive.<br />
<br />
== Measurement ==<br />
Once we have an idea of the amount of work we will have an idea on what is needed.<br />
<br />
=== Reporting ===<br />
If the number is large(ish) I'd like to add a dashboard or chatbot that reports on the progress.<br />
<br />
==== Code analysis ====<br />
A number of the Code Analysis tools have an option to output their findings in a machine readable format. These could be used in the reporting also.<br />
<br />
==== Gerrit ====<br />
Providing tags on patchsets are consistent we should be able to have a script search and scrape numbers from the Gerrit API. It is looking like this will be a simple thing. e.g. curl https://reviews.mahara.org/changes/?q=status:merged+topic:PHPStan<br />
<br />
Having looked at search options it looks like 'intopic' is preferred over 'topic' as we have multiple tags in this field. I also see that 'PHP8' has been used a few times already. I would suggest 'PHP8Compat' as the tag to use to make filtering easier to spot for this task.<br />
<br />
=== Sub pages ===<br />
* [[User:Gold/PHP_8_Scratchpad/Add_PHP8|Add PHP 8.1 and PHP 7.4 to Apache2]]<br />
* [[User:Gold/PHP_8_Scratchpad/phan_sample_output|Sample output: phan]]</div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad&diff=13261
User:Gold/PHP 8 Scratchpad
2022-05-16T22:12:37Z
<p>Gold: /* Sub pages */</p>
<hr />
<div>Just a place to scratch out thoughts on how to measure progress on PHP8 compliance that will give us some confidence and a sense of progress.<br />
<br />
== How to start ==<br />
We need to be able to measure what is not currently working.<br />
<br />
=== Behat & PHPUnit testing ===<br />
We currently use this quite a bit. I would propose that we start with these as the initial measurement tool.<br />
<br />
This would mean that we first need to get the behat tests to test using the target version of PHP. Then run the tests and assume that all failures are related to PHP8 non-compliance.<br />
<br />
PHPUnit will need to be updated so it is compatible with PHP 8.1 -> I note PHPUnit supports PHP 8.0 starting from version 9.3.0.<br />
<br />
=== Other tools ===<br />
All tools have an option to specifically test for PHP 8.1.<br />
<br />
* [https://github.com/phan/phan Phan] - Static analysis that prefers to prove incorrectness rather than correctness and minimize false-positives.<br />
* [https://github.com/PHPCompatibility/PHPCompatibility PHPCompatibility] is an extension for [https://github.com/squizlabs/PHP_CodeSniffer PHP_CodeSniffer].<br />
* [https://github.com/wunderio/grumphp-php-compatibility grumphp-php-compatibility] is an extension of PHPCompatibility that allows it to word with [https://github.com/phpro/grumphp GrumPHP] (aka Bad Santa).<br />
* [https://github.com/rectorphp/rector Reactor] is looking like a robust automated upgrade script too.<br />
<br />
== How to work ==<br />
=== Development Environment ===<br />
I'm going to maintain a single codebase to work from for this. I'll set up Apache to host 2 sites from it. One running on PHP 7.4 and the other on PHP 8.1. This will give the opportunity to test things in the browser in a very quick and simple manner. They will have a shared config so they'll have the same DB and maharadata area.<br />
<br />
=== Committing code ===<br />
I want this to be a quick, rapid process. A large number of very small patchsets. Each resolving a single Behat test.<br />
<br />
The commit message on a patchset will need to be small and concise. Ideally, just a reference to the behat test that this patchset fixes.<br />
<br />
There will be edge cases. I see these being where a fix on one test cascades out to multiple other tests and/or areas of Mahara. In these cases the commit message will need to be more comprehensive.<br />
<br />
== Measurement ==<br />
Once we have an idea of the amount of work we will have an idea on what is needed.<br />
<br />
=== Reporting ===<br />
If the number is large(ish) I'd like to add a dashboard or chatbot that reports on the progress.<br />
<br />
==== Code analysis ====<br />
A number of the Code Analysis tools have an option to output their findings in a machine readable format. These could be used in the reporting also.<br />
<br />
==== Gerrit ====<br />
Providing tags on patchsets are consistent we should be able to have a script search and scrape numbers from the Gerrit API. It is looking like this will be a simple thing. e.g. curl https://reviews.mahara.org/changes/?q=status:merged+topic:PHPStan<br />
<br />
Having looked at search options it looks like 'intopic' is preferred over 'topic' as we have multiple tags in this field. I also see that 'PHP8' has been used a few times already. I would suggest 'PHP8Compat' as the tag to use to make filtering easier to spot for this task.<br />
<br />
=== Sub pages ===<br />
[[User:Gold/PHP_8_Scratchpad/Add_PHP8|Add PHP 8.1 and PHP 7.4 to Apache2]]<br />
[[User:Gold/PHP_8_Scratchpad/phan_sample_output|Sample output: phan]]</div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad/phan_sample_output&diff=13260
User:Gold/PHP 8 Scratchpad/phan sample output
2022-05-16T22:11:42Z
<p>Gold: </p>
<hr />
<div>phan is looking comprehensive. Dropping this sample output of a minimum severity check. The output is... long. It has been trimmed.<br />
<br />
The output is looking useful for programatically extracting metrics. With a little work we may be able to identify area of the codebase that need attention based on directory.<br />
<br />
This is from running <syntaxhighlight land="bash" inline>vendor/bin/phan --allow-polyfill-parser --analyze-twice --dead-code-detection -m json</syntaxhighlight>.<br />
<br />
<syntaxhighlight lang="json"><br />
[<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::is_username_valid\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/index.php",<br />
"lines": {<br />
"begin": 204,<br />
"end": 204<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/index.php",<br />
"lines": {<br />
"begin": 232,<br />
"end": 232<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/migrateinstitution.php",<br />
"lines": {<br />
"begin": 122,<br />
"end": 122<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mlogout\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/migrateinstitution.php",<br />
"lines": {<br />
"begin": 123,<br />
"end": 123<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/cli/install.php",<br />
"lines": {<br />
"begin": 91,<br />
"end": 91<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$msg->error\u001b[0m with type \u001b[37mfalse|string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/extensions/pluginconfig.php",<br />
"lines": {<br />
"begin": 135,<br />
"end": 135<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$msg->error\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/extensions/pluginconfig.php",<br />
"lines": {<br />
"begin": 135,<br />
"end": 135<br />
}<br />
}<br />
}<br />
]<br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad/phan_sample_output&diff=13259
User:Gold/PHP 8 Scratchpad/phan sample output
2022-05-16T22:05:34Z
<p>Gold: Replaced content with "phan is looking comprehensive. Dropping this sample output of a minimum severity check. The output is... long. It has been trimmed. This is from running <syntaxhighlight..."</p>
<hr />
<div>phan is looking comprehensive. Dropping this sample output of a minimum severity check. The output is... long. It has been trimmed.<br />
<br />
This is from running <syntaxhighlight land="bash" inline>vendor/bin/phan --allow-polyfill-parser --analyze-twice --dead-code-detection -m json</syntaxhighlight><br />
<br />
<syntaxhighlight lang="json"><br />
[<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::is_username_valid\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/index.php",<br />
"lines": {<br />
"begin": 204,<br />
"end": 204<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/index.php",<br />
"lines": {<br />
"begin": 232,<br />
"end": 232<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/migrateinstitution.php",<br />
"lines": {<br />
"begin": 122,<br />
"end": 122<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mlogout\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/migrateinstitution.php",<br />
"lines": {<br />
"begin": 123,<br />
"end": 123<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/cli/install.php",<br />
"lines": {<br />
"begin": 91,<br />
"end": 91<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$msg->error\u001b[0m with type \u001b[37mfalse|string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/extensions/pluginconfig.php",<br />
"lines": {<br />
"begin": 135,<br />
"end": 135<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$msg->error\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/extensions/pluginconfig.php",<br />
"lines": {<br />
"begin": 135,<br />
"end": 135<br />
}<br />
}<br />
}<br />
]<br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad/phan_sample_output&diff=13258
User:Gold/PHP 8 Scratchpad/phan sample output
2022-05-16T22:04:12Z
<p>Gold: Created page with "phan is looking comprehensive. Dropping this sample output of a minimum severity check. The output is... long. This is from runnign <syntaxhighlight land="bash" inline>vendo..."</p>
<hr />
<div>phan is looking comprehensive. Dropping this sample output of a minimum severity check. The output is... long.<br />
<br />
This is from runnign <syntaxhighlight land="bash" inline>vendor/bin/phan --allow-polyfill-parser --analyze-twice --dead-code-detection -m json</syntaxhighlight><br />
<br />
<syntaxhighlight lang="json"><br />
[<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::is_username_valid\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/index.php",<br />
"lines": {<br />
"begin": 204,<br />
"end": 204<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/index.php",<br />
"lines": {<br />
"begin": 232,<br />
"end": 232<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/migrateinstitution.php",<br />
"lines": {<br />
"begin": 122,<br />
"end": 122<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mlogout\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/account/migrateinstitution.php",<br />
"lines": {<br />
"begin": 123,<br />
"end": 123<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/cli/install.php",<br />
"lines": {<br />
"begin": 91,<br />
"end": 91<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$msg->error\u001b[0m with type \u001b[37mfalse|string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/extensions/pluginconfig.php",<br />
"lines": {<br />
"begin": 135,<br />
"end": 135<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$msg->error\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/extensions/pluginconfig.php",<br />
"lines": {<br />
"begin": 135,<br />
"end": 135<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$msg->error\u001b[0m with type \u001b[37mfalse|string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/extensions/pluginconfig.php",<br />
"lines": {<br />
"begin": 136,<br />
"end": 136<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$msg->error\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/extensions/pluginconfig.php",<br />
"lines": {<br />
"begin": 136,<br />
"end": 136<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/fonts.json.php",<br />
"lines": {<br />
"begin": 35,<br />
"end": 35<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/fonts.json.php",<br />
"lines": {<br />
"begin": 48,<br />
"end": 48<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/fonts.json.php",<br />
"lines": {<br />
"begin": 53,<br />
"end": 53<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/fonts.json.php",<br />
"lines": {<br />
"begin": 58,<br />
"end": 58<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/fonts.json.php",<br />
"lines": {<br />
"begin": 69,<br />
"end": 69<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/fonts.json.php",<br />
"lines": {<br />
"begin": 70,<br />
"end": 70<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/fonts.php",<br />
"lines": {<br />
"begin": 108,<br />
"end": 108<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/fonts.php",<br />
"lines": {<br />
"begin": 131,<br />
"end": 131<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/fonts.php",<br />
"lines": {<br />
"begin": 136,<br />
"end": 136<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/fonts.php",<br />
"lines": {<br />
"begin": 181,<br />
"end": 181<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_site_content_pages()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/site/pages.php",<br />
"lines": {<br />
"begin": 25,<br />
"end": 25<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$upgrade\u001b[0m with type \u001b[37mtrue\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/upgrade.php",<br />
"lines": {<br />
"begin": 125,<br />
"end": 125<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$upgrades['core']\u001b[0m with type \u001b[37mtrue\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/upgrade.php",<br />
"lines": {<br />
"begin": 209,<br />
"end": 209<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/users/edit.php",<br />
"lines": {<br />
"begin": 639,<br />
"end": 639<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_username\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/users/edit.php",<br />
"lines": {<br />
"begin": 671,<br />
"end": 671<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/users/exportqueue.php",<br />
"lines": {<br />
"begin": 88,<br />
"end": 88<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_site_content_pages()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/admin/users/institutionpages.php",<br />
"lines": {<br />
"begin": 27,<br />
"end": 27<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_xmlrpc_services()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/api/xmlrpc/dispatcher.php",<br />
"lines": {<br />
"begin": 169,<br />
"end": 169<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10088,<br />
"check_name": "PhanTypeInvalidCloneNotObject",<br />
"description": "TypeError PhanTypeInvalidCloneNotObject Expected an object to be passed to clone() but got \u001b[37marray<string,mixed>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/api/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 578,<br />
"end": 578<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/api/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 652,<br />
"end": 652<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/api/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 653,<br />
"end": 653<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/api/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 664,<br />
"end": 664<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 7004,<br />
"check_name": "PhanParamTooFewInternal",<br />
"description": "ParamError PhanParamTooFewInternal Call with \u001b[95m4\u001b[0m arg(s) to \u001b[93m\\openssl_seal(string $data, string &$sealed_data, array &$encrypted_keys, array $public_key, string $cipher_algo, string &$iv = null)\u001b[0m which requires \u001b[95m5\u001b[0m arg(s)",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/api/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 1256,<br />
"end": 1256<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 7004,<br />
"check_name": "PhanParamTooFewInternal",<br />
"description": "ParamError PhanParamTooFewInternal Call with \u001b[95m4\u001b[0m arg(s) to \u001b[93m\\openssl_open(string $data, string &$output, string $encrypted_key, $private_key, string $cipher_algo, string $iv = null)\u001b[0m which requires \u001b[95m5\u001b[0m arg(s)",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/api/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 1391,<br />
"end": 1391<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 7004,<br />
"check_name": "PhanParamTooFewInternal",<br />
"description": "ParamError PhanParamTooFewInternal Call with \u001b[95m4\u001b[0m arg(s) to \u001b[93m\\openssl_open(string $data, string &$output, string $encrypted_key, $private_key, string $cipher_algo, string $iv = null)\u001b[0m which requires \u001b[95m5\u001b[0m arg(s)",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/api/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 1401,<br />
"end": 1401<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget_url\u001b[0m on non-class type \u001b[37m?''|?'0'|?0|?0.0|?array{}|?false|?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/annotation/lib.php",<br />
"lines": {<br />
"begin": 1367,<br />
"end": 1367<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?false|?object=\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/annotation/lib.php",<br />
"lines": {<br />
"begin": 2041,<br />
"end": 2041<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1001,<br />
"check_name": "PhanAccessPropertyPrivate",<br />
"description": "AccessError PhanAccessPropertyPrivate Cannot access private property \u001b[36m\\View->title\u001b[0m defined at \u001b[96mhtdocs/lib/view.php\u001b[0m:\u001b[37m39\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/artefact.php",<br />
"lines": {<br />
"begin": 52,<br />
"end": 52<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$blogpostentry\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/blog/import/leap/lib.php",<br />
"lines": {<br />
"begin": 237,<br />
"end": 237<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$blogpostentry\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/blog/import/leap/lib.php",<br />
"lines": {<br />
"begin": 268,<br />
"end": 268<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m3\u001b[0m of \u001b[93m\\ArtefactTypeFile::save_file($pathname, $data, ?\\User &$user = null, $outsidedataroot = false)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/blog/import/leap/lib.php",<br />
"lines": {<br />
"begin": 425,<br />
"end": 425<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/comment/lib.php",<br />
"lines": {<br />
"begin": 402,<br />
"end": 402<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/comment/lib.php",<br />
"lines": {<br />
"begin": 412,<br />
"end": 412<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/comment/lib.php",<br />
"lines": {<br />
"begin": 420,<br />
"end": 420<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$artefact\u001b[0m with type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/comment/lib.php",<br />
"lines": {<br />
"begin": 1075,<br />
"end": 1075<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/comment/lib.php",<br />
"lines": {<br />
"begin": 1793,<br />
"end": 1793<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/comment/lib.php",<br />
"lines": {<br />
"begin": 1794,<br />
"end": 1794<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/comment/lib.php",<br />
"lines": {<br />
"begin": 1795,<br />
"end": 1795<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/comment/lib.php",<br />
"lines": {<br />
"begin": 1796,<br />
"end": 1796<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?false|?object=\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/comment/lib.php",<br />
"lines": {<br />
"begin": 2114,<br />
"end": 2114<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?false|?object=\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/comment/lib.php",<br />
"lines": {<br />
"begin": 2175,<br />
"end": 2175<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?non-empty-mixed\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/blocktype/internalmedia/lib.php",<br />
"lines": {<br />
"begin": 82,<br />
"end": 82<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ArtefactType::get_path\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/export/leap/lib.php",<br />
"lines": {<br />
"begin": 50,<br />
"end": 50<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$child\u001b[0m with type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/import/leap/lib.php",<br />
"lines": {<br />
"begin": 274,<br />
"end": 274<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mxpath\u001b[0m on non-class type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/import/leap/lib.php",<br />
"lines": {<br />
"begin": 360,<br />
"end": 360<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginArtefactFile::get\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/import/leap/lib.php",<br />
"lines": {<br />
"begin": 425,<br />
"end": 425<br />
}<br />
},<br />
"suggestion": "Did you mean expr::get_accountprefs_elements() or expr::get_activity_types() or expr::get_artefact_type_content_types() or expr::get_artefact_types() or expr::get_attachment_types() or expr::get_block_types() or expr::get_config_info() or expr::get_config_options() or expr::get_cron() or expr::get_event_subscriptions() or expr::get_institutionprefs_elements() or expr::get_mimetypes_from_description() or expr::get_plugin_display_name() or expr::get_plugin_name() or expr::get_plugintype_name() or expr::get_theme_path() or expr::get_webservice_connections()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\type\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 382,<br />
"end": 382<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\type\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 383,<br />
"end": 383<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\type\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 384,<br />
"end": 384<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\type\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 385,<br />
"end": 385<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\type\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 387,<br />
"end": 387<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\type\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 388,<br />
"end": 388<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\type\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 389,<br />
"end": 389<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\type\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 391,<br />
"end": 391<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?mixed\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 2692,<br />
"end": 2692<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 2869,<br />
"end": 2869<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mis_logged_in\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 2869,<br />
"end": 2869<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m2\u001b[0m (\u001b[36m$use_include_path\u001b[0m) is \u001b[95mnull\u001b[0m of type \u001b[37mnull\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\file_get_contents()\u001b[0m takes \u001b[37mbool\u001b[0m\u001b[92m\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/file/lib.php",<br />
"lines": {<br />
"begin": 3245,<br />
"end": 3245<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?false|?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/export/html/lib.php",<br />
"lines": {<br />
"begin": 81,<br />
"end": 81<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/export/html/lib.php",<br />
"lines": {<br />
"begin": 81,<br />
"end": 81<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?false|?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/export/html/lib.php",<br />
"lines": {<br />
"begin": 83,<br />
"end": 83<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/export/html/lib.php",<br />
"lines": {<br />
"begin": 83,<br />
"end": 83<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$importer->get_entry_by_id($persondataid)\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/import/leap/lib.php",<br />
"lines": {<br />
"begin": 134,<br />
"end": 134<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mxpath\u001b[0m on non-class type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/import/leap/lib.php",<br />
"lines": {<br />
"begin": 194,<br />
"end": 194<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mxpath\u001b[0m on non-class type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/import/leap/lib.php",<br />
"lines": {<br />
"begin": 208,<br />
"end": 208<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mxpath\u001b[0m on non-class type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/import/leap/lib.php",<br />
"lines": {<br />
"begin": 464,<br />
"end": 464<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mxpath\u001b[0m on non-class type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/import/leap/lib.php",<br />
"lines": {<br />
"begin": 484,<br />
"end": 484<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$person\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/import/leap/lib.php",<br />
"lines": {<br />
"begin": 493,<br />
"end": 493<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget_artefact_types\u001b[0m from undeclared class \u001b[32m\\PluginArtefactInternalLocal\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/lib.php",<br />
"lines": {<br />
"begin": 45,<br />
"end": 45<br />
}<br />
},<br />
"suggestion": "Did you mean class \\PluginArtefactInternal"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget_profile_artefact_types\u001b[0m from undeclared class \u001b[32m\\PluginArtefactInternalLocal\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/lib.php",<br />
"lines": {<br />
"begin": 76,<br />
"end": 76<br />
}<br />
},<br />
"suggestion": "Did you mean class \\PluginArtefactInternal"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget_contactinfo_artefact_types\u001b[0m from undeclared class \u001b[32m\\PluginArtefactInternalLocal\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/lib.php",<br />
"lines": {<br />
"begin": 100,<br />
"end": 100<br />
}<br />
},<br />
"suggestion": "Did you mean class \\PluginArtefactInternal"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget_all_fields\u001b[0m from undeclared class \u001b[32m\\ArtefactTypeProfileLocal\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/internal/lib.php",<br />
"lines": {<br />
"begin": 535,<br />
"end": 535<br />
}<br />
},<br />
"suggestion": "Did you mean class \\ArtefactTypeProfileIcon"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 9003,<br />
"check_name": "PhanAbstractStaticMethodCallInStatic",<br />
"description": "StaticCallError PhanAbstractStaticMethodCallInStatic Potentially calling an abstract static method \u001b[93m\\PluginArtefact::get_plugin_name()\u001b[0m with static:: in \u001b[95mstatic::get_plugin_name()\u001b[0m (the calling static method's class scope may be an abstract class)",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/lib.php",<br />
"lines": {<br />
"begin": 136,<br />
"end": 136<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 9003,<br />
"check_name": "PhanAbstractStaticMethodCallInStatic",<br />
"description": "StaticCallError PhanAbstractStaticMethodCallInStatic Potentially calling an abstract static method \u001b[93m\\PluginArtefact::get_plugin_name()\u001b[0m with static:: in \u001b[95mstatic::get_plugin_name()\u001b[0m (the calling static method's class scope may be an abstract class)",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/lib.php",<br />
"lines": {<br />
"begin": 141,<br />
"end": 141<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_progressbar_sortorder()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/lib.php",<br />
"lines": {<br />
"begin": 2196,<br />
"end": 2196<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mset\u001b[0m on non-class type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/editgoalsandskills.php",<br />
"lines": {<br />
"begin": 158,<br />
"end": 158<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mset\u001b[0m on non-class type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/editgoalsandskills.php",<br />
"lines": {<br />
"begin": 159,<br />
"end": 159<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mcommit\u001b[0m on non-class type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/editgoalsandskills.php",<br />
"lines": {<br />
"begin": 160,<br />
"end": 160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ArtefactType::get_other_table_name\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 122,<br />
"end": 122<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ArtefactType::get_other_table_name\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 128,<br />
"end": 128<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->originalrecord\u001b[0m with type \u001b[37marray<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 240,<br />
"end": 240<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->originalrecord\u001b[0m with type \u001b[37marray<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 260,<br />
"end": 260<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->originalrecord\u001b[0m with type \u001b[37marray<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 323,<br />
"end": 323<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->originalrecord\u001b[0m with type \u001b[37marray<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 324,<br />
"end": 324<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->originalrecord\u001b[0m with type \u001b[37marray<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 327,<br />
"end": 327<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->originalrecord\u001b[0m with type \u001b[37marray<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 328,<br />
"end": 328<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->originalrecord\u001b[0m with type \u001b[37marray<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 329,<br />
"end": 329<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->originalrecord\u001b[0m with type \u001b[37marray<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 363,<br />
"end": 363<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->originalrecord\u001b[0m with type \u001b[37marray<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/export/leap/lib.php",<br />
"lines": {<br />
"begin": 364,<br />
"end": 364<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$organization\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 388,<br />
"end": 388<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$role\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 412,<br />
"end": 412<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$qualification\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 444,<br />
"end": 444<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$organization\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 451,<br />
"end": 451<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::get_entry_by_id\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 513,<br />
"end": 513<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::get_namespaces\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 514,<br />
"end": 514<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::get_leap2a_namespace\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 515,<br />
"end": 515<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::trace\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 523,<br />
"end": 523<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::trace\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 539,<br />
"end": 539<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::trace\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 553,<br />
"end": 553<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::trace\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 554,<br />
"end": 554<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry_request\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 605,<br />
"end": 605<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry_request\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 606,<br />
"end": 606<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry_request\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 608,<br />
"end": 608<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry_request\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 614,<br />
"end": 614<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry_request\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 630,<br />
"end": 630<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry_request\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 648,<br />
"end": 648<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry_request\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 669,<br />
"end": 669<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry_request\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 690,<br />
"end": 690<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::add_artefactmapping\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 690,<br />
"end": 690<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::add_artefactmapping\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 725,<br />
"end": 725<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$compositeentry\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 952,<br />
"end": 952<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$compositeentry\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 955,<br />
"end": 955<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mxpath\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/import/leap/lib.php",<br />
"lines": {<br />
"begin": 1024,<br />
"end": 1024<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mattach\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/lib.php",<br />
"lines": {<br />
"begin": 2469,<br />
"end": 2469<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mdetach\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/artefact/resume/lib.php",<br />
"lines": {<br />
"begin": 2476,<br />
"end": 2476<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\OP_HALFOPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/imap/lib.php",<br />
"lines": {<br />
"begin": 80,<br />
"end": 80<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 120,<br />
"end": 120<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 154,<br />
"end": 154<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 175,<br />
"end": 175<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 176,<br />
"end": 176<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 180,<br />
"end": 180<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 183,<br />
"end": 183<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->config\u001b[0m with type \u001b[37marray|array<string,array>|array<string,bool>|array<string,false>|array<string,int>|array<string,list<string>>|array<string,mixed>|array<string,non-empty-array<mixed,mixed>>|array<string,non-null-mixed>|array<string,string>|array<string,true>|mixed[]\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 280,<br />
"end": 280<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->config\u001b[0m with type \u001b[37marray|array<string,array>|array<string,false>|array<string,int>|array<string,list<string>>|array<string,mixed>|array<string,non-empty-array<mixed,mixed>>|array<string,non-null-mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 280,<br />
"end": 280<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m1\u001b[0m (\u001b[36m$result\u001b[0m) is \u001b[95m$ldap_result\u001b[0m of type \u001b[37mfalse\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\ldap_free_result()\u001b[0m takes \u001b[37mresource\u001b[0m\u001b[92m (real type \\LDAP\\Result)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 964,<br />
"end": 964<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::sync_users\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 1687,<br />
"end": 1687<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::sync_groups\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/ldap/lib.php",<br />
"lines": {<br />
"begin": 1688,<br />
"end": 1688<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_logout()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 514,<br />
"end": 514<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Memcached\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 810,<br />
"end": 810<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93maddServer\u001b[0m from undeclared class \u001b[32m\\Memcached\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 814,<br />
"end": 814<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetStats\u001b[0m from undeclared class \u001b[32m\\Memcached\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 817,<br />
"end": 817<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetVersion\u001b[0m from undeclared class \u001b[32m\\Memcached\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 819,<br />
"end": 819<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::pre_loginpage_hook\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 986,<br />
"end": 986<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::is_username_valid\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 1602,<br />
"end": 1602<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 1636,<br />
"end": 1636<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\User::reanimate\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 2262,<br />
"end": 2262<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$userdata\u001b[0m with type \u001b[37mnon-empty-array<mixed,mixed>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 2277,<br />
"end": 2277<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 2852,<br />
"end": 2852<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_register_form()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 2919,<br />
"end": 2919<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 7003,<br />
"check_name": "PhanParamTooFew",<br />
"description": "ParamError PhanParamTooFew Call with \u001b[95m1\u001b[0m arg(s) to \u001b[93m\\Pieform::i18n(string $plugin, string $pluginname, string $key, array $element = null)\u001b[0m which requires \u001b[95m3\u001b[0m arg(s) defined at \u001b[96mhtdocs/lib/pieforms/pieform.php\u001b[0m:\u001b[37m1391\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 3298,<br />
"end": 3298<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 7003,<br />
"check_name": "PhanParamTooFew",<br />
"description": "ParamError PhanParamTooFew Call with \u001b[95m1\u001b[0m arg(s) to \u001b[93m\\Pieform::i18n(string $plugin, string $pluginname, string $key, array $element = null)\u001b[0m which requires \u001b[95m3\u001b[0m arg(s) defined at \u001b[96mhtdocs/lib/pieforms/pieform.php\u001b[0m:\u001b[37m1391\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 3302,<br />
"end": 3302<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_register_submit()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/lib.php",<br />
"lines": {<br />
"begin": 3383,<br />
"end": 3383<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11007,<br />
"check_name": "PhanUndeclaredClassConstant",<br />
"description": "UndefError PhanUndeclaredClassConstant Reference to constant \u001b[91mDEBUG\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/config/config.php",<br />
"lines": {<br />
"begin": 163,<br />
"end": 163<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11007,<br />
"check_name": "PhanUndeclaredClassConstant",<br />
"description": "UndefError PhanUndeclaredClassConstant Reference to constant \u001b[91mERR\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/config/config.php",<br />
"lines": {<br />
"begin": 163,<br />
"end": 163<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdebug\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 35,<br />
"end": 35<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\Memcache\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 43,<br />
"end": 43<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetstats\u001b[0m from undeclared class \u001b[32m\\Memcache\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 47,<br />
"end": 47<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwarning\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 62,<br />
"end": 62<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwarning\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 68,<br />
"end": 68<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwarning\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 74,<br />
"end": 74<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\Error\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 102,<br />
"end": 102<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Error"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\Exception\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 103,<br />
"end": 103<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Exception or class \\Dwoo\\Exception or class \\Dwoo\\Compilation\\Exception or class \\Dwoo\\Security\\Exception or class \\FFI\\Exception"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdebug\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 106,<br />
"end": 106<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdebug\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 111,<br />
"end": 111<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdebug\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 125,<br />
"end": 125<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mset\u001b[0m from undeclared class \u001b[32m\\Memcache\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 137,<br />
"end": 137<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdebug\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 148,<br />
"end": 148<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdelete\u001b[0m from undeclared class \u001b[32m\\Memcache\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 151,<br />
"end": 151<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93maddServer\u001b[0m from undeclared class \u001b[32m\\Memcache\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 249,<br />
"end": 249<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Memcached\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 267,<br />
"end": 267<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInstance\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 307,<br />
"end": 307<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInstance\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 350,<br />
"end": 350<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11008,<br />
"check_name": "PhanUndeclaredClassInstanceof",<br />
"description": "UndefError PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 351,<br />
"end": 351<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInteger\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 353,<br />
"end": 353<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetExtendedStats\u001b[0m from undeclared class \u001b[32m\\Memcache\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 383,<br />
"end": 383<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mtranspose\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Utils\\Arrays\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 387,<br />
"end": 387<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetExtendedStats\u001b[0m from undeclared class \u001b[32m\\Memcache\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Memcached.php",<br />
"lines": {<br />
"begin": 402,<br />
"end": 402<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11003,<br />
"check_name": "PhanUndeclaredExtendedClass",<br />
"description": "UndefError PhanUndeclaredExtendedClass Class extends undeclared class \u001b[32m\\SimpleSAML\\Store\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Store.php",<br />
"lines": {<br />
"begin": 22,<br />
"end": 22<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInstance\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/extlib/modules/memcached/lib/Store/Store.php",<br />
"lines": {<br />
"begin": 36,<br />
"end": 36<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInstance\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 48,<br />
"end": 48<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 58,<br />
"end": 58<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mlogout\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 59,<br />
"end": 59<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetSession\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 63,<br />
"end": 63<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 93,<br />
"end": 93<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misAuthenticated\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 95,<br />
"end": 95<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93minit\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 121,<br />
"end": 121<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 122,<br />
"end": 122<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mlogin\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 124,<br />
"end": 124<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mrequireAuth\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 127,<br />
"end": 127<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttributes\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Simple\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/index.php",<br />
"lines": {<br />
"begin": 135,<br />
"end": 135<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInstance\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 1142,<br />
"end": 1142<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93minit\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 1411,<br />
"end": 1411<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11003,<br />
"check_name": "PhanUndeclaredExtendedClass",<br />
"description": "UndefError PhanUndeclaredExtendedClass Class extends undeclared class \u001b[32m\\SimpleSAML\\XHTML\\IdPDisco\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2185,<br />
"end": 2185<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInstance\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2202,<br />
"end": 2202<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetMetadataHandler\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Metadata\\MetaDataStorageHandler\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2203,<br />
"end": 2203<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginAuthSaml_IdPDisco::getIdPList\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2210,<br />
"end": 2210<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginAuthSaml_IdPDisco::filterList\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2211,<br />
"end": 2211<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginAuthSaml_IdPDisco::getRecommendedIdP\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2212,<br />
"end": 2212<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetCaptureLog\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2306,<br />
"end": 2306<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInstance\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2307,<br />
"end": 2307<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetOptionalConfig\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2308,<br />
"end": 2308<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93minfo\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2317,<br />
"end": 2317<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetSource\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Metadata\\MetaDataStorageSource\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2331,<br />
"end": 2331<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\\metarefresh\\MetaLoader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2336,<br />
"end": 2336<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetTypes\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\\metarefresh\\MetaLoader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2357,<br />
"end": 2357<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetTypes\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\\metarefresh\\MetaLoader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2360,<br />
"end": 2360<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdebug\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2384,<br />
"end": 2384<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mloadSource\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\\metarefresh\\MetaLoader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2385,<br />
"end": 2385<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwriteState\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\\metarefresh\\MetaLoader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2389,<br />
"end": 2389<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwriteMetadataFiles\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\\metarefresh\\MetaLoader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2393,<br />
"end": 2393<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwriteMetadataSerialize\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\\metarefresh\\MetaLoader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2396,<br />
"end": 2396<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mloadFromArray\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2401,<br />
"end": 2401<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwriteARPfile\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\\metarefresh\\MetaLoader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2402,<br />
"end": 2402<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetCapturedLog\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2405,<br />
"end": 2405<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93minfo\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/lib.php",<br />
"lines": {<br />
"begin": 2418,<br />
"end": 2418<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInstance\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 47,<br />
"end": 47<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mrequireAdmin\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Utils\\Auth\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 49,<br />
"end": 49<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Auth"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetById\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Auth\\Source\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 52,<br />
"end": 52<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\AuthSource\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 54,<br />
"end": 54<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11008,<br />
"check_name": "PhanUndeclaredClassInstanceof",<br />
"description": "UndefError PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \u001b[32m\\SimpleSAML\\Module\\saml\\Auth\\Source\\SP\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 57,<br />
"end": 57<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\AuthSource\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 58,<br />
"end": 58<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetEntityId\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\\saml\\Auth\\Source\\SP\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 62,<br />
"end": 62<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetMetadata\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\\saml\\Auth\\Source\\SP\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 63,<br />
"end": 63<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInstance\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Store\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 64,<br />
"end": 64<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11007,<br />
"check_name": "PhanUndeclaredClassConstant",<br />
"description": "UndefError PhanUndeclaredClassConstant Reference to constant \u001b[91mBINDING_HTTP_REDIRECT\u001b[0m from undeclared class \u001b[32m\\SAML2\\Constants\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 69,<br />
"end": 69<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11007,<br />
"check_name": "PhanUndeclaredClassConstant",<br />
"description": "UndefError PhanUndeclaredClassConstant Reference to constant \u001b[91mBINDING_SOAP\u001b[0m from undeclared class \u001b[32m\\SAML2\\Constants\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 70,<br />
"end": 70<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11007,<br />
"check_name": "PhanUndeclaredClassConstant",<br />
"description": "UndefError PhanUndeclaredClassConstant Reference to constant \u001b[91mBINDING_SOAP\u001b[0m from undeclared class \u001b[32m\\SAML2\\Constants\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 77,<br />
"end": 77<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11008,<br />
"check_name": "PhanUndeclaredClassInstanceof",<br />
"description": "UndefError PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \u001b[32m\\SimpleSAML\\Store\\SQL\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 77,<br />
"end": 77<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11007,<br />
"check_name": "PhanUndeclaredClassConstant",<br />
"description": "UndefError PhanUndeclaredClassConstant Reference to constant \u001b[91mBINDING_HTTP_POST\u001b[0m from undeclared class \u001b[32m\\SAML2\\Constants\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 107,<br />
"end": 107<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11007,<br />
"check_name": "PhanUndeclaredClassConstant",<br />
"description": "UndefError PhanUndeclaredClassConstant Reference to constant \u001b[91mBINDING_HTTP_REDIRECT\u001b[0m from undeclared class \u001b[32m\\SAML2\\Constants\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 125,<br />
"end": 125<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mloadPublicKey\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Utils\\Crypto\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 136,<br />
"end": 136<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mloadPublicKey\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Utils\\Crypto\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 154,<br />
"end": 154<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\Exception\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 210,<br />
"end": 210<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Exception or class \\Dwoo\\Exception or class \\Dwoo\\Compilation\\Exception or class \\Dwoo\\Security\\Exception or class \\FFI\\Exception"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetContact\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Utils\\Config\\Metadata\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 217,<br />
"end": 217<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetContact\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Utils\\Config\\Metadata\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 227,<br />
"end": 227<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11007,<br />
"check_name": "PhanUndeclaredClassConstant",<br />
"description": "UndefError PhanUndeclaredClassConstant Reference to constant \u001b[91mNS_SAMLP\u001b[0m from undeclared class \u001b[32m\\SAML2\\Constants\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 264,<br />
"end": 264<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Metadata\\SAMLBuilder\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 269,<br />
"end": 269<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93maddMetadataSP20\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Metadata\\SAMLBuilder\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 270,<br />
"end": 270<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93maddOrganizationInfo\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Metadata\\SAMLBuilder\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 271,<br />
"end": 271<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetEntityDescriptorText\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Metadata\\SAMLBuilder\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 273,<br />
"end": 273<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msign\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Metadata\\Signer\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 285,<br />
"end": 285<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\XHTML\\Template\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 289,<br />
"end": 289<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mnoop\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\XHTML\\Template\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 294,<br />
"end": 294<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mshow\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\XHTML\\Template\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/metadata.php",<br />
"lines": {<br />
"begin": 299,<br />
"end": 299<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\NotFound\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/module.php",<br />
"lines": {<br />
"begin": 42,<br />
"end": 42<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\NotFound\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/module.php",<br />
"lines": {<br />
"begin": 56,<br />
"end": 56<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misModuleEnabled\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Module\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/module.php",<br />
"lines": {<br />
"begin": 65,<br />
"end": 65<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\NotFound\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/module.php",<br />
"lines": {<br />
"begin": 66,<br />
"end": 66<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\BadRequest\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/module.php",<br />
"lines": {<br />
"begin": 74,<br />
"end": 74<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\BadRequest\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/module.php",<br />
"lines": {<br />
"begin": 77,<br />
"end": 77<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\NotFound\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/module.php",<br />
"lines": {<br />
"begin": 114,<br />
"end": 114<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93minfo\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/module.php",<br />
"lines": {<br />
"begin": 119,<br />
"end": 119<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Error\\NotFound\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/module.php",<br />
"lines": {<br />
"begin": 120,<br />
"end": 120<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwarning\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Logger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/saml/sp/module.php",<br />
"lines": {<br />
"begin": 160,<br />
"end": 160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/user.php",<br />
"lines": {<br />
"begin": 1433,<br />
"end": 1433<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/user.php",<br />
"lines": {<br />
"begin": 1437,<br />
"end": 1437<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/user.php",<br />
"lines": {<br />
"begin": 1441,<br />
"end": 1441<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/user.php",<br />
"lines": {<br />
"begin": 1448,<br />
"end": 1448<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd_param\u001b[0m on non-class type \u001b[37mbool\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 107,<br />
"end": 107<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93msend\u001b[0m on non-class type \u001b[37mbool\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 268,<br />
"end": 268<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd_param\u001b[0m on non-class type \u001b[37mbool\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 504,<br />
"end": 504<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd_param\u001b[0m on non-class type \u001b[37mbool\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/auth/xmlrpc/lib.php",<br />
"lines": {<br />
"begin": 1103,<br />
"end": 1103<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data['groupviews']\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/blocktype/groupviews/lib.php",<br />
"lines": {<br />
"begin": 319,<br />
"end": 319<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$activitylist\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/blocktype/inbox/lib.php",<br />
"lines": {<br />
"begin": 59,<br />
"end": 59<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$activitylist\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/blocktype/inbox/lib.php",<br />
"lines": {<br />
"begin": 60,<br />
"end": 60<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 9003,<br />
"check_name": "PhanAbstractStaticMethodCallInStatic",<br />
"description": "StaticCallError PhanAbstractStaticMethodCallInStatic Potentially calling an abstract static method \u001b[93m\\PluginBlocktype::render_instance()\u001b[0m with static:: in \u001b[95mstatic::render_instance($instance, $editing, $versioning)\u001b[0m (the calling static method's class scope may be an abstract class)",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/blocktype/lib.php",<br />
"lines": {<br />
"begin": 144,<br />
"end": 144<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_get_allowed_blocktypes()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/blocktype/lib.php",<br />
"lines": {<br />
"begin": 653,<br />
"end": 653<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$views\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/blocktype/newviews/lib.php",<br />
"lines": {<br />
"begin": 66,<br />
"end": 66<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$results\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/blocktype/watchlist/lib.php",<br />
"lines": {<br />
"begin": 112,<br />
"end": 112<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$results\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/blocktype/watchlist/lib.php",<br />
"lines": {<br />
"begin": 114,<br />
"end": 114<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\artefact\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/html/lib.php",<br />
"lines": {<br />
"begin": 834,<br />
"end": 834<br />
}<br />
},<br />
"suggestion": "Did you mean class \\ArtefactType or class \\ArtefactTypeAcademicgoal or class \\ArtefactTypeAcademicskill or class \\ArtefactTypeAddress or class \\ArtefactTypeAnnotation or class \\ArtefactTypeAnnotationfeedback or class \\ArtefactTypeArchive or class \\ArtefactTypeAudio or class \\ArtefactTypeBlog or class \\ArtefactTypeBlogAddress or class \\ArtefactTypeBlogPost or class \\ArtefactTypeBook or class \\ArtefactTypeBusinessnumber or class \\ArtefactTypeCachedProfileField or class \\ArtefactTypeCareergoal or class \\ArtefactTypeCertification or class \\ArtefactTypeCity or class \\ArtefactTypeComment or class \\ArtefactTypeContactinformation or class \\ArtefactTypeCountry or class \\ArtefactTypeCoverletter or class \\ArtefactTypeEducationhistory or class \\ArtefactTypeEmail or class \\ArtefactTypeEmploymenthistory or class \\ArtefactTypeFaxnumber or class \\ArtefactTypeFile or class \\ArtefactTypeFileBase or class \\ArtefactTypeFirstname or class \\ArtefactTypeFolder or class \\ArtefactTypeHomenumber or class \\ArtefactTypeHtml or class \\ArtefactTypeImage or class \\ArtefactTypeIndustry or class \\ArtefactTypeInterest or class \\ArtefactTypeIntroduction or class \\ArtefactTypeLastname or class \\ArtefactTypeMembership or class \\ArtefactTypeMobilenumber or class \\ArtefactTypeOccupation or class \\ArtefactTypeOfficialwebsite or class \\ArtefactTypePeerassessment or class \\ArtefactTypePersonalgoal or class \\ArtefactTypePersonalinformation or class \\ArtefactTypePersonalskill or class \\ArtefactTypePersonalwebsite or class \\ArtefactTypePlan or class \\ArtefactTypePreferredname or class \\ArtefactTypeProfile or class \\ArtefactTypeProfileField or class \\ArtefactTypeProfileIcon or class \\ArtefactTypeResume or class \\ArtefactTypeResumeComposite or class \\ArtefactTypeResumeGoalAndSkill or class \\ArtefactTypeSocialprofile or class \\ArtefactTypeStudentid or class \\ArtefactTypeTask or class \\ArtefactTypeTown or class \\ArtefactTypeUserroles or class \\ArtefactTypeVideo or class \\ArtefactTypeWebAddress or class \\ArtefactTypeWorkskill"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\artefact\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/html/lib.php",<br />
"lines": {<br />
"begin": 843,<br />
"end": 843<br />
}<br />
},<br />
"suggestion": "Did you mean class \\ArtefactType or class \\ArtefactTypeAcademicgoal or class \\ArtefactTypeAcademicskill or class \\ArtefactTypeAddress or class \\ArtefactTypeAnnotation or class \\ArtefactTypeAnnotationfeedback or class \\ArtefactTypeArchive or class \\ArtefactTypeAudio or class \\ArtefactTypeBlog or class \\ArtefactTypeBlogAddress or class \\ArtefactTypeBlogPost or class \\ArtefactTypeBook or class \\ArtefactTypeBusinessnumber or class \\ArtefactTypeCachedProfileField or class \\ArtefactTypeCareergoal or class \\ArtefactTypeCertification or class \\ArtefactTypeCity or class \\ArtefactTypeComment or class \\ArtefactTypeContactinformation or class \\ArtefactTypeCountry or class \\ArtefactTypeCoverletter or class \\ArtefactTypeEducationhistory or class \\ArtefactTypeEmail or class \\ArtefactTypeEmploymenthistory or class \\ArtefactTypeFaxnumber or class \\ArtefactTypeFile or class \\ArtefactTypeFileBase or class \\ArtefactTypeFirstname or class \\ArtefactTypeFolder or class \\ArtefactTypeHomenumber or class \\ArtefactTypeHtml or class \\ArtefactTypeImage or class \\ArtefactTypeIndustry or class \\ArtefactTypeInterest or class \\ArtefactTypeIntroduction or class \\ArtefactTypeLastname or class \\ArtefactTypeMembership or class \\ArtefactTypeMobilenumber or class \\ArtefactTypeOccupation or class \\ArtefactTypeOfficialwebsite or class \\ArtefactTypePeerassessment or class \\ArtefactTypePersonalgoal or class \\ArtefactTypePersonalinformation or class \\ArtefactTypePersonalskill or class \\ArtefactTypePersonalwebsite or class \\ArtefactTypePlan or class \\ArtefactTypePreferredname or class \\ArtefactTypeProfile or class \\ArtefactTypeProfileField or class \\ArtefactTypeProfileIcon or class \\ArtefactTypeResume or class \\ArtefactTypeResumeComposite or class \\ArtefactTypeResumeGoalAndSkill or class \\ArtefactTypeSocialprofile or class \\ArtefactTypeStudentid or class \\ArtefactTypeTask or class \\ArtefactTypeTown or class \\ArtefactTypeUserroles or class \\ArtefactTypeVideo or class \\ArtefactTypeWebAddress or class \\ArtefactTypeWorkskill"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?mixed\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/html/lib.php",<br />
"lines": {<br />
"begin": 1318,<br />
"end": 1318<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\HtmlExportOutputFilter::get\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/html/lib.php",<br />
"lines": {<br />
"begin": 1318,<br />
"end": 1318<br />
}<br />
},<br />
"suggestion": "Did you mean expr->get_export_path_for_file() or expr->get_folder_path_for_file() or expr->get_size_from_options()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ArtefactTypeFileBase::get_path\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/html/lib.php",<br />
"lines": {<br />
"begin": 1742,<br />
"end": 1742<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 205,<br />
"end": 205<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 206,<br />
"end": 206<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 207,<br />
"end": 207<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 208,<br />
"end": 208<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 213,<br />
"end": 213<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 228,<br />
"end": 228<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 229,<br />
"end": 229<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 232,<br />
"end": 232<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 245,<br />
"end": 245<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfetch\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 247,<br />
"end": 247<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 250,<br />
"end": 250<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfetch\u001b[0m from undeclared class \u001b[32m\\Dwoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/htmllite/lib.php",<br />
"lines": {<br />
"begin": 251,<br />
"end": 251<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/leap/lib.php",<br />
"lines": {<br />
"begin": 803,<br />
"end": 803<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/leap/lib.php",<br />
"lines": {<br />
"begin": 826,<br />
"end": 826<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/lib.php",<br />
"lines": {<br />
"begin": 590,<br />
"end": 590<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\HeadlessChromium\\BrowserFactory\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdf/lib.php",<br />
"lines": {<br />
"begin": 217,<br />
"end": 217<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mcreateBrowser\u001b[0m from undeclared class \u001b[32m\\HeadlessChromium\\BrowserFactory\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdf/lib.php",<br />
"lines": {<br />
"begin": 219,<br />
"end": 219<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mnavigate\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdf/lib.php",<br />
"lines": {<br />
"begin": 285,<br />
"end": 285<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mpdf\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdf/lib.php",<br />
"lines": {<br />
"begin": 298,<br />
"end": 298<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mclose\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdf/lib.php",<br />
"lines": {<br />
"begin": 309,<br />
"end": 309<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mclose\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdf/lib.php",<br />
"lines": {<br />
"begin": 310,<br />
"end": 310<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\HeadlessChromium\\BrowserFactory\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdflite/lib.php",<br />
"lines": {<br />
"begin": 205,<br />
"end": 205<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mcreateBrowser\u001b[0m from undeclared class \u001b[32m\\HeadlessChromium\\BrowserFactory\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdflite/lib.php",<br />
"lines": {<br />
"begin": 207,<br />
"end": 207<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mnavigate\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdflite/lib.php",<br />
"lines": {<br />
"begin": 276,<br />
"end": 276<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mpdf\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdflite/lib.php",<br />
"lines": {<br />
"begin": 289,<br />
"end": 289<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mclose\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdflite/lib.php",<br />
"lines": {<br />
"begin": 300,<br />
"end": 300<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mclose\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/export/pdflite/lib.php",<br />
"lines": {<br />
"begin": 301,<br />
"end": 301<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/forgotpass.php",<br />
"lines": {<br />
"begin": 197,<br />
"end": 197<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m2\u001b[0m (\u001b[36m$array\u001b[0m) is \u001b[95m$group_data\u001b[0m of type \u001b[37m\\stdClass\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\array_key_exists()\u001b[0m takes \u001b[37marray\u001b[0m\u001b[92m\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/group/edit.php",<br />
"lines": {<br />
"begin": 93,<br />
"end": 93<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$config\u001b[0m with type \u001b[37marray{conditionalGET:true,sets:array{remote-idp:array{cron:array{0:'hourly'},sources:array{0?:array{src:mixed,validateFingerprint?:mixed}},expireAfter:345600,outputDir:string,outputFormat:'flatfile'}}}\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/grouptype/course/version.php",<br />
"lines": {<br />
"begin": 12,<br />
"end": 12<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$config\u001b[0m with type \u001b[37marray{conditionalGET:true,sets:array{remote-idp:array{cron:array{0:'hourly'},sources:array{0?:array{src:mixed,validateFingerprint?:mixed}},expireAfter:345600,outputDir:string,outputFormat:'flatfile'}}}\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/grouptype/course/version.php",<br />
"lines": {<br />
"begin": 13,<br />
"end": 13<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$config\u001b[0m with type \u001b[37marray{conditionalGET:true,sets:array{remote-idp:array{cron:array{0:'hourly'},sources:array{0?:array{src:mixed,validateFingerprint?:mixed}},expireAfter:345600,outputDir:string,outputFormat:'flatfile'}}}\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/grouptype/standard/version.php",<br />
"lines": {<br />
"begin": 12,<br />
"end": 12<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$config\u001b[0m with type \u001b[37marray{conditionalGET:true,sets:array{remote-idp:array{cron:array{0:'hourly'},sources:array{0?:array{src:mixed,validateFingerprint?:mixed}},expireAfter:345600,outputDir:string,outputFormat:'flatfile'}}}\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/grouptype/standard/version.php",<br />
"lines": {<br />
"begin": 13,<br />
"end": 13<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m3\u001b[0m of \u001b[93m\\ArtefactTypeFile::save_file($pathname, $data, ?\\User &$user = null, $outsidedataroot = false)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/import/file/lib.php",<br />
"lines": {<br />
"begin": 158,<br />
"end": 158<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::build_import_entry_requests_form\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/import/index.php",<br />
"lines": {<br />
"begin": 291,<br />
"end": 291<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\PluginImport::do_import_from_requests\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/import/index.php",<br />
"lines": {<br />
"begin": 347,<br />
"end": 347<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\LOG_TARGET_ERRORLOG\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/import/leap/lib.php",<br />
"lines": {<br />
"begin": 127,<br />
"end": 127<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry\u001b[0m with type \u001b[37mint|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/import/leap/lib.php",<br />
"lines": {<br />
"begin": 1237,<br />
"end": 1237<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry_request\u001b[0m with type \u001b[37mfalse|object[]\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/import/leap/lib.php",<br />
"lines": {<br />
"begin": 1257,<br />
"end": 1257<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$entry_request\u001b[0m with type \u001b[37mfalse|object[]\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/import/leap/lib.php",<br />
"lines": {<br />
"begin": 1292,<br />
"end": 1292<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m3\u001b[0m of \u001b[93m\\ArtefactTypeFile::save_file($pathname, $data, ?\\User &$user = null, $outsidedataroot = false)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/import/leap/lib.php",<br />
"lines": {<br />
"begin": 2414,<br />
"end": 2414<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93msend\u001b[0m on non-class type \u001b[37mbool\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/import/lib.php",<br />
"lines": {<br />
"begin": 719,<br />
"end": 719<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$config\u001b[0m with type \u001b[37marray{conditionalGET:true,sets:array{remote-idp:array{cron:array{0:'hourly'},sources:array{0?:array{src:mixed,validateFingerprint?:mixed}},expireAfter:345600,outputDir:string,outputFormat:'flatfile'}}}\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/init.php",<br />
"lines": {<br />
"begin": 342,<br />
"end": 342<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$config\u001b[0m with type \u001b[37marray{conditionalGET:true,sets:array{remote-idp:array{cron:array{0:'hourly'},sources:array{0?:array{src:mixed,validateFingerprint?:mixed}},expireAfter:345600,outputDir:string,outputFormat:'flatfile'}}}\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/init.php",<br />
"lines": {<br />
"begin": 343,<br />
"end": 343<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$config\u001b[0m with type \u001b[37marray{conditionalGET:true,sets:array{remote-idp:array{cron:array{0:'hourly'},sources:array{0?:array{src:mixed,validateFingerprint?:mixed}},expireAfter:345600,outputDir:string,outputFormat:'flatfile'}}}\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/init.php",<br />
"lines": {<br />
"begin": 348,<br />
"end": 348<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_init_user()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/init.php",<br />
"lines": {<br />
"begin": 408,<br />
"end": 408<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1297,<br />
"end": 1297<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1298,<br />
"end": 1298<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1299,<br />
"end": 1299<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1308,<br />
"end": 1308<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1309,<br />
"end": 1309<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1310,<br />
"end": 1310<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1329,<br />
"end": 1329<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1330,<br />
"end": 1330<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1331,<br />
"end": 1331<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1340,<br />
"end": 1340<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1341,<br />
"end": 1341<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1342,<br />
"end": 1342<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1491,<br />
"end": 1491<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1492,<br />
"end": 1492<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1503,<br />
"end": 1503<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$post\u001b[0m with type \u001b[37mint|true\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/lib.php",<br />
"lines": {<br />
"begin": 1504,<br />
"end": 1504<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 17000,<br />
"check_name": "PhanSyntaxError",<br />
"description": "Syntax PhanSyntaxError Fallback parser diagnostic error: ':' expected.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/interaction/forum/unsubscribe.php",<br />
"lines": {<br />
"begin": 27,<br />
"end": 27,<br />
"begin_column": 37<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/json/sharedviews.php",<br />
"lines": {<br />
"begin": 72,<br />
"end": 72<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/json/sharedviews.php",<br />
"lines": {<br />
"begin": 81,<br />
"end": 81<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/json/sharedviews.php",<br />
"lines": {<br />
"begin": 82,<br />
"end": 82<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/json/sharedviews.php",<br />
"lines": {<br />
"begin": 83,<br />
"end": 83<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/json/sharedviews.php",<br />
"lines": {<br />
"begin": 84,<br />
"end": 84<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/json/viewlist.php",<br />
"lines": {<br />
"begin": 51,<br />
"end": 51<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/json/viewlist.php",<br />
"lines": {<br />
"begin": 75,<br />
"end": 75<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/json/viewlist.php",<br />
"lines": {<br />
"begin": 78,<br />
"end": 78<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/json/viewlist.php",<br />
"lines": {<br />
"begin": 85,<br />
"end": 85<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/activity.php",<br />
"lines": {<br />
"begin": 675,<br />
"end": 675<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget_activity_preference\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/activity.php",<br />
"lines": {<br />
"begin": 699,<br />
"end": 699<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/activity.php",<br />
"lines": {<br />
"begin": 709,<br />
"end": 709<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/activity.php",<br />
"lines": {<br />
"begin": 778,<br />
"end": 778<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mset_activity_preference\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/activity.php",<br />
"lines": {<br />
"begin": 798,<br />
"end": 798<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/activity/ActivityTypeContactus.php",<br />
"lines": {<br />
"begin": 48,<br />
"end": 48<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/activity/ActivityTypeMaharamessage.php",<br />
"lines": {<br />
"begin": 24,<br />
"end": 24<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/activity/ActivityTypeObjectionable.php",<br />
"lines": {<br />
"begin": 67,<br />
"end": 67<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mqstr\u001b[0m on non-class type \u001b[37mfalse\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-record.inc.php",<br />
"lines": {<br />
"begin": 363,<br />
"end": 363<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mErrorNo\u001b[0m on non-class type \u001b[37mfalse\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-record.inc.php",<br />
"lines": {<br />
"begin": 604,<br />
"end": 604<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1021,<br />
"check_name": "PhanAccessPropertyNonStaticAsStatic",<br />
"description": "AccessError PhanAccessPropertyNonStaticAsStatic Accessing non static property \u001b[36m\\ADODB_Active_Record->_quoteNames\u001b[0m as static",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-record.inc.php",<br />
"lines": {<br />
"begin": 769,<br />
"end": 769<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-record.inc.php",<br />
"lines": {<br />
"begin": 1155,<br />
"end": 1155<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-record.inc.php",<br />
"lines": {<br />
"begin": 1165,<br />
"end": 1165<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-record.inc.php",<br />
"lines": {<br />
"begin": 1167,<br />
"end": 1167<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-record.inc.php",<br />
"lines": {<br />
"begin": 1176,<br />
"end": 1176<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-record.inc.php",<br />
"lines": {<br />
"begin": 1178,<br />
"end": 1178<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-record.inc.php",<br />
"lines": {<br />
"begin": 1188,<br />
"end": 1188<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-record.inc.php",<br />
"lines": {<br />
"begin": 1202,<br />
"end": 1202<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11016,<br />
"check_name": "PhanUndeclaredStaticProperty",<br />
"description": "UndefError PhanUndeclaredStaticProperty Static property '\u001b[36mWeIsI\u001b[0m' on \u001b[32m\\ADODB_Active_Record\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-recordx.inc.php",<br />
"lines": {<br />
"begin": 225,<br />
"end": 225<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11016,<br />
"check_name": "PhanUndeclaredStaticProperty",<br />
"description": "UndefError PhanUndeclaredStaticProperty Static property '\u001b[36mIrregularP\u001b[0m' on \u001b[32m\\ADODB_Active_Record\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-recordx.inc.php",<br />
"lines": {<br />
"begin": 228,<br />
"end": 228<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11016,<br />
"check_name": "PhanUndeclaredStaticProperty",<br />
"description": "UndefError PhanUndeclaredStaticProperty Static property '\u001b[36mIrregularP\u001b[0m' on \u001b[32m\\ADODB_Active_Record\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-recordx.inc.php",<br />
"lines": {<br />
"begin": 229,<br />
"end": 229<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11016,<br />
"check_name": "PhanUndeclaredStaticProperty",<br />
"description": "UndefError PhanUndeclaredStaticProperty Static property '\u001b[36mWeIsI\u001b[0m' on \u001b[32m\\ADODB_Active_Record\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-recordx.inc.php",<br />
"lines": {<br />
"begin": 259,<br />
"end": 259<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11016,<br />
"check_name": "PhanUndeclaredStaticProperty",<br />
"description": "UndefError PhanUndeclaredStaticProperty Static property '\u001b[36mIrregularS\u001b[0m' on \u001b[32m\\ADODB_Active_Record\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-recordx.inc.php",<br />
"lines": {<br />
"begin": 262,<br />
"end": 262<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11016,<br />
"check_name": "PhanUndeclaredStaticProperty",<br />
"description": "UndefError PhanUndeclaredStaticProperty Static property '\u001b[36mIrregularS\u001b[0m' on \u001b[32m\\ADODB_Active_Record\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-recordx.inc.php",<br />
"lines": {<br />
"begin": 263,<br />
"end": 263<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB_Active_Table::updateColsCount\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-recordx.inc.php",<br />
"lines": {<br />
"begin": 542,<br />
"end": 542<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mErrorNo\u001b[0m on non-class type \u001b[37mfalse\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-recordx.inc.php",<br />
"lines": {<br />
"begin": 625,<br />
"end": 625<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB_Active_Record,1::outp_throw\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-active-recordx.inc.php",<br />
"lines": {<br />
"begin": 886,<br />
"end": 886<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11002,<br />
"check_name": "PhanUndeclaredClass",<br />
"description": "UndefError PhanUndeclaredClass Reference to undeclared class \u001b[32m\\PEAR_Error\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-errorpear.inc.php",<br />
"lines": {<br />
"begin": 78,<br />
"end": 78<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$thisConnection\u001b[0m with type \u001b[37mfalse\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-exceptions.inc.php",<br />
"lines": {<br />
"begin": 44,<br />
"end": 44<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 141,<br />
"end": 141<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 153,<br />
"end": 153<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 154,<br />
"end": 154<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 160,<br />
"end": 160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 168,<br />
"end": 168<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 177,<br />
"end": 177<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 180,<br />
"end": 180<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 183,<br />
"end": 183<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 187,<br />
"end": 187<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 190,<br />
"end": 190<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 201,<br />
"end": 201<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 208,<br />
"end": 208<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 219,<br />
"end": 219<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 225,<br />
"end": 225<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 226,<br />
"end": 226<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 229,<br />
"end": 229<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 236,<br />
"end": 236<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 239,<br />
"end": 239<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 247,<br />
"end": 247<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 260,<br />
"end": 260<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 261,<br />
"end": 261<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 269,<br />
"end": 269<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 270,<br />
"end": 270<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 274,<br />
"end": 274<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 281,<br />
"end": 281<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 288,<br />
"end": 288<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 290,<br />
"end": 290<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 309,<br />
"end": 309<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 413,<br />
"end": 413<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 414,<br />
"end": 414<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 419,<br />
"end": 419<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 428,<br />
"end": 428<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 479,<br />
"end": 479<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 482,<br />
"end": 482<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 502,<br />
"end": 502<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 503,<br />
"end": 503<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 505,<br />
"end": 505<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 506,<br />
"end": 506<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 547,<br />
"end": 547<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 568,<br />
"end": 568<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 570,<br />
"end": 570<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 611,<br />
"end": 611<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 613,<br />
"end": 613<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 636,<br />
"end": 636<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 639,<br />
"end": 639<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 656,<br />
"end": 656<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 659,<br />
"end": 659<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 768,<br />
"end": 768<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 770,<br />
"end": 770<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 793,<br />
"end": 793<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 908,<br />
"end": 908<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 909,<br />
"end": 909<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 915,<br />
"end": 915<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 945,<br />
"end": 945<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 947,<br />
"end": 947<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 969,<br />
"end": 969<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$zthis\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1062,<br />
"end": 1062<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$zthis\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1091,<br />
"end": 1091<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1120,<br />
"end": 1120<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$zthis\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1120,<br />
"end": 1120<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1134,<br />
"end": 1134<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mqstr\u001b[0m on non-class type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1134,<br />
"end": 1134<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1138,<br />
"end": 1138<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mDBDate\u001b[0m on non-class type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1138,<br />
"end": 1138<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1142,<br />
"end": 1142<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mDBTimeStamp\u001b[0m on non-class type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1142,<br />
"end": 1142<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1196,<br />
"end": 1196<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1197,<br />
"end": 1197<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1202,<br />
"end": 1202<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1204,<br />
"end": 1204<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1208,<br />
"end": 1208<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1212,<br />
"end": 1212<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1218,<br />
"end": 1218<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1221,<br />
"end": 1221<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1222,<br />
"end": 1222<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1223,<br />
"end": 1223<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1231,<br />
"end": 1231<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1235,<br />
"end": 1235<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-lib.inc.php",<br />
"lines": {<br />
"begin": 1238,<br />
"end": 1238<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11002,<br />
"check_name": "PhanUndeclaredClass",<br />
"description": "UndefError PhanUndeclaredClass Reference to undeclared class \u001b[32m\\Memcache\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-memcache.lib.inc.php",<br />
"lines": {<br />
"begin": 153,<br />
"end": 153<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11002,<br />
"check_name": "PhanUndeclaredClass",<br />
"description": "UndefError PhanUndeclaredClass Reference to undeclared class \u001b[32m\\Memcached\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-memcache.lib.inc.php",<br />
"lines": {<br />
"begin": 153,<br />
"end": 153<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MEMCACHE_COMPRESSED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-memcache.lib.inc.php",<br />
"lines": {<br />
"begin": 307,<br />
"end": 307<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\IFX_SCROLL\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-pager.inc.php",<br />
"lines": {<br />
"begin": 243,<br />
"end": 243<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\PEAR_Error\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-pear.inc.php",<br />
"lines": {<br />
"begin": 121,<br />
"end": 121<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\PEAR_Error\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-pear.inc.php",<br />
"lines": {<br />
"begin": 167,<br />
"end": 167<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\adodb_daylight_sv()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-time.inc.php",<br />
"lines": {<br />
"begin": 1098,<br />
"end": 1098<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mMetaIndexes\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 478,<br />
"end": 478<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mDropIndexSQL\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 480,<br />
"end": 480<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mMetaColumns\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 490,<br />
"end": 490<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mDropTableSQL\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 493,<br />
"end": 493<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mDropColumnSQL\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 501,<br />
"end": 501<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mCreateTableSQL\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 547,<br />
"end": 547<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mChangeTableSQL\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 556,<br />
"end": 556<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mDropTableSQL\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 560,<br />
"end": 560<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mCreateTableSQL\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 561,<br />
"end": 561<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mCreateIndexSQL\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 751,<br />
"end": 751<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\reset(array|object &$array)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 898,<br />
"end": 898<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mExecuteSQLArray\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 1569,<br />
"end": 1569<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11046,<br />
"check_name": "PhanUndeclaredThis",<br />
"description": "UndefError PhanUndeclaredThis Variable \u001b[96m$this\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 2194,<br />
"end": 2194<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11046,<br />
"check_name": "PhanUndeclaredThis",<br />
"description": "UndefError PhanUndeclaredThis Variable \u001b[96m$this\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema.inc.php",<br />
"lines": {<br />
"begin": 2195,<br />
"end": 2195<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\reset(array|object &$array)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema03.inc.php",<br />
"lines": {<br />
"begin": 968,<br />
"end": 968<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mexecuteSQLArray\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema03.inc.php",<br />
"lines": {<br />
"begin": 1741,<br />
"end": 1741<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11046,<br />
"check_name": "PhanUndeclaredThis",<br />
"description": "UndefError PhanUndeclaredThis Variable \u001b[96m$this\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema03.inc.php",<br />
"lines": {<br />
"begin": 2391,<br />
"end": 2391<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11046,<br />
"check_name": "PhanUndeclaredThis",<br />
"description": "UndefError PhanUndeclaredThis Variable \u001b[96m$this\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb-xmlschema03.inc.php",<br />
"lines": {<br />
"begin": 2392,<br />
"end": 2392<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\ADODB_OUTP\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb.inc.php",<br />
"lines": {<br />
"begin": 777,<br />
"end": 777<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADOConnection::_connect\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb.inc.php",<br />
"lines": {<br />
"begin": 870,<br />
"end": 870<br />
}<br />
},<br />
"suggestion": "Did you mean expr->_nconnect() or expr->Connect() or expr->NConnect() or expr->PConnect()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADOConnection::_connect\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb.inc.php",<br />
"lines": {<br />
"begin": 906,<br />
"end": 906<br />
}<br />
},<br />
"suggestion": "Did you mean expr->_nconnect() or expr->Connect() or expr->NConnect() or expr->PConnect()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADOConnection::_pconnect\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb.inc.php",<br />
"lines": {<br />
"begin": 959,<br />
"end": 959<br />
}<br />
},<br />
"suggestion": "Did you mean expr->_nconnect() or expr->PConnect()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADOConnection::_query\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb.inc.php",<br />
"lines": {<br />
"begin": 1539,<br />
"end": 1539<br />
}<br />
},<br />
"suggestion": "Did you mean expr->Query()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADOConnection::_affectedrows\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb.inc.php",<br />
"lines": {<br />
"begin": 1729,<br />
"end": 1729<br />
}<br />
},<br />
"suggestion": "Did you mean expr->Affected_Rows()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\ADODB_VIEW_PRIMARYKEYS()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb.inc.php",<br />
"lines": {<br />
"begin": 1790,<br />
"end": 1790<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADOConnection::_close\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb.inc.php",<br />
"lines": {<br />
"begin": 2890,<br />
"end": 2890<br />
}<br />
},<br />
"suggestion": "Did you mean expr->Close()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\PEAR_Error\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/adodb.inc.php",<br />
"lines": {<br />
"begin": 4427,<br />
"end": 4427<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11003,<br />
"check_name": "PhanUndeclaredExtendedClass",<br />
"description": "UndefError PhanUndeclaredExtendedClass Class extends undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-mysql.inc.php",<br />
"lines": {<br />
"begin": 25,<br />
"end": 25<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11003,<br />
"check_name": "PhanUndeclaredExtendedClass",<br />
"description": "UndefError PhanUndeclaredExtendedClass Class extends undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 25,<br />
"end": 25<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::tableName\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 159,<br />
"end": 159<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::_genFields\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 162,<br />
"end": 162<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::tableName\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 187,<br />
"end": 187<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::tableName\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 210,<br />
"end": 210<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::_genFields\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 212,<br />
"end": 212<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::metaColumns\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 230,<br />
"end": 230<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdropColumnSQL\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 313,<br />
"end": 313<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::metaColumns\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 334,<br />
"end": 334<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::createTableSQL\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 371,<br />
"end": 371<br />
}<br />
},<br />
"suggestion": "Did you mean expr->renameTableSQL()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::metaIndexes\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 379,<br />
"end": 379<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::createIndexSQL\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 381,<br />
"end": 381<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdropTableSQL\u001b[0m from undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 391,<br />
"end": 391<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::tableName\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 433,<br />
"end": 433<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::tableName\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 436,<br />
"end": 436<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::tableName\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 441,<br />
"end": 441<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11002,<br />
"check_name": "PhanUndeclaredClass",<br />
"description": "UndefError PhanUndeclaredClass Reference to undeclared class \u001b[32m\\ADODB_DataDict\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 540,<br />
"end": 540<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::metaColumns\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 550,<br />
"end": 550<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::createTableSQL\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 560,<br />
"end": 560<br />
}<br />
},<br />
"suggestion": "Did you mean expr->renameTableSQL()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::_genFields\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 568,<br />
"end": 568<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ADODB2_postgres::tableName\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/datadict/datadict-postgres.inc.php",<br />
"lines": {<br />
"begin": 573,<br />
"end": 573<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_REPORT_OFF\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 101,<br />
"end": 101<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_CLIENT_SSL\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 206,<br />
"end": 206<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 207,<br />
"end": 207<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mprepare\u001b[0m on non-class type \u001b[37mfalse|resource\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1077,<br />
"end": 1077<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mprepare\u001b[0m on non-class type \u001b[37mfalse|resource\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1204,<br />
"end": 1204<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_STORE_RESULT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1298,<br />
"end": 1298<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_USE_RESULT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1298,<br />
"end": 1298<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_NUM\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1422,<br />
"end": 1422<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_ASSOC\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1425,<br />
"end": 1425<br />
}<br />
},<br />
"suggestion": "Did you mean \\PGSQL_ASSOC"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_BOTH\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1430,<br />
"end": 1430<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_PRI_KEY_FLAG\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1488,<br />
"end": 1488<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_NOT_NULL_FLAG\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1489,<br />
"end": 1489<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_AUTO_INCREMENT_FLAG\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1490,<br />
"end": 1490<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_UNSIGNED_FLAG\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1493,<br />
"end": 1493<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_ASSOC\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1516,<br />
"end": 1516<br />
}<br />
},<br />
"suggestion": "Did you mean \\PGSQL_ASSOC"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_NUM\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1534,<br />
"end": 1534<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11008,<br />
"check_name": "PhanUndeclaredClassInstanceof",<br />
"description": "UndefError PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \u001b[32m\\mysqli_result\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1651,<br />
"end": 1651<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_TINY_BLOB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1722,<br />
"end": 1722<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_STRING\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1724,<br />
"end": 1724<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_ENUM\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1725,<br />
"end": 1725<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_SET\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1726,<br />
"end": 1726<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_BLOB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1744,<br />
"end": 1744<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_LONG_BLOB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1745,<br />
"end": 1745<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_MEDIUM_BLOB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1746,<br />
"end": 1746<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_DATE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1751,<br />
"end": 1751<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_YEAR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1752,<br />
"end": 1752<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_DATETIME\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1759,<br />
"end": 1759<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_NEWDATE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1760,<br />
"end": 1760<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_TIME\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1761,<br />
"end": 1761<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_TIMESTAMP\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1762,<br />
"end": 1762<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_INT24\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1772,<br />
"end": 1772<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_LONG\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1773,<br />
"end": 1773<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_LONGLONG\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1774,<br />
"end": 1774<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_SHORT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1775,<br />
"end": 1775<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_TINY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1776,<br />
"end": 1776<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_TINY_BLOB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1839,<br />
"end": 1839<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_STRING\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1841,<br />
"end": 1841<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_ENUM\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1842,<br />
"end": 1842<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_SET\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1843,<br />
"end": 1843<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_BLOB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1861,<br />
"end": 1861<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_LONG_BLOB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1862,<br />
"end": 1862<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_MEDIUM_BLOB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1863,<br />
"end": 1863<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_DATE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1868,<br />
"end": 1868<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_YEAR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1869,<br />
"end": 1869<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_DATETIME\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1876,<br />
"end": 1876<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_NEWDATE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1877,<br />
"end": 1877<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_TIME\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1878,<br />
"end": 1878<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_TIMESTAMP\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1879,<br />
"end": 1879<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_INT24\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1889,<br />
"end": 1889<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_LONG\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1890,<br />
"end": 1890<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_LONGLONG\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1891,<br />
"end": 1891<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_SHORT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1892,<br />
"end": 1892<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MYSQLI_TYPE_TINY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-mysqli.inc.php",<br />
"lines": {<br />
"begin": 1893,<br />
"end": 1893<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m1\u001b[0m (\u001b[36m$result\u001b[0m) is \u001b[95m$this->_resultid\u001b[0m of type \u001b[37mresource\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\pg_last_oid()\u001b[0m takes \u001b[37mresource\u001b[0m\u001b[92m (real type \\PgSql\\Result)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-postgres64.inc.php",<br />
"lines": {<br />
"begin": 159,<br />
"end": 159<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m1\u001b[0m (\u001b[36m$result\u001b[0m) is \u001b[95m$this->_resultid\u001b[0m of type \u001b[37mresource\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\pg_affected_rows()\u001b[0m takes \u001b[37mresource\u001b[0m\u001b[92m (real type \\PgSql\\Result)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-postgres64.inc.php",<br />
"lines": {<br />
"begin": 167,<br />
"end": 167<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m1\u001b[0m (\u001b[36m$result\u001b[0m) is \u001b[95m$this->_resultid\u001b[0m of type \u001b[37mresource\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\pg_free_result()\u001b[0m takes \u001b[37mresource\u001b[0m\u001b[92m (real type \\PgSql\\Result)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-postgres64.inc.php",<br />
"lines": {<br />
"begin": 850,<br />
"end": 850<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m1\u001b[0m (\u001b[36m$result\u001b[0m) is \u001b[95m$this->_queryID\u001b[0m of type \u001b[37mresource\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\pg_free_result()\u001b[0m takes \u001b[37mresource\u001b[0m\u001b[92m (real type \\PgSql\\Result)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-postgres64.inc.php",<br />
"lines": {<br />
"begin": 1085,<br />
"end": 1085<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m1\u001b[0m (\u001b[36m$result\u001b[0m) is \u001b[95m$this->_resultid\u001b[0m of type \u001b[37mresource\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\pg_free_result()\u001b[0m takes \u001b[37mresource\u001b[0m\u001b[92m (real type \\PgSql\\Result)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/drivers/adodb-postgres7.inc.php",<br />
"lines": {<br />
"begin": 235,<br />
"end": 235<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/toexport.inc.php",<br />
"lines": {<br />
"begin": 84,<br />
"end": 84<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/toexport.inc.php",<br />
"lines": {<br />
"begin": 98,<br />
"end": 98<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/toexport.inc.php",<br />
"lines": {<br />
"begin": 101,<br />
"end": 101<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/toexport.inc.php",<br />
"lines": {<br />
"begin": 103,<br />
"end": 103<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/toexport.inc.php",<br />
"lines": {<br />
"begin": 109,<br />
"end": 109<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/toexport.inc.php",<br />
"lines": {<br />
"begin": 119,<br />
"end": 119<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 4000,<br />
"check_name": "PhanContextNotObject",<br />
"description": "Context PhanContextNotObject Cannot access \u001b[32mstatic\u001b[0m when not in object context",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/adodb/toexport.inc.php",<br />
"lines": {<br />
"begin": 128,<br />
"end": 128<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 17014,<br />
"check_name": "PhanSyntaxReturnValueInVoid",<br />
"description": "Syntax PhanSyntaxReturnValueInVoid Syntax error: \u001b[37mvoid\u001b[0m function \u001b[93mnext()\u001b[0m must not return a value (did you mean \"\u001b[95mreturn;\u001b[0m\" instead of \"\u001b[95mreturn $this->current();\u001b[0m\"?)",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/applicationset.php",<br />
"lines": {<br />
"begin": 49,<br />
"end": 49<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\csstidy_optimise\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy.php",<br />
"lines": {<br />
"begin": 322,<br />
"end": 322<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\csstidy_optimise\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy.php",<br />
"lines": {<br />
"begin": 595,<br />
"end": 595<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msubvalue\u001b[0m from undeclared class \u001b[32m\\csstidy_optimise\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy.php",<br />
"lines": {<br />
"begin": 819,<br />
"end": 819<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mvalue\u001b[0m from undeclared class \u001b[32m\\csstidy_optimise\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy.php",<br />
"lines": {<br />
"begin": 836,<br />
"end": 836<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mshorthands\u001b[0m from undeclared class \u001b[32m\\csstidy_optimise\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy.php",<br />
"lines": {<br />
"begin": 842,<br />
"end": 842<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msubvalue\u001b[0m from undeclared class \u001b[32m\\csstidy_optimise\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy.php",<br />
"lines": {<br />
"begin": 873,<br />
"end": 873<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mpostparse\u001b[0m from undeclared class \u001b[32m\\csstidy_optimise\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy.php",<br />
"lines": {<br />
"begin": 978,<br />
"end": 978<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$css\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy_print.php",<br />
"lines": {<br />
"begin": 77,<br />
"end": 77<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$css\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy_print.php",<br />
"lines": {<br />
"begin": 78,<br />
"end": 78<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$css\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy_print.php",<br />
"lines": {<br />
"begin": 79,<br />
"end": 79<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$css\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy_print.php",<br />
"lines": {<br />
"begin": 80,<br />
"end": 80<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$css\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy_print.php",<br />
"lines": {<br />
"begin": 81,<br />
"end": 81<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$css\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/csstidy/class.csstidy_print.php",<br />
"lines": {<br />
"begin": 82,<br />
"end": 82<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mgetTables\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/ddl.php",<br />
"lines": {<br />
"begin": 684,<br />
"end": 684<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mgetCreateStructureSQL\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/ddl.php",<br />
"lines": {<br />
"begin": 749,<br />
"end": 749<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mgetTables\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/ddl.php",<br />
"lines": {<br />
"begin": 1447,<br />
"end": 1447<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,\\timestamp>|array<string,int>|array<string,mixed>|array<string,non-empty-mixed>|array<string,null>|array<string,string>|non-empty-array<mixed,mixed>|non-empty-array<mixed,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1189,<br />
"end": 1189<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,\\timestamp>|array<string,int>|array<string,non-empty-string>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1189,<br />
"end": 1189<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,false>|array<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1189,<br />
"end": 1189<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,int>|array<string,mixed>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1189,<br />
"end": 1189<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1194,<br />
"end": 1194<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,\\timestamp>|array<string,int>|array<string,mixed>|array<string,non-empty-mixed>|array<string,null>|array<string,string>|non-empty-array<mixed,mixed>|non-empty-array<mixed,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1194,<br />
"end": 1194<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,\\timestamp>|array<string,int>|array<string,non-empty-string>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1194,<br />
"end": 1194<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,false>|array<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1194,<br />
"end": 1194<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,int>|array<string,mixed>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1194,<br />
"end": 1194<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1255,<br />
"end": 1255<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,\\timestamp>|array<string,int>|array<string,mixed>|array<string,non-empty-mixed>|array<string,null>|array<string,string>|non-empty-array<mixed,mixed>|non-empty-array<mixed,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1255,<br />
"end": 1255<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,\\timestamp>|array<string,int>|array<string,non-empty-string>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1255,<br />
"end": 1255<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,false>|array<string,mixed>|array<string,string>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1255,<br />
"end": 1255<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dataobject\u001b[0m with type \u001b[37marray<string,int>|array<string,mixed>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dml.php",<br />
"lines": {<br />
"begin": 1255,<br />
"end": 1255<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 9000,<br />
"check_name": "PhanStaticCallToNonStatic",<br />
"description": "StaticCallError PhanStaticCallToNonStatic Static call to non-static method \u001b[93m\\Dwoo\\Plugins\\Blocks\\PluginIf::init\u001b[0m defined at \u001b[96mhtdocs/lib/dwoo/dwoo/Dwoo/Plugins/Blocks/PluginIf.php\u001b[0m:\u001b[37m47\u001b[0m. This is an Error in PHP 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/dwoo/Dwoo/Compiler.php",<br />
"lines": {<br />
"begin": 1646,<br />
"end": 1646<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10169,<br />
"check_name": "PhanPossiblyInfiniteLoop",<br />
"description": "TypeError PhanPossiblyInfiniteLoop The loop condition \u001b[95m(count($m[1]) && ($m[1][0] !== '->'))\u001b[0m does not seem to change within the loop and nothing seems to exit the loop",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/dwoo/Dwoo/Compiler.php",<br />
"lines": {<br />
"begin": 2738,<br />
"end": 2738<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1003,<br />
"check_name": "PhanAccessMethodPrivate",<br />
"description": "AccessError PhanAccessMethodPrivate Cannot access private method \u001b[93m\\Closure::__construct\u001b[0m defined at \u001b[96minternal\u001b[0m:\u001b[37m0\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/dwoo/Dwoo/Core.php",<br />
"lines": {<br />
"begin": 1190,<br />
"end": 1190<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 7002,<br />
"check_name": "PhanParamTooManyInternal",<br />
"description": "ParamError PhanParamTooManyInternal Call with \u001b[95m1\u001b[0m arg(s) to \u001b[93m\\Closure::__construct()\u001b[0m which only takes \u001b[95m0\u001b[0m arg(s). This is an ArgumentCountError for internal functions in PHP 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/dwoo/Dwoo/Core.php",<br />
"lines": {<br />
"begin": 1190,<br />
"end": 1190<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Closure::buffer\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/dwoo/Dwoo/Core.php",<br />
"lines": {<br />
"begin": 1218,<br />
"end": 1218<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Closure::process\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/dwoo/Dwoo/Core.php",<br />
"lines": {<br />
"begin": 1218,<br />
"end": 1218<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Closure::process\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/dwoo/Dwoo/Core.php",<br />
"lines": {<br />
"begin": 1225,<br />
"end": 1225<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 17000,<br />
"check_name": "PhanSyntaxError",<br />
"description": "Syntax PhanSyntaxError Fallback parser diagnostic error: ':' expected.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/dwoo/Dwoo/Plugins/Functions/PluginExtends.php",<br />
"lines": {<br />
"begin": 204,<br />
"end": 204,<br />
"begin_column": 76<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Dwoo\\Security\\Policy::addPhpFunction\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/dwoo/Dwoo/Smarty/Adapter.php",<br />
"lines": {<br />
"begin": 249,<br />
"end": 249<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Mahara\\SystemException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/mahara/Dwoo_Template_Mahara.php",<br />
"lines": {<br />
"begin": 49,<br />
"end": 49<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Mahara\\SystemException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/mahara/Dwoo_Template_Mahara.php",<br />
"lines": {<br />
"begin": 59,<br />
"end": 59<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1001,<br />
"check_name": "PhanAccessPropertyPrivate",<br />
"description": "AccessError PhanAccessPropertyPrivate Cannot access private property \u001b[36m\\Composer\\Autoload\\ClassLoader->prefixLengthsPsr4\u001b[0m defined at \u001b[96mhtdocs/lib/dwoo/vendor/composer/ClassLoader.php\u001b[0m:\u001b[37m46\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/vendor/composer/autoload_static.php",<br />
"lines": {<br />
"begin": 126,<br />
"end": 126<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1001,<br />
"check_name": "PhanAccessPropertyPrivate",<br />
"description": "AccessError PhanAccessPropertyPrivate Cannot access private property \u001b[36m\\Composer\\Autoload\\ClassLoader->prefixDirsPsr4\u001b[0m defined at \u001b[96mhtdocs/lib/dwoo/vendor/composer/ClassLoader.php\u001b[0m:\u001b[37m47\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/vendor/composer/autoload_static.php",<br />
"lines": {<br />
"begin": 127,<br />
"end": 127<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1001,<br />
"check_name": "PhanAccessPropertyPrivate",<br />
"description": "AccessError PhanAccessPropertyPrivate Cannot access private property \u001b[36m\\Composer\\Autoload\\ClassLoader->classMap\u001b[0m defined at \u001b[96mhtdocs/lib/dwoo/vendor/composer/ClassLoader.php\u001b[0m:\u001b[37m55\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/dwoo/vendor/composer/autoload_static.php",<br />
"lines": {<br />
"begin": 128,<br />
"end": 128<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1001,<br />
"check_name": "PhanAccessPropertyPrivate",<br />
"description": "AccessError PhanAccessPropertyPrivate Cannot access private property \u001b[36m\\Composer\\Autoload\\ClassLoader->prefixLengthsPsr4\u001b[0m defined at \u001b[96mhtdocs/lib/dwoo/vendor/composer/ClassLoader.php\u001b[0m:\u001b[37m46\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/composer/autoload_static.php",<br />
"lines": {<br />
"begin": 59,<br />
"end": 59<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1001,<br />
"check_name": "PhanAccessPropertyPrivate",<br />
"description": "AccessError PhanAccessPropertyPrivate Cannot access private property \u001b[36m\\Composer\\Autoload\\ClassLoader->prefixDirsPsr4\u001b[0m defined at \u001b[96mhtdocs/lib/dwoo/vendor/composer/ClassLoader.php\u001b[0m:\u001b[37m47\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/composer/autoload_static.php",<br />
"lines": {<br />
"begin": 60,<br />
"end": 60<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Elasticsearch\\Connections\\ConnectionInterface::ping\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/elasticsearch/elasticsearch/src/Elasticsearch/ConnectionPool/SniffingConnectionPool.php",<br />
"lines": {<br />
"begin": 61,<br />
"end": 61<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Elasticsearch\\Connections\\ConnectionInterface::ping\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/elasticsearch/elasticsearch/src/Elasticsearch/ConnectionPool/StaticConnectionPool.php",<br />
"lines": {<br />
"begin": 63,<br />
"end": 63<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Elasticsearch\\Connections\\ConnectionInterface::ping\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/elasticsearch/elasticsearch/src/Elasticsearch/ConnectionPool/StaticConnectionPool.php",<br />
"lines": {<br />
"begin": 73,<br />
"end": 73<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Elasticsearch\\Common\\Exceptions\\ElasticsearchException::getMessage\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php",<br />
"lines": {<br />
"begin": 693,<br />
"end": 693<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Elasticsearch\\Common\\Exceptions\\ElasticsearchException::getTraceAsString\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php",<br />
"lines": {<br />
"begin": 695,<br />
"end": 695<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Elasticsearch\\Common\\Exceptions\\ElasticsearchException::getMessage\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php",<br />
"lines": {<br />
"begin": 702,<br />
"end": 702<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Elasticsearch\\Common\\Exceptions\\ElasticsearchException::getMessage\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php",<br />
"lines": {<br />
"begin": 704,<br />
"end": 704<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Elasticsearch\\Common\\Exceptions\\ElasticsearchException::getMessage\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php",<br />
"lines": {<br />
"begin": 706,<br />
"end": 706<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m1\u001b[0m (\u001b[36m$handle\u001b[0m) is \u001b[95m$handle\u001b[0m of type \u001b[37mresource\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\curl_close()\u001b[0m takes \u001b[37m\\CurlHandle\u001b[0m\u001b[92m\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/guzzlehttp/ringphp/src/Client/CurlHandler.php",<br />
"lines": {<br />
"begin": 55,<br />
"end": 55<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m3\u001b[0m (\u001b[36m$use_include_path\u001b[0m) is \u001b[95mnull\u001b[0m of type \u001b[37mnull\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\fopen()\u001b[0m takes \u001b[37mbool\u001b[0m\u001b[92m\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/guzzlehttp/ringphp/src/Client/StreamHandler.php",<br />
"lines": {<br />
"begin": 406,<br />
"end": 406<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m3\u001b[0m (\u001b[36m$use_include_path\u001b[0m) is \u001b[95mnull\u001b[0m of type \u001b[37mnull\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\fopen()\u001b[0m takes \u001b[37mbool\u001b[0m\u001b[92m\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/guzzlehttp/streams/src/GuzzleStreamWrapper.php",<br />
"lines": {<br />
"begin": 39,<br />
"end": 39<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\React\\Promise\\PromiseInterface::done\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/react/promise/src/Promise.php",<br />
"lines": {<br />
"begin": 118,<br />
"end": 118<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\React\\Promise\\PromiseInterface::done\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/elasticsearch/react/promise/src/functions.php",<br />
"lines": {<br />
"begin": 161,<br />
"end": 161<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Imagick\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/file.php",<br />
"lines": {<br />
"begin": 645,<br />
"end": 645<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetImageHeight\u001b[0m from undeclared class \u001b[32m\\Imagick\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/file.php",<br />
"lines": {<br />
"begin": 646,<br />
"end": 646<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetImageWidth\u001b[0m from undeclared class \u001b[32m\\Imagick\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/file.php",<br />
"lines": {<br />
"begin": 646,<br />
"end": 646<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11007,<br />
"check_name": "PhanUndeclaredClassConstant",<br />
"description": "UndefError PhanUndeclaredClassConstant Reference to constant \u001b[91mFILTER_LANCZOS\u001b[0m from undeclared class \u001b[32m\\Imagick\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/file.php",<br />
"lines": {<br />
"begin": 649,<br />
"end": 649<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mresizeImage\u001b[0m from undeclared class \u001b[32m\\Imagick\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/file.php",<br />
"lines": {<br />
"begin": 649,<br />
"end": 649<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwriteImage\u001b[0m from undeclared class \u001b[32m\\Imagick\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/file.php",<br />
"lines": {<br />
"begin": 650,<br />
"end": 650<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$alltags[$name]\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/form/elements/tags.php",<br />
"lines": {<br />
"begin": 100,<br />
"end": 100<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$alltags[$name]\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/form/elements/tags.php",<br />
"lines": {<br />
"begin": 101,<br />
"end": 101<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$alltags[$name]\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/form/elements/tags.php",<br />
"lines": {<br />
"begin": 102,<br />
"end": 102<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$alltags[$name]\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/form/elements/tags.php",<br />
"lines": {<br />
"begin": 105,<br />
"end": 105<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$alltags[$name]\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/form/elements/tags.php",<br />
"lines": {<br />
"begin": 107,<br />
"end": 107<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$alltags[$name]\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/form/elements/tags.php",<br />
"lines": {<br />
"begin": 108,<br />
"end": 108<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$group\u001b[0m with type \u001b[37mnon-empty-string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/group.php",<br />
"lines": {<br />
"begin": 178,<br />
"end": 178<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$group\u001b[0m with type \u001b[37mnon-empty-string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/group.php",<br />
"lines": {<br />
"begin": 179,<br />
"end": 179<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$search\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/group.php",<br />
"lines": {<br />
"begin": 3705,<br />
"end": 3705<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$search\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/group.php",<br />
"lines": {<br />
"begin": 3706,<br />
"end": 3706<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$search\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/group.php",<br />
"lines": {<br />
"begin": 3839,<br />
"end": 3839<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$search\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/group.php",<br />
"lines": {<br />
"begin": 3840,<br />
"end": 3840<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\HTMLPurifier_Definition::filter\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/AttrDef/URI.php",<br />
"lines": {<br />
"begin": 73,<br />
"end": 73<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\HTMLPurifier_Definition::postFilter\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/AttrDef/URI.php",<br />
"lines": {<br />
"begin": 92,<br />
"end": 92<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Net_IDNA2\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/AttrDef/URI/Host.php",<br />
"lines": {<br />
"begin": 110,<br />
"end": 110<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mencode\u001b[0m from undeclared class \u001b[32m\\Net_IDNA2\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/AttrDef/URI/Host.php",<br />
"lines": {<br />
"begin": 126,<br />
"end": 126<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93msetup\u001b[0m on non-class type \u001b[37m?non-empty-mixed\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Config.php",<br />
"lines": {<br />
"begin": 497,<br />
"end": 497<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Tidy\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Generator.php",<br />
"lines": {<br />
"begin": 105,<br />
"end": 105<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mparseString\u001b[0m from undeclared class \u001b[32m\\Tidy\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Generator.php",<br />
"lines": {<br />
"begin": 106,<br />
"end": 106<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mcleanRepair\u001b[0m from undeclared class \u001b[32m\\Tidy\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Generator.php",<br />
"lines": {<br />
"begin": 117,<br />
"end": 117<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$token->start\u001b[0m with type \u001b[37mnull|string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Injector/DisplayLinkURI.php",<br />
"lines": {<br />
"begin": 30,<br />
"end": 30<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$token->start\u001b[0m with type \u001b[37mnull|string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Injector/DisplayLinkURI.php",<br />
"lines": {<br />
"begin": 31,<br />
"end": 31<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$token->start\u001b[0m with type \u001b[37mnull|string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Injector/DisplayLinkURI.php",<br />
"lines": {<br />
"begin": 32,<br />
"end": 32<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::getElementsByTagName\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Lexer/DOMLex.php",<br />
"lines": {<br />
"begin": 85,<br />
"end": 85<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 7002,<br />
"check_name": "PhanParamTooManyInternal",<br />
"description": "ParamError PhanParamTooManyInternal Call with \u001b[95m3\u001b[0m arg(s) to \u001b[93m\\DOMDocumentType::__construct()\u001b[0m which only takes \u001b[95m0\u001b[0m arg(s). This is an ArgumentCountError for internal functions in PHP 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Lexer/PH5P.php",<br />
"lines": {<br />
"begin": 1766,<br />
"end": 1766<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mint|string\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Lexer/PH5P.php",<br />
"lines": {<br />
"begin": 2669,<br />
"end": 2669<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\end(array|object &$array)\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Lexer/PH5P.php",<br />
"lines": {<br />
"begin": 3240,<br />
"end": 3240<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$node\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Lexer/PH5P.php",<br />
"lines": {<br />
"begin": 4637,<br />
"end": 4637<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\HTMLPurifier_Printer::render\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/Printer/ConfigForm.php",<br />
"lines": {<br />
"begin": 270,<br />
"end": 270<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Traversable::key\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/PropertyListIterator.php",<br />
"lines": {<br />
"begin": 34,<br />
"end": 34<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\HTMLPurifier_Definition::getDefaultScheme\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/URI.php",<br />
"lines": {<br />
"begin": 86,<br />
"end": 86<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\HTMLPurifier_Definition::getDefaultScheme\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmlpurifier/HTMLPurifier/URI.php",<br />
"lines": {<br />
"begin": 306,<br />
"end": 306<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::getElementsByTagName\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/htmltotext/htmltotext.php",<br />
"lines": {<br />
"begin": 28,<br />
"end": 28<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\View::to_stdclass\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/mahara.php",<br />
"lines": {<br />
"begin": 2059,<br />
"end": 2059<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\SOAP_WAIT_ONE_WAY_CALLS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/mahara.php",<br />
"lines": {<br />
"begin": 2637,<br />
"end": 2637<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\webservice_soap_client::getOptions\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/mahara.php",<br />
"lines": {<br />
"begin": 2640,<br />
"end": 2640<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\webservice_soap_client::setSoapClient\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/mahara.php",<br />
"lines": {<br />
"begin": 2642,<br />
"end": 2642<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\SOAP_WAIT_ONE_WAY_CALLS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/mahara.php",<br />
"lines": {<br />
"begin": 2648,<br />
"end": 2648<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\webservice_soap_client::setWsdlCache\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/mahara.php",<br />
"lines": {<br />
"begin": 2651,<br />
"end": 2651<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 9003,<br />
"check_name": "PhanAbstractStaticMethodCallInStatic",<br />
"description": "StaticCallError PhanAbstractStaticMethodCallInStatic Potentially calling an abstract static method \u001b[93m\\Plugin::get_plugintype_name()\u001b[0m with static:: in \u001b[95mstatic::get_plugintype_name()\u001b[0m (the calling static method's class scope may be an abstract class)",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/mahara.php",<br />
"lines": {<br />
"begin": 2818,<br />
"end": 2818<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\IllegalArgumentException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/mahara.php",<br />
"lines": {<br />
"begin": 2980,<br />
"end": 2980<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/objectionable.php",<br />
"lines": {<br />
"begin": 75,<br />
"end": 75<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/objectionable.php",<br />
"lines": {<br />
"begin": 95,<br />
"end": 95<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/objectionable.php",<br />
"lines": {<br />
"begin": 103,<br />
"end": 103<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/objectionable.php",<br />
"lines": {<br />
"begin": 160,<br />
"end": 160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/objectionable.php",<br />
"lines": {<br />
"begin": 233,<br />
"end": 233<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/objectionable.php",<br />
"lines": {<br />
"begin": 250,<br />
"end": 250<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/objectionable.php",<br />
"lines": {<br />
"begin": 311,<br />
"end": 311<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/objectionable.php",<br />
"lines": {<br />
"begin": 390,<br />
"end": 390<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/objectionable.php",<br />
"lines": {<br />
"begin": 408,<br />
"end": 408<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\League\\OAuth2\\Client\\Provider\\Google\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpmailer/get_oauth_token.php",<br />
"lines": {<br />
"begin": 98,<br />
"end": 98<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Hayageek\\OAuth2\\Client\\Provider\\Yahoo\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpmailer/get_oauth_token.php",<br />
"lines": {<br />
"begin": 106,<br />
"end": 106<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Stevenmaguire\\OAuth2\\Client\\Provider\\Microsoft\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpmailer/get_oauth_token.php",<br />
"lines": {<br />
"begin": 109,<br />
"end": 109<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAuthorizationUrl\u001b[0m from undeclared class \u001b[32m\\League\\OAuth2\\Client\\Provider\\Google\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpmailer/get_oauth_token.php",<br />
"lines": {<br />
"begin": 125,<br />
"end": 125<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetState\u001b[0m from undeclared class \u001b[32m\\League\\OAuth2\\Client\\Provider\\Google\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpmailer/get_oauth_token.php",<br />
"lines": {<br />
"begin": 126,<br />
"end": 126<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAccessToken\u001b[0m from undeclared class \u001b[32m\\League\\OAuth2\\Client\\Provider\\Google\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpmailer/get_oauth_token.php",<br />
"lines": {<br />
"begin": 137,<br />
"end": 137<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\League\\OAuth2\\Client\\Grant\\RefreshToken\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpmailer/src/OAuth.php",<br />
"lines": {<br />
"begin": 103,<br />
"end": 103<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAccessToken\u001b[0m from undeclared class \u001b[32m\\League\\OAuth2\\Client\\Provider\\AbstractProvider\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpmailer/src/OAuth.php",<br />
"lines": {<br />
"begin": 113,<br />
"end": 113<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasExpired\u001b[0m from undeclared class \u001b[32m\\League\\OAuth2\\Client\\Token\\AccessToken\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpmailer/src/OAuth.php",<br />
"lines": {<br />
"begin": 127,<br />
"end": 127<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37mtrue\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpunit.php",<br />
"lines": {<br />
"begin": 120,<br />
"end": 120<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11003,<br />
"check_name": "PhanUndeclaredExtendedClass",<br />
"description": "UndefError PhanUndeclaredExtendedClass Class extends undeclared class \u001b[32m\\PHPUnit\\Framework\\TestCase\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpunit.php",<br />
"lines": {<br />
"begin": 140,<br />
"end": 140<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\MaharaUnitTextException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpunit.php",<br />
"lines": {<br />
"begin": 212,<br />
"end": 212<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\MaharaUnitTextException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpunit.php",<br />
"lines": {<br />
"begin": 241,<br />
"end": 241<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\MaharaUnitTextException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/phpunit.php",<br />
"lines": {<br />
"begin": 271,<br />
"end": 271<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd_element\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/pieforms/pieform/renderers/multicolumntable.php",<br />
"lines": {<br />
"begin": 42,<br />
"end": 42<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mset_form\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/pieforms/pieform/renderers/multicolumntable.php",<br />
"lines": {<br />
"begin": 43,<br />
"end": 43<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m1\u001b[0m (\u001b[36m$string\u001b[0m) is \u001b[95m$reply\u001b[0m of type \u001b[37mnull\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\substr()\u001b[0m takes \u001b[37mstring\u001b[0m\u001b[92m\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/redis/sentinel.php",<br />
"lines": {<br />
"begin": 160,<br />
"end": 160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$search\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/searchlib.php",<br />
"lines": {<br />
"begin": 143,<br />
"end": 143<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$search\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/searchlib.php",<br />
"lines": {<br />
"begin": 149,<br />
"end": 149<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$search\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/searchlib.php",<br />
"lines": {<br />
"begin": 636,<br />
"end": 636<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$search\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/searchlib.php",<br />
"lines": {<br />
"begin": 792,<br />
"end": 792<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$search\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/searchlib.php",<br />
"lines": {<br />
"begin": 793,<br />
"end": 793<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$views\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/sitemap.php",<br />
"lines": {<br />
"begin": 156,<br />
"end": 156<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ArtefactTest::fail\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ArtefactTest.php",<br />
"lines": {<br />
"begin": 55,<br />
"end": 55<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ArtefactTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ArtefactTest.php",<br />
"lines": {<br />
"begin": 60,<br />
"end": 60<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ArtefactTest::fail\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ArtefactTest.php",<br />
"lines": {<br />
"begin": 81,<br />
"end": 81<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ArtefactTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ArtefactTest.php",<br />
"lines": {<br />
"begin": 86,<br />
"end": 86<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ArtefactTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ArtefactTest.php",<br />
"lines": {<br />
"begin": 109,<br />
"end": 109<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ArtefactTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ArtefactTest.php",<br />
"lines": {<br />
"begin": 116,<br />
"end": 116<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibmaharaTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibmaharaTest.php",<br />
"lines": {<br />
"begin": 57,<br />
"end": 57<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibmaharaTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibmaharaTest.php",<br />
"lines": {<br />
"begin": 334,<br />
"end": 334<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibmaharaTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibmaharaTest.php",<br />
"lines": {<br />
"begin": 338,<br />
"end": 338<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibmaharaTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibmaharaTest.php",<br />
"lines": {<br />
"begin": 341,<br />
"end": 341<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 18,<br />
"end": 18<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 19,<br />
"end": 19<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 20,<br />
"end": 20<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 21,<br />
"end": 21<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 22,<br />
"end": 22<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 23,<br />
"end": 23<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 25,<br />
"end": 25<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 29,<br />
"end": 29<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 32,<br />
"end": 32<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 35,<br />
"end": 35<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertTrue\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 43,<br />
"end": 43<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertTrue\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 44,<br />
"end": 44<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 53,<br />
"end": 53<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertTrue\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 54,<br />
"end": 54<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertSame\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 55,<br />
"end": 55<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertTrue\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 56,<br />
"end": 56<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\LibwebTest::assertTrue\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/LibwebTest.php",<br />
"lines": {<br />
"begin": 57,<br />
"end": 57<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ThemeTest::AssertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ThemeTest.php",<br />
"lines": {<br />
"begin": 44,<br />
"end": 44<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ThemeTest::AssertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ThemeTest.php",<br />
"lines": {<br />
"begin": 49,<br />
"end": 49<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ThemeTest::AssertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ThemeTest.php",<br />
"lines": {<br />
"begin": 54,<br />
"end": 54<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ThemeTest::AssertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ThemeTest.php",<br />
"lines": {<br />
"begin": 64,<br />
"end": 64<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::assertNotNull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 63,<br />
"end": 63<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::assertGreaterThan\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 64,<br />
"end": 64<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::fail\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 71,<br />
"end": 71<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 75,<br />
"end": 75<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 76,<br />
"end": 76<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 86,<br />
"end": 86<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 103,<br />
"end": 103<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::fail\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 121,<br />
"end": 121<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::assertEquals\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 126,<br />
"end": 126<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::assertCount\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 131,<br />
"end": 131<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\ViewTest::assertCount\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/tests/phpunit/ViewTest.php",<br />
"lines": {<br />
"begin": 162,<br />
"end": 162<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetInstance\u001b[0m from undeclared class \u001b[32m\\SimpleSAML\\Configuration\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/upgrade.php",<br />
"lines": {<br />
"begin": 1484,<br />
"end": 1484<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_expected_account_preferences()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/user.php",<br />
"lines": {<br />
"begin": 254,<br />
"end": 254<br />
}<br />
},<br />
"suggestion": "Did you mean \\expected_account_preferences()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$profile\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/user.php",<br />
"lines": {<br />
"begin": 2696,<br />
"end": 2696<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd_to_queue_access\u001b[0m on non-class type \u001b[37mtrue\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 1494,<br />
"end": 1494<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_get_allowed_blocktype_categories()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 1989,<br />
"end": 1989<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_can_remove_viewtype()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 4027,<br />
"end": 4027<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$results\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 4663,<br />
"end": 4663<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$result\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 5221,<br />
"end": 5221<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$result\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 5227,<br />
"end": 5227<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$result\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 5338,<br />
"end": 5338<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$c\u001b[0m with type \u001b[37marray{coverimage:mixed,coverimageurl:,coverimagedescription?:mixed,url:string,fullurl:string}|non-empty-array<mixed,mixed>|non-empty-array<string,null>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 6160,<br />
"end": 6160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$c\u001b[0m with type \u001b[37marray{coverimage:mixed,coverimageurl:string,coverimagedescription?:mixed,url:string,fullurl:string}|non-empty-array<mixed,mixed>|non-empty-array<mixed,null>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 6160,<br />
"end": 6160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$c\u001b[0m with type \u001b[37marray{coverimage:mixed,coverimageurl:string,coverimagedescription?:mixed,url:string,fullurl:string}|non-empty-array<mixed,mixed>|non-empty-array<string,null>\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 6160,<br />
"end": 6160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$results\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 6464,<br />
"end": 6464<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$results\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 6497,<br />
"end": 6497<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$results\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 6499,<br />
"end": 6499<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$results\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 6505,<br />
"end": 6505<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$results\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 6516,<br />
"end": 6516<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_display_author()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/view.php",<br />
"lines": {<br />
"begin": 6612,<br />
"end": 6612<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93massign\u001b[0m from undeclared class \u001b[32m\\Smarty\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 34,<br />
"end": 34<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_sideblocks_update()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 201,<br />
"end": 201<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_header_top_content()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 758,<br />
"end": 758<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mis_logged_in\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 782,<br />
"end": 782<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mis_logged_in\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 783,<br />
"end": 783<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mis_logged_in\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 791,<br />
"end": 791<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 794,<br />
"end": 794<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mis_institutional_admin\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 794,<br />
"end": 794<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mis_institutional_staff\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 794,<br />
"end": 794<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mis_institutional_supportadmin\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 794,<br />
"end": 794<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 830,<br />
"end": 830<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 895,<br />
"end": 895<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 899,<br />
"end": 899<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_main_nav_update()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 3144,<br />
"end": 3144<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_right_nav_update()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 3260,<br />
"end": 3260<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\HTMLPurifier_Definition::addFilter\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/web.php",<br />
"lines": {<br />
"begin": 3980,<br />
"end": 3980<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mxmlOutput\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/xmldb/classes/XMLDBFile.class.php",<br />
"lines": {<br />
"begin": 110,<br />
"end": 110<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mgetNext\u001b[0m on non-class type \u001b[37m?non-empty-mixed\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/xmldb/classes/XMLDBObject.class.php",<br />
"lines": {<br />
"begin": 299,<br />
"end": 299<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mgetNext\u001b[0m on non-class type \u001b[37m?non-empty-mixed\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/xmldb/classes/XMLDBObject.class.php",<br />
"lines": {<br />
"begin": 300,<br />
"end": 300<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\XMLDBgenerator::getTableExtraSQL\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/lib/xmldb/classes/generators/XMLDBGenerator.class.php",<br />
"lines": {<br />
"begin": 233,<br />
"end": 233<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/framework/lib.php",<br />
"lines": {<br />
"begin": 1050,<br />
"end": 1050<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/framework/lib.php",<br />
"lines": {<br />
"begin": 1073,<br />
"end": 1073<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget\u001b[0m on non-class type \u001b[37m?''|?'0'|?0|?0.0|?array{}|?false|null\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/framework/matrix.php",<br />
"lines": {<br />
"begin": 235,<br />
"end": 235<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1000,<br />
"check_name": "PhanAccessPropertyProtected",<br />
"description": "AccessError PhanAccessPropertyProtected Cannot access protected property \u001b[36m\\ModuleLtiSubmission->lti_error\u001b[0m defined at \u001b[96mhtdocs/module/lti/lib.php\u001b[0m:\u001b[37m824\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti/lib.php",<br />
"lines": {<br />
"begin": 645,<br />
"end": 645<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1000,<br />
"check_name": "PhanAccessPropertyProtected",<br />
"description": "AccessError PhanAccessPropertyProtected Cannot access protected property \u001b[36m\\ModuleLtiSubmission->timegraded\u001b[0m defined at \u001b[96mhtdocs/module/lti/lib.php\u001b[0m:\u001b[37m822\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti/submission.php",<br />
"lines": {<br />
"begin": 73,<br />
"end": 73<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MCRYPT_MODE_ECB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Base.php",<br />
"lines": {<br />
"begin": 1846,<br />
"end": 1846<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MCRYPT_MODE_CBC\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Base.php",<br />
"lines": {<br />
"begin": 1847,<br />
"end": 1847<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MCRYPT_MODE_CFB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Base.php",<br />
"lines": {<br />
"begin": 1849,<br />
"end": 1849<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MCRYPT_MODE_NOFB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Base.php",<br />
"lines": {<br />
"begin": 1850,<br />
"end": 1850<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MCRYPT_MODE_STREAM\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Base.php",<br />
"lines": {<br />
"begin": 1851,<br />
"end": 1851<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MCRYPT_MODE_ECB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Base.php",<br />
"lines": {<br />
"begin": 1861,<br />
"end": 1861<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 559,<br />
"end": 559<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mcopy\u001b[0m on non-class type \u001b[37m'629a292a367cd507'|'bb67ae8584caa73b'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 725,<br />
"end": 725<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mcopy\u001b[0m on non-class type \u001b[37m'3c6ef372fe94f82b'|'9159015a3070dd17'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 726,<br />
"end": 726<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mcopy\u001b[0m on non-class type \u001b[37m'152fecd8f70e5939'|'a54ff53a5f1d36f1'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 727,<br />
"end": 727<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mcopy\u001b[0m on non-class type \u001b[37m'510e527fade682d1'|'67332667ffc00b31'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 728,<br />
"end": 728<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mcopy\u001b[0m on non-class type \u001b[37m'8eb44a8768581511'|'9b05688c2b3e6c1f'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 729,<br />
"end": 729<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mcopy\u001b[0m on non-class type \u001b[37m'1f83d9abfb41bd6b'|'db0c2e0d64f98fa7'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 730,<br />
"end": 730<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mcopy\u001b[0m on non-class type \u001b[37m'47b5481dbefa4fa4'|'5be0cd19137e2179'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 731,<br />
"end": 731<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd\u001b[0m on non-class type \u001b[37m'629a292a367cd507'|'bb67ae8584caa73b'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 781,<br />
"end": 781<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd\u001b[0m on non-class type \u001b[37m'3c6ef372fe94f82b'|'9159015a3070dd17'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 782,<br />
"end": 782<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd\u001b[0m on non-class type \u001b[37m'152fecd8f70e5939'|'a54ff53a5f1d36f1'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 783,<br />
"end": 783<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd\u001b[0m on non-class type \u001b[37m'510e527fade682d1'|'67332667ffc00b31'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 784,<br />
"end": 784<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd\u001b[0m on non-class type \u001b[37m'8eb44a8768581511'|'9b05688c2b3e6c1f'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 785,<br />
"end": 785<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd\u001b[0m on non-class type \u001b[37m'1f83d9abfb41bd6b'|'db0c2e0d64f98fa7'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 786,<br />
"end": 786<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd\u001b[0m on non-class type \u001b[37m'47b5481dbefa4fa4'|'5be0cd19137e2179'\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Hash.php",<br />
"lines": {<br />
"begin": 787,<br />
"end": 787<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10169,<br />
"check_name": "PhanPossiblyInfiniteLoop",<br />
"description": "TypeError PhanPossiblyInfiniteLoop The loop condition \u001b[95m(openssl_error_string() !== false)\u001b[0m does not seem to change within the loop and nothing seems to exit the loop",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 573,<br />
"end": 573<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 588,<br />
"end": 588<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 597,<br />
"end": 597<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 599,<br />
"end": 599<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 605,<br />
"end": 605<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mdivide\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 637,<br />
"end": 637<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msubtract\u001b[0m from undeclared class \u001b[32m\\phpseclib\\Math\\Math_BigInteger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 674,<br />
"end": 674<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mmodInverse\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 691,<br />
"end": 691<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mtoBytes\u001b[0m from undeclared class \u001b[32m\\phpseclib\\Math\\Math_BigInteger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 731,<br />
"end": 731<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mtoBytes\u001b[0m from undeclared class \u001b[32m\\phpseclib\\Math\\Math_BigInteger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 732,<br />
"end": 732<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mtoBytes\u001b[0m from undeclared class \u001b[32m\\phpseclib\\Math\\Math_BigInteger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 897,<br />
"end": 897<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1354,<br />
"end": 1354<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1359,<br />
"end": 1359<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1366,<br />
"end": 1366<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1415,<br />
"end": 1415<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1417,<br />
"end": 1417<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1444,<br />
"end": 1444<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1449,<br />
"end": 1449<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1454,<br />
"end": 1454<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1465,<br />
"end": 1465<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1487,<br />
"end": 1487<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1492,<br />
"end": 1492<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1522,<br />
"end": 1522<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1529,<br />
"end": 1529<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93msubtract\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1535,<br />
"end": 1535<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mmodInverse\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1536,<br />
"end": 1536<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93msubtract\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1537,<br />
"end": 1537<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mmodInverse\u001b[0m on non-class type \u001b[37mnull\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/RSA.php",<br />
"lines": {<br />
"begin": 1538,<br />
"end": 1538<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\MCRYPT_DEV_URANDOM\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Crypt/Random.php",<br />
"lines": {<br />
"begin": 111,<br />
"end": 111<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/File/ASN1.php",<br />
"lines": {<br />
"begin": 271,<br />
"end": 271<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/File/X509.php",<br />
"lines": {<br />
"begin": 2888,<br />
"end": 2888<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 9000,<br />
"check_name": "PhanStaticCallToNonStatic",<br />
"description": "StaticCallError PhanStaticCallToNonStatic Static call to non-static method \u001b[93m\\phpseclib\\File\\X509::_dnsName\u001b[0m defined at \u001b[96mhtdocs/module/lti_advantage/lib/phpseclib/phpseclib/File/X509.php\u001b[0m:\u001b[37m4805\u001b[0m. This is an Error in PHP 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/File/X509.php",<br />
"lines": {<br />
"begin": 3724,<br />
"end": 3724<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11008,<br />
"check_name": "PhanUndeclaredClassInstanceof",<br />
"description": "UndefError PhanUndeclaredClassInstanceof Checking instanceof against undeclared class \u001b[32m\\GMP\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 338,<br />
"end": 338<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93m_mod2\u001b[0m on non-class type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 1918,<br />
"end": 1918<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 2480,<br />
"end": 2480<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mequals\u001b[0m on non-class type \u001b[37mnull=\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 2482,<br />
"end": 2482<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93madd\u001b[0m on non-class type \u001b[37mnull=\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 2486,<br />
"end": 2486<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mcompare\u001b[0m on non-class type \u001b[37mnull=\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 2486,<br />
"end": 2486<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 2523,<br />
"end": 2523<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 2650,<br />
"end": 2650<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$result->bitmask\u001b[0m with type \u001b[37mfalse\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 3577,<br />
"end": 3577<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$result->bitmask\u001b[0m with type \u001b[37mfalse\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 3585,<br />
"end": 3585<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$result->bitmask\u001b[0m with type \u001b[37mfalse\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 3586,<br />
"end": 3586<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$result->bitmask\u001b[0m with type \u001b[37mfalse\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 3601,<br />
"end": 3601<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->bitmask\u001b[0m with type \u001b[37mfalse\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 3602,<br />
"end": 3602<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->bitmask\u001b[0m with type \u001b[37mfalse\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Math/BigInteger.php",<br />
"lines": {<br />
"begin": 3606,<br />
"end": 3606<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_STDIN_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SCP.php",<br />
"lines": {<br />
"begin": 283,<br />
"end": 283<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_STDOUT_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SCP.php",<br />
"lines": {<br />
"begin": 306,<br />
"end": 306<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SCP.php",<br />
"lines": {<br />
"begin": 310,<br />
"end": 310<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_STDERR_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SCP.php",<br />
"lines": {<br />
"begin": 312,<br />
"end": 312<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_EXITSTATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SCP.php",<br />
"lines": {<br />
"begin": 314,<br />
"end": 314<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_EXIT_CONFIRMATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SCP.php",<br />
"lines": {<br />
"begin": 315,<br />
"end": 315<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 9000,<br />
"check_name": "PhanStaticCallToNonStatic",<br />
"description": "StaticCallError PhanStaticCallToNonStatic Static call to non-static method \u001b[93m\\phpseclib\\Net\\SFTP::login\u001b[0m defined at \u001b[96mhtdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php\u001b[0m:\u001b[37m423\u001b[0m. This is an Error in PHP 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 425,<br />
"end": 425<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 433,<br />
"end": 433<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 445,<br />
"end": 445<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 454,<br />
"end": 454<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 466,<br />
"end": 466<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 478,<br />
"end": 478<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 490,<br />
"end": 490<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 498,<br />
"end": 498<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_INIT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 500,<br />
"end": 500<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_VERSION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 505,<br />
"end": 505<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 513,<br />
"end": 513<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 519,<br />
"end": 519<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 524,<br />
"end": 524<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 657,<br />
"end": 657<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 663,<br />
"end": 663<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_REALPATH\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 707,<br />
"end": 707<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_NAME\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 713,<br />
"end": 713<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 721,<br />
"end": 721<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 723,<br />
"end": 723<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPENDIR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 789,<br />
"end": 789<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_HANDLE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 796,<br />
"end": 796<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 799,<br />
"end": 799<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 895,<br />
"end": 895<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPENDIR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 931,<br />
"end": 931<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_HANDLE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 937,<br />
"end": 937<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 943,<br />
"end": 943<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_READDIR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 959,<br />
"end": 959<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_NAME\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 965,<br />
"end": 965<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 969,<br />
"end": 969<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 974,<br />
"end": 974<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 979,<br />
"end": 979<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 990,<br />
"end": 990<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1004,<br />
"end": 1004<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1008,<br />
"end": 1008<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS_EOF\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1009,<br />
"end": 1009<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1054,<br />
"end": 1054<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1062,<br />
"end": 1062<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STAT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1281,<br />
"end": 1281<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1287,<br />
"end": 1287<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1296,<br />
"end": 1296<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_REGULAR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1297,<br />
"end": 1297<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1300,<br />
"end": 1300<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_LSTAT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1338,<br />
"end": 1338<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1344,<br />
"end": 1344<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STAT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1351,<br />
"end": 1351<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_SYMLINK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1354,<br />
"end": 1354<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1361,<br />
"end": 1361<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_REGULAR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1362,<br />
"end": 1362<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1365,<br />
"end": 1365<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTRS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1394,<br />
"end": 1394<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1396,<br />
"end": 1396<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTR_SIZE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1415,<br />
"end": 1415<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN_CREATE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1449,<br />
"end": 1449<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN_EXCL\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1449,<br />
"end": 1449<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN_WRITE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1449,<br />
"end": 1449<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTR_ACCESSTIME\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1450,<br />
"end": 1450<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1452,<br />
"end": 1452<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_HANDLE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1458,<br />
"end": 1458<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1460,<br />
"end": 1460<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTR_UIDGID\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1486,<br />
"end": 1486<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTR_UIDGID\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1504,<br />
"end": 1504<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTR_PERMISSIONS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1529,<br />
"end": 1529<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STAT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1542,<br />
"end": 1542<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTRS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1548,<br />
"end": 1548<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1551,<br />
"end": 1551<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_SETSTAT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1591,<br />
"end": 1591<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1603,<br />
"end": 1603<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1611,<br />
"end": 1611<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS_OK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1612,<br />
"end": 1612<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1656,<br />
"end": 1656<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_SETSTAT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1661,<br />
"end": 1661<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_SETSTAT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1676,<br />
"end": 1676<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_READLINK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1707,<br />
"end": 1707<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_NAME\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1713,<br />
"end": 1713<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1715,<br />
"end": 1715<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1726,<br />
"end": 1726<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1735,<br />
"end": 1735<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_SYMLINK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1759,<br />
"end": 1759<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1764,<br />
"end": 1764<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1772,<br />
"end": 1772<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS_OK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1773,<br />
"end": 1773<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_MKDIR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1823,<br />
"end": 1823<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1828,<br />
"end": 1828<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1836,<br />
"end": 1836<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS_OK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1837,<br />
"end": 1837<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_RMDIR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1867,<br />
"end": 1867<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1872,<br />
"end": 1872<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1880,<br />
"end": 1880<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS_OK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1881,<br />
"end": 1881<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN_CREATE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1954,<br />
"end": 1954<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN_WRITE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1954,<br />
"end": 1954<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN_TRUNCATE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1967,<br />
"end": 1967<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1971,<br />
"end": 1971<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_HANDLE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1977,<br />
"end": 1977<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 1980,<br />
"end": 1980<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_WRITE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2056,<br />
"end": 2056<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2115,<br />
"end": 2115<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2123,<br />
"end": 2123<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS_OK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2124,<br />
"end": 2124<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2142,<br />
"end": 2142<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2149,<br />
"end": 2149<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2157,<br />
"end": 2157<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS_OK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2158,<br />
"end": 2158<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN_READ\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2194,<br />
"end": 2194<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2195,<br />
"end": 2195<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_HANDLE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2201,<br />
"end": 2201<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2204,<br />
"end": 2204<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_READ\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2241,<br />
"end": 2241<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2273,<br />
"end": 2273<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2283,<br />
"end": 2283<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_REMOVE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2356,<br />
"end": 2356<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2361,<br />
"end": 2361<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2370,<br />
"end": 2370<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS_OK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2371,<br />
"end": 2371<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2418,<br />
"end": 2418<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_REMOVE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2423,<br />
"end": 2423<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_RMDIR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2439,<br />
"end": 2439<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2492,<br />
"end": 2492<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_REGULAR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2508,<br />
"end": 2508<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_SYMLINK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2524,<br />
"end": 2524<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN_READ\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2538,<br />
"end": 2538<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2539,<br />
"end": 2539<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_HANDLE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2545,<br />
"end": 2545<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2547,<br />
"end": 2547<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN_WRITE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2566,<br />
"end": 2566<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2567,<br />
"end": 2567<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_HANDLE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2573,<br />
"end": 2573<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2575,<br />
"end": 2575<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_BLOCK_DEVICE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2684,<br />
"end": 2684<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_CHAR_DEVICE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2686,<br />
"end": 2686<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2688,<br />
"end": 2688<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_FIFO\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2690,<br />
"end": 2690<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_REGULAR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2692,<br />
"end": 2692<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_SYMLINK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2694,<br />
"end": 2694<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_RENAME\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2784,<br />
"end": 2784<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2789,<br />
"end": 2789<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2798,<br />
"end": 2798<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_STATUS_OK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2799,<br />
"end": 2799<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2829,<br />
"end": 2829<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTR_SIZE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2833,<br />
"end": 2833<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTR_UIDGID\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2842,<br />
"end": 2842<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTR_PERMISSIONS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2849,<br />
"end": 2849<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTR_ACCESSTIME\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2863,<br />
"end": 2863<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_ATTR_EXTENDED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2870,<br />
"end": 2870<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2875,<br />
"end": 2875<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2881,<br />
"end": 2881<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2887,<br />
"end": 2887<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2912,<br />
"end": 2912<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_REGULAR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2914,<br />
"end": 2914<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_SYMLINK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2916,<br />
"end": 2916<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_FIFO\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2920,<br />
"end": 2920<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_CHAR_DEVICE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2922,<br />
"end": 2922<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_BLOCK_DEVICE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2924,<br />
"end": 2924<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_SOCKET\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2926,<br />
"end": 2926<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_SPECIAL\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2930,<br />
"end": 2930<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_UNKNOWN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2932,<br />
"end": 2932<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_REGULAR\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2958,<br />
"end": 2958<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_DIRECTORY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2960,<br />
"end": 2960<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_SYMLINK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2962,<br />
"end": 2962<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_TYPE_SPECIAL\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 2964,<br />
"end": 2964<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 3070,<br />
"end": 3070<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP.php",<br />
"lines": {<br />
"begin": 3098,<br />
"end": 3098<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP/Stream.php",<br />
"lines": {<br />
"begin": 157,<br />
"end": 157<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP/Stream.php",<br />
"lines": {<br />
"begin": 234,<br />
"end": 234<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP/Stream.php",<br />
"lines": {<br />
"begin": 237,<br />
"end": 237<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP/Stream.php",<br />
"lines": {<br />
"begin": 321,<br />
"end": 321<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SFTP_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SFTP/Stream.php",<br />
"lines": {<br />
"begin": 354,<br />
"end": 354<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_PUBLIC_KEY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 569,<br />
"end": 569<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 616,<br />
"end": 616<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 628,<br />
"end": 628<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_SESSION_KEY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 673,<br />
"end": 673<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 705,<br />
"end": 705<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_USER\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 736,<br />
"end": 736<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 748,<br />
"end": 748<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 751,<br />
"end": 751<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_AUTH_PASSWORD\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 756,<br />
"end": 756<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_AUTH_PASSWORD\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 765,<br />
"end": 765<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 774,<br />
"end": 774<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 777,<br />
"end": 777<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_EXEC_CMD\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 825,<br />
"end": 825<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_EXITSTATUS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 843,<br />
"end": 843<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_EXIT_CONFIRMATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 846,<br />
"end": 846<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_REQUEST_PTY\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 872,<br />
"end": 872<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_SMSG_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 884,<br />
"end": 884<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_EXEC_SHELL\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 889,<br />
"end": 889<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_STDIN_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 979,<br />
"end": 979<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_CMSG_EOF\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 1056,<br />
"end": 1056<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_MSG_DISCONNECT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 1071,<br />
"end": 1071<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH1_LOGGING\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 1592,<br />
"end": 1592<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11053,<br />
"check_name": "PhanUndeclaredConstantOfClass",<br />
"description": "UndefError PhanUndeclaredConstantOfClass Reference to undeclared class constant \u001b[91m\\phpseclib\\Net\\SSH1::LOG_MAX_SIZE\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 1603,<br />
"end": 1603<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11053,<br />
"check_name": "PhanUndeclaredConstantOfClass",<br />
"description": "UndefError PhanUndeclaredConstantOfClass Reference to undeclared class constant \u001b[91m\\phpseclib\\Net\\SSH1::LOG_MAX_SIZE\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH1.php",<br />
"lines": {<br />
"begin": 1637,<br />
"end": 1637<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1258,<br />
"end": 1258<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_KEXINIT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1278,<br />
"end": 1278<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_KEXINIT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1399,<br />
"end": 1399<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_KEXINIT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1437,<br />
"end": 1437<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1510,<br />
"end": 1510<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1524,<br />
"end": 1524<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1531,<br />
"end": 1531<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1538,<br />
"end": 1538<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_KEXDH_GEX_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1560,<br />
"end": 1560<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1574,<br />
"end": 1574<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_KEXDH_GEX_GROUP\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1575,<br />
"end": 1575<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1584,<br />
"end": 1584<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1591,<br />
"end": 1591<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1685,<br />
"end": 1685<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1779,<br />
"end": 1779<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1799,<br />
"end": 1799<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_NEWKEYS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1805,<br />
"end": 1805<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1823,<br />
"end": 1823<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_NEWKEYS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1825,<br />
"end": 1825<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1909,<br />
"end": 1909<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1939,<br />
"end": 1939<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1987,<br />
"end": 1987<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 1994,<br />
"end": 1994<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_SERVICE_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2189,<br />
"end": 2189<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2215,<br />
"end": 2215<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_SERVICE_ACCEPT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2217,<br />
"end": 2217<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2245,<br />
"end": 2245<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2268,<br />
"end": 2268<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2271,<br />
"end": 2271<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2282,<br />
"end": 2282<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2300,<br />
"end": 2300<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2327,<br />
"end": 2327<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2330,<br />
"end": 2330<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2335,<br />
"end": 2335<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2336,<br />
"end": 2336<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2337,<br />
"end": 2337<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2338,<br />
"end": 2338<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2344,<br />
"end": 2344<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2349,<br />
"end": 2349<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2360,<br />
"end": 2360<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2382,<br />
"end": 2382<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2427,<br />
"end": 2427<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_INFO_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2430,<br />
"end": 2430<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2434,<br />
"end": 2434<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2439,<br />
"end": 2439<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2444,<br />
"end": 2444<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2449,<br />
"end": 2449<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2466,<br />
"end": 2466<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_INFO_RESPONSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2496,<br />
"end": 2496<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2516,<br />
"end": 2516<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2518,<br />
"end": 2518<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mtoBytes\u001b[0m on non-class type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2565,<br />
"end": 2565<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mtoBytes\u001b[0m on non-class type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2566,<br />
"end": 2566<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2595,<br />
"end": 2595<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2620,<br />
"end": 2620<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2623,<br />
"end": 2623<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2627,<br />
"end": 2627<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2628,<br />
"end": 2628<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_PK_OK\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2630,<br />
"end": 2630<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2657,<br />
"end": 2657<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2660,<br />
"end": 2660<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2663,<br />
"end": 2663<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2732,<br />
"end": 2732<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2744,<br />
"end": 2744<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_TTY_OP_END\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2752,<br />
"end": 2752<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2755,<br />
"end": 2755<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2787,<br />
"end": 2787<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2789,<br />
"end": 2789<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_BY_APPLICATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2792,<br />
"end": 2792<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2808,<br />
"end": 2808<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2820,<br />
"end": 2820<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2827,<br />
"end": 2827<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2873,<br />
"end": 2873<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2885,<br />
"end": 2885<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_TTY_OP_END\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2892,<br />
"end": 2892<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2895,<br />
"end": 2895<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2927,<br />
"end": 2927<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2929,<br />
"end": 2929<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_BY_APPLICATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2933,<br />
"end": 2933<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2938,<br />
"end": 2938<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2948,<br />
"end": 2948<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2955,<br />
"end": 2955<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 2992,<br />
"end": 2992<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3096,<br />
"end": 3096<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3108,<br />
"end": 3108<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3117,<br />
"end": 3117<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3129,<br />
"end": 3129<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3137,<br />
"end": 3137<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_BY_APPLICATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3190,<br />
"end": 3190<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3252,<br />
"end": 3252<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3264,<br />
"end": 3264<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_CONNECTION_LOST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3283,<br />
"end": 3283<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3347,<br />
"end": 3347<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3357,<br />
"end": 3357<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_DISCONNECT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3426,<br />
"end": 3426<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3431,<br />
"end": 3431<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3432,<br />
"end": 3432<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_IGNORE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3435,<br />
"end": 3435<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_DEBUG\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3438,<br />
"end": 3438<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3443,<br />
"end": 3443<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3444,<br />
"end": 3444<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_UNIMPLEMENTED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3447,<br />
"end": 3447<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_KEXINIT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3449,<br />
"end": 3449<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_USERAUTH_BANNER\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3461,<br />
"end": 3461<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3466,<br />
"end": 3466<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3474,<br />
"end": 3474<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_EXTENDED_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3475,<br />
"end": 3475<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3476,<br />
"end": 3476<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3477,<br />
"end": 3477<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_EOF\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3478,<br />
"end": 3478<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_GLOBAL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3485,<br />
"end": 3485<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3489,<br />
"end": 3489<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3490,<br />
"end": 3490<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_REQUEST_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3492,<br />
"end": 3492<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_BY_APPLICATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3493,<br />
"end": 3493<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3498,<br />
"end": 3498<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3503,<br />
"end": 3503<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3508,<br />
"end": 3508<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3518,<br />
"end": 3518<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3519,<br />
"end": 3519<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3529,<br />
"end": 3529<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3537,<br />
"end": 3537<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_REQUEST_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3546,<br />
"end": 3546<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_OPEN_ADMINISTRATIVELY_PROHIBITED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3548,<br />
"end": 3548<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_BY_APPLICATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3556,<br />
"end": 3556<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3561,<br />
"end": 3561<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3566,<br />
"end": 3566<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3567,<br />
"end": 3567<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3714,<br />
"end": 3714<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3719,<br />
"end": 3719<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3720,<br />
"end": 3720<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3722,<br />
"end": 3722<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_WINDOW_ADJUST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3733,<br />
"end": 3733<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_EXTENDED_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3741,<br />
"end": 3741<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3751,<br />
"end": 3751<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3757,<br />
"end": 3757<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3766,<br />
"end": 3766<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3767,<br />
"end": 3767<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3773,<br />
"end": 3773<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3781,<br />
"end": 3781<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3782,<br />
"end": 3782<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3787,<br />
"end": 3787<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_EOF\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3792,<br />
"end": 3792<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3793,<br />
"end": 3793<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_EOF\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3795,<br />
"end": 3795<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3802,<br />
"end": 3802<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3817,<br />
"end": 3817<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN_CONFIRMATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3819,<br />
"end": 3819<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3823,<br />
"end": 3823<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3828,<br />
"end": 3828<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_BY_APPLICATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3845,<br />
"end": 3845<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3848,<br />
"end": 3848<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_SUCCESS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3850,<br />
"end": 3850<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_FAILURE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3852,<br />
"end": 3852<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_BY_APPLICATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3856,<br />
"end": 3856<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3858,<br />
"end": 3858<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3859,<br />
"end": 3859<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3866,<br />
"end": 3866<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3879,<br />
"end": 3879<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m_forward_data\u001b[0m from undeclared class \u001b[32m\\phpseclib\\Net\\System_SSH_Agent\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3883,<br />
"end": 3883<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3898,<br />
"end": 3898<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_EOF\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3904,<br />
"end": 3904<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3905,<br />
"end": 3905<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3908,<br />
"end": 3908<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_EOF\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3912,<br />
"end": 3912<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_BY_APPLICATION\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3916,<br />
"end": 3916<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_LOGGING\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 3997,<br />
"end": 3997<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11053,<br />
"check_name": "PhanUndeclaredConstantOfClass",<br />
"description": "UndefError PhanUndeclaredConstantOfClass Reference to undeclared class constant \u001b[91m\\phpseclib\\Net\\SSH2::LOG_REALTIME_FILENAME\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4035,<br />
"end": 4035<br />
}<br />
},<br />
"suggestion": "Did you mean \\phpseclib\\Net\\SSH2::LOG_REALTIME_FILE"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_DATA\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4090,<br />
"end": 4090<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_EOF\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4120,<br />
"end": 4120<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4123,<br />
"end": 4123<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4126,<br />
"end": 4126<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_CLOSE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4138,<br />
"end": 4138<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_DISCONNECT\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4156,<br />
"end": 4156<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m_on_channel_open\u001b[0m from undeclared class \u001b[32m\\phpseclib\\Net\\System_SSH_Agent\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4294,<br />
"end": 4294<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10018,<br />
"check_name": "PhanTypeNonVarPassByRef",<br />
"description": "TypeError PhanTypeNonVarPassByRef Only variables can be passed by reference at argument \u001b[95m1\u001b[0m of \u001b[93m\\extract(array &$array, int $flags = 0, string $prefix = '')\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4827,<br />
"end": 4827<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4872,<br />
"end": 4872<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4884,<br />
"end": 4884<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4904,<br />
"end": 4904<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 4968,<br />
"end": 4968<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 5002,<br />
"end": 5002<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/Net/SSH2.php",<br />
"lines": {<br />
"begin": 5007,<br />
"end": 5007<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m_get_open_channel\u001b[0m from undeclared class \u001b[32m\\phpseclib\\System\\SSH\\Net_SSH2\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/System/SSH/Agent.php",<br />
"lines": {<br />
"begin": 257,<br />
"end": 257<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/System/SSH/Agent.php",<br />
"lines": {<br />
"begin": 264,<br />
"end": 264<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_REQUEST\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/System/SSH/Agent.php",<br />
"lines": {<br />
"begin": 271,<br />
"end": 271<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m_send_binary_packet\u001b[0m from undeclared class \u001b[32m\\phpseclib\\System\\SSH\\Net_SSH2\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/System/SSH/Agent.php",<br />
"lines": {<br />
"begin": 273,<br />
"end": 273<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m_get_channel_packet\u001b[0m from undeclared class \u001b[32m\\phpseclib\\System\\SSH\\Net_SSH2\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/System/SSH/Agent.php",<br />
"lines": {<br />
"begin": 277,<br />
"end": 277<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\NET_SSH2_MSG_CHANNEL_OPEN\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/lti_advantage/lib/phpseclib/phpseclib/System/SSH/Agent.php",<br />
"lines": {<br />
"begin": 282,<br />
"end": 282<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mgetCode\u001b[0m on non-class type \u001b[37m?mixed\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/mobileapi/download.php",<br />
"lines": {<br />
"begin": 74,<br />
"end": 74<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mgetMessage\u001b[0m on non-class type \u001b[37m?mixed\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/mobileapi/download.php",<br />
"lines": {<br />
"begin": 74,<br />
"end": 74<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_webservice_info()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/mobileapi/json/info.php",<br />
"lines": {<br />
"begin": 94,<br />
"end": 94<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1001,<br />
"check_name": "PhanAccessPropertyPrivate",<br />
"description": "AccessError PhanAccessPropertyPrivate Cannot access private property \u001b[36m\\Composer\\Autoload\\ClassLoader->prefixLengthsPsr4\u001b[0m defined at \u001b[96mhtdocs/lib/dwoo/vendor/composer/ClassLoader.php\u001b[0m:\u001b[37m46\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/submissions/vendor/composer/autoload_static.php",<br />
"lines": {<br />
"begin": 26,<br />
"end": 26<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 1001,<br />
"check_name": "PhanAccessPropertyPrivate",<br />
"description": "AccessError PhanAccessPropertyPrivate Cannot access private property \u001b[36m\\Composer\\Autoload\\ClassLoader->prefixDirsPsr4\u001b[0m defined at \u001b[96mhtdocs/lib/dwoo/vendor/composer/ClassLoader.php\u001b[0m:\u001b[37m47\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/module/submissions/vendor/composer/autoload_static.php",<br />
"lines": {<br />
"begin": 27,<br />
"end": 27<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_register_create()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/register.php",<br />
"lines": {<br />
"begin": 136,<br />
"end": 136<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\local_post_register()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/register.php",<br />
"lines": {<br />
"begin": 200,<br />
"end": 200<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$server->data->error\u001b[0m with type \u001b[37mfalse|string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 164,<br />
"end": 164<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$server->data->error\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 164,<br />
"end": 164<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mindices\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 740,<br />
"end": 740<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mbulk\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 819,<br />
"end": 819<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mbulk\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 848,<br />
"end": 848<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdelete\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 876,<br />
"end": 876<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mindex\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 899,<br />
"end": 899<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mindices\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 906,<br />
"end": 906<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mgetMapping\u001b[0m on non-class type \u001b[37m?object=\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 948,<br />
"end": 948<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Elasticsearch\\ClientBuilder::allowBadJSONSerialization\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 1183,<br />
"end": 1183<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m2\u001b[0m (\u001b[36m$offset\u001b[0m) is \u001b[95m$offset\u001b[0m of type \u001b[37mnull\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\array_slice()\u001b[0m takes \u001b[37mint\u001b[0m\u001b[92m\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 1415,<br />
"end": 1415<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mis_logged_in\u001b[0m from undeclared class \u001b[32m\\unknown\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 1609,<br />
"end": 1609<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\unknown\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 1662,<br />
"end": 1662<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\unknown\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 1696,<br />
"end": 1696<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\unknown\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 1704,<br />
"end": 1704<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\unknown\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 1718,<br />
"end": 1718<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\unknown\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 1729,<br />
"end": 1729<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\unknown\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 1750,<br />
"end": 1750<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msearch\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 2077,<br />
"end": 2077<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget\u001b[0m from undeclared class \u001b[32m\\unknown\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 2135,<br />
"end": 2135<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msearch\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 2185,<br />
"end": 2185<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mindices\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 2360,<br />
"end": 2360<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mindices\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 2361,<br />
"end": 2361<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mindices\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/lib.php",<br />
"lines": {<br />
"begin": 2403,<br />
"end": 2403<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msearch\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/type/ElasticsearchType_artefact.php",<br />
"lines": {<br />
"begin": 563,<br />
"end": 563<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msearch\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/type/ElasticsearchType_event_log.php",<br />
"lines": {<br />
"begin": 215,<br />
"end": 215<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msearch\u001b[0m from undeclared class \u001b[32m\\Elastica\\Client\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch/type/ElasticsearchType_event_log.php",<br />
"lines": {<br />
"begin": 258,<br />
"end": 258<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Client or class \\Elasticsearch\\Client"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data->error\u001b[0m with type \u001b[37mfalse|string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch7/lib/PluginSearchElasticsearch7.php",<br />
"lines": {<br />
"begin": 1003,<br />
"end": 1003<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data->error\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch7/lib/PluginSearchElasticsearch7.php",<br />
"lines": {<br />
"begin": 1003,<br />
"end": 1003<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$server->data->error\u001b[0m with type \u001b[37mfalse|string\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch7/lib/PluginSearchElasticsearch7.php",<br />
"lines": {<br />
"begin": 1023,<br />
"end": 1023<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$server->data->error\u001b[0m with type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/elasticsearch7/lib/PluginSearchElasticsearch7.php",<br />
"lines": {<br />
"begin": 1023,<br />
"end": 1023<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$config\u001b[0m with type \u001b[37marray{conditionalGET:true,sets:array{remote-idp:array{cron:array{0:'hourly'},sources:array{0?:array{src:mixed,validateFingerprint?:mixed}},expireAfter:345600,outputDir:string,outputFormat:'flatfile'}}}\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/internal/version.php",<br />
"lines": {<br />
"begin": 14,<br />
"end": 14<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$config\u001b[0m with type \u001b[37marray{conditionalGET:true,sets:array{remote-idp:array{cron:array{0:'hourly'},sources:array{0?:array{src:mixed,validateFingerprint?:mixed}},expireAfter:345600,outputDir:string,outputFormat:'flatfile'}}}\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/internal/version.php",<br />
"lines": {<br />
"begin": 15,<br />
"end": 15<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$config\u001b[0m with type \u001b[37marray{conditionalGET:true,sets:array{remote-idp:array{cron:array{0:'hourly'},sources:array{0?:array{src:mixed,validateFingerprint?:mixed}},expireAfter:345600,outputDir:string,outputFormat:'flatfile'}}}\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/search/internal/version.php",<br />
"lines": {<br />
"begin": 16,<br />
"end": 16<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 69,<br />
"end": 69<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 70,<br />
"end": 70<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 75,<br />
"end": 75<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 76,<br />
"end": 76<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 77,<br />
"end": 77<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 78,<br />
"end": 78<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 83,<br />
"end": 83<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 88,<br />
"end": 88<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 89,<br />
"end": 89<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 90,<br />
"end": 90<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 91,<br />
"end": 91<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 92,<br />
"end": 92<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 93,<br />
"end": 93<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 94,<br />
"end": 94<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 99,<br />
"end": 99<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 101,<br />
"end": 101<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 104,<br />
"end": 104<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 106,<br />
"end": 106<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 108,<br />
"end": 108<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 111,<br />
"end": 111<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 133,<br />
"end": 133<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 134,<br />
"end": 134<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 135,<br />
"end": 135<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 136,<br />
"end": 136<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 137,<br />
"end": 137<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 160,<br />
"end": 160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 161,<br />
"end": 161<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 162,<br />
"end": 162<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 163,<br />
"end": 163<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 164,<br />
"end": 164<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 181,<br />
"end": 181<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 182,<br />
"end": 182<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 183,<br />
"end": 183<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 184,<br />
"end": 184<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 185,<br />
"end": 185<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 186,<br />
"end": 186<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 187,<br />
"end": 187<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 188,<br />
"end": 188<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 189,<br />
"end": 189<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 204,<br />
"end": 204<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 205,<br />
"end": 205<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 217,<br />
"end": 217<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 218,<br />
"end": 218<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 219,<br />
"end": 219<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 220,<br />
"end": 220<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 221,<br />
"end": 221<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 222,<br />
"end": 222<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 223,<br />
"end": 223<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 224,<br />
"end": 224<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 225,<br />
"end": 225<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 240,<br />
"end": 240<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 241,<br />
"end": 241<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\DOMNode::setAttribute\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/skin/export.php",<br />
"lines": {<br />
"begin": 252,<br />
"end": 252<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetHash\u001b[0m from undeclared class \u001b[32m\\Behat\\Gherkin\\Node\\TableNode\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatAccount.php",<br />
"lines": {<br />
"begin": 34,<br />
"end": 34<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetHash\u001b[0m from undeclared class \u001b[32m\\Behat\\Gherkin\\Node\\TableNode\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatAdmin.php",<br />
"lines": {<br />
"begin": 34,<br />
"end": 34<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetHash\u001b[0m from undeclared class \u001b[32m\\Behat\\Gherkin\\Node\\TableNode\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatAdmin.php",<br />
"lines": {<br />
"begin": 160,<br />
"end": 160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetHash\u001b[0m from undeclared class \u001b[32m\\Behat\\Gherkin\\Node\\TableNode\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatAdmin.php",<br />
"lines": {<br />
"begin": 227,<br />
"end": 227<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11003,<br />
"check_name": "PhanUndeclaredExtendedClass",<br />
"description": "UndefError PhanUndeclaredExtendedClass Class extends undeclared class \u001b[32m\\Behat\\MinkExtension\\Context\\RawMinkContext\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 32,<br />
"end": 32<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 72,<br />
"end": 72<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 149,<br />
"end": 149<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 238,<br />
"end": 238<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 398,<br />
"end": 398<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 424,<br />
"end": 424<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 445,<br />
"end": 445<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 476,<br />
"end": 476<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 510,<br />
"end": 510<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetXPath\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 542,<br />
"end": 542<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 543,<br />
"end": 543<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 602,<br />
"end": 602<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 608,<br />
"end": 608<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 683,<br />
"end": 683<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\NoSuchWindow\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 708,<br />
"end": 708<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\UnknownError\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatBase.php",<br />
"lines": {<br />
"begin": 713,<br />
"end": 713<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10139,<br />
"check_name": "PhanTypeMismatchArgumentInternalReal",<br />
"description": "TypeError PhanTypeMismatchArgumentInternalReal Argument \u001b[95m1\u001b[0m (\u001b[36m$array\u001b[0m) is \u001b[95m$featurespaths\u001b[0m of type \u001b[37mnull\u001b[0m\u001b[92m\u001b[0m but \u001b[93m\\array_values()\u001b[0m takes \u001b[37marray\u001b[0m\u001b[92m\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatConfigManager.php",<br />
"lines": {<br />
"begin": 101,<br />
"end": 101<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mdump\u001b[0m from undeclared class \u001b[32m\\Symfony\\Component\\Yaml\\Yaml\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatConfigManager.php",<br />
"lines": {<br />
"begin": 198,<br />
"end": 198<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Mink\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatContextHelper.php",<br />
"lines": {<br />
"begin": 44,<br />
"end": 44<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetDefaultSessionName\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Mink\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatContextHelper.php",<br />
"lines": {<br />
"begin": 45,<br />
"end": 45<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Behat\\Exception\\PendingException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatDataGenerators.php",<br />
"lines": {<br />
"begin": 459,<br />
"end": 459<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetHash\u001b[0m from undeclared class \u001b[32m\\Behat\\Gherkin\\Node\\TableNode\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatDataGenerators.php",<br />
"lines": {<br />
"begin": 471,<br />
"end": 471<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Behat\\Exception\\PendingException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatDataGenerators.php",<br />
"lines": {<br />
"begin": 500,<br />
"end": 500<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfind_field\u001b[0m from undeclared class \u001b[32m\\Behat\\MinkExtension\\Context\\RawMinkContext\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 36,<br />
"end": 36<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 38,<br />
"end": 38<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfind_filemanager\u001b[0m from undeclared class \u001b[32m\\Behat\\MinkExtension\\Context\\RawMinkContext\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 42,<br />
"end": 42<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 44,<br />
"end": 44<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetSession\u001b[0m from undeclared class \u001b[32m\\Behat\\MinkExtension\\Context\\RawMinkContext\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 51,<br />
"end": 51<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetTagName\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 128,<br />
"end": 128<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 132,<br />
"end": 132<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetPage\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 133,<br />
"end": 133<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 140,<br />
"end": 140<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 148,<br />
"end": 148<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetPage\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 150,<br />
"end": 150<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfind\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 190,<br />
"end": 190<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatFieldManager.php",<br />
"lines": {<br />
"begin": 214,<br />
"end": 214<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetRowsHash\u001b[0m from undeclared class \u001b[32m\\Behat\\Gherkin\\Node\\TableNode\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 43,<br />
"end": 43<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfind\u001b[0m from undeclared class \u001b[32m\\DocumentElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 177,<br />
"end": 177<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfindAll\u001b[0m from undeclared class \u001b[32m\\DocumentElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 331,<br />
"end": 331<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 358,<br />
"end": 358<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 383,<br />
"end": 383<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetRowsHash\u001b[0m from undeclared class \u001b[32m\\Behat\\Gherkin\\Node\\TableNode\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 402,<br />
"end": 402<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetRowsHash\u001b[0m from undeclared class \u001b[32m\\Behat\\Gherkin\\Node\\TableNode\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 422,<br />
"end": 422<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfindAll\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 450,<br />
"end": 450<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 459,<br />
"end": 459<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 480,<br />
"end": 480<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfindAll\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 495,<br />
"end": 495<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 504,<br />
"end": 504<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 525,<br />
"end": 525<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfindAll\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 540,<br />
"end": 540<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 549,<br />
"end": 549<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 570,<br />
"end": 570<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 573,<br />
"end": 573<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 606,<br />
"end": 606<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 607,<br />
"end": 607<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 615,<br />
"end": 615<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 634,<br />
"end": 634<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 635,<br />
"end": 635<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 648,<br />
"end": 648<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetRows\u001b[0m from undeclared class \u001b[32m\\Behat\\Gherkin\\Node\\TableNode\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 666,<br />
"end": 666<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 681,<br />
"end": 681<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 682,<br />
"end": 682<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 695,<br />
"end": 695<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetRows\u001b[0m from undeclared class \u001b[32m\\Behat\\Gherkin\\Node\\TableNode\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 713,<br />
"end": 713<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 724,<br />
"end": 724<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 726,<br />
"end": 726<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 734,<br />
"end": 734<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 744,<br />
"end": 744<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 761,<br />
"end": 761<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 764,<br />
"end": 764<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 774,<br />
"end": 774<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 778,<br />
"end": 778<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 789,<br />
"end": 789<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 790,<br />
"end": 790<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mpress\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 795,<br />
"end": 795<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 807,<br />
"end": 807<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 812,<br />
"end": 812<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatForms.php",<br />
"lines": {<br />
"begin": 819,<br />
"end": 819<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\WebDriver\\Exception\\NoSuchElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 88,<br />
"end": 88<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\WebDriver\\Exception\\StaleElementReference\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 91,<br />
"end": 91<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\WebDriver\\Exception\\NoAlertOpenError\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 212,<br />
"end": 212<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\WebDriver\\Exception\\NoAlertOpenError\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 277,<br />
"end": 277<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\DriverException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 291,<br />
"end": 291<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\DriverException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 305,<br />
"end": 305<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mmouseOver\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 356,<br />
"end": 356<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 375,<br />
"end": 375<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 393,<br />
"end": 393<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 425,<br />
"end": 425<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 429,<br />
"end": 429<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 443,<br />
"end": 443<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mkeyPress\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 462,<br />
"end": 462<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 477,<br />
"end": 477<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 492,<br />
"end": 492<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 507,<br />
"end": 507<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 516,<br />
"end": 516<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 517,<br />
"end": 517<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 551,<br />
"end": 551<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 552,<br />
"end": 552<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mgetSession\u001b[0m on non-class type \u001b[37mnull=\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 587,<br />
"end": 587<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 587,<br />
"end": 587<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 602,<br />
"end": 602<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 603,<br />
"end": 603<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 631,<br />
"end": 631<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\WebDriver\\Exception\\StaleElementReference\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 634,<br />
"end": 634<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 636,<br />
"end": 636<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 652,<br />
"end": 652<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 659,<br />
"end": 659<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 672,<br />
"end": 672<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 673,<br />
"end": 673<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 693,<br />
"end": 693<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 694,<br />
"end": 694<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 715,<br />
"end": 715<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 716,<br />
"end": 716<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 737,<br />
"end": 737<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 738,<br />
"end": 738<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 759,<br />
"end": 759<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 760,<br />
"end": 760<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 780,<br />
"end": 780<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 781,<br />
"end": 781<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 806,<br />
"end": 806<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 807,<br />
"end": 807<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 831,<br />
"end": 831<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 859,<br />
"end": 859<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 863,<br />
"end": 863<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 896,<br />
"end": 896<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 897,<br />
"end": 897<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mpress\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 905,<br />
"end": 905<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\DriverException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 947,<br />
"end": 947<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misVisible\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 951,<br />
"end": 951<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 952,<br />
"end": 952<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 973,<br />
"end": 973<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 975,<br />
"end": 975<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\DriverException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 995,<br />
"end": 995<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misVisible\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 999,<br />
"end": 999<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1000,<br />
"end": 1000<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1022,<br />
"end": 1022<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1027,<br />
"end": 1027<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1049,<br />
"end": 1049<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1069,<br />
"end": 1069<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1093,<br />
"end": 1093<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1120,<br />
"end": 1120<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1148,<br />
"end": 1148<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1173,<br />
"end": 1173<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1199,<br />
"end": 1199<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1224,<br />
"end": 1224<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1232,<br />
"end": 1232<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1233,<br />
"end": 1233<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1252,<br />
"end": 1252<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1267,<br />
"end": 1267<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1288,<br />
"end": 1288<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1297,<br />
"end": 1297<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1305,<br />
"end": 1305<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1314,<br />
"end": 1314<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetXpath\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1341,<br />
"end": 1341<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetXpath\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1342,<br />
"end": 1342<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1348,<br />
"end": 1348<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetXpath\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1369,<br />
"end": 1369<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetXpath\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1370,<br />
"end": 1370<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1376,<br />
"end": 1376<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetXpath\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1396,<br />
"end": 1396<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetXpath\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1397,<br />
"end": 1397<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1403,<br />
"end": 1403<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1420,<br />
"end": 1420<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1421,<br />
"end": 1421<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1438,<br />
"end": 1438<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1439,<br />
"end": 1439<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1455,<br />
"end": 1455<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1456,<br />
"end": 1456<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1472,<br />
"end": 1472<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1473,<br />
"end": 1473<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1510,<br />
"end": 1510<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1512,<br />
"end": 1512<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1554,<br />
"end": 1554<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1575,<br />
"end": 1575<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1578,<br />
"end": 1578<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1676,<br />
"end": 1676<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1677,<br />
"end": 1677<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1690,<br />
"end": 1690<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1704,<br />
"end": 1704<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1705,<br />
"end": 1705<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1718,<br />
"end": 1718<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1731,<br />
"end": 1731<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1754,<br />
"end": 1754<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misVisible\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1759,<br />
"end": 1759<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1760,<br />
"end": 1760<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\DriverException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1769,<br />
"end": 1769<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1794,<br />
"end": 1794<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1827,<br />
"end": 1827<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 1860,<br />
"end": 1860<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2040,<br />
"end": 2040<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2048,<br />
"end": 2048<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2049,<br />
"end": 2049<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2068,<br />
"end": 2068<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2082,<br />
"end": 2082<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2083,<br />
"end": 2083<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misVisible\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2086,<br />
"end": 2086<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2087,<br />
"end": 2087<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2099,<br />
"end": 2099<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2100,<br />
"end": 2100<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2109,<br />
"end": 2109<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2110,<br />
"end": 2110<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2129,<br />
"end": 2129<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2143,<br />
"end": 2143<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2152,<br />
"end": 2152<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2153,<br />
"end": 2153<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2172,<br />
"end": 2172<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2186,<br />
"end": 2186<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2187,<br />
"end": 2187<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2196,<br />
"end": 2196<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2197,<br />
"end": 2197<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2216,<br />
"end": 2216<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2284,<br />
"end": 2284<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2389,<br />
"end": 2389<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2390,<br />
"end": 2390<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2392,<br />
"end": 2392<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2408,<br />
"end": 2408<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2409,<br />
"end": 2409<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetParent\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2411,<br />
"end": 2411<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2419,<br />
"end": 2419<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2427,<br />
"end": 2427<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2435,<br />
"end": 2435<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2436,<br />
"end": 2436<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2444,<br />
"end": 2444<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2446,<br />
"end": 2446<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2447,<br />
"end": 2447<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2457,<br />
"end": 2457<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2458,<br />
"end": 2458<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2466,<br />
"end": 2466<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2467,<br />
"end": 2467<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2477,<br />
"end": 2477<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2478,<br />
"end": 2478<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2487,<br />
"end": 2487<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatGeneral.php",<br />
"lines": {<br />
"begin": 2492,<br />
"end": 2492<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\WebDriver\\Exception\\CurlExec\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 161,<br />
"end": 161<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\Behat\\Mink\\Exception\\DriverException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 165,<br />
"end": 165<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\WebDriver\\Exception\\UnknownError\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 168,<br />
"end": 168<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\WebDriver\\Exception\\UnknownError\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 201,<br />
"end": 201<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetScenario\u001b[0m from undeclared class \u001b[32m\\BeforeScenarioScope\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 246,<br />
"end": 246<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\WebDriver\\Exception\\UnexpectedAlertOpen\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 276,<br />
"end": 276<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetFeature\u001b[0m from undeclared class \u001b[32m\\Behat\\Behat\\Hook\\Scope\\AfterStepScope\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 283,<br />
"end": 283<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetTestResult\u001b[0m from undeclared class \u001b[32m\\Behat\\Behat\\Hook\\Scope\\AfterStepScope\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 297,<br />
"end": 297<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetTestResult\u001b[0m from undeclared class \u001b[32m\\Behat\\Behat\\Hook\\Scope\\AfterStepScope\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 303,<br />
"end": 303<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetFeature\u001b[0m from undeclared class \u001b[32m\\Behat\\Behat\\Hook\\Scope\\AfterStepScope\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 305,<br />
"end": 305<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetStep\u001b[0m from undeclared class \u001b[32m\\Behat\\Behat\\Hook\\Scope\\AfterStepScope\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 308,<br />
"end": 308<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetStep\u001b[0m from undeclared class \u001b[32m\\Behat\\Behat\\Hook\\Scope\\AfterStepScope\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 310,<br />
"end": 310<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetStep\u001b[0m from undeclared class \u001b[32m\\Behat\\Behat\\Hook\\Scope\\AfterStepScope\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 397,<br />
"end": 397<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11006,<br />
"check_name": "PhanUndeclaredClassCatch",<br />
"description": "UndefError PhanUndeclaredClassCatch Catching undeclared class \u001b[32m\\WebDriver\\Exception\\NoSuchWindow\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 497,<br />
"end": 497<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetMessage\u001b[0m from undeclared class \u001b[32m\\WebDriver\\Exception\\UnknownError\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatHooks.php",<br />
"lines": {<br />
"begin": 533,<br />
"end": 533<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11003,<br />
"check_name": "PhanUndeclaredExtendedClass",<br />
"description": "UndefError PhanUndeclaredExtendedClass Class extends undeclared class \u001b[32m\\Behat\\MinkExtension\\Context\\MinkContext\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatMaharaCoreContext.php",<br />
"lines": {<br />
"begin": 20,<br />
"end": 20<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 47,<br />
"end": 47<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 48,<br />
"end": 48<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 74,<br />
"end": 74<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 75,<br />
"end": 75<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 76,<br />
"end": 76<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 92,<br />
"end": 92<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 95,<br />
"end": 95<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 105,<br />
"end": 105<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 116,<br />
"end": 116<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 127,<br />
"end": 127<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 138,<br />
"end": 138<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 149,<br />
"end": 149<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 160,<br />
"end": 160<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 171,<br />
"end": 171<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetTagName\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 186,<br />
"end": 186<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetParent\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 188,<br />
"end": 188<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfind\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 191,<br />
"end": 191<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetParent\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 193,<br />
"end": 193<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 195,<br />
"end": 195<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetParent\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 196,<br />
"end": 196<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetParent\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 197,<br />
"end": 197<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 233,<br />
"end": 233<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetTagName\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 241,<br />
"end": 241<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetParent\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 243,<br />
"end": 243<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 245,<br />
"end": 245<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 263,<br />
"end": 263<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 264,<br />
"end": 264<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 266,<br />
"end": 266<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 268,<br />
"end": 268<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ExpectationException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 269,<br />
"end": 269<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 273,<br />
"end": 273<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatNavigation.php",<br />
"lines": {<br />
"begin": 274,<br />
"end": 274<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatSelectors.php",<br />
"lines": {<br />
"begin": 105,<br />
"end": 105<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatSelectors.php",<br />
"lines": {<br />
"begin": 113,<br />
"end": 113<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetSelectorsHandler\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatSelectors.php",<br />
"lines": {<br />
"begin": 129,<br />
"end": 129<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mescapeLiteral\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Selector\\Xpath\\Escaper\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatView.php",<br />
"lines": {<br />
"begin": 37,<br />
"end": 37<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatView.php",<br />
"lines": {<br />
"begin": 38,<br />
"end": 38<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetParent\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatView.php",<br />
"lines": {<br />
"begin": 45,<br />
"end": 45<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatView.php",<br />
"lines": {<br />
"begin": 58,<br />
"end": 58<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mpress\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatView.php",<br />
"lines": {<br />
"begin": 66,<br />
"end": 66<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Exception\\ElementNotFoundException\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatView.php",<br />
"lines": {<br />
"begin": 77,<br />
"end": 77<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mpress\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/BehatView.php",<br />
"lines": {<br />
"begin": 85,<br />
"end": 85<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormCheckbox.php",<br />
"lines": {<br />
"begin": 30,<br />
"end": 30<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mcheck\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormCheckbox.php",<br />
"lines": {<br />
"begin": 33,<br />
"end": 33<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormCheckbox.php",<br />
"lines": {<br />
"begin": 38,<br />
"end": 38<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormCheckbox.php",<br />
"lines": {<br />
"begin": 41,<br />
"end": 41<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93muncheck\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormCheckbox.php",<br />
"lines": {<br />
"begin": 44,<br />
"end": 44<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormCheckbox.php",<br />
"lines": {<br />
"begin": 49,<br />
"end": 49<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormCheckbox.php",<br />
"lines": {<br />
"begin": 60,<br />
"end": 60<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormCheckbox.php",<br />
"lines": {<br />
"begin": 71,<br />
"end": 71<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mexecuteScript\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormEditor.php",<br />
"lines": {<br />
"begin": 40,<br />
"end": 40<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mexecuteScript\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormEditor.php",<br />
"lines": {<br />
"begin": 98,<br />
"end": 98<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetValue\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormEditor.php",<br />
"lines": {<br />
"begin": 101,<br />
"end": 101<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mevaluateScript\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormEditor.php",<br />
"lines": {<br />
"begin": 140,<br />
"end": 140<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormEditor.php",<br />
"lines": {<br />
"begin": 143,<br />
"end": 143<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mevaluateScript\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormEditor.php",<br />
"lines": {<br />
"begin": 144,<br />
"end": 144<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 58,<br />
"end": 58<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetTagName\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 59,<br />
"end": 59<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mkeyPress\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 62,<br />
"end": 62<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11007,<br />
"check_name": "PhanUndeclaredClassConstant",<br />
"description": "UndefError PhanUndeclaredClassConstant Reference to constant \u001b[91mDELETE\u001b[0m from undeclared class \u001b[32m\\WebDriver\\Key\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 63,<br />
"end": 63<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mkeyPress\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 63,<br />
"end": 63<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetDriver\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 144,<br />
"end": 144<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetDriver\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 161,<br />
"end": 161<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetXPath\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 161,<br />
"end": 161<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 197,<br />
"end": 197<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetPage\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 202,<br />
"end": 202<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormField.php",<br />
"lines": {<br />
"begin": 217,<br />
"end": 217<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwait\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormFileManager.php",<br />
"lines": {<br />
"begin": 49,<br />
"end": 49<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetPage\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormFileManager.php",<br />
"lines": {<br />
"begin": 62,<br />
"end": 62<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormRadio.php",<br />
"lines": {<br />
"begin": 42,<br />
"end": 42<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormRadio.php",<br />
"lines": {<br />
"begin": 62,<br />
"end": 62<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetValue\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormRadio.php",<br />
"lines": {<br />
"begin": 62,<br />
"end": 62<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 45,<br />
"end": 45<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mselectOption\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 57,<br />
"end": 57<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mselectOption\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 63,<br />
"end": 63<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetXpath\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 78,<br />
"end": 78<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetDriver\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 79,<br />
"end": 79<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwait\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 92,<br />
"end": 92<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 96,<br />
"end": 96<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetDriver\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 114,<br />
"end": 114<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mclick\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 134,<br />
"end": 134<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetDriver\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 144,<br />
"end": 144<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mwait\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 151,<br />
"end": 151<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mselectOption\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 161,<br />
"end": 161<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 189,<br />
"end": 189<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93masort\u001b[0m from undeclared class \u001b[32m\\core_collator\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 250,<br />
"end": 250<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhasAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 273,<br />
"end": 273<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfindAll\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 281,<br />
"end": 281<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetValue\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 302,<br />
"end": 302<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfindAll\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 308,<br />
"end": 308<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetSelectorsHandler\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSelect.php",<br />
"lines": {<br />
"begin": 334,<br />
"end": 334<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSwitchbox.php",<br />
"lines": {<br />
"begin": 31,<br />
"end": 31<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mcheck\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSwitchbox.php",<br />
"lines": {<br />
"begin": 34,<br />
"end": 34<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSwitchbox.php",<br />
"lines": {<br />
"begin": 41,<br />
"end": 41<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93muncheck\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSwitchbox.php",<br />
"lines": {<br />
"begin": 44,<br />
"end": 44<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mexecuteScript\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Session\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSwitchbox.php",<br />
"lines": {<br />
"begin": 56,<br />
"end": 56<br />
}<br />
},<br />
"suggestion": "Did you mean class \\Session"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSwitchbox.php",<br />
"lines": {<br />
"begin": 66,<br />
"end": 66<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93misChecked\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormSwitchbox.php",<br />
"lines": {<br />
"begin": 77,<br />
"end": 77<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormText.php",<br />
"lines": {<br />
"begin": 28,<br />
"end": 28<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAttribute\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormText.php",<br />
"lines": {<br />
"begin": 29,<br />
"end": 29<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetValue\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormText.php",<br />
"lines": {<br />
"begin": 32,<br />
"end": 32<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetValue\u001b[0m from undeclared class \u001b[32m\\Behat\\Mink\\Element\\NodeElement\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/FormFields/BehatFormText.php",<br />
"lines": {<br />
"begin": 41,<br />
"end": 41<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11004,<br />
"check_name": "PhanUndeclaredInterface",<br />
"description": "UndefError PhanUndeclaredInterface Class implements undeclared interface \u001b[32m\\Behat\\Behat\\Context\\Context\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/MaharaAwareInterface.php",<br />
"lines": {<br />
"begin": 8,<br />
"end": 8<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11013,<br />
"check_name": "PhanUndeclaredMethod",<br />
"description": "UndefError PhanUndeclaredMethod Call to undeclared method \u001b[93m\\Auth::change_password\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/util.php",<br />
"lines": {<br />
"begin": 137,<br />
"end": 137<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\BEHAT_EXITCODE_NOTMAHARATESTSITE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/util.php",<br />
"lines": {<br />
"begin": 211,<br />
"end": 211<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\BEHAT_EXITCODE_OUTOFDATEMAHARADB\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/classes/util.php",<br />
"lines": {<br />
"begin": 215,<br />
"end": 215<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11004,<br />
"check_name": "PhanUndeclaredInterface",<br />
"description": "UndefError PhanUndeclaredInterface Class implements undeclared interface \u001b[32m\\Behat\\Testwork\\ServiceContainer\\Extension\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/extension/MaharaExtension.php",<br />
"lines": {<br />
"begin": 26,<br />
"end": 26<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Symfony\\Component\\Config\\FileLocator\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/extension/MaharaExtension.php",<br />
"lines": {<br />
"begin": 40,<br />
"end": 40<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\Symfony\\Component\\DependencyInjection\\Loader\\YamlFileLoader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/extension/MaharaExtension.php",<br />
"lines": {<br />
"begin": 40,<br />
"end": 40<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mload\u001b[0m from undeclared class \u001b[32m\\Symfony\\Component\\DependencyInjection\\Loader\\YamlFileLoader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/extension/MaharaExtension.php",<br />
"lines": {<br />
"begin": 41,<br />
"end": 41<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetParameter\u001b[0m from undeclared class \u001b[32m\\Symfony\\Component\\DependencyInjection\\ContainerBuilder\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/extension/MaharaExtension.php",<br />
"lines": {<br />
"begin": 47,<br />
"end": 47<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetParameter\u001b[0m from undeclared class \u001b[32m\\Symfony\\Component\\DependencyInjection\\ContainerBuilder\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/extension/MaharaExtension.php",<br />
"lines": {<br />
"begin": 60,<br />
"end": 60<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mchildren\u001b[0m from undeclared class \u001b[32m\\Symfony\\Component\\Config\\Definition\\Builder\\ArrayNodeDefinition\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/extension/MaharaExtension.php",<br />
"lines": {<br />
"begin": 67,<br />
"end": 67<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11004,<br />
"check_name": "PhanUndeclaredInterface",<br />
"description": "UndefError PhanUndeclaredInterface Class implements undeclared interface \u001b[32m\\Behat\\Behat\\Context\\Initializer\\ContextInitializer\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/extension/MaharaExtension.php",<br />
"lines": {<br />
"begin": 110,<br />
"end": 110<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetMaharaParameters\u001b[0m from undeclared class \u001b[32m\\Behat\\Behat\\Context\\Context\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/testing/frameworks/behat/extension/MaharaExtension.php",<br />
"lines": {<br />
"begin": 130,<br />
"end": 130<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11046,<br />
"check_name": "PhanUndeclaredThis",<br />
"description": "UndefError PhanUndeclaredThis Variable \u001b[96m$this\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/theme/raw/pieforms/adduser.php",<br />
"lines": {<br />
"begin": 114,<br />
"end": 114<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11046,<br />
"check_name": "PhanUndeclaredThis",<br />
"description": "UndefError PhanUndeclaredThis Variable \u001b[96m$this\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/theme/raw/pieforms/adduser.php",<br />
"lines": {<br />
"begin": 115,<br />
"end": 115<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11046,<br />
"check_name": "PhanUndeclaredThis",<br />
"description": "UndefError PhanUndeclaredThis Variable \u001b[96m$this\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/theme/raw/pieforms/adduser.php",<br />
"lines": {<br />
"begin": 116,<br />
"end": 116<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11046,<br />
"check_name": "PhanUndeclaredThis",<br />
"description": "UndefError PhanUndeclaredThis Variable \u001b[96m$this\u001b[0m is undeclared",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/theme/raw/pieforms/adduser.php",<br />
"lines": {<br />
"begin": 118,<br />
"end": 118<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/choosetemplate.php",<br />
"lines": {<br />
"begin": 71,<br />
"end": 71<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/download.php",<br />
"lines": {<br />
"begin": 60,<br />
"end": 60<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/groupviews.php",<br />
"lines": {<br />
"begin": 51,<br />
"end": 51<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/groupviews.php",<br />
"lines": {<br />
"begin": 75,<br />
"end": 75<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/groupviews.php",<br />
"lines": {<br />
"begin": 77,<br />
"end": 77<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/groupviews.php",<br />
"lines": {<br />
"begin": 84,<br />
"end": 84<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 174,<br />
"end": 174<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 179,<br />
"end": 179<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 180,<br />
"end": 180<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 186,<br />
"end": 186<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 192,<br />
"end": 192<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 198,<br />
"end": 198<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 202,<br />
"end": 202<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 207,<br />
"end": 207<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 217,<br />
"end": 217<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 218,<br />
"end": 218<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 228,<br />
"end": 228<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/sharedviews.php",<br />
"lines": {<br />
"begin": 257,<br />
"end": 257<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93msubmit\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/submit.php",<br />
"lines": {<br />
"begin": 78,<br />
"end": 78<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget_url\u001b[0m on non-class type \u001b[37mnon-zero-int\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/submit.php",<br />
"lines": {<br />
"begin": 106,<br />
"end": 106<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10031,<br />
"check_name": "PhanTypeMismatchDimEmpty",<br />
"description": "TypeError PhanTypeMismatchDimEmpty Assigning to an empty array index of a value of type \u001b[37mstring\u001b[0m, but expected the index to exist and be of type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/templatesearch.json.php",<br />
"lines": {<br />
"begin": 32,<br />
"end": 32<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mpendingrelease\u001b[0m on non-class type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/view.php",<br />
"lines": {<br />
"begin": 362,<br />
"end": 362<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mpendingrelease\u001b[0m on non-class type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/view.php",<br />
"lines": {<br />
"begin": 370,<br />
"end": 370<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mrelease\u001b[0m on non-class type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/view.php",<br />
"lines": {<br />
"begin": 374,<br />
"end": 374<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mget_url\u001b[0m on non-class type \u001b[37mint\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/view.php",<br />
"lines": {<br />
"begin": 389,<br />
"end": 389<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mrender_self\u001b[0m on non-class type \u001b[37m?false|?object\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/view/viewblocks.json.php",<br />
"lines": {<br />
"begin": 84,<br />
"end": 84<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_blog_external.php",<br />
"lines": {<br />
"begin": 147,<br />
"end": 147<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_blog_external.php",<br />
"lines": {<br />
"begin": 155,<br />
"end": 155<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_blog_external.php",<br />
"lines": {<br />
"begin": 156,<br />
"end": 156<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_blog_external.php",<br />
"lines": {<br />
"begin": 203,<br />
"end": 203<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_blog_external.php",<br />
"lines": {<br />
"begin": 204,<br />
"end": 204<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_blog_external.php",<br />
"lines": {<br />
"begin": 205,<br />
"end": 205<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_blog_external.php",<br />
"lines": {<br />
"begin": 206,<br />
"end": 206<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_blog_external.php",<br />
"lines": {<br />
"begin": 207,<br />
"end": 207<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_blog_external.php",<br />
"lines": {<br />
"begin": 209,<br />
"end": 209<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 116,<br />
"end": 116<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 117,<br />
"end": 117<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 123,<br />
"end": 123<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 125,<br />
"end": 125<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 196,<br />
"end": 196<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 197,<br />
"end": 197<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 202,<br />
"end": 202<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 204,<br />
"end": 204<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 276,<br />
"end": 276<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 277,<br />
"end": 277<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 283,<br />
"end": 283<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 285,<br />
"end": 285<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 349,<br />
"end": 349<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 350,<br />
"end": 350<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 356,<br />
"end": 356<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_institution_external.php",<br />
"lines": {<br />
"begin": 358,<br />
"end": 358<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mget_webservice_options\u001b[0m from undeclared class \u001b[32m\\PluginArtefactInternalLocal\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 79,<br />
"end": 79<br />
}<br />
},<br />
"suggestion": "Did you mean class \\PluginArtefactInternal"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 423,<br />
"end": 423<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 424,<br />
"end": 424<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 429,<br />
"end": 429<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 432,<br />
"end": 432<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 437,<br />
"end": 437<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 768,<br />
"end": 768<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 771,<br />
"end": 771<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 774,<br />
"end": 774<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 780,<br />
"end": 780<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 781,<br />
"end": 781<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 782,<br />
"end": 782<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 783,<br />
"end": 783<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 784,<br />
"end": 784<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 786,<br />
"end": 786<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 787,<br />
"end": 787<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1178,<br />
"end": 1178<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1181,<br />
"end": 1181<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1182,<br />
"end": 1182<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1187,<br />
"end": 1187<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1200,<br />
"end": 1200<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1201,<br />
"end": 1201<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1207,<br />
"end": 1207<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1209,<br />
"end": 1209<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1271,<br />
"end": 1271<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1272,<br />
"end": 1272<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1285,<br />
"end": 1285<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$dbuser\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_user_external.php",<br />
"lines": {<br />
"begin": 1286,<br />
"end": 1286<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 179,<br />
"end": 179<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 187,<br />
"end": 187<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 188,<br />
"end": 188<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 192,<br />
"end": 192<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 193,<br />
"end": 193<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 204,<br />
"end": 204<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 210,<br />
"end": 210<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 211,<br />
"end": 211<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 212,<br />
"end": 212<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 213,<br />
"end": 213<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 214,<br />
"end": 214<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 216,<br />
"end": 216<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 217,<br />
"end": 217<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 219,<br />
"end": 219<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 232,<br />
"end": 232<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 233,<br />
"end": 233<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 249,<br />
"end": 249<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 260,<br />
"end": 260<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$data\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 261,<br />
"end": 261<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 420,<br />
"end": 420<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 456,<br />
"end": 456<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 538,<br />
"end": 538<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 539,<br />
"end": 539<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 653,<br />
"end": 653<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 663,<br />
"end": 663<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/functions/mahara_view_external.php",<br />
"lines": {<br />
"begin": 790,<br />
"end": 790<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/lib.php",<br />
"lines": {<br />
"begin": 110,<br />
"end": 110<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$user\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/lib.php",<br />
"lines": {<br />
"begin": 111,<br />
"end": 111<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\session_get_instance()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/lib.php",<br />
"lines": {<br />
"begin": 1251,<br />
"end": 1251<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetSent\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthDiscovery.php",<br />
"lines": {<br />
"begin": 217,<br />
"end": 217<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetReceived\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthDiscovery.php",<br />
"lines": {<br />
"begin": 218,<br />
"end": 218<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93maddNote\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthException2.php",<br />
"lines": {<br />
"begin": 42,<br />
"end": 42<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAllHeaders\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequest.php",<br />
"lines": {<br />
"begin": 106,<br />
"end": 106<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mstart\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequestVerifier.php",<br />
"lines": {<br />
"begin": 68,<br />
"end": 68<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAllHeaders\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequestVerifier.php",<br />
"lines": {<br />
"begin": 85,<br />
"end": 85<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mstart\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequestVerifier.php",<br />
"lines": {<br />
"begin": 110,<br />
"end": 110<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mflush\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequestVerifier.php",<br />
"lines": {<br />
"begin": 113,<br />
"end": 113<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mstart\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequester.php",<br />
"lines": {<br />
"begin": 147,<br />
"end": 147<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mflush\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequester.php",<br />
"lines": {<br />
"begin": 197,<br />
"end": 197<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mstart\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequester.php",<br />
"lines": {<br />
"begin": 224,<br />
"end": 224<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetRequestObject\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequester.php",<br />
"lines": {<br />
"begin": 246,<br />
"end": 246<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mflush\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequester.php",<br />
"lines": {<br />
"begin": 284,<br />
"end": 284<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetSent\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequester.php",<br />
"lines": {<br />
"begin": 442,<br />
"end": 442<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetReceived\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthRequester.php",<br />
"lines": {<br />
"begin": 443,<br />
"end": 443<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mstart\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthServer.php",<br />
"lines": {<br />
"begin": 107,<br />
"end": 107<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mflush\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthServer.php",<br />
"lines": {<br />
"begin": 154,<br />
"end": 154<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mstart\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthServer.php",<br />
"lines": {<br />
"begin": 170,<br />
"end": 170<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mflush\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthServer.php",<br />
"lines": {<br />
"begin": 193,<br />
"end": 193<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mstart\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthServer.php",<br />
"lines": {<br />
"begin": 209,<br />
"end": 209<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93maddNote\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthServer.php",<br />
"lines": {<br />
"begin": 234,<br />
"end": 234<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93maddNote\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthServer.php",<br />
"lines": {<br />
"begin": 240,<br />
"end": 240<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mflush\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthServer.php",<br />
"lines": {<br />
"begin": 271,<br />
"end": 271<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mstart\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthServer.php",<br />
"lines": {<br />
"begin": 284,<br />
"end": 284<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mflush\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/OAuthServer.php",<br />
"lines": {<br />
"begin": 326,<br />
"end": 326<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 9000,<br />
"check_name": "PhanStaticCallToNonStatic",<br />
"description": "StaticCallError PhanStaticCallToNonStatic Static call to non-static method \u001b[93m\\DOMDocument::loadXML()\u001b[0m defined at \u001b[96minternal\u001b[0m:\u001b[37m0\u001b[0m. This is an Error in PHP 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/discovery/xrds_parse.php",<br />
"lines": {<br />
"begin": 59,<br />
"end": 59<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mquery\u001b[0m from undeclared class \u001b[32m\\XPath\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/discovery/xrds_parse.php",<br />
"lines": {<br />
"begin": 103,<br />
"end": 103<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mquery\u001b[0m from undeclared class \u001b[32m\\XPath\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/discovery/xrds_parse.php",<br />
"lines": {<br />
"begin": 107,<br />
"end": 107<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mquery\u001b[0m from undeclared class \u001b[32m\\XPath\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/discovery/xrds_parse.php",<br />
"lines": {<br />
"begin": 224,<br />
"end": 224<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\OAuthException2()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/signature_method/OAuthSignatureMethod_RSA_SHA1.php",<br />
"lines": {<br />
"begin": 58,<br />
"end": 58<br />
}<br />
},<br />
"suggestion": "Did you mean new \\OAuthException2()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11012,<br />
"check_name": "PhanUndeclaredFunction",<br />
"description": "UndefError PhanUndeclaredFunction Call to undeclared function \u001b[93m\\OAuthException2()\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/libs/oauth-php/signature_method/OAuthSignatureMethod_RSA_SHA1.php",<br />
"lines": {<br />
"begin": 74,<br />
"end": 74<br />
}<br />
},<br />
"suggestion": "Did you mean new \\OAuthException2()"<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->consumer\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/rest/lib.php",<br />
"lines": {<br />
"begin": 127,<br />
"end": 127<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->consumer\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/rest/lib.php",<br />
"lines": {<br />
"begin": 128,<br />
"end": 128<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10038,<br />
"check_name": "PhanTypeExpectedObjectPropAccess",<br />
"description": "TypeError PhanTypeExpectedObjectPropAccess Expected an object instance when accessing an instance property, but saw an expression \u001b[95m$this->consumer\u001b[0m with type \u001b[37marray\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/rest/lib.php",<br />
"lines": {<br />
"begin": 135,<br />
"end": 135<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mgetAllHeaders\u001b[0m from undeclared class \u001b[32m\\OAuthRequestLogger\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/rest/locallib.php",<br />
"lines": {<br />
"begin": 98,<br />
"end": 98<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\WSDL_CACHE_NONE\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/lib.php",<br />
"lines": {<br />
"begin": 80,<br />
"end": 80<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SoapClient\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/lib.php",<br />
"lines": {<br />
"begin": 81,<br />
"end": 81<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__soapCall\u001b[0m from undeclared class \u001b[32m\\SoapClient\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/lib.php",<br />
"lines": {<br />
"begin": 82,<br />
"end": 82<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SoapVar\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/lib.php",<br />
"lines": {<br />
"begin": 161,<br />
"end": 161<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\XSD_ANYXML\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/lib.php",<br />
"lines": {<br />
"begin": 161,<br />
"end": 161<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SoapHeader\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/lib.php",<br />
"lines": {<br />
"begin": 162,<br />
"end": 162<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SoapClient\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/lib.php",<br />
"lines": {<br />
"begin": 184,<br />
"end": 184<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__soapCall\u001b[0m from undeclared class \u001b[32m\\SoapClient\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/lib.php",<br />
"lines": {<br />
"begin": 185,<br />
"end": 185<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SoapClient\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/lib.php",<br />
"lines": {<br />
"begin": 192,<br />
"end": 192<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__doRequest\u001b[0m from undeclared class \u001b[32m\\SoapClient\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/lib.php",<br />
"lines": {<br />
"begin": 193,<br />
"end": 193<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93m__construct\u001b[0m from undeclared class \u001b[32m\\SoapServer\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/locallib.php",<br />
"lines": {<br />
"begin": 179,<br />
"end": 179<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93msetClass\u001b[0m from undeclared class \u001b[32m\\SoapServer\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/locallib.php",<br />
"lines": {<br />
"begin": 181,<br />
"end": 181<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93maddFunction\u001b[0m from undeclared class \u001b[32m\\SoapServer\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/locallib.php",<br />
"lines": {<br />
"begin": 184,<br />
"end": 184<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mhandle\u001b[0m from undeclared class \u001b[32m\\SoapServer\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/locallib.php",<br />
"lines": {<br />
"begin": 191,<br />
"end": 191<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11009,<br />
"check_name": "PhanUndeclaredClassMethod",<br />
"description": "UndefError PhanUndeclaredClassMethod Call to method \u001b[93mfault\u001b[0m from undeclared class \u001b[32m\\SoapServer\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/soap/locallib.php",<br />
"lines": {<br />
"begin": 301,<br />
"end": 301<br />
}<br />
},<br />
"suggestion": "Did you mean to configure a stub with https://github.com/phan/phan/wiki/How-To-Use-Stubs#internal-stubs or to enable the extension providing the class."<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 11011,<br />
"check_name": "PhanUndeclaredConstant",<br />
"description": "UndefError PhanUndeclaredConstant Reference to undeclared constant \u001b[91m\\SOAP_WAIT_ONE_WAY_CALLS\u001b[0m. This will cause a thrown Error in php 8.0+.",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/testclient.php",<br />
"lines": {<br />
"begin": 499,<br />
"end": 499<br />
}<br />
}<br />
},<br />
{<br />
"type": "issue",<br />
"type_id": 10019,<br />
"check_name": "PhanNonClassMethodCall",<br />
"description": "TypeError PhanNonClassMethodCall Call to method \u001b[93mraw_out\u001b[0m on non-class type \u001b[37mstring\u001b[0m",<br />
"severity": 10,<br />
"location": {<br />
"path": "htdocs/webservice/testclient.php",<br />
"lines": {<br />
"begin": 507,<br />
"end": 507<br />
}<br />
}<br />
}<br />
]<br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad&diff=13257
User:Gold/PHP 8 Scratchpad
2022-05-16T21:49:56Z
<p>Gold: /* Other tools */ Adding Reactor</p>
<hr />
<div>Just a place to scratch out thoughts on how to measure progress on PHP8 compliance that will give us some confidence and a sense of progress.<br />
<br />
== How to start ==<br />
We need to be able to measure what is not currently working.<br />
<br />
=== Behat & PHPUnit testing ===<br />
We currently use this quite a bit. I would propose that we start with these as the initial measurement tool.<br />
<br />
This would mean that we first need to get the behat tests to test using the target version of PHP. Then run the tests and assume that all failures are related to PHP8 non-compliance.<br />
<br />
PHPUnit will need to be updated so it is compatible with PHP 8.1 -> I note PHPUnit supports PHP 8.0 starting from version 9.3.0.<br />
<br />
=== Other tools ===<br />
All tools have an option to specifically test for PHP 8.1.<br />
<br />
* [https://github.com/phan/phan Phan] - Static analysis that prefers to prove incorrectness rather than correctness and minimize false-positives.<br />
* [https://github.com/PHPCompatibility/PHPCompatibility PHPCompatibility] is an extension for [https://github.com/squizlabs/PHP_CodeSniffer PHP_CodeSniffer].<br />
* [https://github.com/wunderio/grumphp-php-compatibility grumphp-php-compatibility] is an extension of PHPCompatibility that allows it to word with [https://github.com/phpro/grumphp GrumPHP] (aka Bad Santa).<br />
* [https://github.com/rectorphp/rector Reactor] is looking like a robust automated upgrade script too.<br />
<br />
== How to work ==<br />
=== Development Environment ===<br />
I'm going to maintain a single codebase to work from for this. I'll set up Apache to host 2 sites from it. One running on PHP 7.4 and the other on PHP 8.1. This will give the opportunity to test things in the browser in a very quick and simple manner. They will have a shared config so they'll have the same DB and maharadata area.<br />
<br />
=== Committing code ===<br />
I want this to be a quick, rapid process. A large number of very small patchsets. Each resolving a single Behat test.<br />
<br />
The commit message on a patchset will need to be small and concise. Ideally, just a reference to the behat test that this patchset fixes.<br />
<br />
There will be edge cases. I see these being where a fix on one test cascades out to multiple other tests and/or areas of Mahara. In these cases the commit message will need to be more comprehensive.<br />
<br />
== Measurement ==<br />
Once we have an idea of the amount of work we will have an idea on what is needed.<br />
<br />
=== Reporting ===<br />
If the number is large(ish) I'd like to add a dashboard or chatbot that reports on the progress.<br />
<br />
==== Code analysis ====<br />
A number of the Code Analysis tools have an option to output their findings in a machine readable format. These could be used in the reporting also.<br />
<br />
==== Gerrit ====<br />
Providing tags on patchsets are consistent we should be able to have a script search and scrape numbers from the Gerrit API. It is looking like this will be a simple thing. e.g. curl https://reviews.mahara.org/changes/?q=status:merged+topic:PHPStan<br />
<br />
Having looked at search options it looks like 'intopic' is preferred over 'topic' as we have multiple tags in this field. I also see that 'PHP8' has been used a few times already. I would suggest 'PHP8Compat' as the tag to use to make filtering easier to spot for this task.<br />
<br />
=== Sub pages ===<br />
[[User:Gold/PHP_8_Scratchpad/Add_PHP8|Add PHP 8.1 and PHP 7.4 to Apache2]]</div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad&diff=13256
User:Gold/PHP 8 Scratchpad
2022-05-16T20:51:23Z
<p>Gold: /* Sub pages */</p>
<hr />
<div>Just a place to scratch out thoughts on how to measure progress on PHP8 compliance that will give us some confidence and a sense of progress.<br />
<br />
== How to start ==<br />
We need to be able to measure what is not currently working.<br />
<br />
=== Behat & PHPUnit testing ===<br />
We currently use this quite a bit. I would propose that we start with these as the initial measurement tool.<br />
<br />
This would mean that we first need to get the behat tests to test using the target version of PHP. Then run the tests and assume that all failures are related to PHP8 non-compliance.<br />
<br />
PHPUnit will need to be updated so it is compatible with PHP 8.1 -> I note PHPUnit supports PHP 8.0 starting from version 9.3.0.<br />
<br />
=== Other tools ===<br />
All tools have an option to specifically test for PHP 8.1.<br />
<br />
* [https://github.com/phan/phan Phan] - Static analysis that prefers to prove incorrectness rather than correctness and minimize false-positives.<br />
* [https://github.com/PHPCompatibility/PHPCompatibility PHPCompatibility] is an extension for [https://github.com/squizlabs/PHP_CodeSniffer PHP_CodeSniffer].<br />
* [https://github.com/wunderio/grumphp-php-compatibility grumphp-php-compatibility] is an extension of PHPCompatibility that allows it to word with [https://github.com/phpro/grumphp GrumPHP] (aka Bad Santa).<br />
<br />
== How to work ==<br />
=== Development Environment ===<br />
I'm going to maintain a single codebase to work from for this. I'll set up Apache to host 2 sites from it. One running on PHP 7.4 and the other on PHP 8.1. This will give the opportunity to test things in the browser in a very quick and simple manner. They will have a shared config so they'll have the same DB and maharadata area.<br />
<br />
=== Committing code ===<br />
I want this to be a quick, rapid process. A large number of very small patchsets. Each resolving a single Behat test.<br />
<br />
The commit message on a patchset will need to be small and concise. Ideally, just a reference to the behat test that this patchset fixes.<br />
<br />
There will be edge cases. I see these being where a fix on one test cascades out to multiple other tests and/or areas of Mahara. In these cases the commit message will need to be more comprehensive.<br />
<br />
== Measurement ==<br />
Once we have an idea of the amount of work we will have an idea on what is needed.<br />
<br />
=== Reporting ===<br />
If the number is large(ish) I'd like to add a dashboard or chatbot that reports on the progress.<br />
<br />
==== Code analysis ====<br />
A number of the Code Analysis tools have an option to output their findings in a machine readable format. These could be used in the reporting also.<br />
<br />
==== Gerrit ====<br />
Providing tags on patchsets are consistent we should be able to have a script search and scrape numbers from the Gerrit API. It is looking like this will be a simple thing. e.g. curl https://reviews.mahara.org/changes/?q=status:merged+topic:PHPStan<br />
<br />
Having looked at search options it looks like 'intopic' is preferred over 'topic' as we have multiple tags in this field. I also see that 'PHP8' has been used a few times already. I would suggest 'PHP8Compat' as the tag to use to make filtering easier to spot for this task.<br />
<br />
=== Sub pages ===<br />
[[User:Gold/PHP_8_Scratchpad/Add_PHP8|Add PHP 8.1 and PHP 7.4 to Apache2]]</div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad&diff=13255
User:Gold/PHP 8 Scratchpad
2022-05-16T20:49:08Z
<p>Gold: </p>
<hr />
<div>Just a place to scratch out thoughts on how to measure progress on PHP8 compliance that will give us some confidence and a sense of progress.<br />
<br />
== How to start ==<br />
We need to be able to measure what is not currently working.<br />
<br />
=== Behat & PHPUnit testing ===<br />
We currently use this quite a bit. I would propose that we start with these as the initial measurement tool.<br />
<br />
This would mean that we first need to get the behat tests to test using the target version of PHP. Then run the tests and assume that all failures are related to PHP8 non-compliance.<br />
<br />
PHPUnit will need to be updated so it is compatible with PHP 8.1 -> I note PHPUnit supports PHP 8.0 starting from version 9.3.0.<br />
<br />
=== Other tools ===<br />
All tools have an option to specifically test for PHP 8.1.<br />
<br />
* [https://github.com/phan/phan Phan] - Static analysis that prefers to prove incorrectness rather than correctness and minimize false-positives.<br />
* [https://github.com/PHPCompatibility/PHPCompatibility PHPCompatibility] is an extension for [https://github.com/squizlabs/PHP_CodeSniffer PHP_CodeSniffer].<br />
* [https://github.com/wunderio/grumphp-php-compatibility grumphp-php-compatibility] is an extension of PHPCompatibility that allows it to word with [https://github.com/phpro/grumphp GrumPHP] (aka Bad Santa).<br />
<br />
== How to work ==<br />
=== Development Environment ===<br />
I'm going to maintain a single codebase to work from for this. I'll set up Apache to host 2 sites from it. One running on PHP 7.4 and the other on PHP 8.1. This will give the opportunity to test things in the browser in a very quick and simple manner. They will have a shared config so they'll have the same DB and maharadata area.<br />
<br />
=== Committing code ===<br />
I want this to be a quick, rapid process. A large number of very small patchsets. Each resolving a single Behat test.<br />
<br />
The commit message on a patchset will need to be small and concise. Ideally, just a reference to the behat test that this patchset fixes.<br />
<br />
There will be edge cases. I see these being where a fix on one test cascades out to multiple other tests and/or areas of Mahara. In these cases the commit message will need to be more comprehensive.<br />
<br />
== Measurement ==<br />
Once we have an idea of the amount of work we will have an idea on what is needed.<br />
<br />
=== Reporting ===<br />
If the number is large(ish) I'd like to add a dashboard or chatbot that reports on the progress.<br />
<br />
==== Code analysis ====<br />
A number of the Code Analysis tools have an option to output their findings in a machine readable format. These could be used in the reporting also.<br />
<br />
==== Gerrit ====<br />
Providing tags on patchsets are consistent we should be able to have a script search and scrape numbers from the Gerrit API. It is looking like this will be a simple thing. e.g. curl https://reviews.mahara.org/changes/?q=status:merged+topic:PHPStan<br />
<br />
Having looked at search options it looks like 'intopic' is preferred over 'topic' as we have multiple tags in this field. I also see that 'PHP8' has been used a few times already. I would suggest 'PHP8Compat' as the tag to use to make filtering easier to spot for this task.<br />
<br />
=== Sub pages ===<br />
{{list subpages}}</div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad/Add_PHP8&diff=13254
User:Gold/PHP 8 Scratchpad/Add PHP8
2022-05-16T03:36:16Z
<p>Gold: Adding php-intl</p>
<hr />
<div>== Check available versions ==<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ apt-cache search php | sort | grep fpm<br />
php7.4-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)<br />
php-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) (default)<br />
</syntaxhighlight><br />
If there are no php 8 options we need to add the repo and check again.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo add-apt-repository ppa:ondrej/php<br />
</syntaxhighlight><br />
You will likely be challenged to install ppa:ondrej/apache2. We are not using mod-php so there is no need to do that.<br />
<br />
To check php8 is available rerun the <syntaxhighlight lang=bash inline>apt-cache</syntaxhighlight> call above. You should see many more options.<br />
<br />
=== Install PHP 7.4 and 8.1 ===<br />
Testing on PHP 7.4 and PHP 8.1 so install the related supporting packages that Mahara needs. There is no <syntaxhighlight lang=bash inline>php8.1-json</syntaxhighlight> package. This is part of <syntaxhighlight lang=bash inline>php8.1-common</syntaxhighlight> now.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo apt install \<br />
libapache2-mod-fcgid \<br />
php7.4-cli php7.4-common php7.4-curl php7.4-fpm php7.4-gd \<br />
php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-pgsql \<br />
php7.4-xml php7.4-xmlrpc php7.4-zip \<br />
php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd \<br />
php8.1-intl php8.1-ldap php8.1-mbstring php8.1-pgsql php8.1-xml \<br />
php8.1-xmlrpc php8.1-zip <br />
</syntaxhighlight><br />
<br />
=== Set up Apache ===<br />
==== PHP ====<br />
We need to modify how apache2 works with PHP. This requires that we switch from mod_php (the likely default install) to php-fpm which lets us use multiple stand-alone php servers that we can select on a site by site basis.<br />
<br />
Check which modules you have installed with <syntaxhighlight lang=bash inline>sudo apache2ctl -M</syntaxhighlight> as we may need to refer to the php version on some of the mods. We will use php7.2 as the reference. Swap this out for the version you currently have.<br />
<br />
* Disable mod-php with <syntaxhighlight lang=bash inline>sudo a2dismod php7.2</syntaxhighlight><br />
* Enable Fast-CGI <syntaxhighlight lang=bash inline>sudo a2enmod proxy_fcgi setenvif</syntaxhighlight><br />
* Disable MPM-prefork with <syntaxhighlight lang=bash inline>sudo a2dismod mpm_prefork</syntaxhighlight><br />
* Enable MPM-event <syntaxhighlight lang=bash inline>sudo a2enmod mpm_event</syntaxhighlight><br />
* Restart the server: <syntaxhighlight lang=bash inline>sudo systemctl restart apache2</syntaxhighlight><br />
<br />
Update php.ini for our new versions.<br />
<syntaxhighlight lang=bash><br />
sudo sh -c "echo 'post_max_size = 37M' >> /etc/php/7.4/cli/php.ini"<br />
sudo sh -c "echo 'upload_max_filesize = 32M' >> /etc/php/7.4/cli/php.ini"<br />
sudo sh -c "echo 'post_max_size = 37M' >> /etc/php/8.1/fpm/php.ini"<br />
sudo sh -c "echo 'upload_max_filesize = 32M' >> /etc/php/8.1/fpm/php.ini"<br />
</syntaxhighlight><br />
<br />
With PHP running as a service we need to restart this for new config to be seen now. You can use <syntaxhighlight lang=bash inline>sudo systemctl | grep fpm</syntaxhighlight> to list the php-fpm services you have running. For each restart with <syntaxhighlight lang=bash inline><br />
<syntaxhighlight lang=bash><br />
sudo systemctl restart php7.4-fpm.service<br />
sudo systemctl restart php8.1-fpm.service<br />
</syntaxhighlight><br />
<br />
==== SSL ====<br />
Enable SSL via <syntaxhighlight lang=bash inline>sudo a2enmod ssl</syntaxhighlight><br />
<br />
Set up the SSL certs. We use <syntaxhighlight land=bash inline>-days 365</syntaxhighlight> as apparently some modern browsers will reject SSL certs that last longer than that.<br />
<syntaxhighlight lang=bash><br />
sudo mkdir /etc/apache2/ssl && \<br />
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \<br />
-keyout /etc/apache2/ssl/apache.key \<br />
-out /etc/apache2/ssl/apache.crt<br />
</syntaxhighlight><br />
<br />
==== Sites ====<br />
I'm configuring 2 sites. One for PHP 7.4 and one for PHP 8.1. At this point I'm not supporting PHP 7.2 and 8.0 is not the default in Ubuntu 22.04 which is our target platform.<br />
<br />
I have updated my local <syntaxhighlight lang=bash inline>/etc/hosts</syntaxhighlight> file and added entries for https://php74.mahara.local/ and https://php81.mahara.local/. While I'm ignoring 7.2 and 8.0 I'm including the minor version for future-proofing. Just in case.<br />
<br />
Next the following is added as mahara-php8.conf and a <syntaxhighlight lang=bash inline>sudo a2ensite mahara-php8 && sudo systemctl reload apache2</syntaxhighlight> to enable it.<br />
<br />
===== /etc/apache2/sites-available/mahara-php8.conf =====<br />
<syntaxhighlight lang=xml><br />
<VirtualHost *:80><br />
ServerName php81.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
<br />
<Directory /home/gold/Mahara/codereview><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel debug<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
<br />
<IfModule mod_ssl.c><br />
<VirtualHost _default_:443><br />
ServerName php81.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.crt<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
<FilesMatch \.php$><br />
SSLOptions +StdEnvVars<br />
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"<br />
</FilesMatch><br />
<Directory /home/gold/Mahara/php8><br />
SSLOptions +StdEnvVars<br />
DirectoryIndex index.php<br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
</VirtualHost><br />
</IfModule><br />
<br />
<VirtualHost *:80><br />
ServerName php74.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
<br />
<Directory /home/gold/Mahara/codereview><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel debug<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
<br />
<IfModule mod_ssl.c><br />
<VirtualHost _default_:443><br />
ServerName php74.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.crt<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
<FilesMatch \.php$><br />
SSLOptions +StdEnvVars<br />
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"<br />
</FilesMatch><br />
<Directory /home/gold/Mahara/php8><br />
SSLOptions +StdEnvVars<br />
DirectoryIndex index.php<br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
</VirtualHost><br />
</IfModule><br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad/Add_PHP8&diff=13253
User:Gold/PHP 8 Scratchpad/Add PHP8
2022-05-16T03:30:56Z
<p>Gold: Config php...</p>
<hr />
<div>== Check available versions ==<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ apt-cache search php | sort | grep fpm<br />
php7.4-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)<br />
php-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) (default)<br />
</syntaxhighlight><br />
If there are no php 8 options we need to add the repo and check again.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo add-apt-repository ppa:ondrej/php<br />
</syntaxhighlight><br />
You will likely be challenged to install ppa:ondrej/apache2. We are not using mod-php so there is no need to do that.<br />
<br />
To check php8 is available rerun the <syntaxhighlight lang=bash inline>apt-cache</syntaxhighlight> call above. You should see many more options.<br />
<br />
=== Install PHP 7.4 and 8.1 ===<br />
Testing on PHP 7.4 and PHP 8.1 so install the related supporting packages that Mahara needs. There is no <syntaxhighlight lang=bash inline>php8.1-json</syntaxhighlight> package. This is part of <syntaxhighlight lang=bash inline>php8.1-common</syntaxhighlight> now.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo apt install \<br />
libapache2-mod-fcgid \<br />
php7.4-cli php7.4-common php7.4-curl php7.4-fpm php7.4-gd \<br />
php7.4-json php7.4-ldap php7.4-mbstring php7.4-pgsql \<br />
php7.4-xml php7.4-xmlrpc php7.4-zip \<br />
php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd \<br />
php8.1-ldap php8.1-mbstring php8.1-pgsql php8.1-xml \<br />
php8.1-xmlrpc php8.1-zip <br />
</syntaxhighlight><br />
<br />
=== Set up Apache ===<br />
==== PHP ====<br />
We need to modify how apache2 works with PHP. This requires that we switch from mod_php (the likely default install) to php-fpm which lets us use multiple stand-alone php servers that we can select on a site by site basis.<br />
<br />
Check which modules you have installed with <syntaxhighlight lang=bash inline>sudo apache2ctl -M</syntaxhighlight> as we may need to refer to the php version on some of the mods. We will use php7.2 as the reference. Swap this out for the version you currently have.<br />
<br />
* Disable mod-php with <syntaxhighlight lang=bash inline>sudo a2dismod php7.2</syntaxhighlight><br />
* Enable Fast-CGI <syntaxhighlight lang=bash inline>sudo a2enmod proxy_fcgi setenvif</syntaxhighlight><br />
* Disable MPM-prefork with <syntaxhighlight lang=bash inline>sudo a2dismod mpm_prefork</syntaxhighlight><br />
* Enable MPM-event <syntaxhighlight lang=bash inline>sudo a2enmod mpm_event</syntaxhighlight><br />
* Restart the server: <syntaxhighlight lang=bash inline>sudo systemctl restart apache2</syntaxhighlight><br />
<br />
Update php.ini for our new versions.<br />
<syntaxhighlight lang=bash><br />
sudo sh -c "echo 'post_max_size = 37M' >> /etc/php/7.4/cli/php.ini"<br />
sudo sh -c "echo 'upload_max_filesize = 32M' >> /etc/php/7.4/cli/php.ini"<br />
sudo sh -c "echo 'post_max_size = 37M' >> /etc/php/8.1/fpm/php.ini"<br />
sudo sh -c "echo 'upload_max_filesize = 32M' >> /etc/php/8.1/fpm/php.ini"<br />
</syntaxhighlight><br />
<br />
With PHP running as a service we need to restart this for new config to be seen now. You can use <syntaxhighlight lang=bash inline>sudo systemctl | grep fpm</syntaxhighlight> to list the php-fpm services you have running. For each restart with <syntaxhighlight lang=bash inline><br />
<syntaxhighlight lang=bash><br />
sudo systemctl restart php7.4-fpm.service<br />
sudo systemctl restart php8.1-fpm.service<br />
</syntaxhighlight><br />
<br />
==== SSL ====<br />
Enable SSL via <syntaxhighlight lang=bash inline>sudo a2enmod ssl</syntaxhighlight><br />
<br />
Set up the SSL certs. We use <syntaxhighlight land=bash inline>-days 365</syntaxhighlight> as apparently some modern browsers will reject SSL certs that last longer than that.<br />
<syntaxhighlight lang=bash><br />
sudo mkdir /etc/apache2/ssl && \<br />
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \<br />
-keyout /etc/apache2/ssl/apache.key \<br />
-out /etc/apache2/ssl/apache.crt<br />
</syntaxhighlight><br />
<br />
==== Sites ====<br />
I'm configuring 2 sites. One for PHP 7.4 and one for PHP 8.1. At this point I'm not supporting PHP 7.2 and 8.0 is not the default in Ubuntu 22.04 which is our target platform.<br />
<br />
I have updated my local <syntaxhighlight lang=bash inline>/etc/hosts</syntaxhighlight> file and added entries for https://php74.mahara.local/ and https://php81.mahara.local/. While I'm ignoring 7.2 and 8.0 I'm including the minor version for future-proofing. Just in case.<br />
<br />
Next the following is added as mahara-php8.conf and a <syntaxhighlight lang=bash inline>sudo a2ensite mahara-php8 && sudo systemctl reload apache2</syntaxhighlight> to enable it.<br />
<br />
===== /etc/apache2/sites-available/mahara-php8.conf =====<br />
<syntaxhighlight lang=xml><br />
<VirtualHost *:80><br />
ServerName php81.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
<br />
<Directory /home/gold/Mahara/codereview><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel debug<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
<br />
<IfModule mod_ssl.c><br />
<VirtualHost _default_:443><br />
ServerName php81.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.crt<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
<FilesMatch \.php$><br />
SSLOptions +StdEnvVars<br />
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"<br />
</FilesMatch><br />
<Directory /home/gold/Mahara/php8><br />
SSLOptions +StdEnvVars<br />
DirectoryIndex index.php<br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
</VirtualHost><br />
</IfModule><br />
<br />
<VirtualHost *:80><br />
ServerName php74.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
<br />
<Directory /home/gold/Mahara/codereview><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel debug<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
<br />
<IfModule mod_ssl.c><br />
<VirtualHost _default_:443><br />
ServerName php74.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.crt<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
<FilesMatch \.php$><br />
SSLOptions +StdEnvVars<br />
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"<br />
</FilesMatch><br />
<Directory /home/gold/Mahara/php8><br />
SSLOptions +StdEnvVars<br />
DirectoryIndex index.php<br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
</VirtualHost><br />
</IfModule><br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad/Add_PHP8&diff=13252
User:Gold/PHP 8 Scratchpad/Add PHP8
2022-05-16T03:09:02Z
<p>Gold: Add Apache setup details.</p>
<hr />
<div>== Check available versions ==<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ apt-cache search php | sort | grep fpm<br />
php7.4-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)<br />
php-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) (default)<br />
</syntaxhighlight><br />
If there are no php 8 options we need to add the repo and check again.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo add-apt-repository ppa:ondrej/php<br />
</syntaxhighlight><br />
You will likely be challenged to install ppa:ondrej/apache2. We are not using mod-php so there is no need to do that.<br />
<br />
To check php8 is available rerun the <syntaxhighlight lang=bash inline>apt-cache</syntaxhighlight> call above. You should see many more options.<br />
<br />
=== Install PHP 7.4 and 8.1 ===<br />
Testing on PHP 7.4 and PHP 8.1 so install the related supporting packages that Mahara needs. There is no <syntaxhighlight lang=bash inline>php8.1-json</syntaxhighlight> package. This is part of <syntaxhighlight lang=bash inline>php8.1-common</syntaxhighlight> now.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo apt install \<br />
libapache2-mod-fcgid \<br />
php7.4-cli php7.4-common php7.4-curl php7.4-fpm php7.4-gd \<br />
php7.4-json php7.4-ldap php7.4-mbstring php7.4-pgsql \<br />
php7.4-xml php7.4-xmlrpc php7.4-zip \<br />
php8.1-cli php8.1-common php8.1-curl php8.1-fpm php8.1-gd \<br />
php8.1-ldap php8.1-mbstring php8.1-pgsql php8.1-xml \<br />
php8.1-xmlrpc php8.1-zip <br />
</syntaxhighlight><br />
<br />
=== Set up Apache ===<br />
==== PHP ====<br />
We need to modify how apache2 works with PHP. This requires that we switch from mod_php (the likely default install) to php-fpm which lets us use multiple stand-alone php servers that we can select on a site by site basis.<br />
<br />
Check which modules you have installed with <syntaxhighlight lang=bash inline>sudo apache2ctl -M</syntaxhighlight> as we may need to refer to the php version on some of the mods. We will use php7.2 as the reference. Swap this out for the version you currently have.<br />
<br />
* Disable mod-php with <syntaxhighlight lang=bash inline>sudo a2dismod php7.2</syntaxhighlight><br />
* Enable Fast-CGI <syntaxhighlight lang=bash inline>sudo a2enmod proxy_fcgi setenvif</syntaxhighlight><br />
* Disable MPM-prefork with <syntaxhighlight lang=bash inline>sudo a2dismod mpm_prefork</syntaxhighlight><br />
* Enable MPM-event <syntaxhighlight lang=bash inline>sudo a2enmod mpm_event</syntaxhighlight><br />
* Restart the server: <syntaxhighlight lang=bash inline>sudo systemctl restart apache2</syntaxhighlight><br />
<br />
==== SSL ====<br />
Enable SSL via <syntaxhighlight lang=bash inline>sudo a2enmod ssl</syntaxhighlight><br />
<br />
Set up the SSL certs. We use <syntaxhighlight land=bash inline>-days 365</syntaxhighlight> as apparently some modern browsers will reject SSL certs that last longer than that.<br />
<syntaxhighlight lang=bash><br />
sudo mkdir /etc/apache2/ssl && \<br />
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \<br />
-keyout /etc/apache2/ssl/apache.key \<br />
-out /etc/apache2/ssl/apache.crt<br />
</syntaxhighlight><br />
<br />
==== Sites ====<br />
I'm configuring 2 sites. One for PHP 7.4 and one for PHP 8.1. At this point I'm not supporting PHP 7.2 and 8.0 is not the default in Ubuntu 22.04 which is our target platform.<br />
<br />
I have updated my local <syntaxhighlight lang=bash inline>/etc/hosts</syntaxhighlight> file and added entries for https://php74.mahara.local/ and https://php81.mahara.local/. While I'm ignoring 7.2 and 8.0 I'm including the minor version for future-proofing. Just in case.<br />
<br />
Next the following is added as mahara-php8.conf and a <syntaxhighlight lang=bash inline>sudo a2ensite mahara-php8 && sudo systemctl reload apache2</syntaxhighlight> to enable it.<br />
<br />
===== /etc/apache2/sites-available/mahara-php8.conf =====<br />
<syntaxhighlight lang=xml><br />
<VirtualHost *:80><br />
ServerName php81.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
<br />
<Directory /home/gold/Mahara/codereview><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel debug<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
<br />
<IfModule mod_ssl.c><br />
<VirtualHost _default_:443><br />
ServerName php81.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.crt<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
<FilesMatch \.php$><br />
SSLOptions +StdEnvVars<br />
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"<br />
</FilesMatch><br />
<Directory /home/gold/Mahara/php8><br />
SSLOptions +StdEnvVars<br />
DirectoryIndex index.php<br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
</VirtualHost><br />
</IfModule><br />
<br />
<VirtualHost *:80><br />
ServerName php74.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
<br />
<Directory /home/gold/Mahara/codereview><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel debug<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
<br />
<IfModule mod_ssl.c><br />
<VirtualHost _default_:443><br />
ServerName php74.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.crt<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
<FilesMatch \.php$><br />
SSLOptions +StdEnvVars<br />
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"<br />
</FilesMatch><br />
<Directory /home/gold/Mahara/php8><br />
SSLOptions +StdEnvVars<br />
DirectoryIndex index.php<br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
</VirtualHost><br />
</IfModule><br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad/Add_PHP8&diff=13250
User:Gold/PHP 8 Scratchpad/Add PHP8
2022-05-16T02:13:45Z
<p>Gold: </p>
<hr />
<div>== Check available versions ==<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ apt-cache search php | sort | grep fpm<br />
php7.4-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)<br />
php-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) (default)<br />
</syntaxhighlight><br />
If there are no php 8 options we need to add the repo and check again.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo add-apt-repository ppa:ondrej/php<br />
</syntaxhighlight><br />
You will likely be challenged to install ppa:ondrej/apache2. We are not using mod-php so there is no need to do that.<br />
<br />
To check php8 is available rerun the <syntaxhighlight lang=bash inline>apt-cache</syntaxhighlight> call above. You should see many more options.<br />
<br />
=== Install PHP 7.4 and 8.1 ===<br />
Testing on PHP 7.4 and PHP 8.1 so install the related supporting packages that Mahara needs. There is no <syntaxhighlight lang=bash inline>php8.1-json</syntaxhighlight> package. This is part of <syntaxhighlight lang=bash inline>php8.1-common</syntaxhighlight> now.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo apt install \<br />
php7.4-cli php7.4-common php7.4-curl php7.4-gd \<br />
php7.4-json php7.4-ldap php7.4-mbstring php7.4-pgsql \<br />
php7.4-xml php7.4-xmlrpc php7.4-zip \<br />
php8.1-cli php8.1-common php8.1-curl php8.1-gd \<br />
php8.1-ldap php8.1-mbstring php8.1-pgsql php8.1-xml \<br />
php8.1-xmlrpc php8.1-zip <br />
</syntaxhighlight><br />
<br />
=== Set up Apache ===<br />
I'm configuring 2 sites. One for PHP 7.4 and one for PHP 8.1. At this point I'm not supporting PHP 7.2 and 8.0 is not the default in Ubuntu 22.04 which is our target platform.<br />
<br />
I have updated my local <syntaxhighlight lang=bash inline>/etc/hosts</syntaxhighlight> file and added entries for https://php74.mahara.local/ and https://php81.mahara.local/. While I'm ignoring 7.2 and 8.0 I'm including the minor version for future-proofing. Just in case.<br />
<br />
Next the following is added as mahara-php8.conf and a <syntaxhighlight lang=bash inline>sudo a2ensite mahara-php8 && sudo systemctl reload apache2</syntaxhighlight> to enable it.<br />
<br />
<br />
<br />
==== /etc/apache2/sites-available/mahara-php8.conf ====<br />
<syntaxhighlight lang=xml><br />
<VirtualHost *:80><br />
ServerName php81.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
<br />
<Directory /home/gold/Mahara/codereview><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel debug<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
<br />
<IfModule mod_ssl.c><br />
<VirtualHost _default_:443><br />
ServerName php81.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.crt<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
<FilesMatch \.php$><br />
SSLOptions +StdEnvVars<br />
SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost"<br />
</FilesMatch><br />
<Directory /home/gold/Mahara/php8><br />
SSLOptions +StdEnvVars<br />
DirectoryIndex index.php<br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
</VirtualHost><br />
</IfModule><br />
<br />
<VirtualHost *:80><br />
ServerName php74.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
<br />
<Directory /home/gold/Mahara/codereview><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel debug<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
<br />
<IfModule mod_ssl.c><br />
<VirtualHost _default_:443><br />
ServerName php74.mahara.local<br />
DocumentRoot /home/gold/Mahara/php8/htdocs<br />
SSLEngine on<br />
SSLCertificateFile /etc/apache2/ssl/apache.crt<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
<FilesMatch \.php$><br />
SSLOptions +StdEnvVars<br />
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"<br />
</FilesMatch><br />
<Directory /home/gold/Mahara/php8><br />
SSLOptions +StdEnvVars<br />
DirectoryIndex index.php<br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
</VirtualHost><br />
</IfModule><br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad/Add_PHP8&diff=13249
User:Gold/PHP 8 Scratchpad/Add PHP8
2022-05-16T02:01:00Z
<p>Gold: Created page with "== Check available versions == <syntaxhighlight lang=bash> gold@shipnet:~/$ apt-cache search php | sort | grep fpm php7.4-fpm - server-side, HTML-embedded scripting language (..."</p>
<hr />
<div>== Check available versions ==<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ apt-cache search php | sort | grep fpm<br />
php7.4-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)<br />
php-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) (default)<br />
</syntaxhighlight><br />
If there are no php 8 options we need to add the repo and check again.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo add-apt-repository ppa:ondrej/php<br />
</syntaxhighlight><br />
You will likely be challenged to install ppa:ondrej/apache2. We are not using mod-php so there is no need to do that.<br />
<br />
To check php8 is available rerun the <syntaxhighlight lang=bash inline>apt-cache</syntaxhighlight> call above. You should see many more options.<br />
<br />
=== Install PHP 7.4 and 8.1 ===<br />
Testing on PHP 7.4 and PHP 8.1 so install the related supporting packages that Mahara needs. There is no <syntaxhighlight lang=bash inline>php8.1-json</syntaxhighlight> package. This is part of <syntaxhighlight lang=bash inline>php8.1-common</syntaxhighlight> now.<br />
<syntaxhighlight lang=bash><br />
gold@shipnet:~/$ sudo apt install \<br />
php7.4-cli php7.4-common php7.4-curl php7.4-gd \<br />
php7.4-json php7.4-ldap php7.4-mbstring php7.4-pgsql \<br />
php7.4-xml php7.4-xmlrpc php7.4-zip \<br />
php8.1-cli php8.1-common php8.1-curl php8.1-gd \<br />
php8.1-ldap php8.1-mbstring php8.1-pgsql php8.1-xml \<br />
php8.1-xmlrpc php8.1-zip <br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad&diff=13248
User:Gold/PHP 8 Scratchpad
2022-05-15T23:20:54Z
<p>Gold: Gerrit filtering and a tag suggestion</p>
<hr />
<div>Just a place to scratch out thoughts on how to measure progress on PHP8 compliance that will give us some confidence and a sense of progress.<br />
<br />
== How to start ==<br />
We need to be able to measure what is not currently working.<br />
<br />
=== Behat & PHPUnit testing ===<br />
We currently use this quite a bit. I would propose that we start with these as the initial measurement tool.<br />
<br />
This would mean that we first need to get the behat tests to test using the target version of PHP. Then run the tests and assume that all failures are related to PHP8 non-compliance.<br />
<br />
=== Other tools ===<br />
All tools have an option to specifically test for PHP 8.1.<br />
<br />
* [https://github.com/phan/phan Phan] - Static analysis that prefers to prove incorrectness rather than correctness and minimize false-positives.<br />
* [https://github.com/PHPCompatibility/PHPCompatibility PHPCompatibility] is an extension for [https://github.com/squizlabs/PHP_CodeSniffer PHP_CodeSniffer].<br />
* [https://github.com/wunderio/grumphp-php-compatibility grumphp-php-compatibility] is an extension of PHPCompatibility that allows it to word with [https://github.com/phpro/grumphp GrumPHP] (aka Bad Santa).<br />
<br />
== How to work ==<br />
=== Development Environment ===<br />
I'm going to maintain a single codebase to work from for this. I'll set up Apache to host 2 sites from it. One running on PHP 7.4 and the other on PHP 8.1. This will give the opportunity to test things in the browser in a very quick and simple manner. They will have a shared config so they'll have the same DB and maharadata area.<br />
<br />
=== Committing code ===<br />
I want this to be a quick, rapid process. A large number of very small patchsets. Each resolving a single Behat test.<br />
<br />
The commit message on a patchset will need to be small and concise. Ideally, just a reference to the behat test that this patchset fixes.<br />
<br />
There will be edge cases. I see these being where a fix on one test cascades out to multiple other tests and/or areas of Mahara. In these cases the commit message will need to be more comprehensive.<br />
<br />
== Measurement ==<br />
Once we have an idea of the amount of work we will have an idea on what is needed.<br />
<br />
=== Reporting ===<br />
If the number is large(ish) I'd like to add a dashboard or chatbot that reports on the progress.<br />
<br />
==== Code analysis ====<br />
A number of the Code Analysis tools have an option to output their findings in a machine readable format. These could be used in the reporting also.<br />
<br />
==== Gerrit ====<br />
Providing tags on patchsets are consistent we should be able to have a script search and scrape numbers from the Gerrit API. It is looking like this will be a simple thing. e.g. curl https://reviews.mahara.org/changes/?q=status:merged+topic:PHPStan<br />
<br />
Having looked at search options it looks like 'intopic' is preferred over 'topic' as we have multiple tags in this field. I also see that 'PHP8' has been used a few times already. I would suggest 'PHP8Compat' as the tag to use to make filtering easier to spot for this task.</div>
Gold
https://wiki.mahara.org/index.php?title=User:Gold/PHP_8_Scratchpad&diff=13247
User:Gold/PHP 8 Scratchpad
2022-05-15T22:24:00Z
<p>Gold: Thoughts on PHP8 compatibility.</p>
<hr />
<div>Just a place to scratch out thoughts on how to measure progress on PHP8 compliance that will give us some confidence and a sense of progress.<br />
<br />
== How to start ==<br />
We need to be able to measure what is not currently working.<br />
<br />
=== Behat & PHPUnit testing ===<br />
We currently use this quite a bit. I would propose that we start with these as the initial measurement tool.<br />
<br />
This would mean that we first need to get the behat tests to test using the target version of PHP. Then run the tests and assume that all failures are related to PHP8 non-compliance.<br />
<br />
=== Other tools ===<br />
All tools have an option to specifically test for PHP 8.1.<br />
<br />
* [https://github.com/phan/phan Phan] - Static analysis that prefers to prove incorrectness rather than correctness and minimize false-positives.<br />
* [https://github.com/PHPCompatibility/PHPCompatibility PHPCompatibility] is an extension for [https://github.com/squizlabs/PHP_CodeSniffer PHP_CodeSniffer].<br />
* [https://github.com/wunderio/grumphp-php-compatibility grumphp-php-compatibility] is an extension of PHPCompatibility that allows it to word with [https://github.com/phpro/grumphp GrumPHP] (aka Bad Santa).<br />
<br />
== How to work ==<br />
=== Development Environment ===<br />
I'm going to maintain a single codebase to work from for this. I'll set up Apache to host 2 sites from it. One running on PHP 7.4 and the other on PHP 8.1. This will give the opportunity to test things in the browser in a very quick and simple manner. They will have a shared config so they'll have the same DB and maharadata area.<br />
<br />
=== Committing code ===<br />
I want this to be a quick, rapid process. A large number of very small patchsets. Each resolving a single Behat test.<br />
<br />
The commit message on a patchset will need to be small and concise. Ideally, just a reference to the behat test that this patchset fixes.<br />
<br />
There will be edge cases. I see these being where a fix on one test cascades out to multiple other tests and/or areas of Mahara. In these cases the commit message will need to be more comprehensive.<br />
<br />
== Measurement ==<br />
Once we have an idea of the amount of work we will have an idea on what is needed.<br />
<br />
=== Reporting ===<br />
If the number is large(ish) I'd like to add a dashboard or chatbot that reports on the progress.<br />
<br />
==== Code analysis ====<br />
A number of the Code Analysis tools have an option to output their findings in a machine readable format. These could be used in the reporting also.<br />
<br />
==== Gerrit ====<br />
Providing tags on patchsets are consistent we should be able to have a script search and scrape numbers from the Gerrit API. It is looking like this will be a simple thing. e.g. curl https://reviews.mahara.org/changes/?q=status:merged+topic:PHPStan</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Release_day&diff=13058
Developer Area/Release Instructions/Release day
2022-04-28T02:01:01Z
<p>Gold: /* Run the script */ refactor for readability.</p>
<hr />
<div>Not ready? [[Developer Area/Release Instructions/Pre-release|> Go to 'Pre-release]]'<br />
<br />
==📋 Final checks before starting release day==<br />
<br />
🟡 '''Security team''' (if you don't have +2 review status, you won't be able to see these patches)<br />
<br />
🚨 Make sure that any security reviews/patches are merged before proceeding 🚨<br />
<br />
*Merge the 'Private' security patches.<br />
*Update the related Launchpad bugs to 'Public security'.<br />
<br />
🟡 '''Release manager'''<br />
<br />
*CVE #'s - Security issues have an assigned CVE number?<br />
*Backporting - security fixes backported to all supported versions that need them?<br />
*Bugs fixed - all bugs going into his release have their fixes ''merged'' for all supported versions?<br />
*Comms - to Mahara partners + drafted the [[Developer Area/Release Instructions/Pre-release investigation and tasks#.F0.9F.93.B0 Comms|forum posts]]?<br />
<br />
🟡 '''All devs'''<br />
<br />
*What minor point release are you going to do?<br />
*(Security team) Cherry-pick the security bugs with the status ' Confirmed' to your minor point branch. e.g. _DEV<br />
*Have you created a [[Developer Area/Release Instructions/Pre-release investigation and tasks#Creating a release on Launchpad|release]] on the milestone on Launchpad to receive the release generated tarballs?<br />
*<code>git pull [https://git.mahara.org/scripts/mahara-scripts mahara-scripts]</code><br />
*Valid GPG - do you have a [https://wiki.mahara.org/wiki/Developer_Area/Release_Instructions/Creating_a_GPG_key valid GPG key] added to your Launchpad account? See https://launchpad.net/~username/+editpgpkeys<br />
*<code>lptools</code> - do you have the lp-upload-project installed for uploading the release tars? <code> apt-get install lptools</code><br />
<br />
==📓 Prepare the changelog and release notes==<br />
Use the templates below to structure your changelog and release notes.<br />
<br />
====(Release candidate) Skip the changelog and release notes====<br />
Do not populate the change log. In the release notes put something similar to ''<nowiki/>'First release candidate for 1.4''<nowiki/>'.<br />
<br />
====Changelog template:====<br />
Note: You can copy the list of bugs from the milestone page (https://launchpad.net/mahara/+milestone/XX.YY.Z) and re-format the list. <br />
<br />
[[File:Changelog template.png|720x720px]]<br /><br />
====Release notes template:====<br />
Note: Replace the <code><XX.XX.X></code> with the milestone/version you are working on.<br />
Mahara <code><XX.XX.X></code> Release Notes<br />
<br />
This is a stable release of Mahara <code><XX.XX></code>. Stable release are fit for general use. <br />
<br />
If you find a bug, please report it to the tracker:<br />
<br />
https://bugs.launchpad.net/mahara/+filebug<br />
<br />
This release includes an upgrade path from 1.1.0. <br />
<br />
If you wish to upgrade, we encourage you to make a copy of your website and test <br />
<br />
the upgrade on it first, to minimise the effect of any potential unforeseen problems.<br />
<br />
==⚡ The release script==<br />
<br />
===About the script===<br />
<br />
*A git repo will be created at <code>/tmp/mahara.####/mahara/</code> cloned from https://git.mahara.org/mahara/mahara .<br />
*It builds Mahara archives based on the given _DEV branch and puts thme into your current folder. ( <code>.zip</code>, <code>.tar.gz.asc</code>, and <code>.tar.bz2.asc</code>)<br />
*You will get a <code>release-X.Y.Z-cleanup.sh</code> script to run later.<br />
*(Major releases .0) A new <code>_STABLE</code> branch is created off the <code>_DEV</code> branch.<br />
**Look in the local <code>/tmp/</code> clone of mahara to check that it does.<br />
**Check that the the release cleanup script pushes things to the right branch<br />
<br />
===Run the script===<br />
<br />
#Go into <code>mahara-scripts</code> and <code>git pull</code> the latest version.<br />
#Run <code>./release.php X.Y.Z X.Y_DEV</code>.<br />
#* <code>X.Y.Z</code> is the new branch that will be made. This is also used in the archive file names.<br />
#* <code>X.Y_DEV</code> is the existing branch we will create the new release from.<br />
#* If the <code>Z</code> in <code>X.Y.Z</code> is "0" this will also create a new <code>_STABLE</code> branch.<br />
#When prompted, insert your changelog.<br />
<br />
Any data you enter for the changelog or release notes prompts will go into the Launchpad release page. You can enter it here, or leave it empty here and enter it directly into the Launchpad webpage.<br />
<br />
'''Check the terminal output in case there are GPG errors'''<br />
<br />
E.g. <code>Tag new version bump commit as 'X.YRC2_RELEASE' error: gpg failed to sign the data error: unable to sign the tag</code><br />
<br />
So this is what I did to fix it, all commands are on command line:<br />
<br />
#Update the gpg program with: <code> git config --global gpg.program gpg2 </code><br />
#Test if it is working with: <code> echo "test" | gpg2 --clearsign</code><br />
<br />
It wasn't so I had to do: <code> export GPG_TTY=$(tty)</code><br />
<br />
then run again <code> echo "test" | gpg2 --clearsign</code><br />
<br />
Run <code>release.php</code> command again and check if it still gives the error.<br />
<br />
'''Do not reboot your machine''' in the middle of doing a release or you will have to run through the release script again.<br />
<br />
Note: For release candidates the commit message should be empty.<br />
<br />
==✅ Testing==<br />
With continuous Behat testing throughout development, we only need to some basic manual testing. <br />
<br />
===Extract the build and prep the database===<br />
Test that we can install Mahara with the pre-built packages.<br />
<br />
#Extract the build (<code>.tar</code> or <code>.zip</code>) of your pre-built Mahara and make sure you can connect to it via web installer.<br />
#Drop the database and create a new blank one.<br />
<br />
===Test case: Install the site with the web interface===<br />
<br />
#Go to your Mahara site and click 'Install'.<br />
#Reset your database and repeat with MySQL/PostgreSQL.<br />
<br />
'''Note:''' If we are doing a <code>.0</code> release the install will complain about missing <code>$versions->$currentmajorversion</code>->latest release number but don't panic this is because the local copy of the release has the series version that doesn't exist upstream yet so we can ignore this warning·<br />
<br />
===Test case: Manual upgrade with the CLI and the web interface===<br />
Web interface<br />
<br />
#Install a fresh site on version <code>X.Y.Z(-1)</code>, i.e. (an earlier version).<br />
#Create a portfolio, a blog with a blogpost, a group with a forum and forum post.<br />
#Switch the code to your current release.<br />
#Check that everything still works.<br />
#Go to the site and click 'Upgrade' to get the site version to <code>X.Y.Z</code> .<br />
#Repeat with PostgreSQL/MySQL.<br />
<br />
CLI <br />
<br />
#Install a fresh site on version <code>X.Y.Z(-1)</code>, i.e. (an earlier version).<br />
#Create a portfolio, a blog with a blogpost, a group with a forum and forum post.<br />
#Switch the code to your current release.<br />
#Upgrade to <code>X.Y.Z</code> with the CLI script <code>htdocs/admin/cli/upgrade.php</code><br />
#Check that everything still works.<br />
#Repeat with PostgreSQL/MySQL.<br />
<br />
==🚀 Sign and upload the tarballs==<br />
<br />
======Run <code>./release-X.Y.Z-cleanup.sh</code> to upload the release and clean up any temporary files.======<br />
'''Note I''': If running this file stops before completion for any reason you will need to edit it and comment out the bits that did finish so that you don't run those buts twice then try the script again. For example the script does the bit where it pushes the tag to the git remote and signs the zipped files but doesn't upload them - you would need to comment out the 'git push' lines and the 'gpg --armor' lines.<br />
<br />
'''Note II''': If the zipped files fail to upload to Launchpad via the script then you will need to manually upload the zipped files and their corresponding .asc files. To do this go to the milestone page in Launchpad and click the 'Add download file' link. Set the description to: release tarball and choose the matching zipped and .asc file to upload. You will need to do this for all the three types: <code>.zip, .tar.bz2, .tar.gz</code><br />
<br />
==🐛 Update bugs on the tracker==<br />
Go to Launchpad and click on all of the bugs targeted for that milestone and move them from 'Fix committed' to 'Fix released'.<br />
<br />
'''OR''' <br />
<br />
In Firefox, go to the milestone page and open all the bugs in new tabs at once by pasting the following into the browser console.<br />
var result = document.evaluate("//tbody//tr[contains(., 'Committed')]//a[contains(@href, 'bugs')]", document, null, XPathResult.ANY_TYPE,null ); var mycount=0; while(node = result.iterateNext()) { window.open(node.href, '_blank'); mycount++; if (mycount == 50) { break; } }<br />
You will ned to allow popups for the site for this to work and it will open up to 50 bugs where the status is 'Committed'. If you have more than 50 to do - mark the first ones 'released' - refresh the list and do again.<br />
<br />
Now is also a good time to create the next release number in the series. Any remaining bugs that were not fixed for this release may be transferred to the next one, if they're still on the roadmap but were simply delayed.<br />
<br />
==📔 Put the release notes on the wiki page==<br />
This is just adding a link to the right page on Launchpad, we no longer have a duplicate copy of the release notes on the wiki.<br />
<br />
==📗 Update wiki.mahara.org releases page==<br />
<br />
#Go to the [[Releases|releases page]]'s section 'Current and upcoming releases.'<br />
#Update the text: ''"The latest '''stable''' version of Mahara is <code>MAJOR_VERSION</code> , released on <code>DATE</code>"''<br />
#Add a new row for the major release.<br />
#Add the release date and release notes for the minor point releases.<br />
#Update the major version where 18 months has passed since its release to be 'unsupported'.<br />
<br />
[[File:Updating current and upcoming releases.png|799x799px]]<br />
<br />
==🌏 Update the language packs==<br />
🟡 Release manager<br />
<br />
[[Developer Area/Language Packs/Launchpad Branching|Create a new translation branch on launchpad.net and update the language scripts]] for the new release so that they appear on http://langpacks.mahara.org.<br />
<br />
Check that the language packs have updated:<br />
<br />
#Install a site on the released version.<br />
#Install the Japanese language pack (a fully translated lang pack is easier to check with)<br />
<br />
Note: The number of language packs we support can be more than the supported Mahara versions as some people want to update old lang packs.<br />
<br />
==📣 Announcements==<br />
🟡 Release manager | Kristina<br />
<br />
General announcements<br />
<br />
#Publish your prepared [https://mahara.org/interaction/forum/view.php?id=43 security forum] and [https://mahara.org/interaction/forum/view.php?id=1 news forum] posts.<br />
#(RC only) Publish news [[Developer Area/Release Instructions/Release day#.28Release candidate.29 Announcements|forum posts to get people to test the release]].<br />
#(Major release only) Publish news [[Developer Area/Release Instructions/Release day#.28Major release.29 Announcements|forum posts to announce the major release.]]<br />
<br />
==🔒 Update MITRE about release for CVE number publication==<br />
🟡 Kristina<br />
<br />
If the release included security updates for which CVE numbers had been issued, [https://cveform.mitre.org/ request an update to the CVE number] so it can be published.<br />
<br />
==📋 Additional tasks==<br />
Go to [[Developer Area/Release Instructions/Release day#.28Major%20release.29%20Announcements|'Major release' tasks]]<br />
<br />
===(Release candidate) Announcements===<br />
The main purpose of an RC is to get people to test the release for any major bugs. Therefore, we do not consider the RC as a release and only announce it through: [https://twitter.com/maharaproject Twitter], IRC, and the mahara.org news forum.<br />
<br />
===(Release candidate) Update master.dev.mahara.org===<br />
Updating master.dev.mahara.org however is useful for users who do not have somewhere to set up a test instance but would like to check out the changes.<br />
<br />
===(Release candidate) News forum post template for RC1===<br />
🟡 Kristina<br />
<br />
[https://mahara.org/interaction/forum/topic.php?id=8934 Example for 21.10] and [https://mahara.org/interaction/forum/topic.php?id=8934 22.04].<br />
<br />
===(Release candidate) News forum template for second and/or final RC===<br />
🟡 Kristina<br />
<br />
''Note: Outdated - needs updating''<br />
<br />
Subject: Second release candidate for Mahara 1.4 available<br />
<br />
Based on the feedback we have received so far, this will most likely be the last release candidate before the final 1.4 release:<br />
<br />
*https://launchpad.net/mahara/1.4/1.4rc2<br />
<br />
New Features for the Release Candidate are listed on Launchpad with the newfeature tag:<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.4 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If you haven't had a chance to test it out yet, please do so now and report any bugs on the tracker:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
This is your last chance to make sure your upgrade to 1.4 will be smooth. If nothing major is reported in the next few days, we will be cutting the 1.4.0 release in about a week.<br />
<br />
Cheers,<br />
<br />
The 1.4 Release Managers<br />
<br />
===(Major release) Announcements===<br />
🟡 Kristina<br />
<br />
Release notes posted in the [https://mahara.org/interaction/forum/topic.php?id=8955 News forum] (copy the format from the release notes for the previous release).<br />
<br />
#Publish the news forum post to announce the major release (includes [[Developer Area/Release Instructions/Release day#.28Major release.29 Generate the git stats|git stats]]).<br />
#Change the topic of <code>#mahara</code> and include a link to forum topic on <code>#mahara-dev</code><br />
#Make a post in the following socials:<br />
<br />
*[https://twitter.com/maharaproject Twitter]<br />
*[http://freecode.com/projects/mahara freecode]<br />
*[https://www.linkedin.com/groups?home=&gid=2037561 LinkedIn]<br />
*Facebook: [https://www.facebook.com/groups/MaharaDE13/ Mahara DE], [https://www.facebook.com/groups/mahara.users/ Mahara in Japanese], [https://www.facebook.com/groups/moodlemaharameetup/ Moodle-Mahara Meetup], and [https://www.facebook.com/groups/maharausergroup/ MUG]<br />
*Identi.ca post which will also immediately post to Twitter.<br />
*Any other places where you want to announce the release.<br />
<br />
===(Major release) Manage merge conflicts in version.php in backports===<br />
When backporting patches, sometimes the <code>htdocs/lib/version.php</code> will get merge conflicts because of a new DB upgrade step.<br />
<br />
[[File:Example backporting from 22.04 to 21.10.png|654x654px]]<br />
<br />
Solve the conflict:<br />
<br />
#Keep the set of code that matches to the version you're working with, e.g. in this case, the top section.<br />
#Increment the <code>$config->version</code> number by 1.<br />
#Copy the incremented version number and replace the last step in <code>htdocs/lib/db/upgrade.php</code><br />
#Check that the new number is higher than the previous upgrade step.<br />
<br />
In certain situations, $config->version number needs to be incremented and copied over the most latest DB upgrade steps, ensuring that it's later than the other DB upgrade steps.<br />
<br />
===(Major release) Bump the <code>stable_version</code> on mahara.org===<br />
This is done via the <code>htdocs/admin/cli/create_version.php</code> script which is controlled by cron and will update once a day.<br />
<br />
If you can't wait for the cron you can log into the server and run the CLI script manually:<br />
sudo -u www-data php create_version.php<br />
Note: Deploying the change to testing site will not show change - only deploy to production will<br />
<br />
===(Major release) Update community sites install (currently Catalyst hosted)===<br />
Check if any of the merge-branches need attention: https://go.elearning.catalyst.net.nz/go/pipelines#!/<br />
<br />
*demo.mahara.org, including prep site and change the version number and release date on the homepage and dashboard page (via Admin menu -> Configure site -> Static pages)<br />
*mahara.org (at minimum to latest minor point release of the supported version it runs on)<br />
*master.dev.mahara.org<br />
<br />
Update the installed language packs on the demo site. As a guideline, language packs that are 90% or more translated should be installed.<br />
<br />
===(Major release) Generate the git stats===<br />
The git contributor stats go in the release announcement on the Mahara News forum.<br />
<br />
#Clone our version of <code>gitdm</code> from the [https://git.mahara.org/scripts/mahara-scripts mahara-scripts repo]: <code>git clone git@git.mahara.org:scripts/mahara-scripts.git</code><br />
#Get the name of the current release branch, e.g. <code>21.10_DEV</code><br />
#Get the previous branch's first release tag, e.g. <code>21.04.0_RELEASE</code><br />
<br />
Generate the stats:<br />
<br />
#<code>cd ~/path/to/mahara.git (your local mahara repo)</code><br />
#<code>git log -p -M --no-merges 21.04.0_RELEASE..21.10_DEV > ~/mahara.log</code><br />
#<code>cd ~/code/mahara-scripts/gitdm/</code><br />
#<code>cat ~/mahara.log | ./gitdm -c mahara.config -u -s -z -o results -h results.html</code><br />
<br />
Check the results file:<br />
<br />
*Ensure that developers are only listed once (otherwise add them to the <code>mahara.aliases</code> file).<br />
*Make sure that there is no "(unknown)" company by making sure that all of the necessary mappings are in <code>mahara.domain-map</code>.<br />
*If there are "(unknown)" company results, look through the generated text file "<code>database.dump</code>" to locate the unmapped individuals/emails.<br />
<br />
===(Major release) Update Launchpad series statuses===<br />
Update the status of our series in Launchpad for both the [https://launchpad.net/mahara Mahara] and [https://launchpad.net/mahara-lang Mahara-Lang] projects:<br />
<br />
*Change the status of the <u>future/trunk series</u> to '''"Active development"''' and its description to '''"Release of Mahara X.Y, scheduled for April/October YYYY"'''<br />
*Change the status of the series <u>just released</u> to '''"Current stable release"'''<br />
*Change the status of the series of all the <u>supported series</u> to '''"Supported"'''<br />
*Change the status of the series that has just fallen <u>out of support</u> to '''"Obsolete"'''<br />
<br />
===(Major release) Update the Mahara manual===<br />
<br />
#Remove the version that is now out of support from the quick links to older manuals.<br />
#Mention on the now unsupported manual that it is unsupported.<br />
#Change the sentence on the index page of the new release to include the release date and add a link to the release announcement.<br />
#Change the redirect in the index.html of the manual-builder package (Catalyst only).</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/90&diff=12914
Developer Area/Developer Meetings/90
2022-04-14T00:32:21Z
<p>Gold: The next Dev Meeting agenda</p>
<hr />
<div>Agenda for the 90th Mahara developer meeting on 18 May 2022 at 07:30 UTC ([https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220518T0730&p1=264 check your time zone]).<br />
<br />
We will meet using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our #Mahara channel on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
<br />
* Chair: Dianne Tennent<br />
* Minute taker: Kristina Hoeppner<br />
<br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
<br />
==Agenda==<br />
<br />
===Items from previous meetings:===<br />
* Robert - Ongoing - Look into improving the <code>get_user</code> function for submissions management, e.g. a bulk version and a bare-bones version<br />
* Kristina - Lang pack manager docs in the Manual<br />
* Kristina - Two webinars - details will be posted to the forums<br />
* Devs - PHP 8 compatibility<br />
*Any other business<br />
*Next meeting and chair<br />
<br />
<br />
===The next developer meeting plan===<br />
'''Date''': TBC<br />
<br />
* '''Chair:''' TBC<br />
* '''Minute taker:''' TBC</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings&diff=12913
Developer Area/Developer Meetings
2022-04-13T23:25:49Z
<p>Gold: </p>
<hr />
<div>Regular developer meetings are held online. Please see the agenda for the meeting room information.<br />
<br />
For information on chairing a meeting and taking minutes, see [[Developer_Area/Developer_Meetings/Chair_Duties|Chair Duties]].<br />
<br />
Old [https://git.mahara.org/info/mahara-minutes IRC meeting minutes] are archived on git.mahara.org as well. <br />
<br />
<br />
{| summary="Summary including Time, Date, Agenda, Minutes and IRC logs from meetings" style="border-collapse: collapse; border: 1px solid;" width="600" cellpadding="1px" border="1"<br />
! style="text-align: center" |Dev. meeting<br />
! style="text-align: center" |Date/Time<br />
! style="text-align: center" |Agenda<br />
! style="text-align: center" |Minutes<br />
! style="text-align: center" |IRC log<br />
|-<br />
|style="text-align: center" |90<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=90th+Mahara+developer+meeting&iso=20220518T0730&p1=264 Wednesday, 18 May 2022 at 07:30 UTC]<br />
| colspan="3" style="text-align: center"|[[Developer Area/Developer Meetings/90|Agenda and minutes]]<br />
|-<br />
|style="text-align: center" |89<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220413T11&p1=264 Tuesday, 12 April 2022 at 23:00 UTC]<br />
| colspan="3" style="text-align: center"|[[Developer Area/Developer Meetings/89|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |88<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220302T2030&p1=264& Wednesday, 2 March 2022 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/88|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |87<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220118T1030&p1=264 Tuesday, 18 January 2022 at 10:30 NZDT]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/87|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |86<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20211013T1100&p1=22 Tuesday, 12 October 2021 at 22:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/86|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |85<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210804T1100&p1=22 Tuesday, 3 August 2021 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/85|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |84<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210608T1930&p1=22 Tuesday, 8 June 2021 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/84|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |83<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210216T2030&p1=22 Tuesday, 16 February 2021 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/83|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |82<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20201103T2030&p1=22 Tuesday, 3 November 2020 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/82|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |81<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200908T1930&p1=22 Tuesday, 8 September 2020 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/81|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |80<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200722T0730&p1=%3A Wednesday, 22 July 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/80|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |79<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200603T0730&p1=%3A Wednesday, 3 June 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/79|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |78<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+Developers+Meeting&iso=20200304T0730&p1=1440 Wednesday, 4 March 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/78|Agenda and minutes]]<br />
|-<br />
|-<br />
| style="text-align: center" |77<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200129T0730&p1=%3A Wednesday, 29 January 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/77|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |76<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20191209T07&p1=%3A Monday, 9 December 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/76|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |75<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20191017T07&p1=%3A Thursday, 17 October 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/75|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |74<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190828T07&p1=1440 Wednesday, 28 August 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/74|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |73 (cancelled)<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190731T07&p1=1440 Wednesday, 31 July 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/73|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |72<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190626T07&p1=1440 Wednesday, 26 June 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/72|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |71<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190502T07&p1=1440 Thursday, 2 May 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/71|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |70<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190319T07&p1=1440 Tuesday, 19 March 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/70|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |69<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190129T07&p1=1440 Tuesday, 29 January 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/69|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |68<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20181106T07&p1=1440 Tuesday, 6 November 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/68|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2019/mahara-dev.2019-01-16-23.27.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2019/mahara-dev.2019-01-16-23.27.log.html IRC log]<br />
|-<br />
| style="text-align: center" |67<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180808T07&p1=1440 Wednesday, 8 August 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/67|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-08-08-22.35.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-08-08-22.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |66<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180613T07&p1=1440 Wednesday, 13 June 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/66|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-06-13-08.35.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-06-13-08.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |65<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180426T07&p1=1440 Thursday, 26 April 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/65|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-04-26-07.03.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-04-26-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |64<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180321T07&p1=136 Wednesday, 21 March 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/64|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-03-21-07.06.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-03-21-07.06.log.html IRC log]<br />
|-<br />
| style="text-align: center" |63<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180117T07&p1=136 Wednesday, 17 January 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/63|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-01-17-07.05.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-01-17-07.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |62<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20171123T07&p1=136 Thursday, 23 November 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/62|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-11-23-06.49.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-11-23-06.49.log.html IRC log]<br />
|-<br />
| style="text-align: center" |61<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170615T07&p1=1440 Thursday, 15 June 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/61|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-06-15-07.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-06-15-07.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |60<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170504T07&p1=1440 Thursday, 4 May 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/60|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-05-04-07.03.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-05-04-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |59<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170309T08&p1=1440 Thursday, 9 March 2017, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/59|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-03-09-21.50.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-03-09-21.50.log.html IRC log]<br />
|-<br />
| style="text-align: center" |58<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20170118T08&p1=1440 Wednesday, 18 January 2017, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/58|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-01-18-21.56.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-01-18-21.56.log.html IRC log]<br />
|-<br />
| style="text-align: center" |57<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20161109T08&p1=1440 Wednesday, 9 November 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/57|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-11-09-07.54.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-11-09-07.54.log.html IRC log]<br />
|-<br />
| style="text-align: center" |56<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160907T08&p1=1440 Wednesday, 7 September 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/56|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-09-07-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-09-07-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |55<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160803T08 Wednesday, 3 August 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/55|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-08-03-07.56.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-08-03-07.56.log.html IRC log]<br />
|-<br />
| style="text-align: center" |54<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160629T08 Wednesday, 29 June 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/54|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-06-29-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-06-29-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |53<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160526T08 Thursday, 26 May 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/53|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-05-26-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-05-26-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |52<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160428T07 Thursday, 28 April 2016, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/52|Agenda]]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-04-28-07.16.txt Minutes]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-04-28-07.16.log.txt IRC log]<br />
|-<br />
| style="text-align: center" |51<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160310T08 Thursday, 10 March 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/51|Agenda]]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-03-10-08.02.txt Minutes]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-03-10-08.02.log.txt IRC log]<br />
|-<br />
| style="text-align: center" |50<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160202T0730 Tuesday, 2 February 2016, 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/50|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-02-02-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-02-02-07.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |49<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20151201T08 Tuesday, 1 December 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/49|Agenda]]<br />
| style="text-align: center" |Minutes<br />
| style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |48<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20151027T07 Tuesday, 27 October 2015, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/48|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-10-27-07.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-10-27-07.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |47<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20150930T07 Wednesday, 30 September 2015, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/47|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-09-30-07.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-09-30-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |46<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=46th+Mahara+developer+meeting&iso=20150826T08 Wednesday, 26 August 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/46|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-08-26-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-08-26-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |45<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=45th+Mahara+developer+meeting&iso=20150729T09&p1=1440 Wednesday, 29 July 2015, 9:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/45|Agenda]]<br />
| style="text-align: center" |Minutes<br />
| style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |44<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=44th+Mahara+developer+meeting&iso=20150528T08&p1=1440 Thursday, 28 May 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/44|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-05-28-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-05-28-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |43<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=43rd+Mahara+developer+meeting&iso=20150423T08&p1=1440 Thursday, 23 April 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/43|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-04-23-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-04-23-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |42<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=42nd+Mahara+Developer+Meeting&iso=20150326T08 Thursday, 26 March 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/42|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-03-26-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-03-26-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |41<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=41st+Mahara+Developer+Meeting&iso=20150226T08 Thursday, 26 February 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/41|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-02-26-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-02-26-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |40<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=40th+Mahara+Developer+Meeting&iso=20150122T08 Thursday, 22 January 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/40|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-01-22-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-01-22-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |39<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=39th+Mahara+Developer+Meeting&iso=20141218T08 Thursday, 18 December 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/39|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-12-18-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-12-18-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |38<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=38th+Mahara+Developer+Meeting&iso=20141127T08 Thursday, 27 November 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/38|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-11-27-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-11-27-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |37<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+37th+Developer+Meeting&iso=20141023T08 Thursday, 23 October 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/37|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-10-23-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-10-23-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |36<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+36th+Developer+Meeting&iso=20140925T08 Thursday, 25 September 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/36|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-09-25-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-09-25-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |35<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+35th+Developer+Meeting&iso=20140814T08 Thursday, 14 August 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/35|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-08-14-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-08-14-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |34<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+34th+Developer+Meeting&iso=20140710T08 Thursday, 10 July 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/34|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-07-10-08.06.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-07-10-08.06.log.html IRC log]<br />
|-<br />
| style="text-align: center" |33<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+33rd+Developer+Meeting&iso=20140605T08 Thursday, 5 June 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/33|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-06-05-08.15.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-06-05-08.15.log.html IRC log]<br />
|-<br />
| style="text-align: center" |32<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=32nd+Mahara+developer+meeting&iso=20140501T08 Thursday, 1 May 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/32|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-05-01-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-05-01-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |31<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140327T08&p1=1440 Thursday, 27 March 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-03-27-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-03-27-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |30<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140123T08&p1=1440 Thursday, 23 January 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/30|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-01-23-08.04.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-01-23-08.04.log.html IRC log]<br />
|-<br />
| style="text-align: center" |29<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20131205T08&p1=1440 Thursday, 5 December 2013, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-12-05-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-12-05-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |28<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20131003T20&p1=1440 Thursday, 3 October 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-10-03|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-10-03-20.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-10-03-20.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |27<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20130905T08 Thursday, 5 September 2013, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-09-05|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-09-05-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-09-05-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |26<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20130813T20 Tuesday, 13 August 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-05-28|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-08-13-21.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-08-13-21.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |25<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=25th+Mahara+Developer+Meeting&iso=20130416T08 Wednesday, 16 April 2013, 08:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-04-16|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-04-16-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-04-16-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |24<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=24th+Mahara+Developer+Meeting&iso=20130226T20 Tuesday, 26 February 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-02-26|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-02-26-20.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-02-26-20.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |23<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=23rd+Mahara+Developer+Meeting&iso=20130116T08 Wednesday, 16 January 2013, 08:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-01-16|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-01-16-08.04.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-01-16-08.04.log.html IRC log]<br />
|-<br />
| style="text-align: center" |22<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=22nd+Mahara+Developer+Meeting&iso=20121121T20 Wednesday, 21 November 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-11-21|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-11-21-20.07.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-11-21-20.07.log.html IRC log]<br />
|-<br />
| style="text-align: center" |21<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20121017T0730&msg=21st%20Mahara%20Developer%20Meeting Wednesday, 17 October 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-10-17|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-10-17-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-10-17-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |20<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=20th+Mahara+Developer+Meeting&iso=20120829T20 Wednesday, 29 August 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-08-29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-08-29-20.10.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-08-29-20.10.log.html IRC log]<br />
|-<br />
| style="text-align: center" |19<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=19th+Mahara+Developer+Meeting&iso=20120731T0730 Tuesday, 31 July 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-07-31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-07-31-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-07-31-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |18<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=18th+Mahara+Developer+Meeting&iso=20120627T2000 Wednesday, 27 June 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-06-27|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-06-27-20.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-06-27-20.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |17<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=17th+Mahara+Developer+Meeting&iso=20120523T0730 Wednesday, 23 May 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-05-23|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-05-23-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-05-23-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |16<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=16th+Mahara+Developer+Meeting&iso=20120425T20 Wednesday, 25 April 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-04-25|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-04-25-20.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-04-25-20.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |15<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20120327T0730 Tuesday, 27 March 2012, 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-03-27|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-27-07.41.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-27-07.41.log.html IRC log]<br />
|-<br />
| style="text-align: center" |14<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20120131T1930 Tuesday, 31 January 2012 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-01-31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-01-31-19.33.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-01-31-19.33.log.html IRC log]<br />
|-<br />
| style="text-align: center" |13<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111206T0730 Tuesday, 6 December 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-12-06|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-12-06-07.32.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-12-06-07.32.log.html IRC log]<br />
|-<br />
| style="text-align: center" |12<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111108T1930 Tuesday, 8 November 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-11-08|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-11-08-19.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-11-08-19.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |11<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111005T0730 Wednesday, 5 October 2011 - 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-10-05|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-10-05-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-10-05-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |10<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110906T1930 Tuesday, 6 September 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-09-06|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-09-06-19.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-09-06-19.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |9<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110803T0730 Wednesday, 3 August 2011 - 07:30:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-08-03|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-08-03-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-08-03-07.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |8<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110629T1930 Wednesday 29 June 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-06-29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-06-29-19.35.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-06-29-19.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |7<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110525T0730 Wednesday 25 May 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-05-25|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-05-25-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-05-25-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |6<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=20&month=4&year=2011&hour=19&min=30&sec=0&p1=0 Wednesday 20 April 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-04-20|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-04-20-19.40.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-04-20-19.40.log.html IRC log]<br />
|-<br />
| style="text-align: center" |5<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=23&month=3&year=2011&hour=7&min=30&sec=0&p1=0 Wednesday, 23 March 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-03-23|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-03-23-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-03-23-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |4<br />
| style="text-align: left" |[http://bit.ly/e29nNk Thursday, 17 February 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-02-17|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-02-17-19.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-02-17-19.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |3<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=19&month=1&year=2011&hour=7&min=30&sec=0&p1=0 Wednesday, 19 January 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-01-19|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-01-19-07.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-01-19-07.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |2<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/meetingdetails.html?year=2010&month=12&day=14&hour=19&min=30&sec=0&p1=22&p2=189&p3=268&iv=1800 Tuesday 14 December 2010 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2010-12-14|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-12-14-19.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-12-14-19.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |1<br />
| style="text-align: left" |Wednesday 10 November 2010 - 07:30 UTC (following [https://mahara.org/interaction/forum/topic.php?id=2070 a discussion])<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2010-11-10|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-11-10-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-11-10-07.34.log.html IRC log]<br />
|}<br />
<br />
===Other meetings===<br />
<br />
{| summary="Summary including Time, Date, Agenda, Minutes and IRC logs from meetings" style="border-collapse: collapse; border: 1px solid;" width="600" cellpadding="1px" border="1"<br />
! style="text-align: center" |Meeting title<br />
! style="text-align: center" |Date/Time<br />
! style="text-align: center" |Agenda<br />
! style="text-align: center" |Minutes<br />
! style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |Theme / plugin repository<br />
| style="text-align: left" |Thursday, 8 March 2012, 18:00-19:30 UTC<br />
| style="text-align: center" |<br />
| style="text-align: center" |<br />
[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-08-18.21.html Minutes]<br />
| style="text-align: center" |<br />
[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-08-18.21.log.html IRC log]<br />
|}</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/89&diff=12912
Developer Area/Developer Meetings/89
2022-04-13T23:21:41Z
<p>Gold: Updated with the Minutes.</p>
<hr />
<div>Agenda for the 89th Mahara developer meeting on 12 April 2022 at 23:00 UTC ([https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220413T11&p1=264 check your time zone]).<br />
<br />
We will meet using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Mahara channel] on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
<br />
* Chair: Robert Lyon<br />
* Minute taker: Gold<br />
<br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
<br />
==Agenda==<br />
<br />
*Items from previous meetings:<br />
**Robert - Look into improving the <code>get_user</code> function for submissions management, e.g. a bulk version and a bare-bones version.<br />
**Robert - Add Doris into all the Approved Developer groups.<br />
**Gold - Discuss with the team to organise devs to get elasticsearch tested.<br />
**To be continued: to have the new Gerrit available to the public.<br />
**Reduce security vulnerabilities by getting Composer to install only used plugins (reopened): We have [[Proposals/Management_of_third_party_libraries#PHP_.28composer.29|a solution]] after all<br />
* Mahara 22.04 progress<br />
*Any other business<br />
*Next meeting and chair<br />
<br />
==Minutes==<br />
[https://seafile.catalyst.net.nz/f/14d2b6d3b1d742169381/ Recording]<br />
<br />
===Attendees===<br />
<br />
*([https://learnopen.tech/ Learn Open Tech]) Brian Beck<br />
*([https://www.catalyst.net.nz/ Catalyst]) Robert Lyon, New Zealand - Chair<br />
*([https://www.catalyst.net.nz/ Catalyst]) Gold, New Zealand - Minute taker<br />
*([https://www.catalyst.net.nz/ Catalyst]) Dianne Tennent, New Zealand<br />
*([https://www.catalyst.net.nz/ Catalyst]) Doris Tam, New Zealand<br />
*([https://www.catalyst.net.nz/ Catalyst]) Kristina Hoeppner, New Zealand<br />
<br />
===Items from previous meeting===<br />
====Improving the <code>get_user</code> function====<br />
<br />
The Release Candidate has prevented progress on this.<br />
<br />
'''Action item''': ongoing<br />
<br />
====Add Doris into all the Approved Developer groups====<br />
<br />
Access acquired.<br />
<br />
'''Action item''': None<br />
<br />
====Discuss with the team to organise devs to get elasticsearch tested.====<br />
<br />
ES7 work is in the RC.<br />
<br />
The Elasticsearch 7 search plugin exists side by side with the current elasticsearch search plugin so side by side testing in the wild can be done. Also upgrading Mahara won't force sites to also update their Elasticsearch server until they're ready.<br />
<br />
'''Action item''': None<br />
<br />
====Get the new Gerrit available to the public====<br />
<br />
It is done. There's a learning curve, but it's looking good.<br />
<br />
'''Action item''': None<br />
<br />
====Reduce security vulnerabilities while using Composer====<br />
<br />
Using [https://github.com/cweagans/composer-patches cweagans/composer-patches] we can maintain a single patch for each third party library that deletes the files we don't use. e.g. all the ADODB drivers we don't support.<br />
<br />
This removes a potential blocker for moving to Composer maintained third party libraries.<br />
<br />
'''Action item''': None.<br />
<br />
====Mahara 22.04 progress====<br />
<br />
[https://launchpad.net/mahara/+milestone/22.04.0 RC1] was released yesterday.<br />
<br />
[https://bugs.launchpad.net/mahara/+bugs?field.searchtext=&orderby=-importance&field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=93805&field.tag=newfeature&&search=Search Current new features] include:<br />
<br />
* ES7<br />
* Plagerism checker via [https://www.ouriginal.com/ Ouriginal] - Thanks to [https://www.dcu.ie/ Dublin City University] for funding this.<br />
* New role: support admin<br />
* Lang pack manager in the browser<br />
* PHP 8 compatibility, slow, but steady progress<br />
* Many bug fixes, and minor tweaks<br />
<br />
'''Action item''': Kristina - Lang pack manager docs in the Manual<br />
'''Action item''': Kristina - Two webinars - details will be posted to the forums<br />
<br />
===Other/New business===<br />
====22.10 outlook - PHP 8 Compatibility====<br />
Progress on this is important. The next release will likely have more of a focus on infrastructure.<br />
<br />
'''Action item''': Devs - PHP 8 compatibility<br />
<br />
====Integration discussion====<br />
Beck discussed the use of Open Source in educational environments in a manner that promotes privacy and avoids data harvesting by third party systems.<br />
<br />
e.g. Using Nextcloud rather than other free/cheap commercial offerings.<br />
<br />
'''Action item''': None.<br />
<br />
===Action Items===<br />
* Robert - Ongoing - Look into improving the <code>get_user</code> function for submissions management, e.g. a bulk version and a bare-bones version<br />
* Kristina - Lang pack manager docs in the Manual<br />
* Kristina - Two webinars - details will be posted to the forums<br />
* Devs - PHP 8 compatibility<br />
<br />
===The next developer meeting plan===<br />
'''Date''': [https://www.timeanddate.com/worldclock/fixedtime.html?msg=90th+Mahara+developer+meeting&iso=20220518T0730&p1=264 18th May 2020, 07:30 UTC]<br />
<br />
* '''Chair:''' Dianne Tennent<br />
* '''Minute taker:''' Kristina Hoeppner</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/Chair_Duties&diff=12905
Developer Area/Developer Meetings/Chair Duties
2022-04-13T22:14:37Z
<p>Gold: /* After the meeting */ clarifying where minutes are actually added.</p>
<hr />
<div><div id="section_1"><br />
<br />
Since we have stopped using the IRC meetings, we now need the chair role to lead the meeting and a minute taker to keep track of the discussion and take minutes.<br />
<br />
<br />
===Before the meeting===<br />
<br />
'''Chair'''<br />
* Hint: "watch" the agenda wiki page to receive email notifications when someone adds something to it<br />
* '''1 week before''' the meeting, send a reminder to the developer forum.<br />
* '''1 day before''' the meeting, send a reminder to the developer forum.<br />
* '''The day of the meeting''': Pick the proposed date and time for the next meeting (to be discussed at the end of the meeting).<br />
<br />
<br />
===During the meeting===<br />
<br />
'''Chair'''<br />
* Open the meeting<br />
* Start by asking participants to state their name at the beginning of the meeting.<br />
* Lead the meeting and give people the floor for what they want to discuss, keep track of time, and move onto the next topics.<br />
* Close the meeting when it's done.<br />
<br />
'''Minute taker'''<br />
* If a participant says something that should appear in the minutes, capture that in the minutes. Where possible link to bug reports, documentation, code review items etc. if mentioned to find them easily.<br />
* Take notes about topics, ideas, general information, agreed items, and actions to be taken.<br />
<br />
===After the meeting===<br />
<br />
'''Minute taker'''<br />
* Edit the agenda page with the current minutes on the [[Developer Area/Developer Meetings|Developer Meetings]] page.<br />
* Create an entry for the next meeting on the same page along with an empty agenda page.<br />
* In the forum thread for the meeting that just passed, make a new post and let people know where to find the minutes from the meeting and announce the next meeting, linking to the empty agenda page. You may also put a link to the specific [http://www.timeanddate.com/worldclock/fixedform.html worldclock] page with the meeting times shown in different time zones.<br />
<br />
===Additional suggestions===<br />
<br />
* Deadline for agenda items. Anything not added gets pushed to the next meeting<br />
* Have a future meeting agenda items page on the wiki (final row in the table) for items not going into the schedules meeting<br />
<br />
===Useful links===<br />
<br />
[https://mahara.org/interaction/forum/topic.php?id=3802 Developer Meeting Guidelines] discussion on the forum.</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/89&diff=12857
Developer Area/Developer Meetings/89
2022-03-14T23:13:41Z
<p>Gold: /* Agenda */ Reopen "Reduce security vulnerabilities" with Composer.</p>
<hr />
<div>Agenda for the 89th Mahara developer meeting on 12 April 2022 at 23:00 UTC ([https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220413T11&p1=264 check your time zone]).<br />
<br />
We will meet using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Mahara channel] on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
<br />
Chair: Robert Lyon<br />
<br />
Minute taker: Gold<br />
<br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
<br />
==Agenda==<br />
<br />
*Items from previous meetings:<br />
**Robert - Look into improving the <code>get_user</code> function for submissions management, e.g. a bulk version and a bare-bones version.<br />
**Robert - Add Doris into all the Approved Developer groups.<br />
**Gold - Discuss with the team to organise devs to get elasticsearch tested.<br />
**To be continued: to have the new Gerrit available to the public.<br />
**Reduce security vulnerabilities by getting Composer to install only used plugins(reopened)<br />
***We have [[Proposals/Management_of_third_party_libraries#PHP_.28composer.29|a solution]] after all<br />
*Any other business<br />
*Next meeting and chair<br />
<br />
==Minutes==<br />
<br /><br />
===The next developer meeting plan===<br />
'''Date''': [https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220413T11&p1=264 TBC]<br />
<br />
'''Chair:''' TBC<br />
<br />
'''Minute taker:''' TBC</div>
Gold
https://wiki.mahara.org/index.php?title=Proposals/Management_of_third_party_libraries&diff=12856
Proposals/Management of third party libraries
2022-03-14T23:07:37Z
<p>Gold: /* PHP (composer) */ Composer Patches can be used to clean up unwanted files as well.</p>
<hr />
<div>==tl;dr;==<br />
<br />
*Remove third-party libraries from the Mahara repo.<br />
*Use Composer/Composer patches to manage PHP<br />
*Use npm/Patch Package to manage JS<br />
*Discussed at [[Developer_Area/Developer_Meetings/87|Mahara Developer Meeting]] on 18 Jan, 2022<br />
<br />
==The issue==<br />
Currently Mahara is maintaining third party external libraries in its own repo. Many of these are patched with Mahara specific customisations. This results in Mahara maintaining a lot more code than it needs to.<br />
<br />
==A resolution==<br />
Modern practices for library management would have these being pulled in from official sources and Mahara would either extend these libraries to override methods that need to have specific Mahara functionality or we would maintain a small number of patch files that would be applied by the management system when the library is pulled down.<br />
<br />
e.g. There are currently 2 patched files and one method overridden and a whole lot of files removed for ADOdb. We would maintain 1 patch file and a single class file that extends ADOdb. This would remove 776K of code from our project and massively reduce the time required to upgrade this library. The other advantage would be that the patch file could also be removed. Instead an issue created for each edit we are making on the source project, the patch uploaded to it and that online patch is referenced. Then, all we maintain is a reference to the patches in the management system config file.<br />
<br />
Dwoo is 972K, chrome-php is 12M, etc. All these are in our repo.<br />
<br />
===Options===<br />
====PHP (composer)====<br />
For PHP the current management system that is dominating this field is [https://getcomposer.org/ Composer]. It has been in development since 2013. Others like Maven and Pyrus seem to have suffered from bit-rot over the years. There is also PEAR, but the dependency management on that has never been that good.<br />
<br />
The [https://github.com/cweagans/composer-patches Composer Patches] package allows for patching of third party code on checkout. It works with local patch files and those hosted on URLs. If we need to patch files for Mahara specific things we can maintain those patch files ourselves. If we push fixes upstream we can include references to the URI for the patch until it is accepted.<br />
<br />
We also maintain a manual cleanup of files in these libraries that are not used by Mahara. e.g. most of the DB drivers in ADODB are removed. These can be maintained with Composer Patches via a patch file that deletes the files.<br />
<br />
====Javascript (npm)====<br />
In the Javascript space we have npm, yarn, bower, webpack, and others. The 3 listed are those I'm familiar with. As a user.<br />
<br />
As I understand it npm fills the same package manager space as Composer. [https://yarnpkg.com/ Yarn] is npm plus project management. They share the same package repository.<br />
<br />
The [https://www.npmjs.com/package/patch-package Patch Package] looks to be the Composer Patches of the npm world. It also facilitates the generation of the patch files and, if the patch is to be pushed upstream, it can create issues on github hosted libraries as well.<br />
<br />
Despite still being in use, [https://bower.io/ Bower] has ceased development and is only being maintained. They recommend other things on their homepage as suitable alternatives.<br />
<br />
[https://webpack.js.org/ Webpack] looks to fill the same space as Yarn without a dedicated package manager behind it.<br />
<br />
===Reliance on third party library management systems===<br />
<br />
npm has been in the news lately regarding security problems.<br />
<br />
npm is [https://github.com/npm open source] and consists of 2 major components. The CLI tool and the registry. If the extra security is needed we could stand up our own registry and only include the packages/dependencies we need.<br />
<br />
Note: if we're going that far though, we should be doing the same for Composer and APT(OS package management) as well.<br />
<br />
It is worth noting that ''every'' package manager system can be at risk like this. More often than not it is actually the packages rather than the package manager that are the risk though.<br />
<br />
It is also worth noting that we already use npm.<br />
<br />
====What if Composer / npm or any other package manager we would go for folds and isn't available any more?====<br />
If this happens most of the Internet has collapsed and there are more urgent issues in the world. This would be on the scale of the things like APT/YUM going away.<br />
<br />
To answer the question though, every installation archive we have will have an historical record of the state of the libraries at the time they were built. These could easily be added to the repo should they be needed and the libraries maintained manually as we currently do. The only change would be where they are located.<br />
<br />
===Effort===<br />
====Switching to the new system====<br />
<br />
*Each library would be removed from the repo. (quick)<br />
*Each library would be added to the appropriate manifest file: <code>composer.json</code> or <code>package.json</code>. (very quick)<br />
*Current patches/customisations would be extracted as a <code>.patch</code> file and added to the repo, the manifest, and tested. (moderate work)<br />
*In some cases how we implement the library may change. e.g. I would be suggesting we create a MaharaADODB that extends ADODB. With the current upstream patches and this approach to override the one function we are currently customising there will be no need at all to patch ADODB. In the case of ADOBD - (moderate work)<br />
*npm packages, being javascript, would be a path update I believe.<br />
*Libraries added via Composer would be included via the use of [https://getcomposer.org/doc/01-basic-usage.md#autoloading <code>vendor/autoload.php</code>]. This would be added to <code>init.php</code> making it available everywhere.<br />
<br />
====Maintaining the new system====<br />
<br />
*Effort is reduced.<br />
*When a package has an update, security or otherwise, we would use the package manager to pull down the new version. Any patches we maintain or track would be applied as part of that step.<br />
**If that succeeds we're done and the <code>composer.json</code>/<code>composer.lock</code>/<code>package.json</code> are committed to the repo.<br />
**If not, we check the patch, and if still needed we rework it just as we would currently. Then <code>composer.json</code>/<code>composer.lock</code>/<code>package.json</code> and the updated patch file are committed to the repo.<br />
<br />
===Can we still track these in the 'Components library'?===<br />
I believe so. Composer has a <code>vendor</code> directory. npm has the <code>node_modules</code> directory. These can be traversed to find the current installed version of all libraries in use. Through the APIs available we should also be able to fetch the current latest version as well.<br />
<br />
===Common installation scenarios===<br />
At the moment there are 2 dominant installation scenarios. Both come with upgrading issues but neither of these would, in my opinion, be a serious concern worth addressing here. They are just the natural consequences of maintaining software and are often easily mitigated by custom scripts the site admin would take care of as they would be specific to their site.<br />
<br />
====Grab the archive====<br />
A lot of people in the community install Mahara via the provided zip packages rather than from Git and compiling code (or even the theme) themselves. From the point of view of these people the process would not change at all. They still grab a fully self contained archive.<br />
<br />
Currently the archive is built through an automated process. This is already using npm to pull down the SASS packages to compile the CSS. The addition of a call to pull down PHP libraries with composer would not be a major impact to the process.<br />
<br />
====Checkout from git====<br />
As with the archive approach, those using git will already be pulling down the npm packages to compile their SASS into CSS. The addition of composer will not be a huge imposition.<br />
<br />
<br />
====A new scenario for future consideration====<br />
Once we're comfortable with composer we will be able to open up a new installation process.<br />
<br />
<code>$ composer require mahara/mahara</code></div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Smarty%26Dwoo&diff=12800
Developer Area/Smarty&Dwoo
2022-03-02T20:45:32Z
<p>Gold: /* The template file */ updating to syntaxhighlight</p>
<hr />
<div>Mahara uses the '''Dwoo''' templating engine to display all page content. Dwoo is a fork of the more well-known '''Smarty''' template system (and Mahara previously used Smarty) so some of the code and documentation refers to Smarty as well.<br />
<br />
Basically the way it works is that every time you want to print HTML to the screen, you instead load up a Dwoo *.tpl template file, pass some variables to it, and then Dwoo renders it into final HTML.<br />
<br />
The advantages of this approach are that it separates the front-end of Mahara from the back-end, it centralizes all front-end code in one place (in the template files), and it allows custom themes to override the template.<br />
<br />
== The basic use-case ==<br />
<br />
Here's how it gets used in a normal use-case. See also [[BasicPHPFileTemplates]]<br />
<br />
=== The PHP file ===<br />
<br />
The PHP file should have a call to the '''smarty()''' method. This will return a Dwoo object, but by tradition we tend to store this in a variable called '''$smarty'''. You can then call the '''$smarty->assign()''' method to load variables that can be accessed in the template. Lastly, you call '''$smarty->display($templatename)''' to render and print the template.<br />
<br />
<source lang="php" enclose="div"><br />
<?php<br />
// ... page init stuff goes here<br />
<br />
$smarty = smarty();<br />
<br />
// Set some variables that can be accessed in the template.<br />
$smarty->assign('firstname', $firstname);<br />
$smarty->assign('lastname', $lastname);<br />
$smarty->assign('sharelastname', (boolean) $sharelastname);<br />
<br />
// Render the template and print the results.<br />
$smarty->display('user/sayhello.tpl');<br />
</source><br />
<br />
==== Fetching without printing ====<br />
<br />
If you just want to fetch the HTML but not print it to the screen yet, use $smarty->fetch();. This can be useful for embedding snippets of code into another page. Instead of invoking smarty(), you should invoke smarty_core() in order to avoid generating response headers.<br />
<br />
<source lang="php" enclose="div"><br />
<?php<br />
<br />
$snippetsmarty = smarty_core();<br />
$snippet = $snippetsmarty->fetch('path/to/snippet.tpl');<br />
<br />
$pagesmarty = smarty();<br />
$pagesmarty->assign('snippet', $snippet);<br />
$pagesmarty->print('path/to/page.tpl');<br />
</source><br />
<br />
=== The template file ===<br />
<br />
The trickiest part about the template file is its location. Each template file (except for plugin template files) should have a copy under '''htdocs/theme/raw/templates'''.<br />
<br />
In our example, we passed in "user/sayhello.tpl" in the PHP file, so the full path to the template file will be "htdocs/theme/raw/templates/user/sayhello.tpl".<br />
<br />
<syntaxhighlight lang="smarty"><br />
{include file="header.tpl"}<br />
<br />
<!-- Adding "|safe" tells it not to escape html characters from the variable. Don't do this unless you've pre-scrubbed the variable in PHP, and it contains HTML that should be rendered as HTML. --><br />
Your first name is {$firstname|safe}.<br />
<br />
{if $lastname}Your last name is {$lastname}.{/if}<br />
<br />
{include file="footer.tpl"}<br />
</syntaxhighlight><br />
<br />
=== Custom themes ===<br />
<br />
Mahara themes are hierarchical. Each theme has a parent theme, and each parent can have a parent and so on, with the special "raw" theme being the root of the hierarchy. That's why the basic version of each template should live under the "htdocs/theme/raw/templates" directory.<br />
<br />
If a theme developer wants to change the content of a template for one of their themes, they can simply place an altered copy under "htdocs/theme/{themename}/templates".<br />
<br />
=== Plugin templates ===<br />
<br />
Plugin templates are slightly different. They live under the plugin's directory. So for instance, the Creative Commons blocktype has a template file called "statement.tpl".<br />
<br />
* These should be stored under a "theme" directory under the plugin, e.g. blocktype/creativecommons/theme/raw/statement.tpl<br />
* They are referenced in the smarty() method with a string that has the plugin type, a colon, the plugin name, another colon, and then the relative path to the template. e.g.: smarty('blocktype:creativecommons:statement.tpl');<br />
* For plugins that live under another plugin (i.e. blocks that live under artefacts)...<br />
** The files go under the subplugin's directory: artefact/file/blocktype/folder/theme/raw/page.tpl<br />
** But it's referenced from smarty listing only the subplugin: smarty('blocktype:folder:page.tpl')<br />
<br />
=== TODO ===<br />
<br />
* Commonly used tags<br />
* How to embed PHP<br />
* Custom tags<br />
** Which ones we have<br />
** Where their code lives<br />
** How to write one<br />
** Maharas' standard-defined smarty variables</div>
Gold
https://wiki.mahara.org/index.php?title=Testing_Area/Behat_Testing/Running_test&diff=12780
Testing Area/Behat Testing/Running test
2022-02-25T02:22:45Z
<p>Gold: syntax highlight</p>
<hr />
<div><h2>Running the test</h2><br />
<br />
Go to the terminal and cd into your code directory. If you set it up following the wiki, that will be<br />
cd code/mahara<br />
<br />
The command for running tests consists of a helper script that takes two arguments: <br />
the mode you want to run in and the test/s you want to run.<br />
<br />
./test/behat/mahara_behat.sh <''mode''> <''test/s''><br />
<br />
The options for mode are:<br />
:run ''- runs the selected tests in a local browser''<br />
:rundebug ''- runs the selected tests in a local browser and outputs additional debug info in the terminal''<br />
:runheadless ''- runs the selected tests without opening a browser''<br />
:rundebugheadless ''- runs the selected tests without opening a browser, but with additional debug info in the terminal''<br />
<br />
The second argument is optional. If you don't include one, all the tests will be run, but this will take a l-o-n-g time!<br />
So to only run specific tests, include a tag (e.g. @mytests) to run all the tests with that tag,<br />
or a feature file name (e.g. my_test.feature) to run the test scenarios in that file.<br />
<br />
A couple of specific examples:<br />
./test/behat/mahara_behat.sh rundebug @core_account<br />
''(runs all the tests in feature files tagged @core_account, using a browser, with debug output)''<br />
./test/behat/mahara_behat.sh runheadless change_account_settings.feature <br />
''(runs just the change_account_settings test, browserless, without additional debug info)''<br />
<br />
To run tests with html output, add the flag 'html' to your test run command, e.g:<br />
<br />
<syntaxhighlight lang="bash">./test/behat/mahara_behat.sh run create_page.feature html</syntaxhighlight><br />
<br />
When you run the command it will start up the following:<br />
Selenium is running<br />
Start the PHP server<br />
Enable test site<br />
<br />
If you want to stop the tests at any point click inside the terminal not the browser<br />
Crtl+c<br />
<br />
To see a list of all tests, cd to your Mahara directory and run:<br />
<syntaxhighlight lang="bash">grep -RiPoh 'Scenario:(\s+)\K(.*)$' test/</syntaxhighlight><br />
<br />
<h2>Test failing</h2><br />
<br />
Note: check that your local config is the same as the default config e.g. $cfg->usepdfexport should not be true or exist for for the feature files to find what it needs to (You need chrome-php will not appear if your config is true already);<br />
<br />
* If another test runs instead, it's because you have more than one test tagged with the tag you are trying to run.<br />
* The step that the test is failing on will show red or orange.<br />
* When it fails, go to the text editor and fix the step that it broke on and run it again.<br />
<br />
[[Category:Behat]]</div>
Gold
https://wiki.mahara.org/index.php?title=Testing_Area/Behat_Testing/Setup&diff=12776
Testing Area/Behat Testing/Setup
2022-02-25T02:16:36Z
<p>Gold: syntax highlight</p>
<hr />
<div>{{note|These instructions for the Behat setup are only for machines running Linux. They will not work for Windows machines.}}<br />
<br />
1. Set up your [[Developer_Area/Developer_Environment | developer environment]] if you haven't already done so.<br />
<br />
2. Install Behat's dependencies:<br />
<syntaxhighlight lang="bash"><br />
$ sudo apt-get install curl openjdk-8-jre-headless<br />
</syntaxhighlight><br />
<br />
3. Add the following config settings to the bottom of your Mahara config.php file inside the htdocs/ subdirectory of the Mahara codebase. <br />
<br />
{{note|If /var/www/maharadata is not where you created your dataroot, you'll need to replace that with the correct path in the following commands}}<br />
<br />
<syntaxhighlight lang="bash"><br />
// Behat config<br />
$cfg->behat_dbprefix = 'behat_'; // must not empty<br />
$cfg->behat_dataroot = "/var/lib/maharadata/master_behat"; // The Behat copy of maharadata.<br />
$cfg->behat_wwwroot = 'http://localhost:8000'; // Must be this<br />
$cfg->behat_selenium2 = "http://127.0.0.1:4444/wd/hub"; // Must be this<br />
</syntaxhighlight><br />
<br />
{{note|There should be a behat_dataroot for each Mahara instance that you set up. Here the one for the master branch / this Mahara instance is created.}}<br />
{{note|If the directory for $cfg->behat_dataroot does not exist then it will need to be created.}}<br />
<br />
4. Make your Behat data directory (check this matches what you set in config.php):<br />
<syntaxhighlight lang="bash"><br />
$ sudo mkdir /var/lib/maharadata/master_behat<br />
</syntaxhighlight><br />
<br />
5. Make the directory and any subdirectories writeable by Mahara (check the directory is correct): <br />
<syntaxhighlight lang="bash"><br />
$ sudo chmod 777 -R /var/lib/maharadata/master_behat<br />
</syntaxhighlight><br />
<span id="chown"></span><br />
6. Change the directory and any subdirectories permissions to be owned by apache user (check the directory is correct): <br />
<syntaxhighlight lang="bash"><br />
$ sudo chown -R www-data:www-data /var/lib/maharadata/master_behat<br />
</syntaxhighlight><br />
<br />
* For Ubuntu, apache runs with user www-data<br />
* For Centos, apache runs with user apache<br />
<br />
7. Run Behat tests (change into your Mahara code directory first) as the apache user:<br />
<syntaxhighlight lang="bash"><br />
$ cd<br />
$ cd code/mahara<br />
./test/behat/mahara_behat.sh run<br />
</syntaxhighlight><br />
<br />
Or if you have sudo access:<br />
<syntaxhighlight lang="bash"><br />
$ cd<br />
$ cd code/mahara<br />
sudo -u www-data ./test/behat/mahara_behat.sh run<br />
</syntaxhighlight><br />
<br />
<br />
For the first time of running Behat, you need to wait for the Behat environment initialisation. This can take a while.<br />
<br />
To run all tests:<br />
./test/behat/mahara_behat.sh run<br />
<br />
To run your specific tests marked with @yourtags:<br />
./test/behat/mahara_behat.sh run @yourtags<br />
<br />
To run a particular feature file:<br />
./test/behat/mahara_behat.sh run my_file.feature<br />
<br />
The run / runheadless / rundebug / rundebugheadless / runfresh are interchangable with run in above commands<br />
<br />
[[Category:Behat]]<br />
<br />
== Running Behat tests with html report and screenshots on failed steps ==<br />
<br />
To run tests with html output, add the flag 'html' to your test run command, e.g:<br />
<br />
<syntaxhighlight lang="bash">./test/behat/mahara_behat.sh run create_page.feature html</syntaxhighlight><br />
<br />
This will automatically open an html report of the test run in your browser. If there were failed steps, the the html report plugin takes a screenshot of the page that failed.<br />
You can find the screenshots in your behat dataroot (usually /var/lib/maharadata/master_behat) at the following path:<br />
behat/html_results/<feature title>/<scenario title>.png<br />
<br />
Hopefully we will rig up the report to link to the screenshot soon.<br />
<br />
== How to Run Mahara behat test on Chrome for versions older than 17.04==<br />
<br />
{{note|Mahara behat is running on chrome driver by default in 17:04+}}<br />
<br />
This is steps for older versions of Mahara<br />
<br />
1. Download chromedriver here http://www.seleniumhq.org/download/ ( download the latest release)<br />
<br />
2. Start selenium Server with chrome driver<br />
<br />
$ java -jar selenium-server-standalone-2.53.1.jar -Dwebdriver.chrome.driver=path of chromedriver<br />
<br />
3. Change the behat.yml file as follows,<br />
<br />
Here is the file path var/lib/maharadata/master_behat/behat.yml<br />
<br />
when you open the beaht.yml file replace the following code with the lines that contain sessions to goutte=NUll( Niranjan or Lovesh can exactly tell you where to replcae the code if it is confusing) and save it<br />
<br />
javascript_session: selenium2<br />
selenium2:<br />
browser: chrome<br />
goutte: ~<br />
<br />
4. Run the behat test without rundebug <br />
<br />
for example ./test/behat/mahara_behat.sh run example.feature<br />
<br />
== Debugging ==<br />
<br />
Go here for tips: https://wiki.mahara.org/wiki/Testing/Behat_Testing/Error_%26_Solutions</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Coding_guidelines/PHP_files&diff=12775
Developer Area/Coding guidelines/PHP files
2022-02-25T02:11:24Z
<p>Gold: syntax highlight</p>
<hr />
<div>This page documents the coding conventions used by Mahara for PHP files. Everything that ends up in the git repository (other than third-party code) should follow these standards.<br />
<br />
You can also have a look at the [[Developer_Area/How_to_Review_Code|Reviewer's manual]] to see what reviewers will look at when looking at code submissions.<br />
<br />
For other languages, use the links at the [[Developer_Area/Coding_guidelines|main guideline page]].<br />
<br />
=The Basics=<br />
<br />
All files must adhere to the [[BasicPHPFileTemplates]]. There are slightly different templates depending on whether the script is to be included or whether it is to be directly hit.<br />
<br />
Indentation is using four (4) spaces. There is no requirement that the scripts are wrapped at 80 columns, however developers are asked to wrap long lines sensibly.<br />
<br />
= Documenting Code =<br />
<br />
* Comments at the head of files, functions, classes, etc should use the /** ... */ comment form for compatibility with [http://en.wikipedia.org/wiki/PHPDoc PHPDoc] and [http://usejsdoc.org/ JSDoc].<br />
* Explanatory comments in the body of the code should use only // comment markers, regardless of the length of the comment.<br />
** This allows /* ... */ markers to be used for quick mass commenting during debugging.<br />
* Comments about a line of code should be placed on their own line above that line of code, rather than at the end of it.<br />
** This makes them more visible to people scanning the page, and ensures they won't be hidden off the side of the page if the reader's editor window is small.<br />
<br />
Example:<br />
<br />
<syntaxhighlight lang="php"><br />
/**<br />
* First line is a summary of what this function does and can only be one line.<br />
*<br />
* More detail can be presented with a blank line between the summary<br />
* and description. This can be a multiline block.<br />
*<br />
* The description can also be multiple paragraphs. The description ends with a<br />
* blank line if there are any @tags that follow.<br />
*<br />
* @param boolean $bar description of the purpose of $bar<br />
* @param string $baz description of the purpose of $baz<br />
* @param array $qux description of the purpose of $qux<br />
* @return array|string This function either returns $qux with $baz added to it, or $baz with $bar added to it<br />
*/<br />
function foo($bar, $baz='bax', $qux=array()) {<br />
<br />
// This part is difficult and requires a long<br />
// explanation. This is that explanation. I am<br />
// still typing to see if I can make it to four<br />
// lines.<br />
if ($bar) {<br />
// put it on the end<br />
$qux[] = $baz;<br />
return $qux;<br />
} else {<br />
// I'm sure this makes sense somehow<br />
return $baz || ((string) $bar);<br />
}<br />
}<br />
</syntaxhighlight><br />
<br />
== PHPDocumentor ==<br />
Building local docs is simple enough. We recommend using the official Docker build at [https://hub.docker.com/r/phpdoc/phpdoc/tags?page=1&ordering=last_updated phpdoc/phpdoc].<br />
<br />
Your experience with the actual documentation may vary. There has been a recent push this year (2021) to get the local documentation more fully complete.<br />
<br />
Execute from the repo root to build the full documentation.<br />
<syntaxhighlight lang="bash"><br />
mkdir -p docs/complete;<br />
docker run --rm -v ${PWD}:/data phpdoc/phpdoc -d ./htdocs/ -t ./docs/complete<br />
</syntaxhighlight><br />
<br />
To build a subset:<br />
<syntaxhighlight lang="bash"><br />
mkdir -p docs/test;<br />
docker run --rm -v ${PWD}:/data phpdoc/phpdoc -f ./htdocs/path/to/directory/* -t ./docs/test<br />
</syntaxhighlight><br />
<br />
=Language Constructs=<br />
<br />
==Strings==<br />
<br />
'''Recommended:'''<br />
* Strings should be quoted with single quotes (')<br />
** Unless you are interpolating a variable<br />
** Or writing a string with lots of single quotes in it.<br />
* Variable interpolations should be written with {curly braces} around them.<br />
<br />
Examples:<br />
<br />
<syntaxhighlight lang="php"><br />
$a = 'This is a string.';<br />
$b = "This's a string that's got lots of apostrophes (i.e. <b>'</b> characters), in it. Ain't it pretty nifty?";<br />
$c = "My {$field} is {$users[$1]->$field}";<br />
</syntaxhighlight><br />
<br />
==require/require_once/include/include_once==<br />
<br />
These statements should have brackets around the argument. There is no space between the statement and the bracket. In effect, this is the same as a function call.<br />
<br />
<syntaxhighlight lang="php"><br />
require_once('my/file.php');<br />
</syntaxhighlight><br />
'''NOT''':<br />
<syntaxhighlight lang="php"><br />
require_once 'my/file.php';<br />
require_once ('my/file.php');<br />
</syntaxhighlight><br />
<br />
Plugin files '''must''' be included using the <code lang="php" container="div">safe_require()</code> function. This function ensures that there are no vulnerabilities in accessing a plugin file. Plugins that do not use this function to include files should be considered vulnerable to a possible security vulnerability.<br />
<br />
Any include statements in the core should '''never''' have a variable in their name, to reduce the chance of an arbitary include vulnerability.<br />
<br />
The include path is set automatically to be the current directory plus the lib directory - there is no need to specify an absolute directory path.<br />
<br />
==if/while/for statements==<br />
<br />
There is one space after each language construct, and no spaces between brackets and the arguments inside them, '''unless''' what is inside them becomes too long for one line, in which case a special format will be used.<br />
<br />
=== Examples of what is good: ===<br />
<br />
<syntaxhighlight lang="php"><br />
if (1 == 2) {<br />
die('omg');<br />
}<br />
<br />
while ($i < 3) {<br />
echo 'I am ' . $i;<br />
}<br />
<br />
for ($i = 0, $j = 7; $i < 34, $j != 3; $i++, $j--) {<br />
echo ($i * $j) . ' is a silly number';<br />
}<br />
<br />
// Note bracing style of else if/else clauses<br />
// Also note: do not use elseif<br />
if ($a == $b) {<br />
echo "a = b";<br />
}<br />
else if ($c == $d) {<br />
echo "c = d";<br />
}<br />
else {<br />
echo "e = ?";<br />
}<br />
<br />
// Ternary operator<br />
$a = ($b == true) ? 'hello' : 'goodbye';<br />
// When used with other things on each side in the same statement:<br />
$a = 'foo' . (($b == true) ? 'hello' : 'goodbye') . 'bar';<br />
<br />
// A complicated condition. Note location of condition,<br />
// and location of ending bracket and brace.<br />
// todo: what was the decision here regarding conditions on the "if (" line?<br />
if (<br />
$sacrificedgoats == $availablegoats<br />
&& ($dogs == $cats<br />
|| 1 != 2)<br />
|| ($yesterday >> $tomorrow == 4)<br />
) {<br />
// Do stuff<br />
}<br />
</syntaxhighlight><br />
<br />
=== Examples of what is bad: ===<br />
<syntaxhighlight lang="php"><br />
if ( $a == $b )<br />
{<br />
echo 'hi';<br />
}<br />
<br />
if($c == $d) {<br />
echo 'hi';<br />
} else {<br />
echo 'bye';<br />
}<br />
<br />
if ($e==$f)<br />
{<br />
echo 'hi';<br />
}<br />
else<br />
{<br />
echo 'bye';<br />
}<br />
</syntaxhighlight><br />
=== What should be never used: ===<br />
<syntaxhighlight lang="php"><br />
// For a really short condition<br />
if ($a == $b) $c = 1;<br />
</syntaxhighlight><br />
<br />
==Variables and Arrays==<br />
<br />
Variables should be named with no underscores, and no capital letters. This policy may become more lenient in future if variable names are discovered that are not easily readable without underscores.<br />
<br />
Do not name variables as negatives where possible - always use positive names and logical inversion (!) where required.<br />
<br />
Hungarian notation is forbidden.<br />
<br />
When related variables are initialised, the = signs for them should line up. Other than that, aligning = signs for variable assignment is up to the developer, although they should use common sense in such decisions.<br />
<br />
Good:<br />
<br />
<syntaxhighlight lang="php><br />
$found = false;<br />
$ponies = 0;<br />
$servername = $overkill;<br />
<br />
// Only in relation to controlling for/while loops<br />
for ($i = 10; $i > 5; $i--) {<br />
echo $i;<br />
}<br />
<br />
// Aligning = signs<br />
$mine = 0;<br />
$yours = 0;<br />
$theirs = 0;<br />
<br />
// Only if the number of elements to initialise is small.<br />
$array = array(1 => 'hello');<br />
<br />
// If large number of elements to initialise:<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
<br />
Bad:<br />
<syntaxhighlight lang="php"><br />
// Negative name<br />
$notfound = true;<br />
// Underscores<br />
$my_variable = '';<br />
// Hungarian. Eew....<br />
$count_i = 6;<br />
// Uppercase letters<br />
$myFish = $yourFish;<br />
<br />
// Not necessarily "bad", just not for this project<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
<br />
==Binary Operators==<br />
<br />
Always have a space on each side:<br />
<syntaxhighlight lang="php><br />
echo 1 + 2;<br />
if (1 == 2)<br />
echo 'hello' . ' world';<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="text" inline>||</syntaxhighlight> and <syntaxhighlight lang="text" inline>&&</syntaxhighlight> will always be used for <syntaxhighlight lang="text" inline>or</syntaxhighlight> and <syntaxhighlight lang="text" inline>and</syntaxhighlight> respectively. Resolve priority collisions with extra brackets as required.<br />
<br />
==Functions and Methods==<br />
<br />
'''Declaration:'''<br />
<syntaxhighlight lang="php"><br />
/**<br />
* PHPDoc comment describing the function<br />
*<br />
* Note how the default value has no spaces<br />
*/<br />
function foo($a, Class $b, $c='') {<br />
// source<br />
return $value;<br />
}<br />
<br />
class FooBar extends Bar {<br />
<br />
/**<br />
* PHPDoc for the field<br />
*<br />
* For this project, do not use doThis.<br />
*/<br />
public function do_this($c, $d) {<br />
// source<br />
}<br />
<br />
}<br />
</syntaxhighlight><br />
<br />
'''Calling:'''<br />
<br />
<syntaxhighlight lang="php"><br />
$result = foo($bar, $baz);<br />
$mine = $object->method($a, $b);<br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Coding_guidelines&diff=12774
Developer Area/Coding guidelines
2022-02-25T02:07:39Z
<p>Gold: syntax highlight</p>
<hr />
<div>This page documents the coding conventions used by Mahara. Everything that ends up in the git repository (other than third-party code) should follow these standards.<br />
<br />
You can also have a look at the [[Developer_Area/How_to_Review_Code|Reviewer's manual]] to see what reviewers will look at when looking at code submissions.<br />
<br />
Separate pages with more information:<br />
<br />
* [[Developer_Area/Coding_guidelines/PHP_files|PHP Files]]<br />
* [[Developer_Area/Coding_guidelines/JS_files|JavaScript Files (or snippets)]]<br />
* [[Developer_Area/Coding_guidelines/TPL_files|TPL Files (may change in future if move away from smarty, ie to twig)]]<br />
<br />
<br />
=Accessibility=<br />
<br />
Mahara should be accessible to anybody. We are aiming to follow the [https://www.w3.org/TR/WCAG21/ WCAG 2.1] AA principles. There are a [https://blueprints.launchpad.net/mahara/+spec/wcag2.1 areas that we identified that require changes] to achieve that aim. New and changed code should always be written with accessibility principles and guidelines in mind rather than tagged on 'when there is time'. Writing code accessible from the start makes it better code and requires less refactoring later on.<br />
<br />
The style guide, accessible via 'yourmaharadomain/theme/styleguide.php', gives useful basic information for a lot of style elements.<br />
<br />
Since the field of accessibility is changing, certain elements may require updates over time. You can find more information on our [https://wiki.mahara.org/wiki/Accessibility 'Accessibility' page].<br />
<br />
=File Headers=<br />
<br />
All files must adhere to the [[BasicPHPFileTemplates]]. There are slightly different templates depending on whether the script is to be included or whether it is to be directly hit.<br />
<br />
Closing php tags ?> should be omitted.<br />
<br />
=Whitespace=<br />
<br />
'''Required:'''<br />
* Indentation is using four (4) spaces, '''not''' tabs.<br />
* Line endings should be "Unix-style" (\n), not "Windows-style" (\r\n).<br />
* Avoid extra whitespace at the end of modified lines.<br />
* Avoid editing whitespaces unrelated to your specific code change, when submitting a patch. It makes reviewing the patch more difficult and add unnecessary noise to the change history.<br />
<br />
<br />
'''Recommended:'''<br />
* There is no requirement that the scripts are wrapped at 80 columns, however developers are asked to wrap long lines sensibly.<br />
<br />
=Language Constructs=<br />
<br />
<br />
==switch/case statements==<br />
<br />
"case" should use multiline formatting:<br />
<br />
<syntaxhighlight lang="php"><br />
switch ($var) {<br />
case 1:<br />
a = 25;<br />
b = 100;<br />
break;<br />
default:<br />
a = 0;<br />
b = 0;<br />
}<br />
</syntaxhighlight><br />
NOT<br />
<syntaxhighlight lang="php"><br />
case 1: a = 25; b = 100; break;<br />
</syntaxhighlight><br />
<br />
==Variables and Arrays==<br />
<br />
Variables should be named with no underscores, and no capital letters. This policy may become more lenient in future if variable names are discovered that are not easily readable without underscores.<br />
<br />
Do not name variables as negatives where possible - always use positive names and logical inversion (!) where required.<br />
<br />
Hungarian notation is forbidden.<br />
<br />
Aligning = signs for variable assignment is up to the developer, although they should use common sense in such decisions.<br />
<br />
Hardcoded binary data is not allowed for security reasons.<br />
<br />
Hardcoded serialised data is not allowed for security reasons.<br />
<br />
Good:<br />
<syntaxhighlight lang="php"><br />
$found = false;<br />
$ponies = 0;<br />
$servername = $overkill;<br />
<br />
// Only in relation to controlling for/while loops<br />
for ($i = 10; $i > 5; $i--) {<br />
echo $i;<br />
}<br />
<br />
// Aligning = signs<br />
$mine = 0;<br />
$yours = 0;<br />
$theirs = 0;<br />
<br />
// Only if the number of elements to initialise is small.<br />
$array = array(1 => 'hello');<br />
<br />
// If large number of elements to initialise:<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
Bad:<br />
<syntaxhighlight lang="php"><br />
// Negative name<br />
$notfound = true;<br />
// Underscores<br />
$my_variable = '';<br />
// Hungarian<br />
$count_i = 6;<br />
// Uppercase letters<br />
$myFish = $yourFish;<br />
<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
<br />
==Binary Operators==<br />
<br />
Always have a space on each side:<br />
<syntaxhighlight lang="php"><br />
echo 1 + 2;<br />
if (1 == 2)<br />
echo 'hello' . ' world';<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight lang="text" inline>||</syntaxhighlight> and <syntaxhighlight lang="text" inline>&&</syntaxhighlight> will always be used for <syntaxhighlight lang="text" inline>or</syntaxhighlight> and <syntaxhighlight lang="text" inline>and</syntaxhighlight> respectively. Resolve priority collisions with extra parentheses as required.<br />
<br />
==Classes, Functions and Methods==<br />
<br />
'''Nameing'''<br />
<br />
Classes should start with upper case character, then each word capitalized.<br />
<br />
<syntaxhighlight lang="php"><br />
class ExampleWhizbang {<br />
// ...<br />
}<br />
</syntaxhighlight><br />
<br />
Leave double empty line between classes blocks in the code.<br />
<br />
Functions should not use camel case, and instead use underscores as word separators<br />
<br />
<syntaxhighlight lang="php"><br />
function do_something(){<br />
// ...<br />
}<br />
</syntaxhighlight><br />
<br />
NOT<br />
<syntaxhighlight lang="php"><br />
function doSomething() {<br />
// ...<br />
}<br />
</syntaxhighlight><br />
<br />
Function name must start with a letter (no _ character before function name, unless you declare magic method where double underscore is used).<br />
<br />
Leave single empty line between two function blocks and between function block and code if function is used in non-library file.<br />
<br />
The built-in PHP class <code>[http://php.net/manual/en/reserved.classes.php "stdClass"]</code> should be written with a lowercase s, uppercase C, because that is its actual name. Other capitalizations, such as "StdClass" will not cause an error because invocations of classnames and functions are case-insensitive in PHP. However, it is good style to use the same capitalization as the declaration of the class/function.<br />
<br />
Constructors without arguments should be called with empty parentheses after them.<br />
<br />
Good:<br />
<br />
<syntaxhighlight lang="php"><br />
$a = new stdClass();<br />
$b = new RssBlock();<br />
</syntaxhighlight><br />
<br />
Bad:<br />
<br />
<syntaxhighlight lang="php"><br />
// stdClass written incorrectly<br />
$a = new StdClass();<br />
<br />
// no parentheses after constructor<br />
$b = new RssBlock;<br />
<br />
// lowercase user-created class<br />
$c = new fancyblock();<br />
</syntaxhighlight><br />
<br />
'''Declaration:'''<br />
<syntaxhighlight lang="php"><br />
/**<br />
* PHPDoc comment describing the function<br />
*<br />
* Note how the default value has no spaces<br />
*<br />
* @param $var type What it is for.<br />
* @param $b Class Example var that is of a specific class.<br />
*/<br />
function foo($a, Class $b, $c='') {<br />
// source<br />
return $value;<br />
}<br />
<br />
class FooBar extends Bar {<br />
<br />
/**<br />
* PHPDoc for the field<br />
*<br />
* For this project, do not use doThis.<br />
*/<br />
public function do_this($c, $d) {<br />
// source<br />
}<br />
<br />
}<br />
</syntaxhighlight><br />
<br />
'''Calling:'''<br />
<syntaxhighlight lang="php"><br />
$result = foo($bar, $baz);<br />
$mine = $object->method($a, $b);<br />
</syntaxhighlight><br />
<br />
=Javascript=<br />
All files must adhere to the [[BasicJSFileTemplates]].<br />
Javascript files should roughly follow [http://javascript.crockford.com/code.html Crockford's code conventions].</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Developer_Environment&diff=12770
Developer Area/Developer Environment
2022-02-25T02:04:56Z
<p>Gold: syntax highlight</p>
<hr />
<div>{{:Developer_Area/tabs}} <!-- to add further tabs, update the following page https://wiki.mahara.org/wiki/Developer_Area/tabs ... this will automatically cascade the changes to all relevant pages --><br />
<br />
<div style="float:right">__TOC__</div><br />
<br />
This page explains how to set up a copy of Mahara for development purposes.<br />
<br />
== The Docker version ==<br />
<br />
Included in the main codebase is a docker version of Mahara with Behat capabilities. Before you try this, you will need to have Docker installed.<br />
See: https://docs.docker.com/engine/install/ubuntu/<br />
<br />
The instructions for running the docker version are here:<br><br />
https://git.mahara.org/mahara/mahara/-/blob/main/docker/README.md<br />
<br />
Please feel free to update if there are missing instructions that would be helpful to others.<br />
<br />
== The short version ==<br />
<br />
Mahara is a fairly standard PHP web application. You mainly need to place it in your web server and give it a database, and a file storage directory. If you haven't set up a PHP web application before, skip to "the long version" down below.<br />
<br />
# Set up your Apache web server. For development purposes, it is often handy to have the web root sitting inside your home directory.<br />
# Retrieve a copy of the Mahara codebase. Place it in your Apache web root.<br />
# Create a Mahara "dataroot" directory '''outside''' of your web root. Make it read/writeable by Apache.<br />
# Create a database instance and database user for Mahara to use.<br />
# Edit the Mahara "config.php" file so that Mahara knows the location of its dataroot directory, and its database login credentials.<br />
# Run the Mahara installer by visiting your Mahara site in your web browser. If you are missing any required PHP modules, Mahara should tell you. Depending on what you already have installed, you may need one or more of these:<br />
#* If you're on '''Ubuntu 16.04''' or later<br />
#*# <syntaxhighlight lang="text" inline>php-pgsql</syntaxhighlight><br />
#*# <syntaxhighlight lang="text" inline>php-gd</syntaxhighlight><br />
#*# <syntaxhighlight lang="text" inline>php-curl</syntaxhighlight><br />
#*# <syntaxhighlight lang="text" inline>php-json</syntaxhighlight><br />
#*# <syntaxhighlight lang="text" inline>php-zip</syntaxhighlight><br />
#* If you are using Mysql instead of Postgres<br />
#*# <syntaxhighlight lang="text" inline>php7.4-mysql</syntaxhighlight> or<br />
#*# <syntaxhighlight lang="text" inline>php-mysql</syntaxhighlight><br />
<br />
== The long version (for Windows) ==<br />
<br />
If you want to install your developer environment on Windows, please [[Developer_Area/Developer_Environment_(Windows) | check the Windows instructions]].<br />
<br />
== The long version (for Linux) ==<br />
<br />
The instructions explain one way to set up an installation of Mahara for development purposes. These instructions are specifically for Ubuntu Linux, although the process will probably be quite similar in other Linux versions.<br />
<br />
'''The following instructions are for Ubuntu 16.04 and above unless otherwise noted.'''<br />
<br />
'''1.''' Install required packages:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt install \<br />
make curl wget xvfb git gitk postgresql php7.4-common php-cli libapache2-mod-php7.4 \<br />
php7.4-curl php7.4-gd php-json php-ldap php-pgsql php-xmlrpc php-zip php-xml php-mbstring \<br />
nodejs node-gyp php7.4-pgsql php7.4-xml php7.4-xmlrpc php7.4-mbstring libssl-dev npm<br />
</syntaxhighlight><br />
<br />
<small>Note on php versions: At the time of writing (Nov 2020), php 7.4 has a year of active development remaining, and we are expecting the release of php 8.0 sometime soon. Php 7.4 is currently the recommended version to install. Sometimes there is a generic package _and_ a version-specific package to be installed. [PHP supported versions](https://www.php.net/supported-versions.php)</small><br />
<br />
If you see any errors with the install, you may want to try installing in chunks. See the Troubleshooting section<br />
<br />
Set 7.4 as apache2's version of php<br />
<syntaxhighlight lang="bash"><br />
sudo a2enmod php7.4<br />
</syntaxhighlight><br />
<br />
Check which version of Node you are running with <syntaxhighlight lang="bash" inline>node -v</syntaxhighlight><br />
<br />
If you are running one of the long term service (lts) versions, 8.x or 10.x, that should work with Mahara fine. If you are running a higher version, or Node is not installed, you will need to add a version to run with Mahara.<br />
<br />
'''2.''' Get a copy of the Mahara code from git. We'll put it under your home directory, in a new directory called "code":<br />
See also [[Developer_Area/Getting_Code_from_Git|Getting Code from Git]]<br />
<br />
<syntaxhighlight lang="bash"><br />
cd ~<br />
mkdir code<br />
cd code<br />
git clone https://git.mahara.org/mahara/mahara.git<br />
</syntaxhighlight><br />
<br />
'''Or, if that failed, use:'''<br />
<br />
<syntaxhighlight lang="bash"><br />
$ git clone https://github.com/MaharaProject/mahara.git<br />
</syntaxhighlight><br />
<br />
'''Or, if you have an account on the Mahara gitlab then do the following:<br />
<br />
<syntaxhighlight lang="bash"><br />
$ git clone git@git.mahara.org:mahara/mahara.git<br />
</syntaxhighlight><br />
<br />
'''3.''' Give the Apache web server access to your Mahara code directory:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo chmod a+rx ~/code/mahara<br />
</syntaxhighlight><br />
<br />
'''3a.''' To avoid a possible 403 error later, confirm that your code directory permissions are also drwxr-xr-x<br />
<syntaxhighlight lang="bash"><br />
ls -la ~/<br />
</syntaxhighlight><br />
To fix, run:<br />
<syntaxhighlight lang="bash"><br />
sudo chmod a+rx ~/code<br />
</syntaxhighlight><br />
<br />
Your home directory permissions should be drwx--x--x<br />
Check with:<br />
<syntaxhighlight lang="bash"><br />
ls -la /home<br />
</syntaxhighlight><br />
Fix with:<br />
<syntaxhighlight lang="bash"><br />
sudo chmod a+x /home/[name of your home directory]<br />
</syntaxhighlight><br />
<br />
'''4.''' Create a PostgreSQL database user:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo -u postgres createuser -P -D -R -S maharauser<br />
</syntaxhighlight><br />
<br />
You'll be prompted for a password. Enter '''maharapassword''' for the password.<br />
<br />
If Postgres is not available, check its status and if it says that it's inactive, start the service:<br />
<br />
<syntaxhighlight lang="bash"><br />
service postgresql status<br />
sudo service postgresql start<br />
</syntaxhighlight><br />
<br />
Now create a database:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo -u postgres createdb -Omaharauser mahara-main<br />
</syntaxhighlight><br />
<br />
'''5.''' Using a text editor, copy these contents into a file and save it to <syntaxhighlight lang="text" inline>~/code/mahara/htdocs/config.php</syntaxhighlight>:<br />
<br />
<syntaxhighlight lang="php"><br />
<?php<br />
$cfg = new stdClass();<br />
<br />
$branch = 'main';<br />
<br />
// database connection details<br />
// valid values for dbtype are 'postgres8' and 'mysql5'<br />
$cfg->dbtype = 'postgres';<br />
$cfg->dbhost = 'localhost';<br />
$cfg->dbuser = 'maharauser';<br />
$cfg->dbname = "mahara-$branch";<br />
$cfg->dbpass = 'maharapassword'; <br />
<br />
$cfg->dataroot = "/var/lib/maharadata/$branch";<br />
<br />
$cfg->sendemail = true;<br />
$cfg->sendallemailto = '<your email address>';<br />
<br />
$cfg->productionmode = false;<br />
$cfg->perftofoot = true;<br />
</syntaxhighlight><br />
<br />
Make sure to replace <syntaxhighlight lang="text" inline><your email address></syntaxhighlight> with your email address.<br />
<br />
If you're mainly testing, and you don't find the stack traces in these screen messages particularly useful, adding <syntaxhighlight lang="text" inline>$cfg->log_backtrace_levels = LOG_LEVEL_ENVIRON;</syntaxhighlight> to config.php will display important warning messages on a single line, without stack traces.<br />
<br />
'''6.''' Create a dataroot directory (this is where Mahara stores uploaded files):<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo mkdir /var/lib/maharadata<br />
sudo mkdir /var/lib/maharadata/main<br />
sudo chown www-data:www-data /var/lib/maharadata/main<br />
</syntaxhighlight><br />
<br />
'''7.''' Set up a new local domain name "mahara" for your Mahara site, in /etc/hosts:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo sh -c "echo '127.0.0.1 mahara' >> /etc/hosts"<br />
</syntaxhighlight><br />
<br />
'''8.''' Increase your PHP "post_max_size" setting to 32M in php.ini:<br />
<br />
If you are using '''Ubuntu 16.04''' or later, these files will be under the version of php you are using, e.g. /etc/php/7.4:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo sh -c "echo 'post_max_size = 37M' >> /etc/php/7.4/cli/php.ini"<br />
sudo sh -c "echo 'upload_max_filesize = 32M' >> /etc/php/7.4/cli/php.ini"<br />
sudo sh -c "echo 'post_max_size = 37M' >> /etc/php/7.4/apache2/php.ini"<br />
sudo sh -c "echo 'upload_max_filesize = 32M' >> /etc/php/7.4/apache2/php.ini"<br />
</syntaxhighlight><br />
<br />
Note: The 'post_max_size' is slightly bigger as a POST command also contains some wrapper information. That wrapper is just text strings and relates to how much the form submits. So usually, 1MB should be enough, but to be on the safe side, 5MB would be better, which then also works for larger uploads.<br />
<br />
'''9.''' Create an Apache configuration file to point to your copy of Mahara. You can do this by first copying the following contents into a file called "mahara.conf", saved in your home directory.<br />
See also: [[Developer_Area/Changing_Hostnames|Changing Hostnames]]<br />
<br />
<syntaxhighlight lang="apache"><br />
<VirtualHost *:80><br />
ServerName mahara<br />
DocumentRoot /home/<your username>/code/mahara/htdocs<br />
<br />
<Directory /home/<your username>/code><br />
Options Indexes FollowSymLinks MultiViews<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
</syntaxhighlight><br />
<br />
Then copy the file into your Apache sites-enable directory. The name to give the file will also vary depending on what version of Ubuntu you are using.<br />
<br />
<syntaxhighlight lang="text" inline>sudo cp ~/mahara.conf /etc/apache2/sites-available/mahara.conf</syntaxhighlight><br />
<br />
'''10.''' Enable the site in Apache:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo a2ensite mahara<br />
sudo apache2ctl configtest<br />
sudo apache2ctl graceful<br />
</syntaxhighlight><br />
<br />
'''11.''' Set up cron:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo vim /etc/cron.d/mahara<br />
* * * * * www-data /usr/bin/php /home/<your username>/code/mahara/htdocs/lib/cron.php<br />
</syntaxhighlight><br />
<br />
If you do not wish to get cron emails every minute, use the following instead:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo vim /etc/cron.d/mahara<br />
* * * * * www-data /usr/bin/php /home/<your username>/code/mahara/htdocs/lib/cron.php >/dev/null 2>&1<br />
</syntaxhighlight><br />
<br />
<br />
Save your file.<br />
<br />
'''12.''' Set up npm and gulp<br />
<br />
The main Mahara git repository includes SCSS files that compile into CSS files, instead of including CSS files directly. We compile these using a Gulp (NodeJS) script that's included with the code. This can easily be invoked via our Makefile by doing "make css", but it requires setting up a couple of additional items first.<br />
<br />
First you'll need to run "npm install" from within the Mahara code directory, to get npm to properly set up all the proper caches and such.<br />
<br />
<syntaxhighlight lang="bash"><br />
cd /home/<your username>/code/mahara<br />
npm install<br />
</syntaxhighlight><br />
<br />
Once that's finished, you'll need to install the npm "gulp" package using the "-g" (global) flag, so that "gulp" can be run as a CLI command. This requires using sudo.<br />
<br />
<syntaxhighlight lang="bash"><br />
cd /home/<your username>/code/mahara<br />
sudo npm install -g gulp<br />
</syntaxhighlight><br />
<br />
'''Note that Mahara runs with at least version 10.x of node. This section needs updating'''<br />
Note: In Mahara 18.10 we upgraded dependencies to work with latest node 8.x (LTS), you may need to update node via: <br />
<syntaxhighlight lang="bash"><br />
sudo npm cache clean -f<br />
sudo npm install -g n <br />
sudo n 8.11.3 (latest at patch)<br />
</syntaxhighlight><br />
Then update node-sass bindings:<br />
<syntaxhighlight lang="bash"><br />
sudo npm rebuild node-sass<br />
</syntaxhighlight><br />
<br />
'''13.''' Build the CSS<br />
<br />
Now that this is done, you can build the CSS files. The easiest way to do this is by doing "make css" in the Mahara code directory. This will run the necessary series of instructions written out in the Makefile.<br />
<br />
<syntaxhighlight lang="bash"><br />
cd /home/<your username>/code/mahara<br />
make css<br />
</syntaxhighlight><br />
<br />
If you see a lot of errors, such as depreciation warnings for .css files, try deleting /home/<your username>/code/mahara/package-lock.json and then re-running "nvm install" and "make css", which should resolve the issues.<br />
<br />
'''13a.''' Build the CSS in non-production mode<br />
<br />
Sometimes it gets confusing where the sass info comes from to compile the css files. Too make things easier you can edit the 'Makefile' and change the production mode to false<br />
<br />
production = false<br />
<br />
Then run the "make css" again - this will compile the *.css files in an easier to read format with comments about which sass file contributed to the chuck of css code, eg:<br />
<br />
<syntaxhighlight lang="css"><br />
/* line 27, /home/robertl/code/mahara-devel/mahara/htdocs/theme/raw/sass/layout/_footer.scss */<br />
.admin .footer .footer-inner {<br />
padding: 10px; }<br />
/* line 36, /home/robertl/code/mahara-devel/mahara/htdocs/theme/default/sass/layout/_footer.scss */<br />
.admin .footer .footer-inner {<br />
padding: 20px 10px;<br />
background: none;<br />
border: 0;<br />
border-radius: 0; }<br />
</syntaxhighlight><br />
<br />
'''14.''' Go to the site in your browser.<br />
<br />
http://mahara/<br />
<br />
'''15.''' You should see the Mahara installer page. If you do, congratulations! Your development environment is now set up.<br />
<br />
===Trouble-shooting===<br />
<br />
<br />
====Ubuntu 18.04 & PHP 7.2====<br />
If you are using '''Ubuntu 18.04''' and php 7.2, you may need to use the "php7.2-*" and installing all at once doesn't work for you:<br />
<br />
To help with installing you should install in chunks to help diagnose / fix problems. First do:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt-get install make curl wget xvfb git gitk postgresql<br />
</syntaxhighlight><br />
<br />
Once that is installed do:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt-get install php7.2-common php-cli libapache2-mod-php7.2 php7.2-curl php7.2-gd<br />
</syntaxhighlight><br />
<br />
If you get the error "The following packages have unmet dependencies" try downgrading your php7.2-common to a compatible version:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt-get install php7.2-common=7.2.3-1ubuntu1<br />
</syntaxhighlight><br />
<br />
then run the previous command again<br />
<br />
Once that is installed do:<br />
<syntaxhighlight lang="bash"><br />
sudo apt-get install php-json php-ldap php-pgsql php-xmlrpc php-zip php-xml php-mbstring nodejs node-gyp </syntaxhighlight><br />
<br />
You may also need to install some specific php7.2 versions of these:<br />
<syntaxhighlight lang="bash"><br />
sudo apt install php7.2-pgsql php7.2-xml php7.2-xmlrpc php7.2-mbstring<br />
</syntaxhighlight><br />
<br />
and then:<br />
<br />
<syntaxhighlight lang="bash"><br />
sudo apt-get install libssl-dev<br />
</syntaxhighlight><br />
<br />
If you get the error "The following packages have unmet dependencies", try downgrading your libssl1.1 to a compatible version:<br />
<syntaxhighlight lang="bash"><br />
sudo apt-get install libssl1.1=1.1.0g-2ubuntu4<br />
</syntaxhighlight><br />
<br />
then run the previous command again.<br />
<br />
<br />
====Enabling apache2's version of PHP====<br />
<br />
When you do:<br />
<syntaxhighlight lang="bash"><br />
sudo a2enmod php7.2<br />
</syntaxhighlight><br />
<br />
And see errors like:<br />
Considering dependency mpm_prefork for php7.2:<br />
Considering conflict mpm_event for mpm_prefork:<br />
ERROR: Module mpm_event is enabled - cannot proceed due to conflicts. It needs to be disabled first!<br />
Considering conflict mpm_worker for mpm_prefork:<br />
ERROR: Could not enable dependency mpm_prefork for php7.2, aborting<br />
<br />
You will need to disable the chasing MPM options:<br />
<syntaxhighlight lang="bash"><br />
sudo a2dismod mpm_prefork<br />
sudo a2dismod mpm_worker<br />
sudo a2dismod mpm_event<br />
</syntaxhighlight><br />
<br />
Then do:<br />
<syntaxhighlight lang="bash"><br />
sudo a2enmod php7.2<br />
</syntaxhighlight><br />
<br />
this way the php7.2 mod should auto enable the correct MPM.<br />
<br />
<br />
====Dataroot & Ubuntu 18.04/PHP 7.2====<br />
<br />
If you are '''upgrading to Ubuntu 18.04/PHP 7.2''' from earlier version you will also need to go into your dataroot directory (path is defined in the config.php file) and delete the 'dwoo' and 'sessions' sub-directories found there. They will be automatically generated again.<br />
<br />
<br />
====Using MySql8====<br />
<br />
If you are going to be using '''MySql 8''' or later, you will need to do the following:<br />
* To install MySql 8 on Ubuntu 16.04 see https://www.digitalocean.com/community/tutorials/how-to-install-the-latest-mysql-on-ubuntu-16-04<br />
We need to add a line to our mysql conf file so that we can log in with older format passwords, so edit:<br />
<syntaxhighlight lang="bash"><br />
vi /etc/mysql/mysql.conf.d/mysqld.cnf<br />
</syntaxhighlight><br />
And make sure we have<br />
<syntaxhighlight lang="bash"><br />
[mysqld]<br />
default_authentication_plugin=mysql_native_password<br />
</syntaxhighlight><br />
<br />
You will need to set the db user to use the native password<br />
<br />
CREATE USER 'maharauser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mahara';<br />
<br />
=====MySQL in Docker=====<br />
If you have Docker available you can [[System Administrator's Guide/Installing Mahara/MySQL and Docker|spin it up a dedicated container for it]].<br />
<br />
====Installing Node versions====<br />
<br />
Check which version of Node you are running with<br />
<syntaxhighlight lang="bash"><br />
node -v<br />
</syntaxhighlight><br />
If you are running one of the long term service (lts) versions, 8.x or 10.x, that should work with Mahara fine. If you are running a higher version, or Node is not installed, you will need to add a version to run with Mahara.<br />
<br />
You can find various instructions on how to upgrade NodeJS on your distribution depending on your preference on package manager. (There are a couple of links at the bottom of this section.)<br />
<br />
A straight-forward way to manage multiple versions of Node is to use NVM:<br />
<br />
* [https://github.com/creationix/nvm#install-script/ How to install NVM ]<br />
<br />
Once you have it installed run:<br />
<syntaxhighlight lang="bash"><br />
nvm install --lts<br />
nvm use --lts<br />
</syntaxhighlight><br />
This will download the latest lts version of Node and set it to default. Then if you need to switch versions for other projects, you can do so with "nvm use <version>".<br />
<br />
Links to alternative ways of installing Node:<br />
* [https://nodejs.org/en/download/package-manager/ Installing Node.js via package manager]<br />
* [https://tecadmin.net/install-latest-nodejs-npm-on-ubuntu/ How to Install Latest Nodejs & Npm on Ubuntu 16.04 & 14.04 ]<br />
<br />
<br />
<br />
ts-php versions - also add set alternatives here<br />
Note on changing versions: you can see which version apache is using by adding phpinfo() in your code.<br />
<br />
==Adding another branch==<br />
<br />
'''1.''' Create a new local branch for it in git (replace '''1.10 / 110''' with the version of Mahara for which you want to add a branch)<br />
<syntaxhighlight lang="bash"><br />
$ cd ~/code/mahara<br />
$ git checkout -t origin/1.10_STABLE<br />
</syntaxhighlight><br />
<br />
'''2.''' Create the sitedata directory for the new branch:<br />
<syntaxhighlight lang="bash"><br />
$ sudo mkdir /var/lib/maharadata/110stable<br />
$ sudo chown www-data:www-data /var/lib/maharadata/110stable<br />
</syntaxhighlight><br />
<br />
'''3.''' Create a database:<br />
<syntaxhighlight lang="bash"><br />
$ sudo -u postgres createdb -Omaharauser mahara-110stable<br />
</syntaxhighlight><br />
<br />
'''4.''' Change your ~/code/mahara/htdocs/config.php to point to the 1.10 branch:<br />
<syntaxhighlight lang="php"><br />
$branch = '110stable';<br />
</syntaxhighlight><br />
<br />
'''5.''' Go to the site in your browser to run the Mahara installer:<br />
<br />
http://mahara/<br />
<br />
&nbsp;<br />
<br />
==Switching back to the main branch==<br />
<br />
'''1.''' Change the config.php file:<br />
<syntaxhighlight lang="php"><br />
$branch = 'main';<br />
</syntaxhighlight><br />
<br />
'''2.''' Switch to the right git branch:<br />
<syntaxhighlight lang="bash"><br />
$ cd ~/code/mahara/<br />
$ git checkout main<br />
</syntaxhighlight><br />
<br />
&nbsp;<br />
==Reset the database==<br />
<br />
'''1.''' Delete the old database:<br />
<syntaxhighlight lang="bash"><br />
$ sudo -u postgres dropdb mahara-main<br />
</syntaxhighlight><br />
<br />
'''2.''' Create a new one with the same name:<br />
<syntaxhighlight lang="bash"><br />
$ sudo -u postgres createdb -Omaharauser mahara-main<br />
</syntaxhighlight><br />
<br />
'''3.''' Go to the site in your browser to run the Mahara installer again:<br />
<br />
http://mahara/<br />
<br />
If you reset the database a lot, you might want to try out the "maharawipe.sh" utility at https://github.com/agwells/mahara-devtools<br />
<br />
==Testing a change submitted to Gerrit==<br />
<br />
'''1.''' Go to the change page, for example:<br />
<syntaxhighlight lang="bash"><br />
https://reviews.mahara.org/#change,230<br />
</syntaxhighlight><br />
<br />
'''2.''' In your local repository, switch to the branch listed in the Gerrit change (in this case: main):<br />
<syntaxhighlight lang="bash"><br />
$ cd ~/code/mahara<br />
$ git checkout main<br />
</syntaxhighlight><br />
<br />
'''3.''' Update your config.php to use the right branch, too.<br />
<br />
'''4.''' Copy the "Anonymous Git" URL in the "Download" section of "Patch Set X" and run it in ~/code/mahara to check the branch out, for example:<br />
<syntaxhighlight lang="bash"><br />
$ git fetch git://reviews.mahara.org/git/mahara refs/changes/30/230/1 && git checkout FETCH_HEAD<br />
$ make css<br />
</syntaxhighlight><br />
<br />
'''5.''' After finishing the testing, go back to main:<br />
<syntaxhighlight lang="bash"><br />
$ git checkout main<br />
$ make css<br />
</syntaxhighlight><br />
<br />
&nbsp;<br />
<br />
==Submitting a change to Gerrit==<br />
<br />
If you want to contribute a patch to the Mahara project yourself, please check out the wiki page on [[Developer_Area/Contributing_Code | contributing code]]. There is also a [[Developer_Area/Contributing_Code/Troubleshooting_your_Gerrit_connection | troubleshooting page]] in case you run into issues pushing code to Gerrit.<br />
<br />
&nbsp;<br />
==Copying a local install to another==<br />
<br />
This example uses the directory 15stable as an example for the new install and the 14stable install as database and sitedata directory to copy.<br />
<br />
'''1.''' Do a checkout of the code into a new directory:<br />
<syntaxhighlight lang="bash"><br />
$ cd ~<br />
$ mkdir code<br />
$ cd code<br />
$ git clone git@git.mahara.org:mahara/mahara.git 15stable<br />
</syntaxhighlight><br />
<br />
'''2.''' Copy the database:<br />
<br />
<syntaxhighlight lang="bash"><br />
$ sudo -u postgres pg_dump -Fc mahara-14stable > 14stable.pg<br />
$ sudo -u postgres createdb -Omaharauser mahara-15stable<br />
$ sudo -u postgres pg_restore -O -j4 -d mahara-15stable -U maharauser -W -h localhost 14stable.pg<br />
</syntaxhighlight><br />
<br />
If you've not given the user 'maharauser' full privileges yet (should only need to do this once)<br />
<syntaxhighlight lang="bash"><br />
$ sudo -u postgres psql -d mahara-15stable -c 'GRANT ALL PRIVILEGES ON SCHEMA public TO maharauser;'<br />
$ sudo -u postgres psql -d mahara-15stable -c 'GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO maharauser;'<br />
$ sudo -u postgres psql -d mahara-15stable -c 'GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO maharauser;'<br />
$ sudo -u postgres psql -d mahara-15stable -c 'GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO maharauser;'<br />
</syntaxhighlight><br />
<br />
'''3.''' Change the wwwroot in the new database:<br />
<syntaxhighlight lang="bash"><br />
$ sudo -u postgres psql mahara-15stable<br />
delete from config where field = 'wwwroot';<br />
Ctrl + d to exit<br />
</syntaxhighlight><br />
<br />
'''4.''' Create the config file ~/code/mahara/htdocs/config.php:<br />
<syntaxhighlight lang="php"><br />
<?php<br />
$cfg = new StdClass;<br />
<br />
$branch = '15stable';<br />
<br />
// database connection details<br />
// valid values for dbtype are 'postgres8' and 'mysql5'<br />
$cfg->dbtype = 'postgres8';<br />
$cfg->dbhost = 'localhost';<br />
$cfg->dbuser = 'maharauser';<br />
$cfg->dbname = "mahara-$branch";<br />
$cfg->dbpass = 'mahara'; <br />
$cfg->dbprefix = '''''''; <br />
<br />
$cfg->dataroot = "/var/lib/maharadata/$branch";<br />
<br />
$cfg->sendemail = true;<br />
$cfg->sendallemailto = 'your email address';<br />
<br />
$cfg->log_dbg_targets = LOG_TARGET_SCREEN | LOG_TARGET_ERRORLOG;<br />
$cfg->log_info_targets = LOG_TARGET_SCREEN | LOG_TARGET_ERRORLOG;<br />
$cfg->log_warn_targets = LOG_TARGET_SCREEN | LOG_TARGET_ERRORLOG;<br />
$cfg->log_environ_targets = LOG_TARGET_SCREEN | LOG_TARGET_ERRORLOG;<br />
$cfg->perftofoot = true;<br />
</syntaxhighlight> <br />
<br />
'''5.''' Copy the source sitedata directory into the new sitedata folder:<br />
<syntaxhighlight lang="bash"><br />
$ sudo cp -r /var/lib/maharadata/14stable/ /var/lib/maharadata/15stable<br />
$ sudo chown -R www-data:www-data /var/lib/maharadata/15stable<br />
</syntaxhighlight><br />
<br />
'''6.''' Add a new entry to /etc/hosts:<br />
<syntaxhighlight lang="bash"><br />
127.0.0.1 15stable<br />
</syntaxhighlight><br />
<br />
'''7.''' Create a new Apache vhost file in /etc/apache2/sites-available/15stable.conf:<br />
<syntaxhighlight lang="apacheconf"><br />
<VirtualHost *:80><br />
ServerName 15stable<br />
DocumentRoot /home/<your username>/code/15stable/htdocs<br />
<br />
<Directory /home/<your username>/code><br />
Options Indexes FollowSymLinks MultiViews<br />
Order allow,deny<br />
Allow from all<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/access.log combined<br />
DirectoryIndex index.php index.html<br />
</VirtualHost><br />
</syntaxhighlight><br />
<br />
'''8.''' Enable the site in Apache:<br />
<syntaxhighlight lang="bash"><br />
$ sudo a2ensite 15stable<br />
$ sudo apache2ctl configtest<br />
$ sudo apache2ctl graceful<br />
</syntaxhighlight><br />
<br />
'''9.''' Go to the site in your browser to run the Mahara installer:<br />
<syntaxhighlight lang="bash"><br />
http://15stable/<br />
</syntaxhighlight><br />
<br />
'''10.''' Resetting the admin password:<br />
<br />
If you do not know the login info for the copied site's database or the new site uses a different 'passwordsaltmain' from the old one you can reset a users password via the CLI script "reset_password.php", for example if you need to reset the 'admin' user's password you can go:<br />
<br />
sudo -u www-data php htdocs/admin/cli/reset_password.php -u=admin -p=changeme<br />
<br />
This will reset the password and on next login you will be prompted to change the password again to something more robust.<br />
<br />
&nbsp;<br />
<br />
== Elasticsearch ==<br />
<br />
If you want to test the Elasticsearch search plugin, you'll also need to set up and run an Elasticsearch server. See [[Developer Area/Setting up Elasticsearch]].<br />
&nbsp;<br />
== ClamAV ==<br />
If you want to test the ClamAV virus protection see [[Developer Area/Setting up ClamAV|Setting up ClamAV]]<br />
<br />
&nbsp;<br />
== Set up site for local https:// ==<br />
<br />
You will need to set up your Mahara developer site with an SSL certificate if you want to use the web services functionality as that is only available over https.<br />
<br />
You should already have Apache 2 installed on your computer. Otherwise, Mahara wouldn't run. Install the openssl and ssl-cert packages:<br />
<br />
<syntaxhighlight lang="bash"><br />
$ sudo apt-get install openssl ssl-cert<br />
</syntaxhighlight><br />
<br />
'''1.''' Enable SSL in Apache 2:<br />
<syntaxhighlight lang="bash"><br />
$ cd /etc/apache2/mods-enabled/<br />
$ ls<br />
$ sudo a2enmod ssl<br />
$ service apache2 restart<br />
$ ls<br />
</syntaxhighlight><br />
<br />
You should see "ssl.conf" and "ssl.load"<br />
<br />
'''2.''' You'll need to check that the port for SSL traffic is configured.<br />
<syntaxhighlight lang="bash"><br />
$ cd ..<br />
$ cat ports.conf<br />
</syntaxhighlight><br />
<br />
If you see '''<IfModule ssl_module> Listen 443''', you are good to go.<br />
<br />
'''3.''' Enable SSL also in your Mahara Apache 2 config file.<br />
<syntaxhighlight lang="bash"><br />
$ vim sites-available/mahara.conf (or the name of your config file of the site for which you want to enable SSL)<br />
</syntaxhighlight><br />
<br />
Paste the following into the .conf file after the </VirtualHost> for port 80. The last re-write rules are only necessary if you use the "Clean URL" functionality.<br />
<syntaxhighlight lang="apache"><br />
<IfModule mod_ssl.c><br />
<VirtualHost *:443><br />
ServerName mahara<br />
<br />
DocumentRoot /home/'''<your username>'''/code/mahara/htdocs<br />
<Directory /home/'''<your username>'''/code><br />
Options Indexes FollowSymLinks MultiViews<br />
AllowOverride None<br />
Require all granted<br />
</Directory><br />
<br />
ErrorLog /var/log/apache2/mahara-ssl-error.log<br />
LogLevel info<br />
<br />
CustomLog /var/log/apache2/mahara-ssl-access.log combined<br />
<br />
# SSL Engine Switch:<br />
# Enable/Disable SSL for this virtual host.<br />
SSLEngine on<br />
<br />
# A self-signed (snakeoil) certificate can be created by installing<br />
# the ssl-cert package. See<br />
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.<br />
# If both key and certificate are stored in the same file, only the<br />
# SSLCertificateFile directive is needed.<br />
SSLCertificateFile /etc/apache2/ssl/apache.pem<br />
SSLCertificateKeyFile /etc/apache2/ssl/apache.key<br />
<br />
# Server Certificate Chain:<br />
# Point SSLCertificateChainFile at a file containing the<br />
# concatenation of PEM encoded CA certificates which form the<br />
# certificate chain for the server certificate. Alternatively<br />
# the referenced file can be the same as SSLCertificateFile<br />
# when the CA certificates are directly appended to the server<br />
# certificate for convinience.<br />
#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt<br />
<br />
# Certificate Authority (CA):<br />
# Set the CA certificate verification path where to find CA<br />
# certificates for client authentication or alternatively one<br />
# huge file containing all of them (file must be PEM encoded)<br />
# Note: Inside SSLCACertificatePath you need hash symlinks<br />
# to point to the certificate files. Use the provided<br />
# Makefile to update the hash symlinks after changes.<br />
#SSLCACertificatePath /etc/ssl/certs/<br />
#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt<br />
# Certificate Revocation Lists (CRL):<br />
# Set the CA revocation path where to find CA CRLs for client<br />
# authentication or alternatively one huge file containing all<br />
# of them (file must be PEM encoded)<br />
# Note: Inside SSLCARevocationPath you need hash symlinks<br />
# to point to the certificate files. Use the provided<br />
# Makefile to update the hash symlinks after changes.<br />
#SSLCARevocationPath /etc/apache2/ssl.crl/<br />
#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl<br />
<br />
# Client Authentication (Type):<br />
# Client certificate verification type and depth. Types are<br />
# none, optional, require and optional_no_ca. Depth is a<br />
# number which specifies how deeply to verify the certificate<br />
# issuer chain before deciding the certificate is not valid.<br />
#SSLVerifyClient require<br />
#SSLVerifyDepth 10<br />
<br />
# Access Control:<br />
# With SSLRequire you can do per-directory access control based<br />
# on arbitrary complex boolean expressions containing server<br />
# variable checks and other lookup directives. The syntax is a<br />
# mixture between C and Perl. See the mod_ssl documentation<br />
# for more details.<br />
#<Location /><br />
#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \<br />
# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \<br />
# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \<br />
# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \<br />
# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \<br />
# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/<br />
#</Location><br />
<br />
# SSL Engine Options:<br />
# Set various options for the SSL engine.<br />
# o FakeBasicAuth:<br />
# Translate the client X.509 into a Basic Authorisation. This means that<br />
# the standard Auth/DBMAuth methods can be used for access control. The<br />
# user name is the `one line' version of the client's X.509 certificate.<br />
# Note that no password is obtained from the user. Every entry in the user<br />
# file needs this password: `xxj31ZMTZzkVA'.<br />
# o ExportCertData:<br />
# This exports two additional environment variables: SSL_CLIENT_CERT and<br />
# SSL_SERVER_CERT. These contain the PEM-encoded certificates of the<br />
# server (always existing) and the client (only existing when client<br />
# authentication is used). This can be used to import the certificates<br />
# into CGI scripts.<br />
# o StdEnvVars:<br />
# This exports the standard SSL/TLS related `SSL_*' environment variables.<br />
# Per default this exportation is switched off for performance reasons,<br />
# because the extraction step is an expensive operation and is usually<br />
# useless for serving static content. So one usually enables the<br />
# exportation for CGI and SSI requests only.<br />
# o StrictRequire:<br />
# This denies access when "SSLRequireSSL" or "SSLRequire" applied even<br />
# under a "Satisfy any" situation, i.e. when it applies access is denied<br />
# and no other module can change it.<br />
# o OptRenegotiate:<br />
# This enables optimized SSL connection renegotiation handling when SSL<br />
# directives are used in per-directory context.<br />
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire<br />
<FilesMatch "\.(cgi|shtml|phtml|php)$"><br />
SSLOptions +StdEnvVars<br />
</FilesMatch><br />
<br />
# SSL Protocol Adjustments:<br />
# The safe and default but still SSL/TLS standard compliant shutdown<br />
# approach is that mod_ssl sends the close notify alert but doesn't wait for<br />
# the close notify alert from client. When you need a different shutdown<br />
# approach you can use one of the following variables:<br />
# o ssl-unclean-shutdown:<br />
# This forces an unclean shutdown when the connection is closed, i.e. no<br />
# SSL close notify alert is send or allowed to received. This violates<br />
# the SSL/TLS standard but is needed for some brain-dead browsers. Use<br />
# this when you receive I/O errors because of the standard approach where<br />
# mod_ssl sends the close notify alert.<br />
# o ssl-accurate-shutdown:<br />
# This forces an accurate shutdown when the connection is closed, i.e. a<br />
# SSL close notify alert is send and mod_ssl waits for the close notify<br />
# alert of the client. This is 100% SSL/TLS standard compliant, but in<br />
# practice often causes hanging connections with brain-dead browsers. Use<br />
# this only for browsers where you know that their SSL implementation<br />
# works correctly.<br />
# Notice: Most problems of broken clients are also related to the HTTP<br />
# keep-alive facility, so you usually additionally want to disable<br />
# keep-alive for those clients, too. Use variable "nokeepalive" for this.<br />
# Similarly, one has to force some clients to use HTTP/1.0 to workaround<br />
# their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and<br />
# "force-response-1.0" for this.<br />
BrowserMatch "MSIE [2-6]" \<br />
nokeepalive ssl-unclean-shutdown \<br />
downgrade-1.0 force-response-1.0<br />
# MSIE 7 and newer should be able to use keepalive<br />
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown<br />
<br />
<IfModule mod_rewrite.c><br />
RewriteEngine on<br />
RewriteRule ^/user/([a-z0-9-]+)/?$ /user/view.php?profile=$1&%{QUERY_STRING}<br />
RewriteRule ^/user/([a-z0-9-]+)/([a-z0-9-]+)/?$ /view/view.php?profile=$1&page=$2&%{QUERY_STRING}<br />
RewriteRule ^/group/([a-z0-9-]+)/?$ /group/view.php?homepage=$1&%{QUERY_STRING}<br />
RewriteRule ^/group/([a-z0-9-]+)/([a-z0-9-]+)/?$ /view/view.php?homepage=$1&page=$2&%{QUERY_STRING}<br />
</IfModule><br />
</VirtualHost><br />
</IfModule><br />
</syntaxhighlight><br />
<br />
'''4.''' Create the SSL folder in /etc/apache2/ if it doesn't already exist:<br />
<syntaxhighlight lang="bash"><br />
$ sudo mkdir /etc/apache2/ssl<br />
</syntaxhighlight><br />
<br />
'''5.''' Run the following command to set up your local cert and follow the ensuing steps for generating it:<br />
<syntaxhighlight lang="bash"><br />
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.pem<br />
</syntaxhighlight><br />
<br />
When it asks you for the "Common name", you can put your local server's name.<br />
<br />
'''6.''' Restart Apache.<br />
<syntaxhighlight lang="bash"><br />
$ sudo service apache2 restart<br />
</syntaxhighlight><br />
<br />
If you have an error message that pertains to your SSL site, you'll need to fix it first before continuing.<br />
<br />
'''7.''' Test the Apache config:<br />
<syntaxhighlight lang="bash"><br />
$ sudo apache2ctl configtest<br />
</syntaxhighlight><br />
<br />
'''8.''' Delete the old wwwroot as that still points to http://. If you left it, you wouldn't see all assetts.<br />
<syntaxhighlight lang="bash"><br />
$ sudo -u postgres psql mahara-main<br />
delete from config where field = 'wwwroot';<br />
Ctrl + d to exit<br />
</syntaxhighlight><br />
<br />
'''9.''' Go to your Mahara URL and use '''https://'''. Since you created a self-signed cert, your connection will be untrusted. Proceed anyway.<br />
<br />
'''10.''' Now you can use your developer site with web services as well.<br />
<br />
== Set up Behat ==<br />
<br />
You can use the automated testing suite from Mahara 15.04 on. There is a [[Testing/Behat_Testing/Setup | separate installation page for Behat]].</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Coding_guidelines/PHP_files&diff=12763
Developer Area/Coding guidelines/PHP files
2022-02-25T01:30:29Z
<p>Gold: syntax highlight</p>
<hr />
<div>This page documents the coding conventions used by Mahara for PHP files. Everything that ends up in the git repository (other than third-party code) should follow these standards.<br />
<br />
You can also have a look at the [[Developer_Area/How_to_Review_Code|Reviewer's manual]] to see what reviewers will look at when looking at code submissions.<br />
<br />
For other languages, use the links at the [[Developer_Area/Coding_guidelines|main guideline page]].<br />
<br />
=The Basics=<br />
<br />
All files must adhere to the [[BasicPHPFileTemplates]]. There are slightly different templates depending on whether the script is to be included or whether it is to be directly hit.<br />
<br />
Indentation is using four (4) spaces. There is no requirement that the scripts are wrapped at 80 columns, however developers are asked to wrap long lines sensibly.<br />
<br />
= Documenting Code =<br />
<br />
* Comments at the head of files, functions, classes, etc should use the /** ... */ comment form for compatibility with [http://en.wikipedia.org/wiki/PHPDoc PHPDoc] and [http://usejsdoc.org/ JSDoc].<br />
* Explanatory comments in the body of the code should use only // comment markers, regardless of the length of the comment.<br />
** This allows /* ... */ markers to be used for quick mass commenting during debugging.<br />
* Comments about a line of code should be placed on their own line above that line of code, rather than at the end of it.<br />
** This makes them more visible to people scanning the page, and ensures they won't be hidden off the side of the page if the reader's editor window is small.<br />
<br />
Example:<br />
<br />
<syntaxhighlight lang="php"><br />
/**<br />
* First line is a summary of what this function does and can only be one line.<br />
*<br />
* More detail can be presented with a blank line between the summary<br />
* and description. This can be a multiline block.<br />
*<br />
* The description can also be multiple paragraphs. The description ends with a<br />
* blank line if there are any @tags that follow.<br />
*<br />
* @param boolean $bar description of the purpose of $bar<br />
* @param string $baz description of the purpose of $baz<br />
* @param array $qux description of the purpose of $qux<br />
* @return array|string This function either returns $qux with $baz added to it, or $baz with $bar added to it<br />
*/<br />
function foo($bar, $baz='bax', $qux=array()) {<br />
<br />
// This part is difficult and requires a long<br />
// explanation. This is that explanation. I am<br />
// still typing to see if I can make it to four<br />
// lines.<br />
if ($bar) {<br />
// put it on the end<br />
$qux[] = $baz;<br />
return $qux;<br />
} else {<br />
// I'm sure this makes sense somehow<br />
return $baz || ((string) $bar);<br />
}<br />
}<br />
</syntaxhighlight><br />
<br />
== PHPDocumentor ==<br />
Building local docs is simple enough. We recommend using the official Docker build at [https://hub.docker.com/r/phpdoc/phpdoc/tags?page=1&ordering=last_updated phpdoc/phpdoc].<br />
<br />
Your experience with the actual documentation may vary. There has been a recent push this year (2021) to get the local documentation more fully complete.<br />
<br />
Execute from the repo root to build the full documentation.<br />
<syntaxhighlight lang="bash"><br />
mkdir -p docs/complete;<br />
docker run --rm -v ${PWD}:/data phpdoc/phpdoc -d ./htdocs/ -t ./docs/complete<br />
</syntaxhighlight><br />
<br />
To build a subset:<br />
<syntaxhighlight lang="bash"><br />
mkdir -p docs/test;<br />
docker run --rm -v ${PWD}:/data phpdoc/phpdoc -f ./htdocs/path/to/directory/* -t ./docs/test<br />
</syntaxhighlight><br />
<br />
=Language Constructs=<br />
<br />
==Strings==<br />
<br />
'''Recommended:'''<br />
* Strings should be quoted with single quotes (')<br />
** Unless you are interpolating a variable<br />
** Or writing a string with lots of single quotes in it.<br />
* Variable interpolations should be written with {curly braces} around them.<br />
<br />
Examples:<br />
<br />
<syntaxhighlight lang="php"><br />
$a = 'This is a string.';<br />
$b = "This's a string that's got lots of apostrophes (i.e. <b>'</b> characters), in it. Ain't it pretty nifty?";<br />
$c = "My {$field} is {$users[$1]->$field}";<br />
</syntaxhighlight><br />
<br />
==require/require_once/include/include_once==<br />
<br />
These statements should have brackets around the argument. There is no space between the statement and the bracket. In effect, this is the same as a function call.<br />
<br />
<syntaxhighlight lang="php"><br />
require_once('my/file.php');<br />
</syntaxhighlight><br />
'''NOT''':<br />
<syntaxhighlight lang="php"><br />
require_once 'my/file.php';<br />
require_once ('my/file.php');<br />
</syntaxhighlight><br />
<br />
Plugin files '''must''' be included using the <code lang="php" container="div">safe_require()</code> function. This function ensures that there are no vulnerabilities in accessing a plugin file. Plugins that do not use this function to include files should be considered vulnerable to a possible security vulnerability.<br />
<br />
Any include statements in the core should '''never''' have a variable in their name, to reduce the chance of an arbitary include vulnerability.<br />
<br />
The include path is set automatically to be the current directory plus the lib directory - there is no need to specify an absolute directory path.<br />
<br />
==if/while/for statements==<br />
<br />
There is one space after each language construct, and no spaces between brackets and the arguments inside them, '''unless''' what is inside them becomes too long for one line, in which case a special format will be used.<br />
<br />
=== Examples of what is good: ===<br />
<br />
<syntaxhighlight lang="php"><br />
if (1 == 2) {<br />
die('omg');<br />
}<br />
<br />
while ($i < 3) {<br />
echo 'I am ' . $i;<br />
}<br />
<br />
for ($i = 0, $j = 7; $i < 34, $j != 3; $i++, $j--) {<br />
echo ($i * $j) . ' is a silly number';<br />
}<br />
<br />
// Note bracing style of else if/else clauses<br />
// Also note: do not use elseif<br />
if ($a == $b) {<br />
echo "a = b";<br />
}<br />
else if ($c == $d) {<br />
echo "c = d";<br />
}<br />
else {<br />
echo "e = ?";<br />
}<br />
<br />
// Ternary operator<br />
$a = ($b == true) ? 'hello' : 'goodbye';<br />
// When used with other things on each side in the same statement:<br />
$a = 'foo' . (($b == true) ? 'hello' : 'goodbye') . 'bar';<br />
<br />
// A complicated condition. Note location of condition,<br />
// and location of ending bracket and brace.<br />
// todo: what was the decision here regarding conditions on the "if (" line?<br />
if (<br />
$sacrificedgoats == $availablegoats<br />
&& ($dogs == $cats<br />
|| 1 != 2)<br />
|| ($yesterday >> $tomorrow == 4)<br />
) {<br />
// Do stuff<br />
}<br />
</syntaxhighlight><br />
<br />
=== Examples of what is bad: ===<br />
<syntaxhighlight lang="php"><br />
if ( $a == $b )<br />
{<br />
echo 'hi';<br />
}<br />
<br />
if($c == $d) {<br />
echo 'hi';<br />
} else {<br />
echo 'bye';<br />
}<br />
<br />
if ($e==$f)<br />
{<br />
echo 'hi';<br />
}<br />
else<br />
{<br />
echo 'bye';<br />
}<br />
</syntaxhighlight><br />
=== What should be never used: ===<br />
<syntaxhighlight lang="php"><br />
// For a really short condition<br />
if ($a == $b) $c = 1;<br />
</syntaxhighlight><br />
<br />
==Variables and Arrays==<br />
<br />
Variables should be named with no underscores, and no capital letters. This policy may become more lenient in future if variable names are discovered that are not easily readable without underscores.<br />
<br />
Do not name variables as negatives where possible - always use positive names and logical inversion (!) where required.<br />
<br />
Hungarian notation is forbidden.<br />
<br />
When related variables are initialised, the = signs for them should line up. Other than that, aligning = signs for variable assignment is up to the developer, although they should use common sense in such decisions.<br />
<br />
Good:<br />
<br />
<syntaxhighlight lang="php><br />
$found = false;<br />
$ponies = 0;<br />
$servername = $overkill;<br />
<br />
// Only in relation to controlling for/while loops<br />
for ($i = 10; $i > 5; $i--) {<br />
echo $i;<br />
}<br />
<br />
// Aligning = signs<br />
$mine = 0;<br />
$yours = 0;<br />
$theirs = 0;<br />
<br />
// Only if the number of elements to initialise is small.<br />
$array = array(1 => 'hello');<br />
<br />
// If large number of elements to initialise:<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
<br />
Bad:<br />
<syntaxhighlight lang="php"><br />
// Negative name<br />
$notfound = true;<br />
// Underscores<br />
$my_variable = '';<br />
// Hungarian. Eew....<br />
$count_i = 6;<br />
// Uppercase letters<br />
$myFish = $yourFish;<br />
<br />
// Not necessarily "bad", just not for this project<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
<br />
==Binary Operators==<br />
<br />
Always have a space on each side:<br />
<syntaxhighlight lang="php><br />
echo 1 + 2;<br />
if (1 == 2)<br />
echo 'hello' . ' world';<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight inline>||</syntaxhighlight> and <syntaxhighlight inline>&&</syntaxhighlight> will always be used for <syntaxhighlight inline>or</syntaxhighlight> and <syntaxhighlight inline>and</syntaxhighlight> respectively. Resolve priority collisions with extra brackets as required.<br />
<br />
==Functions and Methods==<br />
<br />
'''Declaration:'''<br />
<syntaxhighlight lang="php"><br />
/**<br />
* PHPDoc comment describing the function<br />
*<br />
* Note how the default value has no spaces<br />
*/<br />
function foo($a, Class $b, $c='') {<br />
// source<br />
return $value;<br />
}<br />
<br />
class FooBar extends Bar {<br />
<br />
/**<br />
* PHPDoc for the field<br />
*<br />
* For this project, do not use doThis.<br />
*/<br />
public function do_this($c, $d) {<br />
// source<br />
}<br />
<br />
}<br />
</syntaxhighlight><br />
<br />
'''Calling:'''<br />
<br />
<syntaxhighlight lang="php"><br />
$result = foo($bar, $baz);<br />
$mine = $object->method($a, $b);<br />
</syntaxhighlight></div>
Gold
https://wiki.mahara.org/index.php?title=Category:Pages_with_syntax_highlighting_errors&diff=12758
Category:Pages with syntax highlighting errors
2022-02-25T01:17:49Z
<p>Gold: Created page with "."</p>
<hr />
<div>.</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Coding_guidelines&diff=12757
Developer Area/Coding guidelines
2022-02-25T01:15:24Z
<p>Gold: /* Classes, Functions and Methods */ syntax highlight</p>
<hr />
<div>This page documents the coding conventions used by Mahara. Everything that ends up in the git repository (other than third-party code) should follow these standards.<br />
<br />
You can also have a look at the [[Developer_Area/How_to_Review_Code|Reviewer's manual]] to see what reviewers will look at when looking at code submissions.<br />
<br />
Separate pages with more information:<br />
<br />
* [[Developer_Area/Coding_guidelines/PHP_files|PHP Files]]<br />
* [[Developer_Area/Coding_guidelines/JS_files|JavaScript Files (or snippets)]]<br />
* [[Developer_Area/Coding_guidelines/TPL_files|TPL Files (may change in future if move away from smarty, ie to twig)]]<br />
<br />
<br />
=Accessibility=<br />
<br />
Mahara should be accessible to anybody. We are aiming to follow the [https://www.w3.org/TR/WCAG21/ WCAG 2.1] AA principles. There are a [https://blueprints.launchpad.net/mahara/+spec/wcag2.1 areas that we identified that require changes] to achieve that aim. New and changed code should always be written with accessibility principles and guidelines in mind rather than tagged on 'when there is time'. Writing code accessible from the start makes it better code and requires less refactoring later on.<br />
<br />
The style guide, accessible via 'yourmaharadomain/theme/styleguide.php', gives useful basic information for a lot of style elements.<br />
<br />
Since the field of accessibility is changing, certain elements may require updates over time. You can find more information on our [https://wiki.mahara.org/wiki/Accessibility 'Accessibility' page].<br />
<br />
=File Headers=<br />
<br />
All files must adhere to the [[BasicPHPFileTemplates]]. There are slightly different templates depending on whether the script is to be included or whether it is to be directly hit.<br />
<br />
Closing php tags ?> should be omitted.<br />
<br />
=Whitespace=<br />
<br />
'''Required:'''<br />
* Indentation is using four (4) spaces, '''not''' tabs.<br />
* Line endings should be "Unix-style" (\n), not "Windows-style" (\r\n).<br />
* Avoid extra whitespace at the end of modified lines.<br />
* Avoid editing whitespaces unrelated to your specific code change, when submitting a patch. It makes reviewing the patch more difficult and add unnecessary noise to the change history.<br />
<br />
<br />
'''Recommended:'''<br />
* There is no requirement that the scripts are wrapped at 80 columns, however developers are asked to wrap long lines sensibly.<br />
<br />
=Language Constructs=<br />
<br />
<br />
==switch/case statements==<br />
<br />
"case" should use multiline formatting:<br />
<br />
<syntaxhighlight lang="php"><br />
switch ($var) {<br />
case 1:<br />
a = 25;<br />
b = 100;<br />
break;<br />
default:<br />
a = 0;<br />
b = 0;<br />
}<br />
</syntaxhighlight><br />
NOT<br />
<syntaxhighlight lang="php"><br />
case 1: a = 25; b = 100; break;<br />
</syntaxhighlight><br />
<br />
==Variables and Arrays==<br />
<br />
Variables should be named with no underscores, and no capital letters. This policy may become more lenient in future if variable names are discovered that are not easily readable without underscores.<br />
<br />
Do not name variables as negatives where possible - always use positive names and logical inversion (!) where required.<br />
<br />
Hungarian notation is forbidden.<br />
<br />
Aligning = signs for variable assignment is up to the developer, although they should use common sense in such decisions.<br />
<br />
Hardcoded binary data is not allowed for security reasons.<br />
<br />
Hardcoded serialised data is not allowed for security reasons.<br />
<br />
Good:<br />
<syntaxhighlight lang="php"><br />
$found = false;<br />
$ponies = 0;<br />
$servername = $overkill;<br />
<br />
// Only in relation to controlling for/while loops<br />
for ($i = 10; $i > 5; $i--) {<br />
echo $i;<br />
}<br />
<br />
// Aligning = signs<br />
$mine = 0;<br />
$yours = 0;<br />
$theirs = 0;<br />
<br />
// Only if the number of elements to initialise is small.<br />
$array = array(1 => 'hello');<br />
<br />
// If large number of elements to initialise:<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
Bad:<br />
<syntaxhighlight lang="php"><br />
// Negative name<br />
$notfound = true;<br />
// Underscores<br />
$my_variable = '';<br />
// Hungarian<br />
$count_i = 6;<br />
// Uppercase letters<br />
$myFish = $yourFish;<br />
<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
<br />
==Binary Operators==<br />
<br />
Always have a space on each side:<br />
<syntaxhighlight lang="php"><br />
echo 1 + 2;<br />
if (1 == 2)<br />
echo 'hello' . ' world';<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight inline>||</syntaxhighlight> and <syntaxhighlight inline>&&</syntaxhighlight> will always be used for <syntaxhighlight inline>or</syntaxhighlight> and <syntaxhighlight inline>and</syntaxhighlight> respectively. Resolve priority collisions with extra parentheses as required.<br />
<br />
==Classes, Functions and Methods==<br />
<br />
'''Nameing'''<br />
<br />
Classes should start with upper case character, then each word capitalized.<br />
<br />
<syntaxhighlight lang="php"><br />
class ExampleWhizbang {<br />
// ...<br />
}<br />
</syntaxhighlight><br />
<br />
Leave double empty line between classes blocks in the code.<br />
<br />
Functions should not use camel case, and instead use underscores as word separators<br />
<br />
<syntaxhighlight lang="php"><br />
function do_something(){<br />
// ...<br />
}<br />
</syntaxhighlight><br />
<br />
NOT<br />
<syntaxhighlight lang="php"><br />
function doSomething() {<br />
// ...<br />
}<br />
</syntaxhighlight><br />
<br />
Function name must start with a letter (no _ character before function name, unless you declare magic method where double underscore is used).<br />
<br />
Leave single empty line between two function blocks and between function block and code if function is used in non-library file.<br />
<br />
The built-in PHP class <code>[http://php.net/manual/en/reserved.classes.php "stdClass"]</code> should be written with a lowercase s, uppercase C, because that is its actual name. Other capitalizations, such as "StdClass" will not cause an error because invocations of classnames and functions are case-insensitive in PHP. However, it is good style to use the same capitalization as the declaration of the class/function.<br />
<br />
Constructors without arguments should be called with empty parentheses after them.<br />
<br />
Good:<br />
<br />
<syntaxhighlight lang="php"><br />
$a = new stdClass();<br />
$b = new RssBlock();<br />
</syntaxhighlight><br />
<br />
Bad:<br />
<br />
<syntaxhighlight lang="php"><br />
// stdClass written incorrectly<br />
$a = new StdClass();<br />
<br />
// no parentheses after constructor<br />
$b = new RssBlock;<br />
<br />
// lowercase user-created class<br />
$c = new fancyblock();<br />
</syntaxhighlight><br />
<br />
'''Declaration:'''<br />
<syntaxhighlight lang="php"><br />
/**<br />
* PHPDoc comment describing the function<br />
*<br />
* Note how the default value has no spaces<br />
*<br />
* @param $var type What it is for.<br />
* @param $b Class Example var that is of a specific class.<br />
*/<br />
function foo($a, Class $b, $c='') {<br />
// source<br />
return $value;<br />
}<br />
<br />
class FooBar extends Bar {<br />
<br />
/**<br />
* PHPDoc for the field<br />
*<br />
* For this project, do not use doThis.<br />
*/<br />
public function do_this($c, $d) {<br />
// source<br />
}<br />
<br />
}<br />
</syntaxhighlight><br />
<br />
'''Calling:'''<br />
<syntaxhighlight lang="php"><br />
$result = foo($bar, $baz);<br />
$mine = $object->method($a, $b);<br />
</syntaxhighlight><br />
<br />
=Javascript=<br />
All files must adhere to the [[BasicJSFileTemplates]].<br />
Javascript files should roughly follow [http://javascript.crockford.com/code.html Crockford's code conventions].</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Coding_guidelines&diff=12755
Developer Area/Coding guidelines
2022-02-25T01:09:21Z
<p>Gold: /* Binary Operators */ syntax highlight</p>
<hr />
<div>This page documents the coding conventions used by Mahara. Everything that ends up in the git repository (other than third-party code) should follow these standards.<br />
<br />
You can also have a look at the [[Developer_Area/How_to_Review_Code|Reviewer's manual]] to see what reviewers will look at when looking at code submissions.<br />
<br />
Separate pages with more information:<br />
<br />
* [[Developer_Area/Coding_guidelines/PHP_files|PHP Files]]<br />
* [[Developer_Area/Coding_guidelines/JS_files|JavaScript Files (or snippets)]]<br />
* [[Developer_Area/Coding_guidelines/TPL_files|TPL Files (may change in future if move away from smarty, ie to twig)]]<br />
<br />
<br />
=Accessibility=<br />
<br />
Mahara should be accessible to anybody. We are aiming to follow the [https://www.w3.org/TR/WCAG21/ WCAG 2.1] AA principles. There are a [https://blueprints.launchpad.net/mahara/+spec/wcag2.1 areas that we identified that require changes] to achieve that aim. New and changed code should always be written with accessibility principles and guidelines in mind rather than tagged on 'when there is time'. Writing code accessible from the start makes it better code and requires less refactoring later on.<br />
<br />
The style guide, accessible via 'yourmaharadomain/theme/styleguide.php', gives useful basic information for a lot of style elements.<br />
<br />
Since the field of accessibility is changing, certain elements may require updates over time. You can find more information on our [https://wiki.mahara.org/wiki/Accessibility 'Accessibility' page].<br />
<br />
=File Headers=<br />
<br />
All files must adhere to the [[BasicPHPFileTemplates]]. There are slightly different templates depending on whether the script is to be included or whether it is to be directly hit.<br />
<br />
Closing php tags ?> should be omitted.<br />
<br />
=Whitespace=<br />
<br />
'''Required:'''<br />
* Indentation is using four (4) spaces, '''not''' tabs.<br />
* Line endings should be "Unix-style" (\n), not "Windows-style" (\r\n).<br />
* Avoid extra whitespace at the end of modified lines.<br />
* Avoid editing whitespaces unrelated to your specific code change, when submitting a patch. It makes reviewing the patch more difficult and add unnecessary noise to the change history.<br />
<br />
<br />
'''Recommended:'''<br />
* There is no requirement that the scripts are wrapped at 80 columns, however developers are asked to wrap long lines sensibly.<br />
<br />
=Language Constructs=<br />
<br />
<br />
==switch/case statements==<br />
<br />
"case" should use multiline formatting:<br />
<br />
<syntaxhighlight lang="php"><br />
switch ($var) {<br />
case 1:<br />
a = 25;<br />
b = 100;<br />
break;<br />
default:<br />
a = 0;<br />
b = 0;<br />
}<br />
</syntaxhighlight><br />
NOT<br />
<syntaxhighlight lang="php"><br />
case 1: a = 25; b = 100; break;<br />
</syntaxhighlight><br />
<br />
==Variables and Arrays==<br />
<br />
Variables should be named with no underscores, and no capital letters. This policy may become more lenient in future if variable names are discovered that are not easily readable without underscores.<br />
<br />
Do not name variables as negatives where possible - always use positive names and logical inversion (!) where required.<br />
<br />
Hungarian notation is forbidden.<br />
<br />
Aligning = signs for variable assignment is up to the developer, although they should use common sense in such decisions.<br />
<br />
Hardcoded binary data is not allowed for security reasons.<br />
<br />
Hardcoded serialised data is not allowed for security reasons.<br />
<br />
Good:<br />
<syntaxhighlight lang="php"><br />
$found = false;<br />
$ponies = 0;<br />
$servername = $overkill;<br />
<br />
// Only in relation to controlling for/while loops<br />
for ($i = 10; $i > 5; $i--) {<br />
echo $i;<br />
}<br />
<br />
// Aligning = signs<br />
$mine = 0;<br />
$yours = 0;<br />
$theirs = 0;<br />
<br />
// Only if the number of elements to initialise is small.<br />
$array = array(1 => 'hello');<br />
<br />
// If large number of elements to initialise:<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
Bad:<br />
<syntaxhighlight lang="php"><br />
// Negative name<br />
$notfound = true;<br />
// Underscores<br />
$my_variable = '';<br />
// Hungarian<br />
$count_i = 6;<br />
// Uppercase letters<br />
$myFish = $yourFish;<br />
<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
<br />
==Binary Operators==<br />
<br />
Always have a space on each side:<br />
<syntaxhighlight lang="php"><br />
echo 1 + 2;<br />
if (1 == 2)<br />
echo 'hello' . ' world';<br />
</syntaxhighlight><br />
<br />
<syntaxhighlight inline>||</syntaxhighlight> and <syntaxhighlight inline>&&</syntaxhighlight> will always be used for <syntaxhighlight inline>or</syntaxhighlight> and <syntaxhighlight inline>and</syntaxhighlight> respectively. Resolve priority collisions with extra parentheses as required.<br />
<br />
==Classes, Functions and Methods==<br />
<br />
'''Nameing'''<br />
<br />
Classes should start with upper case character, then each word capitalized.<br />
<br />
<source lang="php" container="div"><br />
class ExampleWhizbang {<br />
// ...<br />
}<br />
</source><br />
<br />
Leave double empty line between classes blocks in the code.<br />
<br />
Functions should not use camel case, and instead use underscores as word seperators<br />
<br />
<source lang="php" container="div"><br />
function do_something(){<br />
// ...<br />
}<br />
</source><br />
<br />
NOT<br />
<source lang="php" container="div"><br />
function doSomething() {<br />
// ...<br />
}<br />
</source><br />
<br />
Function name must start with a letter (no _ character before function name, unless you declare magic method where double underscore is used).<br />
<br />
Leave single empty line between two function blocks and between function block and code if function is used in non-library file.<br />
<br />
The built-in PHP class <code>[http://php.net/manual/en/reserved.classes.php "stdClass"]</code> should be written with a lowercase s, uppercase C, because that is its actual name. Other capitalizations, such as "StdClass" will not cause an error because invocations of classnames and functions are case-insensitive in PHP. However, it is good style to use the same capitalization as the declaration of the class/function.<br />
<br />
Constructors without arguments should be called with empty parentheses after them.<br />
<br />
Good:<br />
<br />
<source lang="php" container="div"><br />
$a = new stdClass();<br />
$b = new RssBlock();<br />
</source><br />
<br />
Bad:<br />
<br />
<source lang="php" container="div"><br />
// stdClass written incorrectly<br />
$a = new StdClass();<br />
<br />
// no parentheses after constructor<br />
$b = new RssBlock;<br />
<br />
// lowercase user-created class<br />
$c = new fancyblock();<br />
</source><br />
<br />
'''Declaration:'''<br />
<br />
<div class="plugin tightenable"><code><font color="#000000"> <font color="#ff8000">/**<br /> * PHPDoc comment describing the function<br /> *<br /> * Note how the default value has no spaces<br /> */<br /></font><font color="#007700">function </font><font color="#0000bb">foo</font><font color="#007700">(</font><font color="#0000bb">$a</font><font color="#007700">, Class </font><font color="#0000bb">$b</font><font color="#007700">, </font><font color="#0000bb">$c</font><font color="#007700">=</font><font color="#dd0000"><nowiki>''</nowiki></font><font color="#007700">) {<br /> </font><font color="#ff8000">// source<br /> </font><font color="#007700">return </font><font color="#0000bb">$value</font><font color="#007700">;<br /> }<br /><br /> class </font><font color="#0000bb">FooBar </font><font color="#007700">extends </font><font color="#0000bb">Bar </font><font color="#007700">{<br /><br /> </font><font color="#ff8000">/**<br /> * PHPDoc for the field<br /> *<br /> * For this project, do not use doThis.<br /> */<br /> </font><font color="#0000bb">public </font><font color="#007700">function </font><font color="#0000bb">do_this</font><font color="#007700">(</font><font color="#0000bb">$c</font><font color="#007700">, </font><font color="#0000bb">$d</font><font color="#007700">) {<br /> </font><font color="#ff8000">// source<br /> </font><font color="#007700">}<br /><br /> }<br /></font> </font> </code></div><br />
<br />
'''Calling:'''<br />
<br />
<div class="plugin tightenable"><code><font color="#000000"> <font color="#0000bb">$result </font><font color="#007700">= </font><font color="#0000bb">foo</font><font color="#007700">(</font><font color="#0000bb">$bar</font><font color="#007700">, </font><font color="#0000bb">$baz</font><font color="#007700">);<br /></font><font color="#0000bb">$mine </font><font color="#007700">= </font><font color="#0000bb">$object</font><font color="#007700">-&gt;</font><font color="#0000bb">method</font><font color="#007700">(</font><font color="#0000bb">$a</font><font color="#007700">, </font><font color="#0000bb">$b</font><font color="#007700">);<br /><br /></font></font></code></div></div><br />
<br />
=Javascript=<br />
All files must adhere to the [[BasicJSFileTemplates]].<br />
Javascript files should roughly follow [http://javascript.crockford.com/code.html Crockford's code conventions].</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Coding_guidelines&diff=12753
Developer Area/Coding guidelines
2022-02-25T01:05:44Z
<p>Gold: /* Variables and Arrays */ syntax highlighting</p>
<hr />
<div>This page documents the coding conventions used by Mahara. Everything that ends up in the git repository (other than third-party code) should follow these standards.<br />
<br />
You can also have a look at the [[Developer_Area/How_to_Review_Code|Reviewer's manual]] to see what reviewers will look at when looking at code submissions.<br />
<br />
Separate pages with more information:<br />
<br />
* [[Developer_Area/Coding_guidelines/PHP_files|PHP Files]]<br />
* [[Developer_Area/Coding_guidelines/JS_files|JavaScript Files (or snippets)]]<br />
* [[Developer_Area/Coding_guidelines/TPL_files|TPL Files (may change in future if move away from smarty, ie to twig)]]<br />
<br />
<br />
=Accessibility=<br />
<br />
Mahara should be accessible to anybody. We are aiming to follow the [https://www.w3.org/TR/WCAG21/ WCAG 2.1] AA principles. There are a [https://blueprints.launchpad.net/mahara/+spec/wcag2.1 areas that we identified that require changes] to achieve that aim. New and changed code should always be written with accessibility principles and guidelines in mind rather than tagged on 'when there is time'. Writing code accessible from the start makes it better code and requires less refactoring later on.<br />
<br />
The style guide, accessible via 'yourmaharadomain/theme/styleguide.php', gives useful basic information for a lot of style elements.<br />
<br />
Since the field of accessibility is changing, certain elements may require updates over time. You can find more information on our [https://wiki.mahara.org/wiki/Accessibility 'Accessibility' page].<br />
<br />
=File Headers=<br />
<br />
All files must adhere to the [[BasicPHPFileTemplates]]. There are slightly different templates depending on whether the script is to be included or whether it is to be directly hit.<br />
<br />
Closing php tags ?> should be omitted.<br />
<br />
=Whitespace=<br />
<br />
'''Required:'''<br />
* Indentation is using four (4) spaces, '''not''' tabs.<br />
* Line endings should be "Unix-style" (\n), not "Windows-style" (\r\n).<br />
* Avoid extra whitespace at the end of modified lines.<br />
* Avoid editing whitespaces unrelated to your specific code change, when submitting a patch. It makes reviewing the patch more difficult and add unnecessary noise to the change history.<br />
<br />
<br />
'''Recommended:'''<br />
* There is no requirement that the scripts are wrapped at 80 columns, however developers are asked to wrap long lines sensibly.<br />
<br />
=Language Constructs=<br />
<br />
<br />
==switch/case statements==<br />
<br />
"case" should use multiline formatting:<br />
<br />
<syntaxhighlight lang="php"><br />
switch ($var) {<br />
case 1:<br />
a = 25;<br />
b = 100;<br />
break;<br />
default:<br />
a = 0;<br />
b = 0;<br />
}<br />
</syntaxhighlight><br />
NOT<br />
<syntaxhighlight lang="php"><br />
case 1: a = 25; b = 100; break;<br />
</syntaxhighlight><br />
<br />
==Variables and Arrays==<br />
<br />
Variables should be named with no underscores, and no capital letters. This policy may become more lenient in future if variable names are discovered that are not easily readable without underscores.<br />
<br />
Do not name variables as negatives where possible - always use positive names and logical inversion (!) where required.<br />
<br />
Hungarian notation is forbidden.<br />
<br />
Aligning = signs for variable assignment is up to the developer, although they should use common sense in such decisions.<br />
<br />
Hardcoded binary data is not allowed for security reasons.<br />
<br />
Hardcoded serialised data is not allowed for security reasons.<br />
<br />
Good:<br />
<syntaxhighlight lang="php"><br />
$found = false;<br />
$ponies = 0;<br />
$servername = $overkill;<br />
<br />
// Only in relation to controlling for/while loops<br />
for ($i = 10; $i > 5; $i--) {<br />
echo $i;<br />
}<br />
<br />
// Aligning = signs<br />
$mine = 0;<br />
$yours = 0;<br />
$theirs = 0;<br />
<br />
// Only if the number of elements to initialise is small.<br />
$array = array(1 => 'hello');<br />
<br />
// If large number of elements to initialise:<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
Bad:<br />
<syntaxhighlight lang="php"><br />
// Negative name<br />
$notfound = true;<br />
// Underscores<br />
$my_variable = '';<br />
// Hungarian<br />
$count_i = 6;<br />
// Uppercase letters<br />
$myFish = $yourFish;<br />
<br />
$array = array(<br />
1 => 'hello',<br />
2 => 'goodbye',<br />
10 => 'erm'<br />
);<br />
</syntaxhighlight><br />
<br />
==Binary Operators==<br />
<br />
Always have a space on each side:<br />
<br />
<div class="plugin tightenable"><code><font color="#000000"> <font color="#007700">echo </font><font color="#0000bb">1 </font><font color="#007700">+ </font><font color="#0000bb">2</font><font color="#007700">;<br /> if (</font><font color="#0000bb">1 </font><font color="#007700">== </font><font color="#0000bb">2</font><font color="#007700">)<br /> echo </font><font color="#dd0000">'hello' </font><font color="#007700">. </font><font color="#dd0000">' world'</font><font color="#007700">;<br /></font> </font> </code></div><br />
<br />
<nowiki>|| and &amp;&amp; will always be used for 'or' and 'and' respectively. Resolve priority collisions with extra parentheses as required.</nowiki><br />
<br />
==Classes, Functions and Methods==<br />
<br />
'''Nameing'''<br />
<br />
Classes should start with upper case character, then each word capitalized.<br />
<br />
<source lang="php" container="div"><br />
class ExampleWhizbang {<br />
// ...<br />
}<br />
</source><br />
<br />
Leave double empty line between classes blocks in the code.<br />
<br />
Functions should not use camel case, and instead use underscores as word seperators<br />
<br />
<source lang="php" container="div"><br />
function do_something(){<br />
// ...<br />
}<br />
</source><br />
<br />
NOT<br />
<source lang="php" container="div"><br />
function doSomething() {<br />
// ...<br />
}<br />
</source><br />
<br />
Function name must start with a letter (no _ character before function name, unless you declare magic method where double underscore is used).<br />
<br />
Leave single empty line between two function blocks and between function block and code if function is used in non-library file.<br />
<br />
The built-in PHP class <code>[http://php.net/manual/en/reserved.classes.php "stdClass"]</code> should be written with a lowercase s, uppercase C, because that is its actual name. Other capitalizations, such as "StdClass" will not cause an error because invocations of classnames and functions are case-insensitive in PHP. However, it is good style to use the same capitalization as the declaration of the class/function.<br />
<br />
Constructors without arguments should be called with empty parentheses after them.<br />
<br />
Good:<br />
<br />
<source lang="php" container="div"><br />
$a = new stdClass();<br />
$b = new RssBlock();<br />
</source><br />
<br />
Bad:<br />
<br />
<source lang="php" container="div"><br />
// stdClass written incorrectly<br />
$a = new StdClass();<br />
<br />
// no parentheses after constructor<br />
$b = new RssBlock;<br />
<br />
// lowercase user-created class<br />
$c = new fancyblock();<br />
</source><br />
<br />
'''Declaration:'''<br />
<br />
<div class="plugin tightenable"><code><font color="#000000"> <font color="#ff8000">/**<br /> * PHPDoc comment describing the function<br /> *<br /> * Note how the default value has no spaces<br /> */<br /></font><font color="#007700">function </font><font color="#0000bb">foo</font><font color="#007700">(</font><font color="#0000bb">$a</font><font color="#007700">, Class </font><font color="#0000bb">$b</font><font color="#007700">, </font><font color="#0000bb">$c</font><font color="#007700">=</font><font color="#dd0000"><nowiki>''</nowiki></font><font color="#007700">) {<br /> </font><font color="#ff8000">// source<br /> </font><font color="#007700">return </font><font color="#0000bb">$value</font><font color="#007700">;<br /> }<br /><br /> class </font><font color="#0000bb">FooBar </font><font color="#007700">extends </font><font color="#0000bb">Bar </font><font color="#007700">{<br /><br /> </font><font color="#ff8000">/**<br /> * PHPDoc for the field<br /> *<br /> * For this project, do not use doThis.<br /> */<br /> </font><font color="#0000bb">public </font><font color="#007700">function </font><font color="#0000bb">do_this</font><font color="#007700">(</font><font color="#0000bb">$c</font><font color="#007700">, </font><font color="#0000bb">$d</font><font color="#007700">) {<br /> </font><font color="#ff8000">// source<br /> </font><font color="#007700">}<br /><br /> }<br /></font> </font> </code></div><br />
<br />
'''Calling:'''<br />
<br />
<div class="plugin tightenable"><code><font color="#000000"> <font color="#0000bb">$result </font><font color="#007700">= </font><font color="#0000bb">foo</font><font color="#007700">(</font><font color="#0000bb">$bar</font><font color="#007700">, </font><font color="#0000bb">$baz</font><font color="#007700">);<br /></font><font color="#0000bb">$mine </font><font color="#007700">= </font><font color="#0000bb">$object</font><font color="#007700">-&gt;</font><font color="#0000bb">method</font><font color="#007700">(</font><font color="#0000bb">$a</font><font color="#007700">, </font><font color="#0000bb">$b</font><font color="#007700">);<br /><br /></font></font></code></div></div><br />
<br />
=Javascript=<br />
All files must adhere to the [[BasicJSFileTemplates]].<br />
Javascript files should roughly follow [http://javascript.crockford.com/code.html Crockford's code conventions].</div>
Gold
https://wiki.mahara.org/index.php?title=Developer_Area/Coding_guidelines&diff=12748
Developer Area/Coding guidelines
2022-02-25T01:00:18Z
<p>Gold: /* switch/case statements */ updating syntax tags</p>
<hr />
<div>This page documents the coding conventions used by Mahara. Everything that ends up in the git repository (other than third-party code) should follow these standards.<br />
<br />
You can also have a look at the [[Developer_Area/How_to_Review_Code|Reviewer's manual]] to see what reviewers will look at when looking at code submissions.<br />
<br />
Separate pages with more information:<br />
<br />
* [[Developer_Area/Coding_guidelines/PHP_files|PHP Files]]<br />
* [[Developer_Area/Coding_guidelines/JS_files|JavaScript Files (or snippets)]]<br />
* [[Developer_Area/Coding_guidelines/TPL_files|TPL Files (may change in future if move away from smarty, ie to twig)]]<br />
<br />
<br />
=Accessibility=<br />
<br />
Mahara should be accessible to anybody. We are aiming to follow the [https://www.w3.org/TR/WCAG21/ WCAG 2.1] AA principles. There are a [https://blueprints.launchpad.net/mahara/+spec/wcag2.1 areas that we identified that require changes] to achieve that aim. New and changed code should always be written with accessibility principles and guidelines in mind rather than tagged on 'when there is time'. Writing code accessible from the start makes it better code and requires less refactoring later on.<br />
<br />
The style guide, accessible via 'yourmaharadomain/theme/styleguide.php', gives useful basic information for a lot of style elements.<br />
<br />
Since the field of accessibility is changing, certain elements may require updates over time. You can find more information on our [https://wiki.mahara.org/wiki/Accessibility 'Accessibility' page].<br />
<br />
=File Headers=<br />
<br />
All files must adhere to the [[BasicPHPFileTemplates]]. There are slightly different templates depending on whether the script is to be included or whether it is to be directly hit.<br />
<br />
Closing php tags ?> should be omitted.<br />
<br />
=Whitespace=<br />
<br />
'''Required:'''<br />
* Indentation is using four (4) spaces, '''not''' tabs.<br />
* Line endings should be "Unix-style" (\n), not "Windows-style" (\r\n).<br />
* Avoid extra whitespace at the end of modified lines.<br />
* Avoid editing whitespaces unrelated to your specific code change, when submitting a patch. It makes reviewing the patch more difficult and add unnecessary noise to the change history.<br />
<br />
<br />
'''Recommended:'''<br />
* There is no requirement that the scripts are wrapped at 80 columns, however developers are asked to wrap long lines sensibly.<br />
<br />
=Language Constructs=<br />
<br />
<br />
==switch/case statements==<br />
<br />
"case" should use multiline formatting:<br />
<br />
<syntaxhighlight lang="php"><br />
switch ($var) {<br />
case 1:<br />
a = 25;<br />
b = 100;<br />
break;<br />
default:<br />
a = 0;<br />
b = 0;<br />
}<br />
</syntaxhighlight><br />
NOT<br />
<syntaxhighlight lang="php"><br />
case 1: a = 25; b = 100; break;<br />
</syntaxhighlight><br />
<br />
==Variables and Arrays==<br />
<br />
Variables should be named with no underscores, and no capital letters. This policy may become more lenient in future if variable names are discovered that are not easily readable without underscores.<br />
<br />
Do not name variables as negatives where possible - always use positive names and logical inversion (!) where required.<br />
<br />
Hungarian notation is forbidden.<br />
<br />
Aligning = signs for variable assignment is up to the developer, although they should use common sense in such decisions.<br />
<br />
Hardcoded binary data is not allowed for security reasons.<br />
<br />
Hardcoded serialised data is not allowed for security reasons.<br />
<br />
Good:<br />
<br />
<div class="plugin tightenable"><code><font color="#000000"> <font color="#0000bb">$found </font><font color="#007700">= </font><font color="#0000bb">false</font><font color="#007700">;<br /></font><font color="#0000bb">$ponies </font><font color="#007700">= </font><font color="#0000bb">0</font><font color="#007700">;<br /></font><font color="#0000bb">$servername </font><font color="#007700">= </font><font color="#0000bb">$overkill</font><font color="#007700">;<br /><br /></font><font color="#ff8000">// Only in relation to controlling for/while loops<br /></font><font color="#007700">for (</font><font color="#0000bb">$i </font><font color="#007700">= </font><font color="#0000bb">10</font><font color="#007700">; </font><font color="#0000bb">$i </font><font color="#007700">&gt; </font><font color="#0000bb">5</font><font color="#007700">; </font><font color="#0000bb">$i</font><font color="#007700">--) {<br /> echo </font><font color="#0000bb">$i</font><font color="#007700">;<br /> }<br /><br /></font><font color="#ff8000">// Aligning = signs<br /></font><font color="#0000bb">$mine </font><font color="#007700">= </font><font color="#0000bb">0</font><font color="#007700">;<br /></font><font color="#0000bb">$yours </font><font color="#007700">= </font><font color="#0000bb">0</font><font color="#007700">;<br /></font><font color="#0000bb">$theirs </font><font color="#007700">= </font><font color="#0000bb">0</font><font color="#007700">;<br /><br /></font><font color="#ff8000">// Only if the number of elements to initialise is small.<br /></font><font color="#0000bb">$array </font><font color="#007700">= array(</font><font color="#0000bb">1 </font><font color="#007700">=&gt; </font><font color="#dd0000">'hello'</font><font color="#007700">);<br /><br /></font><font color="#ff8000">// If large number of elements to initialise:<br /></font><font color="#0000bb">$array </font><font color="#007700">= array(<br /> </font><font color="#0000bb">1 </font><font color="#007700">=&gt; </font><font color="#dd0000">'hello'</font><font color="#007700">,<br /> </font><font color="#0000bb">2 </font><font color="#007700">=&gt; </font><font color="#dd0000">'goodbye'</font><font color="#007700">,<br /> </font><font color="#0000bb">10 </font><font color="#007700">=&gt; </font><font color="#dd0000">'erm'<br /></font><font color="#007700">);<br /></font> </font> </code></div><br />
<br />
Bad:<br />
<br />
<div class="plugin tightenable"><code><font color="#000000"> <font color="#ff8000">// Negative name<br /></font><font color="#0000bb">$notfound </font><font color="#007700">= </font><font color="#0000bb">true</font><font color="#007700">;<br /></font><font color="#ff8000">// Underscores<br /></font><font color="#0000bb">$my_variable </font><font color="#007700">= </font><font color="#dd0000"><nowiki>''</nowiki></font><font color="#007700">;<br /></font><font color="#ff8000">// Hungarian<br /></font><font color="#0000bb">$count_i </font><font color="#007700">= </font><font color="#0000bb">6</font><font color="#007700">;<br /></font><font color="#ff8000">// Uppercase letters<br /></font><font color="#0000bb">$myFish </font><font color="#007700">= </font><font color="#0000bb">$yourFish</font><font color="#007700">;<br /><br /></font><font color="#0000bb">$array </font><font color="#007700">= array(<br /> </font><font color="#0000bb">1 </font><font color="#007700">=&gt; </font><font color="#dd0000">'hello'</font><font color="#007700">,<br /> </font><font color="#0000bb">2 </font><font color="#007700">=&gt; </font><font color="#dd0000">'goodbye'</font><font color="#007700">,<br /> </font><font color="#0000bb">10 </font><font color="#007700">=&gt; </font><font color="#dd0000">'erm'<br /> </font><font color="#007700">);<br /></font> </font> </code></div></div><div id="section_8"><br />
<br />
==Binary Operators==<br />
<br />
Always have a space on each side:<br />
<br />
<div class="plugin tightenable"><code><font color="#000000"> <font color="#007700">echo </font><font color="#0000bb">1 </font><font color="#007700">+ </font><font color="#0000bb">2</font><font color="#007700">;<br /> if (</font><font color="#0000bb">1 </font><font color="#007700">== </font><font color="#0000bb">2</font><font color="#007700">)<br /> echo </font><font color="#dd0000">'hello' </font><font color="#007700">. </font><font color="#dd0000">' world'</font><font color="#007700">;<br /></font> </font> </code></div><br />
<br />
<nowiki>|| and &amp;&amp; will always be used for 'or' and 'and' respectively. Resolve priority collisions with extra parentheses as required.</nowiki><br />
<br />
==Classes, Functions and Methods==<br />
<br />
'''Nameing'''<br />
<br />
Classes should start with upper case character, then each word capitalized.<br />
<br />
<source lang="php" container="div"><br />
class ExampleWhizbang {<br />
// ...<br />
}<br />
</source><br />
<br />
Leave double empty line between classes blocks in the code.<br />
<br />
Functions should not use camel case, and instead use underscores as word seperators<br />
<br />
<source lang="php" container="div"><br />
function do_something(){<br />
// ...<br />
}<br />
</source><br />
<br />
NOT<br />
<source lang="php" container="div"><br />
function doSomething() {<br />
// ...<br />
}<br />
</source><br />
<br />
Function name must start with a letter (no _ character before function name, unless you declare magic method where double underscore is used).<br />
<br />
Leave single empty line between two function blocks and between function block and code if function is used in non-library file.<br />
<br />
The built-in PHP class <code>[http://php.net/manual/en/reserved.classes.php "stdClass"]</code> should be written with a lowercase s, uppercase C, because that is its actual name. Other capitalizations, such as "StdClass" will not cause an error because invocations of classnames and functions are case-insensitive in PHP. However, it is good style to use the same capitalization as the declaration of the class/function.<br />
<br />
Constructors without arguments should be called with empty parentheses after them.<br />
<br />
Good:<br />
<br />
<source lang="php" container="div"><br />
$a = new stdClass();<br />
$b = new RssBlock();<br />
</source><br />
<br />
Bad:<br />
<br />
<source lang="php" container="div"><br />
// stdClass written incorrectly<br />
$a = new StdClass();<br />
<br />
// no parentheses after constructor<br />
$b = new RssBlock;<br />
<br />
// lowercase user-created class<br />
$c = new fancyblock();<br />
</source><br />
<br />
'''Declaration:'''<br />
<br />
<div class="plugin tightenable"><code><font color="#000000"> <font color="#ff8000">/**<br /> * PHPDoc comment describing the function<br /> *<br /> * Note how the default value has no spaces<br /> */<br /></font><font color="#007700">function </font><font color="#0000bb">foo</font><font color="#007700">(</font><font color="#0000bb">$a</font><font color="#007700">, Class </font><font color="#0000bb">$b</font><font color="#007700">, </font><font color="#0000bb">$c</font><font color="#007700">=</font><font color="#dd0000"><nowiki>''</nowiki></font><font color="#007700">) {<br /> </font><font color="#ff8000">// source<br /> </font><font color="#007700">return </font><font color="#0000bb">$value</font><font color="#007700">;<br /> }<br /><br /> class </font><font color="#0000bb">FooBar </font><font color="#007700">extends </font><font color="#0000bb">Bar </font><font color="#007700">{<br /><br /> </font><font color="#ff8000">/**<br /> * PHPDoc for the field<br /> *<br /> * For this project, do not use doThis.<br /> */<br /> </font><font color="#0000bb">public </font><font color="#007700">function </font><font color="#0000bb">do_this</font><font color="#007700">(</font><font color="#0000bb">$c</font><font color="#007700">, </font><font color="#0000bb">$d</font><font color="#007700">) {<br /> </font><font color="#ff8000">// source<br /> </font><font color="#007700">}<br /><br /> }<br /></font> </font> </code></div><br />
<br />
'''Calling:'''<br />
<br />
<div class="plugin tightenable"><code><font color="#000000"> <font color="#0000bb">$result </font><font color="#007700">= </font><font color="#0000bb">foo</font><font color="#007700">(</font><font color="#0000bb">$bar</font><font color="#007700">, </font><font color="#0000bb">$baz</font><font color="#007700">);<br /></font><font color="#0000bb">$mine </font><font color="#007700">= </font><font color="#0000bb">$object</font><font color="#007700">-&gt;</font><font color="#0000bb">method</font><font color="#007700">(</font><font color="#0000bb">$a</font><font color="#007700">, </font><font color="#0000bb">$b</font><font color="#007700">);<br /><br /></font></font></code></div></div><br />
<br />
=Javascript=<br />
All files must adhere to the [[BasicJSFileTemplates]].<br />
Javascript files should roughly follow [http://javascript.crockford.com/code.html Crockford's code conventions].</div>
Gold
https://wiki.mahara.org/index.php?title=Category:Pages_using_deprecated_source_tags&diff=12584
Category:Pages using deprecated source tags
2022-02-11T02:45:42Z
<p>Gold: Created page with "."</p>
<hr />
<div>.</div>
Gold