Buy Now
Sign in

Chronoforms with PHP8 and Joomla 4

E
Elitakey 388
October 09 2021, 05:35 #397215
 1
hello to ALL Chronoforms community!

It seems that Max, as far as I know - the only developer of Chronoforms has dissapeared for almost 5 months now... Last time I heard from him was May.
So far for that there is Joomla4 and PHP8 already introduced;
I would like to suggest all the community to join hands and help Chronoforms to live further till Max will be able to take over.

Many of Chronoengine.com members have huge (including me) projects realized with Chronoforms that is still the most poverful, user - friendly tool. I must admit that last couple of months I have been searching for similar tool - and did not find any - there is not such tool available!!!
So - my suggestion is - lets everybody make an effort to give Chronoforms to live further.

Here are my findings so far:

1. There are some minor changes (code hacks) needed (at least I found so far; still testing) to switch to PHP 8; that I will describe later;
2. Joomla 3.10.x versions are transitions from Joomla 3 to Joomla 4 - that means that it contains BOTH new and depreciated code AND will be supported for 2 more years (August 17, 2023). Til then, hope, Max will be back.
3. Joomla 4 have many major changes and needs further investigation of CF code to make it work; still hope that Max will soon take over; till then any knowledge of the CF community would be appreciated; We can post here or make another post to share our findings.

About the hacks to continue CF working on PHP8:


1. the error "Call to undefined function get_magic_quotes_gpc() "

locate folder /libraries/cegcore2

open gcloader.php

comment block (line 63-71):

if(get_magic_quotes_gpc()){
function stripslashes_gpc(&$value){
$value = stripslashes($value);
}
array_walk_recursive($_GET, 'stripslashes_gpc');
array_walk_recursive($_POST, 'stripslashes_gpc');
array_walk_recursive($_COOKIE, 'stripslashes_gpc');
array_walk_recursive($_REQUEST, 'stripslashes_gpc');
}

2. then you'll get the error "Attempt to modify property "_vars" on null"

open /libraries/cegcore2/libs/helper.php

find and comment two lines:


$this->_vars = &$view->_vars;
$this->data = &$view->data;

replace with:

$this->_vars = "";
if(isset($view->_vars ) && $view->_vars != ""){
$this->_vars = &$view->_vars;
}
$this->data = "";
if(isset($view->data ) && $view->data != ""){
$this->data = &$view->data;
}


Unfortunately after installing Connectivity you will have to perform same actions again;


3. to minimize error on view form "Attempt to modify property "_vars" on null"

open /libraries/cegcore2/libs/composer.php

find and comment line
$this->_vars = &$app->_vars;

replace with:


