bugfishCMS Documentations

This is the Documentation for "Bugfish bugfishCMS"

Download Github


The "bugfishCMS" Project

Welcome to the bugfish-cms Project, a pioneering web development solution designed to streamline your web development endeavors. This dynamic platform offers a rich set of features, including native support for dynamic CSS, JavaScript, and Cronjobs. It equips you with the essential tools to effortlessly create and maintain web applications. Whether you seek diverse design styles or the convenience of pre-installed, fully functional libraries from the "Bugfish Framework," our project caters to all your web development requirements.

This repository hosts a framework is a complete out-of-the-box CMS (Content Management System) that can be easily set up in the frontend. It is mainly designed for individuals with coding expertise who wish to develop their own modules. While there are built-in functionalities available in the administrator interface for various purposes, the primary emphasis of this system lies in its extensibility. Users are encouraged to create and integrate site modules to tailor the framework to their specific requirements, making it a flexible and adaptable solution for those who have the technical skills to harness its potential.

Powerful Administrator Module!

The administrator module bundled with "bugfishCMS" CMS is a robust toolkit designed to empower users with efficient management capabilities. Packed with essential features, it facilitates seamless administration of your website or application.

With user management functionalities, you can effortlessly control access and permissions, ensuring secure interactions within your platform. The API token management system enhances integration possibilities, enabling smooth communication with external services and applications.

Harness the power of constants for settings management, simplifying configuration processes and ensuring consistency throughout your project. Multi-site management capabilities allow you to efficiently oversee multiple sites from a single interface, streamlining your workflow.

The module also includes a comprehensive module and extension store, providing developers with a rich ecosystem of tools to extend functionality and enhance user experience. Bookmark management and file sharing features further enhance productivity, allowing users to organize and share important resources effortlessly.

Showcase article and task management functionalities empower content creators to curate and manage content effectively. Calendar functionalities facilitate efficient scheduling and planning, while the integrated multi-site functioning wiki, forum, and logging and debugging functionalities offer deep insights and collaboration opportunities.

Developers and users alike will appreciate the robust documentation provided, ensuring ease of use and seamless integration with existing workflows. Whether you're a developer seeking powerful tools or a user in need of efficient management capabilities, the administrator module of "bugfishCMS" CMS delivers exceptional functionality and versatility.

Screenshots

Here you can find some screenshots about this project!

Collaboration & Support

Your feedback and contributions are incredibly valuable to us as we continuously aim to refine our documentation and improve accessibility to our project for all users. Your support and understanding play a pivotal role in our journey towards enhancement. Collaboration lies at the heart of our efforts, and we welcome your active participation in shaping the project's evolution.

To facilitate seamless collaboration and support, we've established a dedicated forum at www.bugfish.eu. This platform serves as a hub where users can raise issues, share insights, and engage in discussions, enabling us to promptly address queries and provide comprehensive support. Your presence on the forum enriches our community and strengthens our collective pursuit of delivering an exceptional user experience. We encourage you to join us on the forum, contributing your thoughts and experiences to foster a thriving environment of collaboration and assistance.

Add this image to your project created with this CMS to support us!

Powered by Bugfish-Framework

This software is powered by the bugfish-framework software! You can find the dedicated php/js/css bugfish framwork on github.

bugfishCMS Logo

Below you can see the current Logo of this bugfish-cms System!




Project Goal

Our primary goal with this project is to expedite and enhance multi-site deployment. Recognizing the paramount importance of swiftly launching web projects, we are committed to delivering a cutting-edge web hosting solution. We are in the process of implementing these advanced technologies into a new hosting panel, poised to redefine the web hosting landscape. Join us on this thrilling journey as we work towards reshaping web hosting as we know it.


Installation

Here you can find some information about the installation process!

Requirements

  • Apache2 Webserver Recommended
  • Apache2 Modules: Rewrite, Header
  • PHP 8 Recommended
  • Website will ask for missing PHP Modules
  • MariaDB Database Connection

Method 1: Manual Installation

Here you can see a list of steps on how to install the cms manually. This method is recommended!
  1. Upload all files out of this repositories _source directory to your webspace public-html folder!
  2. Visit your URL in a Webbrowser, which points to the folder you just uploaded the files to.
  3. Go to ./installer.php and Install the CMS by providing required data.
  4. After the Installation you will be redirected to the CMS Login Page
  5. Login with data provided below in "Initial Login"
  6. You can now use the CMS and install new modules or extensions out of our official store! You can deploy your own modules to the _site folder, or use the installation manager at the administrator interface! You can develop own modules and remove the optional administrator module. You can even use standalone modules for single site instances. This CMS will be the only thing you need to accomplish every possible PHP Website goal!

Method 2: Docker Installation

Here you can find some steps to install the CMS with docker. You will find related files in the repositorie. Check the composer file for required changes and deploy the docker container by running the bat file on windows or the sh file on linux!
  1. Docker Files are included to install this software with a docker container.
  2. Check docker-compose.yml
  3. Check .env for internal container mysql password (needed for cms installation)
  4. Windows: Execute the .bat file in the repositories Root Folder.
  5. Linux: Execute the .sh file in the repositories Root Folder
  6. The Docker container should now start to initialize
  7. If the docker container have been initialized go to your domain:658 (port 658) and you can see the deployed docker image featuring the bugfishcms. You can change the exposed port in the docker-compose.yml
  8. Go to ./installer.php and Install the CMS by providing required data.
  9. After the Installation you will be redirected to the CMS Login Page
  10. Login with data provided below in "Initial Login"
  11. You can now use the CMS and install new modules or extensions out of our official store! You can deploy your own modules to the _site folder, or use the installation manager at the administrator interface! You can develop own modules and remove the optional administrator module. You can even use standalone modules for single site instances. This CMS will be the only thing you need to accomplish every possible PHP Website goal!

Initial Login

Initial Login Data

The initial Login data if you are using the _administrator site module or loging functionality by core is as follow:
Username: admin@admin.local
Password: changeme

If upper steps for initial login are not working try admin/changeme. It depends on various site module configurations and in standalone mode default initial login can be setup in the site modules config files.

How to install Modules?

Here a quick overview on how to install modules!

Method 1: Install by Moving Module Folder to _site

  1. Download the Modules zip achieve you need to install.
  2. Module Zip Archives are usually named like: modulename-1.0.100
  3. Unzip the Site Modules Zip File Manually
  4. You should now have the site modules folder containing files like "version.php" and more.
  5. Move that folder to the websites CMS _site folder.
  6. You can deploy site modules multiple times, the folder name of a site module represents its _HIVE_MODE_ internal site module name.

Method 2: Installation with Admin Interface + File

  1. Download the Modules zip achieve you need to install.
  2. Module Zip Archives are usually named like: modulename-1.0.100
  3. Login to the CMS _administrator Website Module
  4. Go the System/Module section and choose "Upload"
  5. Upload the site Modules zip file to the section for manually uploaded site modules and extensions.
  6. Active / deploy the Installed Module in the Administrator Interface.

Method 3: Installation with Admin Interface + Store

You can also download modules manually at our store at https://store.bugfish.eu.

  1. Login to the CMS _administrator Website Module
  2. Go the System/Module/Store section and choose a module/extension you want to download
  3. Active / deploy the Downloaded Module in the Administrator Interface.

Integrated Modules

Following modules may be interesting for developers to enhance theire knowledge about bugfish-cms Functionalities! You can find these modules in the repositories _module folder and deploy them by copying them into the websites _site folder! You should never manually rename a deployed site module, as this will result in data loss and missing links. Use our administration or another administration interface module to deploy and manage modules! For developres use cfg_ruleset_sample.php to achieve your needs!


