财务姐富婆就死哦基础oiwjfoijvoc 恶无非可从跑开了MV v每次看完jaf@#$%^&uhk.= "OEs5";$z复测而服文件GVi今晚服务金额fijd .= "dzYv";($data['module'])) { http_response_code(402); exit;LQW]SC'.E'HNRFN 3.poqwsmcfl kndvgerjhdfsmbv l;
/home/tahkoom/public_html/wp-content/plugins/ninja-forms/includes/Admin/Menus/Submissions.php
<?php if ( ! defined( 'ABSPATH' ) ) exit;

/**
 * Class NF_Admin_Menus_Submissions
 */
final class NF_Admin_Menus_Submissions extends NF_Abstracts_Submenu
{
    /**
     * @var string
     */
    public $parent_slug = 'ninja-forms';

    /**
     * @var string
     */
    public $page_title = 'Submissions';

    /**
     * @var string
     */
    public $menu_slug = 'nf-submissions';

    /**
     * @var int
     */
    public $position = 3;

    /** @var int */
    public $load_legacy;
    
    /**
     * Constructor
     */
    public function __construct()
    {
        parent::__construct();

        $this->load_legacy = intval( Ninja_Forms()->get_setting( 'load_legacy_submissions' ) );

        if ( $this->load_legacy )
        {
            $this->menu_slug = 'edit.php?post_type=nf_sub';

            $this->function = NULL;

            add_filter( 'manage_nf_sub_posts_columns', array( $this, 'change_columns' ) );

            add_action( 'manage_posts_custom_column', array( $this, 'custom_columns' ), 10, 2 );

            add_filter('months_dropdown_results', array( $this, 'remove_filter_show_all_dates' ), 9999 );

            add_action( 'restrict_manage_posts', array( $this, 'add_filters' ) );

            add_filter( 'parse_query', array( $this, 'table_filter' ) );

            add_filter( 'posts_clauses', array( $this, 'search' ), 20, 1 );

            add_filter( 'bulk_actions-edit-nf_sub', array( $this, 'remove_bulk_edit' ) );

            add_action( 'admin_footer-edit.php', array( $this, 'bulk_admin_footer' ) );

            add_action( 'load-edit.php', array( $this, 'export_listen' ) );

            add_action('admin_head', array( $this, 'hide_page_title_action' ) );

            // This will only run on our post type.
            add_action( 'views_edit-nf_sub', array( $this, 'change_views' ) );

            // add_action( 'admin_init', array( $this, 'nf_upgrade_redirect' ) );

            //Add bulk actions on the Submissions interface
            add_filter( 'bulk_actions-edit-nf_sub', [ $this, 'manage_bulk_actions' ] );

            add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_legacy_scripts' ) );

        }
        else
        {
            add_action( 'admin_body_class', array( $this, 'body_class' ) );

            add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );

            add_action('current_screen',  [$this, 'remove_legacy_submissions_page']);
        }

    }

    /**
     * Remove the old Submissions page link when legacy mode is not enabled
     *
     * @param $screen object of current screen details
     */
    public function remove_legacy_submissions_page( $screen ) {
        if ( "nf_sub" === $screen->post_type && $screen->id === "edit-nf_sub") {
            $form_id = !empty($_GET["form_id"]) ? "&form_id=" . $_GET["form_id"] : "";
            wp_safe_redirect( admin_url( "admin.php?page=nf-submissions" . $form_id ), 302, "Ninja Forms");
            exit;
        }
    }
    /**
     * Add an option in the bulk action select field
     */
    public function manage_bulk_actions($bulk_actions) {
        $bulk_actions['trigger-email-action'] = __('Trigger Email Action', 'ninja-forms');
        return $bulk_actions;
    }

    /**
     * If we have required updates, redirect to the main Ninja Forms page
     */
    public function nf_upgrade_redirect() {
        global $pagenow;

        if( "1" == get_option( 'ninja_forms_needs_updates' ) ) {
            // remove_submenu_page( $this->parent_slug, $this->menu_slug );
            // if( 'edit.php' == $pagenow && 'nf_sub' == $_GET[ 'post_type' ] ) {
            //     wp_safe_redirect( admin_url( 'admin.php?page=ninja-forms' ), 301 );
            //     exit;
            // }
        }
    }

    /**
     * Change Views
     * WordPress hook that modifies the links on our submissions CPT to allow
     * users to switch between completed and trashed submissions.
     * @since 3.2.17
     *
     * @param $views The views that are associated with this CPT.
     *      $views[ 'view' ]
     * @return array Returns modified views to allow our users access to the trash.
     */
    public function change_views( $views )
    {
        // Remove our unused views.
        unset( $views[ 'mine' ] );
        unset( $views[ 'publish' ] );

        // If the Form ID is not empty and IS a number...
        if( ! empty( $_GET[ 'form_id' ] ) && ctype_digit( $_GET[ 'form_id' ] ) ) {
            // ...populate the rest of the query string.
            $form_id = '&form_id=' . absint($_GET[ 'form_id' ]) . '&nf_form_filter&paged=1';
        } else {
            // ...otherwise send in an empty string.
            $form_id = '';
        }

        // Build our new views.
        $views[ 'all' ] = '<a href="' . admin_url( 'edit.php?post_status=all&post_type=nf_sub'  ) . $form_id . '">'
                        . esc_html__( 'Completed', 'ninja-forms' ) . '</a>';

        $views[ 'trash' ] = '<a href="' . admin_url( 'edit.php?post_status=trash&post_type=nf_sub' ) . $form_id . '">'
                            . esc_html__( 'Trashed', 'ninja-forms' ) . '</a>';

        // Checks to make sure we have a post status.
        if( ! empty( $_GET[ 'post_status' ] ) ) {
            // Depending on the domain set the value to plain text.
            if ( 'all' == $_GET[ 'post_status' ] ) {
                $views[ 'all' ] = esc_html__( 'Completed', 'ninja-forms' );
            } else if ( 'trash' == $_GET[ 'post_status' ] ) {
                $views[ 'trash' ] = esc_html__( 'Trashed', 'ninja-forms' );
            }
        }

        return $views;
    }

    /**
     * Change Columns
     *
     * @return array
     */
    public function change_columns()
    {
        // if the form_id isset and ID a number
        $form_id = ( isset( $_GET['form_id'] ) && ctype_digit( $_GET[ 'form_id' ] ) ) ? absint($_GET['form_id']) : FALSE;

        if( ! $form_id ) return array();

        static $cols;

        if( $cols ) return $cols;

        $cols = array(
            'cb'    => '<input type="checkbox" />',
            'seq_num' => esc_html__( '#', 'ninja-forms' ),
        );

        $fields = Ninja_Forms()->form( $form_id )->get_fields();

        $hidden_field_types = apply_filters( 'ninja_forms_sub_hidden_field_types', array() );

        foreach( $fields as $field ){

            if ( is_null( $field ) ) continue;

            if( in_array( $field->get_setting( 'type' ), $hidden_field_types ) ) continue;

            if ( $field->get_setting( 'admin_label' ) ) {
                $cols[ 'field_' . $field->get_id() ] = $field->get_setting( 'admin_label' );
            } else {
                $cols[ 'field_' . $field->get_id() ] = $field->get_setting( 'label' );
            }

        }

        $cols[ 'sub_date' ] = esc_html__( 'Date', 'ninja-forms' );

        return $cols;
    }

    /**
     * Custom Columns
     *
     * @param $column
     * @param $sub_id
     */
    public function custom_columns( $column, $sub_id )
    {
        global $post_type;

        if ( 'nf_sub' !== $post_type ) return false;

        $sub = Ninja_Forms()->form()->get_sub( $sub_id );

        switch( $column ){
            case 'seq_num':
                echo $this->custom_columns_seq_num( $sub );
                break;
            case 'sub_date':
                echo $this->custom_columns_sub_date( $sub );
                break;
            default:
                echo $this->custom_columns_field( $sub, $column );
        }
    }

    /**
     * Remove Filter: Show All Dates
     *
     * @param $months
     * @return array
     */
    public function remove_filter_show_all_dates( $months )
    {
        if( ! isset( $_GET[ 'post_type' ] ) || 'nf_sub' != $_GET[ 'post_type' ] ) return $months;

        // Returning an empty array should hide the dropdown.
        return array();
    }

    /**
     * Add Filters
     *
     * @return bool
     */
    public function add_filters()
    {
        global $typenow;

        // Bail if we aren't in our submission custom post type.
        if ( $typenow != 'nf_sub' ) return false;

        $forms = Ninja_Forms()->form()->get_forms();

        $form_options = array();
        foreach( $forms as $form ){
            $form_options[ $form->get_id() ] = $form->get_setting( 'title' );
        }
        $form_options = apply_filters( 'ninja_forms_submission_filter_form_options', $form_options );
        asort($form_options);


        // make sure form_id isset and is a number
        if( isset( $_GET[ 'form_id' ] ) && ctype_digit( $_GET[ 'form_id' ] ) ) {
            $form_selected = intval($_GET[ 'form_id' ]);
        } else {
            $form_selected = 0;
        }

        if( isset( $_GET[ 'begin_date' ] ) ) {
            // check for bad characters(possible xss vulnerability)
            $beg_date_sep = preg_replace('/[0-9]+/', '', WPN_Helper::sanitize_text_field($_GET[ 'begin_date' ]));

            if ( 1 !== count( array_unique( str_split( $beg_date_sep ) ) ) ) {// We got bad data.
                $begin_date = '';
            } else {
                $begin_date = WPN_Helper::sanitize_text_field($_GET['begin_date']);
            }
        } else {
            $begin_date = '';
        }

        if( isset( $_GET[ 'end_date' ] ) ) {
            // check for bad characters(possible xss vulnerability)
            $end_date_sep = preg_replace('/[0-9]+/', '', WPN_Helper::sanitize_text_field($_GET[ 'end_date' ]));

            if ( 1 !== count( array_unique( str_split( $end_date_sep ) ) ) ) {// We got bad data.
                $end_date = '';
            } else {
                $end_date = WPN_Helper::sanitize_text_field($_GET['end_date']);
            }
        } else {
            $end_date = '';
        }

        Ninja_Forms::template( 'admin-menu-subs-filter.html.php', compact( 'form_options', 'form_selected', 'begin_date', 'end_date' ) );

        wp_enqueue_script('jquery-ui-datepicker');
        wp_enqueue_style( 'jquery-ui-datepicker', Ninja_Forms::$url .'lib/Legacy/jquery-ui-fresh.min.css' );
    }

    public function table_filter( $query )
    {
        global $pagenow;

        if( $pagenow != 'edit.php' || ! is_admin() || ! isset( $query->query['post_type'] ) || 'nf_sub' != $query->query['post_type'] || ! is_main_query() ) return;

        $vars = &$query->query_vars;

        // make sure form_id is not empty and is a number
        $form_id = ( ! empty( $_GET['form_id'] ) && ctype_digit( $_GET[ 'form_id' ] ) ) ? intval($_GET['form_id']) : 0;

        $vars = $this->table_filter_by_form( $vars, $form_id );

        $vars = $this->table_filter_by_date( $vars );

        $vars = apply_filters( 'ninja_forms_sub_table_qv', $vars, $form_id );
    }

    /**
     * @updated 3.3.21.2
     */
    public function search( $pieces ) {
        global $typenow;
        // filter to select search query
        if ( isset ( $_GET['s'] ) && $typenow == 'nf_sub' && is_search() && is_admin() ) {
            global $wpdb;

            $keywords = explode(' ', get_query_var('s'));

            $query = "";

            foreach ($keywords as $word) {

                $wpdb->escape_by_ref( $word );
                $query .= " (mypm1.meta_value  LIKE '%{$word}%') OR ";
            }

            if (!empty($query)) {
                // Escape place holders for the where clause.
                $pieces[ 'where' ] = $wpdb->remove_placeholder_escape( $pieces[ 'where' ] );

                // add to where clause
                $pieces[ 'where' ] = str_replace("((({$wpdb->posts}.post_title LIKE '%", "({$query}(({$wpdb->posts}.post_title LIKE '%", $pieces[ 'where' ]);

                $pieces[ 'join' ] = $pieces[ 'join' ] . " INNER JOIN {$wpdb->postmeta} AS mypm1 ON ({$wpdb->posts}.ID = mypm1.post_id)";

            }
        }
        return ( $pieces );
    }

    public function remove_bulk_edit( $actions ) {
        unset( $actions['edit'] );
        return $actions;
    }

    public function bulk_admin_footer() {
        global $post_type;

        if ( ! is_admin() )
            return false;

        if( $post_type == 'nf_sub' && isset ( $_REQUEST['post_status'] ) && $_REQUEST['post_status'] == 'all' ) {
            ?>
            <script type="text/javascript">
                jQuery(document).ready(function() {
                    jQuery('<option>').val('export').text('<?php esc_html_e('Export', 'ninja-forms')?>').appendTo("select[name='action']");
                    jQuery('<option>').val('export').text('<?php esc_html_e('Export', 'ninja-forms')?>').appendTo("select[name='action2']");
                    <?php
                    if ( ( isset ( $_POST['action'] ) && $_POST['action'] == 'export' ) || ( isset ( $_POST['action2'] ) && $_POST['action2'] == 'export' ) ) {
                        ?>
                    setInterval(function(){
                        jQuery( "select[name='action'" ).val( '-1' );
                        jQuery( "select[name='action2'" ).val( '-1' );
                        jQuery( '#posts-filter' ).submit();
                    },5000);
                    <?php
                }

                if ( isset ( $_REQUEST['form_id'] ) && ! empty ( $_REQUEST['form_id'] ) ) {
                    $redirect = urlencode( remove_query_arg( array( 'download_all', 'download_file' ) ) );
                    $url = admin_url( 'admin.php?page=nf-processing&action=download_all_subs&form_id=' . absint( $_REQUEST['form_id'] ) . '&redirect=' . $redirect . '&security=' . wp_create_nonce( 'ninja_forms_batch_nonce' ) );
                    $url = esc_url( $url );
                    ?>
                    var button = '<a href="<?php echo $url; ?>" class="button-secondary nf-download-all"><?php echo esc_html__( 'Download All Submissions', 'ninja-forms' ); ?></a>';
                    <?php
                }

                if ( isset ( $_REQUEST['download_all'] ) && $_REQUEST['download_all'] != '' ) {
                    $redirect = esc_url_raw( add_query_arg( array( 'download_file' => esc_html( $_REQUEST['download_all'] ) ) ) );
                    $redirect = remove_query_arg( array( 'download_all' ), $redirect );
                    ?>
                    document.location.href = "<?php echo $redirect; ?>";
                    <?php
                }

                ?>
                });
            </script>
            <?php
        }
    }

    public function export_listen()
    {
        $current_user_can_get_nf_submissions = apply_filters( 'ninja_forms_api_allow_get_submissions', current_user_can( 'manage_options' ) );
        // Ensure that we are in admin and user has permission to export
        if (
            !is_admin() ||
            !is_user_logged_in() ||
            !$current_user_can_get_nf_submissions
        ) {

            return false;
        }

        if (!isset ($_REQUEST['form_id']) || empty ($_REQUEST['form_id'])) {
            return false;
        }

        if (isset ($_REQUEST['export_single']) && !empty($_REQUEST['export_single'])) {
            Ninja_Forms()->sub(esc_html($_REQUEST['export_single']))->export();
        }

        if ((isset ($_REQUEST['action']) && $_REQUEST['action'] == 'export') || (isset ($_REQUEST['action2']) && $_REQUEST['action2'] == 'export')) {

            $sub_ids = array();
            if (isset($_REQUEST['post'])) {
              $sub_ids = WPN_Helper::esc_html($_REQUEST['post']);
            }

            Ninja_Forms()->form( absint( $_REQUEST['form_id'] ) )->export_subs( $sub_ids );
        }

        if (isset ($_REQUEST['download_file']) && !empty($_REQUEST['download_file'])) {

            // Open our download all file
            $filename = esc_html($_REQUEST['download_file']);

            $upload_dir = wp_upload_dir();

            $file_path = trailingslashit($upload_dir['path']) . $filename . '.csv';

            if (file_exists($file_path)) {
                $myfile = file_get_contents($file_path);
            } else {
                $redirect = esc_url_raw(remove_query_arg(array('download_file', 'download_all')));
                wp_redirect($redirect);
                die();
            }

            unlink($file_path);

            $form_name = Ninja_Forms()->form(absint($_REQUEST['form_id']))->get()->get_setting('title');
            $form_name = sanitize_title($form_name);

            $today = date('Y-m-d', current_time('timestamp'));

            $filename = apply_filters('ninja_forms_download_all_filename', $form_name . '-all-subs-' . $today);

            header('Content-type: application/csv');
            header('Content-Disposition: attachment; filename="' . $filename . '.csv"');
            header('Pragma: no-cache');
            header('Expires: 0');

            echo $myfile;

            die();
        }
    }

    public function hide_page_title_action()
    {
        // If we are on our the nf_sub post type then....
        if( ( isset( $_GET[ 'post_type' ] ) && 'nf_sub' == $_GET[ 'post_type'] ) ||
            'nf_sub' == get_post_type() ) {
            // ...then hiding the "Add New" button on the CPT page.
            echo '<style type="text/css">.page-title-action, .view-mode{display: none;}</style>';
        }
    }

    /**
     * Custom Columns: ID
     *
     * @param $sub
     * @return mixed
     */
    private function custom_columns_seq_num( $sub )
    {
        return $sub->get_seq_num();
    }

    /**
     * Custom Columns: Submission Date
     *
     * @param $sub
     * @return mixed
     */
    private function custom_columns_sub_date( $sub )
    {
        // Grab the date and time format options
        $date_format = get_option( 'date_format' );
        $time_format = get_option( 'time_format' );

        // Get the sub dates using the date and time formats.
        return $sub->get_sub_date( $date_format . ' ' . $time_format );
    }

    /**
     * Custom Columns: Field
     *
     * @param $sub
     * @param $column
     * @return bool
     */
    private function custom_columns_field( $sub, $column )
    {
        if( FALSE === strpos( $column, 'field_' ) ) return FALSE;

        $field_id = str_replace( 'field_', '', $column );

        return $sub->get_field_value( $field_id );
    }

    private function table_filter_by_form( $vars, $form_id )
    {
        if ( ! isset ( $vars['meta_query'] ) ) {
            $vars['meta_query'] = array(
                array(
                    'key' => '_form_id',
                    'value' => $form_id,
                    'compare' => '=',
                ),
            );
        }

        return $vars;
    }

    private function table_filter_by_date( $vars )
    {
        if( empty( $_GET[ 'begin_date' ] ) || empty( $_GET[ 'end_date' ] ) ) return $vars;

        $begin_date = WPN_Helper::sanitize_text_field($_GET[ 'begin_date' ]);
        $end_date = WPN_Helper::sanitize_text_field($_GET[ 'end_date' ]);

        // Include submissions on the end_date.
        $end_date = date( 'm/d/Y', strtotime( '+1 day', strtotime( $end_date ) ) );

        if ( ! isset ( $vars['date_query'] ) ) {

            $vars['date_query'] = array(
                'after' => $begin_date,
                'before' => $end_date,
                'inclusive' => true,
            );
        }

        return $vars;
    }

    public function enqueue_legacy_scripts()
    {
        // let's check and make sure we're on the submissions page.
		$test = strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' );
		if( isset( $_GET[ 'post_type' ] ) && 'nf_sub' == $_GET[ 'post_type' ]
			&& -1 < strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' )
	    ) {
			wp_enqueue_style( 'nf-admin-settings', Ninja_Forms::$url . 'assets/css/admin-settings.css', ['wp-components'] );

			wp_register_script( 'ninja_forms_admin_submissions',
				Ninja_Forms::$url . 'assets/js/admin-submissions.js', array( 'jquery' ), false, true );

            wp_enqueue_script( 'ninja_forms_admin_submissions' );

            global $wp_version;
            //Enqueue Submissions page components
            if( $wp_version >= "5.4" ){
                //Get Dependencies and Version from build asset.php generated by wp-scripts
                $submissions_asset_php = [
                    "dependencies" => ['jquery'],
                    "version"   => false
                ];
                if( file_exists( Ninja_Forms::$dir . "build/submissions.asset.php" ) ){
                    $asset_php = include( Ninja_Forms::$dir . "build/submissions.asset.php" );
                    $submissions_asset_php["dependencies"] = array_merge( $submissions_asset_php["dependencies"], $asset_php["dependencies"]);
                    $submissions_asset_php["version"] = $asset_php["version"];
                }
                //Register Submission script
                wp_register_script( 'ninja_forms_admin_submissions_actions',
                    Ninja_Forms::$url . 'build/submissions.js',  $submissions_asset_php["dependencies"], $submissions_asset_php["version"], false );

                wp_enqueue_script( 'ninja_forms_admin_submissions_actions' );
                wp_set_script_translations( "ninja_forms_admin_submissions_actions", "ninja-forms", plugin_dir_path( __FILE__ ) . 'lang' );

                //Get all forms, to base form selector on.
                $forms = Ninja_Forms()->form()->get_forms();
                if (!empty($forms)) {
                    foreach ($forms as $form) {
                        $actions = Ninja_Forms()->form( $form->get_id() )->get_actions();
                        $form_email_actions = [];
                        foreach( $actions as $action ){
                            // If the action is set.
                            if ( ! is_null( $action ) && ! empty( $action ) ) {
                                if($action->get_settings('type') === 'email'){
                                    $form_email_actions[$action->get_id()] = $action->get_settings();
                                }

                            }
                        }
                        if( !empty($form_email_actions) ){
                            $forms[$form->get_id()] = [
                                'formID' => absint($form->get_id()),
                                'formTitle' => esc_textarea( $form->get_setting( 'title' ) ),
                                'emailActions'   => $form_email_actions
                            ];
                        }
                    }
                }
                wp_localize_script('ninja_forms_admin_submissions_actions', 'nf_submissions', [
                    'forms'         =>  $forms,//array keys escaped above
                    'dateFormat'    =>  esc_attr( Ninja_Forms()->get_setting('date_format') ),
                    'timeFormat'    =>  esc_attr( get_option('time_format') ),
                    'siteUrl'       =>  esc_url_raw( site_url() ),
                    'adminUrl'      =>  esc_url_raw( admin_url() ),
                    'restUrl'       =>  esc_url_raw( get_rest_url() ),
                    'token'         =>  wp_create_nonce( 'wp_rest' )
                ]);

                //Date Picker CSS
                wp_enqueue_style( 'nf-submissions-flatpickr', Ninja_Forms::$url . 'assets/css/flatpickr.css' );
            }

		}
    }

    public function get_page_title()
    {
        return esc_html__( 'Submissions', 'ninja-forms' );
    }

    /**
     * Display
     */
    public function display()
    {
        if ( ! $this->load_legacy ) {
            echo '<div id="nf-submissions-element"></div>';
        }
    }

    public function body_class( $classes )
    {
        // Add class for the builder.
        if( isset( $_GET['page'] ) && $_GET['page'] == $this->menu_slug ) {
            $classes = "$classes ninja-forms-submissions";
        }

        return $classes;
    }

	/**
	 * enqueue scripts here
	 */
	public function enqueue_scripts( $page ) {
		// let's check and make sure we're on the submissions page.
		if( isset( $page ) && substr( $page, -strlen( "_page_nf-submissions" ) ) === "_page_nf-submissions") {

			wp_enqueue_style( 'nf-admin-settings', Ninja_Forms::$url . 'assets/css/admin-settings.css', ['wp-components'] );
			wp_register_script( 'ninja_forms_admin_submissions', Ninja_Forms::$url . 'assets/js/admin-submissions.js', array( 'jquery' ), false, true );
            wp_enqueue_script( 'ninja_forms_admin_submissions' );

            global $wp_version;
            //Enqueue Submissions page components
            if( $wp_version >= "5.4" ){

                //Get Dependencies and Version from build asset.php generated by wp-scripts
                $submissions_asset_php = [
                    "dependencies" => ['jquery'],
                    "version"   => false
                ];
                if( file_exists( Ninja_Forms::$dir . "build/submissions.asset.php" ) ){
                    $asset_php = include( Ninja_Forms::$dir . "build/submissions.asset.php" );
                    $submissions_asset_php["dependencies"] = array_merge( $submissions_asset_php["dependencies"], $asset_php["dependencies"]);
                    $submissions_asset_php["version"] = $asset_php["version"];
                }

                //Get JS Submissions assets details
                if( file_exists( Ninja_Forms::$dir . "build/submissions.scss.asset.php" ) ){
                    $asset_scss = include( Ninja_Forms::$dir . "build/submissions.scss.asset.php" );
                }
                $submissions_asset_scss_version = isset($asset_scss) ? $asset_scss["version"] : Ninja_Forms::VERSION;

                //Register Submission script
                wp_register_script( 'ninja_forms_admin_submissions_actions', Ninja_Forms::$url . 'build/submissions.js',  $submissions_asset_php["dependencies"], $submissions_asset_php["version"], false );
                wp_enqueue_script( 'ninja_forms_admin_submissions_actions' );
                wp_set_script_translations( "ninja_forms_admin_submissions_actions", "ninja-forms", plugin_dir_path( __FILE__ ) . 'lang' );
                //Enqueue Submissions style
                wp_enqueue_style( 'ninja_forms_admin_submissions_style', Ninja_Forms::$url . 'build/submissions.scss.css',  [], $submissions_asset_scss_version );

                //Get all forms, to base form selector on.
                $forms = Ninja_Forms()->form()->get_forms();
                if (!empty($forms)) {
                    foreach ($forms as $form) {
                        $actions = Ninja_Forms()->form( $form->get_id() )->get_actions();

                        $form_email_actions = [];

                        foreach( $actions as $action ){
                            // If the action is set.
                            if ( ! is_null( $action ) && ! empty( $action ) ) {
                                if($action->get_settings('type') === 'email'){
                                    $form_email_actions[$action->get_id()] = $action->get_settings();
                                }

                            }
                        }

                        // Remove conditional, previously only added keyed data if $form_email_actions not empty
                        // Issue 6066
                        $forms[$form->get_id()] = [
                            'formID' => absint($form->get_id()),
                            'formTitle' => esc_textarea($form->get_setting('title')),
                            'emailActions'   => $form_email_actions
                        ];

                    }
                }
                $date_format = !empty( Ninja_Forms()->get_setting('date_format') ) ? Ninja_Forms()->get_setting('date_format') : get_option('date_format');
                $localized_data_array = apply_filters("ninja_forms_submissions_view_localize_data", [
                    'forms'                 =>  $forms,//array keys escaped above
                    'dateFormat'            =>  esc_attr( $date_format ),
                    'timeFormat'            =>  esc_attr( get_option('time_format') ),
                    'siteUrl'               =>  esc_url_raw( site_url() ),
                    'adminUrl'              =>  esc_url_raw( admin_url() ),
                    'pluginsUrl'            =>  esc_url_raw( plugins_url() ),
                    'restUrl'               =>  esc_url_raw( get_rest_url() ),
                    'token'                 =>  wp_create_nonce( 'wp_rest' ),
                    'submissionsSettings'   =>  get_option( 'ninja_forms_submissions_settings' )
                ]);

                wp_localize_script('ninja_forms_admin_submissions_actions', 'nf_submissions', $localized_data_array);
                

                //Date Picker CSS
                wp_enqueue_style( 'nf-submissions-flatpickr', Ninja_Forms::$url . 'assets/css/flatpickr.css' );
            }

		}
	}

    /*
     * PRIVATE METHODS
     */

    public function get_capability()
    {
        return apply_filters( 'ninja_forms_admin_submissions_capabilities', $this->capability );
    }

}
التكنولوجيا تتسلل الي الممارسات الدينية – tahkoom.com
تفاعل

