Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 3.15.218.44
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/wavevlvu/misswavenigeria.com/wp-content/plugins/totalcontest-lite/src/Admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/wavevlvu/misswavenigeria.com/wp-content/plugins/totalcontest-lite/src/Admin/Bootstrap.php
<?php

namespace TotalContest\Admin;

use TotalContestVendors\TotalCore\Admin\Pages\Page;
use TotalContestVendors\TotalCore\Contracts\Foundation\Environment;
use TotalContestVendors\TotalCore\Helpers\Arrays;
use TotalContestVendors\TotalCore\Helpers\Strings;
use TotalContestVendors\TotalCore\Http\Request;

/**
 * Class Bootstrap
 *
 * @package TotalContest\Admin
 */
class Bootstrap {
	/**
	 * @var array $pages
	 */
	public $pages = [];

	/**
	 * @var string|null $requestedPage
	 */
	public $requestedPage = null;

	/**
	 * @var Page|null $currentPage
	 */
	public $currentPage = null;

	/**
	 * @var Environment $env
	 */
	public $env;
	/**
	 * @var Request
	 */
	public $request;

	/**
	 * @var array
	 */
	protected $messages = [];

	/**
	 * @var array
	 */
	protected $onboarding = [];

	/**
	 * Bootstrap constructor.
	 *
	 * @param  Request  $request
	 * @param  Environment  $env
	 */
	public function __construct( Request $request, Environment $env ) {
		$this->onboarding = get_option( 'totalcontest_onboarding', [ 'status' => 'init' ] );

		$this->messages = [
			'reset-contest-success' => [ esc_html__( 'Contest has been reset', 'totalcontest' ), 'updated' ],
			'reset-contest-error'   => [ esc_html__( 'Contest reset failed', 'totalcontest' ), 'error' ],
		];

		$this->request = $request;
		$this->env     = $env;

		// TotalContest pages.
		$this->pages = [
			'dashboard'      => [
				'title'      => esc_html__( 'Dashboard', 'totalcontest' ),
				'name'       => esc_html__( 'Dashboard', 'totalcontest' ),
				'capability' => 'manage_options',
			],
			'log'            => [
				'title'      => esc_html__( 'Logs', 'totalcontest' ),
				'name'       => esc_html__( 'Logs', 'totalcontest' ),
				'capability' => 'manage_options',
			],
			'templates'      => [
				'title'      => esc_html__( 'Templates', 'totalcontest' ),
				'name'       => esc_html__( 'Templates', 'totalcontest' ),
				'capability' => 'manage_options',
			],
			'extensions'     => [
				'title'      => esc_html__( 'Extensions', 'totalcontest' ),
				'name'       => esc_html__( 'Extensions', 'totalcontest' ),
				'capability' => 'manage_options',
			],
			'options'        => [
				'title'      => esc_html__( 'Options', 'totalcontest' ),
				'name'       => esc_html__( 'Options', 'totalcontest' ),
				'capability' => 'manage_options',
			],
			
			'upgrade-to-pro' => [
				'title'      => esc_html__( 'Upgrade to Pro', 'totalcontest' ),
				'name'       => esc_html__( 'Upgrade to Pro', 'totalcontest' ),
				'capability' => 'manage_options',
			],
			
		];

		if ( Arrays::getDotNotation( $this->onboarding,
		                             'status',
		                             'init' ) === 'init' && current_user_can( 'manage_options' ) ) {
			$this->pages['onboarding'] = [
				'title'      => esc_html__( 'Onboarding', 'totalcontest' ),
				'name'       => esc_html__( 'Onboarding', 'totalcontest' ),
				'capability' => 'manage_options',
			];
		}

		// Hook into WordPress menu and screen
		add_action( 'current_screen', [ $this, 'screen' ] );
		add_action( 'admin_menu', [ $this, 'menu' ] );
		add_filter( 'admin_body_class', [ $this, 'directionClass' ] );
		add_action( 'admin_action_reset_contest', [ $this, 'resetContest' ] );
		add_action( 'admin_notices', [ $this, 'showMessages' ] );

		// Requested page
		$this->requestedPage = $request->request( 'page' );

		// Bootstrap the page, if present
		if ( $GLOBALS['pagenow'] === 'edit.php' && $request->request( 'post_type' ) === TC_CONTEST_CPT_NAME ):
			if ( array_key_exists( $this->requestedPage, $this->pages ) ):
				$this->currentPage = TotalContest( "admin.pages.{$this->requestedPage}" );
			endif;
		endif;

		// Register admin assets
		$this->registerAssets();


		/**
		 * Fires when admin is bootstrapped.
		 *
		 * @since 2.0.0
		 * @order 10
		 */
		do_action( 'totalcontest/actions/bootstrap-admin' );
	}

	public function resetContest() {
		$contest = $this->request->query( 'contest', 0 );
		$url     = wp_get_referer();

		if ( check_admin_referer( 'reset_contest' ) ) {
			$this->contestCleanup( $contest );
			$url = add_query_arg( 'message', 'reset-contest-success', $url );
		} else {
			$url = add_query_arg( 'message', 'reset-contest-error', $url );
		}
		wp_redirect( $url );
		exit();
	}

	/**
	 * @param $contest_id
	 */
	public function contestCleanup( $contest_id ) {
		$contest = get_post( $contest_id );

		if ( $contest && $contest->post_type == TC_CONTEST_CPT_NAME ):
			$submissions = get_posts( [
				                          'post_type'      => TC_SUBMISSION_CPT_NAME,
				                          'posts_per_page' => - 1,
				                          'post_parent'    => $contest->ID,
			                          ] );

			foreach ( $submissions as $submission ) {
				wp_delete_post( $submission->ID, false );
			}

			TotalContest( 'log.repository' )->delete( [ 'contest_id' => $contest->ID ] );

		endif;
	}

	/**
	 * Show admin messages / admin notice hook.
	 */
	function showMessages() {
		$message = $this->request->query( 'message' );

		if ( array_key_exists( $message, $this->messages ) ) {
			list( $content, $type ) = $this->messages[ $message ];
			printf( '<div class="notice %s"><p>%s</p></div>', $type, $content );
		}
	}

	public function screen() {
		$isTotalContest       = $GLOBALS['current_screen']->post_type === TC_CONTEST_CPT_NAME || $GLOBALS['current_screen']->post_type === TC_SUBMISSION_CPT_NAME;
		$isContestEditor      = $GLOBALS['current_screen']->base === 'post' && $GLOBALS['current_screen']->post_type === TC_CONTEST_CPT_NAME;
		$isSubmissionEditor   = $GLOBALS['current_screen']->base === 'post' && $GLOBALS['current_screen']->post_type === TC_SUBMISSION_CPT_NAME;
		$isContestsListing    = $GLOBALS['current_screen']->base === 'edit' && $GLOBALS['current_screen']->post_type === TC_CONTEST_CPT_NAME;
		$isSubmissionsListing = $GLOBALS['current_screen']->base === 'edit' && $GLOBALS['current_screen']->post_type === TC_SUBMISSION_CPT_NAME;

		if ( $isContestEditor ):
			// Bootstrap contest editor
			TotalContest( 'admin.contest.editor' );

		elseif ( $isSubmissionEditor ):
			// Bootstrap submission editor
			TotalContest( 'admin.submission.editor' );

		elseif ( $isContestsListing ):
			// Contests listing
			TotalContest( 'admin.contest.listing' );

		elseif ( $isSubmissionsListing ):
			// Submission listing
			$exportAs = (string) $this->request->request( 'export', '' );
			if ( $exportAs ):
				TotalContest( 'admin.submission.listing' )->download( $exportAs );
			endif;

			TotalContest( 'admin.submission.listing' );
		endif;

		if ( $isTotalContest ):
			add_filter( 'admin_footer_text', [ $this, 'footerText' ] );
			add_filter( 'update_footer', [ $this, 'footerVersion' ] );
		endif;
	}

	public function menu() {
		$slug = 'edit.php?post_type=' . TC_CONTEST_CPT_NAME;

		// Add it directly to super global because add_sub menu_page function does not support custom URL for sub menu items.
		if ( current_user_can( 'edit_contest_submissions' ) && isset( $GLOBALS['submenu'][ $slug ] ) ):
			$GLOBALS['submenu'][ $slug ][] = [
				esc_html__( 'Submissions', 'totalcontest' ),
				'edit_posts',
				'edit.php?post_type=' . TC_SUBMISSION_CPT_NAME,
			];
		endif;

		

		foreach ( $this->pages as $pageSlug => $page ):
			add_submenu_page( $slug,
			                  $page['title'],
			                  $page['name'],
			                  empty( $page['capability'] ) ? 'manage_options' : $page['capability'],
			                  $pageSlug,
			                  [ $this, 'page' ] );
		endforeach;

		add_filter( 'parent_file',
			function ( $file ) use ( $slug ) {
				if ( isset($GLOBALS['submenu'][ $slug ]) ):
					foreach ( $GLOBALS['submenu'][ $slug ] as $itemIndex => $item ):
						if ( $item[2] === 'dashboard' ):
							unset( $GLOBALS['submenu'][ $slug ][ $itemIndex ] );
							array_unshift( $GLOBALS['submenu'][ $slug ], $item );
						endif;
					endforeach;
				endif;

				$pages = array_keys( $this->pages );
				if ( isset($GLOBALS['submenu'][ $slug ]) ):
					foreach ( $GLOBALS['submenu'][ $slug ] as $index => $item ):
						if ( in_array( $item[2], $pages, true ) ):
							$GLOBALS['submenu'][ $slug ][ $index ][4] = ! empty( $GLOBALS['plugin_page'] ) && $GLOBALS['plugin_page'] === $item[2] && $GLOBALS['typenow'] === TC_CONTEST_CPT_NAME ? 'current' : '';
							$GLOBALS['submenu'][ $slug ][ $index ][2] = add_query_arg( [ 'page' => $item[2] ], $slug );
						endif;
					endforeach;
				endif;

				if ( isset($GLOBALS['current_screen']->taxonomy) && $GLOBALS['current_screen']->taxonomy === TC_SUBMISSION_CATEGORY_TAX_NAME ):
					$GLOBALS['current_screen']->post_type = TC_SUBMISSION_CPT_NAME;
				endif;

				return $file;
			} );
	}

