updateChecker = $updateChecker; $title = sprintf( 'PUC (%s)', esc_attr( $this->updateChecker->slug ), $this->updateChecker->slug ); parent::Debug_Bar_Panel( $title ); } public function render() { printf( '
', esc_attr( $this->updateChecker->slug ), esc_attr( wp_create_nonce( 'puc-ajax' ) ) ); $responseBox = ''; echo '

Configuration

'; echo ''; $this->row( 'Plugin file', htmlentities( $this->updateChecker->pluginFile ) ); $this->row( 'Slug', htmlentities( $this->updateChecker->slug ) ); $this->row( 'DB option', htmlentities( $this->updateChecker->optionName ) ); $requestInfoButton = function_exists( 'get_submit_button' ) ? get_submit_button( 'Request Info', 'secondary', 'puc-request-info-button', false ) : ''; $this->row( 'Metadata URL', htmlentities( $this->updateChecker->metadataUrl ) . ' ' . $requestInfoButton . $responseBox ); if ( $this->updateChecker->checkPeriod > 0 ) { $this->row( 'Automatic checks', 'Every ' . $this->updateChecker->checkPeriod . ' hours' ); } else { $this->row( 'Automatic checks', 'Disabled' ); } echo '
'; echo '

Status

'; echo ''; $state = $this->updateChecker->getUpdateState(); $checkNowButton = function_exists( 'get_submit_button' ) ? get_submit_button( 'Check Now', 'secondary', 'puc-check-now-button', false ) : ''; if ( isset( $state, $state->lastCheck ) ) { $this->row( 'Last check', $this->formatTimeWithDelta( $state->lastCheck ) . ' ' . $checkNowButton . $responseBox ); } else { $this->row( 'Last check', 'Never' ); } $nextCheck = wp_next_scheduled( $this->updateChecker->getCronHookName() ); $this->row( 'Next automatic check', $this->formatTimeWithDelta( $nextCheck ) ); if ( isset( $state, $state->checkedVersion ) ) { $this->row( 'Checked version', htmlentities( $state->checkedVersion ) ); $this->row( 'Cached update', $state->update ); } $this->row( 'Update checker class', htmlentities( get_class( $this->updateChecker ) ) ); echo '
'; $update = $this->updateChecker->getUpdate(); if ( $update !== null ) { echo '

An Update Is Available

'; echo ''; $fields = array( 'version', 'download_url', 'slug', 'homepage', 'upgrade_notice' ); foreach ( $fields as $field ) { $this->row( ucwords( str_replace( '_', ' ', $field ) ), htmlentities( $update->$field ) ); } echo '
'; } else { echo '

No updates currently available

'; } echo '
'; } private function formatTimeWithDelta( $unixTime ) { if ( empty( $unixTime ) ) { return 'Never'; } $delta = time() - $unixTime; $result = human_time_diff( time(), $unixTime ); if ( $delta < 0 ) { $result = 'after ' . $result; } else { $result = $result . ' ago'; } $result .= ' (' . $this->formatTimestamp( $unixTime ) . ')'; return $result; } private function formatTimestamp( $unixTime ) { return gmdate( 'Y-m-d H:i:s', $unixTime + ( get_option( 'gmt_offset' ) * 3600 ) ); } private function row( $name, $value ) { if ( is_object( $value ) || is_array( $value ) ) { $value = '
' . htmlentities( print_r( $value, true ) ) . '
'; } else if ( $value === null ) { $value = 'null'; } printf( '%1$s %2$s', $name, $value ); } } }