function build_page() { $subject = $message = $attach = $group = $sender_name = $sender_email = ''; $subscribers_update = $subscribers_delete = $subscribers_clear = false; $subscribers = array(); if (isset($_POST['emailer_subject'])) { do { // Check nonce if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], __FILE__)) { $this->error = __('Incorrect WP-nonce data! Operation canceled!', 'axiom'); break; } // Get post data $subject = isset($_POST['emailer_subject']) ? $_POST['emailer_subject'] : ''; if (empty($subject)) { $this->error = __('Subject can not be empty! Operation canceled!', 'axiom'); break; } $message = isset($_POST['emailer_message']) ? $_POST['emailer_message'] : ''; if (empty($message)) { $this->error = __('Message can not be empty! Operation canceled!', 'axiom'); break; } $attach = isset($_FILES['emailer_attachment']['tmp_name']) && file_exists($_FILES['emailer_attachment']['tmp_name']) ? $_FILES['emailer_attachment']['tmp_name'] : ''; $group = isset($_POST['emailer_group']) ? $_POST['emailer_group'] : ''; $subscribers = isset($_POST['emailer_subscribers']) ? $_POST['emailer_subscribers'] : ''; if (!empty($subscribers)) { $subscribers = explode("\n", str_replace(array(';', ','), array("\n", "\n"), $subscribers)); } else { $subscribers = array(); } if (count($subscribers) == 0) { $this->error = __('Subscribers lists are empty! Operation canceled!', 'axiom'); break; } $sender_name = !empty($_POST['emailer_sender_name']) ? $_POST['emailer_sender_name'] : get_bloginfo('name'); $sender_email = !empty($_POST['emailer_sender_email']) ? $_POST['emailer_sender_email'] : ''; if (empty($sender_email)) { $sender_email = axiom_get_theme_option('contact_email'); } if (empty($sender_email)) { $sender_email = get_bloginfo('admin_email'); } if (empty($sender_email)) { $this->error = __('Sender email is empty! Operation canceled!', 'axiom'); break; } $headers = 'From: ' . $sender_name . ' <' . $sender_email . '>' . "\r\n"; $subscribers_update = isset($_POST['emailer_subscribers_update']); $subscribers_delete = isset($_POST['emailer_subscribers_delete']); $subscribers_clear = isset($_POST['emailer_subscribers_clear']); // Send email add_filter('wp_mail_content_type', 'axiom_set_html_content_type'); $new_list = array(); $list = array(); $cnt = 0; $mail = axiom_get_theme_option('mail_function'); foreach ($subscribers as $email) { $email = trim(chop($email)); if (empty($email)) { continue; } if (!preg_match('/[\\.\\-_A-Za-z0-9]+?@[\\.\\-A-Za-z0-9]+?[\\ .A-Za-z0-9]{2,}/', $email)) { continue; } $list[] = $email; $cnt++; if ($cnt >= $this->max_recipients_in_one_letter) { @$mail($list, $subject, $message, $headers, $attach); if ($subscribers_update && $group != 'none') { $new_list = array_merge($new_list, $list); } $list = array(); $cnt = 0; } } if ($cnt > 0) { @$mail($list, $subject, $message, $headers, $attach); if ($subscribers_update && $group != 'none') { $new_list = array_merge($new_list, $list); } $list = array(); $cnt = 0; } remove_filter('wp_mail_content_type', 'axiom_set_html_content_type'); $add_msg = ''; if ($subscribers_update && $group != 'none') { $rez = array(); if (count($this->subscribers[$group]) > 0) { foreach ($this->subscribers[$group] as $k => $v) { if (!$subscribers_clear && !empty($v)) { $rez[$k] = $v; } } } if (count($new_list) > 0) { foreach ($new_list as $v) { $rez[$v] = ''; } } $this->subscribers[$group] = $rez; update_option('axiom_emailer_subscribers', $this->subscribers); $add_msg = __(' The subscriber list is updated', 'axiom'); } else { if ($subscribers_delete && $group != 'none') { unset($this->subscribers[$group]); update_option('axiom_emailer_subscribers', $this->subscribers); $add_msg = __(' The subscriber list is cleared', 'axiom'); } } $this->success = __('E-Mail was send successfull!', 'axiom') . $add_msg; } while (false); } ?> <div class="trx_emailer"> <h2 class="trx_emailer_title"><?php _e('AxiomThemes Emailer', 'axiom'); ?> </h2> <div class="trx_emailer_result"> <?php if (!empty($this->error)) { ?> <div class="error"> <p><?php echo $this->error; ?> </p> </div> <?php } ?> <?php if (!empty($this->success)) { ?> <div class="updated"> <p><?php echo $this->success; ?> </p> </div> <?php } ?> </div> <form id="trx_emailer_form" action="#" method="post" enctype="multipart/form-data"> <input type="hidden" value="<?php echo esc_attr($this->nonce); ?> " name="nonce" /> <div class="trx_emailer_block"> <fieldset class="trx_emailer_block_inner"> <legend> <?php _e('Letter data', 'axiom'); ?> </legend> <div class="trx_emailer_fields"> <div class="trx_emailer_field trx_emailer_subject"> <label for="emailer_subject"><?php _e('Subject:', 'axiom'); ?> </label> <input type="text" value="<?php echo esc_attr($subject); ?> " name="emailer_subject" id="emailer_subject" /> </div> <div class="trx_emailer_field trx_emailer_attachment"> <label for="emailer_attachment"><?php _e('Attachment:', 'axiom'); ?> </label> <input type="file" name="emailer_attachment" id="emailer_attachment" /> </div> <div class="trx_emailer_field trx_emailer_message"> <?php wp_editor($message, 'emailer_message', array('wpautop' => false, 'textarea_rows' => 10)); ?> </div> </div> </fieldset> </div> <div class="trx_emailer_block"> <fieldset class="trx_emailer_block_inner"> <legend> <?php _e('Subscribers', 'axiom'); ?> </legend> <div class="trx_emailer_fields"> <div class="trx_emailer_field trx_emailer_group"> <label for="emailer_group"><?php _e('Select group:', 'axiom'); ?> </label> <select name="emailer_group" id="emailer_group"> <option value="none"<?php echo $group == 'none' ? ' selected="selected"' : ''; ?> ><?php _e('- Select group -', 'axiom'); ?> </option> <?php if (count($this->subscribers) > 0) { foreach ($this->subscribers as $gr => $list) { echo '<option value="' . est_attr($gr) . '"' . ($group == $gr ? ' selected="selected"' : '') . '>' . axiom_strtoproper($gr) . '</option>'; } } ?> </select> <input type="checkbox" name="emailer_subscribers_update" id="emailer_subscribers_update" value="1"<?php echo $subscribers_update ? ' checked="checked"' : ''; ?> /><label for="emailer_subscribers_update" class="inline" title="<?php _e('Update the subscribers list for selected group', 'axiom'); ?> "><?php _e('Update', 'axiom'); ?> </label> <input type="checkbox" name="emailer_subscribers_clear" id="emailer_subscribers_clear" value="1"<?php echo $subscribers_clear ? ' checked="checked"' : ''; ?> /><label for="emailer_subscribers_clear" class="inline" title="<?php _e('Clear this group from not confirmed emails after send', 'axiom'); ?> "><?php _e('Clear', 'axiom'); ?> </label> <input type="checkbox" name="emailer_subscribers_delete" id="emailer_subscribers_delete" value="1"<?php echo $subscribers_delete ? ' checked="checked"' : ''; ?> /><label for="emailer_subscribers_delete" class="inline" title="<?php _e('Delete this group after send', 'axiom'); ?> "><?php _e('Delete', 'axiom'); ?> </label> </div> <div class="trx_emailer_field trx_emailer_subscribers2"> <label for="emailer_subscribers" class="big"><?php _e('List of recipients:', 'axiom'); ?> </label> <textarea name="emailer_subscribers" id="emailer_subscribers"><?php echo join("\n", $subscribers); ?> </textarea> </div> <div class="trx_emailer_field trx_emailer_sender_name"> <label for="emailer_sender_name"><?php _e('Sender name:', 'axiom'); ?> </label> <input type="text" name="emailer_sender_name" id="emailer_sender_name" value="<?php echo esc_attr($sender_name); ?> " /><br /> </div> <div class="trx_emailer_field trx_emailer_sender_email"> <label for="emailer_sender_email"><?php _e('Sender email:', 'axiom'); ?> </label> <input type="text" name="emailer_sender_email" id="emailer_sender_email" value="<?php echo esc_attr($sender_email); ?> " /> </div> </div> </fieldset> </div> <div class="trx_emailer_buttons"> <a href="#" id="trx_emailer_send"><?php echo _e('Send', 'axiom'); ?> </a> </div> </form> </div> <?php }
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; }