????
Current Path : /home/darkwebsol/acrepairkwt.com/wp-content/plugins/feeds-for-youtube/inc/ |
Current File : /home/darkwebsol/acrepairkwt.com/wp-content/plugins/feeds-for-youtube/inc/SBY_Posts_Manager.php |
<?php namespace SmashBalloon\YouTubeFeed; class SBY_Posts_Manager { var $options_prefix; /** * @var int */ var $limit; /** * @var array */ var $errors; var $ajax_status; /** * @var array */ var $frontend_errors; /** * @var bool */ var $resizing_tables_exist; /** * SBY_Posts_Manager constructor. */ public function __construct( $options_prefix, $errors, $ajax_status ) { $this->options_prefix = $options_prefix; $this->errors = $errors; $this->ajax_status = $ajax_status; $this->frontend_errors = array(); } /** * @return array * * @since 1.0 */ public function get_ajax_status() { return $this->ajax_status; } /** * @param $to_update * * @since 1.0 */ public function update_ajax_status( $to_update ) { foreach ( $to_update as $key => $value ) { $this->ajax_status[ $key ] = $value; } update_option( $this->options_prefix . '_ajax_status', $this->ajax_status ); } /** * When the plugin is first installed and used, an AJAX call to admin-ajax.php * is made to verify that it's available * * @param bool $force_check * * @return bool * * @since 1.0 */ public function maybe_start_ajax_test( $force_check = false ) { if ( ! $this->ajax_status['tested'] || $force_check ) { set_transient( $this->options_prefix . '_doing_ajax_test', 'yes', 60*60 ); $this->update_ajax_status( array( 'tested' => true ) ); return true; } return false; } /** * Called if a successful Admin ajax request is made * * @since 1.0 */ public function update_successful_ajax_test() { $this->update_ajax_status( array( 'successful' => true ) ); } /** * @return bool * * @since 1.0 */ public function should_add_ajax_test_notice() { return ($this->ajax_status['tested'] && ! $this->ajax_status['successful'] && get_transient( $this->options_prefix . '_doing_ajax_test' ) !== 'yes'); } /** * The plugin has a limit on how many post records can be stored and * images resized to avoid overloading servers. This function deletes the post that * has the longest time passed since it was retrieved. * * @since 1.0 */ public function delete_least_used_image() { } /** * Calculates how many records are in the database and whether or not it exceeds the limit * * @return bool * * @since 1.0 */ public function max_total_records_reached() { global $wpdb; $table_name = $wpdb->prefix . SBY_ITEMS; $num_records = $wpdb->get_var( "SELECT COUNT(*) FROM $table_name" ); if ( !isset( $this->limit ) && (int)$num_records > SBY_MAX_RECORDS ) { $this->limit = (int)$num_records - SBY_MAX_RECORDS; } return ((int)$num_records > SBY_MAX_RECORDS); } /** * The plugin caps how many new images are created in a 15 minute window to * avoid overloading servers * * @return bool * * @since 1.0 */ public function max_resizing_per_time_period_reached() { global $wpdb; $table_name = $wpdb->prefix . SBY_ITEMS; $fifteen_minutes_ago = date( 'Y-m-d H:i:s', time() - 15 * 60 ); $num_new_records = $wpdb->get_var( "SELECT COUNT(*) FROM $table_name WHERE created_on > '$fifteen_minutes_ago'" ); return ((int)$num_new_records > 100); } /** * @return bool * * @since 1.0 */ public function image_resizing_disabled() { global $sby_settings; $disable_resizing = isset( $sby_settings['disable_resize'] ) ? $sby_settings['disable_resize'] === 'on' || $sby_settings['disable_resize'] === true : false; if ( ! $disable_resizing ) { $disable_resizing = isset( $this->resizing_tables_exist ) ? ! $this->resizing_tables_exist : ! $this->does_resizing_tables_exist(); } return $disable_resizing; } /** * Used to skip image resizing if the tables were never successfully * created * * @return bool * * @since 1.0 */ public function does_resizing_tables_exist() { return true; } /** * Resets the custom tables and deletes all image files * * @since 1.0 */ public function delete_all_sby_posts() { $upload = wp_upload_dir(); global $wpdb; $image_files = glob( trailingslashit( $upload['basedir'] ) . trailingslashit( SBY_UPLOADS_NAME ) . '*' ); // get all file names foreach ( $image_files as $file ) { // iterate files if ( is_file( $file ) ) { unlink( $file ); } } $options = get_option( $this->options_prefix . '_settings', array() ); $connected_accounts = isset( $options['connected_accounts'] ) ? $options['connected_accounts'] : array(); foreach ( $connected_accounts as $account_id => $data ) { if ( isset( $data['local_avatar'] ) ) { $connected_accounts[ $account_id ]['local_avatar'] = false; } } $options['connected_accounts'] = $connected_accounts; update_option( $this->options_prefix . '_settings', $options ); $table_name = $wpdb->prefix . "options"; $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_\$sby\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_timeout\_\$sby\_%') " ); $upload = wp_upload_dir(); $upload_dir = $upload['basedir']; $upload_dir = trailingslashit( $upload_dir ) . SBY_UPLOADS_NAME; if ( ! file_exists( $upload_dir ) ) { $created = wp_mkdir_p( $upload_dir ); if ( $created ) { $this->remove_error( 'upload_dir' ); } else { $this->add_error( 'upload_dir', array( __( 'There was an error creating the folder for storing resized images.', 'feeds-for-youtube' ), $upload_dir ) ); } } else { $this->remove_error( 'upload_dir' ); } } /** * @return array * * @since 1.0 */ public function get_errors() { return $this->errors; } /** * @param $type * @param $message_array * * @since 1.0 */ public function add_error( $type, $message_array ) { $message_array[] = "Error timestamp: " . strtotime( 'now' ); $this->errors[ $type ] = $message_array; update_option( 'sby_errors', $this->errors, false ); } /** * @param $type * * @since 1.0 */ public function remove_error( $type ) { if ( isset( $this->errors[ $type ] ) ) { unset( $this->errors[ $type ] ); update_option( $this->options_prefix . '_errors', $this->errors, false ); } } public function remove_all_errors() { delete_option( $this->options_prefix . '_errors' ); } /** * @param $type * @param $message * * @since 1.0 */ public function add_frontend_error( $type, $message ) { $this->frontend_errors[ $type ] = $message; } /** * @return array * * @since 1.0 */ public function get_frontend_errors() { return $this->frontend_errors; } /** * @return array * * @since 1.0 */ public function reset_frontend_errors() { return $this->frontend_errors = array(); } /** * @since 1.0 */ public function add_api_request_delay( $time_in_seconds = 300, $account_id = false ) { if ( $account_id ) { set_transient( SBY_USE_BACKUP_PREFIX . $this->options_prefix . '_' . $account_id, '1', $time_in_seconds ); } else { set_transient( SBY_USE_BACKUP_PREFIX . $this->options_prefix . '_delay_requests', '1', $time_in_seconds ); } } /** * @since 1.0 */ public function are_current_api_request_delays( $account_id = false ) { $is_delay = (get_transient( SBY_USE_BACKUP_PREFIX . $this->options_prefix . '_delay_requests' ) !== false); return $is_delay; } }