Skip to content
aryalsujay edited this page May 29, 2022 · 4 revisions

Welcome to the Treasures-Of-Dhamma wiki!

Drupal

1. Data Abstraction

Database abstraction layer. If the current DB is MySQL and we want to change it to Oracle, then we only need to change the config engine in settings.php. The codebase is the same. All layers - (Database, Menu, Themes, Forms are stored in array form i.e. key-value pair) are independent.

Due to this, the framework is scalable(ability to be changed). The menu layer in Drupal itself has many functionalities.

Theme-based abstraction layer: CSS, JS, HTML are all kept separate.

2. Access Control

Basically, it means to Read, Write and Delete. Can be achieved via roles and permissions. According to the organizational hierarchy/structure, we can define various roles and give permissions to achieve finely grained ACL - Granularity.

3. How data is stored in the Database?

Each field of content is a new table in a particular database i.e. it creates two tables for each field: node_field_data and node_field_data_revision.

4. Multisite

The codebase will be the same for all sites.

  • Create a new directory in the sites/ folder as the URL name for the site. Eg: giri.vridhamma.org for DhammaGiri.
  • Add settings.php in each sites folder and add a new DB name in the config engine.
  • Note: If you have say 100 sites and each site is pointing to a separate DB with the same codebase, then any update in drupal say will affect all 100 sites. Eg: Current Dana's site - handling 60 centers - has the same codebase with different sites folder.

How to maintain multisite features for centers?

  • Solution: Create a central site. The DB of this site is the central DB. The API Layer is also different. Expose API from this site to all center's sites. Solved! API is powerful.