- WordPress core y plugins - Tema Twenty Twenty-Four configurado - Plugin allow-unfiltered-html.php simplificado - .gitignore configurado para excluir wp-config.php y uploads 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
302 lines
8.3 KiB
PHP
Executable File
302 lines
8.3 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Thrive Themes - https://thrivethemes.com
|
|
*
|
|
* @package thrive-ultimatum
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit; // No direct access
|
|
}
|
|
|
|
/**
|
|
* Use this file to implement the hooks defined in admin/start.php
|
|
*/
|
|
|
|
/**
|
|
* Add the admin menu link for the dashboard page
|
|
*
|
|
* @param array $menus
|
|
*
|
|
* @return array
|
|
*/
|
|
function tve_ult_admin_menu( $menus = array() ) {
|
|
$menus['tu'] = array(
|
|
'parent_slug' => 'tve_dash_section',
|
|
'page_title' => __( 'Thrive Ultimatum', 'thrive-ult' ),
|
|
'menu_title' => __( 'Thrive Ultimatum', 'thrive-ult' ),
|
|
'capability' => TU_Product::cap(),
|
|
'menu_slug' => 'tve_ult_dashboard',
|
|
'function' => 'tve_ult_admin_dashboard',
|
|
);
|
|
|
|
|
|
return $menus;
|
|
}
|
|
|
|
/**
|
|
* Output Thrive Ultimatum dashboard - the main plugin admin page
|
|
*/
|
|
function tve_ult_admin_dashboard() {
|
|
if ( ! tve_ult_license_activated() ) {
|
|
return tve_ult_license_warning();
|
|
}
|
|
|
|
if ( ! tve_ult_check_tcb_version() ) {
|
|
return tve_ult_tcb_version_warning();
|
|
}
|
|
|
|
include dirname( __FILE__ ) . '/views/dashboard.php';
|
|
}
|
|
|
|
/**
|
|
* Output each TU backbone template
|
|
* called on the 'admin_print_footer_scripts' hook
|
|
*
|
|
*/
|
|
function tve_ult_backbone_templates() {
|
|
|
|
$templates = tve_dash_get_backbone_templates( plugin_dir_path( __FILE__ ) . 'views/template', 'template' );
|
|
|
|
tve_dash_output_backbone_templates( $templates );
|
|
|
|
}
|
|
|
|
/**
|
|
* Enqueue all required scripts and css
|
|
*
|
|
* @param string $hook
|
|
*/
|
|
function tve_ult_admin_enqueue_scripts( $hook ) {
|
|
|
|
$accepted_hooks = apply_filters( 'tve_ult_accepted_admin_pages', array(
|
|
'thrive-dashboard_page_tve_ult_dashboard',
|
|
) );
|
|
|
|
if ( ! in_array( $hook, $accepted_hooks ) ) {
|
|
return;
|
|
}
|
|
|
|
/* first, the license check */
|
|
if ( ! tve_ult_license_activated() ) {
|
|
return;
|
|
}
|
|
|
|
/* second, the minimum required TCB version */
|
|
if ( ! tve_ult_check_tcb_version() ) {
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* enqueue dash scripts
|
|
*/
|
|
tve_dash_enqueue();
|
|
|
|
/**
|
|
* specific admin styles
|
|
*/
|
|
tve_ult_enqueue_style( 'thrive-ult-admin-style', TVE_Ult_Const::plugin_url( '/admin/css/styles.css' ) );
|
|
|
|
/**
|
|
* Enqueue jquery backbone & thickbox
|
|
*/
|
|
wp_enqueue_script( 'jquery' );
|
|
wp_enqueue_script( 'backbone' );
|
|
wp_enqueue_script( 'jquery-ui-sortable', false, array( 'jquery' ) );
|
|
tve_dash_enqueue_script( 'tve-dash-highcharts', TVE_DASH_URL . '/js/util/highcharts/highcharts.js', array(
|
|
'jquery',
|
|
), false, false );
|
|
|
|
wp_enqueue_script( 'jquery-ui-datepicker' );
|
|
|
|
tve_ult_enqueue_script( 'tve-ult-admin-js', TVE_Ult_Const::plugin_url( 'admin/js/dist/admin.min.js' ), array(
|
|
'jquery',
|
|
'backbone',
|
|
), false, true );
|
|
/**
|
|
* jQuery autocomplete - needed for Display Settings search
|
|
*/
|
|
wp_enqueue_script( 'jquery-ui-autocomplete' );
|
|
|
|
/* wystia script for popover videos */
|
|
wp_enqueue_script( 'tu-wistia-popover', '//fast.wistia.com/assets/external/popover-v1.js', array(), '', true );
|
|
|
|
wp_localize_script( 'tve-ult-admin-js', 'ThriveUlt', tve_ult_get_localization() );
|
|
|
|
/**
|
|
* include backbone script templates at the bottom of the page
|
|
*/
|
|
add_action( 'admin_print_footer_scripts', 'tve_ult_backbone_templates' );
|
|
}
|
|
|
|
/**
|
|
* get the localization array for the admin javascript
|
|
*
|
|
* @return array
|
|
*/
|
|
function tve_ult_get_localization() {
|
|
return array(
|
|
'plugin_url' => TVE_Ult_Const::plugin_url(),
|
|
'data' => array(
|
|
'campaigns' => tve_ult_get_campaigns( array(
|
|
'get_logs' => true,
|
|
) ),
|
|
'lead_groups' => function_exists( 'tve_leads_get_groups' ) ? tve_leads_get_groups() : false,
|
|
'shortcodes' => function_exists( 'tve_leads_get_shortcodes' ) ? tve_leads_get_shortcodes() : false,
|
|
'thrive_boxes' => function_exists( 'tve_leads_get_two_step_lightboxes' ) ? tve_leads_get_two_step_lightboxes() : false,
|
|
'tqb_optin' => tve_ult_filter_tqb_posts(),
|
|
'lead_gen_pages' => tvu_get_posts_with_lead_generations_element(),
|
|
'tve_lightboxes' => tvu_get_posts_with_lead_generations_element( 'tcb_lightbox' ),
|
|
'actions' => TU_Event_Action::get_detailed_list(),
|
|
'settings' => tve_ult_get_date_settings(),
|
|
'now' => tve_ult_current_time( 'Y-m-d H:i' ),
|
|
),
|
|
'event_type' => TVE_Ult_Const::event_types(),
|
|
'ajax_actions' => array(
|
|
'admin_controller' => 'tve_ult_admin_ajax_controller',
|
|
),
|
|
'campaigns_types' => TVE_Ult_Const::campaign_types(), //todo: delete this if it is not needed
|
|
't' => require TVE_Ult_Const::plugin_path() . 'admin/i18n.php',
|
|
'design_types' => TVE_Ult_Const::design_types_details(),
|
|
'campaign_templates' => TVE_Ult_Const::campaign_attribute_templates(),
|
|
'admin_nonce' => wp_create_nonce( 'tve_ult_admin_ajax_request' ),
|
|
'wp_timezone' => tve_ult_get_timezone_format(),
|
|
'date_format' => 'dd M yy',
|
|
'date_formats' => TVE_Ult_Const::date_format_details( 'all' ),
|
|
'time_format' => 'HH:mm',//@see $.fn.timepicker.formatTime for more formats
|
|
'wp_timezone_offset' => get_option( 'gmt_offset' ),
|
|
'dash_url' => admin_url( 'admin.php?page=tve_dash_section' ),
|
|
'tvd_webhook_rest_url' => tvd_get_webhook_route_url( '' ),
|
|
'integratedApis' => tve_dash_get_webhook_trigger_integrated_apis(),
|
|
'license' => [
|
|
'exp' => ! TD_TTW_User_Licenses::get_instance()->has_active_license( 'tu' ),
|
|
'gp' => TD_TTW_User_Licenses::get_instance()->is_in_grace_period( 'tu' ),
|
|
'show_lightbox' => TD_TTW_User_Licenses::get_instance()->show_gp_lightbox( 'tu' ),
|
|
'grace_time' => TD_TTW_User_Licenses::get_instance()->get_grace_period_left( 'tu' ),
|
|
'link' => tvd_get_individual_plugin_license_link( 'tu' )
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Handles ajax requests
|
|
*/
|
|
function tve_ult_admin_ajax_controller() {
|
|
require_once plugin_dir_path( __FILE__ ) . 'classes/class-tve-ult-admin-ajaxcontroller.php';
|
|
|
|
$response = Tve_Ult_Admin_AjaxController::instance()->handle();
|
|
|
|
wp_send_json( $response );
|
|
}
|
|
|
|
/**
|
|
* filter implementation for getting the saved templates
|
|
*
|
|
* @param array $template_list
|
|
*
|
|
* @return array
|
|
*/
|
|
function tve_ult_filter_display_settings_templates( $template_list ) {
|
|
global $tve_ult_db;
|
|
$list = $tve_ult_db->get_display_settings_templates();
|
|
if ( empty( $list ) ) {
|
|
return $template_list;
|
|
}
|
|
foreach ( $list as $template ) {
|
|
$template->id = 'TU-' . $template->id;
|
|
$template->tag = 'TU';
|
|
}
|
|
$template_list['Thrive Ultimatum templates'] = $list;
|
|
|
|
return $template_list;
|
|
}
|
|
|
|
/**
|
|
* @param $template
|
|
* @param $template_id
|
|
*
|
|
* @return array|null|object|void
|
|
*/
|
|
function tve_ult_filter_display_settings_get_template( $template, $template_id ) {
|
|
if ( strpos( $template_id, 'TU-' ) === false ) {
|
|
return $template;
|
|
}
|
|
|
|
global $tve_ult_db;
|
|
|
|
return $tve_ult_db->get_display_settings_template( str_replace( 'TU-', '', $template_id ) );
|
|
}
|
|
|
|
/**
|
|
* Sometimes the only way to make the plugin work with other scripts is to denqueue them from some pages
|
|
*
|
|
* @param string $hook
|
|
*/
|
|
function tve_ult_remove_conflicting_scripts( $hook ) {
|
|
|
|
if ( $hook === 'toplevel_page_tve_dash_section' ) {
|
|
wp_dequeue_style( 'ks-giveaways-admin-style' );
|
|
wp_deregister_style( 'ks-giveaways-admin-style' );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Return posts that contain a lead generation element based on post type
|
|
*
|
|
* @param string $post_type
|
|
*
|
|
* @return array
|
|
*/
|
|
function tvu_get_posts_with_lead_generations_element( $post_type = 'page' ) {
|
|
$pages_with_lead_gen = array();
|
|
|
|
foreach (
|
|
get_posts( array(
|
|
'post_type' => $post_type,
|
|
'posts_per_page' => - 1,
|
|
'fields' => 'ids',
|
|
) ) as $page_id
|
|
) {
|
|
$content = tve_get_post_meta( $page_id, 'tve_updated_post' );
|
|
|
|
if ( strpos( do_shortcode( $content ), 'thrv_lead_generation' ) !== false ) {
|
|
$pages_with_lead_gen[ $page_id ] = get_post( $page_id )->post_title;
|
|
}
|
|
}
|
|
|
|
return $pages_with_lead_gen;
|
|
}
|
|
|
|
/**
|
|
* Return a list with the structure of all TQB posts
|
|
*
|
|
*/
|
|
|
|
function tve_ult_filter_tqb_posts() {
|
|
|
|
if ( ! is_plugin_active( "thrive-quiz-builder/thrive-quiz-builder.php" ) ) {
|
|
return array();
|
|
}
|
|
|
|
$posts = get_posts( array( 'post_type' => 'tqb_quiz', 'posts_per_page' => '-1' ) );
|
|
|
|
$post_data = array_map( function ( $post ) {
|
|
$data = get_post_meta( $post->ID, 'tqb_quiz_structure', true );
|
|
if ( empty( $data ) ) {
|
|
$data = array();
|
|
}
|
|
$data['quiz_title'] = $post->post_title;
|
|
|
|
return $data;
|
|
}, $posts );
|
|
|
|
$result = array();
|
|
foreach ( $post_data as $post ) {
|
|
if ( ! empty( $post['optin'] ) ) {
|
|
$result[] = $post;
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|