TABLE OF CONTENTS
FILES CONFIG NOTES
Files and config list for this module, and some notes (if any).
FILES LIST
lib/LIB-Mail.php
Email module.lib/LIB-Page.php
Pagination module.lib/LIB-Settings.php
Settings Module.
EMAIL MODULE
This email library uses the default PHP mail()
. Feel free to rebuild the entire library if you want to use other libraries such as PHPMailer.
A FEW NOTES
- Change
EMAIL_FROM
in thesettings
database table if you want to change the “email from”. - Beginners, if your “email is not working” – Check out this tutorial.
BASIC SEND MAIL
// (A) BASIC SEND
$_CORE->load("Mail");
echo $_CORE->Mail->send([
"from" => "sys@site.com", // optional
"to" => "job@doe.com",
"cc" => "joe@doe.com", // optional
"bcc" => "jon@doe.com", // optional
"subject" => "Test Email",
"body" => "This is a <strong>TEST</strong> email",
"attach" => "PATH/IMAGE.JPG" // optional
]) ? "OK" : $_CORE->error ;
// (B) TO, CC, BCC CAN ALSO BE AN ARRAY OF EMAIL
// "to" => ["jac@doe.com", "jan@doe.com", "jay@doe.com"]
// (C) ATTACH CAN ALSO BE AN ARRAY OF FILES
// "attach" => ["FILE-1", "FILE-2"]
Yep, send()
is all you need. The bare minimum is to specify the to, subject, and body.
EMAIL WITH HTML TEMPLATE
<html><body>
<h1>Welcome!</h1>
<p>Thank you for joining <?=$name?>. Here is your discount code <?=$code?></p>
</body></html>
$_CORE->Mail->send([
"from" => "sys@site.com",
"to" => "Jon@doe.com",
"subject" => "Welcome",
"template" => "template.php",
"vars" => ["name"=>"Jon", "code"=>"123ABC"]
]);
Take note, if body
and template
exist at the same time, template
will take precedence.
PAGINATION MODULE
Pagination is a 2 steps process. First, you will have to feed the total number of entries and the current page into $_CORE->paginator(TOTAL, NOW)
. Then, use $_CORE->page
to build your pagination.
PAGINATION EXAMPLE
class Dummy extends Core {
function get ($page=1) {
// (A) FEED TOTAL NUMBER OF ENTRIES & CURRENT PAGE INTO PAGINATOR
$this->Core->paginator(
$this->DB->fetchCol("SELECT COUNT(*) FROM `TABLE`"), $page
);
// (B) USE CALCULATED LIMITS TO RESTRICT ENTRIES
return $this->DB->fetchAll(
"SELECT * FROM `TABLE`" . $this->Core->page["lim"]
);
}
}
<?php
// (A) GET ENTRIES
$_CORE->autoCall("Dummy", "get");
// (B) DRAW HTML LIST
foreach ($entries as $e) { ... }
// (C) DRAW PAGINATION
// THIS WILL DRAW <A ONCLICK="GO(N)">N</A>
$_CORE->load("Page");
$_CORE->Page->draw("go");
<!-- (A) EMPTY DIV CONTAINER -->
<div id="demo"></div>
<!-- (B) AJAX LOAD ENTRIES -->
<script>
function go (pg) {
cb.load({
page : "AJAX-HANDLER-ABOVE",
target : "demo",
data : { page : pg }
});
}
window.onload = () => go(1);
</script>
BUILD YOUR OWN PAGINATION
- No hard rules that you must use the “default”
lib/LIB-Page.php
. - Go ahead and modify
$_CORE->Page->draw()
if you don’t like it. - Or build your own pagination library, use
$_CORE->page
to help you.$_CORE->page["total"]
Total number of pages.$_CORE->page["now"]
Current page.
SETTINGS MODULE
Not to be confused. Keep critical config in CORE-Config.php
, use this module to allow administrators to change the not-so-critical aspects of the system.
SETTINGS TABLE
Field | Description |
setting_name |
Primary key. More like setting key, that is, define(SETTING_NAME, SETTING_VALUE) . |
setting_description |
Short description of this setting. |
setting_value |
The setting value. |
setting_group |
Setting group. |
This table should be pretty self-explanatory in most parts, except for the group. Use the group to help you organize the settings, and load the group only when required.
- Group 0 – Use this to keep track of your app version.
- Group 1 – System-wide settings. This group is loaded by default during
$_CORE->load("Settings")
. - The rest is up to you. For example, use group 2 to keep settings pertaining to API calls. Group 3 for settings for a certain module. Load the group settings only during API calls, or when the module is loaded.
SETTINGS LIBRARY FUNCTIONS
setting_group=1
.Get all group settings from the database and run PHP define(NAME, VALUE)
.
$group
– Integer, group ID.
$_CORE->Settings->defineG(1);
Get specified settings from the database and run PHP define(NAME, VALUE)
.
$name
– String, setting name. Or an array of setting names.
$_CORE->Settings->defineN("PAGE_PER");
$_CORE->Settings->defineN(["SETTINGA", "SETTINGB"]);
Get all settings in the specified group.
$group
– Integer, group ID.
$settings = $_CORE->settings->get();
Save the given settings.
$settings
– Array, in the format of[NAME => VALUE, NAME => VALUE]
.
$CORE->settings->save([
"EMAIL_FROM" => "jon@doe.com",
"PAGE_PER" => 30
]);