class Akismet_REST_API { /** * Register the REST API routes. */ public static function init() { if ( ! function_exists( 'register_rest_route' ) ) { // The REST API wasn't integrated into core until 4.4, and we support 4.0+ (for now). return false; } register_rest_route( 'akismet/v1', '/key', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_key' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_key' ), 'args' => array( 'key' => array( 'required' => true, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::DELETABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'delete_key' ), ) ) ); register_rest_route( 'akismet/v1', '/settings/', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_settings' ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_boolean_settings' ), 'args' => array( 'akismet_strictness' => array( 'required' => false, 'type' => 'boolean', 'description' => __( 'If true, Akismet will automatically discard the worst spam automatically rather than putting it in the spam folder.', 'akismet' ), ), 'akismet_show_user_comments_approved' => array( 'required' => false, 'type' => 'boolean', 'description' => __( 'If true, show the number of approved comments beside each comment author in the comments list page.', 'akismet' ), ), ), ) ) ); register_rest_route( 'akismet/v1', '/stats', array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_stats' ), 'args' => array( 'interval' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_interval' ), 'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ), 'default' => 'all', ), ), ) ); register_rest_route( 'akismet/v1', '/stats/(?P[\w+])', array( 'args' => array( 'interval' => array( 'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_stats' ), ) ) ); register_rest_route( 'akismet/v1', '/alert', array( array( 'methods' => WP_REST_Server::READABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'get_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::EDITABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'set_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ), array( 'methods' => WP_REST_Server::DELETABLE, 'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ), 'callback' => array( 'Akismet_REST_API', 'delete_alert' ), 'args' => array( 'key' => array( 'required' => false, 'type' => 'string', 'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ), 'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ), ), ), ) ) ); } /** * Get the current Akismet API key. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_key( $request = null ) { return rest_ensure_response( Akismet::get_api_key() ); } /** * Set the API key, if possible. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_key( $request ) { if ( defined( 'WPCOM_API_KEY' ) ) { return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be changed via the API.', 'akismet' ), array( 'status'=> 409 ) ) ); } $new_api_key = $request->get_param( 'key' ); if ( ! self::key_is_valid( $new_api_key ) ) { return rest_ensure_response( new WP_Error( 'invalid_key', __( 'The value provided is not a valid and registered API key.', 'akismet' ), array( 'status' => 400 ) ) ); } update_option( 'wordpress_api_key', $new_api_key ); return self::get_key(); } /** * Unset the API key, if possible. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function delete_key( $request ) { if ( defined( 'WPCOM_API_KEY' ) ) { return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be deleted.', 'akismet' ), array( 'status'=> 409 ) ) ); } delete_option( 'wordpress_api_key' ); return rest_ensure_response( true ); } /** * Get the Akismet settings. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_settings( $request = null ) { return rest_ensure_response( array( 'akismet_strictness' => ( get_option( 'akismet_strictness', '1' ) === '1' ), 'akismet_show_user_comments_approved' => ( get_option( 'akismet_show_user_comments_approved', '1' ) === '1' ), ) ); } /** * Update the Akismet settings. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_boolean_settings( $request ) { foreach ( array( 'akismet_strictness', 'akismet_show_user_comments_approved', ) as $setting_key ) { $setting_value = $request->get_param( $setting_key ); if ( is_null( $setting_value ) ) { // This setting was not specified. continue; } // From 4.7+, WP core will ensure that these are always boolean // values because they are registered with 'type' => 'boolean', // but we need to do this ourselves for prior versions. $setting_value = Akismet_REST_API::parse_boolean( $setting_value ); update_option( $setting_key, $setting_value ? '1' : '0' ); } return self::get_settings(); } /** * Parse a numeric or string boolean value into a boolean. * * @param mixed $value The value to convert into a boolean. * @return bool The converted value. */ public static function parse_boolean( $value ) { switch ( $value ) { case true: case 'true': case '1': case 1: return true; case false: case 'false': case '0': case 0: return false; default: return (bool) $value; } } /** * Get the Akismet stats for a given time period. * * Possible `interval` values: * - all * - 60-days * - 6-months * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_stats( $request ) { $api_key = Akismet::get_api_key(); $interval = $request->get_param( 'interval' ); $stat_totals = array(); $response = Akismet::http_post( Akismet::build_query( array( 'blog' => get_option( 'home' ), 'key' => $api_key, 'from' => $interval ) ), 'get-stats' ); if ( ! empty( $response[1] ) ) { $stat_totals[$interval] = json_decode( $response[1] ); } return rest_ensure_response( $stat_totals ); } /** * Get the current alert code and message. Alert codes are used to notify the site owner * if there's a problem, like a connection issue between their site and the Akismet API, * invalid requests being sent, etc. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function get_alert( $request ) { return rest_ensure_response( array( 'code' => get_option( 'akismet_alert_code' ), 'message' => get_option( 'akismet_alert_msg' ), ) ); } /** * Update the current alert code and message by triggering a call to the Akismet server. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function set_alert( $request ) { delete_option( 'akismet_alert_code' ); delete_option( 'akismet_alert_msg' ); // Make a request so the most recent alert code and message are retrieved. Akismet::verify_key( Akismet::get_api_key() ); return self::get_alert( $request ); } /** * Clear the current alert code and message. * * @param WP_REST_Request $request * @return WP_Error|WP_REST_Response */ public static function delete_alert( $request ) { delete_option( 'akismet_alert_code' ); delete_option( 'akismet_alert_msg' ); return self::get_alert( $request ); } private static function key_is_valid( $key ) { $response = Akismet::http_post( Akismet::build_query( array( 'key' => $key, 'blog' => get_option( 'home' ) ) ), 'verify-key' ); if ( $response[1] == 'valid' ) { return true; } return false; } public static function privileged_permission_callback() { return current_user_can( 'manage_options' ); } /** * For calls that Akismet.com makes to the site to clear outdated alert codes, use the API key for authorization. */ public static function remote_call_permission_callback( $request ) { $local_key = Akismet::get_api_key(); return $local_key && ( strtolower( $request->get_param( 'key' ) ) === strtolower( $local_key ) ); } public static function sanitize_interval( $interval, $request, $param ) { $interval = trim( $interval ); $valid_intervals = array( '60-days', '6-months', 'all', ); if ( ! in_array( $interval, $valid_intervals ) ) { $interval = 'all'; } return $interval; } public static function sanitize_key( $key, $request, $param ) { return trim( $key ); } } Kharkiv Archives - Novichok (Moscow) Times https://novichoktimes.com/tag/kharkiv/ Global News Source Wed, 23 Oct 2024 18:29:42 +0000 en-US hourly 1 https://wordpress.org/?v=6.9.4 https://novichoktimes.com/wp-content/uploads/2021/06/cropped-1-1-32x32.png Kharkiv Archives - Novichok (Moscow) Times https://novichoktimes.com/tag/kharkiv/ 32 32 Russians strike two districts in Kharkiv https://novichoktimes.com/2024/10/23/russians-strike-two-districts-in-kharkiv/ https://novichoktimes.com/2024/10/23/russians-strike-two-districts-in-kharkiv/#respond Wed, 23 Oct 2024 18:25:09 +0000 https://novichoktimes.com/?p=95272 [ad_1] The State Emergency Service of Ukraine works at the site of the attack. Stock photo: State Emergency Service of Ukraine Russian forces launched strikes on Kholodnohirskyi  and Kyivskyi districts of Kharkiv on the evening of 22 October. Source: Ihor Terekhov, Mayor of Kharkiv; Oleh Syniehubov, Head of Kharkiv Oblast Military Administration Details: Local authorities […]

The post Russians strike two districts in Kharkiv appeared first on Novichok (Moscow) Times.

]]>
[ad_1]

The State Emergency Service of Ukraine works at the site of the attack. Stock photo: State Emergency Service of Ukraine

Russian forces launched strikes on Kholodnohirskyi  and Kyivskyi districts of Kharkiv on the evening of 22 October.

Source: Ihor Terekhov, Mayor of Kharkiv; Oleh Syniehubov, Head of Kharkiv Oblast Military Administration

Details: Local authorities report that a fire broke out at the site of one of the strikes in Kholodnohirskyi district. Information regarding casualties is being specified.

Advertisement:



Later, Terekhov reported another attack on the Kyivskyi district near an educational institution. Windows in nearby residential buildings were partially shattered. The information regarding casualties is still being updated.

Update: Later, Syniehubov specified that strikes from guided aerial bombs were recorded in Kharkiv’s Kyivskyi and Kholodnohirskyi districts. He did not mention Saltivskyi, though.

Quote: “Kholodnohirskyi district: a hit to the ground, destruction of light wooden structures. No fire, no casualties.

Kyivskyi district: windows in residential buildings were partially shattered, nearby garages were damaged. No casualties.”

Support UP or become our patron!

.

[ad_2]

Source link

The post Russians strike two districts in Kharkiv appeared first on Novichok (Moscow) Times.

]]>
https://novichoktimes.com/2024/10/23/russians-strike-two-districts-in-kharkiv/feed/ 0
Russia used Kh-59 missile to attack TV tower in Kharkiv – photo, video https://novichoktimes.com/2024/04/24/russia-used-kh-59-missile-to-attack-tv-tower-in-kharkiv-photo-video/ https://novichoktimes.com/2024/04/24/russia-used-kh-59-missile-to-attack-tv-tower-in-kharkiv-photo-video/#respond Wed, 24 Apr 2024 10:27:51 +0000 https://novichoktimes.com/?p=71016 [ad_1] Photo: National Police of Ukraine Early reports indicate that Russia used a Kh-59 missile to strike a television infrastructure facility in the city of Kharkiv on 22 April. Source: the Prosecutor General’s Office on Telegram; National Police of Ukraine Quote: “According to the investigation, on 22 April at about 16:30, the Armed Forces of […]

The post Russia used Kh-59 missile to attack TV tower in Kharkiv – photo, video appeared first on Novichok (Moscow) Times.

]]>
[ad_1]

Photo: National Police of Ukraine

Early reports indicate that Russia used a Kh-59 missile to strike a television infrastructure facility in the city of Kharkiv on 22 April.

Source: the Prosecutor General’s Office on Telegram; National Police of Ukraine

Quote: “According to the investigation, on 22 April at about 16:30, the Armed Forces of Russia launched a missile attack on a television infrastructure facility in Kharkiv.

Advertisement:



The enemy likely used a Kh-59 missile for the attack.”

Details: A pre-trial investigation into this instance of breaking the laws and customs of war has been initiated under the procedural guidance of the Kharkiv Oblast Prosecutor’s Office.

The prosecutors and police investigators are reported to have documented the consequences of Russia’s armed aggression.

According to local media, a television tower was hit. There has been no official confirmation of these reports.

Update: President Volodymyr Zelenskyy has confirmed in a message about a phone conversation with US President Joe Biden that the city’s TV tower was attacked.

Quote: “I told President Biden about Russia’s aerial terror with thousands of missiles, drones and bombs – in particular about the attack on the Kharkiv TV tower just a few minutes before our conversation. Russia clearly intends to make the city uninhabitable.”

