* @since 2.5.0
* @param bool $got_rewrite Whether Apache and mod_rewrite are present.
*/
- return apply_filters('got_rewrite', $got_rewrite);
+ return apply_filters( 'got_rewrite', $got_rewrite );
}
/**
return array();
$tokens = token_get_all( $content );
+ $count = count( $tokens );
$functions = array();
$ignore_functions = array();
- for ( $t = 0, $count = count( $tokens ); $t < $count; $t++ ) {
- if ( !is_array( $tokens[$t] ) ) continue;
- if ( T_STRING == $tokens[$t][0] && ( '(' == $tokens[ $t + 1 ] || '(' == $tokens[ $t + 2 ] ) ) {
+ for ( $t = 0; $t < $count - 2; $t++ ) {
+ if ( ! is_array( $tokens[ $t ] ) ) {
+ continue;
+ }
+
+ if ( T_STRING == $tokens[ $t ][0] && ( '(' == $tokens[ $t + 1 ] || '(' == $tokens[ $t + 2 ] ) ) {
// If it's a function or class defined locally, there's not going to be any docs available
if ( ( isset( $tokens[ $t - 2 ][1] ) && in_array( $tokens[ $t - 2 ][1], array( 'function', 'class' ) ) ) || ( isset( $tokens[ $t - 2 ][0] ) && T_OBJECT_OPERATOR == $tokens[ $t - 1 ][0] ) ) {
$ignore_functions[] = $tokens[$t][1];
$functions = array_unique( $functions );
sort( $functions );
+
+ /**
+ * Filter the list of functions/classes to be ignored from the documentation lookup.
+ *
+ * @since 2.8.0
+ *
+ * @param array $ignore_functions Functions/Classes to be ignored.
+ */
$ignore_functions = apply_filters( 'documentation_ignore_functions', $ignore_functions );
+
$ignore_functions = array_unique( $ignore_functions );
$out = array();
/**
* Saves option for number of rows when listing posts, pages, comments, etc.
*
- * @since 2.8
-**/
+ * @since 2.8.0
+ */
function set_screen_options() {
if ( isset($_POST['wp_screen_options']) && is_array($_POST['wp_screen_options']) ) {
return;
break;
default:
- $value = apply_filters('set-screen-option', false, $option, $value);
+
+ /**
+ * Filter a screen option value before it is set.
+ *
+ * The filter can also be used to modify non-standard [items]_per_page
+ * settings. See the parent function for a full list of standard options.
+ *
+ * Returning false to the filter will skip saving the current option.
+ *
+ * @since 2.8.0
+ *
+ * @see set_screen_options()
+ *
+ * @param bool|int $value Screen option value. Default false to skip.
+ * @param string $option The option name.
+ * @param int $value The number of rows to use.
+ */
+ $value = apply_filters( 'set-screen-option', false, $option, $value );
+
if ( false === $value )
return;
break;
/**
* Check lock status for posts displayed on the Posts screen
*
- * @since 3.6
+ * @since 3.6.0
*/
function wp_check_locked_posts( $response, $data, $screen_id ) {
$checked = array();
/**
* Check lock status on the New/Edit Post screen and refresh the lock
*
- * @since 3.6
+ * @since 3.6.0
*/
function wp_refresh_post_lock( $response, $data, $screen_id ) {
if ( array_key_exists( 'wp-refresh-post-lock', $data ) ) {
/**
* Check nonce expiration on the New/Edit Post screen and refresh if needed
*
- * @since 3.6
+ * @since 3.6.0
*/
function wp_refresh_post_nonces( $response, $data, $screen_id ) {
if ( array_key_exists( 'wp-refresh-post-nonces', $data ) ) {
if ( 2 === wp_verify_nonce( $received['post_nonce'], 'update-post_' . $post_id ) ) {
$response['wp-refresh-post-nonces'] = array(
'replace' => array(
- 'autosavenonce' => wp_create_nonce('autosave'),
'getpermalinknonce' => wp_create_nonce('getpermalink'),
'samplepermalinknonce' => wp_create_nonce('samplepermalink'),
'closedpostboxesnonce' => wp_create_nonce('closedpostboxes'),
return $settings;
}
add_filter( 'heartbeat_settings', 'wp_heartbeat_set_suspension' );
+
+/**
+ * Autosave with heartbeat
+ *
+ * @since 3.9
+ */
+function heartbeat_autosave( $response, $data ) {
+ if ( ! empty( $data['wp_autosave'] ) ) {
+ $saved = wp_autosave( $data['wp_autosave'] );
+
+ if ( is_wp_error( $saved ) ) {
+ $response['wp_autosave'] = array( 'success' => false, 'message' => $saved->get_error_message() );
+ } elseif ( empty( $saved ) ) {
+ $response['wp_autosave'] = array( 'success' => false, 'message' => __( 'Error while saving.' ) );
+ } else {
+ /* translators: draft saved date format, see http://php.net/date */
+ $draft_saved_date_format = __( 'g:i:s a' );
+ /* translators: %s: date and time */
+ $response['wp_autosave'] = array( 'success' => true, 'message' => sprintf( __( 'Draft saved at %s.' ), date_i18n( $draft_saved_date_format ) ) );
+ }
+ }
+
+ return $response;
+}
+// Run later as we have to set DOING_AUTOSAVE for back-compat
+add_filter( 'heartbeat_received', 'heartbeat_autosave', 500, 2 );