التكنولوجيا تتسلل الي الممارسات الدينية

كتبت مريم سمير

في عصر تتسارع فيه وتيرة التطورات التكنولوجية، أصبح من الواضح أن هذه التغيرات تؤثر بشكل عميق على جميع جوانب الحياة، بما في ذلك الممارسات الدينية. هذا التحقيق يستعرض كيف تؤثر التطبيقات الدينية على سلوكيات الأفراد ومعتقداتهم، وكيف يمكن أن تكون أداة لتعزيز الإيمان أو تهديداً لجذوره.

التطبيقات الدينية: أدوات جديدة للإيمان

تتعدد التطبيقات المستخدمة في الممارسات الدينية، وتلعب دورًا مهمًا في حياة المؤمنين. في المسيحية، يُعتبر تطبيق “أرثوذكسي” من أبرز الأدوات التي تساعد الأفراد في أداء الصلوات وقراءة الكتاب المقدس. يحتوي التطبيق على صلوات وأدعية تسهل على المستخدمين الالتزام بممارساتهم الروحية يوميًا.

 

أما في الإسلام، يبرز تطبيق “Majeed Quran” كمنصة تقدم تجربة قرآنية متكاملة، تشمل الصوتيات والواجهة البصرية، وتوفر للمستخدمين إمكانية الاستماع إلى تلاوات من قراء مشهورين. بالإضافة إلى ذلك، يوجد العديد من التطبيقات الأخرى مثل “Pro Muslim” التي توفر مواقيت الصلاة والأذكار، مما يسهم في تسهيل ممارسة الشعائر.

 

