File "player-position-save.php"

Full Path: /home/pylifeesyu/www/wp-content/plugins/fv-wordpress-flowplayer/models/player-position-save.php
File size: 2.43 KB
MIME-type: text/x-php
Charset: utf-8

<?php
class FV_Player_Position_Save {

  public function __construct() {
    add_action( 'wp_ajax_fv_wp_flowplayer_video_position_save', array($this, 'video_position_save') );
    add_filter('fv_player_item', array($this, 'set_last_position') );
    add_filter('fv_flowplayer_admin_default_options_after', array( $this, 'player_position_save_admin_default_options_html' ) );
    
    add_filter( 'fv_flowplayer_attributes', array( $this, 'shortcode' ), 10, 3 );
  }

  private function get_extensionless_file_name($path) {
    return pathinfo($path, PATHINFO_FILENAME);
  }

  public function set_last_position($aItemArray) {
    global $fv_fp;
    // we only use the first source to check for stored position,
    // since other sources would be alternatives (in quality, etc.)
    if (
      ( !empty($fv_fp->aCurArgs['saveposition']) || $fv_fp->_get_option('video_position_save_enable') ) &&
      is_user_logged_in() &&
      is_array($aItemArray) &&
      isset($aItemArray['sources']) &&
      isset($aItemArray['sources'][0]) &&
      ($metaPosition = get_user_meta( get_current_user_id(), 'fv_wp_flowplayer_position_' . $this->get_extensionless_file_name($aItemArray['sources'][0]['src']), true ))
    ) {
      $aItemArray['sources'][0]['position'] = $metaPosition;
    }
    return $aItemArray;
  }

  public function video_position_save() {
    // TODO: XSS filter for POST values?
    if (is_user_logged_in() && isset($_POST['videoTimes']) && ($times = $_POST['videoTimes']) && count($times)) {
      $uid = get_current_user_id();
      foreach ($times as $record) {
        update_user_meta($uid, 'fv_wp_flowplayer_position_'.$this->get_extensionless_file_name($record['name']), $record['position']);
      }
      wp_send_json_success();
    } else {
      wp_send_json_error();
    }
  }

  function player_position_save_admin_default_options_html() {
    global $fv_fp;
    $fv_fp->_get_checkbox(__('Remember video position', 'fv-wordpress-flowplayer'), 'video_position_save_enable', __('Stores the last video play position for users, so they can continue watching from where they left.'), __('It stored in usermeta for logged in users and in a localStorage or cookie for guest users.'));
  }
  
  function shortcode( $attributes, $media, $fv_fp ) {
    if( !empty($fv_fp->aCurArgs['saveposition']) ) {
      $attributes['data-save-position'] = $fv_fp->aCurArgs['saveposition'];
    }
    return $attributes;
  }

}
$FV_Player_Position_Save = new FV_Player_Position_Save();