Code Monkey home page Code Monkey logo

framework's Introduction

Build Status License PHP from Packagist CII Best Practices Download Soosyze CMS

About

Soosyze CMS is a content management system without a database. It's easy to create and manage your website easily with little or no technical knowledge. It is based on an MVC micro-framework in object-oriented PHP and on a noSQL library to ensure its stability and evolution.

To encourage us to continue the development of Soosyze CMS do not hesitate to put a star ⭐ Github. Thank you ❤️

Find us on the networks :

Summary

Screenshots

Screenshot of Soosyze CMS

Installation requirements

Web Server

Web server Soosyze 2.x
Apache HTTP Server 2.2+ ✓ Supported*
Ngnix 1+ ✓ Supported**
IIS ✓ Supported***

PHP version

PHP version Soosyze 2.x
<= 7.1 ✗ Unsupported
7.2 / 7.3 / 7.4 ✓ Supported
8.0 / 8.1 / 8.2 ✓ Supported

Required PHP extensions

  • date for the dates format,
  • fileinfo for file validation,
  • filter to validate your data,
  • gd for image processing,
  • json to save data and configurations,
  • mbstring for your emails,
  • openssl to query resources or flows in HTTPS,
  • session to store your data (server side) from one page to another.

These extensions are usually active by default. But if he missed an error message, he would come to inform you.

Required memory

Soosyze (excluding contributor modules) requires 8MB of memory.

Browsers support

IE / Edge
Edge
Firefox
Firefox
Chrome
Chrome
Safari
Safari
iOS Safari
iOS Safari
Samsung
Samsung
Opera
Opera
Edge last 10 versions last 10 versions last 2 versions last 2 versions last 2 versions last 2 versions

Installation

🚲 Simple download

To install the production version of the Soosyze CMS, download and uncompress the archive of the latest version of the CMS in the directory that will host your site.

🚗 Download via Composer

To install the production version of Soosyze CMS via Composer it is necessary to have:

  • The installer or the binary file Composer,
  • And the php command in your environment variables.

Go to the directory of your server, open a command prompt and run the command: (Remplacer le terme <my-directory> par le répertoire qui hébergera votre site.)

composer create-project soosyze/soosyze <my-directory> --no-dev

CMS installation

Now that the source files are in the right place, open a web browser (Firefox, Chrome, Opera, Safari, Edge ...) and in the address bar, enter the following value :

The next page will come to you. Follow the instructions to install the CMS.

Screenshot of Soosyze CMS installation page

That's it, the CMS is installed.

Configuration

Apache

Soosyze will not function properly if mod_rewriten is not enabled or .htaccess is not allowed. Be sure to check with your hosting provider (or your VPS) that these features are enabled.

Ngnix

If you use Nginx, add the following items to your server's configuration block to ensure the security of CMS Soosyze:

include /path/to/soosyze/.nginx.conf;

IIS

If you use IIS, you must block access to the following directories:

  • app/config,
  • app/data.

License

Soosyze CMS is under MIT license. See the license file for more information.

framework's People

Contributors

noelma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

framework's Issues

Ajout d'un composant de configuration et de ses tests.

La configuration permet de lire et écrire des valeurs dans des fichiers. Ce composant sera ajouté comme service de base au composant d'application. Le chemin de sauvegarde des fichiers de configuration sera en fonction du paramètre 'config' et le nom du paramètre d'environnement.

Nouveau composant Paginator.

Le composant Paginator devra :

  • Enregistrer les données liées à la pagination (limite, offset...).
  • Implémenter le design pattern Fluent.
  • Restituer la pagination au format HTML.

Refonte du composant Config.

L'utilisation de l'interface ArrayAccess permet d'accéder aux configurations de la même façon qu'un tableau.
De plus, il ajoute une couche d'abstraction aux autres éléments utilisant ce composant.

Ajout d'une détection des namespaces par préfixe.

Utilisé à la base par la lib, celle-ci prenait en compte que la racine du namespace enregistré. Les préfixes permettent donc une meilleure performance de détection des namespaces puisqu'il ne boucle pas.

Nouveau composant Translate.

Ce nouveau composant devra :

  • Détecter la langue en fonction de la requête.
  • Pouvoir lire des fichiers contenant des textes de traduction.
  • Retourner une traduction à partir de sa clé.

Refactoring du composant Validator.

Utilisateur de classes abstraites pour scinder les règles et filtres.
Correction de la règle bool, elle devra prendre en compte les valeurs suivantes :
TRUE|FALSE|"true"|"false"|"on"|"off"|"yes"|"no"|"1"|"0"|""|NULL
Ajout des règles :

  • required_with,
  • required_without,
  • date_after_or_equal,
  • date_before_or_equal.

Ajout de messages dynamiques avec la possibilité de les modifier.
Ajout d'une fonction retournant les champs hors ceux mentionnés.
Ajout d'une fonction retournant les champs mentionnés.

Correction des règles de fichier.

Des clés de retours manquent ou sont erronées, provoquant des erreurs de retours.
Une condition de sortie doit être ajoutée si le test de la règle parente a échoué.

Mise à jour du README.

Chaque badge doit être accompagné d'un lien menant l'utilisateur à une ressource pouvant l'aider à mieux appréhender le framework.
Peaufinage de la rubrique des exigences d'installation et d'utilisation du framework.
Ajout de l'implémentation partielle de la PSR-17.

Amélioration de composer.json

  • Suppression des appels psr-4 inutiles
  • Ajout des informations pour le support,
  • Ajout des librairies de développement,
  • Ajout de l'optimisation pour l'autoloader.

Chargement de la liste des hooks à l'ajout d'un service.

La fonction callHook parcoure tous les services à chaque appel multipliant les itérations inutiles.
À présent, les hooks sont chargés en même temps que les modules puis utilisés directement à l'appel d'un ou plusieurs hooks.

Détecter un environnement en fonction de son nom de domaine.

La détection d'un environnement fonctionne uniquement avec le nom d'hôte. La possibilité d'ajouter un nom de domaine pour la détection d'environnement simplifie l'accès au multi-site pour les sous-domaines et pour ceux ne connaissant pas leur nom d'hôte.

Ajout de la fonction strSlug() dans l'objet Util.

Un slug est une chaine de caractère doit contenir que des informations alpha numérique avec des tirets et underscores.
Par exemple dans le cas d'un nom de fichier, ou d'une URL, avoir une chaine propre réduis les erreurs de chargement de ressource.

Refonte du composant Router.

Par défaut le composant Router utilise la clé q (abrégé de query) pour la détection des routes.
Il prend en charge l'écriture courte des routes en se basant sur le chemin de la requête si la configuration le permet.
La détection des paramètres par groupe dans la regex.

Suppression de la limitation des attributs de champs et revue de code.

Quand un champ de formulaire est créé il est limité par une liste statique d'attributs autorisés par le W3C. Cette limitation empêche l'utilisation d'attributs non répertoriés par le W3C (Exemple : les attributs data-*="" utilisés par les tooltips). De plus, la clé 'name' n'est plus utilisé dans la construction des inputs.

Le retour des fonctions récursives ont été revues pour un retour boolean et plus pour un retour d'instance ou null. Gagnant ainsi de l'espace mémoire sur ces traitements.

Revue de code.

  • Pour toutes exceptions levées avec une variable dynamique dans le message, celle-ci doit être accompagnée de la fonction htmlspecialchars englobant la totalité du message.
  • Les exceptions concernant une erreur de paramètre devront être déclaré InvalidArgumentException.
  • Correction de quelques blocs de documentations.
  • Ajout d'espacements et d'alignements.
  • Correction de quelques fautes d'orthographe.

Les modules pourront posséder plusieurs contrôleurs.

Le module manager installe un seul contrôleur par module. Dans le cas d'un module devant manipuler plusieurs objets, il serait plus visible de posséder un contrôleur par CRUD. Exemple : le module menu doit pouvoir manipuler des objets menu et objets liens.

Meilleure détection de la base de l'URL.

La base de l'URL correspond au schéma + l'host + le chemin de l'URI en y soustrayant le nom du script.
Pour connaître la base de l'URL, nous avons besoin d'une information contenue dans l'objet ServerRequest.
Les fonctions getBasePath() dans les objets URI et Router feront directement référence à la nouvelle fonction contenue dans l'objet ServerRequest.

Charger indépendamment les services des hooks.

Les services sont des instances d'objets, les hooks sont des fonctions qui attendent leur exécution.
Les hooks sont actuellement pris en charge par le CID.
Le choix d'utiliser le CID est de pouvoir utiliser les fonctions de service préalablement instancié comme hooks.
Cependant, cette utilisation créée des dépendances, ce qui va à l'encontre du principe des hooks.
Le but étant que les hooks ne proviennent plus de services, mais puissent encore les utiliser.

Implémenter les interfaces HTTP Factories PSR-17 pour le PHP 5.6

Le choix de l'équipe en charge de HTTP Factories PSR-17 c'est arrêté sur la version 7 de PHP, rendant incompatible tous les projets ayant encore un support PHP 5.6.
Cette première implémentation devra implémenter rigoureusement les fonctions utilisées par ces interfaces. Le but étant de prévoir une bascule totale sur PHP 7 dans une prochaine version majeur de Soosyze framework.

Nouveau composant Cache.

Voir laquelle des recommandations PSR permettent de gérer le cache.
La recommandation Simple Cache PSR-16 semble être indiquée pour réaliser un cache suffisant pour les besoins de Soosyze framework. À comparer avec la recommandation Caching Interface PSR-6.

Les méthodes HTTP devront être prises en compte dans le parsage des routes.

La prise en compte des méthodes permettent l'approche RestFull. En plus de rendre un peu plus sécurisé l'application, l'utilisation d'une méthode accélère la recherche du contrôleur à l’exécution du router. En connaissant la méthode de la requête, le router n'a plus besoin de tester toutes les routes.

Ajout d'un fichier gitattributes.

Ce fichier doit permettre d'exclure les fichiers et répertoires non nécessaires au fonctionnement du framework en environnement de production.

Changement des tests et appels phpUnit

  • Utilisation des classes PHPUnitFrameworkTestCase pour mes nouvelles versions de phpUnit,
  • Suppression de paramètre logIncompleteSkipped,
  • Changement du chemin de la génération du cover.xml pour Covervalls.

Correction des règles de date.

Les conditions des règles : date_after, date_after_or_equal, date_before et date_before_or_equal doivent être corrigées.
De plus, les clés de retours doivent être différentes de celles de leurs parents.
Les tests unitaires doivent être corrigés en conséquences.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.