Sindbad~EG File Manager
<?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();
}
}
}
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists