403Webshell
Server IP : 192.64.118.117  /  Your IP : 18.226.28.28
Web Server : LiteSpeed
System : Linux premium56.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64
User : thecgapy ( 1160)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/thecgapy/www/wp-content/plugins/testimonials-showcase/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/thecgapy/www/wp-content/plugins/testimonials-showcase/includes/class-ordering.php
<?php
/*
Based on the code by Jake Goldman, 10up -  http://10up.com/plugins/simple-page-ordering-wordpress/
Licenced under GPLv2
*/

if ( !class_exists( 'cmshowcase_ordering' ) ) {
	class cmshowcase_ordering {

		/**
		 * Handles initializing this class and returning the singleton instance after it's been cached.
		 *
		 * @return null|Simple_page_Ordering
		 */
		public static function get_instance($cpt) {
			// Store the instance locally to avoid private static replication
			static $instance = null;

			if ( null === $instance ) {
				$instance = new self();
				self::_add_actions();
			}

			return $instance;
		}

		/**
		 * An empty constructor
		 */
		public function __construct() { /* Purposely do nothing here */ }

		/**
		 * Handles registering hooks that initialize this plugin.
		 * CUSTOM CHANGED
		 */
		public static function _add_actions() {
			add_action( 'load-edit.php', array( __CLASS__, 'load_edit_screen' ) );
			add_action( 'wp_ajax_simple_page_ordering', array( __CLASS__, 'ajax_simple_page_ordering' ) );
			//add_action( 'plugins_loaded', array( __CLASS__, 'load_textdomain' ) );
		}

		

		/**
		 * Load up page ordering scripts for the edit screen
		 * CUSTOM CHANGED FOR SHOWCASE
		 */
		public static function load_edit_screen() {
			
			$screen = get_current_screen();
			$post_type = $screen->post_type;

			if($post_type=='ttshowcase') {

				// is post type sortable?
				$sortable = ( post_type_supports( $post_type, 'page-attributes' ) || is_post_type_hierarchical( $post_type ) );		// check permission
				if ( ! $sortable = apply_filters( 'simple_page_ordering_is_sortable', $sortable, $post_type ) ) {
					return;
				}

				// does user have the right to manage these post objects?
				if ( ! self::check_edit_others_caps( $post_type ) ) {
					return;
				}

				add_filter( 'views_' . $screen->id, array( __CLASS__, 'sort_by_order_link' )  );		// add view by menu order to views
				add_action( 'wp', array( __CLASS__, 'wp' ) );
				add_action( 'admin_head', array( __CLASS__, 'admin_head' ) );

			}

			
		}

		/**
		 * when we load up our posts query, if we're actually sorting by menu order, initialize sorting scripts
		 * CUSTOM CHANGED
		 */
		public static function wp() {
			if ( 0 === strpos( get_query_var('orderby'), 'menu_order' ) ) {

				$script_name =  '/includes/js/ordering.js';
				wp_enqueue_script( 'cmshowcase-ordering', plugins_url( $script_name, DIRNAME(__FILE__) ), array('jquery-ui-sortable'), '2.1', true );
				wp_enqueue_style( 'cmshowcase-admin', plugins_url( '/includes/css/admin.css', DIRNAME(__FILE__) ) );
			}

		}

		/**
		 * Add page ordering help to the help tab
		 */
		public static function admin_head() {
			$screen = get_current_screen();
			$screen->add_help_tab(array(
				'id' => 'simple_page_ordering_help_tab',
				'title' => 'Simple Page Ordering',
				'content' => '<p>' . __( 'To reposition an item, simply drag and drop the row by "clicking and holding" it anywhere (outside of the links and form controls) and moving it to its new position.', 'ttshowcase' ) . '</p>',
			));
		}

		public static function ajax_simple_page_ordering() {
			// check and make sure we have what we need
			if ( empty( $_POST['id'] ) || ( !isset( $_POST['previd'] ) && !isset( $_POST['nextid'] ) ) ) {
				die(-1);
			}

			// real post?
			if ( ! $post = get_post( $_POST['id'] ) ) {
				die(-1);
			}

			// does user have the right to manage these post objects?
			if ( ! self::check_edit_others_caps( $post->post_type ) ) {
				die(-1);
			}

			// badly written plug-in hooks for save post can break things
			if ( ! defined( 'WP_DEBUG' ) || ! WP_DEBUG ) {
				error_reporting( 0 );
			}

			$previd = empty( $_POST['previd'] ) ? false : (int) $_POST['previd'];
			$nextid = empty( $_POST['nextid'] ) ? false : (int) $_POST['nextid'];
			$start = empty( $_POST['start'] ) ? 1 : (int) $_POST['start'];
			$excluded = empty( $_POST['excluded'] ) ? array( $post->ID ) : array_filter( (array) $_POST['excluded'], 'intval' );

			$new_pos = array(); // store new positions for ajax
			$return_data = new stdClass;

			do_action( 'simple_page_ordering_pre_order_posts', $post, $start );

			// attempt to get the intended parent... if either sibling has a matching parent ID, use that
			$parent_id = $post->post_parent;
			$next_post_parent = $nextid ? wp_get_post_parent_id( $nextid ) : false;
			if ( $previd == $next_post_parent ) {	// if the preceding post is the parent of the next post, move it inside
				$parent_id = $next_post_parent;
			} elseif ( $next_post_parent !== $parent_id ) {  // otherwise, if the next post's parent isn't the same as our parent, we need to study
				$prev_post_parent = $previd ? wp_get_post_parent_id( $previd ) : false;
				if ( $prev_post_parent !== $parent_id ) {	// if the previous post is not our parent now, make it so!
					$parent_id = ( $prev_post_parent !== false ) ? $prev_post_parent : $next_post_parent;
				}
			}
			// if the next post's parent isn't our parent, it might as well be false (irrelevant to our query)
			if ( $next_post_parent !== $parent_id ) {
				$nextid = false;
			}

			$max_sortable_posts = (int) apply_filters( 'simple_page_ordering_limit', 50 );	// should reliably be able to do about 50 at a time
			if ( $max_sortable_posts < 5 ) {	// don't be ridiculous!
				$max_sortable_posts = 50;
			}

			// we need to handle all post stati, except trash (in case of custom stati)
			$post_stati = get_post_stati(array(
				'show_in_admin_all_list' => true,
			));

			$siblings = new WP_Query(array(
				'depth'						=> 1,
				'posts_per_page'			=> $max_sortable_posts,
				'post_type' 				=> $post->post_type,
				'post_status' 				=> $post_stati,
				'post_parent' 				=> $parent_id,
				'orderby' 					=> 'menu_order title',
				'order' 					=> 'ASC',
				'post__not_in'				=> $excluded,
				'update_post_term_cache'	=> false,
				'update_post_meta_cache'	=> false,
				'suppress_filters' 			=> true,
				'ignore_sticky_posts'		=> true,
			)); // fetch all the siblings (relative ordering)

			// don't waste overhead of revisions on a menu order change (especially since they can't *all* be rolled back at once)
			remove_action( 'pre_post_update', 'wp_save_post_revision' );

			foreach( $siblings->posts as $sibling ) :

				// don't handle the actual post
				if ( $sibling->ID === $post->ID ) {
					continue;
				}

				// if this is the post that comes after our repositioned post, set our repositioned post position and increment menu order
				if ( $nextid === $sibling->ID ) {
					wp_update_post(array(
						'ID'			=> $post->ID,
						'menu_order'	=> $start,
						'post_parent'	=> $parent_id,
					));
					$ancestors = get_post_ancestors( $post->ID );
					$new_pos[$post->ID] = array(
						'menu_order'	=> $start,
						'post_parent'	=> $parent_id,
						'depth'			=> count( $ancestors ),
					);
					$start++;
				}

				// if repositioned post has been set, and new items are already in the right order, we can stop
				if ( isset( $new_pos[$post->ID] ) && $sibling->menu_order >= $start ) {
					$return_data->next = false;
					break;
				}

				// set the menu order of the current sibling and increment the menu order
				if ( $sibling->menu_order != $start ) {
					wp_update_post(array(
						'ID' 			=> $sibling->ID,
						'menu_order'	=> $start,
					));
				}
				$new_pos[$sibling->ID] = $start;
				$start++;

				if ( !$nextid && $previd == $sibling->ID ) {
					wp_update_post(array(
						'ID' 			=> $post->ID,
						'menu_order' 	=> $start,
						'post_parent' 	=> $parent_id
					));
					$ancestors = get_post_ancestors( $post->ID );
					$new_pos[$post->ID] = array(
						'menu_order'	=> $start,
						'post_parent' 	=> $parent_id,
						'depth' 		=> count($ancestors) );
					$start++;
				}

			endforeach;

			// max per request
			if ( !isset( $return_data->next ) && $siblings->max_num_pages > 1 ) {
				$return_data->next = array(
					'id' 		=> $post->ID,
					'previd' 	=> $previd,
					'nextid' 	=> $nextid,
					'start'		=> $start,
					'excluded'	=> array_merge( array_keys( $new_pos ), $excluded ),
				);
			} else {
				$return_data->next = false;
			}

			do_action( 'simple_page_ordering_ordered_posts', $post, $new_pos );

			if ( ! $return_data->next ) {
				// if the moved post has children, we need to refresh the page (unless we're continuing)
				$children = get_posts(array(
					'numberposts'				=> 1,
					'post_type' 				=> $post->post_type,
					'post_status' 				=> $post_stati,
					'post_parent' 				=> $post->ID,
					'fields'					=> 'ids',
					'update_post_term_cache'	=> false,
					'update_post_meta_cache'	=> false,
				));

				if ( ! empty( $children ) ) {
					die( 'children' );
				}
			}

			$return_data->new_pos = $new_pos;

			die( json_encode( $return_data ) );
		}

		/**
		 * Append a sort by order link to the post actions
		 *
		 * CUSTOM CHANGED FOR SHOWCASE
		 *
		 * @param string $views
		 * @return string
		 */
		public static function sort_by_order_link( $views ) {

			if(get_query_var('orderby') != 'menu_order') {

				$class = ( get_query_var('orderby') == 'menu_order title' ) ? 'current' : '';
				$query_string = esc_url( remove_query_arg(array( 'orderby', 'order' )) );
				//$query_string = add_query_arg( 'orderby', urlencode('menu_order title'), $query_string );
				$views['byorder'] = sprintf('<a href="%s" class="%s">%s</a>', $query_string, $class, __("Sort by Order", 'ttshowcase'));
					

			} else {

				$views['byorder'] = __("Drag & Drop Ordering Activated", 'ttshowcase');

			}


			
			return $views;
		}

		/**
		 * Checks to see if the current user has the capability to "edit others" for a post type
		 *
		 * @param string $post_type Post type name
		 * @return bool True or false
		 */
		private static function check_edit_others_caps( $post_type ) {
			$post_type_object = get_post_type_object( $post_type );
			$edit_others_cap = empty( $post_type_object ) ? 'edit_others_' . $post_type . 's' : $post_type_object->cap->edit_others_posts;
			return apply_filters( 'simple_page_ordering_edit_rights', current_user_can( $edit_others_cap ), $post_type );
		}
	}



}


?>

Youez - 2016 - github.com/yon3zu
LinuXploit