Index: src/wp-includes/cron.php
===================================================================
--- src/wp-includes/cron.php	(revision 25944)
+++ src/wp-includes/cron.php	(working copy)
@@ -26,8 +26,22 @@
 		return;
 
 	$crons = _get_cron_array();
-	$event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => false, 'args' => $args );
-	$event = apply_filters('schedule_event', $event);
+	$event = clone (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => false, 'args' => $args );
+	/**
+	 * Filter is fired when a new event is added to the cron schedule.
+	 *
+	 * @since 3.1.0
+	 *
+	 * @param array(object) $event {
+	 *    The event being scheduled as on object with the following properties: hook, timestamp, schedule, args.
+	 *
+	 *    @type int    $timestamp  The first time that you want the event to occur.
+	 *    @type string $recurrence How often the event should reoccur.
+	 *    @type string $hook       The name of an action hook to execute.
+	 *    @type array  $args       Arguments to pass to the hook function(s).
+	 * }
+	 */
+        $event = apply_filters( 'schedule_event', $event );
 
 	// A plugin disallowed this event
 	if ( ! $event )
@@ -68,7 +82,8 @@
 		return false;
 
 	$event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $recurrence, 'args' => $args, 'interval' => $schedules[$recurrence]['interval'] );
-	$event = apply_filters('schedule_event', $event);
+	// duplicate_hook
+        $event = apply_filters( 'schedule_event', $event );
 
 	// A plugin disallowed this event
 	if ( ! $event )
@@ -243,13 +258,38 @@
 
 	$doing_wp_cron = sprintf( '%.22F', $gmt_time );
 	set_transient( 'doing_cron', $doing_wp_cron );
+	/**
+	 * Filter whether to SSL verify the cron request.
+	 *
+	 * @since 2.8.0
+	 *
+	 * @type bool Default true(check), false(not check) Check to SecureSocketsLayer.
+	*/
+        $args_apply_filters = apply_filters( 'https_local_ssl_verify', TRUE );
+        $cron_request_array = array(
+            'url' => site_url( 'wp-cron.php?doing_wp_cron=' . $doing_wp_cron ),
+            'key' => $doing_wp_cron,
+            'args' => array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => $args_apply_filters )
+        );
+	/**
+	 * Filter the cron_url in wp_remote_post().
+	 *
+	 * @since 3.5.0
+	 *
+	 * @param array $cron_request_array {
+	 *    Set the cron_url (URL, key, time to timeout, whether to blocking and chekck to SSL).
+	 *
+	 *    @type string url SiteURL/wp-crom.php?doing_wp_cron="22 digit gmt microtime".
+	 *    @type int    key 22 digit gmt microtime.
+	 *    @type array  args {
+	 *        @type int  timeout                                                         Time to Timeout.
+	 *        @type bool blocking            Default false(blocking), true(not blocking) Whether to blocking.
+	 *        @type bool $args_apply_filters Default true(check), false(not check)       Check to SecureSocketsLayer.
+	 *    }
+	 * }
+	 */
+	$cron_request = apply_filters( 'cron_request', $cron_request_array );
 
-	$cron_request = apply_filters( 'cron_request', array(
-		'url' => site_url( 'wp-cron.php?doing_wp_cron=' . $doing_wp_cron ),
-		'key' => $doing_wp_cron,
-		'args' => array( 'timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters( 'https_local_ssl_verify', true ) )
-	) );
-
 	wp_remote_post( $cron_request['url'], $cron_request['args'] );
 }
 
@@ -317,12 +357,48 @@
  * @return array
  */
 function wp_get_schedules() {
-	$schedules = array(
-		'hourly'     => array( 'interval' => HOUR_IN_SECONDS,      'display' => __( 'Once Hourly' ) ),
-		'twicedaily' => array( 'interval' => 12 * HOUR_IN_SECONDS, 'display' => __( 'Twice Daily' ) ),
-		'daily'      => array( 'interval' => DAY_IN_SECONDS,       'display' => __( 'Once Daily' ) ),
-	);
-	return array_merge( apply_filters( 'cron_schedules', array() ), $schedules );
+        $interval   = array( 
+                'hourly'     => HOUR_IN_SECONDS,
+                'twicedaily' => 12 * HOUR_IN_SECONDS,
+                'daily'      => DAY_IN_SECONDS
+        );
+        $display    = array(
+                'hourly'     => __( 'Once Hourly' ),
+                'twicedaily' => __( 'Twice Daily' ),
+                'daily'      => __( 'Once Daily' )
+        );
+        $hourly     = array( $interval['hourly'], $display['hourly'] );
+        $twicedaily = array( $interval['twicedaily'], $display['twicedaily'] );
+        $daily      = array( $interval['daily'], $display['daily'] );
+        $schedules  = array(
+		'hourly'     => $hourly,
+		'twicedaily' => $twicedaily,
+		'daily'      => $daily
+        );
+	/**
+	 * Filter the plugin to generate cron schedules in the wp_get_schedules function.
+	 *
+	 * @since 2.1.0
+	 *
+	 * @param array $schedules {
+	 *    The value is an array with two keys,'interval' and 'display'.
+	 *
+	 *    @type array 'hourly' {
+	 *        @type int    $interval The 'interval' is a number in seconds of when the cron job should run.
+	 *        @type string $display  The 'display' is the label name for this schedule.
+	 *    }
+	 *    @type array 'twicedaily' {
+	 *        @type int    $interval The 'interval' is a number in seconds of when the cron job should run.
+	 *        @type string $display  The 'display' is the label name for this schedule.
+	 *    }
+	 *    @type array 'daily' {
+	 *        @type int    $interval The 'interval' is a number in seconds of when the cron job should run.
+	 *        @type string $display  The 'display' is the label name for this schedule.
+	 *    }
+	 * }
+	 */
+        $array_merge = array_merge( apply_filters( 'cron_schedules', array() ), $schedules );
+	return $array_merge;
 }
 
 /**
