', '', '', '', ) ); } 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 = '' . esc_attr( $args['buttontext']) . ''; } $audiotrack = '' . $args['title'] . '' . $args['songwriter'] . '' . $popupbutton . ''; //* Shortcode Inception! - call the native WP audio shortcode and pass the attributes $output = '
' . $audiotrack . '
'; 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');