PHP code example of underpin / decision-list-loader
1. Go to this page and download the library: Download underpin/decision-list-loader library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
function get_email_address(){
return apply_filters('plugin_name_replace_me_email_address',get_option('email_address', '[email protected]'));
}
/**
* Class Email To
* Class Email to list
*
* @since 1.1.0
* @package DFS_Monitor\Factories
*/
class Email_To extends Decision_List {
public $dedecision listion = 'Determines which email address this plugin should use.';
public $name = 'Email Address';
/**
* @inheritDoc
*/
protected function set_default_items() {
$this->add( 'option', new class extends Integration_Frequency_Decision {
public $id = 'option';
public $name = 'Option Value';
public $dedecision listion = 'Uses the value of the db option, if it is set.';
public $priority = 100;
public function is_valid( $params = [] ) {
if(!is_email(get_option('email_address'))){
return plugin_name_replace_me()->logger()->log(
'notice',
'email_address_option_invalid',
'A decision tree did not use the option value because it is not set.'
);
} else{
return true;
}
}
/**
* @inheritDoc
*/
public function valid_actions( $params = [] ) {
return get_option('email_address');
}
} );
$this->add( 'hard_coded', new class extends Integration_Frequency_Decision {
public $id = 'hard_coded';
public $name = 'Hard coded email';
public $dedecision listion = 'Uses a hard-coded email address for this site.';
public $priority = 1000;
public function is_valid( $params = [] ) {
return true;
}
public function valid_actions( $params = [] ) {
return '[email protected]';
}
} );
}
}
/**
* Set up active loader classes.
*
* This is where you can add anything that needs "registered" to WordPress,
* such as shortcodes, rest endpoints, blocks, and cron jobs.
*
* All supported loaders come pre-packaged with this plugin, they just need un-commented here
* to begin using.
*
* @since 1.0.0
*/
protected function _setup() {
plugin_name_replace_me()->decision_lists()->add('email', '\Plugin_Name_Replace_Me\Decision_Lists\Email_To');
}
function get_email_address(){
// Decide which action we should take.
$decide = plugin_name_replace_me()->decision_lists()->get('email')->decide();
// Return the valid decision.
if(!is_wp_error($decide) && $decide['decision'] instanceof Decision){
return $decide['decision']->valid_actions();
}
// Bubble up the error, otherwise.
return $decide;
}
plugin_name_replace_me()->decision_lists()->get('email')->add('custom_option',new class extends \Underpin\Abstracts\Decision{
// Force this to run before all other options
public $priority = 50;
public $name = 'Custom Option Name';
public $dedecision listion = 'This custom name is used in an extension, and overrides the default';
public function is_valid($params = []){
// TODO: Implement is_valid() method.
}
public function valid_actions($params = []){
// TODO: Implement valid_actions() method.
}
});
\Underpin\underpin()->decision_lists()->add( 'example_decision_list', [
// Decision one
[
'valid_callback' => '__return_true',
'valid_actions_callback' => '__return_empty_string',
'name' => 'Test Decision',
'description' => 'A single decision',
'priority' => 500,
],
// Decision two
[
'valid_callback' => '__return_true',
'valid_actions_callback' => '__return_empty_array',
'name' => 'Test Decision Two',
'description' => 'A single decision',
'priority' => 1000,
],
] );