/**
  * Ensure there is a playlist capable player available
  */
 public function validate_players()
 {
     global $pagenow, $plugin_page;
     // only on admin.php?page=page-brightcove-playlists
     if ($pagenow != 'admin.php' || $plugin_page != 'page-brightcove-playlists') {
         return;
     }
     $player_api = new BC_Player_Management_API();
     $players = $player_api->player_list_playlist_enabled();
     if (is_wp_error($players) || !is_array($players) || $players['item_count'] < 1) {
         BC_Utility::admin_notice_messages(array(array('message' => __('A specified Source does not have a playlist capable player <a href="https://studio.brightcove.com/products/videocloud/players/">configured</a>. Make sure there is at least one player with "Display Playlist" enabled.', 'brightcove'), 'type' => 'error')));
     }
 }
 public function delete_source()
 {
     global $bc_accounts;
     if (!isset($_GET['_wpnonce'])) {
         return false;
     }
     if (!wp_verify_nonce($_GET['_wpnonce'], 'bc_delete_source_id_' . $_GET['account'])) {
         return false;
     }
     $delete_account = $bc_accounts->delete_account(sanitize_text_field($_GET['account']));
     if (is_wp_error($delete_account)) {
         BC_Utility::admin_notice_messages(array(array('message' => $delete_account->get_error_message(), 'type' => 'error')));
     }
     BC_Utility::admin_notice_messages(array(array('message' => esc_html__('Source Deleted', 'brightcove'), 'type' => 'updated')));
 }
 public function update_profile()
 {
     global $bc_accounts;
     if (!isset($_POST['_bc_profile_nonce'])) {
         return false;
     }
     if (!wp_verify_nonce($_POST['_bc_profile_nonce'], 'bc_profile_nonce')) {
         return false;
     }
     $hash = BC_Utility::sanitize_payload_item($_POST['bc-user-default-source']);
     $user_id = BC_Utility::sanitize_id($_POST['user_id']);
     $accounts = $bc_accounts->get_sanitized_all_accounts();
     if (!isset($accounts[$hash])) {
         BC_Utility::admin_notice_messages(array(array('message' => esc_html__('The specified Source does not exist.', 'brightcove'), 'type' => 'error')));
         return false;
     }
     BC_Utility::update_user_meta($user_id, '_brightcove_default_account_' . get_current_blog_id(), $hash);
     return true;
 }
 public function add_account($account_id, $client_id, $client_secret, $account_name = 'New Account', $set_default = '', $allow_update = true)
 {
     // Check if WP CLI is working and bail in admin if it is.
     if (defined('WP_CLI') && !WP_CLI) {
         return false;
     }
     $is_valid_account = $this->is_valid_account($account_id, $client_id, $client_secret, $account_name);
     if (is_array($is_valid_account)) {
         foreach ($is_valid_account as $wp_error) {
             if (is_wp_error($wp_error)) {
                 BC_Utility::admin_notice_messages(array(array('message' => $wp_error->get_error_message(), 'type' => 'error')));
             }
         }
         return false;
     }
     if (true !== $is_valid_account) {
         return new WP_Error('brightcove-invalid-account', esc_html__('Account credentials are invalid. Please ensure you are using all the correct information from Brightcove Video Cloud Studio to secure a token.', 'brightcove'));
     }
     $operation = $allow_update ? 'update' : 'add';
     $account_hash = $this->make_account_change(array('account_id' => $account_id, 'account_name' => $account_name, 'client_id' => $client_id, 'client_secret' => $client_secret, 'set_default' => $set_default, 'operation' => $operation));
     if (false === $account_hash) {
         return new WP_Error('brightcove-account-exists', esc_html__('Unable to update this account via WP-CLI.', 'brightcove'));
     }
     if ($account_hash && !$this->get_account_details_for_site() && 'default' === $set_default) {
         $this->set_account_details_for_site($account_hash);
     }
     $this->set_sync_type($account_id, 'full');
     $this->set_current_account($account_hash);
     $all_accounts = $this->get_all_accounts();
     // If this is the first account, make it the default.
     if (count($all_accounts) <= 1) {
         update_option('_brightcove_default_account', $account_hash);
     }
     $this->restore_default_account();
     return true;
 }
 /**
  * Method to display source update or error messages
  *
  * @return bool
  */
 public function admin_notice_handler()
 {
     if (empty($this->notices)) {
         return false;
     }
     BC_Utility::admin_notice_messages($this->notices);
     return true;
 }
 public static function bc_activation_admin_notices()
 {
     global $bc_accounts;
     if (count($bc_accounts->get_sanitized_all_accounts()) > 0) {
         delete_option('_brightcove_plugin_activated');
         return;
     }
     if (get_option('_brightcove_plugin_activated') !== false && current_user_can('manage_options') && get_current_screen()->base !== 'brightcove_page_brightcove-sources' && get_current_screen()->base !== 'brightcove_page_brightcove-edit-source' && get_current_screen()->base !== 'admin_page_page-brightcove-edit-source') {
         $notices[] = array('message' => sprintf('%s <a href="%s"><strong>%s</strong></a>', esc_html__('Please configure Brightcove settings from', 'brightcove'), esc_url(admin_url('admin.php?page=brightcove-sources')), esc_html__('here', 'brightcove')), 'type' => 'updated');
         BC_Utility::admin_notice_messages($notices);
     }
 }