This commit is contained in:
2026-04-26 23:47:49 +02:00
parent 1b95f03d1e
commit b073e009d8
5288 changed files with 1112699 additions and 55536 deletions

View File

@@ -0,0 +1,90 @@
<?php
namespace SmashBalloon\YouTubeFeed\Services\Admin;
use Smashballoon\Stubs\Services\ServiceProvider;
use SmashBalloon\YouTubeFeed\Data\DataFactory;
use SmashBalloon\YouTubeFeed\Data\GoogleAPIResponseStruct;
use SmashBalloon\YouTubeFeed\Helpers\Util;
use SmashBalloon\YouTubeFeed\SBY_API_Connect;
use SmashBalloon\YouTubeFeed\SBY_Settings;
class SourcesService extends ServiceProvider {
/**
* @var SBY_Settings
*/
private $settings;
/**
* @var SBY_API_Connect
*/
private $connect;
/**
* @var GoogleAPIResponseStruct
*/
private $api_verification_data;
/**
* @var DataFactory
*/
private $data_factory;
public function __construct(SBY_Settings $settings, SBY_API_Connect $connect, DataFactory $data_factory) {
$this->settings = $settings;
$this->connect = $connect;
$this->data_factory = $data_factory;
$this->api_verification_data = $this->data_factory->create(GoogleAPIResponseStruct::class);
}
public function register() {
add_action('wp_ajax_remove_connected_account', [$this, 'ajax_remove_account']);
add_action('wp_ajax_verify_api_key', [$this, 'ajax_verify_api_key']);
}
public function ajax_remove_account() {
Util::ajaxPreflightChecks();
$account = trim( sanitize_text_field( $_POST['account_id'] ) );
$settings = $this->settings->get_settings();
$connected_accounts = $settings['connected_accounts'];
if ( ! empty( $account ) && ! empty( $connected_accounts ) && array_key_exists( $account,
$connected_accounts ) ) {
unset( $connected_accounts[ $account ] );
$settings['connected_accounts'] = $connected_accounts;
$this->settings->update_settings( $settings );
}
}
public function ajax_verify_api_key() {
Util::ajaxPreflightChecks();
$settings = $this->settings->get_settings();
$api_key = sanitize_text_field($_POST['api_key']);
if ( empty( $api_key ) ) {
$this->respond_to_api_update($settings, $api_key);
}
$this->connect->set_url(null, null, ['username' => 'smashballoon'], $api_key);
$response = wp_remote_get($this->connect->get_url(), $this->connect->get_args());
$this->api_verification_data->response = $response['response'];
$this->api_verification_data->data = json_decode($response['body']);
$this->api_verification_data->status = $response['response']['code'] === 200;
$this->respond_to_api_update($settings, $api_key);
wp_send_json_error();
}
private function respond_to_api_update($settings, $api_key) {
update_option( 'sby_api_key_verification', $this->api_verification_data );
$settings['api_key'] = $api_key;
$this->settings->update_settings( $settings );
wp_send_json_success( $this->api_verification_data );
}
}