load_translations();
$this->init_plugins();
if ( is_admin() ) {
add_action( 'admin_enqueue_scripts', function() { $this->admin_enqueue_scripts(); } );
add_action( 'admin_menu', function() { $this->admin_menu(); }, 20 );
add_action( 'admin_init', function() { $this->admin_init(); } );
add_filter( 'wpcf7_editor_panels', function( $panels ) {
return $this->wpcf7_add_panels( $panels );
} );
add_action( 'wpcf7_after_save', function( $form ) {
$this->wpcf7_save_form( $form );
});
add_action( 'ari-cf7connector-save-settings', function( $prev_settings ) {
$this->on_save_settings( $prev_settings );
});
add_filter( 'plugin_action_links_' . plugin_basename( ARICF7CONNECTOR_EXEC_FILE ) , function( $links ) {
return $this->plugin_action_links( $links );
});
} else {
add_action( 'wpcf7_before_send_mail', function( $form ) {
$this->wpc7_form_submission( $form );
});
}
parent::init();
}
private function init_plugins() {
Plugin_Helper::get_installed_plugins();
}
private function load_translations() {
load_plugin_textdomain( 'contact-form-7-connector', false, ARICF7CONNECTOR_SLUG . '/languages' );
}
private function admin_menu() {
$pages = array();
$settings_cap = 'manage_options';
$position = null;
$wp_version = get_bloginfo( 'version' );
if ( version_compare( $wp_version, '4.4', '>=' ) ) {
global $menu;
if ( is_array( $menu ) ) {
foreach ( $menu as $menu_pos => $menu_item ) {
if ( isset( $menu_item[2] ) && 'wpcf7' === $menu_item[2] ) {
$position = $menu_pos;
break;
}
}
}
}
$pages[] = add_menu_page(
__( 'CF7 Connector', 'contact-form-7-connector' ),
__( 'CF7 Connector', 'contact-form-7-connector' ),
$settings_cap,
'ari-cf7connector',
array( $this, 'display_settings' ),
! ARI_WP_LEGACY ? 'dashicons-email' : '',
$position
);
foreach ( $pages as $page ) {
add_action( 'load-' . $page, function() {
Screen::register();
});
}
// Hidden pages
add_submenu_page(
null,
'',
'',
$settings_cap,
'ari-cf7connector-log',
array( $this, 'display_log' )
);
}
private function admin_enqueue_scripts() {
$options = $this->options;
wp_register_script( 'ari-modal', $options->assets_url . 'modal/js/modal.js', array( 'jquery' ), $options->version );
wp_register_style( 'ari-modal', $options->assets_url . 'modal/css/modal.css', array(), $options->version );
wp_register_script( 'ari-cf7connector-app', $options->assets_url . 'common/app.js', array( 'jquery' ), $options->version );
wp_register_script( 'ari-cf7connector-app-helper', $options->assets_url . 'common/helper.js', array( 'ari-cf7connector-app', 'ari-modal' ), $options->version );
wp_register_style( 'ari-cf7connector-app', $options->assets_url . 'common/css/style.css', array(), $options->version );
wp_register_script( 'ari-scrollto', $options->assets_url . 'scroll_to/jquery.scrollTo.min.js', array( 'jquery' ), $options->version );
wp_register_script( 'ari-button', $options->assets_url . 'common/button.js', array( 'jquery' ), $options->version );
wp_register_style( 'ari-qtip', $options->assets_url . 'qtip/css/jquery.qtip.min.css', array(), $options->version );
wp_register_script( 'ari-qtip', $options->assets_url . 'qtip/js/jquery.qtip.min.js', array( 'jquery' ), $options->version );
wp_register_style( 'ari-select2', $options->assets_url . 'select2/css/select2.min.css', array(), $options->version );
wp_register_script( 'ari-select2', $options->assets_url . 'select2/js/select2.min.js', array( 'jquery' ), $options->version );
wp_register_script( 'ari-cf7connector-cloner', $options->assets_url . 'cloner/js/jquery.cloner.min.js', array( 'jquery', 'jquery-ui-draggable', 'jquery-ui-sortable', 'ari-scrollto' ), $options->version );
wp_register_script( 'ari-form-elements', $options->assets_url . 'common/form-elements.js', array( 'jquery', 'jquery-ui-slider', 'ari-qtip', 'jquery-ui-spinner', 'ari-cf7connector-cloner' ), $options->version );
wp_register_script( 'ari-wp-tabs', $options->assets_url . 'common/tabs.js', array( 'jquery' ), $options->version );
wp_register_script( 'ari-cf7connector-cf7-helper', $options->assets_url . 'cf7/cf7.js', array( 'ari-cf7connector-app-helper', 'ari-qtip' ), $options->version );
wp_register_style( 'ari-cf7connector-cf7-helper', $options->assets_url . 'cf7/cf7.css', array(), $options->version );
}
private function admin_init() {
if ( get_option( 'ari_cf7connector_redirect', false ) ) {
delete_option( 'ari_cf7connector_redirect' );
if ( ! isset( $_GET['activate-multi'] ) ) {
Response::redirect( admin_url( 'admin.php?page=ari-cf7connector' ) );
}
}
$no_header = (bool) Request::get_var( 'noheader' );
if ( ! $no_header ) {
$page = Request::get_var( 'page' );
if ( $this->options->page_prefix && 0 === strpos( $page, $this->options->page_prefix ) ) {
ob_start();
add_action( 'admin_page_' . $page , function() {
ob_end_flush();
}, 99 );
}
}
}
protected function need_to_update() {
$installed_version = get_option( ARICF7CONNECTOR_VERSION_OPTION );
return ( $installed_version != $this->options->version );
}
protected function install() {
$installer = new \Ari_Cf7_Connector\Installer();
return $installer->run();
}
private function wpcf7_add_panels( $panels ) {
wp_enqueue_style( 'ari-modal' );
wp_enqueue_style( 'ari-qtip' );
wp_enqueue_style( 'ari-cf7connector-app' );
wp_enqueue_style( 'ari-cf7connector-cf7-helper' );
wp_enqueue_script( 'ari-cf7connector-cf7-helper' );
$tag_types = \Ari_Cf7_Connector\Helpers\Cf7_Helper::get_tag_types();
$js_options = array(
'tag_types' => array_keys( $tag_types ),
);
wp_localize_script( 'ari-cf7connector-cf7-helper', 'ARI_CF7C_SETTINGS', $js_options );
$plugins = Plugin_Helper::get_active_plugins();
foreach ( $plugins as $plugin ) {
$panels = $plugin->add_panels_to_wpcf7( $panels );
}
add_action( 'wpcf7_admin_footer', function( $post ) {
$global_app_options = App_Helper::get_global_app_options( 'wpcf7-admin-form-element' );
wp_localize_script( 'ari-cf7connector-app', 'ARI_APP', $global_app_options );
});
return $panels;
}
private function wpcf7_save_form( $form ) {
$plugins = Plugin_Helper::get_active_plugins();
foreach ( $plugins as $plugin ) {
$plugin->on_save_cf7_form_settings( $form );
}
}
private function wpc7_form_submission( $form ) {
$plugins = Plugin_Helper::get_active_plugins();
$submission = \WPCF7_Submission::get_instance();
foreach ( $plugins as $plugin ) {
$plugin->on_cf7_form_submission( $form, $submission );
}
}
private function on_save_settings( $prev_settings ) {
$prev_disabled_plugins = is_array( $prev_settings['disabled_plugins'] ) ? $prev_settings['disabled_plugins'] : array();
$plugins = Plugin_Helper::get_active_plugins( true );
foreach ( $plugins as $plugin ) {
if ( ! in_array( $plugin->get_slug(), $prev_disabled_plugins ) )
$plugin->save_settings();
}
}
private function plugin_action_links( $links ) {
$settings_link = '' . __( 'Settings', 'contact-form-7-connector' ) . '';
$support_link = '' . __( 'Support', 'contact-form-7-connector' ) . '';
$upgrade_link = '' . __( 'Upgrade', 'contact-form-7-connector' ) . '';
$links[] = $settings_link;
$links[] = $support_link;
$links[] = $upgrade_link;
return $links;
}
}