posts} AS p "; $query .= "WHERE 1 "; $query .= "AND p.post_type != 'revision' "; $query .= "ORDER BY p.post_date DESC "; $results_data = $wpdb->get_results($query, ARRAY_A); // This could return a lot of data... if( $results_data ) { foreach( $results_data as $null => $row ) { $Media = powerpressadmin_mt_media_from_content($row['post_content']); if( count($Media) == 0 ) continue; if( $return['feeds_required'] < count( $Media ) ) $return['feeds_required'] = count( $Media ); $return[ $row['ID'] ] = array(); $return[ $row['ID'] ]['post_title'] = $row['post_title']; $return[ $row['ID'] ]['post_date'] = $row['post_date']; foreach( $Media as $index => $url ) $return[ $row['ID'] ]['enclosures'][$index]['url'] = $url; } } return $return; } function powerpressadmin_mt_is_media($url) { global $g_import_mt_extensions; $partsURL = @parse_url( trim($url) ); if( empty($partsURL['path']) ) return false; $filename = substr($partsURL['path'], strrpos($partsURL['path'], '/')+1 ); $partsFile = pathinfo($filename); if( empty($partsFile['extension']) ) return false; if( isset($_GET['include_only_ext']) && trim($_GET['include_only_ext']) != '' ) { $extensions = strtolower(preg_replace("/\s/", '', $_GET['include_only_ext'])); $ext_array = explode(',', trim($extensions, ',') ); if( in_array( strtolower($partsFile['extension']), $ext_array ) ) { if( !isset($g_import_mt_extensions[ strtolower($partsFile['extension']) ]) ) $g_import_mt_extensions[ strtolower($partsFile['extension']) ] = true; return true; } return false; } switch( strtolower($partsFile['extension']) ) { // Audio formats case 'mp3': // most common case 'mpga': case 'mp2': case 'mp2a': case 'm2a': case 'm3a': case 'm4a': case 'ogg': case 'wma': case 'wax': case 'ra': case 'ram': case 'mp4a': // Video formats case 'm4v': case 'mpeg': case 'mpg': case 'mpe': case 'm1v': case 'm2v': case 'mp4': case 'mp4v': case 'mpg4': case 'asf': case 'asx': case 'wmx': case 'avi': case 'wmv': case 'flv': case 'mov': case 'qt': case 'divx': case '3gp': // rarely used case 'mid': case 'midi': case 'wav': case 'aa': case 'torrent': { if( !isset($g_import_mt_extensions[ strtolower($partsFile['extension']) ]) ) $g_import_mt_extensions[ strtolower($partsFile['extension']) ] = true; return true; } } return false; } function powerpressadmin_mt_media_from_content($content) { $return = array(); //$content = 'test1 http://www.test.com/test2.mp3 http://www.test.com/test2.exe '; $ltrs = '\w'; $gunk = '/#~:.?+=&%@!\-'; $punc = '.:?\-'; $any = $ltrs . $gunk . $punc; preg_match_all( "{\b http : [$any] +? (?= [$punc] * [^$any] | $)}x", $content, $post_links_temp ); foreach( $post_links_temp[0] as $null => $url ) { if( powerpressadmin_mt_is_media($url) ) { if( !in_array($url, $return) ) $return[] = $url; } } return $return; } function powerpressadmin_mt_do_import() { $wp_remote_options = array(); $wp_remote_options['user-agent'] = 'Blubrry PowerPress/'.POWERPRESS_VERSION; $wp_remote_options['httpversion'] = '1.1'; $Import = ( isset($_POST['Import']) ? $_POST['Import'] : array() ); $Media = ( isset($_POST['Media']) ? $_POST['Media'] : array() ); $Titles = ( isset($_POST['Titles']) ? $_POST['Titles'] : array() ); set_time_limit(60 + (10* count($Import)) ); $DetectDuration = ( !empty($_POST['DetectDuration']) ? $_POST['DetectDuration'] : 0 ); if( $DetectDuration ) { require_once(POWERPRESS_ABSPATH.'/mp3info.class.php'); $Mp3Info = new Mp3Info(); if( defined('POWERPRESS_DOWNLOAD_BYTE_LIMIT') ) $Mp3Info->SetDownloadBytesLimit(POWERPRESS_DOWNLOAD_BYTE_LIMIT); } foreach( $Import as $post_id => $episode_feeds ) { foreach( $episode_feeds as $media_index => $feed_slug ) { if( $feed_slug == '' ) continue; // User decoded not to import this one.. $url = $Media[$post_id][$media_index]; //$headers = wp_remote_head($url, array('httpversion' => 1.1)); //$response = wp_remote_request($url, $options); $response = wp_remote_head( $url, array('httpversion' => 1.1) ); // Redirect 1 if( !is_wp_error( $response ) && ($response['response']['code'] == 301 || $response['response']['code'] == 302) ) { $headers = wp_remote_retrieve_headers( $response ); $response = wp_remote_head( $headers['location'], $wp_remote_options ); } // Redirect 2 if( !is_wp_error( $response ) && ($response['response']['code'] == 301 || $response['response']['code'] == 302) ) { $headers = wp_remote_retrieve_headers( $response ); $response = wp_remote_head( $headers['location'], $wp_remote_options ); } // Redirect 3 if( !is_wp_error( $response ) && ($response['response']['code'] == 301 || $response['response']['code'] == 302) ) { $headers = wp_remote_retrieve_headers( $response ); $response = wp_remote_head( $headers['location'], $wp_remote_options ); } // Redirect 4 if( !is_wp_error( $response ) && ($response['response']['code'] == 301 || $response['response']['code'] == 302) ) { $headers = wp_remote_retrieve_headers( $response ); $response = wp_remote_head( $headers['location'], $wp_remote_options ); } $headers = wp_remote_retrieve_headers( $response ); if ( is_wp_error( $response ) ) { powerpressadmin_mt_import_log($Titles[ $post_id ], $url, $feed_slug, 'A system error occurred.'); } else if( $headers && $response['response']['code'] >= 200 && $response['response']['code'] < 300 ) { $EpisodeData = array(); $EpisodeData['url'] = $url; if( $headers['content-length'] ) $EpisodeData['size'] = (int) $headers['content-length']; else $EpisodeData['size'] = 0; $EpisodeData['type'] = powerpress_get_contenttype($EpisodeData['url']); $EpisodeData['duration'] = false; if( $EpisodeData['type'] == 'audio/mpeg' && $DetectDuration ) { $Mp3Data = $Mp3Info->GetMp3Info($EpisodeData['url']); if( $Mp3Data ) { $Duration = $Mp3Data['playtime_string']; $EpisodeData['duration'] = powerpress_readable_duration($Duration, true); // Fix so it looks better when viewed for editing } } $EnclosureData = $EpisodeData['url'] . "\n" . $EpisodeData['size'] . "\n". $EpisodeData['type']; if( $EpisodeData['duration'] ) $EnclosureData .= "\n".serialize( array('duration'=>$EpisodeData['duration']) ); // Save it here... if( $feed_slug == 'podcast' ) add_post_meta($post_id, 'enclosure', $EnclosureData, true); else add_post_meta($post_id, '_'. $feed_slug .':enclosure', $EnclosureData, true); powerpressadmin_mt_import_log($Titles[ $post_id ], $EpisodeData['url'], $feed_slug); } else { powerpressadmin_mt_import_log($Titles[ $post_id ], $url, $feed_slug, __('HTTP return code', 'powerpress') .' '. $response['response']['code'] .'.'); } } } } function powerpressadmin_mt_import_log($post_title, $episode_url, $feed_slug, $error = false) { global $g_mt_import_log, $g_mt_import_count, $g_mt_error_count; $filename = substr($episode_url, strrpos($episode_url, '/')+1); $g_mt_import_log .= '
'; if( $error ) { $g_mt_import_log .= '
'. __('Duration of each mp3 detected.', 'powerpress') .'
'; } echo $g_mt_import_log; $g_mt_import_log=''; echo ''. sprintf( __('Imported %d episode(s).', 'powerpress'), $g_mt_import_count ) .'
'; if( $g_mt_error_count ) echo ''. sprintf( __('Found %d error(s).', 'powerpress'), $g_mt_error_count ) .'
'; echo '';
if ( current_user_can( 'edit_post', $post_id ) )
{
?>"> '; echo ' ';
$index = 1;
foreach( $import_data['enclosures'] as $episode_index => $episode_data )
{
if( $index > $MaxFileIndex )
$MaxFileIndex = $index;
$Parts = parse_url($episode_data['url']);
$filename = substr($Parts['path'], strrpos($Parts['path'], '/')+1 );
if( $filename == '' )
$filename = $episode_data['url'];
echo "File $index: ";
echo '';
if( empty($episode_data['imported']) )
{
echo '';
$StrandedEpisodes++;
}
else
{
echo '';
}
if( empty($episode_data['imported']) )
echo '*';
echo $filename;
echo '';
echo ' ';
echo ''; $index++; } if( $index > 1 ) // Do we need the post title? echo ''; reset($import_data['enclosures']); 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['enclosures'] 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['enclosures']); } else { $index = 1; foreach( $import_data['enclosures'] as $episode_index => $episode_data ) { echo "File $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['enclosures']); } echo ' | ";
$feed_index++;
}; break;
}
}
echo "\n
'. __('red', 'powerpress') .'' ); ?>
: $feed_title ) { echo ''. htmlspecialchars($feed_title) .' | '; } reset($Settings['custom_feeds']); ?>
$null ) { if( $comma ) echo ', '; $comma = true; echo $ext; } ?>