	public function registerAssets() {
		// Add a dynamic part to assets URL when debugging to prevent cache.
		$assetsVersion = WP_DEBUG ? time() : $this->env['version'];
		$baseUrl       = $this->env['url'];

		wp_register_script( 'jquery-datetimepicker',
		                    "{$baseUrl}assets/dist/scripts/vendor/jquery.datetimepicker.full.min.js",
		                    [ 'jquery' ],
		                    $assetsVersion );
		wp_register_style( 'jquery-datetimepicker',
		                   "{$baseUrl}assets/dist/styles/vendor/datetimepicker.css",
		                   [],
		                   $assetsVersion );

		wp_register_script( 'angular',
		                    "{$baseUrl}assets/dist/scripts/vendor/angular.min.js",
		                    [ 'media-views' ],
		                    $assetsVersion );
		wp_register_script( 'angular-dnd-lists',
		                    "{$baseUrl}assets/dist/scripts/vendor/angular-drag-and-drop-lists.min.js",
		                    [ 'angular' ],
		                    $assetsVersion );
		wp_register_script( 'angular-resource',
		                    "{$baseUrl}assets/dist/scripts/vendor/angular-resource.min.js",
		                    [ 'angular' ],
		                    $assetsVersion );
		wp_register_script( 'angular-file-input',
		                    "{$baseUrl}assets/dist/scripts/vendor/ng-file-input.min.js",
		                    [ 'angular' ],
		                    $assetsVersion );
		wp_add_inline_script( 'angular', sprintf("var totalcontestAjaxURL = '%s'", esc_js(wp_nonce_url( admin_url( 'admin-ajax.php' ), 'totalcontest' ))) );

		wp_register_script( 'platformjs',
		                    "{$baseUrl}assets/dist/scripts/vendor/platform.js",
		                    [ 'angular' ],
		                    $assetsVersion );

		wp_register_style( 'totalcontest-admin-totalcore',
		                   "{$baseUrl}assets/dist/styles/admin-totalcore.css",
		                   [],
		                   $assetsVersion );

		wp_register_script( 'totalcontest-admin-dashboard',
		                    "{$baseUrl}assets/dist/scripts/dashboard.js",
		                    [ 'angular', 'angular-resource' ],
		                    $assetsVersion );
		wp_register_style( 'totalcontest-admin-dashboard',
		                   "{$baseUrl}assets/dist/styles/admin-dashboard.css",
		                   [ 'totalcontest-admin-totalcore' ],
		                   $assetsVersion );

		wp_register_script( 'totalcontest-admin-contest-editor',
		                    "{$baseUrl}assets/dist/scripts/contest-editor.js",
		                    [
			                    'jquery-datetimepicker',
			                    'wp-color-picker',
			                    'angular',
			                    'angular-dnd-lists',
			                    'angular-resource',
		                    ],
		                    $assetsVersion );
		wp_register_style( 'totalcontest-admin-contest-editor',
		                   "{$baseUrl}assets/dist/styles/admin-contest-editor.css",
		                   [ 'jquery-datetimepicker', 'wp-color-picker', 'totalcontest-admin-totalcore' ],
		                   $assetsVersion );

		wp_register_script( 'totalcontest-admin-submission-editor',
		                    "{$baseUrl}assets/dist/scripts/submission-editor.js",
		                    [ 'angular', 'angular-resource' ],
		                    $assetsVersion );
		wp_register_style( 'totalcontest-admin-submission-editor',
		                   "{$baseUrl}assets/dist/styles/admin-submission-editor.css",
		                   [ 'totalcontest-admin-totalcore' ],
		                   $assetsVersion );

		wp_register_style( 'totalcontest-admin-contests-listing',
		                   "{$baseUrl}assets/dist/styles/admin-contests-listing.css",
		                   [],
		                   $assetsVersion );

		wp_register_script( 'totalcontest-admin-submissions-listing',
		                    "{$baseUrl}assets/dist/scripts/submissions-listing.js",
		                    [ 'angular', 'angular-resource' ],
		                    $assetsVersion );
		wp_register_style( 'totalcontest-admin-submissions-listing',
		                   "{$baseUrl}assets/dist/styles/admin-submissions-listing.css",
		                   [ 'totalcontest-admin-totalcore' ],
		                   $assetsVersion );

		wp_register_script( 'totalcontest-admin-log',
		                    "{$baseUrl}assets/dist/scripts/log.js",
		                    [ 'angular', 'angular-resource', 'platformjs', 'jquery-datetimepicker' ],
		                    $assetsVersion );
		wp_register_style( 'totalcontest-admin-log',
		                   "{$baseUrl}assets/dist/styles/admin-log.css",
		                   [ 'totalcontest-admin-totalcore', 'jquery-datetimepicker' ],
		                   $assetsVersion );

		wp_register_script( 'totalcontest-admin-modules',
		                    "{$baseUrl}assets/dist/scripts/modules.js",
		                    [ 'angular', 'angular-resource', 'angular-file-input' ],
		                    $assetsVersion );
		wp_register_style( 'totalcontest-admin-modules',
		                   "{$baseUrl}assets/dist/styles/admin-modules.css",
		                   [ 'totalcontest-admin-totalcore' ],
		                   $assetsVersion );

		wp_register_script( 'totalcontest-admin-options',
		                    "{$baseUrl}assets/dist/scripts/options.js",
		                    [ 'angular', 'angular-resource' ],
		                    $assetsVersion );
		wp_register_style( 'totalcontest-admin-options',
		                   "{$baseUrl}assets/dist/styles/admin-options.css",
		                   [ 'totalcontest-admin-totalcore' ],
		                   $assetsVersion );

		wp_register_script( 'totalcontest-admin-onboarding',
		                    "{$baseUrl}assets/dist/scripts/onboarding.js",
		                    [ 'angular', 'jquery', 'wp-util', 'angular-resource' ],
		                    $assetsVersion );

		
		// ------------------------------
		// Upgrade to pro
		// ------------------------------
		/**
		 * @asset-script totalcontest-admin-options
		 */
		wp_register_style( 'totalcontest-admin-upgrade-to-pro',
		                   "{$baseUrl}assets/dist/styles/admin-upgrade-to-pro.css",
		                   [ 'totalcontest-admin-totalcore' ],
		                   $assetsVersion );
		
	}

	public function page() {
		echo $this->currentPage;
	}

	/**
	 * @return mixed
	 */
	public function footerText() {
		$text = wp_kses( __( '{{product}} is part of <a href="{{totalsuite}}" target="_blank">TotalSuite</a>, a suite of robust and maintained plugins for WordPress.',
		                     'totalcontest' ),
		                 [ 'a' => [ 'href' => [] ] ] );

		return Strings::template( $text,
		                          [
			                          'product'    => $this->env['name'],
			                          'totalsuite' => add_query_arg( [
				                                                         'utm_source'   => 'in-app',
				                                                         'utm_medium'   => 'footer',
				                                                         'utm_campaign' => 'totalcontest',
			                                                         ],
			                                                         $this->env['links.totalsuite'] ),
		                          ] );
	}

	/**
	 * @return string
	 */
	public function footerVersion() {
		return "{$this->env['name']} {$this->env['version']}";
	}

	/**
	 * Add direction (rtl|ltr) to body css classes.
	 *
	 * @param $classes
	 *
	 * @return string
	 */
	public function directionClass( $classes ) {
		return $classes . ( is_rtl() ? 'is-rtl' : ' is-ltr' );
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit