web/wp-content/plugins/acf-extended/includes/module-db.php (77 lines of code) (raw):
<?php
if(!defined('ABSPATH')){
exit;
}
if(!class_exists('acfe_module_db')):
class acfe_module_db{
/**
* construct
*/
function __construct(){
add_action('acfe/module/updated_item', array($this, 'updated_item'), 10, 2);
add_action('acfe/module/trashed_item', array($this, 'deleted_item'), 10, 2);
add_action('acfe/module/deleted_item', array($this, 'deleted_item'), 10, 2);
add_action('acfe/module/include_items', array($this, 'include_items'));
}
/**
* updated_item
*
* acfe/module/updated_item
*
* @param $item
* @param $module
*/
function updated_item($item, $module){
if(!$this->has_settings($module)){
return;
}
// cleanup keys
$export = $module->prepare_item_for_export($item);
// on update
if($item['ID']){
// get raw item from db
$raw_item = $module->get_item($item['ID']);
// delete old settings if name changed
if($raw_item['name'] && $raw_item['name'] !== $item['name'] && !acf_is_filter_enabled('acfe/module/update_unique_name')){
$this->delete_settings($module, $raw_item['name']);
}
}
// settings
$settings = $this->get_settings($module);
$settings[ $item['name'] ] = $export;
// update setting
ksort($settings);
$this->update_settings($module, $settings);
}
/**
* deleted_item
*
* acfe/module/deleted_item
*
* @param $item
* @param $module
*/
function deleted_item($item, $module){
if(!$this->has_settings($module)){
return;
}
// WP appends '__trashed' to end of 'name' (post_name).
$name = str_replace('__trashed', '', $item['name']);
// delete settings
$this->delete_settings($module, $name);
}
/**
* include_items
*
* acfe/module/include_items
*
* @param $module
*/
function include_items($module){
if(!$this->has_settings($module)){
return;
}
// get db settings
$settings = acf_get_array($this->get_settings($module));
// loop
foreach($settings as $key => $item){
// set local
$item['local'] = 'db';
$item['local_file'] = "{$module->settings}.{$key}";
// add local item
$module->add_local_item($item);
}
}
/**
* has_settings
*
* @param $module
*
* @return bool
*/
function has_settings($module){
return !empty($module->settings);
}
/**
* get_settings
*
* @param $module
* @param $selector
* @param $default
*
* @return mixed
*/
function get_settings($module, $selector = null, $default = null){
if($selector === null){
$selector = $module->settings;
}else{
$selector = "{$module->settings}.{$selector}";
}
return acfe_get_settings($selector, $default);
}
/**
* update_settings
*
* @param $module
* @param $selector
* @param $value
*/
function update_settings($module, $selector = null, $value = null){
if($value === null){
$value = $selector;
$selector = $module->settings;
}else{
$selector = "{$module->settings}.{$selector}";
}
acfe_update_settings($selector, $value);
}
/**
* delete_settings
*
* @param $module
* @param $selector
*
* @return mixed
*/
function delete_settings($module, $selector = null){
if($selector === null){
$selector = $module->settings;
}else{
$selector = "{$module->settings}.{$selector}";
}
return acfe_delete_settings($selector);
}
}
acf_new_instance('acfe_module_db');
endif;