blogid;
// Get all blog ids
$blogids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs" );
foreach ($blogids as $blog_id) {
switch_to_blog($blog_id);
$this->_create_db_structure();
}
switch_to_blog($old_blog);
return;
}
}
$this->_create_db_structure();
}
/*
A new blog has been created in a multisite WordPress
*/
function installing_new_blog($blog_id, $user_id, $domain, $path, $site_id, $meta ) {
global $wpdb;
if ( is_plugin_active_for_network() )
{
$current_blog = $wpdb->blogid;
switch_to_blog( $blog_id );
$this->_create_db_structure();
switch_to_blog( $current_blog );
}
}
/*
Create the database structure for save player's data
*/
function _create_db_structure()
{
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$db_queries = array();
$db_queries[] = "CREATE TABLE ".$wpdb->prefix.CPMP_PLAYER." (
id mediumint(9) NOT NULL AUTO_INCREMENT,
player_name VARCHAR(250) NOT NULL DEFAULT '',
config LONGTEXT NULL,
playlist LONGTEXT NULL,
UNIQUE KEY id (id)
) $charset_collate;";
dbDelta($db_queries); // Running the queries
}
function _get_skin_list(&$selected_skin, $type, &$width, &$height){
$skin_dir = CPMP_PLUGIN_DIR.'/skins';
$skins_arr = array();
$skins_list = '';
$skins_list_script = 'var cpmp_skin_list = [];';
$c = 0;
if(file_exists($skin_dir)){
$d = dir($skin_dir);
while (false !== ($entry = $d->read())) {
if($entry != '.' && $entry != '..' && is_dir($skin_dir.'/'.$entry)){
$this_skin = $skin_dir.'/'.$entry.'/';
if(file_exists($this_skin)){
$skin_data = parse_ini_file($this_skin.'config.ini', true);
if(isset($skin_data['id'])){
if(empty($selected_skin)){
$selected_skin = $skin_data['id'];
}
$skins_list .= '
';
}
}
}
}
$d->close();
}
return $skins_list;
}
/*
Create the settings page
*/
function _paypal_buttons(){
$p = CPMP_PLUGIN_DIR.'/images/paypal_buttons';
$d = dir($p);
$str = "";
while (false !== ($entry = $d->read())) {
if($entry != "." && $entry != ".." && is_file("$p/$entry"))
$str .= " ";
}
$d->close();
return $str;
}
function admin_page(){
global $wpdb;
wp_enqueue_media();
?>
contact page and leave us a message.', CPMP_LANG); ?>
Administration area: Click to access the administration area demo
Public page: Click to access the Public Page ', CPMP_LANG); ?>
width = $_POST['cpmp_width'];
if(!empty($_POST['cpmp_height'])) $conf->height = $_POST['cpmp_height'];
if(!empty($_POST['cpmp_type'])) $conf->type = $_POST['cpmp_type'];
if(!empty($_POST['cpmp_skin'])) $conf->skin = $_POST['cpmp_skin'];
if(isset($_POST['cpmp_autoplay'])) $conf->autoplay = 'autoplay';
if(isset($_POST['cpmp_show_playlist'])) $conf->playlist = true;
if(isset($_POST['cpmp_loop'])) $conf->loop = 'loop';
$conf->preload = (isset($_POST['cpmp_preload'])) ? 'auto' : 'none';
$playlist = json_decode(stripslashes($_POST['cpmp_media_player_playlist']));
$data = array(
'player_name' => $_POST['cpmp_player_name'],
'config' => serialize($conf),
'playlist' => serialize($playlist)
);
$format = array( '%s', '%s', '%s' );
if(empty($_POST['cpmp_player_id'])){
$wpdb->insert(
$wpdb->prefix.CPMP_PLAYER,
$data,
$format
);
}
else{
$wpdb->update(
$wpdb->prefix.CPMP_PLAYER,
$data,
array('id' => $_POST['cpmp_player_id']),
$format,
'%d'
);
}
}
if (
(
(empty($_POST['cpmp_player_edition_nonce']) ||
!wp_verify_nonce($_POST['cpmp_player_edition_nonce'],__FILE__)) &&
(empty($_POST['cpmp_player_creation_nonce']) ||
!wp_verify_nonce($_POST['cpmp_player_creation_nonce'],__FILE__))
) ||
(
isset($_POST['cpmp_player_edition_nonce']) && isset($_POST['cpmp_action']) &&
wp_verify_nonce($_POST['cpmp_player_edition_nonce'],__FILE__) &&
$_POST['cpmp_action'] == 'remove'
)
){
if(isset($_POST['player_id'])){
$wpdb->query(
$wpdb->prepare(
"
DELETE FROM ".$wpdb->prefix.CPMP_PLAYER."
WHERE id = %d
",
$_POST['player_id']
)
);
}
$sql = "SELECT id, player_name FROM ".$wpdb->prefix.CPMP_PLAYER.";";
$players = $wpdb->get_results($sql);
if(count($players)){
wp_enqueue_script('cpmp-admin', plugin_dir_url(__FILE__).'js/cpmp_admin.js', array('jquery'), null, true);
?>
Audio and Video Player.', CPMP_LANG); ?>
skin = '';
$playlist = array();
$insertion_button_text = __('Create Media Player', CPMP_LANG);
$playlist_item_list = '';
if(
isset($_POST['cpmp_player_edition_nonce']) &&
wp_verify_nonce($_POST['cpmp_player_edition_nonce'],__FILE__) &&
isset($_POST['player_id'])
)
{ // Edition
$player = $wpdb->get_row( $wpdb->prepare('SELECT * FROM '.$wpdb->prefix.CPMP_PLAYER.' WHERE id=%d', $_POST['player_id']));
if ( !empty($player) )
{
$player_id = $_POST['player_id'];
$config_tmp = unserialize($player->config);
if($config_tmp) $config = $config_tmp;
$player->playlist = str_replace(';d:', ';i:', $player->playlist);
$playlist_tmp = unserialize($player->playlist);
if($playlist_tmp) $playlist = $playlist_tmp;
foreach( $playlist as $item )
{
$playlist_item_list .= '';
}
$file_for_sale = $player->file_for_sale;
$sale_price = $player->sale_price;
$promotional_text = $player->promotional_text;
$insertion_button_text = __('Update Media Player', CPMP_LANG);
}
// Create the playlist data
$playlist_json = json_encode($playlist);
echo "";
}
if ( isset($_POST['cpmp_player_creation_nonce']) && wp_verify_nonce($_POST['cpmp_player_creation_nonce'], __FILE__) )
{
$config->type = $_POST['player_type'];
}
$width_limit = '';
$height_limit = '';
$skin_list = $this->_get_skin_list($config->skin, $config->type, $width_limit, $height_limit);
$player_type = (isset($config->type) && $config->type == 'video') ? 'video' : 'song';
?>
';
}// End insert_player_button
// Load the player button scripts and initialize the insertion dialog
function set_load_media_player_window(){
global $wpdb;
wp_enqueue_style('wp-jquery-ui-dialog');
wp_enqueue_script('jquery-ui-core');
wp_enqueue_script('jquery-ui-dialog');
wp_enqueue_script(
'cpmp-admin',
CPMP_PLUGIN_URL.'/js/cpmp_admin.js',
array('jquery', 'jquery-ui-core', 'jquery-ui-dialog'),
null,
true
);
// Load players
$sql = "SELECT id, player_name FROM ".$wpdb->prefix.CPMP_PLAYER.";";
$players = $wpdb->get_results($sql);
$options = '';
$label = '';
if(count($players)){
foreach ($players as $player){
$options .= ''.stripslashes($player->player_name).' ';
}
$tag = ''.$options.' ';
$label = __('Select the player to insert:', CPMP_LANG);
}else{
$tag = __('You must to define a media player before use it on page/post.', CPMP_LANG);
}
// Skins
$skins = '';
$skin_dir = CPMP_PLUGIN_DIR.'/skins';
if(file_exists($skin_dir))
{
$d = dir($skin_dir);
while (false !== ($entry = $d->read()))
{
if($entry != '.' && $entry != '..' && is_dir($skin_dir.'/'.$entry))
{
$this_skin = $skin_dir.'/'.$entry.'/';
if(file_exists($this_skin))
{
$skin_data = parse_ini_file($this_skin.'config.ini', true);
$skins .= ''.esc_html($skin_data['name']).' ';
}
}
}
$d->close();
}
$skins .= ' ';
wp_localize_script('cpmp-admin', 'cpmp_insert_media_player', array(
'title' => __('Insert media player on your post/page', CPMP_LANG),
'label' => $label,
'new_label' => __('Create or Edit a Player', CPMP_LANG),
'tag' => $tag,
'skins' => $skins
));
}// End set_load_media_player_window
/**
* To generate the players previews.
*/
public function preview()
{
$user = wp_get_current_user();
$allowed_roles = array('editor', 'administrator', 'author');
if(array_intersect($allowed_roles, $user->roles ))
{
if(!empty($_REQUEST['cpmp-avp-preview']))
{
// Sanitizing variable
$preview = stripcslashes($_REQUEST['cpmp-avp-preview']);
$preview = strip_tags($preview);
// Remove every shortcode that is not in the plugin
remove_all_shortcodes();
add_shortcode('codepeople-html5-media-player', array(&$this, 'replace_shortcode'));
add_shortcode('cpm-player', array(&$this, 'replace_shortcode'));
add_shortcode('codepeople-html5-playlist-item', array(&$this, 'replace_shortcode_playlist_item'));
add_shortcode('cpm-item', array(&$this, 'replace_shortcode_playlist_item'));
if(
has_shortcode($preview, 'codepeople-html5-media-player') ||
has_shortcode($preview, 'cpm-player') ||
has_shortcode($preview, 'codepeople-html5-playlist-item') ||
has_shortcode($preview, 'cpm-item')
)
{
// Deregister all scripts and styles for loading only the plugin styles.
global $wp_styles, $wp_scripts;
if(!empty($wp_scripts)) $wp_scripts->reset();
wp_enqueue_script('jquery');
$if_empty = __('Select at least a media file or player (if appropriate)', CPMP_LANG);
$output = do_shortcode($preview);
if(preg_match('/^\s*$/', $output))
{
$output = ''.$if_empty.'
';
}
if(!empty($wp_styles)) $wp_styles->do_items();
if(!empty($wp_scripts)) $wp_scripts->do_items();
print ''.$output.'
';
print'';
exit;
}
}
}
} // End preview
function replace_shortcode_playlist_item($atts, $content = '')
{
$atts = shortcode_atts(
array(
'file' => '',
'name' => '',
'poster' => '',
'link' => '',
'subtitle' => '',
'lang' => ''
),
$atts
);
extract($atts);
if(!empty($file))
{
if(!empty($content)) $name = $content;
$obj = new stdClass;
$obj->files = array($file);
$obj->poster = $poster;
$obj->annotation = $name;
$obj->link = $link;
$obj->subtitles = array();
if(!empty($subtitle))
{
$subtitle_obj = new stdClass;
$subtitle_obj->link = $subtitle;
$subtitle_obj->language = $lang;
$obj->subtitles[] = $subtitle_obj;
}
$this->current_player_playlist[] = $obj;
}
return '';
}
function replace_shortcode($atts, $content="")
{
global $wpdb;
$supported_ext = array(
'audio' => array('mp3', 'oga', 'ogg'),
'video' => array('wmv', 'flv', 'ogg', 'ogv', 'webm', 'm4v', 'mp4', 'youtube')
);
extract($atts);
$this->current_player_playlist = array();
$content = do_shortcode($content);
// Variables
$player_id = 'codepeople_media_player'.time().mt_rand(1,999999);
$mp_atts = array(); // Media Player attributes
$pl_items = array(); // Playlist items
$srcs = array(); // Sources of first item
$mp_subtitles = array(); // Subtitles list of first item
$styles = '';
$paypal_button = '';
if(isset($id))
{
$sql = $wpdb->prepare('SELECT * FROM '.$wpdb->prefix.CPMP_PLAYER.' WHERE id=%d',$id);
$player = $wpdb->get_row($sql);
if($player != null)
{
$config_obj = (isset($player->config)) ? unserialize($player->config) : new stdClass;
// Set attributes
if(empty($config_obj->type)) $config_obj->type = 'audio';
if(!isset($type)) $type = trim($config_obj->type);
if(!isset($width) && isset($config_obj->width)) $width = trim($config_obj->width);
if(!isset($height) && isset($config_obj->height)) $height = trim($config_obj->height);
if(!isset($skin) && isset($config_obj->skin)) $skin = trim($config_obj->skin);
if(!isset($loop) && isset($config_obj->loop)) $loop = trim($config_obj->loop);
if(!isset($autoplay) && isset($config_obj->autoplay)) $autoplay = trim($config_obj->autoplay);
if(!isset($preload) && isset($config_obj->preload)) $preload = trim($config_obj->preload);
if(!isset($playlist) && isset($config_obj->playlist)) $playlist = trim($config_obj->playlist);
if(empty($this->current_player_playlist))
$this->current_player_playlist = (isset($player->playlist)) ? unserialize($player->playlist) : array();
}
}
if(empty($type)) $type = 'audio';
if(!empty($this->current_player_playlist))
{
$first_item = true;
foreach($this->current_player_playlist as $item)
{
$item_srcs = array();
$item_subtitles = array();
foreach($item->files as $file)
{
$file = $this->transform_url($file);
$ext = $this->get_extension($file);
$item_src_obj = new stdClass;
$item_src_obj->src = $file;
$item_src_obj->type = $type.'/'.$ext;
$item_srcs[] = $item_src_obj;
if($first_item)
{
if(!empty($item->poster)) $mp_atts[] = 'poster="'.esc_url($item->poster).'"';
$srcs[] = ' ';
}
}
foreach( $item->subtitles as $subtitle)
{
$location = $this->transform_url($subtitle->link);
$language = $subtitle->language;
if($first_item)
{
$mp_subtitles[] = ' ';
}
$item_subtitle_obj = new stdClass;
$item_subtitle_obj->kind = 'subtitles';
$item_subtitle_obj->src = $location;
$item_subtitle_obj->srclang = $language;
$item_subtitles[] = $item_subtitle_obj;
}
$pl_item_obj = new stdClass;
if(!empty($item->poster)) $pl_item_obj->poster = $this->transform_url($item->poster);
$pl_item_obj->source = $item_srcs;
$pl_item_obj->track = $item_subtitles;
$pl_items[] = ''.(!empty($item->link) ? '+ ' : ' ').' '.(!empty($item->annotation) ? $item->annotation : '').' ';
$first_item = false;
}
}
else
{
return '';
}
if(empty($skin)) $skin = 'classic-skin';
$skin = trim($skin);
$base_path = dirname(__FILE__).'/';
$base_url = plugin_dir_url(__FILE__);
wp_enqueue_style('wp-mediaelement');
wp_enqueue_style('codepeople_media_player', $base_url.'css/cpmp.css');
$css_path = $base_path.'skins/'.$skin.'/'.$skin.'.css';
$css_url = $base_url.'skins/'.$skin.'/'.$skin.'.css';
$js_path = $base_path.'skins/'.$skin.'/'.$skin.'.js';
$js_url = $base_url.'skins/'.$skin.'/'.$skin.'.js';
if(file_exists($css_path))
wp_enqueue_style('codepeople_media_player_style_'.$skin,$css_url);
if(file_exists($js_path))
wp_enqueue_script('codepeople_media_player_script_'.$skin, $js_url, array('jquery'), null, true);
wp_enqueue_script('wp-mediaelement');
wp_enqueue_script('codepeople_media_player_script', $base_url.'js/codepeople-plugins.js', array('jquery', 'wp-mediaelement'), null, true);
if(!empty($width))
{
if( is_numeric( $width ) ) $width .= 'px';
$width = esc_attr($width);
$styles .= 'style="width:'.$width.'"';
$mp_atts[] = 'width="'.$width.'"';
}
if(!empty($height)) $mp_atts[] = 'height="'.esc_attr($config_obj->height).'"';
$mp_atts[] = 'class="codepeople-media '.(!empty($skin) ? esc_attr($skin) : '' ).'"';
if(!empty($loop) && $loop != 'false') $mp_atts[] = 'loop="loop"';
if(!empty($autoplay) && $autoplay != 'false') $mp_atts[] = 'autoplay="autoplay"';
if(isset($preload)) $mp_atts[] = 'preload="'.esc_attr($preload).'"';
else $mp_atts[] = 'preload="none"';
return '<'.$type.' id="'.esc_attr($player_id).'" '.implode(' ', $mp_atts).' '.$styles.'>'.implode('',$srcs).implode('', $mp_subtitles).''.$type.'>'.((count($pl_items) > 0) ? '
'.implode(' ', $pl_items).' ' : '').'
audio-and-video-player require JavaScript
';
} // End replace_shortcode
public static function troubleshoot($option)
{
if(!is_admin())
{
// Solves a conflict caused by the "Speed Booster Pack" plugin
if(is_array($option) && isset($option['jquery_to_footer'])) unset($option['jquery_to_footer']);
}
return $option;
}
}