function powerpress_get_enclosure_data_podpress($post_id, $mediaNum = 0, $include_premium = false) { $podPressMedia = powerpress_get_post_meta($post_id, 'podPressMedia'); if (!$podPressMedia) { $podPressMedia = powerpress_get_post_meta($post_id, '_podPressMedia'); } // handles latest verions of PodPress if ($podPressMedia) { if (!is_array($podPressMedia)) { // Sometimes the stored data gets messed up, we can fix it here: $podPressMedia = powerpress_repair_serialize($podPressMedia); $podPressMedia = @unserialize($podPressMedia); } // Do it a second time in case it is double serialized if (!is_array($podPressMedia)) { // Sometimes the stored data gets messed up, we can fix it here: $podPressMedia = powerpress_repair_serialize($podPressMedia); $podPressMedia = @unserialize($podPressMedia); } if (is_array($podPressMedia) && isset($podPressMedia[$mediaNum]) && isset($podPressMedia[$mediaNum]['URI'])) { if ($include_premium == false && isset($podPressMedia[$mediaNum]['premium_only']) && ($podPressMedia[$mediaNum]['premium_only'] == 'on' || $podPressMedia[$mediaNum]['premium_only'] == true)) { return false; } $Data = array(); $Data['id'] = $post_id; $Data['feed'] = 'podcast'; $Data['duration'] = 0; $Data['url'] = ''; $Data['size'] = 0; $Data['type'] = ''; $Data['width'] = ''; $Data['height'] = ''; $Data['url'] = $podPressMedia[$mediaNum]['URI']; if (isset($podPressMedia[$mediaNum]['size'])) { $Data['size'] = $podPressMedia[$mediaNum]['size']; } if (isset($PodPressSettings[$mediaNum]['duration'])) { $Data['duration'] = $podPressMedia[$mediaNum]['duration']; } if (isset($PodPressSettings[$mediaNum]['previewImage'])) { $Data['image'] = $podPressMedia[$mediaNum]['previewImage']; } if (strpos($Data['url'], 'http://') !== 0 && strpos($Data['url'], 'https://') !== 0) { $PodPressSettings = get_option('podPress_config'); if ($PodPressSettings && isset($PodPressSettings['mediaWebPath'])) { $Data['url'] = rtrim($PodpressSettings['mediaWebPath'], '/') . '/' . ltrim($Data['url'], '/'); } unset($PodPressSettings); } if (strpos($Data['url'], 'http://') !== 0 && strpos($Data['url'], 'https://') !== 0) { $Settings = get_option('powerpress_general'); if ($Settings && isset($Settings['default_url'])) { $Data['url'] = rtrim($Settings['default_url'], '/') . '/' . ltrim($Data['url'], '/'); } } if (strpos($Data['url'], 'http://') !== 0 && strpos($Data['url'], 'https://') !== 0) { return false; } $Data['type'] = powerpress_get_contenttype($Data['url']); // Detect the content type $Data['url'] = powerpress_add_redirect_url($Data['url'], $Data['feed']); // Add redirects to Media URL return $Data; } } return false; }
function powerpress_get_podpress_episodes($hide_errors = true) { global $wpdb; $PodpressSettings = get_option('podPress_config'); if (empty($PodpressSettings)) { $PodpressSettings = array(); $PodpressSettings['mediaWebPath'] = ''; $powerpress_settings = get_option('powerpress_general'); if (!empty($powerpress_settings['default_url'])) { $PodpressSettings['mediaWebPath'] = $powerpress_settings['default_url']; powerpress_page_message_add_notice(sprintf(__('Unable to detect PodPress media URL setting. Using the PowerPress setting "Default Media URL" (%s) instead.', 'powerpress'), esc_attr($PodpressSettings['mediaWebPath']))); } else { // We need to print a warning that they need to configure their podPress settings as the settings are no longer found in the database. powerpress_page_message_add_error(__('Unable to detect PodPress media URL setting. Please set the "Default Media URL" setting in PowerPress to properly import podcast episodes.', 'powerpress')); } } $media_url = $PodpressSettings['mediaWebPath']; if (substr($media_url, 0, -1) != '/') { $media_url .= '/'; } // Make sure the URL has a trailing slash $return = array(); $return['feeds_required'] = 0; $query = "SELECT p.ID, p.post_title, p.post_date, pm.meta_value "; $query .= "FROM {$wpdb->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) { while (list($null, $row) = each($results_data)) { //$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'), est_attr($row['post_title']))); } continue; } $clean_data = array(); while (list($episode_index, $episode_data) = each($podpress_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; while (list($episode_index_temp, $episode_data_temp) = each($clean_data)) { 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) { $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; }