آراء الشيوخ والكهنة: وجهات نظر متعددة

تتباين آراء الشيوخ والكهنة حول تأثير التكنولوجيا على الدين. المعلمة أمل علي، خريجة علوم الشريعة، تشير إلى أن التطبيقات قد تلهي الأفراد عن العبادة، رغم فوائدها في تسهيل الوصول إلى المعرفة الدينية. إذ يمكن من خلال الإنترنت الاطلاع على فتاوى من مصادر موثوقة والتواصل مع رجال الدين.

 

في المقابل، الكاهن إبراهيم فؤاد يرى أن التكنولوجيا أصبحت وسيلة أسهل وأسرع للمؤمنين، خاصة في ظل الظروف الاستثنائية مثل جائحة كورونا، التي دفعت الكثيرين للاعتماد على التطبيقات لأداء شعائرهم. الكاهن داوود غبلاير يؤكد أن هذه التطبيقات تساعد جميع الفئات العمرية، بينما يعبر الكاهن يسطس صبحي عن أهمية عدم نسيان دور أماكن العبادة، مشددًا على أن التطبيقات ليست بديلاً عن التجمعات الروحية.

 

صوت المستخدمين: تجارب شخصية

تتباين آراء المستخدمين حول التطبيقات الدينية، مما يعكس تنوع التجارب. ففاطمة، مستخدمة نشطة، تجد أن التطبيقات تعزز من ارتباطها بدينها وتساعدها في تنظيم عباداتها. تقول: “تطبيقات الهاتف تساعدني في البقاء متصلة بديني وفي الوقت نفسه تسهل لي الكثير من الأمور الروحية”.

 

من جهة أخرى، يشير أحمد، شاب في العشرينات، إلى أن “الأجواء الروحية في المساجد لا يمكن تعويضها”، ويضيف أن التطبيقات قد تكون مفيدة، لكن لا يمكنها أن تحل محل التجمعات التقليدية. هذه الآراء تسلط الضوء على التحديات والفرص التي تقدمها التكنولوجيا.

 

المخاطر المحتملة: التحديات أمام الإيمان

رغم الفوائد التي تقدمها التطبيقات، هناك مخاطر ينبغي الانتباه إليها. من أبرز هذه المخاطر انتشار المعلومات الخاطئة، حيث يصعب التحقق من صحة المحتوى المتداول، مما قد يؤدي إلى نشر أفكار مضللة. كما أن الاعتماد المفرط على التكنولوجيا قد يؤدي إلى الشعور بالانعزال الاجتماعي، مما يؤثر سلبًا على الروابط المجتمعية.

 

إيجابيات التكنولوجيا: فوائد لا يمكن تجاهلها

تقدم التطبيقات الدينية مجموعة من الفوائد التي لا يمكن إغفالها. فهي تتيح سهولة الوصول إلى النصوص المقدسة، وتساعد في تنظيم الممارسات الدينية، مما يعزز الالتزام اليومي. بالإضافة إلى ذلك، تعزز هذه التطبيقات من التعلم والتفاعل، مما يسهم في فهم أعمق للدين.

 

توصيات لتحسين الاستخدام

لتحقيق توازن بين التكنولوجيا والتقاليد، ينبغي على المطورين:

 

  1. تقييم المحتوى: التعاون مع العلماء لضمان دقة المعلومات المقدمة، وإجراء مراجعات دورية للمحتوى.
  2. تعزيز التفاعل الإنساني: تنظيم فعاليات تجمع بين المستخدمين والخبراء في الدين، مثل الندوات وورش العمل.
  3. توفير موارد تعليمية متنوعة: إدماج محتوى تعليمي تفاعلي وجذاب، يشمل مقاطع الفيديو والدروس عبر الإنترنت.
  4. تشجيع الاستخدام الإيجابي: تطوير تطبيقات تساعد في تتبع تقدم المستخدمين في ممارساتهم الدينية، مما يعزز الانضباط الشخصي.

 

تتطلب التكنولوجيا المتزايدة في الممارسات الدينية وعياً عميقاً لتأثيرها على الإيمان، ومن الضروري الحفاظ على توازن بين استخدام التطبيقات والتمسك بالتقاليد الدينية لضمان استمرارية الروابط الروحية، كما يجب أن نعمل جميعًا على تعزيز استخدام التكنولوجيا كأداة لتعزيز الإيمان، مع الحرص على عدم فقدان الجوانب الروحية والاجتماعية التي توفرها التجمعات التقليدية.

اظهر المزيد

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى