',
'',
'',
'',
) );
}
return $links;
}
/**
* Function to add the plugin's options as an array
* called:
* - on installation
* - when the option does not exist
*
*/
function cc_audioalbum_add_option() {
$settings = array(
'version' => CC_AUDIOALBUM_VERSION,
'manualcss' => '',
'bgcol' => '#434a54',
'playr' => '#2c3138',
'tvcol' => '#ffffff',
'txtbt' => '#ffffff',
);
add_option( 'cc_audioalbum', $settings, '' );
}
/**
* Activation
* call the function to add the plugin's option
*
*/
function cc_audioalbum_activate(){
cc_audioalbum_add_option();
}
register_activation_hook( __FILE__, 'cc_audioalbum_activate' );
/**
* Create or update the plugin's version number in the options array
*
*/
if ( false == get_option( 'cc_audioalbum' ) ) {
//*If the plugin's option does not exist, add it
cc_audioalbum_add_option();
} else {
$settings = get_option( 'cc_audioalbum' );
//* Update the version number
//* additional values in the options array can also be added here in future versions if required
if ( $settings['version'] != CC_AUDIOALBUM_VERSION ) {
$settings['version'] = CC_AUDIOALBUM_VERSION;
update_option( 'cc_audioalbum', $settings );
}
}
/**
* Register the scripts
*
*/
function cc_audiotrackpopup_script() {
wp_register_script( 'audiotrackpopup', plugins_url( '/js/audiotrackpopup.js' , __FILE__ ), array( 'jquery' ), CC_AUDIOALBUM_VERSION, true );
}
add_action('wp_enqueue_scripts', 'cc_audiotrackpopup_script');
/**
* Prevent unstyled players being shown until the page has fully loaded
*
*/
function cc_hide_audio_until_load() {
echo "\n" . '' . "\n";
}
add_action('wp_head', 'cc_hide_audio_until_load');
/**
* Add stylesheet & custom styles
*
*/
function cc_audioalbum_css() {
$defaults = array(
'bgcol' => '#434a54',
'playr' => '#2c3138',
'tvcol' => '#ffffff',
'txtbt' => '#ffffff',
);
//* get the settings array
$settings = get_option( 'cc_audioalbum', $defaults );
//* If the option for manual CSS has been set, return without doing anything.
if ( $settings[ 'manualcss' ] == 1 ) {
return;
}
wp_register_style( 'audioalbum', plugin_dir_url(__FILE__) . 'css/audioalbum.css', array( 'dashicons' ), CC_AUDIOALBUM_VERSION );
//* sanitize it the settings
$settings[ 'bgcol' ] = cc_sanitize_hex_color( $settings[ 'bgcol' ], '#434a54' );
$settings[ 'playr' ] = cc_sanitize_hex_color( $settings[ 'playr' ], '#2c3138' );
$settings[ 'tvcol' ] = cc_sanitize_hex_color( $settings[ 'tvcol' ], '#ffffff' );
$settings[ 'txtbt' ] = cc_sanitize_hex_color( $settings[ 'txtbt' ], '#ffffff' );
//* Output the inline style
$audioalbum_custom_css = '
.audioalbum,
.audioheading,
.track {
background-color: ' . $settings[ 'bgcol' ] . ';
}
.track .wp-audio-shortcode.mejs-audio .mejs-inner > .mejs-controls,
.track .audiobutton a {
background-color: ' . $settings[ 'playr' ] . ';
}
.track .audiobutton a:hover {
background-color: ' . $settings[ 'txtbt' ] . ';
color: ' . $settings[ 'bgcol' ] . ';
}
.track .mejs-time-rail .mejs-time-total .mejs-time-current,
.track .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
background-color: ' . $settings[ 'tvcol' ] . ';
}
.track .mejs-controls .mejs-time-rail .mejs-time-total,
.track .mejs-time-rail .mejs-time-total .mejs-time-loaded,
.track .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total {
background-color: ' . $settings[ 'playr' ] . ';
}
h1.audioheading,
p.audioheading,
h2.audioalbum,
p.audioalbum,
.track .songtitle,
.track .songwriter,
.track .mejs-controls > .mejs-button button,
.track .audiobutton a,
.track .mejs-currenttime,
.track .mejs-duration {
color: ' . $settings[ 'txtbt' ] . ';
}
.track .mejs-controls > .mejs-button button:hover {
color: ' . $settings[ 'tvcol' ] . ';
}';
//* shrink css (not quite minimised)
$audioalbum_custom_css = ( str_replace(array("\r", "\n", "\t"), '', $audioalbum_custom_css ) );
wp_add_inline_style( 'audioalbum', $audioalbum_custom_css );
}
add_action('wp_enqueue_scripts', 'cc_audioalbum_css' );
/**
* Shortcode to add Album Title
* ( Optional )
*
*/
function cc_audioheading_shortcode( $atts, $content = null ) {
wp_enqueue_style( 'audioalbum' );
$args = shortcode_atts( array(
'title' => '',
'label' => '',
'catalog' => '',
'bgcolor' => '',
), $atts, 'audioheading' );
// sanitize the args
$args['title'] = sanitize_text_field( $args['title'] );
$args['label'] = sanitize_text_field( $args['label'] );
$args['catalog'] = sanitize_text_field( $args['catalog'] );
//* initialize vars for bgcol
$inlinestyle = ''; //* string to add inline style (or not)
$bgcolset = ''; //* class to enable js to find out that a colour has been set in the shortcode
//* If a bgcolor is specified it will be added as an inline style and add bgcolset class so it can be ignored by the customizer preview
if ( $args['bgcolor'] ) {
$inlinestyle = ' style="background: ' . cc_sanitize_hex_color( $args['bgcolor'], '#434a54' ) . '"';
$bgcolset = ' bgcolset';
}
$output = '' . $args['title'] . '
' . $args['label'] . ' ' . $args['catalog'] . '
';
return $output;
}
add_shortcode( 'audioheading', 'cc_audioheading_shortcode' );
/**
* shortcode to add Album Header info
* (optional)
*/
function cc_audioalbum_shortcode( $atts, $content = null ) {
$args = shortcode_atts( array(
'title' => '',
'detail' => '',
'date' => '',
'bgcolor' => '',
), $atts, 'audioalbum' );
// sanitize the args
$args['title'] = sanitize_text_field( $args['title'] );
$args['detail'] = sanitize_text_field( $args['detail'] );
$args['date'] = sanitize_text_field( $args['date'] );
//* initialize vars for bgcol
$inlinestyle = ''; //* string to add inline style (or not)
$bgcolset = ''; //* class to enable js to find out that a colour has been set in the shortcode
//* If a bgcolor is specified it will be added as an inline style and add bgcolset class so it can be ignored by the customizer preview
if ( $args['bgcolor'] ) {
$inlinestyle = ' style="background: ' . cc_sanitize_hex_color( $args['bgcolor'], '#434a54' ) . '"';
$bgcolset = ' bgcolset';
}
$output = '' . $args['title'] . '
'
. '' . $args['detail'] . '' . $args['date'] .'' . do_shortcode($content) . '
';
return $output;
}
add_shortcode( 'audioalbum', 'cc_audioalbum_shortcode' );
/**
* Shortcode to add each audio track inside the album
*
*/
function cc_audiotrack_shortcode( $atts, $content = null ) {
wp_enqueue_script( 'audiotrackpopup' );
wp_enqueue_style( 'audioalbum' );
wp_enqueue_style( 'dashicons' );
$lyricslink= '';
$popupbutton = '';
$cc_siteurl = get_bloginfo('url');
$args = shortcode_atts( array(
'title' => '',
'width' => '520',
'height' => '400',
'songwriter' => '',
'buttontext' => 'lyrics',
'buttonlink' => '#',
'preload' => 'metadata',
'src' => '',
'mp3' => '',
'ogg' => '',
'wma' => '',
'm4a' => '',
'wav' => '',
'loop' => '',
'autoplay' => '',
), $atts, 'audiotrack' );
$wpaudioshortcode = 'audio';
$args['title'] = esc_attr( $args['title'] );
$args['buttontext'] = esc_attr( $args['buttontext'] );
if ( $args['songwriter'] !== '') {
$args['songwriter'] = '(' . $args['songwriter'] . ')';
}
if ( $args['src'] !== ''){
$wpaudioshortcode .= ' src="' . esc_url( $args['src'] ) . '"';
}
if ( $args['mp3'] !== ''){
$wpaudioshortcode .= ' mp3="' . esc_url( $args['mp3'] ) . '"';
}
if ( $args['ogg'] !== ''){
$wpaudioshortcode .= ' ogg="' . esc_url( $args['ogg'] ) . '"';
}
if ( $args['wma'] !== ''){
$wpaudioshortcode .= ' wma="' . esc_url( $args['wma'] ) . '"';
}
if ( $args['m4a'] !== ''){
$wpaudioshortcode .= ' m4a="' . esc_url( $args['m4a'] ) . '"';
}
if ( $args['wav'] !== ''){
$wpaudioshortcode .= ' wav="' . esc_url( $args['wav'] ) . '"';
}
if ( $args['loop'] !== ''){
$wpaudioshortcode .= ' loop="' . esc_attr( $args['loop']) . '"';
}
if ( $args['autoplay'] !== ''){
$wpaudioshortcode .= ' autoplay="' . esc_attr( $args['autoplay'] ) . '"';
}
if ( $args['preload'] !== 'none'){
$wpaudioshortcode .= ' preload="' . esc_attr( $args['preload'] ) . '"';
}
if ( $args['buttonlink'] !== '#') {
$popupbutton = '';
}
$audiotrack = '' . $args['title'] . '' . $args['songwriter'] . '' . $popupbutton . '';
//* Shortcode Inception! - call the native WP audio shortcode and pass the attributes
$output = '' . $audiotrack . '
' . do_shortcode('[' . $wpaudioshortcode . ']') . '
';
return $output;
}
add_shortcode( 'audiotrack', 'cc_audiotrack_shortcode' );
/**
* A small bonus for Genesis theme users
* Use a template for the popup when Genesis is the active parent theme
*
*/
if ( basename( get_template_directory() ) == 'genesis' ) {
add_filter( 'template_include', 'cc_popup_audioalbum_template' );
}
function cc_popup_audioalbum_template( $template ) {
if( isset( $_GET['pop']) && 'yes' == $_GET['pop'] )
$template = plugin_dir_path( __FILE__ ) . 'templates/genesis-audioalbum-popup.php';
return $template;
}
/**
* Sanitize Functions
*
*/
require_once(plugin_dir_path( __FILE__ ) . 'includes/sanitize.php');
/**
* Customiser
*
*/
require_once(plugin_dir_path( __FILE__ ) . 'includes/customizer.php');