/** * Writes HTML code for insertion of Ribcage specific releases feeds into the header of a page. * * @return void * @author Alex Andrews <*****@*****.**> */ function ribcage_release_feeds() { global $wp_query; ?> <link rel="alternate" type="application/rss+xml" href="<a href="<?php echo home_url(); ?> /releases/feed" title="<?php echo get_option('blogname'); ?> Releases RSS feed" /> <?php if (isset($wp_query->query_vars['artist_slug'])) { ?> <link rel="alternate" type="application/rss+xml" href="<a href="<?php echo home_url(); ?> /artists/<?php artist_slug(); ?> /feed" title="<?php artist_name(); ?> Releases RSS feed" /> <?php } }
?> </generator> <language><?php echo get_option('rss_language'); ?> </language> <?php while (have_releases()) { the_release(); ?> <?php $artist = get_artist($release['release_artist']); ?> <item> <title><?php artist_name(); ?> - <?php release_title(); ?> </title> <link><a href="<?php echo home_url(); ?> /artists/<?php artist_slug(); ?> /<?php release_slug(); ?> /</link>
/** * Manages artists - adds, deletes, edits. * * @author Alex Andrews <*****@*****.**> * @return void **/ function ribcage_manage_artists() { global $artists; global $artist; $index = false; // If we aren't on an artist page then we are on the index page. if (isset($_REQUEST['artist'])) { $artist_id = (int) $_REQUEST['artist']; } elseif (isset($_REQUEST['page']) && $_REQUEST['page'] == 'add_artist') { $index = false; } else { $index = true; } register_column_headers('ribcage-manage-artist', array('cb' => '<input type="checkbox" />', 'artist' => 'Artist')); if (isset($_REQUEST['ribcage_action'])) { global $wpdb; // Refactor, this is a terrible place for this to do this. if ($_REQUEST['ribcage_action'] !== 'add') { check_admin_referer('manage_artists'); } else { check_admin_referer('add_artist'); } unset($_POST['_wpnonce']); unset($_POST['_wp_http_referer']); unset($_POST['Submit']); //split apart associative array into different parts to prepare for implodes $post_keys = array_keys($_POST); $post_vals = array_values($_POST); //construct field name list and vals to post $string_keys = implode($post_keys, ","); $string_vals = "'" . implode($post_vals, "','") . "'"; $wpdb->show_errors(); switch ($_REQUEST['ribcage_action']) { case 'edit': $sql = "UPDATE " . $wpdb->prefix . "ribcage_artists\n\t\t\t\t\t\tSET "; $i = 0; foreach ($post_keys as $field) { $sql .= $field . "='" . $post_vals[$i] . "', "; $i++; } $sql .= " artist_id = " . $artist_id . " \n\t\t\t\t\t\tWHERE artist_id = " . $artist_id; $results = $wpdb->query($sql); $wpdb->hide_errors(); $artist = get_artist($artist_id); $message = 'updated'; break; case 'add': $sql = "INSERT INTO " . $wpdb->prefix . "ribcage_artists\n\t\t\t\t\t\t({$string_keys})\n\t\t\t\t\t\tVALUES\n\t\t\t\t\t\t({$string_vals})"; $results = $wpdb->query($sql); $wpdb->hide_errors(); $artist = get_artist_by_slug($_POST['artist_slug']); $message = 'added'; break; case 'delete': $del_artist = get_artistname_by_id($_REQUEST['artist']); delete_artist($_REQUEST['artist']); $message = "{$del_artist} deleted"; $index = 1; break; } echo '<div id="message" class="updated fade"><p><strong>Artist ' . $message . '.</strong></p></div>'; } if (!$index) { if (isset($_REQUEST['artist'])) { $artist = get_artist($_REQUEST['artist']); } ?> <div class="wrap"> <div id="icon-options-general" class="icon32"><br /></div> <?php if ($_REQUEST['page'] == 'add_artist') { ?> <h2>Add Artist</h2> <form action="<?php echo str_replace('%7E', '~', $_SERVER['REQUEST_URI']); ?> &ribcage_action=add" method="post" id="ribcage_edit_artist" name="edit_artist"> <?php wp_nonce_field('add_artist'); ?> <?php } ?> <?php if (isset($_REQUEST['artist'])) { ?> <h2>Managing <?php artist_name(); ?> </h2> <form action="<?php echo str_replace('%7E', '~', $_SERVER['REQUEST_URI']); ?> &ribcage_action=edit" method="post" id="ribcage_edit_artist" name="edit_artist"> <?php wp_nonce_field('manage_artists'); ?> <?php } ?> <table class="form-table"> <tr valign="top"> <th scope="row"><label for="artist_name">Name</label></th> <td> <input type="text" value="<?php artist_name(); ?> " name="artist_name" id="artist_name" class="regular-text"/> </td> </tr> <tr valign="top"> <th scope="row">Sort Name</th> <td> <input type="text" value="<?php artist_name_sort(); ?> " name="artist_name_sort" id="artist_name_sort" class="regular-text" /> <span class="description">The name of the artist to be alphabetized. For example, 'Butterfly, The'.</span> </td> </tr> <tr valign="top"> <th scope="row">Artist Slug</th> <td> <input type="text" style="width:320px;" class="regular-text code" value="<?php artist_slug(); ?> " name="artist_slug" id="artist_slug" /><span class="description">The URL you want for the artist - for example <a href="<?php echo home_url(); ?> /artists/artist_slug</span> </td> </tr> <tr valign="top"> <th scope="row">Signup Date</th> <td> <input type="text" style="width:100px;" class="regular-text code" value="<?php echo $artist['artist_signed']; ?> " name="artist_signed" id="artist_signed" maxlength="50" /><span class="description">The date the artist signed for your label</span> </td> </tr> <tr valign="top"> <th scope="row">Creative Commons license</th> <td> <?php echo ribcage_cc_dropdown($artist_license_val); ?> </td> </tr> <tr valign="top"> <th scope="row">Artist's Music Brainz ID</th> <td> <input type="text" style="width:320px;" class="regular-text code" value="<?php artist_musicbrainz(); ?> " name="artist_mbid" id="artist_mbid" maxlength="50" /> </td> </tr> <tr valign="top"> <th scope="row">Website URL</th> <td> <input type="text" style="width:320px;" class="regular-text code" value="<?php artist_website_link(); ?> " name="artist_link_website" id="artist_link_website" maxlength="200" /> </td> </tr> <tr valign="top"> <th scope="row">MySpace URL</th> <td> <input type="text" style="width:320px;" class="regular-text code" value="<?php artist_myspace_link(); ?> " name="artist_link_myspace" id="artist_link_myspace" maxlength="200" /> </td> </tr> <tr valign="top"> <th scope="row">Facebook URL</th> <td> <input type="text" style="width:320px;" class="regular-text code" value="<?php artist_facebook_link(); ?> " name="artist_link_facebook" id="artist_link_facebook" maxlength="200" /> </td> </tr> <tr valign="top"> <th scope="row">Artist Biography</th> <td> <textarea rows="5" cols="50" name="artist_bio" id="artist_bio" class="regular-text"><?php echo $artist['artist_bio']; ?> </textarea> </td> </tr> <tr valign="top"> <th scope="row">Short One Paragraph Description of Artist</th> <td> <textarea rows="5" cols="50" name="artist_blurb_tiny" id="artist_blurb_tiny" class="regular-text"><?php echo $artist['artist_blurb_tiny']; ?> </textarea> </td> </tr> <tr valign="top"> <th scope="row">Artist Picture 1</th> <td> <input type="text" style="width:320px;" class="regular-text code" value="<?php artist_picture_1(); ?> " name="artist_picture_1" id="artist_picture_1" maxlength="200" /> </td> </tr> <tr valign="top"> <th scope="row">Artist Picture 2</th> <td> <input type="text" style="width:320px;" class="regular-text code" value="<?php artist_picture_2(); ?> " name="artist_picture_2" id="artist_picture_2" maxlength="200" /> </td> </tr> <tr valign="top"> <th scope="row">Artist Picture 3</th> <td> <input type="text" style="width:320px;" class="regular-text code" value="<?php artist_picture_3(); ?> " name="artist_picture_3" id="artist_picture_3" maxlength="200" /> </td> </tr> <tr valign="top"> <th scope="row">Artist Picture HQ Zipfile URL</th> <td> <input type="text" style="width:320px;" class="regular-text code" value="<?php echo $artist_picture_zip_val; ?> " name="artist_picture_zip" id="artist_picture_zip" maxlength="200" /> </td> </tr> </table> <p class="submit"> <input type="submit" name="Submit" class="button-primary" value="Save Changes" /> </p> </form> </div> <?php } else { ?> <?php $artists = list_artists_blurb(); $alt = 0; ?> <div class="wrap"> <div id="icon-plugins" class="icon32"><br /></div> <h2>Manage Artists</h2> <form action="<?php echo str_replace('%7E', '~', $_SERVER['REQUEST_URI']); ?> " method="post" id="ribcage_manage_artists" name="manage_artists"> <table class="widefat post fixed" cellspacing="0"> <thead> <tr> <?php print_column_headers('ribcage-manage-artist'); ?> </tr> </thead> <tfoot> <tr> <?php print_column_headers('ribcage-manage-artist', FALSE); ?> </tr> </tfoot> <tbody> <?php while (have_artists()) { the_artist(); ?> <?php $manage_link = wp_nonce_url('?page=ribcage&artist=' . artist_id(false), 'manage_artists'); $delete_link = wp_nonce_url('?page=ribcage&artist=' . artist_id(false) . '&ribcage_action=delete', 'manage_artists'); ?> <?php echo $alt % 2 ? '<tr valign="top" class="">' : '<tr valign="top" class="alternate">'; ++$alt; ?> <th scope="row" class="check-column"><input type="checkbox" name="artistcheck[]" value="2" /></th> <td class="column-name"> <strong><a class="row-title" href="?page=manage_artists&artist=<?php artist_id(); ?> " title="<?php artist_name(); ?> " ><?php artist_name(); ?> </strong></a><br /><div class="row-actions"><span class='edit'><a href="<?php echo $manage_link; ?> ">Edit</a> | </span><span class='delete'><a class='submitdelete' href='<?php echo $delete_link; ?> ' onclick="if ( confirm('You are about to delete \'<?php artist_name(); ?> \'\n \'Cancel\' to stop, \'OK\' to delete.') ) { return true;}return false;">Delete</a></span></div></td> </tr> <?php } ?> </tbody> </table> </form> </div> <?php } }
/** * Add a review of a specific release. * * @return void */ function ribcage_manage_reviews() { global $releases, $release, $artist, $tracks, $track; $release = get_release($_REQUEST['release'], false, true); $reviews = $release['release_reviews']; $artist['artist_name'] = get_artistname_by_id($release['release_artist']); ?> <div class="wrap"> <h2>Manage Reviews of <?php artist_name(); ?> - <?php release_title(); ?> </h2> <?php if (count($reviews) == 0) { echo "<p>No reviews yet. Why not add one now?</p>"; } else { register_column_headers('ribcage-manage-reviews', array('cb' => '<input type="checkbox" />', 'review_' => 'Reviewer')); echo "<pre>" . print_r($reviews) . "</pre>"; } ?> <h3>Add a review</h3> <table class="form-table"> <tr valign="top"> <th scope="row"><label for="review_url">Review URL</label></th> <td><input type="text" name="review_url" value="" class="regular-text code"/><span class="description">The URL of the review, if the review is online.</span> </td> </tr> <tr valign="top"> <th scope="row"><label for="review_url">Publication</label></th> <td><input type="text" name="review_url" value="" class="regular-text code"/><span class="description">The name of the publication that reviewed the release</span> </td> </tr> </table> <p class="submit"> <input type="submit" name="Submit" class="button-primary" value="Add Review" /> </p> </form> </div> <?php }
/** * Displays recent releases widget. */ public function widget($args, $instance) { global $releases, $release, $artist; extract($args); $releases = list_recent_releases_blurb('16'); $artists = list_artists_blurb(); ?> <?php echo $before_widget; ?> <?php echo $before_title . 'Recent Releases' . $after_title; ?> <div class="textwidget" align="left"> <?php while (have_releases()) { the_release(); ?> <?php $artist = get_artist($release['release_artist']); ?> <div class="artist_slug"> <a class="slug" href="<?php echo home_url(); ?> /artists/<?php artist_slug(); ?> /<?php release_slug(); ?> "><img src="<?php release_cover_tiny(); ?> " alt="<?php release_title(); ?> " /></a> <div class="artist_slug_info"> <ul class="artist_slug_main"> <li class="artist"><a href="<?php echo home_url(); ?> /artists/<?php artist_slug(); ?> /"><?php artist_name(); ?> </a><h2><a href="<?php echo home_url(); ?> /artists/<?php artist_slug(); ?> /<?php release_slug(); ?> "><?php release_title(); ?> </a></h2></li> </ul> <ul class="artist_slug_meta"> <li class="more"><a href="<?php echo home_url(); ?> /artists/<?php artist_slug(); ?> /<?php release_slug(); ?> ">More</a></li> <li class="listen"><a href="javascript:popUp('<?php release_player_link(); ?> ')">Listen</a></li> <?php if (release_physical()) { ?> <li class="download"><a href="<?php echo home_url(); ?> /download/<?php release_slug(); ?> /">Free Download</a></li> <li class="last buy"><a href="<?php echo home_url(); ?> /buy/<?php release_product_id(); ?> ">Buy</a></li> <?php } else { ?> <li class="last download"><a href="<?php echo home_url(); ?> /download/<?php release_slug(); ?> /">Free Download</a></li> <?php } ?> </ul> </div> <!-- end div.artist_slug_info --> <div class="clear"></div> </div> <!-- end div.artist_slug --> <?php } ?> <div class="clear"></div> <p class="more_link"><a href="<?php echo home_url(); ?> /releases/">more releases ›</a></p> </div> <?php echo $after_widget; ?> <?php }
/** * Displays a form used for editing or adding a product to database. * * @param string $error Error message from the manage_products form. * @param bool $related_to_release If true then we are passing from adding a release in general so we set the relation to this automatically * @return void */ function ribcage_edit_product_form($error = 0, $related_to_release = 0) { global $artist; global $release, $releases; global $product; if (isset($_REQUEST['product'])) { $product = get_product($_REQUEST['product']); } $releases = list_recent_releases_blurb(); if ($error) { echo '<div id="message" class="error"><p><strong>' . $error . '</strong></p></div>'; } ?> <div class="wrap"> <div id="icon-options-general" class="icon32"><br /></div> <?php if (isset($_REQUEST['product'])) { ?> <h2>Editing <?php product_name(); ?> </h2> <form action="<?php echo home_url(); ?> /wp-admin/admin.php?page=manage_products&product=<?php product_id(); ?> &ribcage_action=edited" method="post" id="ribcage_edit_artist" name="edit_artist"> <?php } else { ?> <h2>Add A Product</h2> <form action="<?php echo home_url(); ?> /wp-admin/admin.php?page=manage_products&ribcage_action=add" method="post" id="ribcage_edit_artist" name="edit_artist"> <?php } ?> <table class="form-table"> <tr valign="top"> <th scope="row"><label for="product_name">Name</label></th> <td> <input type="text" value="<?php product_name(); ?> " name="product_name" id="product_name" class="regular-text"/> </td> </tr> <tr valign="top"> <th scope="row"><label for="product_name">Price</label></th> <td> <input type="text" value="<?php echo $product['product_cost']; ?> " name="product_cost" id="product_cost" class="regular-text"/> </td> </tr> <tr valign="top"> <th scope="row"><label for="product_related_release">Related To Release</label></th> <td> <select name="product_related_release" id="product_related_release"> <option value = "">None</option> <?php while (have_releases()) { the_release(); ?> <?php $artist['artist_name'] = get_artistname_by_id($release['release_artist']); ?> <?php if ($release['release_id'] == $product['product_related_release']) { ?> <option selected value="<?php release_id(); ?> "><?php artist_name(); ?> - <?php release_title(); ?> </option> <?php } else { ?> <option value="<?php release_id(); ?> "><?php artist_name(); ?> - <?php release_title(); ?> </option> <?php } ?> <?php } ?> </select> </td> </tr> <tr valign="top"> <th scope="row"><label for="product_name">Product Description</label></th> <td> <textarea rows="10" cols="100" name="product_description" id="product_description" class="regular-text"><?php product_description(); ?> </textarea> </td> </tr> </table> <p class="submit"> <input type="submit" name="Submit" class="button-primary" value="Save Changes" /> </p> </form> </div> <?php }
/** * Displays a drop down menu of all the artists. * * @param string $var_name Optional variable name which the dropdown corresponds to. For example release_artist is the default. * @param int $artist_id Optional artist to make selected. */ function ribcage_artists_dropdown($var_name = 'release_artist', $artist_id = null) { global $artists, $artist; $artists = list_artists_blurb(); $artist = $artists[$current_artist]; ?> <select name="<?php echo $var_name; ?> " id="<?php echo $var_name; ?> "> <?php while (have_artists()) { the_artist(); ?> <?php if ($artist['artist_id'] == $artist_id) { ?> <option selected value="<?php artist_id(); ?> "><?php artist_name(); ?> </option> <?php } else { ?> <option value="<?php artist_id(); ?> "><?php artist_name(); ?> </option> <?php } ?> <?php } ?> <?php }
/** * Creates a Twitter intent URL for tweeting about downloading a specific release. * * @author Alex Andrews <*****@*****.**> * @param bool $echo When true we echo the link to the MP3 download. * @return string The Twitter URL that pre-sets the tweet we are encouraging. */ function release_twitter_promotional_tweet($echo = true) { $artist = ''; if (artist_has_twitter()) { $artist = '@' . artist_twitter_user_name(false); } else { $artist = artist_name(false); } $release_link = release_download_short_link(false); if (!$release_link) { $release_link = release_download_link(false); } $stream_link = release_stream_short_link(false); if (!$stream_link) { $stream_link = release_soundcloud_url(false); } $tweet = urlencode('I just downloaded ' . release_title(false) . ' by ' . $artist . ' at @recordsonribs - Download now ' . $release_link . ', listen now ' . $stream_link); $url = 'https://twitter.com/intent/tweet?text=' . $tweet; if ($echo) { echo $url; } return $url; }
/** * Adds a widget for recent releases, the quantity of which is defined by an option. * * @author Alexander Andrews **/ function recent_releases($args) { global $releases, $release, $artist; extract($args); $releases = list_recent_releases_blurb('5'); $artists = list_artists_blurb(); ?> <?php echo $before_widget; ?> <?php echo $before_title . 'Recent Releases' . $after_title; ?> <div class="textwidget" align="left"> <?php while (have_releases()) { the_release(); ?> <?php $artist = get_artist($release['release_artist']); ?> <div style="margin-bottom:25px;font-size:12px;"><a href="<?php echo get_option('siteurl'); ?> /artists/<?php artist_slug(); ?> /<?php release_slug(); ?> "><img src="<?php release_cover_tiny(); ?> " align="right" style="margin-left: 10px; border: 1px solid #000;" height="65px" width="65px" alt="<?php release_title(); ?> " /></a> <a href="<?php echo get_option('siteurl'); ?> /artists/<?php artist_slug(); ?> /" style="font-size:12px;"><?php artist_name(); ?> </a> - <a href="<?php echo get_option('siteurl'); ?> /artists/<?php artist_slug(); ?> /<?php release_slug(); ?> " style="font-size:12px;"><?php release_title(); ?> </a><br /> <div style="font-size:9px;"> <a href="<?php echo get_option('siteurl'); ?> /artists/<?php artist_slug(); ?> /<?php release_slug(); ?> " style="font-size:11px;color:black;">More</a> - <a href="javascript:popUp('<?php release_player_link(); ?> ')" style="font-size:11px;color:black;">Listen</a> - <a href="<?php echo get_option('siteurl'); ?> /download/<?php release_slug(); ?> /" style="font-size:11px;color:black;">Download</a><?php if (release_physical()) { ?> - <a href="<?php get_option('siteurl'); ?> /buy/<?php release_product_id(); ?> " style="font-size:11px;color:black;">Buy</a><?php } ?> </div> </div> <?php } ?> <p><a href="<?php echo get_option('siteurl'); ?> /releases/">More Releases...</a></p> </div> <?php echo $after_widget; ?> <?php }