| Server IP : 27.254.86.99 / Your IP : 216.73.216.234 Web Server : LiteSpeed System : Linux wp1.hostneverdie.com 4.18.0-553.46.1.lve.el8.x86_64 #1 SMP Wed Apr 2 11:16:45 UTC 2025 x86_64 User : qtccargo ( 1078) PHP Version : 8.2.29 Disable Function : apache_child_terminate, apache_setenv, define_syslog_variables, escapeshellarg, escapeshellcmd,exec, fp, fput, highlight_file, ini_alter, ini_restore, inject_code, passthru,phpAds_remoteInfo, phpAds_XmlRpc,phpAds_xmlrpcDecode, phpAds_xmlrpcEncode, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid,posix_setuid, posix_setuid, posix_uname,proc_open,proc_close, proc_get_status, proc_nice, proc_terminate, shell_exec, syslog, system, xmlrpc_entity_decode, show_source,pcntl_exec,virtual,suexec,dbmopen,dl,disk_free_space,diskfreespace,leak MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/qtccargo/public_html/wp-content/plugins/kirki/includes/ |
Upload File : |
<?php
/**
* All Ajax/API calls will goes here
*
* @package kirki
*/
namespace Kirki;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
use Kirki\Ajax\Apps;
use Kirki\Ajax\Collaboration\Collaboration;
use Kirki\Ajax\DynamicContent;
use Kirki\Ajax\Media;
use Kirki\Ajax\Page;
use Kirki\Ajax\PageSettings;
use Kirki\Ajax\Symbol;
use Kirki\Ajax\UserData;
use Kirki\Ajax\Walkthrough;
use Kirki\Ajax\WordpressData;
use Kirki\Ajax\Collection;
use Kirki\Ajax\ExportImport;
use Kirki\Ajax\Comments;
use Kirki\Ajax\WpAdmin;
use Kirki\Ajax\Form;
use Kirki\Ajax\RBAC;
use Kirki\Ajax\Taxonomy;
use Kirki\Ajax\Users;
use Kirki\Ajax\TemplateExportImport;
/**
* Kirki Ajax handler
*/
class Ajax {
/**
* Initialize the class
*
* @return void
*/
public function __construct() {
/**
* Manage Post API call's from Builder
*/
add_action( 'wp_ajax_kirki_get_apis', array( $this, 'kirki_get_apis' ) );
add_action( 'wp_ajax_kirki_post_apis', array( $this, 'kirki_post_apis' ) );
add_action( 'wp_ajax_nopriv_kirki_post_apis_nopriv', array( $this, 'kirki_post_apis_nopriv' ) );
add_action( 'wp_ajax_nopriv_kirki_get_apis', array( $this, 'kirki_get_apis' ) );
/**
* Manage Post API call's from WP Admin
*/
add_action( 'wp_ajax_kirki_wp_admin_get_apis', array( $this, 'kirki_wp_admin_get_apis' ) );
add_action( 'wp_ajax_kirki_wp_admin_post_apis', array( $this, 'kirki_wp_admin_post_apis' ) );
add_action( 'wp_ajax_nopriv_kirki_wp_admin_get_apis', array( $this, 'kirki_wp_admin_unauthorized' ) );
add_action( 'wp_ajax_nopriv_kirki_wp_admin_post_apis', array( $this, 'kirki_wp_admin_unauthorized' ) );
/**
* Manage Post API call's from Frontend (logged in not required)
*/
}
/**
* Initialize post api
*
* @return void
*/
public function kirki_post_apis_nopriv() { //phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$endpoint = HelperFunctions::sanitize_text( isset( $_POST['endpoint'] ) ? $_POST['endpoint'] : null );
if ( HelperFunctions::is_api_call_from_editor_preview() && ! HelperFunctions::is_api_header_post_editor_preview_token_valid() ) {
wp_send_json_error( 'Not authorized' );
}
/**
* Single SYMBOL API
*/
if ( $endpoint === 'get-single-symbol' ) {
Symbol::fetch_symbol();
die();
}
}
/**
* Initialize post api
*
* @return void
*/
public function kirki_post_apis() {
HelperFunctions::verify_nonce( 'wp_rest' );
if ( ! is_admin() ) {
wp_send_json_error( 'Not authorized' );
}
/**
* PAGE APIS
*/
//phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$endpoint = HelperFunctions::sanitize_text( isset( $_POST['endpoint'] ) ? $_POST['endpoint'] : null );
if ( HelperFunctions::user_has_post_edit_access() ) {
if ( 'save-page-data' === $endpoint ) {
Page::save_page_data();
}
if ( $endpoint === 'add-new-page' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Page::add_new_page();
}
if ( $endpoint === 'update-page-data' ) {
Page::update_page_data();
}
if ( $endpoint === 'toggle-disabled-page-symbols' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Page::toggle_disabled_page_symbols();
}
if ( $endpoint === 'remove-unused-style-block-from-db' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Page::remove_unused_style_block_from_db();
}
if ( $endpoint === 'duplicate-page' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Page::duplicate_page();
}
if ( $endpoint === 'delete-page' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Page::delete_page();
}
if ( $endpoint === 'back-to-kirki-editor' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Page::back_to_kirki_editor();
}
if ( $endpoint === 'back-to-wordpress-editor' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Page::back_to_wordpress_editor();
}
/**
* PAGE SETTINGS
*/
if ( 'save-page-settings-data' === $endpoint && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
PageSettings::save_page_setting_data();
}
/**
* PAGE SETTINGS
*/
if ( 'save-custom-code-data' === $endpoint && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
PageSettings::save_custom_code();
}
/**
* USER APIS
*/
if ( $endpoint === 'save-user-controller' ) {
UserData::save_user_controller();
}
if ( $endpoint === 'save-user-saved-data' ) {
UserData::save_user_saved_data();
}
if ( $endpoint === 'save-user-custom-fonts-data' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
UserData::save_user_custom_fonts_data();
}
if ( $endpoint === 'download-google-font-offline' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
UserData::make_google_font_offline();
}
if ( $endpoint === 'remove-google-font-offline' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
UserData::remove_google_font_offline();
}
/**
* SYMBOL SAVE API
*/
if ( $endpoint === 'save-user-saved-symbol-data' ) {
Symbol::save();
}
/**
* SYMBOL UPDATE API
*/
if ( $endpoint === 'update-user-saved-symbol-data' ) {
Symbol::update();
}
/**
* SYMBOL DELETE API
*/
if ( $endpoint === 'delete-user-saved-symbol-data' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Symbol::delete();
}
/**
* MEDIA APIS
*/
if ( $endpoint === 'upload-media' ) {
Media::upload_media();
}
if ( $endpoint === 'upload-font-zip' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Media::upload_font_zip();
}
if ( $endpoint === 'remove-custom-font-folder-from-server' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Media::remove_custom_font_folder_from_server();
}
if ( $endpoint === 'upload-base64-img' ) {
Media::upload_base64_img();
}
/**
* WALKTHROUGH
*/
if ( 'set-walkthrough-shown-state' === $endpoint ) {
Walkthrough::set_walkthrough_state();
}
/**
* Collaboration data save
*/
if ( 'save-collaboration-actions' === $endpoint ) {
Collaboration::save_actions();
}
/**
* Collaboration data save
*/
if ( 'install-app' === $endpoint && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Apps::install_app();
}
if ( 'save-app-settings-using-slug' === $endpoint && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Apps::save_app_settings_using_slug();
}
if ( 'delete-app-using-slug' === $endpoint && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Apps::delete_app_using_slug();
}
if ( 'update-app' === $endpoint && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Apps::update_app();
}
/**
* Export page data
*/
if ( 'import-page-data' === $endpoint && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
ExportImport::import();
}
/**
* Export template data
*/
if ( 'import-template-data' === $endpoint && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
ExportImport::template_import();
}
/**
* Export page dat
*/
if ( 'export-page-data' === $endpoint ) {
ExportImport::export();
}
if ( $endpoint === 'import-template-using-url' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
TemplateExportImport::import_using_url();
}
if ( $endpoint === 'process-imported-template' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
TemplateExportImport::processImport();
}
if ( $endpoint === 'check-existing-template-data' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
TemplateExportImport::check_existing_template_data();
}
if ( $endpoint === 'rename-staging-version' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Staging::rename_stage_version();
}
if ( $endpoint === 'delete-staging-version' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Staging::delete_stage_version();
}
if ( $endpoint === 'publish-staging-version' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Staging::publish_stage_version();
}
if ( $endpoint === 'restore-staging-version' && HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
Staging::restore_stage_version();
}
}
if ( $endpoint === 'get-single-symbol' ) {
Symbol::fetch_symbol();
}
}
/**
* Initialize the get apis
*
* @return void
*/
public function kirki_get_apis() {
if ( HelperFunctions::is_api_call_from_editor_preview() && ! HelperFunctions::is_api_header_post_editor_preview_token_valid() ) {
wp_send_json_error( 'Not authorized' );
}
//phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$endpoint = HelperFunctions::sanitize_text( isset( $_GET['endpoint'] ) ? $_GET['endpoint'] : null );
if ( in_array( $endpoint, array( 'collect-collaboration-actions', 'delete-collaboration-connection' ), true ) ) {
if ( ! $this->user_can_access_collaboration() ) {
wp_send_json_error( 'Not authorized' );
}
} else {
// TODO: Need to verify for collaboration.
HelperFunctions::verify_nonce( 'wp_rest' );
}
if ( ! is_admin() ) {
wp_send_json_error( 'Not authorized' );
}
/**
* PAGE APIS
*/
if ( $endpoint === 'get-page-data' ) {
Page::get_page_blocks_and_styles();
}
if ( $endpoint === 'get-wp-single-post' ) {
$post_id = (int) HelperFunctions::sanitize_text( isset( $_GET['post_id'] ) ? $_GET['post_id'] : null );
$post = get_post( $post_id );
if ( ! $post ) {
wp_send_json_error( 'Post not found' );
}
wp_send_json_success( $post );
}
if ( $endpoint === 'get-pages-list' ) {
Page::fetch_list_api();
}
if ( $endpoint === 'get-pages-for-pages-panel' ) {
Page::get_pages_for_pages_panel();
}
if ( $endpoint === 'get-data-list-for-template-edit-search-flyout' ) {
Page::get_data_list_for_template_edit_search_flyout();
}
if ( $endpoint === 'get-posts-list' ) {
Page::fetch_post_list_data_post_type_wise();
}
if ( $endpoint === 'get-current-page-data' ) {
Page::get_current_page_data();
}
if ( $endpoint === 'get-unused-class-info-from-db' ) {
Page::get_unused_class_info_from_db();
}
if ( $endpoint === 'validate-wp-post-slug' ) {
Page::validate_wp_post_slug();
}
if ( $endpoint === 'get-page-html' ) {
Page::get_page_html();
}
/**
* USER DATA APIS
*/
if ( $endpoint === 'get-user-controller' ) {
UserData::get_user_controller();
}
if ( $endpoint === 'is-user-logged-in' ) {
UserData::check_user_login();
}
/**
* USER DATA APIS
*/
if ( $endpoint === 'get-user-saved-data' ) {
UserData::get_user_saved_data();
}
/**
* USER DATA APIS
*/
if ( $endpoint === 'get-app-list' ) {
Apps::get_app_list();
}
/**
* USER DATA APIS
*/
if ( $endpoint === 'get-installed-app-list' ) {
Apps::get_installed_apps_list();
}
/**
* USER DATA APIS
*/
if ( $endpoint === 'get-app-settings-using-slug' ) {
Apps::get_app_settings_using_slug();
}
if ( $endpoint === 'get-user-custom-fonts-data' ) {
UserData::get_user_custom_fonts_data();
}
/**
* GET SYMBOL LIST API
*/
if ( $endpoint === 'get-symbol-list' ) {
Symbol::fetch_list( false, true );
}
if ($endpoint === 'get-page-custom-section') {
$type = HelperFunctions::sanitize_text(isset($_GET['type']) ? $_GET['type'] : '');
wp_send_json(HelperFunctions::get_page_custom_section($type, true));
}
/**
* GET Single prebuilt html API
*/
if ( $endpoint === 'get-pre-built-html' ) {
Symbol::get_pre_built_html_using_url();
}
/**
* GET DYNAMIC CONTENT API
*/
if ( $endpoint === 'get-dynamic-content' ) {
DynamicContent::get_dynamic_element_data();
}
if ( $endpoint === 'get-post-terms' ) {
Taxonomy::get_post_terms();
}
if ( $endpoint === 'get-terms' ) {
Taxonomy::get_terms();
}
if ( $endpoint === 'get-post-type-taxonomies' ) {
Taxonomy::get_post_type_taxonomies();
}
if ( $endpoint === 'get-all-terms-by-post-type' ) {
Taxonomy::get_all_terms_by_post_type();
}
if ( $endpoint === 'get_visibility_condition_fields' ) {
DynamicContent::get_visibility_condition_fields();
}
if ( $endpoint === 'get_dynamic_content_fields' ) {
DynamicContent::get_dynamic_content_fields();
}
/**
* GET WordPress MENUS API
*/
if ( $endpoint === 'get-wp-menus' ) {
WordpressData::get_wordpress_menus_data();
}
/**
* GET WordPress POST TYPES API
*/
if ( $endpoint === 'get-wp-post-types' ) {
WordpressData::get_wordpress_post_types_data();
}
/**
* GET WordPress POST TYPES API
*/
if ( $endpoint === 'get-wp-comment-types' ) {
WordpressData::get_wordpress_comment_types_data();
}
/**
* GET WordPress SINGLE MENU DATA API
*/
if ( $endpoint === 'get-wp-sigle-menu' ) {
//phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$term_id = HelperFunctions::sanitize_text( isset( $_GET['term_id'] ) ? $_GET['term_id'] : null );
WordpressData::get_wordpress_single_menu_data( $term_id );
}
/**
* PAGE SETTINGS
*/
if ( $endpoint === 'get-page-settings-data' ) {
PageSettings::get_page_settings_data();
}
if ( $endpoint === 'get-custom-code' ) {
PageSettings::get_custom_code();
}
/**
* WALKTHROUGH
*/
if ( 'get-walkthrough-shown-state' === $endpoint ) {
Walkthrough::get_walkthrough_state();
}
/**
* COLLECTION
*/
if ( 'get-collection' === $endpoint ) {
Collection::get_collection();
}
if ( 'get-external-collection-options' === $endpoint ) {
Collection::get_external_collection_options();
}
if ( 'get-external-collection-item-type' === $endpoint ) {
Collection::get_external_collection_item_type();
}
/**
* GET USERS
*/
if ( 'get-users-of-collection' === $endpoint ) {
Users::get_users_of_collection();
}
/**
* COMMENTS
*/
if ( 'get-comments' === $endpoint ) {
Comments::get_comments();
}
/**
* AUTHOR LIST
*/
if ( 'get-authors' === $endpoint ) {
WordpressData::get_author_list();
}
/**
* ROLE LIST
*/
if ( 'get-roles' === $endpoint ) {
WordpressData::get_role_list();
}
/**
* USER LIST
*/
if (
'get-users' === $endpoint
) {
WordpressData::get_user_list();
}
/**
* CATEGORY LIST
*/
if ( 'get-categories' === $endpoint ) {
WordpressData::get_category_list();
}
/**
* GET ACCESS LEVEL
*/
if ( 'editor-access-level' === $endpoint ) {
RBAC::get_editor_access_level();
}
if ( $endpoint === 'get-common-data' ) {
WpAdmin::get_common_data();
}
/**
* Collaboration data get
*/
if ( 'collect-collaboration-actions' === $endpoint ) {
Collaboration::send_actions();
}
/**
* Collaboration data get
*/
if ( 'delete-collaboration-connection' === $endpoint ) {
$session_id = HelperFunctions::sanitize_text( $_GET['session_id'] );
Collaboration::delete_connection( $session_id );
}
if ( $endpoint === 'get-connected-collaboration-users-list' ) {
$post_id = HelperFunctions::sanitize_text( $_GET['post_id'] );
$res = Collaboration::get_connected_collaboration_users_list( $post_id );
wp_send_json( $res );
}
/**
* Staging GET APIs
*/
if ( 'get-all-staged-versions' === $endpoint ) {
$post_id = (int) HelperFunctions::sanitize_text( isset( $_GET['post_id'] ) ? $_GET['post_id'] : null );
Staging::get_all_staged_versions( $post_id, false, true );
}
}
/**
* Check if the current request can access collaboration endpoints.
*
* @return bool
*/
private function user_can_access_collaboration() {
return is_user_logged_in() && HelperFunctions::has_access(
array(
KIRKI_ACCESS_LEVELS['FULL_ACCESS'],
KIRKI_ACCESS_LEVELS['CONTENT_ACCESS'],
KIRKI_ACCESS_LEVELS['VIEW_ACCESS'],
)
);
}
/**
* Initialize the admin post apis
*
* @return void
*/
public function kirki_wp_admin_post_apis() {
if ( ! HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
wp_send_json_error( 'Not authorized' );
}
//phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$endpoint = HelperFunctions::sanitize_text( isset( $_POST['endpoint'] ) ? $_POST['endpoint'] : null );
if ( $endpoint === 'save-common-data' ) {
WpAdmin::save_common_data();
}
if ( $endpoint === 'update-license-validity' ) {
WpAdmin::update_license_validity();
}
if ( $endpoint === 'update-access-level' ) {
RBAC::update_access_level();
}
if ( $endpoint === 'delete-form-row' ) {
Form::delete_form_row();
}
if ( $endpoint === 'delete-form' ) {
Form::delete_form();
}
if ( $endpoint === 'update-form-cell' ) {
Form::update_form_row();
}
/**
* Export Template
*/
if ( $endpoint === 'import-template' ) {
TemplateExportImport::import();
}
if ( $endpoint === 'process-imported-template' ) {
TemplateExportImport::processImport();
}
if ( $endpoint === 'process-export-template' ) {
TemplateExportImport::processExport();
}
if ( $endpoint === 'save-editor-read-only-access-data' ) {
Page::save_editor_read_only_access_data();
}
/**
* Export Template
*/
if ( $endpoint === 'export-template' ) {
TemplateExportImport::export();
}
}
/**
* Return an explicit unauthorized response for unauthenticated admin AJAX requests.
*
* @return void
*/
public function kirki_wp_admin_unauthorized() {
wp_send_json_error( 'Not authorized', 401 );
}
/**
* Initialize the admin get apis
*
* @return void
*/
public function kirki_wp_admin_get_apis() {
if ( ! is_admin() ) {
wp_send_json_error( 'Not authorized' );
}
//phpcs:ignore WordPress.Security.NonceVerification.Missing,WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.MissingUnslash,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
$endpoint = HelperFunctions::sanitize_text( isset( $_GET['endpoint'] ) ? $_GET['endpoint'] : null );
if ( $endpoint === 'get-common-data' ) {
WpAdmin::get_common_data();
}
// From manipulation from admin dashboard.
if ( $endpoint === 'get-forms' ) {
Form::get_forms();
}
if ( $endpoint === 'get-form-data' ) {
Form::get_form_data();
}
if ( $endpoint === 'get-wp-admin-page-data' ) {
Page::get_pages_for_pages_panel();
}
if ( $endpoint === 'get-members-based-on-role' ) {
RBAC::members_based_on_role();
}
if ( $endpoint === 'download-form-data' ) {
if ( ! HelperFunctions::has_access( KIRKI_ACCESS_LEVELS['FULL_ACCESS'] ) ) {
wp_send_json_error( 'Not authorized' );
}
Form::download_form_data();
}
// From manipulation from admin dashboard.
if ( $endpoint === 'get-editor-read-only-access-data' ) {
Page::get_editor_read_only_access_data();
}
}
}