541 lines
17 KiB
PHP
541 lines
17 KiB
PHP
|
|
<?php if ( ! defined( 'ABSPATH' ) ) exit;
|
||
|
|
/**
|
||
|
|
* Main Notifications Class
|
||
|
|
*
|
||
|
|
* Adds our notifications to the form edit page.
|
||
|
|
* Gets notification types
|
||
|
|
* Listens for ajax commands to delete/activate/deactivate notifications
|
||
|
|
* Listens for bulk actions from the notifications admin page
|
||
|
|
* Adds notification types processing to the appropriate action hook
|
||
|
|
*
|
||
|
|
* @package Ninja Forms
|
||
|
|
* @subpackage Classes/Notifications
|
||
|
|
* @copyright Copyright (c) 2014, WPNINJAS
|
||
|
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
||
|
|
* @since 2.8
|
||
|
|
*/
|
||
|
|
|
||
|
|
class NF_Notifications
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* Get things rolling
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
*
|
||
|
|
* @since 2.8
|
||
|
|
*/
|
||
|
|
function __construct() {
|
||
|
|
global $pagenow;
|
||
|
|
|
||
|
|
// Register our notification types
|
||
|
|
Ninja_Forms()->notification_types['email'] = require_once( NF_PLUGIN_DIR . 'classes/notification-email.php' );
|
||
|
|
Ninja_Forms()->notification_types['redirect'] = require_once( NF_PLUGIN_DIR . 'classes/notification-redirect.php' );
|
||
|
|
Ninja_Forms()->notification_types['success_message'] = require_once( NF_PLUGIN_DIR . 'classes/notification-success-message.php' );
|
||
|
|
|
||
|
|
Ninja_Forms()->notification_types = apply_filters( 'nf_notification_types', Ninja_Forms()->notification_types );
|
||
|
|
|
||
|
|
// Register our notification tab
|
||
|
|
add_action( 'admin_init', array( $this, 'register_tab' ) );
|
||
|
|
|
||
|
|
// Only add these actions if we are actually on the notification tab.
|
||
|
|
if ( 'admin.php' == $pagenow && isset ( $_REQUEST['page'] ) && $_REQUEST['page'] == 'ninja-forms' && isset ( $_REQUEST['tab'] ) && $_REQUEST['tab'] == 'notifications' ) {
|
||
|
|
add_action( 'admin_init', array( $this, 'add_js' ) );
|
||
|
|
add_action( 'admin_init', array( $this, 'add_css' ) );
|
||
|
|
add_action( 'admin_init', array( $this, 'bulk_actions' ) );
|
||
|
|
add_action( 'admin_init', array( $this, 'duplicate_notification' ) );
|
||
|
|
add_filter( 'media_buttons_context', array( $this, 'tinymce_buttons' ) );
|
||
|
|
}
|
||
|
|
|
||
|
|
add_action( 'wp_ajax_nf_delete_notification', array( $this, 'delete_notification' ) );
|
||
|
|
add_action( 'wp_ajax_nf_activate_notification', array( $this, 'activate_notification' ) );
|
||
|
|
add_action( 'wp_ajax_nf_deactivate_notification', array( $this, 'deactivate_notification' ) );
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
// Add our hook to add notification types processors.
|
||
|
|
add_action( 'ninja_forms_post_process', array( $this, 'notification_processing' ), 999 );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Register our setting tab.
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
*
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function register_tab() {
|
||
|
|
$form_id = isset ( $_REQUEST['form_id'] ) ? absint( $_REQUEST['form_id'] ) : '';
|
||
|
|
$action = isset ( $_REQUEST['notification-action'] ) ? esc_html( $_REQUEST['notification-action'] ) : '';
|
||
|
|
$output_form = false;
|
||
|
|
$show_save = false;
|
||
|
|
if ( 'edit' == $action || 'new' == $action ) {
|
||
|
|
$output_form = true;
|
||
|
|
$show_save = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
$args = array(
|
||
|
|
'name' => __( 'Email & Actions', 'ninja-forms' ),
|
||
|
|
'page' => 'ninja-forms',
|
||
|
|
'display_function' => array( $this, 'output_admin' ),
|
||
|
|
'save_function' => array( $this, 'save_admin' ),
|
||
|
|
'disable_no_form_id' => true,
|
||
|
|
'show_save' => $show_save,
|
||
|
|
'tab_reload' => true,
|
||
|
|
'output_form' => $output_form,
|
||
|
|
);
|
||
|
|
|
||
|
|
ninja_forms_register_tab( 'notifications', $args );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Enqueue JS
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function add_js() {
|
||
|
|
global $ninja_forms_fields;
|
||
|
|
|
||
|
|
$form_id = isset ( $_REQUEST['form_id'] ) ? absint( $_REQUEST['form_id'] ) : '';
|
||
|
|
if ( empty ( $form_id ) )
|
||
|
|
return false;
|
||
|
|
|
||
|
|
if ( defined( 'NINJA_FORMS_JS_DEBUG' ) && NINJA_FORMS_JS_DEBUG ) {
|
||
|
|
$suffix = '';
|
||
|
|
$src = 'dev';
|
||
|
|
} else {
|
||
|
|
$suffix = '.min';
|
||
|
|
$src = 'min';
|
||
|
|
}
|
||
|
|
|
||
|
|
wp_enqueue_script( 'nf-notifications',
|
||
|
|
NF_PLUGIN_URL . 'assets/js/' . $src .'/notifications' . $suffix . '.js',
|
||
|
|
array( 'jquery', 'jquery-ui-autocomplete' ) );
|
||
|
|
|
||
|
|
wp_enqueue_script( 'nf-tokenize',
|
||
|
|
NF_PLUGIN_URL . 'assets/js/' . $src .'/bootstrap-tokenfield' . $suffix . '.js',
|
||
|
|
array( 'jquery', 'jquery-ui-autocomplete' ) );
|
||
|
|
|
||
|
|
wp_enqueue_script( 'nf-combobox',
|
||
|
|
NF_PLUGIN_URL . 'assets/js/' . $src .'/combobox' . $suffix . '.js',
|
||
|
|
array( 'jquery', 'jquery-ui-core', 'jquery-ui-button', 'jquery-ui-autocomplete' ) );
|
||
|
|
|
||
|
|
$all_fields = Ninja_Forms()->form( $form_id )->fields;
|
||
|
|
$process_fields = array();
|
||
|
|
$search_fields = array();
|
||
|
|
$search_fields['email'] = array();
|
||
|
|
$search_fields['name'] = array();
|
||
|
|
$fields = array();
|
||
|
|
// Generate our search fields JS var.
|
||
|
|
foreach( $all_fields as $field_id => $field ) {
|
||
|
|
$label = esc_attr( nf_get_field_admin_label( $field_id ) );
|
||
|
|
|
||
|
|
$fields[ $field_id ] = array( 'field_id' => $field_id, 'label' => $label );
|
||
|
|
|
||
|
|
if ( strlen( $label ) > 30 ) {
|
||
|
|
$tmp_label = substr( $label, 0, 30 );
|
||
|
|
} else {
|
||
|
|
$tmp_label = $label;
|
||
|
|
}
|
||
|
|
|
||
|
|
$tmp_array = array( 'value' => 'field_' . $field_id, 'label' => $tmp_label . ' - ID: ' . $field_id );
|
||
|
|
|
||
|
|
$admin_label = $label;
|
||
|
|
|
||
|
|
$label = isset( $field['data']['label'] ) ? $field['data']['label'] : '';
|
||
|
|
|
||
|
|
// Check to see if this field is supposed to be "processed"
|
||
|
|
$type = $field['type'];
|
||
|
|
if ( isset ( $ninja_forms_fields[ $type ]['process_field'] ) && $ninja_forms_fields[ $type ]['process_field'] ) {
|
||
|
|
$process_fields[ $field_id ] = array( 'field_id' => $field_id, 'label' => $label, 'admin_label' => $admin_label );
|
||
|
|
$search_fields['all'][] = $tmp_array;
|
||
|
|
}
|
||
|
|
|
||
|
|
if ( $field['type'] == '_text' && isset ( $field['data']['email'] ) && $field['data']['email'] == 1 ) {
|
||
|
|
$search_fields['email'][] = $tmp_array;
|
||
|
|
} else if ( $field['type'] == '_text' && isset ( $field['data']['first_name'] ) && $field['data']['first_name'] == 1 ) {
|
||
|
|
$search_fields['name'][] = $tmp_array;
|
||
|
|
} else if ( $field['type'] == '_text' && isset ( $field['data']['last_name'] ) && $field['data']['last_name'] == 1 ) {
|
||
|
|
$search_fields['name'][] = $tmp_array;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Add our "process_fields" to our form global
|
||
|
|
Ninja_Forms()->form( $form_id )->process_fields = $process_fields;
|
||
|
|
|
||
|
|
$js_vars = apply_filters( 'nf_notification_admin_js_vars', array(
|
||
|
|
'activate' => __( 'Activate', 'ninja-forms' ),
|
||
|
|
'deactivate' => __( 'Deactivate', 'ninja-forms' ),
|
||
|
|
'search_fields' => $search_fields,
|
||
|
|
'tokens' => array(),
|
||
|
|
'all_fields' => $fields,
|
||
|
|
'process_fields' => $process_fields,
|
||
|
|
'filter_type' => esc_url_raw( remove_query_arg( array( 'type' ) ) ),
|
||
|
|
) );
|
||
|
|
|
||
|
|
wp_localize_script( 'nf-notifications', 'nf_notifications', $js_vars );
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Enqueue CSS
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function add_css() {
|
||
|
|
wp_enqueue_style( 'nf-notifications',
|
||
|
|
NF_PLUGIN_URL . 'assets/css/notifications.css' );
|
||
|
|
|
||
|
|
wp_enqueue_style( 'nf-tokenize',
|
||
|
|
NF_PLUGIN_URL . 'assets/css/bootstrap-tokenfield.css' );
|
||
|
|
|
||
|
|
wp_enqueue_style( 'nf-combobox',
|
||
|
|
NF_PLUGIN_URL . 'assets/css/combobox.css' );
|
||
|
|
|
||
|
|
// wp_enqueue_style( 'nf-bootstrap',
|
||
|
|
// 'http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css' );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Output our notifications admin.
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
*
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function output_admin() {
|
||
|
|
$action = isset ( $_REQUEST['notification-action'] ) ? esc_html( $_REQUEST['notification-action'] ) : '';
|
||
|
|
|
||
|
|
?>
|
||
|
|
<div class="wrap">
|
||
|
|
<?php
|
||
|
|
if ( '' == $action ) {
|
||
|
|
?>
|
||
|
|
<h2><?php _e( 'Email & Actions', 'ninja-forms' ); ?> <a href="<?php echo esc_url( add_query_arg( array( 'notification-action' => 'new' ) ) ); ?>" class="add-new-h2"><?php _e( 'Add New', 'ninja-forms' );?></a></h2>
|
||
|
|
|
||
|
|
<!-- Forms are NOT created automatically, so you need to wrap the table in one to use features like bulk actions -->
|
||
|
|
<form id="forms-filter" method="get">
|
||
|
|
<!-- For plugins, we also need to ensure that the form posts back to our current page -->
|
||
|
|
<input type="hidden" name="page" value="<?php echo esc_attr( $_REQUEST['page'] ); ?>" />
|
||
|
|
<input type="hidden" name="tab" value="<?php echo esc_attr( $_REQUEST['tab'] ); ?>" />
|
||
|
|
<input type="hidden" name="form_id" value="<?php echo esc_attr( $_REQUEST['form_id'] ); ?>" />
|
||
|
|
<?php
|
||
|
|
//Create an instance of our package class...
|
||
|
|
$nf_all_forms = new NF_Notifications_List_Table();
|
||
|
|
//Fetch, prepare, sort, and filter our data...
|
||
|
|
$nf_all_forms->prepare_items();
|
||
|
|
// Now we can render the completed list table
|
||
|
|
$nf_all_forms->display();
|
||
|
|
?>
|
||
|
|
</form>
|
||
|
|
<?php
|
||
|
|
} else {
|
||
|
|
$id = isset ( $_REQUEST['id'] ) ? absint( $_REQUEST['id'] ) : '';
|
||
|
|
if ( $id == '' ) {
|
||
|
|
$id = 'new';
|
||
|
|
$this_type = 'email';
|
||
|
|
$title = __( 'New Action', 'ninja-forms' );
|
||
|
|
} else {
|
||
|
|
$this_type = Ninja_Forms()->notification( $id )->type;
|
||
|
|
$title = __( 'Edit Action', 'ninja-forms' ) . ' - ID ' . $id;
|
||
|
|
}
|
||
|
|
|
||
|
|
?>
|
||
|
|
<h2><?php echo $title; ?> <a href="<?php echo esc_url( remove_query_arg( array( 'notification-action', 'id', 'update_message' ) ) );?>" class="button-secondary"><?php _e( 'Back To List', 'ninja-forms' );?></a></h2>
|
||
|
|
|
||
|
|
<input type="hidden" id="notification_id" name="notification_id" value="<?php echo $id; ?>" />
|
||
|
|
<table class="form-table">
|
||
|
|
<tbody id="notification-main">
|
||
|
|
<tr>
|
||
|
|
<th scope="row"><label for="setting-name"><?php _e( 'Action Name', 'ninja-forms' ); ?></label></th>
|
||
|
|
<td><input name="settings[name]" type="text" id="settings-name" value="<?php echo nf_get_object_meta_value( $id, 'name' ); ?>" class="regular-text"></td>
|
||
|
|
</tr>
|
||
|
|
<tr>
|
||
|
|
<th scope="row"><label for="type"><?php _e( 'Type', 'ninja-forms' ); ?></label></th>
|
||
|
|
<td>
|
||
|
|
<select name="settings[type]" id="settings-type">
|
||
|
|
<?php
|
||
|
|
foreach ( $this->get_types() as $slug => $nicename ) {
|
||
|
|
?>
|
||
|
|
<option value="<?php echo $slug; ?>" <?php selected ( $this_type, $slug ); ?>><?php echo $nicename; ?></option>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
</select>
|
||
|
|
<span class="nf-more-actions"><a href="<?php echo nf_aff_link( 'https://ninjaforms.com/extensions/?display=actions&utm_medium=plugin&utm_source=action-single&utm_campaign=Ninja+Forms+Upsell&utm_content=Ninja+Forms+Actions' ); ?>" target="_blank"><?php _e( 'Get More Actions', 'ninja-forms' ); ?> <span class="dashicons dashicons-external"></span></a></span>
|
||
|
|
</td>
|
||
|
|
</tr>
|
||
|
|
</tbody>
|
||
|
|
<?php
|
||
|
|
do_action( 'nf_edit_notification_settings', $id );
|
||
|
|
foreach ( $this->get_types() as $slug => $nicename ) {
|
||
|
|
if ( $this_type == $slug ) {
|
||
|
|
$display = '';
|
||
|
|
} else {
|
||
|
|
$display = 'display:none;';
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
<tbody id="notification-<?php echo $slug; ?>" class="notification-type" style="<?php echo $display;?>">
|
||
|
|
<?php
|
||
|
|
// Call our type edit screen.
|
||
|
|
Ninja_Forms()->notification_types[ $slug ]->edit_screen( $id );
|
||
|
|
?>
|
||
|
|
</tbody>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
?>
|
||
|
|
</table>
|
||
|
|
<?php
|
||
|
|
} ?>
|
||
|
|
|
||
|
|
</div>
|
||
|
|
<?php
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Save our notifications admin.
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
*
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function save_admin( $form_id, $data ) {
|
||
|
|
if ( ! isset ( $data['notification_id'] ) || empty ( $data['notification_id'] ) )
|
||
|
|
return false;
|
||
|
|
|
||
|
|
$n_id = $data['notification_id'];
|
||
|
|
$settings = $data['settings'];
|
||
|
|
|
||
|
|
if ( 'new' == $n_id ) {
|
||
|
|
$type = $settings['type'];
|
||
|
|
$n_id = $this->create( $form_id );
|
||
|
|
$new = true;
|
||
|
|
} else {
|
||
|
|
$type = Ninja_Forms()->notification( $n_id )->type;
|
||
|
|
$new = false;
|
||
|
|
}
|
||
|
|
|
||
|
|
$data = Ninja_Forms()->notification_types[ $type ]->save_admin( $n_id, $data );
|
||
|
|
|
||
|
|
foreach ( $settings as $meta_key => $meta_value ) {
|
||
|
|
nf_update_object_meta( $n_id, $meta_key, nf_wp_kses_post_deep( $meta_value ) );
|
||
|
|
}
|
||
|
|
|
||
|
|
do_action( 'nf_save_notification', $n_id, $data, $new );
|
||
|
|
|
||
|
|
if ( $new ) {
|
||
|
|
$redirect = esc_url_raw( remove_query_arg( array( 'notification-action' ) ) );
|
||
|
|
$redirect = esc_url_raw( add_query_arg( array( 'id' => $n_id, 'notification-action' => 'edit', 'update_message' => urlencode( __( 'Action Updated', 'ninja-forms' ) ) ), $redirect ) );
|
||
|
|
wp_redirect( $redirect );
|
||
|
|
die();
|
||
|
|
}
|
||
|
|
|
||
|
|
return __( 'Action Updated', 'ninja-forms' );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get our registered notification types
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return array $types
|
||
|
|
*/
|
||
|
|
public function get_types() {
|
||
|
|
$types = array();
|
||
|
|
foreach ( Ninja_Forms()->notification_types as $slug => $object ) {
|
||
|
|
$types[ $slug ] = $object->name;
|
||
|
|
}
|
||
|
|
return $types;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Delete a notification.
|
||
|
|
* Hooked into the ajax action for nf_delete_notification
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function delete_notification() {
|
||
|
|
// Bail if our nonce doesn't verify.
|
||
|
|
check_ajax_referer( 'nf_ajax', 'nf_ajax_nonce' );
|
||
|
|
|
||
|
|
$n_id = absint( $_REQUEST['n_id'] );
|
||
|
|
Ninja_Forms()->notification( $n_id )->delete();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Activate a notification.
|
||
|
|
* Hooked into the ajax action for nf_activate_notification
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function activate_notification() {
|
||
|
|
// Bail if our nonce doesn't verify.
|
||
|
|
check_ajax_referer( 'nf_ajax', 'nf_ajax_nonce' );
|
||
|
|
|
||
|
|
$n_id = absint( $_REQUEST['n_id'] );
|
||
|
|
Ninja_Forms()->notification( $n_id )->activate();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Deactivate a notification.
|
||
|
|
* Hooked into the ajax action for nf_deactivate_notification
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function deactivate_notification() {
|
||
|
|
// Bail if our nonce doesn't verify.
|
||
|
|
check_ajax_referer( 'nf_ajax', 'nf_ajax_nonce' );
|
||
|
|
|
||
|
|
$n_id = absint( $_REQUEST['n_id'] );
|
||
|
|
Ninja_Forms()->notification( $n_id )->deactivate();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Duplicate our notification
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function duplicate_notification() {
|
||
|
|
if ( ! isset ( $_REQUEST['notification-action'] ) || $_REQUEST['notification-action'] != 'duplicate' )
|
||
|
|
return false;
|
||
|
|
|
||
|
|
$n_id = isset ( $_REQUEST['id'] ) ? absint( $_REQUEST['id'] ) : '';
|
||
|
|
|
||
|
|
// Bail if we don't have an ID.
|
||
|
|
if ( '' === $n_id )
|
||
|
|
return false;
|
||
|
|
|
||
|
|
Ninja_Forms()->notification( $n_id )->duplicate();
|
||
|
|
|
||
|
|
wp_redirect( esc_url_raw( remove_query_arg( array( 'notification-action' ) ) ) );
|
||
|
|
die();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Create a new notification
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return int $n_id
|
||
|
|
*/
|
||
|
|
public function create( $form_id = '' ) {
|
||
|
|
// Bail if we don't have a form_id
|
||
|
|
if ( '' == $form_id )
|
||
|
|
return false;
|
||
|
|
|
||
|
|
$n_id = nf_insert_notification( $form_id );
|
||
|
|
|
||
|
|
// Activate our new notification
|
||
|
|
Ninja_Forms()->notification( $n_id )->activate();
|
||
|
|
|
||
|
|
return $n_id;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Handle bulk actions
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function bulk_actions() {
|
||
|
|
$action = '';
|
||
|
|
|
||
|
|
if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] )
|
||
|
|
$action = esc_html( $_REQUEST['action2'] );
|
||
|
|
|
||
|
|
if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] )
|
||
|
|
$action = esc_html( $_REQUEST['action'] );
|
||
|
|
|
||
|
|
$n_ids = isset ( $_REQUEST['notification'] ) ? esc_html( $_REQUEST['notification'] ) : '';
|
||
|
|
|
||
|
|
if ( ! is_array( $n_ids ) || empty( $n_ids ) )
|
||
|
|
return false;
|
||
|
|
|
||
|
|
if( 'delete' === $action ) {
|
||
|
|
foreach ( $n_ids as $n_id ) {
|
||
|
|
Ninja_Forms()->notification( $n_id )->delete();
|
||
|
|
}
|
||
|
|
} else if ( 'activate' === $action ) {
|
||
|
|
foreach ( $n_ids as $n_id ) {
|
||
|
|
Ninja_Forms()->notification( $n_id )->activate();
|
||
|
|
}
|
||
|
|
} else if ( 'deactivate' === $action ) {
|
||
|
|
foreach ( $n_ids as $n_id ) {
|
||
|
|
Ninja_Forms()->notification( $n_id )->deactivate();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
wp_redirect( esc_url_raw( remove_query_arg( array( 'notification', '_wpnonce', '_wp_http_referer', 'action', 'action2' ) ) ) );
|
||
|
|
die();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Output our tinyMCE field buttons
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function tinymce_buttons( $context ) {
|
||
|
|
$form_id = isset ( $_REQUEST['form_id'] ) ? absint( $_REQUEST['form_id'] ) : '';
|
||
|
|
if ( empty ( $form_id ) )
|
||
|
|
return $context;
|
||
|
|
|
||
|
|
$all_fields = Ninja_Forms()->form( $form_id )->process_fields;
|
||
|
|
$first_option = __( 'Select a field or type to search', 'ninja-forms' );
|
||
|
|
|
||
|
|
$fields = array();
|
||
|
|
$html = '<select class="nf-fields-combobox" data-first-option="' . $first_option . '">';
|
||
|
|
$html .= '<option value="">' . $first_option .'</option>';
|
||
|
|
foreach( $all_fields as $field_id => $field ) {
|
||
|
|
$label = esc_html( $field['label'] );
|
||
|
|
if ( strlen( $label ) > 30 )
|
||
|
|
$label = substr( $label, 0, 30 ) . '...';
|
||
|
|
|
||
|
|
$html .= '<option value="' . $field_id . '">' . $label . ' - ID: ' . $field_id . '</option>';
|
||
|
|
}
|
||
|
|
$html .= '</select>';
|
||
|
|
$html .= ' <a href="#" class="button-secondary nf-insert-field">' . __( 'Insert Field', 'ninja-forms' ) . '</a> <a href="#" class="button-secondary nf-insert-all-fields">' . __( 'Insert All Fields', 'ninja-forms' ) . '</a>';
|
||
|
|
|
||
|
|
return $html;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Loop through our notifications and add their processing functions to the appropriate hook.
|
||
|
|
*
|
||
|
|
* @access public
|
||
|
|
* @since 2.8
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function notification_processing() {
|
||
|
|
global $ninja_forms_processing;
|
||
|
|
|
||
|
|
$form_id = $ninja_forms_processing->get_form_ID();
|
||
|
|
$notifications = nf_get_notifications_by_form_id( $form_id, false );
|
||
|
|
if ( is_array( $notifications ) ) {
|
||
|
|
foreach ( $notifications as $id ) {
|
||
|
|
do_action( 'nf_notification_before_process', $id );
|
||
|
|
if ( Ninja_Forms()->notification( $id )->active ) {
|
||
|
|
Ninja_Forms()->notification( $id )->process();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|