, Wow-Company
* @copyright 2024 Dmytro Lobov
* @license GPL-2.0+
*/
namespace FloatMenuLite\Admin;
defined( 'ABSPATH' ) || exit;
use FloatMenuLite\WOWP_Plugin;
class Settings {
public static function init(): void {
$pages = DashboardHelper::get_files( 'settings' );
$options = self::get_options();
$checked = $options['setting_tab'] ?? 1;
echo '
';
foreach ( $pages as $key => $page ) {
$file = DashboardHelper::get_folder_path( 'settings' ) . '/' . $key . '.' . $page['file'] . '.php';
echo '
';
if ( file_exists( $file ) ) {
echo '
';
require_once $file;
echo '
';
}
}
echo '
';
}
public static function save_item() {
if ( empty( $_POST['submit_settings'] ) ) {
return false;
}
$id = isset( $_POST['tool_id'] ) ? absint( wp_unslash( $_POST['tool_id'] ) ) : 0;
$settings = apply_filters( WOWP_Plugin::PREFIX . '_save_settings', $_POST );
$removes = [ 'wpie_buttons_settings', '_wp_http_referer', 'submit_settings' ];
$keys_flipped = array_flip( $removes );
$settings = array_diff_key( $settings, $keys_flipped );
$data = [
'title' => isset( $_POST['title'] ) ? sanitize_text_field( wp_unslash( $_POST['title'] ) ) : '',
'status' => isset( $_POST['status'] ) ? 1 : 0,
'mode' => isset( $_POST['mode'] ) ? 1 : 0,
'tag' => isset( $_POST['tag'] ) ? sanitize_text_field( wp_unslash( $_POST['tag'] ) ) : '',
'param' => maybe_serialize( $settings ),
];
$formats = [
'%s',
'%d',
'%d',
'%s',
'%s'
];
if ( empty( $id ) ) {
$id_item = DBManager::insert( $data, $formats );
} else {
$where = [
'id' => absint( $id ),
];
DBManager::update( $data, $where, $formats );
$id_item = $id;
}
wp_safe_redirect( Link::save_item( $id_item ) );
exit;
}
public static function deactivate_item( $id = 0 ): void {
$id = isset( $_GET['id'] ) ? absint( $_GET['id'] ) : $id;
if ( ! empty( $id ) ) {
DBManager::update( [ 'status' => '1' ], [ 'ID' => $id ], [ '%d' ] );
}
}
public static function activate_item( $id = 0 ): void {
$id = isset( $_GET['id'] ) ? absint( $_GET['id'] ) : $id;
if ( ! empty( $id ) ) {
DBManager::update( [ 'status' => '' ], [ 'ID' => $id ], [ '%d' ] );
}
}
public static function deactivate_mode( $id = 0 ): void {
$id = isset( $_GET['id'] ) ? absint( $_GET['id'] ) : $id;
if ( ! empty( $id ) ) {
DBManager::update( [ 'mode' => '' ], [ 'ID' => $id ], [ '%d' ] );
}
}
public static function activate_mode( $id = 0 ): void {
$id = isset( $_GET['id'] ) ? absint( $_GET['id'] ) : $id;
if ( ! empty( $id ) ) {
DBManager::update( [ 'mode' => '1' ], [ 'ID' => $id ], [ '%d' ] );
}
}
public static function get_options() {
$id = isset( $_REQUEST['id'] ) ? absint( $_REQUEST['id'] ) : 0;
if ( empty( $id ) ) {
return false;
}
$action = isset( $_REQUEST['action'] ) ? sanitize_text_field( wp_unslash($_REQUEST['action'] ) ) : 'update';
$result = DBManager::get_data_by_id( $id );
if ( empty( $result ) ) {
return false;
}
$param = ( ! empty( $result->param ) ) ? maybe_unserialize( $result->param ) : [];
$param['tag'] = $result->tag;
$param['status'] = $result->status;
$param['mode'] = $result->mode;
if ( $action === 'duplicate' ) {
$param['id'] = '';
$param['title'] = '';
} else {
$param['id'] = $id;
$param['title'] = $result->title;
}
return $param;
}
public static function option( $name, $option ) {
return $options[ $name ] ?? '';
}
}