Skip to content

Commit 2b6f5e2

Browse files
authored
Merge pull request #1745 from abantecart/1.4.3
1.4.3
2 parents 10917c9 + 84ecffd commit 2b6f5e2

File tree

7,202 files changed

+243129
-513428
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

7,202 files changed

+243129
-513428
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
apply: always
3+
---
4+
5+
# Language & Tone
6+
- Keep answers concise and practical: show code first, then a short explanation.
7+
8+
# Project Conventions
9+
- Follow PSR-12 coding style (namespaces, braces, imports, indentation).
10+
- Always type-hint parameters, return types, and class properties.
11+
- Use short array syntax `[]`.
12+
- Prefer modern PHP features: null-coalescing, nullsafe operator, constructor property promotion.
13+
- Use single quotes for strings unless interpolation is required.
14+
- Use double quotes for sql-queries.
15+
- Keep controllers skinny; put business logic in models/services.
16+
- Do not echo in controllers; assign data to views and return.
17+
- Save all text's key and value into language "xml" files inside tag <definition><key></key><value></value></definition>. Path of xml file should be the same as controller.
18+
- Do not use inline texts inside "php" and "tpl" files. Use call $this->language->get('language_definition_key','route') instead.
19+
- In case of extension, use the extension's text ID (key) as prefix for all it's language definition keys.
20+
- Route parameter is not necessary when the route of a language file is equal route of controller
21+
- All html-attributes inside tpl files should be wrapped function echo_html2view() or html2view(). For javascript code inside tpl-file use js_echo() function for php-variables.
22+
- do not use Javascript code in the tpl files under storefront directory, except in common/*.tpl. Use common/head.tpl for defining of js variables based on php-variables values and use them inside main.js or common.js files.
23+
24+
25+
26+
# Error Handling & Logging
27+
- Never use `@` to suppress errors.
28+
- Do not use `die/exit/var_dump/print_r` in examples.
29+
- Throw specific exceptions (InvalidArgumentException, RuntimeException, etc.) with clear messages.
30+
31+
# Project Structure (paths are illustrative)
32+
- Storefront controllers: storefront/controller/pages/* or extensions/<ext_key>/storefront/controller/*
33+
- Admin controllers: admin/controller/pages/* or extensions/<ext_key>/admin/controller/*
34+
- Models: */model/*/*.php
35+
- Views/templates: */view/<theme>/template/*/*.tpl
36+
- Language files: */language/<language>/*/*.xml
37+
- Assets: */view/<theme>/css|js|image/* or extension assets folder
38+
39+
# Security
40+
- For hashing passwords, use `passwordHash()`.
41+
- Never invent your own crypto.
42+
43+
# Architecture
44+
- Keep controllers thin. Put business logic into services, persistence in repositories.
45+
- Use DTOs or Value Objects instead of raw arrays in public APIs.
46+
- Favor immutable Value Objects (Email, Money, Uuid).
47+
- Use dependency injection (constructor injection), not service locators.
48+
49+
# Testing
50+
51+
# Documentation
52+
- Add PHPDoc only when it adds value (e.g., generics for collections).
53+
- For utility classes, add a small "Usage" example in comments.
54+
- Add PHPDoc comment before call of method "processTemplate". It must be @see real path which started with public_html
55+
56+
# Performance
57+
- Avoid premature optimization, but do not create obvious N+1 queries.
58+
- Use generators (yield) for large collections when appropriate.
59+
60+
# Prohibited Patterns
61+
- Do not use: `var_dump`, `print_r`, `dd`, `exit`, global singletons, or magic methods `__get/__set` in domain models.
62+
- Do not generate "// TODO: implement". Always provide a minimal working implementation.
63+
64+
# Static Analysis
65+
- Code must be compatible with PHPStan/Psalm (high strictness).
66+
- Support generics in collections via PHPDoc where needed.

.github/workflows/test.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ jobs:
1515
db:
1616
- ver: mysql
1717
release: '8.0'
18-
- ver: mysql
19-
release: latest
18+
# - ver: mysql
19+
# release: latest
2020
- ver: mariadb
2121
release: '10.5.25'
22-
- ver: mariadb
23-
release: latest
22+
# - ver: mariadb
23+
# release: latest
2424
fail-fast: false
2525

2626
steps:

.gitignore

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,25 @@
2121
/public_html/extensions/novator/storefront/view/novator/default_preset_prepared.json
2222
/public_html/storefront/view/default/default_preset_prepared.json
2323
/public_html/system/page_builder/presets/novator/
24+
/public_html/.htaccess
25+
/public_html/extensions/default_croatian/
26+
/public_html/extensions/default_czech/
27+
/public_html/extensions/default_danish/
28+
/public_html/extensions/default_deutsch/
29+
/public_html/extensions/default_finnish/
30+
/public_html/extensions/default_french/
31+
/public_html/extensions/default_greek/
32+
/public_html/extensions/default_hebrew/
33+
/public_html/extensions/default_hindi/
34+
/public_html/extensions/default_hungarian/
35+
/public_html/extensions/default_italian/
36+
/public_html/extensions/default_korean/
37+
/public_html/extensions/default_norwegian/
38+
/public_html/extensions/default_polish/
39+
/public_html/extensions/default_portuguese/
40+
/public_html/extensions/default_russian/
41+
/public_html/extensions/default_simplified_chinese/
42+
/public_html/extensions/default_slovene/
43+
/public_html/extensions/default_spanish/
44+
/public_html/extensions/default_swedish/
45+
/public_html/extensions/default_ukrainian/

README.md

Lines changed: 111 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,141 @@
1+
<p align="center">
2+
<a href="https://www.abantecart.com">
3+
<img src="https://www.abantecart.com/resources/image/18/7c/8.png" alt="AbanteCart Logo" width="300">
4+
</a>
5+
</p>
16

2-
# AbanteCart eCommerce Platform [![Build Status](https://travis-ci.org/abantecart/abantecart-src.svg?branch=master)](https://travis-ci.org/abantecart/abantecart-src)
7+
<p align="center">
8+
<a href="https://github.com/abantecart/abantecart-src/blob/master/LICENSE.txt"><img src="https://img.shields.io/badge/license-OSL%203.0-blue.svg" alt="License"></a>
9+
<a href="https://github.com/abantecart/abantecart-src/releases"><img src="https://img.shields.io/github/v/release/abantecart/abantecart-src" alt="Release Version"></a>
10+
<a href="https://github.com/abantecart/abantecart-src/issues"><img src="https://img.shields.io/github/issues/abantecart/abantecart-src.svg" alt="Issues"></a>
11+
</p>
312

13+
---
414

5-
## Overview
15+
## 🚀 Overview
616

7-
AbanteCart is a free open source ecommerce platform to power online retail. AbanteCart is a ready to run web application as well as reliable foundation to build custom eCommerce solutions.
8-
AbanteCart ecommerce platform is designed to fit a wide variety of online businesses and applications, as well as can be configured or customized to perform very specific business requirements. Chosen by many shop owners launching their business online for the first time, AbanteCart is also picked by developers looking for a user-friendly interface and powerful features set.
17+
**AbanteCart** is a free and open-source eCommerce platform designed to power modern online retail and digital commerce. Whether you're launching your first store or developing a complex eCommerce solution, AbanteCart offers a robust and extensible foundation.
918

10-
## Reporting issues
19+
- 🧩 Modular, extensible architecture
20+
- ⚡ Lightweight, fast, and secure
21+
- 📦 Rich feature set with a user-friendly admin interface
22+
- 🎯 Built for developers and business owners
1123

12-
Read the instructions below before you report an issue or a bug.
24+
👉 Explore the [Live Demo](https://www.abantecart.com/shopping-cart-demo)
25+
👉 Learn more at [abantecart.com](https://www.abantecart.com)
1326

14-
1. Search the [AbanteCart forum](http://forum.abantecart.com), ask the community if they know about the issue or can suggest how to resolve it.
15-
2. Check open and closed issues on the [GitHub bug tracker](https://github.com/abantecart/abantecart-src/issues).
16-
3. READ the [changelog for the master branch](https://github.com/abantecart/abantecart-src/blob/master/release_notes.txt)
17-
4. Try [Google](http://www.google.com) to search for your issue.
18-
5. As many issues occur due to hosting environment related settings and problems, please make sure that your issue is not related only to your hosting set up.
27+
---
1928

20-
If issue you report is not yet reported and related to the AbanteCart core code, please report it on GitHub. Provide as much details as needed and include screenshots.
29+
## 📦 Getting Started
2130

22-
**Important!**
23-
- Issues that are not related to the core code (such as a third party extension or your server configuration) might be closed without explanation. You need to contact extension developer, use the forum or find a third partner to resolve a custom code issue.
24-
- If you need to report a security bug, please PM an AbanteCart moderator/administrator on the forum first. All security reports are taken seriously but you must include detailed steps to reproduce them. Please do not report theoretical security flaws and donot post security flaws in a public location.
31+
### ✅ Requirements
2532

26-
## Making a suggestion
33+
- PHP 8.2.x
34+
- MySQL 8.0+ or MariaDB 10.5+
35+
- Apache or Nginx
36+
- `mod_rewrite` enabled
2737

28-
We like improvements, but improvements are not bugs or issue. Please do not create an issue report if you think something needs improving (such as features or change to code standards etc).
29-
We welcome public suggestions on our [AbanteCart forum](http://forum.abantecart.com).
38+
### 🛠️ Installation
3039

31-
## How to contribute
40+
1. Clone the repository:
41+
```bash
42+
git clone https://github.com/abantecart/abantecart-src.git
43+
```
3244

33-
Fork the repository, edit and submit a pull request to branch that has latest version in development.
45+
2. Web installation
46+
```
47+
Place contents of `/public_html` in your web root directory.
48+
Open your browser and navigate to:
49+
http://localhost/abantecart-src/public_html/
50+
Follow the web installer instructions.
51+
```
52+
3. or CLI installation:
53+
```
54+
cd /path/server/htdocs/
55+
php ./install/cli_install.php install --db_host=127.0.0.1 --db_user=**** --db_password=**** --db_name=**** --db_driver=amysqli --db_prefix=abc_ --admin_path=admin --username=admin --password=admin --email=admin@admin.com --http_server=https://your_domain/ --with-sample-data=abantecart_sample_data.sql
56+
```
3457

35-
Please be very clear on your commit messages and pull request, empty pull request messages are not accepted.
58+
📚 Detailed instructions: [Installation Guide](https://abantecart.atlassian.net/wiki/spaces/AD/pages/4292610/Installation)
3659

37-
Your code standards should match the AbanteCart coding standards.
60+
---
3861

39-
## Versioning
62+
## 🧠 Documentation
4063

41-
The version is broken down into 4 parts e.g 1.2.3.1 (MAJOR.MINOR.BULD.REVISION) to describe the version numbers.
64+
- 📖 [Developer Docs](https://docs.abantecart.com)
65+
- 💡 [Community Forum](https://forum.abantecart.com)
66+
- 🧩 [Extension Marketplace](https://marketplace.abantecart.com)
4267

43-
A MAJOR is very rare, it would only be considered if the source was effectively re-written or a clean break was desired for other reasons. This increment would likely effect and break third party extensions
68+
---
4469

45-
A MINOR is when there are significant changes that affect core structures. This increment would likely effect some third party extensions.
70+
## 🐞 Reporting Issues
4671

47-
A BULD version is when new features are added. Updating a feature version is at a low risk of effecting third party extensions.
72+
Before submitting an issue, please:
4873

49-
A REVISION version is when a fix is added, it should be considered safe to update revision versions e.g 1.2.3.1 to 1.2.3.2
74+
1. Search the [AbanteCart forum](https://forum.abantecart.com)
75+
2. Check [existing GitHub issues](https://github.com/abantecart/abantecart-src/issues)
76+
3. Review the [changelog](https://github.com/abantecart/abantecart-src/blob/master/release_notes.txt)
77+
4. Confirm it’s not an issue with your hosting/server environment
5078

51-
## Releases
79+
> **Security Issues**
80+
> Please do **not** post security issues publicly. Contact a moderator privately via the [AbanteCart site](https://www.abantecart.com/index.php?rt=content/contact).
5281
53-
AbanteCart will announce to developers 1-2 week prior to public release of BULD versions, this is to allow for testing of their own extensions for compatibility. For bigger releases an extended period will be considered following an announced release candidate. Revision versions may have a significantly reduced developer release period.
54-
Prerelease will be also announced on a forum.
82+
---
5583

56-
To receive developer notifications about release information, sign up to the newsletter on the [AbanteCart website](http://www.AbanteCart.com) - located in the footer.
84+
## 💡 Suggest Features
5785

58-
## How to install
86+
Have an idea or enhancement in mind?
87+
Share your suggestions on our [Community Forum](https://forum.abantecart.com/index.php/board,25.0.html).
5988

60-
Please read the installation options and instructions on [AbanteCart website](http://www.abantecart.com/ecommerce-getting-started).
89+
---
6190

62-
## License
91+
## 🤝 Contributing
6392

64-
[Open Software License (OSL 3.0)](https://github.com/abantecart/abantecart-src/blob/master/LICENSE.txt)
93+
We welcome contributions! Follow these steps:
6594

66-
## Links
95+
1. Fork the repo
96+
2. Create a feature branch
97+
3. Submit a pull request to the appropriate development branch
6798

68-
- [AbanteCart homepage](http://www.abantecart.com/)
69-
- [AbanteCart forums](http://forum.abantecart.com/)
70-
- [AbanteCart Marketplace](http://marketplace.abantecart.com/)
71-
- [How to documents](http://docs.abantecart.com/)
99+
📌 Please follow PHP [coding standards](https://www.php-fig.org/psr/psr-12/) and include meaningful commit messages.
100+
101+
---
102+
103+
## 🔢 Versioning
104+
105+
AbanteCart uses **four-part versioning**: `MAJOR.MINOR.BUILD.REVISION`
106+
107+
- `MAJOR` – Breaking changes or complete rewrites
108+
- `MINOR` – Significant changes to core
109+
- `BUILD` – New features (safe upgrade path)
110+
- `REVISION` – Bug fixes (safe for all)
111+
112+
---
113+
114+
## 📢 Releases
115+
116+
- Stay updated by subscribing to our newsletter on [abantecart.com](https://www.abantecart.com) (footer).
117+
118+
---
119+
120+
## 📜 License
121+
122+
Distributed under the [Open Software License (OSL 3.0)](https://opensource.org/licenses/OSL-3.0).
123+
124+
---
125+
126+
## 🔗 Useful Links
127+
128+
- 🌐 [Official Website](https://www.abantecart.com)
129+
- 📘 [Documentation](https://docs.abantecart.com)
130+
- 🧩 [Extension Marketplace](https://marketplace.abantecart.com)
131+
- 🗣️ [Community Forum](https://forum.abantecart.com)
132+
- 🎥 [YouTube Tutorials](https://www.youtube.com/@abantecart/videos)
133+
134+
---
135+
136+
## ❤️ Made With Passion
137+
138+
AbanteCart is maintained by a passionate team of developers and contributors.
139+
Help us build the future of open-source commerce!
140+
141+
---

public_html/.htaccess.txt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,25 @@
1010

1111
# For any support issues please visit: https://forum.abantecart.com
1212

13-
Options +FollowSymlinks
13+
Options +SymLinksIfOwnerMatch
1414

1515
# Prevent Directory listing
1616
Options -Indexes
1717

1818
# Prevent Direct Access to files
19-
<FilesMatch "\.tpl">
20-
Order deny,allow
21-
Deny from all
22-
</FilesMatch>
19+
<IfModule !mod_authz_core.c>
20+
# Apache 2.2
21+
<FilesMatch "\.tpl$">
22+
Order deny,allow
23+
Deny from all
24+
</FilesMatch>
25+
</IfModule>
26+
<IfModule mod_authz_core.c>
27+
# Apache 2.4+
28+
<FilesMatch "\.tpl$">
29+
Require all denied
30+
</FilesMatch>
31+
</IfModule>
2332

2433

2534
RewriteEngine on

public_html/admin/.htaccess

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
<Files *.php>
2-
order allow,deny
3-
deny from all
4-
</Files>
1+
<IfModule !mod_authz_core.c>
2+
# Apache 2.2
3+
<FilesMatch "\.php$">
4+
Order deny,allow
5+
Deny from all
6+
</FilesMatch>
7+
</IfModule>
8+
9+
<IfModule mod_authz_core.c>
10+
# Apache 2.4+
11+
<FilesMatch "\.php$">
12+
Require all denied
13+
</FilesMatch>
14+
</IfModule>

0 commit comments

Comments
 (0)