@return array */ private function block_queue_event( $data ) { $pro_api = new Rop_Pro_Api(); return $pro_api->block_queue_event( $data ); } /** * API method called to update a queue event and return active queue. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function update_queue_event( $data ) { $pro_api = new Rop_Pro_Api(); return $pro_api->update_queue_event( $data ); } /** * API method called to get the active queue. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * @return array */ private function get_queue( $data ) { $queue = new Rop_Queue_Model(); if ( isset( $data['force'] ) && true === (bool) $data['force'] ) { $queue->clear_queue(); } $this->response->set_code( '200' ) ->set_data( $queue->get_ordered_queue() ); return $this->response->to_array(); } /** * API method called to save a schedule. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function save_schedule( $data ) { $pro_api = new Rop_Pro_Api(); $cron_status = filter_var( get_option( 'rop_is_sharing_cron_active', 'no' ), FILTER_VALIDATE_BOOLEAN ); if ( true === $cron_status && defined( 'ROP_CRON_ALTERNATIVE' ) && true === ROP_CRON_ALTERNATIVE ) { $server_url = ROP_CRON_DOMAIN . '/wp-json/update-cron-ping/v1/update-time-to-share/'; // inform the cron server to ping this website in the next process. $time_to_share = array( 'next_ping' => current_time( 'mysql' ), // phpcs:ignore ); RopCronSystem\ROP_Helpers\Rop_Helpers::custom_curl_post_request( $server_url, $time_to_share ); } return $pro_api->save_schedule( $data ); } /** * API method called to reset a schedule to defaults. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function reset_schedule( $data ) { $schedules = new Rop_Scheduler_Model(); $schedules->remove_schedule( $data['account_id'] ); $this->response->set_code( '201' ) ->set_data( $schedules->get_schedule() ); return $this->response->is_not_silent()->to_array(); } /** * API method called to retrieve a schedule. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function get_schedule( $data ) { $schedules = new Rop_Scheduler_Model(); $this->response->set_code( '200' ) ->set_data( $schedules->get_schedule() ); return $this->response->to_array(); } /** * API method called to get shortner service credentials. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * @Throws Exception Throws an exception if a short url service can't be built. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return mixed */ private function get_shortner_credentials( $data ) { if ( empty( $data['short_url_service'] ) ) { return $this->response->set_code( '200' ) ->set_data( array() )->to_array(); } if ( $data['short_url_service'] === 'wp_short_url' ) { return $this->response->set_code( '200' ) ->set_data( array() )->to_array(); } $sh_factory = new Rop_Shortner_Factory(); $this->response->set_code( '500' ); try { $shortner = $sh_factory->build( $data['short_url_service'] ); $this->response->set_code( '200' ) ->set_data( $shortner->get_credentials( true ) ); } catch ( Exception $exception ) { // Service not found or can't be built. Maybe log this exception. $log = new Rop_Logger(); $error_message = sprintf( 'The shortner service %1$s can NOT be built or was not found', $data['short_url_service'] ); $log->alert_error( $error_message . $exception->getMessage() ); $this->response->set_code( '500' ); } return $this->response->to_array(); } /** * API method called to save a post format. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * @Throws Exception Throws an exception if a short url service can't be built. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function save_post_format( $data ) { $post_format = new Rop_Post_Format_Model( $data['service'] ); $sh_factory = new Rop_Shortner_Factory(); $this->response->set_code( '500' ); if ( $data['service'] === 'twitter' ) { $max_char_length = $data['data']['maximum_length']; if ( $max_char_length > 280 ) { $data['data']['maximum_length'] = 280; } } // New users will require a Pro plan (from version 9.1). $global_settings = new Rop_Global_Settings(); $is_new_user = (int) get_option( 'rop_is_new_user', 0 ); if ( $global_settings->license_type() <= 0 && $is_new_user ) { if ( 'custom_field' === $data['data']['post_content'] ) { $data['data']['post_content'] = 'post_title'; } if ( ! in_array( $data['data']['hashtags'], array( 'no-hashtags', 'common-hashtags' ), true ) ) { $data['data']['hashtags'] = 'no-hashtags'; } if ( ! in_array( $data['data']['short_url_service'], array( 'rviv.ly', 'wp_short_url' ), true ) ) { $data['data']['short_url_service'] = 'rviv.ly'; } } // If the user forget to switch from the upsell value, set it to the default value. if ( 'custom_content' === $data['data']['post_content'] && $global_settings->license_type() <= 0 ) { $data['data']['post_content'] = 'post_title'; } try { if ( $data['data']['short_url_service'] !== 'wp_short_url' ) { $shortner = $sh_factory->build( $data['data']['short_url_service'] ); $shortner->set_credentials( $data['data']['shortner_credentials'] ); } $this->response->set_code( '201' ); } catch ( Exception $exception ) { // Service not found or can't be built. Maybe log this exception. // Also shorten service not updated at this point. $log = new Rop_Logger(); $error_message = sprintf( 'The shortner service %1$s can NOT be built or was not found', $data['data']['short_url_service'] ); $log->alert_error( $error_message . $exception->getMessage() ); $this->response->set_code( '500' ); } if ( $post_format->add_update_post_format( $data['account_id'], $data['data'] ) ) { $this->response->set_code( '201' ); } $this->response->set_data( $post_format->get_post_format() )->is_not_silent(); return $this->response->to_array(); } /** * API method called to reset a post format to defaults. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function reset_post_format( $data ) { $post_format = new Rop_Post_Format_Model(); $post_format->remove_post_format( $data['account_id'] ); $this->response->set_code( '201' ); $this->response->set_data( $post_format->get_post_format() ); return $this->response->is_not_silent()->to_array(); } /** * API method called to retrieve a post format. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function get_post_format( $data ) { $post_format = new Rop_Post_Format_Model(); $this->response->set_code( '200' ) ->set_data( $post_format->get_post_format() ); return $this->response->to_array(); } /** * API method called to select posts for publishing. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * @return mixed */ private function select_posts() { $posts_selector = new Rop_Posts_Selector_Model(); $this->response->set_code( '200' ) ->set_data( $posts_selector->select() ); return $this->response->to_array(); } /** * API method called to retrieve the general settings. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * @return array */ private function get_general_settings() { $settings_model = new Rop_Settings_Model(); $this->response->set_code( '200' ) ->set_data( $settings_model->get_settings( true ) ); return $this->response->to_array(); } /** * API method called to retrieve the taxonomies * for the selected post types. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function get_taxonomies( $data ) { $settings_model = new Rop_Settings_Model(); $taxonomies = $settings_model->get_available_taxonomies( $data ); $this->response->set_code( '400' ); if ( $taxonomies != false ) { $this->response->set_code( '200' ) ->set_data( $taxonomies ); } return $this->response->to_array(); } /** * API method to exclude single post * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.4 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function exclude_post( $data ) { $settings_model = new Rop_Settings_Model(); $flag = (bool) $data['exclude']; if ( ! $flag ) { $settings_model->add_excluded_posts( $data['post_id'] ); } else { $settings_model->remove_excluded_posts( $data['post_id'] ); } $this->response->set_code( '200' ) ->set_data( $data ); return $this->response->to_array( $data ); } /** * Api method to exclude posts based on keywords. * * @since 8.0.4 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function exclude_post_batch( $data ) { $search = sanitize_text_field( $data['search'] ); $post_selector = new Rop_Posts_Selector_Model(); $available_posts = $post_selector->get_posts( $data['post_types'], $data['taxonomies'], $data['exclude'], $search, false, false ); $post_ids = wp_list_pluck( $available_posts, 'value' ); $settings_model = new Rop_Settings_Model(); $settings_model->add_excluded_posts( $post_ids ); $this->response->set_code( '200' ) ->set_data( $data ); return $this->response->to_array( $data ); } /** * API method called to retrieve the posts * for the selected post types and taxonomies. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function get_posts( $data ) { $post_selector = new Rop_Posts_Selector_Model(); $available_posts = $post_selector->get_posts( $data['post_types'], $data['taxonomies'], $data['exclude'], $data['search_query'], $data['show_excluded'], $data['page'] ); $this->response->set_code( '200' ) ->set_data( array( 'posts' => $available_posts, 'page' => $data['page'], ) ); return $this->response->to_array(); } /** * API method called to save general settings. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data The settings data to save. * * @return array */ private function save_general_settings( $data ) { $settings_model = new Rop_Settings_Model(); // Fetch the already saved settings. $saved_data = $settings_model->get_settings(); $settings_model->save_settings( $data ); $this->response->set_code( '200' ) ->set_data( $settings_model->get_settings() ); // Save tracking flag. $tracking = filter_var( $data['tracking'], FILTER_VALIDATE_BOOLEAN ); update_option( 'tweet_old_post_logger_flag', $tracking ? 'yes' : 'no' ); $cron_status = filter_var( get_option( 'rop_is_sharing_cron_active', 'no' ), FILTER_VALIDATE_BOOLEAN ); if ( true === $cron_status && defined( 'ROP_CRON_ALTERNATIVE' ) && true === ROP_CRON_ALTERNATIVE ) { $new_default_interval = trim( $data['default_interval'] ); $saved_default_interval = trim( $saved_data['default_interval'] ); if ( $new_default_interval !== $saved_default_interval ) { $server_url = ROP_CRON_DOMAIN . '/wp-json/update-cron-ping/v1/update-time-to-share/'; // inform the cron server to ping this website in the next process. $time_to_share = array( 'next_ping' => current_time( 'mysql' ), // phpcs:ignore ); RopCronSystem\ROP_Helpers\Rop_Helpers::custom_curl_post_request( $server_url, $time_to_share ); } } return $this->response->to_array(); } /** * API method called to save general settings for toggles. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data The settings data to save. * * @return array */ private function update_settings_toggle( $data ) { $settings_model = new Rop_Settings_Model(); $general_settings = $settings_model->get_settings(); $general_settings['beta_user'] = $data['beta_user']; $general_settings['remote_check'] = $data['remote_check']; $general_settings['custom_messages'] = $data['custom_messages']; $settings_model->save_settings( $general_settings ); $this->response->set_code( '200' ) ->set_data( $settings_model->get_settings() ); return $this->response->to_array(); } /** * API method called to retrieve available services. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * @return array */ private function get_available_services() { $global_settings = new Rop_Global_Settings(); $this->response->set_code( '200' ) ->set_data( $global_settings->get_available_services() ); return $this->response->to_array(); } /** * API method called to retrieve authenticated services. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * @return array */ private function get_authenticated_services() { $model = new Rop_Services_Model(); $this->response->set_code( '200' ) ->set_data( $model->get_authenticated_services() ); return $this->response->to_array(); } /** * API method called to retrieve active accounts. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * @return array */ private function get_active_accounts() { $model = new Rop_Services_Model(); $saved_active_accounts = $model->get_active_accounts(); $available_services = $model->get_authenticated_services(); // Return the active accounts that are also available. $valid_accounts = array(); $available_accounts_ids = array(); foreach ( $available_services as $_ => $service ) { if ( ! isset( $service['available_accounts'] ) ) { continue; } foreach ( $service['available_accounts'] as $account_id => $_ ) { $available_accounts_ids[] = $account_id; } } foreach ( $saved_active_accounts as $active_account_id => $active_account ) { if ( ! in_array( $active_account_id, $available_accounts_ids, true ) ) { continue; } $valid_accounts[ $active_account_id ] = $active_account; } $this->response->set_code( '200' ) ->set_data( $valid_accounts ); return $this->response->to_array(); } /** * API method called to reset services. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * @return array */ private function reset_accounts() { $model = new Rop_Services_Model(); $model->reset_authenticated_services(); $this->response->set_code( '200' ) ->set_data( array() ); return $this->response->to_array(); } /** * API method called to update active accounts. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function update_active_accounts( $data ) { $new_active = array(); foreach ( $data['to_be_activated'] as $account ) { $id = $data['service'] . '_' . $data['service_id'] . '_' . $account['id']; $new_active[] = $id; } $model = new Rop_Services_Model(); $this->response->set_code( '200' ) ->set_data( $model->add_active_accounts( $new_active ) ); return $this->response->to_array(); } /** * API method called to toggle account state. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function toggle_account( $data ) { $model = new Rop_Services_Model(); if ( $data['state'] === 'active' ) { $model->add_active_accounts( $data['account_id'] ); } else { $model->delete_active_accounts( $data['account_id'] ); } $this->response->set_code( '200' ) ->set_data( $data ); return $this->response->to_array(); } /** * Remove account from the available list. * * @param array $data Data from the request. * * @return array Data received. */ private function remove_account( $data ) { $this->response->set_code( '200' ) ->set_data( $data ); $model = new Rop_Services_Model(); $model->remove_service_account( $data['account_id'] ); return $this->response->to_array(); } /** * API method called to try and authenticate a service. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * @Throws Exception Throws an exception if a service can't be built. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return mixed|null */ private function authenticate_service( $data ) { $new_service = array(); $factory = new Rop_Services_Factory(); try { ${$data['service'] . '_services'} = $factory->build( $data['service'] ); $authenticated = ${$data['service'] . '_services'}->authenticate(); if ( $authenticated ) { $service = ${$data['service'] . '_services'}->get_service(); $service_id = $service['service'] . '_' . $service['id']; $new_service[ $service_id ] = $service; } $model = new Rop_Services_Model(); return $model->add_authenticated_service( $new_service ); } catch ( Exception $exception ) { // Service can't be built. Not found or otherwise. Maybe log this. $log = new Rop_Logger(); $log->alert_error( 'The service "' . $data['service'] . '" can NOT be built or was not found', $exception ); return null; } } /** * API method called to try and remove a service. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return mixed|null */ private function remove_service( $data ) { $model = new Rop_Services_Model(); return $model->delete_authenticated_service( $data['id'], $data['service'] ); } /** * API method called to retrieve a service sign in url. * * Used to create an authentication url for users who want to use their own app via personal auth keys/tokens. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * @Throws Exception Throws an exception if the service can't be built. * * @since 8.0.0 * @access private * * @param array $data Data passed from the AJAX call. * * @return array */ private function get_service_sign_in_url( $data ) { $url = ''; $factory = new Rop_Services_Factory(); try { ${$data['service'] . '_services'} = $factory->build( $data['service'] ); if ( empty( $data['credentials'] ) ) { $authenticated_services = new Rop_Services_Model(); $service = $authenticated_services->get_authenticated_services( $data['service'] ); if ( ! empty( $service ) ) { $service = array_filter( $service, function ( $value ) { return ! empty( $value['public_credentials'] ); } ); $service = reset( $service ); if ( ! empty( $service['public_credentials'] ) ) { $data['credentials'] = array_combine( array_keys( $service['public_credentials'] ), wp_list_pluck( $service['public_credentials'], 'value' ) ); } } } if ( ${$data['service'] . '_services'} ) { if ( method_exists( ${$data['service'] . '_services'}, 'sign_in_url' ) ) { $url = ${$data['service'] . '_services'}->sign_in_url( $data ); } else { $url = ''; } } } catch ( Exception $exception ) { // Service can't be built. Not found or otherwise. Maybe log this. $log = new Rop_Logger(); $log->alert_error( 'The service "' . $data['service'] . '" can NOT be built or was not found' . $exception->getMessage() ); $url = ''; } return array( 'url' => $url ); } /** * API method called to retrieve the logs. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.0.0 * @access private * @return string */ private function get_log( $data ) { $log = new Rop_Logger(); if ( isset( $data['force'] ) ) { $log->clear_user_logs(); } $this->response->set_code( '200' ) ->set_data( $log->get_logs() ); return $this->response->to_array(); } /** * This will disable facebook domain check toast message. * * @param mixed $data The data. * * @return array */ private function fb_exception_toast( $data ) { update_option( 'rop_facebook_domain_toast', 'no' ); $this->response->set_code( '200' ) ->set_message( 'Facebook domain check toast new status is closed' ) ->set_data( array( 'display' => false ) ); return $this->response->to_array(); } /** * API method called to retrieve the logs for toast. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.4.2 * @access private * @return string */ private function get_toast( $data ) { $log = new Rop_Logger(); $this->response->set_code( '200' ) ->set_message( 'OK' ) ->set_data( $log->get_logs() ); $logs_response = $this->response->to_array(); $logs_data = $logs_response['data']; if ( ! empty( $logs_data ) ) { $custom_response = 0; // Is it a status alert? $is_status_logs_alert = $log->is_status_error_necessary( $logs_response ); // true | false // The logs will contain latest entry as first element first. reset( $logs_data ); // reset pointer to first element $latest_log_entry = current( $logs_data ); // fetch the latest log entry $logs_response['data'] = array(); // reset data // Making sure it contains the important attributes. if ( isset( $latest_log_entry['message'] ) && isset( $latest_log_entry['type'] ) ) { // fetch log entry data; $channel = $latest_log_entry['channel']; $type = $latest_log_entry['type']; $message = $latest_log_entry['message']; $time = (int) $latest_log_entry['time']; if ( 'error' === $type ) { // Not displaying anything if there's no issue $get_last_err_timestamp = (int) get_option( 'rop_toast', 0 ); // get the last error timestamp if ( $get_last_err_timestamp !== $time ) { // If the time does not match, then proceed further. // Check to see if the error needs to be "translated" $latest_log_entry['message'] = $log->translate_messages( $message ); $logs_response['data'][] = $latest_log_entry; // Add the timestamp of the error into DB to now show this alert multiple times. update_option( 'rop_toast', $time, 'no' ); $custom_response ++; } } } // We need to inform the user as there are many errors in the log // This will change the status to "Error (check logs)" if ( true === $is_status_logs_alert ) { $custom_response ++; $logs_response['data'][] = array( 'type' => 'status_error', 'message' => '', 'channel' => 'rop_logs', 'time' => Rop_Scheduler_Model::get_current_time(), ); } if ( ! empty( $custom_response ) ) { // return the current error return $logs_response; } } $logs_response['data'] = array(); return $logs_response; } /** * API method called to add Facebook pages via app. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since ... * @access private * * @param array $data Facebook page data. * * @return array */ private function add_account_fb( $data ) { $services = array(); $active_accounts = array(); $facebook_service = new Rop_Facebook_Service(); $model = new Rop_Services_Model(); $db = new Rop_Db_Upgrade(); $facebook_service->add_account_with_app( $data ); $services[ $facebook_service->get_service_id() ] = $facebook_service->get_service(); $active_accounts = array_merge( $active_accounts, $facebook_service->get_service_active_accounts() ); if ( ! empty( $services ) ) { $model->add_authenticated_service( $services ); } if ( ! empty( $active_accounts ) ) { $db->migrate_schedule( $active_accounts ); $db->migrate_post_formats( $active_accounts ); } else { $this->response->set_code( '500' ) ->set_data( array() ); return $this->response->to_array(); } $this->response->set_code( '200' ) ->set_message( 'OK' ) ->set_data( array() ); $rop_facebook_via_rs_app_option = 'rop_facebook_via_rs_app'; if ( ! get_option( $rop_facebook_via_rs_app_option ) ) { add_option( $rop_facebook_via_rs_app_option, 'true', ' ', 'no' ); } else { update_option( $rop_facebook_via_rs_app_option, 'true' ); } return $this->response->to_array(); } /** * API method called to add Twitter pages via app. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.4.0 * @access private * * @param array $data Twitter account data. * * @return array */ private function add_account_tw( $data ) { $services = array(); $active_accounts = array(); $twitter_service = new Rop_Twitter_Service(); $model = new Rop_Services_Model(); $db = new Rop_Db_Upgrade(); if ( ! empty( $data['pages'] ) && ! empty( $data['pages']['credentials']['rop_auth_token'] ) ) { $twitter_service->add_account_from_rop_server( $data ); } else { $twitter_service->add_account_with_app( $data ); } $services[ $twitter_service->get_service_id() ] = $twitter_service->get_service(); $active_accounts = array_merge( $active_accounts, $twitter_service->get_service_active_accounts() ); if ( ! empty( $services ) ) { $model->add_authenticated_service( $services ); } if ( ! empty( $active_accounts ) ) { $db->migrate_schedule( $active_accounts ); $db->migrate_post_formats( $active_accounts ); } else { $this->response->set_code( '500' ) ->set_data( array() ); return $this->response->to_array(); } $this->response->set_code( '200' ) ->set_message( 'OK' ) ->set_data( array() ); $rop_twitter_via_rs_app_option = 'rop_twitter_via_rs_app'; if ( ! get_option( $rop_twitter_via_rs_app_option ) ) { add_option( $rop_twitter_via_rs_app_option, 'true', ' ', 'no' ); } else { update_option( $rop_twitter_via_rs_app_option, 'true' ); } return $this->response->to_array(); } /** * API method called to add Linkedin pages via app. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.5.0 * @access private * * @param array $data LinkedIn accounts data. * * @return array */ private function add_account_li( $data ) { $services = array(); $active_accounts = array(); $linkedin_service = new Rop_Linkedin_Service(); $model = new Rop_Services_Model(); $db = new Rop_Db_Upgrade(); $linkedin_service->add_account_with_app( $data ); $services[ $linkedin_service->get_service_id() ] = $linkedin_service->get_service(); $active_accounts = array_merge( $active_accounts, $linkedin_service->get_service_active_accounts() ); if ( ! empty( $services ) ) { $model->add_authenticated_service( $services ); } if ( ! empty( $active_accounts ) ) { $db->migrate_schedule( $active_accounts ); $db->migrate_post_formats( $active_accounts ); } else { $this->response->set_code( '500' ) ->set_data( array() ); return $this->response->to_array(); } $this->response->set_code( '200' ) ->set_message( 'OK' ) ->set_data( array() ); $rop_linkedin_via_rs_app_option = 'rop_linkedin_via_rs_app'; if ( ! get_option( $rop_linkedin_via_rs_app_option ) ) { add_option( $rop_linkedin_via_rs_app_option, 'true', ' ', 'no' ); } else { update_option( $rop_linkedin_via_rs_app_option, 'true' ); } return $this->response->to_array(); } /** * API method called to add Tumblr Blogs via app. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.5.7 * @access private * * @param array $data Tumblr accounts data. * * @return array */ private function add_account_tumblr( $data ) { $services = array(); $active_accounts = array(); $tumblr_service = new Rop_Tumblr_Service(); $model = new Rop_Services_Model(); $db = new Rop_Db_Upgrade(); $tumblr_service->add_account_with_app( $data ); $services[ $tumblr_service->get_service_id() ] = $tumblr_service->get_service(); $active_accounts = array_merge( $active_accounts, $tumblr_service->get_service_active_accounts() ); if ( ! empty( $services ) ) { $model->add_authenticated_service( $services ); } if ( ! empty( $active_accounts ) ) { $db->migrate_schedule( $active_accounts ); $db->migrate_post_formats( $active_accounts ); } else { $this->response->set_code( '500' ) ->set_data( array() ); return $this->response->to_array(); } $this->response->set_code( '200' ) ->set_message( 'OK' ) ->set_data( array() ); $rop_tumblr_via_rs_app_option = 'rop_tumblr_via_rs_app'; if ( ! get_option( $rop_tumblr_via_rs_app_option ) ) { add_option( $rop_tumblr_via_rs_app_option, 'true', ' ', 'no' ); } else { update_option( $rop_tumblr_via_rs_app_option, 'true' ); } return $this->response->to_array(); } /** * API method called to add Google My Business locations via app. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.5.9 * @access private * * @param array $data Google My Business accounts data. * * @return array */ private function add_account_gmb( $data ) { $services = array(); $active_accounts = array(); $gmb_service = new Rop_Gmb_Service(); $model = new Rop_Services_Model(); $db = new Rop_Db_Upgrade(); $gmb_service->add_account_with_app( $data ); $services[ $gmb_service->get_service_id() ] = $gmb_service->get_service(); $active_accounts = array_merge( $active_accounts, $gmb_service->get_service_active_accounts() ); if ( ! empty( $services ) ) { $model->add_authenticated_service( $services ); } if ( ! empty( $active_accounts ) ) { $db->migrate_schedule( $active_accounts ); $db->migrate_post_formats( $active_accounts ); } else { $this->response->set_code( '500' ) ->set_data( array() ); return $this->response->to_array(); } $this->response->set_code( '200' ) ->set_message( 'OK' ) ->set_data( array() ); return $this->response->to_array(); } /** * API method called to add VK via app. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 8.6.1 * @access private * * @param array $data Vk accounts data. * * @return array */ private function add_account_vk( $data ) { $services = array(); $active_accounts = array(); $vk_service = new Rop_Vk_Service(); $model = new Rop_Services_Model(); $db = new Rop_Db_Upgrade(); $vk_service->add_account_with_app( $data ); $services[ $vk_service->get_service_id() ] = $vk_service->get_service(); $active_accounts = array_merge( $active_accounts, $vk_service->get_service_active_accounts() ); if ( ! empty( $services ) ) { $model->add_authenticated_service( $services ); } if ( ! empty( $active_accounts ) ) { $db->migrate_schedule( $active_accounts ); $db->migrate_post_formats( $active_accounts ); } else { $this->response->set_code( '500' ) ->set_data( array() ); return $this->response->to_array(); } $this->response->set_code( '200' ) ->set_message( 'OK' ) ->set_data( array() ); return $this->response->to_array(); } /** * API method to call the license processor. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 9.1.0 * * @param array $data Data passed from the AJAX call. * * @return array */ private function set_license( $data ) { if ( ! current_user_can( 'manage_options' ) ) { $this->response ->set_code( '403' ) ->set_message( 'Forbidden' ) ->set_data( array( 'success' => false, 'message' => Rop_I18n::get_labels( 'general.no_permission' ) ) ); return $this->response->to_array(); } // NOTE: The license processor requires the license key, even if we want to deactivate the license. if ( empty( $data['license_key'] ) ) { $general_settings = new Rop_Global_Settings; $license_data = $general_settings->get_license_data(); if ( ! empty( $license_data ) && isset( $license_data->key ) ) { $data['license_key'] = $license_data->key; } } $response = apply_filters( 'themeisle_sdk_license_process_rop', $data['license_key'], $data['action'] ); if ( is_wp_error( $response ) ) { return $this->response ->set_data( array( 'success' => false, 'message' => 'activate' === $data['action'] ? Rop_I18n::get_labels( 'general.validation_failed' ) : Rop_I18n::get_labels( 'general.could_not_change_license' ) ) ) ->to_array(); } return $this->response ->set_code( '200' ) ->set_data( array( 'success' => true ) ) ->to_array(); } /** * API method called to add Webhook account. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 9.1.0 * @access private * * @param array $data Webhook account data. * * @return array */ private function add_account_webhook( $data ) { $services = array(); $webhook_service = new Rop_Webhook_Service(); $model = new Rop_Services_Model(); $db = new Rop_Db_Upgrade(); if ( ! $webhook_service->add_webhook( $data ) ) { $this->response->set_code( '422' ) ->set_data( array() ); return $this->response->to_array(); } $services[ $webhook_service->get_service_id() ] = $webhook_service->get_service(); $active_accounts = $webhook_service->get_service_active_accounts(); if ( ! empty( $services ) ) { $model->add_authenticated_service( $services ); } if ( ! empty( $active_accounts ) ) { $db->migrate_schedule( $active_accounts ); $db->migrate_post_formats( $active_accounts ); } else { $this->response->set_code( '500' ) ->set_data( array() ); return $this->response->to_array(); } $this->response->set_code( '200' ) ->set_message( 'OK' ) ->set_data( array() ); return $this->response->to_array(); } /** * API method called to edit Webhook account. * * @SuppressWarnings(PHPMD.UnusedPrivateMethod) As it is called dynamically. * * @since 9.1.0 * @access private * * @param array $data Webhook account data. * * @return array */ private function edit_account_webhook( $data ) { $webhook_service = new Rop_Webhook_Service(); $model = new Rop_Services_Model(); if ( ! $webhook_service->add_webhook( $data ) ) { $this->response->set_code( '422' ) ->set_data( array() ); return $this->response->to_array(); } $service_id = ! empty( $data['service_id'] ) ? $data['service_id'] : ''; $authenticated_services = $model->get_authenticated_services(); if ( ! isset( $authenticated_services[ $service_id ] ) ) { $this->response->set_code( '422' ) ->set_data( array() ); return $this->response->to_array(); } $authenticated_services[ $service_id ] = array_merge( $authenticated_services[ $service_id ], $webhook_service->get_service() ); $model->update_authenticated_services( $authenticated_services ); if ( ! empty( $data['active'] ) && ! empty( $data['full_id'] ) ) { $model->add_active_accounts( array( $data['full_id'] ) ); } $this->response->set_code( '200' ) ->set_message( 'OK' ) ->set_data( array() ); return $this->response->to_array(); } }
Fatal error: Uncaught Error: Class 'Rop_Rest_Api' not found in /var/www/html/alertamt.com.br/web/wp-content/plugins/tweet-old-post/includes/class-rop.php:275 Stack trace: #0 /var/www/html/alertamt.com.br/web/wp-includes/class-wp-hook.php(324): Rop->register_service_api_endpoints('') #1 /var/www/html/alertamt.com.br/web/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters('', Array) #2 /var/www/html/alertamt.com.br/web/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #3 /var/www/html/alertamt.com.br/web/wp-settings.php(726): do_action('wp_loaded') #4 /var/www/html/alertamt.com.br/web/wp-config.php(115): require_once('/var/www/html/a...') #5 /var/www/html/alertamt.com.br/web/wp-load.php(50): require_once('/var/www/html/a...') #6 /var/www/html/alertamt.com.br/web/wp-blog-header.php(13): require_once('/var/www/html/a...') #7 /var/www/html/alertamt.com.br/web/index.php(17): require('/var/www/html/a...') #8 {main} thrown in /var/www/html/alertamt.com.br/web/wp-content/plugins/tweet-old-post/includes/class-rop.php on line 275