posts} AS p "; $query .= "INNER JOIN {$wpdb->postmeta} AS pm ON p.ID = pm.post_id "; $query .= "WHERE (pm.meta_key = 'podPressMedia' OR pm.meta_key = '_podPressMedia') "; $query .= "AND p.post_type != 'revision' "; $query .= "GROUP BY p.ID "; $query .= "ORDER BY p.post_date DESC "; $results_data = $wpdb->get_results($query, ARRAY_A); if( $results_data ) { foreach( $results_data as $null => $row ) { //$return = $row; $podpress_data = @unserialize($row['meta_value']); if( !$podpress_data ) { $podpress_data_serialized = powerpress_repair_serialize( $row['meta_value'] ); $podpress_data = @unserialize($podpress_data_serialized); if( !is_array($podpress_data) && is_string($podpress_data) ) { $podpress_data_two = @unserialize($podpress_data); if( !is_array($podpress_data_two) ) { $podpress_data_serialized = powerpress_repair_serialize($podpress_data); $podpress_data_two = @unserialize($podPressMedia); } if( is_array($podpress_data_two) ) $podpress_data = $podpress_data_two; } } else if( is_string($podpress_data) ) { // May have been double serialized... $podpress_unserialized = @unserialize($podpress_data); if( !$podpress_unserialized ) { $podpress_data_serialized = powerpress_repair_serialize( $podpress_data ); $podpress_unserialized = @unserialize($podpress_data_serialized); } $podpress_data = $podpress_unserialized; } if( $podpress_data ) { if( !is_array($podpress_data) ) { // display a warning here... if( $hide_errors == false ) powerpress_page_message_add_error( sprintf( __('Error decoding PodPress data for post "%s"', 'powerpress'), esc_attr($row['post_title']) ) ); continue; } $clean_data = array(); foreach( $podpress_data as $episode_index => $episode_data ) { if( trim($episode_data['URI']) != '' ) { $MediaURL = $episode_data['URI']; if( strtolower(substr($MediaURL, 0, 4)) != 'http' ) $MediaURL = $media_url . rtrim($episode_data['URI'], '/'); if( !powerpress_only_include_ext($MediaURL) ) // Skip this media type continue; $clean_data[ $episode_index ] = array(); $clean_data[ $episode_index ]['url'] = $MediaURL; $clean_data[ $episode_index ]['size'] = $episode_data['size']; if( trim($episode_data['duration']) && $episode_data['duration'] != 'UNKNOWN' ) $clean_data[ $episode_index ]['duration'] = powerpress_readable_duration($episode_data['duration'], true); $ContentType = powerpress_get_contenttype( $episode_data['URI'] ); if( $ContentType ) $clean_data[ $episode_index ]['type'] = trim($ContentType); if( !empty($episode_data['previewImage']) ) $clean_data[ $episode_index ]['image'] = $episode_data['previewImage']; } } if( count($clean_data) == 0 ) continue; // Go to the next record... if( $return['feeds_required'] < count( $clean_data ) ) { $return['feeds_required'] = count( $clean_data ); } $return[ $row['ID'] ] = array(); $return[ $row['ID'] ]['podpress_data'] = $clean_data; $return[ $row['ID'] ]['post_title'] = $row['post_title']; $return[ $row['ID'] ]['post_date'] = $row['post_date']; // Check that there is no other enclosure... $enclosure_data = get_post_meta($row['ID'], 'enclosure', true); if( $enclosure_data ) { $Included = false; list($EnclosureURL,$null) = explode("\n", $enclosure_data); $return[ $row['ID'] ]['enclosure'] = $enclosure_data; foreach( $clean_data as $episode_index_temp => $episode_data_temp ) { if( trim($EnclosureURL) == trim($episode_data_temp['url']) ) { $Included = true; break; // We found the media already. } else if( trim($episode_data_temp['url']) == '' ) { unset($clean_data[$episode_index_temp]); // Empty URL, lets remove it so we don't accidently use it } } reset($clean_data); if( $Included == false && $return['feeds_required'] < (count( $clean_data )+1) ) { $return['feeds_required'] = count( $clean_data )+1; // We can't remove this enclosure } } // Check for additional itunes data in the database.. if( false ) // Possibly for future verions, but seems unnecessary at this point { $itunes_data = get_post_meta($row['ID'], 'podPressPostSpecific', true); if( $itunes_data && is_array($itunes_data) ) { $return[ $row['ID'] ]['itunes'] = array(); // Add iTunes stuff... if( $itunes_data['itunes:subtitle'] != '##PostExcerpt##' && $itunes_data['itunes:subtitle'] != '' ) $return[ $row['ID'] ]['itunes']['subtitle'] = $itunes_data['itunes:subtitle']; if( $itunes_data['itunes:summary'] != '##PostExcerpt##' && $itunes_data['itunes:summary'] != '##Global##' && $itunes_data['itunes:summary'] != '' ) $return[ $row['ID'] ]['itunes']['summary'] = $itunes_data['itunes:summary']; if( $itunes_data['itunes:author'] != '##Global##' && $itunes_data['itunes:author'] != '' ) $return[ $row['ID'] ]['itunes']['author'] = $itunes_data['itunes:author']; if( strtolower($itunes_data['itunes:explicit']) == 'yes' ) $return[ $row['ID'] ]['itunes']['explicit'] = 'yes'; if( strtolower($itunes_data['itunes:block']) == 'yes' ) $return[ $row['ID'] ]['itunes']['block'] = 'yes'; if( count($return[ $row['ID'] ]['itunes']) == 0 ) unset($return[ $row['ID'] ]['itunes']); } } } } } return $return; } function powerpressadmin_podpress_delete_data() { global $wpdb; // Delete podpress data from database... $query = "DELETE FROM {$wpdb->postmeta} WHERE meta_key LIKE 'podPress%'"; $deleted_count = $wpdb->query($query); powerpress_page_message_add_notice( sprintf(__('PodPress data deleted from database successfully. (%d database records removed)', 'powerpress'), $deleted_count) ); } function powerpressadmin_podpress_do_import() { $Import = ( !empty( $_POST['Import']) ? $_POST['Import'] : array() ); $PodPressData = powerpress_get_podpress_episodes(true); foreach( $Import as $post_id => $podpress_episode_feeds ) { foreach( $podpress_episode_feeds as $podpress_index => $feed_slug ) { if( $feed_slug ) { $EpisodeData = $PodPressData[ $post_id ]['podpress_data'][ $podpress_index ]; if( $EpisodeData['size'] == '' || !is_numeric($EpisodeData['size']) ) // Get the content length { $headers = wp_get_http_headers($EpisodeData['url']); if( $headers && $headers['content-length'] ) $EpisodeData['size'] = (int) $headers['content-length']; } $EnclosureData = trim($EpisodeData['url']) . "\n" . trim($EpisodeData['size']) . "\n". trim($EpisodeData['type']); $Serialized = array(); if( !empty($EpisodeData['duration']) ) $Serialized['duration'] = $EpisodeData['duration']; if( !empty($EpisodeData['image']) ) $Serialized['image'] = $EpisodeData['image']; if( count($Serialized) > 0 ) $EnclosureData .= "\n".serialize($Serialized); if( $feed_slug == 'podcast' ) add_post_meta($post_id, 'enclosure', $EnclosureData, true); else add_post_meta($post_id, '_'. $feed_slug .':enclosure', $EnclosureData, true); powerpressadmin_podpress_import_log($PodPressData[ $post_id ]['post_title'], $EpisodeData['url'], $feed_slug); } } } } function powerpressadmin_podpress_import_log($post_title, $episode_url, $feed_slug) { global $g_podpress_import_log, $g_podpress_import_count; $filename = substr($episode_url, strrpos($episode_url, '/')+1); $g_podpress_import_log .= '
'; $g_podpress_import_log .= sprintf( __('Podpress Episode "%s" for blog post "%s" imported to feed "%s"', 'powerpress'), htmlspecialchars($filename), htmlspecialchars($post_title), $feed_slug ); $g_podpress_import_log .= '
'; if( $g_podpress_import_count ) $g_podpress_import_count++; else $g_podpress_import_count = 1; } function powerpressadmin_podpress_import_print_log() { global $g_podpress_import_log, $g_podpress_import_count; if( !$g_podpress_import_log ) { echo ''. __('If you are unsure about importing your PodPress data, try the option under Basic Settings titled \'PodPress Episodes\' and set to \'Include in posts and feeds\'.', 'powerpress') .'
'; echo ''. __('Once you feel comfortable with PowerPress, you can use this screen to import your PodPress data.', 'powerpress') .'
'; echo '". sprintf( __('Imported %d PodPress episode(s).', 'powerpress'), $g_podpress_import_count) ."
"; echo '';
if ( current_user_can( 'edit_post', $post_id ) )
{
?>"> '; echo ' ';
$index = 1;
foreach( $import_data['podpress_data'] as $episode_index => $episode_data )
{
$Parts = parse_url($episode_data['url']);
$filename = substr($Parts['path'], strrpos($Parts['path'], '/')+1 );
echo "File $index: ";
if( empty($episode_data['not_podpress']) && empty($episode_data['imported']) )
{
echo '';
$AllowCleanup = false;
$StrandedEpisodes++;
}
else if( empty($episode_data['not_podpress']) && $episode_data['imported'] )
echo '';
if( empty($episode_data['not_podpress']) && empty($episode_data['imported']) )
echo '*';
echo $filename;
if( empty($episode_data['not_podpress']) )
echo '';
echo ' ';
echo ''; $index++; } reset($import_data['podpress_data']); echo ' | ';
}; break;
case 'post-date': {
echo ""; $timestamp = strtotime($import_data['post_date']); echo date('Y/m/d', $timestamp); echo " | "; }; break; case 'feed-slug': { echo "$feed_slug"; echo " | "; }; break; default: { echo "";
$feed_slug = substr($column_name, 5);
if( $column_name == 'exclude' )
$feed_slug = '';
$enclosure_data = false;
$EnclosureURL = '';
echo ' '; if( isset($CurrentEnclosures[$feed_slug]) && $CurrentEnclosures[$feed_slug]['imported'] ) { $index = 1; foreach( $import_data['podpress_data'] as $episode_index => $episode_data ) { echo "File $index: "; if( $CurrentEnclosures[$feed_slug]['url'] == $episode_data['url'] ) { if( !empty($CurrentEnclosures[$feed_slug]['present']) ) echo ''. __('present', 'powerpress') .''; else echo ''. __('imported', 'powerpress') .''; } else echo 'X'; echo " \n"; $index++; } reset($import_data['podpress_data']); } else { $index = 1; foreach( $import_data['podpress_data'] as $episode_index => $episode_data ) { echo __('File', 'powerpress') ." $index: "; if( !empty($episode_data['imported']) ) { echo ' X'; } else { $checked = ''; if( !isset($CheckedEpisodes[ $episode_index ]) && !in_array($feed_slug, $CheckedEpisodes) ) { $checked = 'checked'; $CheckedEpisodes[ $episode_index ] = $feed_slug; } if( !isset($CheckedEpisodes[ $episode_index ]) && $feed_slug == '' ) { $checked = 'checked'; } echo ''; } echo ' '; $index++; } reset($import_data['podpress_data']); } echo ' | ";
$feed_index++;
}; break;
}
}
echo "\n
'. __('red', 'powerpress') .'' ); ?>
:
File : $feed_title ) { echo ''. htmlspecialchars($feed_title) .' | '; } ?>
1 && $StrandedEpisodes > 0 ) { ?>