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 '
'; 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 '
'; return; } echo '
'; echo '

'. __('PodPress Import Log', 'powerpress') .'

'; echo $g_podpress_import_log; $g_podpress_import_log=''; echo "

". sprintf( __('Imported %d PodPress episode(s).', 'powerpress'), $g_podpress_import_count) ."

"; echo '
'; } function powerpressadmin_importpodpress_columns($data=array()) { $Settings = powerpress_get_settings('powerpress_general', false); $data['post-title'] = 'Episode Title'; $data['post-date'] = 'Date'; $data['feed-podcast'] = __('Feed: (podcast)', 'powerpress'); if( is_array($Settings['custom_feeds']) ) { foreach( $Settings['custom_feeds'] as $feed_slug => $value ) { if( $feed_slug != 'podcast' ) $data['feed-'.$feed_slug] = __('Feed', 'powerpress') .': ('.$feed_slug.')'; } } $data['exclude'] = ''. __('No Import', 'powerpress') .''; return $data; } add_filter('manage_powerpressadmin_importpodpress_columns', 'powerpressadmin_importpodpress_columns'); function powerpress_admin_podpress() { $results = powerpress_get_podpress_episodes(false); $Settings = powerpress_get_settings('powerpress_general', false); if( !isset($Settings['custom_feeds']['podcast']) ) $Settings['custom_feeds']['podcast'] = __('Podcast Feed (default)', 'powerpress'); $AllowImport = false; $AllowCleanup = true; if( $results ) { if( $results['feeds_required'] > count($Settings['custom_feeds']) ) { powerpress_page_message_add_error( sprintf(__('We found blog posts that have %d media files. You will need to create %d more Custom Feed%s in order to continue.', 'powerpress'), $results['feeds_required'], $results['feeds_required'] - count($Settings['custom_feeds']), (( ( $results['feeds_required'] - count($Settings['custom_feeds']) ) > 1 )?'s':'') ) ); } else { $AllowImport = true; } } powerpress_page_message_print(); powerpressadmin_podpress_import_print_log(); ?>

"; //print_r($results); //echo ""; //echo '

Show Debug Info

'; if( count($results) == 0 || count($results) == 1 ) { ?>

$import_data ) { $edit_link = get_edit_post_link( $post_id ); if( $post_id == 'feeds_required' ) continue; $columns = powerpressadmin_importpodpress_columns(); $CurrentEnclosures = array(); if( is_array($Settings['custom_feeds']) ) { foreach( $Settings['custom_feeds'] as $feed_slug => $value ) { if( $feed_slug == 'podcast' ) $enclosure_data = get_post_meta($post_id, 'enclosure', true); else $enclosure_data = get_post_meta($post_id, '_'. $feed_slug .':enclosure', true); if( !$enclosure_data ) continue; @list($EnclosureURL, $EnclosureSize, $EnclosureType, $Serialized) = @explode("\n", $enclosure_data); if( $EnclosureURL ) { $CurrentEnclosures[ $feed_slug ] = array(); $CurrentEnclosures[ $feed_slug ]['url'] = trim($EnclosureURL); $CurrentEnclosures[ $feed_slug ]['imported'] = false; } $found = false; foreach( $import_data['podpress_data'] as $episode_index => $episode_data ) { if( $episode_data['url'] == $CurrentEnclosures[ $feed_slug ]['url'] ) { $import_data['podpress_data'][$episode_index]['imported'] = true; $CurrentEnclosures[ $feed_slug ]['imported'] = true; $found = true; break; } } reset($import_data['podpress_data']); if( $found == false ) { // Add it to the media file list, prepend it... $not_podpress_data = array(); $not_podpress_data['url'] = $CurrentEnclosures[ $feed_slug ]['url']; $not_podpress_data['imported'] = true; $not_podpress_data['not_podpress'] = true; array_push($import_data['podpress_data'], $not_podpress_data); $CurrentEnclosures[ $feed_slug ]['imported'] = true; $CurrentEnclosures[ $feed_slug ]['present'] = true; } } reset($Settings['custom_feeds']); } if( $count % 2 == 0 ) echo ''; else echo ''; $CheckedEpisodes = array(); // key = file_index, value = feed-slug $feed_index = 0; foreach($columns as $column_name=>$column_display_name) { $class = "class=\"column-$column_name\""; switch($column_name) { case 'post-title': { echo ''; }; break; case 'post-date': { echo ""; }; break; case 'feed-slug': { echo ""; }; break; default: { echo ""; $feed_index++; }; break; } } echo "\n \n"; $count++; } ?>
'; 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 '
'; $index++; } reset($import_data['podpress_data']); echo '
'; echo '
"; $timestamp = strtotime($import_data['post_date']); echo date('Y/m/d', $timestamp); echo "$feed_slug"; 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 '
'; echo "

'. __('red', 'powerpress') .'' ); ?>

:

File : $feed_title ) { echo ''. htmlspecialchars($feed_title) .' | '; } ?>

1 && $StrandedEpisodes > 0 ) { ?>


There is no need to delete PodPress data, but if you prefer to clean up your database then please feel free to use this option.

'. __('Link', 'powerpress') .'', ''. __('Link', 'powerpress') .'' ); ?>

'. __('Custom Podcast Channels', 'powerpress') .''); ?>