Helix_Website/wp-content/plugins/wp-event-manager/admin/wp-event-manager-admin.php

381 lines
13 KiB
PHP

<?php
/*
* Main Admin functions class which responsible for the entire amdin functionality and scripts loaded and files.
*
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
/**
* WP_Event_Manager_Admin class.
*/
class WP_Event_Manager_Admin {
/**
* __construct function.
*
* @access public
* @return void
*/
public function __construct() {
include_once( 'wp-event-manager-cpt.php' );
include_once( 'wp-event-manager-settings.php' );
include_once( 'wp-event-manager-writepanels.php' );
include_once( 'wp-event-manager-setup.php' );
include_once( 'wp-event-manager-field-editor.php' );
$this->settings_page = new WP_Event_Manager_Settings();
add_action( 'admin_menu', array( $this, 'admin_menu' ), 12 );
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
//add_action( 'admin_notices', array( $this,'rating_showcase_admin_notice') );
add_action( 'admin_init', array( $this, 'admin_init' ) );
add_action( 'current_screen', array( $this, 'conditional_includes' ) );
if ( version_compare( get_option( 'wp_event_manager_db_version', 0 ), '3.1.13', '<' ) )
{
add_action( 'admin_notices', array( $this, 'upgrade_database_notice' ) );
}
// Ajax
add_action( 'wp_ajax_wpem_upgrade_database', array( $this, 'wpem_upgrade_database' ) );
//add_action( 'wp_ajax_nopriv_wpem_upgrade_database', array( $this, 'wpem_upgrade_database' ) );
}
/**
* upgrade_database_notice function.
*
* @access public
* @return void
*/
public function upgrade_database_notice() {
if ( version_compare( get_option( 'wp_event_manager_db_version', 0 ), '3.1.13', '<' ) )
{
?>
<div class="notice notice-warning wpem-upgrade-database-notice is-dismissible">
<p><?php echo sprintf( __( 'Upgrade your database! <a class="" href="%s">Please update now</a>.', 'wp-event-manager-migration' ), admin_url( 'edit.php?post_type=event_listing&page=event-manager-upgrade-database' ) ); ?></p>
</div>
<?php
}
}
/**
* admin_enqueue_scripts function.
*
* @access public
* @return void
*/
public function admin_enqueue_scripts() {
global $wp_scripts;
$screen = get_current_screen();
//main frontend style
wp_enqueue_style( 'event_manager_admin_css', EVENT_MANAGER_PLUGIN_URL . '/assets/css/backend.min.css' );
if ( in_array( $screen->id, apply_filters( 'event_manager_admin_screen_ids', array( 'edit-event_listing', 'event_listing', 'event_listing_page_event-manager-settings', 'event_listing_page_event-manager-addons', 'event_listing_page_event-manager-upgrade-database' ) ) ) )
{
$jquery_version = isset( $wp_scripts->registered['jquery-ui-core']->ver ) ? $wp_scripts->registered['jquery-ui-core']->ver : '1.9.2';
wp_enqueue_style( 'jquery-ui-style', EVENT_MANAGER_PLUGIN_URL. '/assets/js/jquery-ui/jquery-ui.min.css', array(), $jquery_version );
wp_register_script( 'jquery-tiptip', EVENT_MANAGER_PLUGIN_URL. '/assets/js/jquery-tiptip/jquery.tipTip.min.js', array( 'jquery' ), EVENT_MANAGER_VERSION, true );
wp_register_script( 'wp-event-manager-admin-js', EVENT_MANAGER_PLUGIN_URL. '/assets/js/admin.min.js', array( 'jquery', 'jquery-tiptip','jquery-ui-core','jquery-ui-datepicker'), EVENT_MANAGER_VERSION, true );
wp_localize_script( 'wp-event-manager-admin-js', 'wp_event_manager_admin_js', array(
'ajax_url' => admin_url( 'admin-ajax.php' ),
'upgrade_database_before_send_text' => __( 'Your database upgrading now', 'wp-event-manager' ),
'upgrade_database_success_send_text' => __( 'Your database has been upgraded successfully! In order to take advantage, save the permalink and proceed.', 'wp-event-manager'),
'i18n_datepicker_format' => WP_Event_Manager_Date_Time::get_datepicker_format(),
'i18n_timepicker_format' => WP_Event_Manager_Date_Time::get_timepicker_format(),
'i18n_timepicker_step' => WP_Event_Manager_Date_Time::get_timepicker_step(),
'show_past_date' => apply_filters( 'event_manager_show_past_date', false ),
) );
wp_enqueue_script('wp-event-manager-admin-js');
}
wp_register_script( 'wp-event-manager-admin-settings', EVENT_MANAGER_PLUGIN_URL. '/assets/js/admin-settings.min.js', array( 'jquery' ), EVENT_MANAGER_VERSION, true );
wp_register_script( 'chosen', EVENT_MANAGER_PLUGIN_URL . '/assets/js/jquery-chosen/chosen.jquery.min.js', array( 'jquery' ), '1.1.0', true );
wp_enqueue_script('chosen');
wp_enqueue_style( 'chosen', EVENT_MANAGER_PLUGIN_URL . '/assets/css/chosen.css' );
wp_enqueue_style( 'wp-event-manager-jquery-timepicker-css', EVENT_MANAGER_PLUGIN_URL . '/assets/js/jquery-timepicker/jquery.timepicker.min.css');
wp_register_script( 'wp-event-manager-jquery-timepicker', EVENT_MANAGER_PLUGIN_URL. '/assets/js/jquery-timepicker/jquery.timepicker.min.js', array( 'jquery' ,'jquery-ui-core'), EVENT_MANAGER_VERSION, true );
wp_enqueue_script( 'wp-event-manager-jquery-timepicker');
}
/**
* admin_menu function.
*
* @access public
* @return void
*/
public function admin_menu() {
global $wpdb;
add_submenu_page( 'edit.php?post_type=event_listing', __( 'Settings', 'wp-event-manager' ), __( 'Settings', 'wp-event-manager' ), 'manage_options', 'event-manager-settings', array( $this->settings_page, 'output' ) );
if ( version_compare( get_option( 'wp_event_manager_db_version', 0 ), '3.1.13', '<' ) )
{
add_submenu_page( 'edit.php?post_type=event_listing', __( 'Upgrade Database', 'wp-event-manager' ), __( 'Upgrade Database', 'wp-event-manager' ) , 'manage_options', 'event-manager-upgrade-database', array( $this, 'upgrade_database' ) );
}
if ( apply_filters( 'event_manager_show_addons_page', true ) )
{
add_submenu_page( 'edit.php?post_type=event_listing', __( 'WP Event Manager Add-ons', 'wp-event-manager' ), __( 'Add-ons', 'wp-event-manager' ) , 'manage_options', 'event-manager-addons', array( $this, 'addons_page' ) );
}
}
/**
* Upgrade database page
*/
public function upgrade_database()
{
?>
<div class="wrap wp_event_manager wp_event_manager_upgrade_database">
<table class="widefat">
<thead>
<tr>
<th><h3><?php _e( 'Upgrade yor database for new version of WP Event Manager', 'wp-event-manager' ); ?></h3></th>
</tr>
</thead>
<tbody>
<td>
<p><?php _e('3.1.15 has released!
We are constantly working to improve your event management experience, We have a new release focusing on a handle of fixes and updates & here is a summary of what has been improved...
Manage your Organizers directly at the frontend and backend.
Migration of Old Organizer data would be transferred to the list Automatically.
A prior Backup does no harm before updating the plugin!','wp-event-manager');?>.</p>
</td>
</tbody>
<tfoot>
<tr>
<td>
<a class="button-primary" id="wp_event_manager_upgrade_database" href="javascript:void(0)"><?php _e( 'Upgrade', 'wp-event-manager' ); ?></a>
</td>
</tr>
</tfoot>
</table>
</div>
<?php
}
public function wpem_upgrade_database() {
$GLOBALS['event_manager']->forms->get_form( 'submit-organizer', array() );
$form_submit_organizer_instance = call_user_func( array( 'WP_Event_Manager_Form_Submit_Organizer', 'instance' ) );
$organizer_fields = $form_submit_organizer_instance->merge_with_custom_fields('backend');
if( !empty($organizer_fields) && isset($organizer_fields['organizer']) && !empty($organizer_fields['organizer']) )
{
$args = [
'post_type' => 'event_listing',
'post_status' => ['publish'],
'posts_per_page' => '-1',
];
$events = new WP_Query($args);
if( $events->found_posts > 0 )
{
foreach ($events->posts as $event)
{
if( isset($event->_organizer_email) && !empty($event->_organizer_email) )
{
$organizer_data = [];
foreach ($organizer_fields['organizer'] as $key => $field) {
$name = '_'.$key;
if($key == 'organizer_logo')
{
$organizer_data[$key] = $event->_thumbnail_id;
}
else
{
$organizer_data[$key] = $event->$name;
}
}
$this->migrate_organizer_from_event_meta($event, $organizer_data);
$this->banner_image_set_thumnail($event);
}
}
}
update_option( 'wp_event_manager_db_version', '3.1.13' );
}
wp_send_json( __( 'Your database upgraded successfully!', 'wp-event-manager' ) );
wp_die();
}
/**
* migrate_organizer_from_event_meta
*/
public function migrate_organizer_from_event_meta($event, $organizer_data) {
$organizer_id = check_organizer_exist($organizer_data['organizer_email']);
if( !$organizer_id )
{
$args = apply_filters('wpem_create_event_organizer_data',array(
'post_title' => wp_strip_all_tags( $organizer_data['organizer_name'] ),
'post_content' => $organizer_data['organizer_description'],
'post_status' => 'publish',
'post_type' => 'event_organizer',
'comment_status' => 'closed',
'post_author' => $event->post_author,
) );
$organizer_id = wp_insert_post( $args );
}
foreach ($organizer_data as $name => $value)
{
if($name == 'organizer_logo')
{
update_post_meta( $organizer_id, '_thumbnail_id', sanitize_text_field($value) );
}
else
{
update_post_meta( $organizer_id, '_'.$name, sanitize_text_field($value) );
delete_post_meta( $event->ID, '_'.$name );
}
}
update_post_meta( $event->ID, '_event_organizer_ids', [$organizer_id] );
}
/**
* banner_image_set_thumnail
*/
public function banner_image_set_thumnail($event) {
$banner = get_event_banner($event);
if(is_array($banner))
{
$image_url = $banner[0];
}
else
{
$image_url = $banner;
}
if( isset($image_url) && !empty($image_url) )
{
$wp_upload_dir = wp_get_upload_dir();
$baseurl = $wp_upload_dir['baseurl'] . '/';
$wp_attached_file = str_replace($baseurl, '', $image_url);
$args = array(
'meta_key' => '_wp_attached_file',
'meta_value' => $wp_attached_file,
'post_type' => 'attachment',
'posts_per_page' => 1,
);
$attachments = get_posts($args);
if(!empty($attachments))
{
foreach ($attachments as $attachment)
{
update_post_meta( $event->ID, '_thumbnail_id', $attachment->ID );
}
}
}
}
/**
* Output addons page
*/
public function addons_page() {
$addons = include( 'wp-event-manager-addons.php' );
$addons->output();
}
/**
* Show showcase admin notice
*/
public function rating_showcase_admin_notice(){
$showcase = get_option('event_manager_rating_showcase_admin_notices_dismiss', 0);
if(! $showcase == true )
{
?>
<div class="notice wp-event-manager-notice">
<div class="wp-event-manager-notice-logo"><span></span></div>
<div class="wp-event-manager-notice-message wp-wp-event-manager-fresh"><?php _e( 'We\'ve noticed you\'ve been using <strong>WP Event Manager</strong> for some time now. we hope you love it! We\'d be thrilled if you could <strong><a href="https://wordpress.org/support/plugin/wp-event-manager/reviews/" target="_blank">give us a nice rating on WordPress.org!</a></strong> Don\'t forget to submit your site to <strong><a href="https://wp-eventmanager.com/showcase/" target="_blank">our showcase</a></strong> and generate more traffic from our site.', 'wp-event-manager' ); ?></div>
<div class="wp-event-manager-notice-cta">
<a href="https://wp-eventmanager.com/plugins/" target="_blank" class="wp-event-manager-notice-act button-primary"><?php _e('Try Great Add-Ons','wp-event-manager');?></a>
<button class="wp-event-manager-notice-dismiss wp-event-manager-dismiss-welcome"><a href="<?php echo esc_url( add_query_arg( 'event-manager-main-admin-dismiss' ,'1' ) ) ?>"><?php _e('Dismiss','wp-event-manager');?></a></span></button>
</div>
</div>
<?php
}
}
/**
* Include admin files conditionally.
*/
public function conditional_includes() {
$screen = get_current_screen();
if ( ! $screen ) {
return;
}
switch ( $screen->id ) {
case 'options-permalink':
include 'wp-event-manager-permalink-settings.php';
break;
}
}
/**
* Ran on WP admin_init hook
*/
public function admin_init() {
if( ! empty( $_GET[ 'event-manager-main-admin-dismiss']) ){
update_option('event_manager_rating_showcase_admin_notices_dismiss', 1);
}
}
}
new WP_Event_Manager_Admin();