$this->_vars = "";
if(isset($app->_vars ) && $app->_vars != ""){
$this->_vars = &$app->_vars;

That is all i found by now.

Let you know if there is something else.

NB! this is for CF6 and CCv6 only; however I do believe this will work for Cf7 too.
The only difference is that cegcore2 there is called chronog3 and is located in /plugins/system/chronog3_plg/chronog3/libs

Please, correct me and add your findings.
Still hope Max will join us soon!!!


Elita
C
Colnem 443
October 10 2021, 08:36 #397216
Thanks Elita
I search on my side.
I've just found the first fix ("cegcore2\gxcloader") to log as admin: replacing "get_magic_quotes_gpc() " by "PHP_VERSION_ID < 50400 && get_magic_quotes_gpc()"
I can't try all your job because I've another plugin with bugs under PHP8...
E
Elitakey 388
October 14 2021, 08:48 #397244
with PHP8
Error that occurs with backup download (both CF6 and CCv6):
preg_replace() expects at least 3 arguments, 2 given
found that arguments should be - preg_replace($patterns, $replacements, $string)
Maxe's code:
administrator/components/com_chronoforms6/chronoforms/controllers/connections.php
starting at line 371
and
administrator/components/com_chronoconnectivity6/chronoconnectivity/controllers/connections.php
starting at line 188
 if(preg_replace('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'])){
$UserBrowser = 'Opera';
}elseif(preg_replace('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'])){
$UserBrowser = 'IE';
}else{
$UserBrowser = '';
}
should contain argument $replacements
I simply added argument ' ' - seems to be working;
not quite sure why Max put this all code on a first place - why check for Opera and IE for file download?
Perhaps this code could be minimized?
the working code is as follows:
 if(preg_replace('Opera(/| )([0-9].[0-9]{1,2})',' ', $_SERVER['HTTP_USER_AGENT'])){
$UserBrowser = 'Opera';
}elseif(preg_replace('MSIE ([0-9].[0-9]{1,2})',' ', $_SERVER['HTTP_USER_AGENT'])){
$UserBrowser = 'IE';
}else{
$UserBrowser = '';
}
E
Elitakey 388
October 15 2021, 09:04 #397251
Hi, thanks for the input. My opinion ist that there is no need to care about the depreciated php versions, so my suggestion is to delete or comment all the code that refers to get_magic_quotes. do you think we should?
C
Colnem 443
October 18 2021, 14:49 #397257
Hi
Thanks
I presume we have to replace "preg_replace" by "preg_match"...
I'll try later...
Bye
admin 33
December 03 2021, 19:34 #397508
v7 should be now J4 and PHP8 ready!
C
Colnem 443
December 04 2021, 07:17 #397509
HI
Thanks, Max, for this job.
Two questions:
1 - Are CF6 and CV6 ready for PHP8?
2 - In CF7 (ready for J4), is the SSQL "NOT IN" bug fixed?
Thanks
C
Colnem 443
December 04 2021, 13:29 #397510
Beware, guys!
The bug with SQL 'NOT IN' condition is not fixed in PHP8/Joomla4 version.
Look at this topic:
C
Colnem 443
December 05 2021, 13:37 #397513
VERY VERY IMPORTANT: DON'T INSTALL THE NEW VERSION PHP8/JOOMLA 4 under PHP7.3 and Joomla 3.x !!!
There is a big bug with SQL WHERE CONDITION:
If you modify one condition, all yours conditions disappear when closing and opening the form!
I've tried, under PHP7.3 and Joomla 3.X, with the Demo form Basic Article List and I confirm this bug.
Colnem
Edit 2021-12-18: same bug with Joomla 4.05 (empty new site), PHP 7.4, Chronoforms7 V.08.
T
typomaniac 44
December 06 2021, 15:29 #397521
Hi Max
does this mean that the download section now delivers the J4-ready version? I'm a bit confused, as in the dropdown, there still are just the options J3 and WP.
Could you somehow open a new forum category about the ongoing J4 project? Would be great. It's a bit difficult to find news about this.
Thanks so much
Martin
b.t.w. So great to have you back!!!!
S
spytech 69
December 11 2021, 12:45 #397573
I think it would be good to fix version 6 as we have loads of very complex forms in version 6 that we do not have time to re-do in version 7. Do we know if there is a plan to fix this issue for PHP 8?
teldrive 654
December 12 2021, 20:09 #397582
Me too, will be very much apreciated an update CF6 and CC6 for Joomla 4
Teldrive
C
Colnem 443
December 13 2021, 07:20 #397584
Me too Me too!!!
We have to do a petition!
Colnem
C
Colnem 443
December 31 2021, 09:06 #397689
Hi Guys
Another fix bug
With PHP8, CF7, Backup doesn't work.
preg_replace() expects at least 3 arguments, 2 given
JROOT\administrator\components\com_chronoforms7\chronoforms\controllers\connections.php:628
Soluce:
Replace lines 628/629 by:
if(preg_match('/Opera(\/| )([0-9].[0-9]{1,2})/', $_SERVER['HTTP_USER_AGENT'])){
$UserBrowser = 'Opera';
Replace lines 630/631 by:
}elseif(preg_match('/MSIE ([0-9].[0-9]{1,2})/', $_SERVER['HTTP_USER_AGENT'])){
$UserBrowser = 'IE';
Happy Good Year
G
gmarra7 88
January 18 2022, 08:59 #397783
Good morning after following what is suggested in this post which other changes have been added for errors of the type related to chronoengine_gcore2 plugin:
- Call to Undefined method Joomla \ CMS \ Application \ AdministratorApplication :: isAdmin ()
- Factory :: getUri

Now I find myself with this error for which I believe it is not possible to recall neither the css nor the js files (error 403) for Chronoforms:

Refused to apply style from '<URL>' because its MIME type ('text / html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

Thanks to all those who want to help me
C
Colnem 443
January 18 2022, 14:51 #397790
Hi
- Call to Undefined method Joomla \ CMS \ Application \ AdministratorApplication :: isAdmin ()
You have to replace all occurence of "::isAdmin" by "::isClient('administrator')" in this files:
1) librairies\cegcore2\admin\extensions\chronofc\conditions\site\site_process.php (1 occurence)
2) plugins\system\chronoengine_gcore2\chronoengine_gcore2.php (3 occurences)
- Factory :: getUri
Idon't know at this time
Salute from France
G
gmarra7 88
January 18 2022, 15:01 #397791
Hi Colnem, thank you for your reply.
I had already solved these errors.

What I can't solve is the following: The resource from "https://nomedominio.it/libraries/cegcore2/assets/js/g2.js" has been blocked due to mismatch ("text / html" ) of the MIME type (X-Content-Type-Options: nosniff).

I await an answer thanks
C
Colnem 443
January 18 2022, 16:06 #397792
To morrow I'll search about this...
Curious "text / html"... Why not "text/html" ?
C
Colnem 443
January 19 2022, 04:15 #397798
Hi
- Factory :: getUri
For this bug, I've replaced \JFactory::getURI by \JURI::getInstance() in libraries\cegcore2\libs\joomla\boot.php and libraries\cegcore2\libs\joomla\extension.php
The same for you?
Thanks
Edit:
After fixing some bugs, I can install CF6 and CV6 with J4+PHP8.
I can restore a backup. But I can't create a new Form.
I think there are many method deprecated...
G
gmarra7 88
January 19 2022, 09:04 #397800
Hi I confirm the fixes that are starting to get too many and time is a scarce resource. The developer "latita" and we do not know if the V6 will be made compatible with JOOMLA4 + PHP8. All this added to the lack of possibility to migrate form from v6 to v7 leads me to change extension.

At the moment, after many interventions, the situation is this:
- I can't create forms
- The component both in front and in admin no longer calls neither CSS nor JS.