Details: The police shared photos from the scene.

 

Aftermath of the Russian attack on the Kharkiv TV tower on 22 April.

PHOTO: NATIONAL POLICE OF UKRAINE

 

Aftermath of the Russian attack on the Kharkiv TV tower on 22 April.

PHOTO: NATIONAL POLICE of ukraine

Support UP or become our patron!

.

[ad_2]

Source link

The post Russia used Kh-59 missile to attack TV tower in Kharkiv – photo, video appeared first on Novichok (Moscow) Times.

]]>
https://novichoktimes.com/2024/04/24/russia-used-kh-59-missile-to-attack-tv-tower-in-kharkiv-photo-video/feed/ 0
No one was injured in Russian strike on Kharkiv TV tower – Ukraine’s Communications Service https://novichoktimes.com/2024/04/24/no-one-was-injured-in-russian-strike-on-kharkiv-tv-tower-ukraines-communications-service/ https://novichoktimes.com/2024/04/24/no-one-was-injured-in-russian-strike-on-kharkiv-tv-tower-ukraines-communications-service/#respond Wed, 24 Apr 2024 10:27:47 +0000 https://novichoktimes.com/?p=71070 [ad_1] Photo: National Police of Ukraine The State Special Communications Service of Ukraine has reported that the Russians “have partly damaged the construction” of a TV tower in the city of Kharkiv. Source: press service of the State Special Communications Service of Ukraine; Suspilne Quote: “A TV tower was partially damaged in a Russian attack. […]

The post No one was injured in Russian strike on Kharkiv TV tower – Ukraine’s Communications Service appeared first on Novichok (Moscow) Times.

]]>
[ad_1]

Photo: National Police of Ukraine

The State Special Communications Service of Ukraine has reported that the Russians “have partly damaged the construction” of a TV tower in the city of Kharkiv.

Source: press service of the State Special Communications Service of Ukraine; Suspilne

Quote: “A TV tower was partially damaged in a Russian attack. The Kharkiv Oblast Prosecutor’s Office reports that the attack was launched with a Kh-59 missile.

Advertisement:



Early reports say no people have been injured.”

Details: The service reports that at the moment there is no TV-signal, and the repair works are ongoing in order to resume it. Meanwhile, the broadcast of a number of radio stations in the FM range continues.

Reportedly, the residents of the city of Kharkiv and Kharkiv Oblast who were left without digital TV can receive information from the broadcast of local radio stations, use cable or online TV, or use satellite receivers while the tower is being repaired.

The aftermath of the strike on the TV-tower was also documented by the journalists of the Suspilne media agency. 

Background: 

  • Local authorities and law enforcement reported that the Russian troops had attacked a television infrastructure facility in Kharkiv at about 16:30 on 22 April.
  • Local channels reported that the Russians had struck a local TV tower. In the video shared by social media users it can be seen that the upper part of the tower fell down.
  • Later, President Volodymyr Zelenskyy reported having a phone conversation with US President Joe Biden and confirmed that the TV tower in Kharkiv had been struck.

Support UP or become our patron!

.

[ad_2]

Source link

The post No one was injured in Russian strike on Kharkiv TV tower – Ukraine’s Communications Service appeared first on Novichok (Moscow) Times.

]]>
https://novichoktimes.com/2024/04/24/no-one-was-injured-in-russian-strike-on-kharkiv-tv-tower-ukraines-communications-service/feed/ 0