2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Upgrade  API :  Core_Upgrader  class 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ package  WordPress 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ subpackage  Upgrader 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ since  4.6 . 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Core  class  used  for  updating  core . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  It  allows  for  WordPress  to  upgrade  itself  in  combination  with 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  the  wp - admin / includes / update - core . php  file . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ since  2.8 . 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ since  4.6 . 0  Moved  to  its  own  file  from  wp - admin / includes / class - wp - upgrader . php . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ see  WP_Upgrader 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  Core_Upgrader  extends  WP_Upgrader  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Initialize  the  upgrade  strings . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ since  2.8 . 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  upgrade_strings ()  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> strings [ 'up_to_date' ]  =  __ (  'WordPress is at the latest version.'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> strings [ 'locked' ]      =  __ (  'Another update is currently in progress.'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> strings [ 'no_package' ]  =  __ (  'Update package not available.'  ); 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										/* translators: %s: package URL */ 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$this -> strings [ 'downloading_package' ]    =  sprintf (  __ (  'Downloading update from %s…'  ),  '<span class="code">%s</span>'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> strings [ 'unpack_package' ]         =  __ (  'Unpacking the update…'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> strings [ 'copy_failed' ]            =  __ (  'Could not copy files.'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> strings [ 'copy_failed_space' ]      =  __ (  'Could not copy files. You may have run out of disk space.'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> strings [ 'start_rollback' ]         =  __ (  'Attempting to roll back to previous version.'  ); 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$this -> strings [ 'rollback_was_required' ]  =  __ (  'Due to an error during updating, WordPress has rolled back to your previous version.'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Upgrade  WordPress  core . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ since  2.8 . 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ global  WP_Filesystem_Base  $wp_filesystem                 WordPress  filesystem  subclass . 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 *  @ global  callable            $_wp_filesystem_direct_method 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  object  $current  Response  object  for  whether  WordPress  is  current . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  array   $args  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *         Optional .  Arguments  for  upgrading  WordPress  core .  Default  empty  array . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *         @ type  bool  $pre_check_md5     Whether  to  check  the  file  checksums  before 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *                                      attempting  the  upgrade .  Default  true . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *         @ type  bool  $attempt_rollback  Whether  to  attempt  to  rollback  the  chances  if 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *                                      there  is  a  problem .  Default  false . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *         @ type  bool  $do_rollback       Whether  to  perform  this  " upgrade "  as  a  rollback . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *                                      Default  false . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  null | false | WP_Error  False  or  WP_Error  on  failure ,  null  on  success . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  upgrade (  $current ,  $args  =  array ()  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $wp_filesystem ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										include (  ABSPATH  .  WPINC  .  '/version.php'  );  // $wp_version;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$start_time  =  time (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$defaults     =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'pre_check_md5'                 =>  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'attempt_rollback'              =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'do_rollback'                   =>  false , 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											'allow_relaxed_file_ownership'  =>  false , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$parsed_args  =  wp_parse_args (  $args ,  $defaults  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> init (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$this -> upgrade_strings (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Is an update available?
 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  (  !  isset (  $current -> response  )  ||  $current -> response  ==  'latest'  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  new  WP_Error (  'up_to_date' ,  $this -> strings [ 'up_to_date' ]  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$res  =  $this -> fs_connect (  array (  ABSPATH ,  WP_CONTENT_DIR  ),  $parsed_args [ 'allow_relaxed_file_ownership' ]  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  !  $res  ||  is_wp_error (  $res  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  $res ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$wp_dir  =  trailingslashit (  $wp_filesystem -> abspath ()  ); 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$partial  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  (  $parsed_args [ 'do_rollback' ]  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											$partial  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  elseif  (  $parsed_args [ 'pre_check_md5' ]  &&  !  $this -> check_files ()  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											$partial  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										/* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 *  If  partial  update  is  returned  from  the  API ,  use  that ,  unless  we ' re  doing 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 *  a  reinstallation .  If  we  cross  the  new_bundled  version  number ,  then  use 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 *  the  new_bundled  zip .  Don ' t  though  if  the  constant  is  set  to  skip  bundled  items . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 *  If  the  API  returns  a  no_content  zip ,  go  with  it .  Finally ,  default  to  the  full  zip . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										 */ 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  (  $parsed_args [ 'do_rollback' ]  &&  $current -> packages -> rollback  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											$to_download  =  'rollback' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  elseif  (  $current -> packages -> partial  &&  'reinstall'  !=  $current -> response  &&  $wp_version  ==  $current -> partial_version  &&  $partial  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											$to_download  =  'partial' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  elseif  (  $current -> packages -> new_bundled  &&  version_compare (  $wp_version ,  $current -> new_bundled ,  '<'  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											&&  (  !  defined (  'CORE_UPGRADE_SKIP_NEW_BUNDLED'  )  ||  !  CORE_UPGRADE_SKIP_NEW_BUNDLED  )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											$to_download  =  'new_bundled' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  elseif  (  $current -> packages -> no_content  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											$to_download  =  'no_content' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										}  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											$to_download  =  'full' ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Lock to prevent multiple Core Updates occurring
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$lock  =  WP_Upgrader :: create_lock (  'core_updater' ,  15  *  MINUTE_IN_SECONDS  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  !  $lock  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  new  WP_Error (  'locked' ,  $this -> strings [ 'locked' ]  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$download  =  $this -> download_package (  $current -> packages -> $to_download  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  is_wp_error (  $download  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											WP_Upgrader :: release_lock (  'core_updater'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  $download ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$working_dir  =  $this -> unpack_package (  $download  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  is_wp_error (  $working_dir  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											WP_Upgrader :: release_lock (  'core_updater'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  $working_dir ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Copy update-core.php from the new version into place.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  (  !  $wp_filesystem -> copy (  $working_dir  .  '/wordpress/wp-admin/includes/update-core.php' ,  $wp_dir  .  'wp-admin/includes/update-core.php' ,  true  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$wp_filesystem -> delete (  $working_dir ,  true  ); 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											WP_Upgrader :: release_lock (  'core_updater'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  new  WP_Error (  'copy_failed_for_update_core_file' ,  __ (  'The update cannot be installed because we will be unable to copy some files. This is usually due to inconsistent file permissions.'  ),  'wp-admin/includes/update-core.php'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$wp_filesystem -> chmod (  $wp_dir  .  'wp-admin/includes/update-core.php' ,  FS_CHMOD_FILE  ); 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										require_once (  ABSPATH  .  'wp-admin/includes/update-core.php'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  !  function_exists (  'update_core'  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											WP_Upgrader :: release_lock (  'core_updater'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  new  WP_Error (  'copy_failed_space' ,  $this -> strings [ 'copy_failed_space' ]  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$result  =  update_core (  $working_dir ,  $wp_dir  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// In the event of an issue, we may be able to roll back.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  $parsed_args [ 'attempt_rollback' ]  &&  $current -> packages -> rollback  &&  !  $parsed_args [ 'do_rollback' ]  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$try_rollback  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  (  is_wp_error (  $result  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$error_code  =  $result -> get_error_code (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												/* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 *  Not  all  errors  are  equal .  These  codes  are  critical :  copy_failed__copy_dir , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 *  mkdir_failed__copy_dir ,  copy_failed__copy_dir_retry ,  and  disk_full . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 *  do_rollback  allows  for  update_core ()  to  trigger  a  rollback  if  needed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												 */ 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if  (  false  !==  strpos (  $error_code ,  'do_rollback'  )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
													$try_rollback  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  elseif  (  false  !==  strpos (  $error_code ,  '__copy_dir'  )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
													$try_rollback  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												}  elseif  (  'disk_full'  ===  $error_code  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
													$try_rollback  =  true ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  (  $try_rollback  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												/** This filter is documented in wp-admin/includes/update-core.php */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												apply_filters (  'update_feedback' ,  $result  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												/** This filter is documented in wp-admin/includes/update-core.php */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												apply_filters (  'update_feedback' ,  $this -> strings [ 'start_rollback' ]  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$rollback_result  =  $this -> upgrade (  $current ,  array_merge (  $parsed_args ,  array (  'do_rollback'  =>  true  )  )  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$original_result  =  $result ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												$result           =  new  WP_Error ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													'rollback_was_required' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$this -> strings [ 'rollback_was_required' ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													( object )  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														'update'    =>  $original_result , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														'rollback'  =>  $rollback_result , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												); 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										/** This action is documented in wp-admin/includes/class-wp-upgrader.php */ 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										do_action ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'upgrader_process_complete' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$this , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'action'  =>  'update' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'type'    =>  'core' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										); 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Clear the current updates
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										delete_site_transient (  'update_core'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  !  $parsed_args [ 'do_rollback' ]  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											$stats  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'update_type'       =>  $current -> response , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'success'           =>  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'fs_method'         =>  $wp_filesystem -> method , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'fs_method_forced'  =>  defined (  'FS_METHOD'  )  ||  has_filter (  'filesystem_method'  ), 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												'fs_method_direct'  =>  !  empty (  $GLOBALS [ '_wp_filesystem_direct_method' ]  )  ?  $GLOBALS [ '_wp_filesystem_direct_method' ]  :  '' , 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												'time_taken'        =>  time ()  -  $start_time , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'reported'          =>  $wp_version , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												'attempted'         =>  $current -> version , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  (  is_wp_error (  $result  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$stats [ 'success' ]  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Did a rollback occur?
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  (  !  empty (  $try_rollback  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$stats [ 'error_code' ]  =  $original_result -> get_error_code (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$stats [ 'error_data' ]  =  $original_result -> get_error_data (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													// Was the rollback successful? If not, collect its error too.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$stats [ 'rollback' ]  =  !  is_wp_error (  $rollback_result  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  (  is_wp_error (  $rollback_result  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$stats [ 'rollback_code' ]  =  $rollback_result -> get_error_code (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														$stats [ 'rollback_data' ]  =  $rollback_result -> get_error_data (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$stats [ 'error_code' ]  =  $result -> get_error_code (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													$stats [ 'error_data' ]  =  $result -> get_error_data (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wp_version_check (  $stats  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										WP_Upgrader :: release_lock (  'core_updater'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $result ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Determines  if  this  WordPress  Core  version  should  update  to  an  offered  version  or  not . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ since  3.7 . 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param  string  $offered_ver  The  offered  version ,  of  the  format  x . y . z . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  bool  True  if  we  should  update  to  the  offered  version ,  otherwise  false . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  static  function  should_update_to_version (  $offered_ver  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										include (  ABSPATH  .  WPINC  .  '/version.php'  );  // $wp_version; // x.y.z
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										$current_branch                  =  implode (  '.' ,  array_slice (  preg_split (  '/[.-]/' ,  $wp_version  ),  0 ,  2  )  );  // x.y
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$new_branch                      =  implode (  '.' ,  array_slice (  preg_split (  '/[.-]/' ,  $offered_ver  ),  0 ,  2  )  );  // x.y
 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										$current_is_development_version  =  ( bool )  strpos (  $wp_version ,  '-'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// Defaults:
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$upgrade_dev    =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$upgrade_minor  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$upgrade_major  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// WP_AUTO_UPDATE_CORE = true (all), 'minor', false.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  defined (  'WP_AUTO_UPDATE_CORE'  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  (  false  ===  WP_AUTO_UPDATE_CORE  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Defaults to turned off, unless a filter allows it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$upgrade_dev  =  $upgrade_minor  =  $upgrade_major  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  elseif  (  true  ===  WP_AUTO_UPDATE_CORE  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// ALL updates for core
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$upgrade_dev  =  $upgrade_minor  =  $upgrade_major  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}  elseif  (  'minor'  ===  WP_AUTO_UPDATE_CORE  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Only minor updates for core
 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												$upgrade_dev    =  $upgrade_major  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												$upgrade_minor  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 1: If we're already on that version, not much point in updating?
 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  (  $offered_ver  ==  $wp_version  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 2: If we're running a newer version, that's a nope
 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  (  version_compare (  $wp_version ,  $offered_ver ,  '>'  )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$failure_data  =  get_site_option (  'auto_core_update_failed'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  $failure_data  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// If this was a critical update failure, cannot update.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  (  !  empty (  $failure_data [ 'critical' ]  )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Don't claim we can update on update-core.php if we have a non-critical failure logged.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  (  $wp_version  ==  $failure_data [ 'current' ]  &&  false  !==  strpos (  $offered_ver ,  '.1.next.minor'  )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Cannot update if we're retrying the same A to B update that caused a non-critical failure.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Some non-critical failures do allow retries, like download_failed.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// 3.7.1 => 3.7.2 resulted in files_not_writable, if we are still on 3.7.1 and still trying to update to 3.7.2.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  (  empty (  $failure_data [ 'retry' ]  )  &&  $wp_version  ==  $failure_data [ 'current' ]  &&  $offered_ver  ==  $failure_data [ 'attempted' ]  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 3: 3.7-alpha-25000 -> 3.7-alpha-25678 -> 3.7-beta1 -> 3.7-beta2
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  $current_is_development_version  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 *  Filters  whether  to  enable  automatic  core  updates  for  development  versions . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 *  @ since  3.7 . 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 *  @ param  bool  $upgrade_dev  Whether  to  enable  automatic  updates  for 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 *                           development  versions . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 */ 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  (  !  apply_filters (  'allow_dev_auto_core_updates' ,  $upgrade_dev  )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											// Else fall through to minor + major branches below.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 4: Minor In-branch updates (3.7.0 -> 3.7.1 -> 3.7.2 -> 3.7.4)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  $current_branch  ==  $new_branch  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 *  Filters  whether  to  enable  minor  automatic  core  updates . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 *  @ since  3.7 . 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 *  @ param  bool  $upgrade_minor  Whether  to  enable  minor  automatic  core  updates . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  apply_filters (  'allow_minor_auto_core_updates' ,  $upgrade_minor  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// 5: Major version updates (3.7.0 -> 3.8.0 -> 3.9.1)
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  version_compare (  $new_branch ,  $current_branch ,  '>'  )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 *  Filters  whether  to  enable  major  automatic  core  updates . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 *  @ since  3.7 . 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 *  @ param  bool  $upgrade_major  Whether  to  enable  major  automatic  core  updates . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  apply_filters (  'allow_major_auto_core_updates' ,  $upgrade_major  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// If we're not sure, we don't want it
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Compare  the  disk  file  checksums  against  the  expected  checksums . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ since  3.7 . 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ global  string  $wp_version 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ global  string  $wp_local_package 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  bool  True  if  the  checksums  match ,  otherwise  false . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  check_files ()  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										global  $wp_version ,  $wp_local_package ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										$checksums  =  get_core_checksums (  $wp_version ,  isset (  $wp_local_package  )  ?  $wp_local_package  :  'en_US'  ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  (  !  is_array (  $checksums  )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										foreach  (  $checksums  as  $file  =>  $checksum  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// Skip files which get updated
 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  (  'wp-content'  ==  substr (  $file ,  0 ,  10  )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  (  !  file_exists (  ABSPATH  .  $file  )  ||  md5_file (  ABSPATH  .  $file  )  !==  $checksum  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												return  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-16 20:56:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2019-03-12 09:27:46 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}