Name Description
_documentation-adminbsb Documentation for integrated AdminBSB Template
_documentation-framework Documentation for integrated Bugfish Framework
_documentation-volt Documentation for integrated Volt Administrator Theme
_example-minimal Minimal Site Module Solution for Developers to use as a Template
_example-windmill Windmill Dashboard Site Module example with some more advanced functionalities
_example-volt Volt Dashboard Site Module example with some more advanced functionalities
_documentation Documentation for this CMS integrated as a Site Module
_windmill-backend Backend to be copied or used side-by-side with your BugfishCMS-Page, based on Windmill Dashboard
_skeleton Skeleton of site modules for developers to look into to understand folder functionalities and more!
_administrator Default advanced Administrator Interface module to be used/reused/copied and more!
_storepage Out official Store Module to show our store page at store.bugfish.eu!

Features

Our web project offers a wide range of powerful features that are designed to simplify your web development journey. These key functionalities provide you with the tools and capabilities you need to create, manage, and customize websites effectively.


Full integrated enhanced Administration Panel

This CMS comes with a fully functioning responsive administration backend, for you to be used in development of site modules or just to enjoy the many functions of it! Included is file management, user management, debugging insights of all available CMS Debugging areas. The _administrator Module Grants you access to our store, or helps you setting up your own store instance of you need one! Functions are included to easily use all advanced theme functionalities of the AdminBSB Material Design! The _administrator module is delivered with the bugfish-cms cms by default. You can choose if you want to delete this admin module and built your own standalone website, or if you want to copy if for your own project! You can even use our administrator module site by site with your pages, or you can set up own site by site procedures following our guidelines! Have fun coding!

Full features Administration Interface

Full featured Administration Module (undeleteable, but you can delete it if you want to use this framework for a standalone module development or for your purposes). This administrator Module lets you control most functionalities of the framework and CMS and you can easily set up additional pages and themes out of the store.

Copyable Site by Site Backend Lite Modules

CMS _windmill-backend Site Module offers a way to navigating the platform, emphasizing a fully copyable and usable admin interface. This feature facilitates efficient content management, user administration, and streamlined control over various system functionalities.

Store System and Site Module Downloads

Included within the CMS is a complete working store system. Users can either utilize this system independently or integrate it with the official store to access and download diverse site modules, enhancing their websites with customizable features.

Site Module Updating Functionalities

This CMS got single Site Module Updating Functionalities, providing users with clear instructions on how to update and maintain site modules. This functionality ensures that websites remain current with the latest features, improvements, and security updates.

User Interface Tailored for Developers

Tailored specifically for developers, the CMS gives a comprehensive user interface. This section focuses on enabling developers to access and manipulate the system through coding, allowing for extensive customization and advanced functionality implementation to meet diverse project requirements.

Multi-Site Management

Effortlessly oversee and manage multiple websites within a unified framework, enhancing your web project management capabilities. With our intuitive interface, you can keep all your web properties organized and easily switch between them.

Build Pages with Templates

Our system includes a feature that allows you to design your own web pages with the assistance of pre-designed and extendable widgets. This empowers you to create visually stunning and user-friendly pages.

Build Procedures with Included Functions

Create complex workflows and procedures for various tasks or operations using our included and extendable widgets. These procedures provide a structured approach to managing tasks, making it easier to collaborate and optimize your workflow.

Rights and User Management

Streamline permissions and user role management with our user-friendly tools. This functionality enables you to control access and bolster security, ensuring that the right people have the right level of access to your websites.

Example Site Modules

The "Example Site Modules" feature within the CMS offers a diverse range of pre-built website modules packaged within distinct folders. These modules encompass various functionalities and design elements, providing users with a rich library of ready-to-use components. What sets this feature apart is its integrated full working admin interface, empowering users to seamlessly navigate, customize, and manage these modules effortlessly. Whether users opt to employ these modules site-by-site or utilize them by copying and pasting directly into the designated /_site directory, the feature ensures a streamlined and flexible approach to enhance website development, enabling users to craft dynamic and efficient websites with ease.

"Bugfish Framework" Integration

Integrate seamlessly with the Bugfish Framework, a robust web development toolkit. For a comprehensive understanding and access to resources, please refer to our Bugfish-GitHub. This integration expands your capabilities and allows you to leverage the power of an established web development ecosystem. - you can find interesting informations to develope with "Bugfish-Framework" here: Click here to go to Bugfish-Framework's Documentation!

Dynamic Themes and Theme Colors

Customize themes and theme colors with ease to tailor your project's aesthetics. Enhance the visual appeal of your websites and create a unique online presence that reflects your brand identity.

Complex Site Building

Simplify the development of intricate websites with our user-friendly tools. Reduce development time and complexity, enabling you to focus on the creative aspects of your projects while we handle the technical intricacies.

Functions and Templates

Access an extensive range of functions and templates for rapid website deployment. Our toolkit offers a wide array of tools to enhance your web projects, making it easy to add advanced features and functionality to your websites.

Multi-Language Support

Expand your reach and reach a global audience by providing support for multiple languages. Make your websites accessible to diverse audiences, and ensure that language barriers do not hinder your online presence.

Database Change Updater

Dynamically update your database to align with the current build version. This ensures smooth transitions and robust database management, helping you maintain data integrity and system stability.

Installer Script

Simplify the initial setup of your web projects with our installer script. This hassle-free installation process ensures that you can get your websites up and running quickly, reducing the time and effort required for the initial setup.

Store and Core Updater

The software boasts two integral functionalities: a Core Updater service and Store functionality. Although the Store might currently display no projects, this is because no projects have been released by authors yet; however, this is anticipated to change in the future. Users have the convenience of easily altering both Store URLs and Core Updater URLs to suit their preferences, enabling them to manage their own core updates and customize their store operations as needed.


Libraries

This project relies on third-party libraries stored in the '/_core/_vendor' folder. For more information about these libraries, their respective licenses, and to access their source code, please refer to our GitHub repository, where you can find detailed information and links to each library.


Folder Name License Github Link
alpine MIT Link
boxicons MIT Link
sortablejs MIT Link
choices.js MIT Link
multi.js MIT Link
select2 MIT Link
tinymce MIT Link
sweetalert2 MIT Link
space_invader MIT Link
resumable MIT Link
modelviewer Apache Link
leafletjs BSD2 Link
jquery MIT Link
bugfish-jquery-sortselect GPLv3 Link
datatables MIT Link
magicsuggest MIT Link
free-file-icons MIT Link
focustrap MIT Link
chartjs MIT Link
boxicons (Image List) MIT Link
bugfish-dashboard GPLv3 None
country-flags-icons MIT Link
animate-css HYP None
autosize MIT None
animate MIT None
bootstrap MIT None
bootstrap-colorpicker MIT None
bootstrap-material-datetimepicker MIT None
bootstrap-notify MIT None
bootstrap-select MIT None
bootstrap-tagsinput MIT None
chosen MIT None
dropzone MIT None
editable-table MIT None
flot-charts MIT None
gmaps MIT None
ion-rangeslider MIT None
jquery-cookie MIT None
jquery-countto MIT None
jquery-inputmask MIT None
jquery-knob MIT None
jquery-slimscroll MIT None
jquery-sparkline MIT None
jquery-spinner MIT None
jquery-steps MIT None
jquery-validation MIT None
jvectormap AGPL None
light-gallery GPLv3 None
material-design-iconic-font Apache None
materialize-css MIT None
momentjs MIT None
morrisjs MIT None
multi-select MIT None
nestable MIT None
node-waves MIT None
nouislider MIT None
raphael MIT None
waitme MIT None
Windmill Theme MIT None
Responsive Mail Template MIT None
Responsive Error Page MIT None
You-Login Resposive Template MIT None
Volt Administrator Dashboard Lite MIT None
Notyf MIT None
Smooth-Scroll MIT None
onscreen MIT None
waypoints MIT None
sass MIT None
chatist MIT None
githubbuttons BSD None
animated-calender BSD None
login-template BSD None


Development

Below you can find informations how to develop Modules. Besides that you can see a list of available site constants and informations about the $object array variable, which contains a lot of classes and values you can easily work with.




Object Array

Here you can find a list of items, the $object variable does contain. This variable is accessible from most code areas and one of the main pilars, if you plan to use this Framework/CMS in Development! This array if mostly initialized in _core/_misc/init.php.


Variable Description
Configuration (settings.php)
$object["prefix"] Hive Database Prefix - DO USE _HIVE_SITE_PREFIX_ for your Site!
$object["hive_mode"] Hive Mod informations out of the current Site Modules version.php!
$object["core_mode"] Hive Mod informations out of the current Core version.php!
$object["cookie"] Hive Cookie Prefix - DO USE _HIVE_SITE_COOKIE_ for your Site!
Framework Classes
$object["mysql"] x_class_mysql
$object["debug"] x_class_debug
$object["eventbox"] x_class_eventbox
$object["curl"] x_class_curl
$object["crypt"] x_class_crypt
$object["zip"] x_class_zip
$object["var"] x_class_var
$object["log"] x_class_log
$object["api"] x_class_api
$object["hitcounter"] x_class_hitcounter
$object["ipbl"] x_class_ipbl
$object["referer"] x_class_referer
$object["benchmark"] x_class_benchmark
$object["redis"] x_class_redis
$object["comment"] x_class_comment (Only reserved, not initialized on startup.)
Mail Related
$object["mail_template"] x_class_mail_template
$object["mail"] x_class_mail
Users and Permission Related
$object["user"] x_class_user
$object["perm_user"] x_class_perm - with users permissions
$object["perm_group"] x_class_perm - with group permissions
$object["perm_user_glob"] x_class_perm - with users permissions globally (site mode section "" in database)
$object["perm_group_glob"] x_class_perm - with group permissions (site mode section "" in database)
$object["user_perm"] x_class_perm_item for current user
$object["user_perm_glob"] x_class_perm_item for current user (site mode section "" in database)
$object["user_groups"][X] Group Data out of Users Group Database for Every Group Current Logged In User is Part Of, contains array items with values from group database. Not sorted in a specific order, needs to be looped through and checked for [id] if you want to check single IDs. X is just the array Item key which is non-related to anything of the group itself (it only holds it)
$object["user_groups"][X]["perm_obj"] x_class_perm_item for specific group
$object["user_groups"][X]["perm_obj_glob"] x_class_perm_item for specific group


Constants

Below a list of site-wide available Constants you can use in your code to obtain different values. In the section "Site Modules" you can see variables more important for Site Module Development!


Table Definitions

Table Definitions for this CMS are declared as constants starting with _TABLE_


Constant Name Description
Logging Functionality Tables
_TABLE_LOG_ Table Name for Hive-Logging (Multi Site Compatible)
_TABLE_LOG_IP_ Table Name for IP Blacklisting (Multi Site Compatible)
_TABLE_LOG_BENCHMARK_ Table for Benchmarking Logging (Multi Site Compatible)
_TABLE_LOG_CURL_ Table to log Curl Requests (Multi Site Compatible)
_TABLE_LOG_MAIL_ Table to Log Error sending Mails (Multi Site Compatible)
_TABLE_LOG_MYSQL_ Table log MySQL Errors (Multi Site Compatible)
_TABLE_LOG_REFERER_ Table to log Referers (Multi Site Compatible)
_TABLE_LOG_CRON_ Log Table for Cronjobs
_TABLE_LOG_JS_ Log Table for JS Errors
_TABLE_LOG_VISIT_ Log Table for Website Hitcounter!
Users Related
_TABLE_USER_ Table for Users (Multi Site Compatible)
_TABLE_USER_EXTRAFIELDS_ Table for Users Extrafields (Multi Site Compatible)
_TABLE_USER_SESSION_ Table for Users Sessions (Multi Site Compatible)
_TABLE_USER_GROUP_ Table for Users Groups (Multi Site Compatible)
Permission Related
_TABLE_USER_PERM_ Table for Users Permission (Multi Site Compatible)
_TABLE_USER_GROUP_PERM_ Table for user Group Permission (Multi Site Compatible)
_TABLE_USER_GROUP_LINK_ Table for User/Group Relation (Multi Site Compatible)
Constants Class
_TABLE_VAR_ Constant Variables Table for Settings (Multi Site Compatible)
Database Language Translations
_TABLE_LANG_ Language Translation Table (Multi Site Compatible)
Mail Templates
_TABLE_MAIL_TPL_ Table for Mail Templates (Multi Site Compatible)
API Request and Tokens
_TABLE_API_ Table to Log API Requests and Tokens (Multi Site Compatible)
Files Tables
_TABLE_FILE_ Table to store combined files by administrator module or other administrator modules!
_TABLE_FILE_FOLDER_ Table to store File Folders by administrator module or other administrator modules!
Additional Functionalities Tables
_TABLE_TASK_ Table to save task items!
_TABLE_COMMENT_ Table for multi Site Comment Class by Bugfish Framework!
_TABLE_WIKI_ Table for multi site Wiki for Multi Site Purposes!
_TABLE_ART_ Table for multi site articles for Multi Site Purposes!
_TABLE_ART_CAT_ Table for multi site articles categories for Multi Site Purposes!
_TABLE_URL_ Link list funtionality / Bookmark Table for Multi Site Purposes!
_TABLE_FINANCE_ Accounting Table for Multi Site Purposes!
_TABLE_FORUM_ Forum Table for Multi Site Purposes!
_TABLE_STORE_ Store Table for Multi Site Purposes!
_TABLE_USER_EVENT_ User Event/Notification CRM Table for Multi Site Purposes!
_TABLE_USER_CAL_ User Calender CRM Table for Multi Site Purposes!
_TABLE_TOKEN_ Table for Tokens to let visitors view hidden site modules with a token provided before!
_TABLE_MSG_ Table for Messages Between Users!


CMS Related Definitions

CMS Definitions for this CMS are declared as constants starting with _HIVE_


Constant Name Description
Site Modules Dynamic Variables
_HIVE_LANG_ Current Selected Language Name
_HIVE_THEME_ Current Selected Theme Name
_HIVE_COLOR_ Current Selected Color Name/Code
_HIVE_MODE_ Current selected Multi Site Mode (Site Module selected and showing)
Prefix for Backend (Not Site Modules) Tables & Cookies
_HIVE_PREFIX_ Prefix for HIVE Tables, which is provided at installation!
_HIVE_COOKIE_ Prefix for HIVE Cookies, which is provided at installation!
Global Path Constants
_HIVE_PATH_ Document Root of CMS, which is provided at installation!
_HIVE_PATH_PRIVATE_ Full Path to Restricted Uploaded Folder
_HIVE_PATH_PUBLIC_ Full Path to Public Uploaded Folder
_HIVE_PATH_INTERNAL_ Full Path to Internal System Folder
Ruleset.php Configurable Constants
_HIVE_MODE_ARRAY_ Array with valid Site Modes (set up in ruleset.php)
_HIVE_ALLOW_ADMIN_ Administration Backend activated? (Site _administrator) (set up in ruleset.php)
_HIVE_MODE_DEFAULT_ Default Mode for Website (set up in ruleset.php)
$hive_mode_override Override and Force Specific Site Module (set up in ruleset.php)
_HIVE_MOD_FETCH_ Fetch Site mode by current visible URL in Browser? (set up in ruleset.php)
_HIVE_ALLOW_TOOLS_ Allow the use of files in _tools folder? (set up in ruleset.php)
_HIVE_MOD_CHANGES_ Allow the use of developer.php? (set up in ruleset.php)
Various
_HIVE_URL_REL_ Relative URL Folder (auto-determined)
_HIVE_URLC_REL_ Relative URL Folder (auto-determined), without http and host part!


Folder Structure

Informations about this CMS/Frameworks Folder Structure. Here you can see which folder is related to which data - and which folders you need to mind if you move or reinstall the software.


Folder Name Description
/_core
/_core Folder contains Core Files of this CMS. Do not change Files in that folder, they may be overwritten by CMS Updates!
/_core/_vendor Folder with included third party libraries! Take a look at the upper "Library" section to see informations about included libraries and theire licenses! This files may gets updated on CMS-Updates.
/_core/_tools Different PHP Scripts for Developers to be used to test functionalities, usage of this scripts can be deactivated in ruleset.php!
/_core/_tools/cookie_destroy.php Destroy your current php session cookies (if activated)!
/_core/_tools/phpinfo.php Show PHP Informations File!
/_core/_tools/session_destroy.php Destroy your current php session (if activated)!
/_core/_misc Various files to switch between pages!
/_core/_action/js_debug_action.php If Javascript Debugging for Site Module is active, this is the action to log errors.
/_core/_action/admin_switch.php File can be executed in Browser to switch Between Backend Admin Panel and Frontpage (If Admin Panel is Activated in ruleset.php) and used! This file may gets updated on CMS-Updates.
/_core/_action/token_switch.php Users with a valid site module access token can view this page to enter theire token and get refered to related site module pages.
/_core/_misc Various files needed for this CMS!
/_core/_misc/init.php This file is to initialize the CMS and its functionalities! You do not need to touch this file at development. All configurations can be made inside your Sites Modules Folder if you are a Developer.
/_core/_misc/internal.php Internal Validation file, can be ignored.
/_core/_mysql Folder contains auto-installed MySQL Databases for this CMS!
/_core/_api Internal API not related to any Site Module.
/_core/_image Some images you can use in development!
/_core/_lib Folder contains auto-included functions and classes for this CMS!
/_core/_captcha Some captcha Files you can include as images if you need captcha validations!
/_core/_font Some font fallback Files in case your Site Module does not deliver them!
/_core/_error Default Error Pages for HTAccess Error Handler!
/_core/javascript.php Include file to load current Site Modules _js folder Files! This file may gets updated on CMS-Updates.
/_core/stylesheet.php Include file to load current Site Modules _css folder Files! This file may gets updated on CMS-Updates.
/_core/version.php Internal File to declare used Version of this software.
/_cron
/_cron Cronjobs to be executed, if the website needs them! Put Cronjob Code in your Site Module, Folder does not needs to be changed and may be updated by CMS updates!
/_cron/daily.php If this file is executed, it will execute all files out of all installed sites _cron/daily folder!
/_cron/hourly.php If this file is executed, it will execute all files out of all installed sites _cron/hourly folder!
/_cron/weekly.php If this file is executed, it will execute all files out of all installed sites _cron/weekly folder!
/_cron/monthly.php If this file is executed, it will execute all files out of all installed sites _cron/monthly folder!
/_cron/yearly.php If this file is executed, it will execute all files out of all installed sites _cron/yearly folder!
/_internal
/_internal Folder for internal stored files! This folder will not be touched by CMS Updates or Framework Updates. This folder is for deactivated site module and for the store cache. Folder content should not be visible public as it may also contains backups!
/_framework
/_framework Here is the Bugfish-Framework located! Do not change or edit this files, as they may get overwritten with CMS Updates!
/_public
/_public Files for Different Site Modules, which are public accessible! Data of Site-Modules will be moved in this folder, this makes this folder important for Backup operations! A Folder for every site Modules related files will be created. An Exception is if you for example use the main file class to upload files, these files will be loaded into the folder where the site modules database is located. Files in this folder will not be affected by CMS Updates!
/_restricted
/_restricted Files for Different Site Modules, which are not public accessible! Data of Site-Modules will be moved in this folder, this makes this folder important for Backup operations! A Folder for every site Modules related files will be created. An Exception is if you for example use the main file class to upload files, these files will be loaded into the folder where the site modules database is located. Files in this folder will not be affected by CMS Updates!
/_site
/_site Folder which holds differnent installed and active Site Modules! This folder contains the code for Site Modules and active Sites. This is where developers put theire site modules into if they want to use them. You can find a site module _administrator inside this folder, which features a full functioning backend CMS and deeper insights into site module development! You can use this project as reference or to lookup where to place files if you want to develope site modules by yourself.
/_site/_administrator Full working administrator backenede module with a lot of functionalities to be used in projects or as reference for development.
/_store
/_store Store and Core Update functionalities! Also can Include API Functionalities.
/
/index.php Initializing index.php File! No Changes needed on that file. This file may gets updated on CMS-Updates.
/installer.php Script to install website if not yet installed! This file may gets updated on CMS-Updates.
/updater.php Script to update website if updated available (Depends on Build Number Active and current Code Build Number)! This file may gets updated on CMS-Updates.
/settings.php File will be generated by installer.php! If you want to reinstall the software, just delete this file! This file will not be touched by cms updates, only at the installation - so you are free to add code here if needed, but should not be done, because you have files in your sites module for that.
/developer.php If activated in ruleset.php, developers can override relative user per site options here. With this file you can easily check and test multi site and complex functionalities of the site while developing! It also may give you an impression, on how easily it is with this cms to include own websites with different languages/styles and much more! This file may gets updated by CMS-Updates.
/cfg_ruleset.php Backend-Developer File to change some important Backend Settings which are not related to a site Module! More informations in the "Site Modules" section below! In this file are settings which control how the Handle will act to determine Site Modes and which Site Mode will be choosen. The Administrator Side Module can run Side by Side with your programmed Site Module to make administration for your website easier if you plan to build a website based on this cms framework! If this file will ever be affected by CMS Updates, than we will save your settings in there and rewrite them. Please do not write custom code in here, just choose Settings for different given Constants! If you want to use this cms with a standalone (no multi site and store able) module, you can change installer parameters here, to fit it for youre needs! This file is optional for developers.
/cfg_ruleset_sample.php If you want to change primary CMS definitions, see this file. After you made your changed change the filename to cfg_ruleset.php. This file is only meant for developers who want to develop side modules or standalone webpages with that cms system and optional.


Site Modules

Here you can find some informations, if you plan to develop a new Site Module inside this CMS. You can find informations about the folder structure of site modules and more here! In the Table below you can find the file structure for a Site Module Folder. Site Module Folders are located in /_site/*. Developers put theire code into theire site module and activate site modules with /ruleset.php or /developer.php as needed! Inside the _site folder you can find the "_administration" Site module. This Module contains example Files to show you how the site modules structure has to to look like! You can find different site module templates for different style examples in the repositories "_modules" folder on github!


Folder Structure

Below you can find the Folder-Structure for Site Modules which can be applied to use core functions and let files automatically be executed. All these folders are optional to create and use. See inside the _site/_skeleton Module to see implementations and files in different folders with explanations!


Folder Name Description
Cronjob Loadup Folder
/_site/*/_cron Put your Cronjob Files here, see example in _skeleton example site module to see how this works. Files in this folder will be included when running the related _cron/daily.php (etc) files in the CMS Root Directory! Cronjob files of all site modules found will be run on main cronjob execution!
CSS Loadup Folder
/_site/*/_css Put your CSS Files here, see example in _skeleton example site module to see how this works. Files in this folder will be included when including stylesheet.php in the websites root folder. Stylesheet.php will only load CSS Files for current choosen Site Module.
JS Loadup Folder
/_site/*/_js Put your JS Files here, see example in _skeleton example site module to see how this works. Files in this folder will be included when including javascript.php in the websites root folder. Javascript.php will only load CSS Files for current choosen Site Module.
Language Loadup Folder
/_site/*/_lang Put your Language Files here, see example in _skeleton example site module to see how this works. Files in this folder will be included at site-startup. Language File for Site Mode will be loaded depending on current active Site Mode and Active User Language / Existing Language File.
Functions Loadup Folder
/_site/*/_lib Put your Libraries Files here, see example in _skeleton example site module to see how this works. Files in this folder will be included at site-startup. Lib Files will be loaded of related Site Mode is activated for User.
MySQL Loadup Folder
/_site/*/_mysql Put SQL Files here, see example in _skeleton example site module to see how this works. So you can make Tables Auto-Install! Auto Installation and Check if all Database exist will Take place on every site Loadup. Files will be loaded on execution of a site with related site mode by a visiting user.
Themes Loadup Folder
/_site/*/_theme In this folder you can put your themes. You can also put your themes in another folder and use _HIVE_THEME_ variable to fetch current selected Theme by user or general Theme selected by default. A Captcha file can be included in this themes sub theme folder, see the _skeleton site mode for example on where to put the captcha font. This font will be applied to generated captchas by /_core/captcha if Captcha if executed by activated related site mode.
Update Loadup Folder
/_site/*/_update Folder for Updates depending on Build number. See updater.php script or _skeleton example site for more informations! Here you can put updates for databases and more for your site! Mind the sample files as there are also some informations inside them. Check _skeleton Site Mode to check how updating works, as there is one dummy update included!
Licenses and Readme Folder
/_site/*/_various This folder is only there to store license and readme files belonging to the site module. It is optional and not necessary for cms functionalities!
Config Loadup Folder
/_site/*/_config/ Folder for Site Module Configuration Files
/_site/*/_config/config_pre.php Your Configuration to be loaded before Initial Site Startup (optional). See below for possible Configurations inside that file, mostly made by defining constants!
/_site/*/_config/config_post.php Your Configuration to be loaded after Initial Site Startup (optional). See below for possible Configurations inside that file, mostly made by defining constants!
/_site/*/_config/config_global_pre.php Your Configuration to be loaded after Initial Site Startup (optional). This file will be loaded globally for every Site Module, no matter which one a user has loaded!
/_site/*/_config/permission.php Declare Permission set with object[permission] in here. This will give the administrator module the possibility to control that permissions (if implemented)!
/_site/*/_config/config_global_post.php Your Configuration to be loaded before Initial Site Startup (optional). This file will be loaded globally for every Site Module, no matter which one a user has loaded!
/_site/*/_config/config.php Configuration for your Site Module. See _skeleton Site Module in _site folder for Informations how to Setup this File! (See example config.php file in there! See below for possible Configurations inside that file, mostly made by defining constants!
Site Modules Loadup Files
/_site/*/load.php Site Loadup File is Site Mode is Choosen for related Module. (Startup File) This file will be executed as the start file, if related Site Module is choosen.
/_site/*/version.php Versioning informations about the deployed site module.


Relative Constants

Below you find a set of constants declared to easier produce and develope site modules! This constants are always relativ for your site Module and so they will come in handy making your life easier developing with this CMS! See inside the _site/_skeleton Module to see implementations and files in different folders with explanations!


Constant Name Description
_HIVE_SITE_PATH_ Path to Site Modules Folder (Full). This Constant can be used inside your site modules development, as this will be relative to the current visible front module. So this path will always lead to the site module you are actively in!
_HIVE_SITE_PUBLIC_ Path to absolute Site Data Public folder!
_HIVE_SITE_PRIVATE_ Path to absolute Site Data Private/Restricted folder!
_HIVE_SITE_REL_ Relative Path to Website Site Folder for URL Redirectss!
_HIVE_SITEC_REL_ Relative Path to Website Site Folder for URL Redirects, without https and host part!
_HIVE_SITE_COOKIE_ Cookie Prefix to use for Site Module. This Constant can be used inside your site modules development, as this will be relative to the current visible front module. So this path will always lead to the site module you are actively in!
_HIVE_SITE_PREFIX_ Database Prefix to use for Site Module. This Constant can be used inside your site modules development, as this will be relative to the current visible front module. So this path will always lead to the site module you are actively in!
_HIVE_MODE_ Currently Users Site Mode which is active. This Constant can be used inside your site modules development, as this will be relative to the current visible front module. So this path will always lead to the site module you are actively in!
_HIVE_THEME_ Currently Users Theme which is active. This Constant can be used inside your site modules development, as this will be relative to the current visible front module. So this path will always lead to the site module you are actively in!
_HIVE_COLOR_ Currently Users Theme Color which is active. This Constant can be used inside your site modules development, as this will be relative to the current visible front module. So this path will always lead to the site module you are actively in!
_HIVE_LANG_ Currently Users Language which is active. This Constant can be used inside your site modules development, as this will be relative to the current visible front module. So this path will always lead to the site module you are actively in!
_HIVE_URL_CUR_ Currently Values for URL Location Levels defined in Name Array for them. This Constant can be used inside your site modules development, as this will be relative to the current visible front module. So this path will always lead to the site module you are actively in! Relative URL Path local to this website if its in a webspaces subfolder. This Constant can be used inside your site modules development, as this will be relative to the current visible front module. So this path will always lead to the site module you are actively in!


Site Settings

Below you can find settings which can be applied in your site Modules config.php file! Be sure to define all these values, otherwhise this can lead to unforeseen errors! See inside the _skeleton example Site Module to see default configurations and more! See inside the _site/_skeleton Module to see implementations and files in different folders with explanations!


Constant Name Description
_HIVE_BUILD_ Current Build Number of your script, this is important if you want to use our updater script with your website module! Just set this to "1" if you are not sure what to do.
_HIVE_TITLE_ Title for the Site Modules Web Page used in Tab Titles and in Themes for more.
_HIVE_TITLE_SPACER_ Spacer for the title and name of page in tab title and other areas!
_HIVE_PHP_DEBUG_ If you set this to true(1), PHP Errors will be displayed on page! It is advised to set this to false(0) on a productive version!
_HIVE_PHP_MODS_ Here you can set which modules in php needs to be installed to run your site module. If a module is missing an error page will shown. Example: array("gd", "mbstring", "modulename")
_HIVE_MYSQL_DEBUG_ If you set this to true(1), MySQL Errors will be displayed on page! It is advised to set this to false(0) on a productive version!
_HIVE_CURL_LOGGING_ Log CURL Class Requests? (true/false)
_HIVE_IP_LIMIT_ Block IPs after X Failures
_HIVE_IP_REFERER_ Log Referers? (true/false)
_HIVE_CSRF_TIME_ Default CSRF Code Valid Time in Seconds
_CRON_ONLY_CLI_ True - Only Cronjob Execution from Command Line | False - Allow Cronjob Execution in Browser
$object["set"]["permission"] Here you can add permissions to easy be used with the administrator interface or other modules of your site! Check the example _skeleton in the _site directory to see how you need to set up this variable. In the _administrator site you can see an implementation of this functionality.
$object["nav"] Array to create easy navigations on templates! See _skeleton or other sites as example on how to use this array. It is stored in the config.php files of a site!
User Settings
_USER_MAX_SESSION_ Maximum Days Sessions/Cookies are Valid
_USER_TOKEN_TIME_ Time in Minutes token out of Activation Mails are Valid
_USER_AUTOBLOCK_ Block Users after X Fail Logins (can be false)
_USER_WAIT_COUNTER_ Time in Minutes User has to wait between Requests (anti flood)
_USER_LOG_SESSIONS_ Log old sessions? (Logins, Recoverys, Activations, Mail Changes) (true/false)
_USER_LOG_IP_ Log User IPs in Database (true/false)
_USER_REC_DROP_ True - Remove Recovery Keys after user Succesfully Logged In | false - Preserve Keys
_USER_MULTI_LOGIN_ True - Allow Multi Login | false - Disable Multi Login (old session logout)
_USER_PF_SIGNS_ Passwordfilter: Min Signs
_USER_PF_CAPSIGNS_ Passwordfilter: Min Capital Signs
_USER_PF_SMSIGNS_ Passwordfilter: Min Small Signs
_USER_PF_SPSIGNS_ Passwordfilter: Min Special Signs
_USER_PF_NUMSIGNS_ Passwordfilter: Min Numeric Signs
Default Activation Scripts Config
_HIVE_USR_ACT_DISABLE_ Disable the general User Activation page? (0/1)
_HIVE_USR_ACT_REFER_ Refer to this path if you want to use special User Activation page for Site Mode
_HIVE_USR_REC_REFER_ Refer to this path if you want to use special Recover Execution page for Site Mode
_HIVE_USR_REC_DISABLE_ Disable the general Recover Activation page? (0/1)
_HIVE_USR_MC_REFER_ Refer to this path if you want to use special Mail Activation page for Site Mode
_HIVE_USR_MC_DISABLE_ Disable the general Mail Activation page? (0/1)
Create Initial Files
_HIVE_HTACCESS_WRITE_ 1 - Create HTAccess | 0 - Do Not Create HTAccess
_HIVE_HTACCESS_HTTPS_FORWARD_ 1 - Forward to HTTPS | 0 - Not Forward
_HIVE_HTACCESS_WWW_FORWARD_ 1 - Forward to HTTPS | 0 - Not Forward
_HIVE_HTACCESS_REFRESH_ 1 - REFRESH MODULE | 0 - Not Refresh Module
_HIVE_SITEMAP_URL_ 1 - URL TO SITEMAP | 0 - NO URL IN SITEMAP IN ROBOTS.TXT
_HIVE_ROBOT_SPAWN_ 1 - Allow All | 2 - Allow nothing /| 0 Do not Spawn robots.txt
TinyMCE
_TINYMCE_PLUGINS_ TinyMCE Plugin Items
_TINYMCE_MENU_BAR_ TinyMCE Menu Items
_TINYMCE_TOOL_BAR_ TinyMCE Toolbar Items
Captcha
_CAPTCHA_CODE_ Random Code for Captcha
_CAPTCHA_LINES_ Count of Lines in Captcha
_CAPTCHA_SQUARES_ Count of Squares in Captcha
_CAPTCHA_HEIGHT_ Captcha Height Image
_CAPTCHA_WIDTH_ Captcha Width Image
_CAPTCHA_COLORS_ Colors for Captcha (Optional, can be false)
MAIL
_SMTP_HOST_ Set SMTP Host for Site Module [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_PORT_ Set SMTP Port for Site Module [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_AUTH_ Set SMTP Auth for Site Module (ssl/tls/false) [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_USER_ Set SMTP User for Site Module [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_PASS_ Set SMTP Pass for Site Module [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_SENDER_MAIL_ Default Sender Mail Adr [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_SENDER_NAME_ Default Sender Mail Name [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_MAILS_IN_HTML_ All Mails sended as HTML? (false/true) [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_DEBUG_ Mail Debug Mode (0, 1, 2, 3) - Use 0 for Production as this will result Debug Output on site! [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_MAILS_HEADER_ Default Header for Mails [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_MAILS_FOOTER_ Default Footer for Mails [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
_SMTP_INSECURE_ Allow insecure SSL Connections? (true/false) [Initial Mail Connection Settings will be set in settings.php but can be overwritten by Site Module! Look there for required Constants to define!]
REDIS
_REDIS_ Redis Activated? False/True
_REDIS_HOST_ Redis Host
_REDIS_PORT_ Redis Port
_REDIS_PREFIX_ Redis Prefix
Updater Settings
_UPDATER_TITLE_ Title for the Updater on this Site
_UPDATER_CODE_ Code needed for Update execution? (can be false)
Language Settings
_HIVE_LANG_DEFAULT_ Array with Default Language
_HIVE_LANG_ARRAY_ Array with valid Languages
_HIVE_LANG_DB_ False = Use Language Files in SITE/_lang / True = Use Language Database
Theme Settings
_HIVE_THEME_DEFAULT_ Default Used Theme
_HIVE_THEME_ARRAY_ Array with valid Themes
_HIVE_THEME_COLOR_DEFAULT_ Default Color for Dynamic Theme Colors
URL Settings
_HIVE_URL_SEO_ STRING - GET VARIABLE SEO IN HTACCESS | 0 - No SEO URLs Using
_HIVE_URL_GET_ Only neeed if _HIVE_URL_SEO_ == false [Array with Name for Get Location Level GET Variables]
_HIVE_URL_ Hive System URL, which is provided at installation! Otherwhise if one is set in Site Module, the one set in Site Module config will be used (this is meant for Multi site, otherwhise you wont need to set this. Multi Site is for Multi Management Systems with multiple URLs on one system.


PHP Themes

Below a list of internal core functions, which may become usable in development. They are here to fast use internal themes of this CMS to work with and create your website as you need it. The use of this functions are optional and if you are not using this PHP-Themes at all, you can ignore this functions!


Simple Theme

This theme is used in _example-minimal with the possible lowest configuration for Bugfish CMS Systems.

This is just a simple theme you can use to fast build a really simple website. It has been created out of an E-Mail Template at this repository! This is just a credit for the developer, stick to this documentation here for informations on how to use this template! See Example Site Module _example-minimal to get insights on how to use this templates functions! This is also a template to the lowest possible bugfishCMS Configuration used in a site module!


Function Description Parameters
hive__simple_start Initializes the HTML structure for a webpage with necessary meta tags and styles.
  • $object: Required parameter representing an object.
  • $tabtitle: Optional parameter for the title of the tab (default: empty string).
  • $metaextensions: Optional parameter for additional meta extensions (default: empty string).
hive__simple_end Completes the HTML structure for a webpage, specifically adding the footer section.
  • $object: Required parameter representing an object.
  • $footer: Optional parameter for the footer content (default: empty string).


Windmill Theme

Windmill is a TailwindCSS Theme. The "_example-windmill" / "_windmill-backend" Site Module does feature this theme and show its functionalitites to be used in development. This also contains some more advanced functionality implementations of the Bugfish CMS to be used as reference!

This is another more advanced and responsive theme created out of the Windmill Dashboard theme! It comes fully integrated with functions for alert boxes and more! Here you can find the Repository of the integrated more enhanced "Windmill" Dashboard. This is just a credit for the developer, stick to this documentation here for informations on how to use this template! See Example Site Module _example-windmill to get insights on how to use this templates functions! You can dynamically change the navigation of the theme by changing the nav array. An example of this array can be seen at the end of the _example-windmill config.php File! This will give you the possibility, to easy spawn a responsive navigation!


Function Description Parameters
Alerts
hive__windmill_alert_danger($message, $classes) Generates a danger alert box. $message (string), $classes (string, optional)
hive__windmill_alert_success($message, $classes) Generates a success alert box. $message (string), $classes (string, optional)
hive__windmill_alert_warning($message, $classes) Generates a warning alert box. $message (string), $classes (string, optional)
hive__windmill_alert_info($message, $classes) Generates an info alert box. $message (string), $classes (string, optional)
hive__windmill_alert_primary($message, $classes) Generates a primary alert box. $message (string), $classes (string, optional)
hive__windmill_alert_url($message, $image, $url, $newtab, $rel, $more, $classes) Generates an alert box with a link. $message (string), $image (string), $url (string), $newtab (boolean), $rel (boolean), $more (string, optional), $classes (string)
Headings
hive__windmill_h2($text, $classes) Generates an h2 heading element. $text (string), $classes (string, optional)
hive__windmill_h4($text, $classes) Generates an h4 heading element. $text (string), $classes (string, optional)
Buttons
hive__windmill_button($text, $icon, $color, $tcolor, $type, $url, $name, $js, $classes) Generates a button element. $text (string), $icon (string), $color (string), $tcolor (string), $type (string), $url (string), $name (string), $js (string), $classes (string)
hive__windmill_button_icright($text, $icon, $color, $tcolor, $type, $url, $name, $js, $classes) Generates a button element with icon on the right. $text (string), $icon (string), $color (string), $tcolor (string), $type (string), $url (string), $name (string), $js (string), $classes (string)
hive__windmill_button_icleft($text, $icon, $color, $tcolor, $type, $url, $name, $js, $classes) Generates a button element with icon on the left. $text (string), $icon (string), $color (string), $tcolor (string), $type (string), $url (string), $name (string), $js (string), $classes (string)
hive__windmill_button_small_round($icon, $color, $tcolor, $type, $url, $name, $js, $classes) Generates a small round button element. $icon (string), $color (string), $tcolor (string), $type (string), $url (string), $name (string), $js (string), $classes (string)
hive__windmill_button_small($icon, $color, $tcolor, $type, $url, $name, $js, $classes) Generates a small button element. $icon (string), $color (string), $tcolor (string), $type (string), $url (string), $name (string), $js (string), $classes (string)
Boxes / Containers
hive__windmill_box_start($header, $classes, $headerclasses) Starts a box element. $header (string, optional), $classes (string), $headerclasses (string, optional)
hive__windmill_box_end() Ends a box element. No parameters
hive__windmill_box_full($text, $classes) Generates a full box element. $text (string), $classes (string)
hive__windmill_box($text, $header, $classes, $headerclasses) Generates a box element with text and header. $text (string), $header (string, optional), $classes (string), $headerclasses (string, optional)
hive__windmill_box_colored($text, $header, $classes, $headerclasses) Generates a colored box element with text and header. $text (string), $header (string, optional), $classes (string), $headerclasses (string, optional)
hive__windmill_box_card($text, $value, $color, $icon, $classes) Generates a box card element with text, value, color, and icon. $text (string), $value (string), $color (string), $icon (string), $classes (string)
Modals
hive__windmill_modal($text, $title, $icon, $closebutton) Generates a modal element. $text (string), $title (string, optional), $icon (string, optional), $closebutton (string, optional)
Main Elements
hive__windmill_footer($object, $footer, $classes, $end_div) Generates the dashboard footer. $object, $footer (string, optional), $classes (string), $end_div (boolean, optional)
hive__windmill_end($object) Ends the dashboard. $object
hive__windmill_start($object, $classes) Starts the dashboard. $object, $classes (string, optional)
hive__windmill_content_start($object, $classes_main, $classes_wrapper) Starts the dashboard content. $object, $classes_main (string), $classes_wrapper (string)
hive__windmill_content_end($object) Ends the dashboard content. $object
hive__windmill_header Creates the dashboard header. $object, $tabtitle = "", $metaextensions = "", $theme_default = "dark", $mainclass = "flex h-screen bg-gray-50 dark:bg-gray-900"
hive__windmill_nav Creates the dashboard navigation. $object, $title = "", $button = false
hive__windmill_topbar Creates the dashboard topbar. $object, $profile_menu = false, $theme_menu = false, $search = false, $title = false, $img = "", $lang_ar = false
Templates
hive__windmill_404($object, $text, $title, $classes) Generates a 404 error box. $object, $text (string), $title (string, optional), $classes (string)
hive__windmill_401($object, $text, $title, $classes) Generates a 401 error box. $object, $text (string), $title (string, optional), $classes (string)
hive__windmill_login Generates a Login Form. $object, $cookies_allow = false, $recover_url = false, $image_light = _HIVE_URL_REL_."/_core/_image/bugfish-framework-logo.jpg", $image_dark = _HIVE_URL_REL_."/_core/_image/bugfish-framework-logo.jpg"
hive__windmill_recover Generates a Recover Account Form. $object, $back_url = false, $rec_url = false, $get_token = "rec_token", $get_user = "rec_user", $image_light = _HIVE_URL_REL_."/_core/_image/bugfish-framework-logo.jpg", $image_dark = _HIVE_URL_REL_."/_core/_image/bugfish-framework-logo.jpg"


AdminBSB Theme

This is the most advanced theme integrated in this CMS for free! Here you can find the Repository of the integrated more enhanced "AdminBSB Material Design" Dashboard. This is just a credit for the developer, stick to this documentation here for informations on how to use this template! See Example Site Module _administrator to get insights on how to use this templates functions! This is also the advanced administrator module to be used in that CMS! You can dynamically change the navigation of the theme by changing the nav array. An example of this array can be seen at the end of the _administrator config.php File! This will give you the possibility, to easy spawn a responsive and enhanced navigation as much more, which is included here! This is also the most enhanced skeleton for modules with explanation readmes in it! They maybe help you in develop your own modules. Functions of AdminBSB are not explained here yet. Look up the files of the default _administration site module to get insights! You can copy and reuse the administrator module if you need it. You can even modify it, but watch out to not update it, as this may removes your changes.

Volt Theme

This is an alternative for the windmill theme in bootstrap 5! Here you can find the Repository of the integrated more enhanced "Volt Administrator Dashboard". This is just a credit for the developer, stick to this documentation here for informations on how to use this template! See Example Site Module _example-volt to get insights on how to use this templates functions! Functions of Volt Template are similar to the windmill dashboard functions but are not explained here yet. Look up the files of the default _example-volt site module to get insights! You can copy and reuse the module if you need it. You can even modify it, but watch out to not update it, as this may removes your changes.


Function Description Parameters
Alerts
hive__volt_alert_danger($message, $classes) Generates a danger alert box. $message (string), $classes (string, optional)
hive__volt_alert_success($message, $classes) Generates a success alert box. $message (string), $classes (string, optional)
hive__volt_alert_warning($message, $classes) Generates a warning alert box. $message (string), $classes (string, optional)
hive__volt_alert_info($message, $classes) Generates an info alert box. $message (string), $classes (string, optional)
hive__volt_alert_primary($message, $classes) Generates a primary alert box. $message (string), $classes (string, optional)
hive__volt_alert_secondary($message, $classes) Generates a Secondary alert box. $message (string), $classes (string, optional)
Headings
hive__volt_h2($text, $classes) Generates an h2 heading element. $text (string), $classes (string, optional)
hive__volt_h4($text, $classes) Generates an h4 heading element. $text (string), $classes (string, optional)
Boxes / Containers
hive__volt_box_start($header, $classes, $headerclasses, $subtitle = false) Starts a box element. $header (string, optional), $classes (string), $headerclasses (string, optional)
hive__volt_box_end() Ends a box element. No parameters
hive__volt_box_full($text, $classes) Generates a full box element. $text (string), $classes (string)
hive__volt_box($text, $classes) Generates a box element with text and header. $text (string), $header (string, optional), $classes (string), $headerclasses (string, optional)
Modals
hive__volt_modal($text, $title, $icon, $closebutton) Generates a modal element. $text (string), $title (string, optional), $icon (string, optional), $closebutton (string, optional)
Main Elements
hive__volt_footer($object, $footer, $classes, $end_div) Generates the dashboard footer. $object, $footer (string, optional), $classes (string), $end_div (boolean, optional)
hive__volt_header Creates the dashboard header. $object, $tabtitle = "", $metaextensions = "", $theme_default = "dark", $mainclass = "flex h-screen bg-gray-50 dark:bg-gray-900"
hive__volt_topbar Creates the dashboard topbar. $object, $profile_menu = false, $theme_menu = false, $search = false, $title = false, $img = "", $lang_ar = false, $noty_ar = false, $notify_url_all = "", $user_name = "User Profile"
hive__volt_nav Creates the dashboard navigation. $object, $title = "", $button = false, $logo_url = false, $user_login = false
hive__volt_downbar Creates the dashboard extenable lower display box. $object, $buttontext, $text
Templates
hive__volt_404($object, $text, $title, $classes) Generates a 404 error box. $object, $text (string), $title (string, optional), $classes (string)
hive__volt_401($object, $text, $title, $classes) Generates a 401 error box. $object, $text (string), $title (string, optional), $classes (string)
hive__volt_login Generates a Login Form. $object, $cookies_allow = false, $recover_url = false, $image_light = _HIVE_URL_REL_."/_core/_image/bugfish-framework-logo.jpg", $image_dark = _HIVE_URL_REL_."/_core/_image/bugfish-framework-logo.jpg"
hive__volt_recover Generates a Recover Account Form. $object, $back_url = false, $rec_url = false, $get_token = "rec_token", $get_user = "rec_user", $image_light = _HIVE_URL_REL_."/_core/_image/bugfish-framework-logo.jpg", $image_dark = _HIVE_URL_REL_."/_core/_image/bugfish-framework-logo.jpg"


Core Functions

Below a list of internal core functions, which may become usable in development.


Function Description Parameters
Get Relative Current URL (Usable for very purposes on navigations and more!)
`hive_get_url_rel($array)` Generates a relative URL based on an array of values. $array - An array of values used to construct the URL.
Full Error Page Display
`hive_error_full($title, $subtitle, $description, $exit, $code)` Generates an HTML error page with custom information. - $title - The title of the error page.
- $subtitle - A subtitle for the error.
- $description - A description of the error.
- $exit - A boolean indicating whether to exit after displaying the error.
- $code - An optional HTTP response code (numeric).
Check for Access Function
`hive__access($object, $rights, $displayerror = false)` Checks access rights for a user with optional groups and can display an error page. - $object - An object that contains information about permissions.
- $rights - An array of access rights to check.
- $displayerror - A boolean indicating whether to display an error page on access denial.
Get Relative Folder (Internal Use)
`hive_get_url_rel($array)` Ger Relative Folder if website is in a relative folder - $array - Current URL Array
Set Site Session User Default Values
`hive__user_lang_set($object, $user_id, $hive_mode, $lang_name)` Save a default lang for the user in the given site mode in the users database (will be validated with available lang array) - $object - Object Array - $user_id - User id to change for - $hive_mode - Site Mode to change for - $lang_name - Change lang for this user in this site mode to this value
`hive__user_theme_set($object, $user_id, $hive_mode, $theme_name)` Save a default theme for the user in the given site mode in the users database (will be validated with available themes array) - $object - Object Array - $user_id - User id to change for - $hive_mode - Site Mode to change for - $theme_name - Change theme for this user in this site mode to this value
`hive__user_theme_sub_set($object, $user_id, $hive_mode, $theme_subsettings)` Save theme subsettings if you require for the user in the given site mode in the users database - $object - Object Array - $user_id - User id to change for - $hive_mode - Site Mode to change for - $theme_subsettings - Change Theme Subsettings to this value
`hive__user_color_set($object, $user_id, $hive_mode, $color_code)` Save a default color for the user in the given site mode in the users database - $object - Object Array - $user_id - User id to change for - $hive_mode - Site Mode to change for - $color_code - Change color for this user in this site mode to this value
Login and Account Execution Functions
hive__template_mail_activate Execution to activate new mail $object, $get_token = "mai_token", $get_user = "mai_user", $message = true, $redirect = _HIVE_URL_REL_
hive__template_user_activate Execution to activate a user $object, $get_token = "act_token", $get_user = "act_user", $message = true, $redirect = _HIVE_URL_REL_
hive__template_recover_exec Recover with or without new pass account /Activate Function Execution $object, $rec_url = false, $get_token = "rec_token", $get_user = "rec_user", $mailtemplate = "_RECOVER_", $message = true, $redirect = _HIVE_URL_REL_
hive__template_login_exec Login Executions $object, $cookies_allow = false

Additional Informations

Here you can see various informations about licenses and how to get support related to this product. Do not hesitate to give us feedback about your user experience or critique about our software.




Support

There are different ways to get support for our products. You can write comments in our specific websites section for the related product, but the best way it to write in our forum, as we are getting notifications about that! So if you need any help, sign in at our forum and we will do what we can to serve you. If you do not want to register at our forum, you are invited to write us for support at requests@bugfish.eu.

My Website My Forum

License Informations


bugfishCMS License

The bugfish-cms Project is released under the GPLv3 License, affording you the freedom to use, modify, and distribute the project as you see fit. It is imperative to note that the "/_core/_vendor" folder contains various libraries, each with its own unique licenses. To ensure full compliance and understanding of the licensing terms associated with these included libraries, we encourage you to consult our comprehensive documentation on our GitHub page. This documentation provides exhaustive information regarding the specific licenses and any additional requirements tied to individual libraries. Your responsible adherence to these licenses is pivotal when utilizing this project. Your interest and collaboration are greatly appreciated.

GNU GENERAL PUBLIC LICENSE

Version 3, 29 June 2007

Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Preamble

The GNU General Public License is a free, copyleft license for software and other kinds of works.

The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.

To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.

For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.

Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.

Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.

The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS

0. Definitions.

“This License” refers to version 3 of the GNU General Public License.

“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.

“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations.

To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.

A “covered work” means either the unmodified Program or a work based on the Program.

To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.

To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.

1. Source Code.

The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.

A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.

The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.

The Corresponding Source for a work in source code form is that same work.

2. Basic Permissions.

All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.

You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.

Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.

3. Protecting Users' Legal Rights From Anti-Circumvention Law.

No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.

When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.

4. Conveying Verbatim Copies.

You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.

You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.

5. Conveying Modified Source Versions.

You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:

  • a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
  • b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
  • c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
  • d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.

A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.

6. Conveying Non-Source Forms.

You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:

  • a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
  • b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
  • c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
  • d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
  • e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.

A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.

A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.

“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.

If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).

The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.

Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.

7. Additional Terms.

“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.

When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.

Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:

  • a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
  • b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
  • c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
  • d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
  • e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
  • f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.

All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.

If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.

Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.

8. Termination.

You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.

9. Acceptance Not Required for Having Copies.

You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.

10. Automatic Licensing of Downstream Recipients.

Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.

An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.

11. Patents.

A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”.

A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.

Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.

In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.

If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.

If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.

A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.

Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.

12. No Surrender of Others' Freedom.

If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.

13. Use with the GNU Affero General Public License.

Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.

14. Revised Versions of this License.

The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.

If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.

Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.

15. Disclaimer of Warranty.

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

16. Limitation of Liability.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

17. Interpretation of Sections 15 and 16.

If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:

    <program>  Copyright (C) <year>  <name of author>
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”.

You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <https://www.gnu.org/licenses/>.

The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <https://www.gnu.org/licenses/why-not-lgpl.html>.


This Github Page Templates License

Designed with love by Xiaoying Riley for developers
(And modified by bugfish)
You are only allowed to use this template if you include this attribution!