opensourcepos / opensourcepos

Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework. It uses MySQL as the data back end and has a Bootstrap 3 based user interface.

Home Page:http://www.opensourcepos.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CI3 version and PHP 8+ major issue.

odiea opened this issue · comments

If someone could figure this issue out then CI3 would be compatible with at least PHP 8 with minor changes.
ERROR - 2023-12-29 11:13:34 --> Severity: error --> Exception: Class Attribute already exists and doesn't extend CI_Model C:\wamp64\www\goodmaster\vendor\codeigniter\framework\system\core\Loader.php 353

I see currently we are using 3.1.11 in master, while 3.1.12 claims to have improved PHP8 support. Did you upgrade the composer dependency?

No I did not want to rebuild my branch. It appears that 3.3.9 also has not been updated to 3.1.12

It would be a matter of running a composer install after bumping the minor version in the json file, should not give you too much trouble.

I mean upgrading the dependency itself should be easy. After looking at the changelog there might be other things to look into. The custom SameSite cookie flag might interfere with CSRF functionality that was added in 3.1.12.

If someone could figure this issue out then CI3 would be compatible with at least PHP 8 with minor changes. ERROR - 2023-12-29 11:13:34 --> Severity: error --> Exception: Class Attribute already exists and doesn't extend CI_Model C:\wamp64\www\goodmaster\vendor\codeigniter\framework\system\core\Loader.php 353

I spent a few days testing this a few months ago.

The dirty hack here is to simply duplicate the Attribute model, e.g. Attribute2.php including renaming the class to Attribute2. Then add this "new" module to autoload.php.

Then simply point to this new model instead of the old one, e.g.

//$definition_names = $this->Attribute->get_definitions_by_flags(Attribute::SHOW_IN_ITEMS);
$definition_names = $this->Attribute2->get_definitions_by_flags(Attribute2::SHOW_IN_ITEMS);

Please keep in mind that OSPOS uses numerous very old libraries that can't be used with php8. I'll take you through when you get there.

Kind regards,
Roman

thanks I already did that but changed it to Attribute1. LOL