" . esc_html__( "Done!" ) . " " . esc_html__( "Upgraded database to version " ) . esc_html( FEEDWORDPRESS_VERSION ) . ".
\n"; 289 | echo "" . esc_html__( "Already at version " ) . esc_html( FEEDWORDPRESS_VERSION ) . "!
303 |
308 | 309 | 314 | 315 | 316 | 317 | 321 |72 |
74 | 75 | 76 | 77 | 80 | 81 | ID ) : 112 | return $post_id; 113 | endif; 114 | 115 | // Check permissions 116 | $cap[0] = 'edit_post'; 117 | 118 | $post_type = FeedWordPress::post( 'post_type' ); 119 | $cap[1] = sanitize_key( 'edit_' . $post_type ); 120 | 121 | if ( 122 | ! current_user_can( $cap[0], $post_id ) 123 | and ! current_user_can( $cap[1], $post_id ) 124 | ) : 125 | return $post_id; 126 | endif; 127 | 128 | // OK, we're golden. Now let's save some data. 129 | $freeze_updates = FeedWordPress::post( 'freeze_updates' ); 130 | if ( ! is_null( $freeze_updates ) ) : 131 | update_post_meta( 132 | $post_id, 133 | '_syndication_freeze_updates', 134 | sanitize_meta( '_syndication_freeze_updates', $freeze_updates, 'post' ) 135 | ); 136 | $ret = $freeze_updates; 137 | 138 | // If you make manual edits through the WordPress editing 139 | // UI then they should be run through normal WP formatting 140 | // filters. 141 | update_post_meta( $post_id, '_feedwordpress_formatting_filters', 'yes' ); 142 | else : 143 | delete_post_meta( $post_id, '_syndication_freeze_updates' ); 144 | $ret = NULL; 145 | endif; 146 | 147 | do_action( 'feedwordpress_save_edit_controls', $post_id ); 148 | 149 | return $ret; 150 | } /* function feedwordpress_save_edit_controls() */ 151 | -------------------------------------------------------------------------------- /feedwordpressboilerplatereformatter.class.php: -------------------------------------------------------------------------------- 1 | Posts & Links > Boilerplate / Credits 5 | * 6 | * @author C. Johnson'.$template.'
'; 16 | endif; 17 | 18 | $ref = new FeedWordPressBoilerplateReformatter($id, $element); 19 | return $ref->do_shortcode($template); 20 | } /* add_boilerplate_reformat() */ 21 | 22 | /** 23 | * function add_boilerplate_simple: look for any relevant Boilerplate / Credits template text to add 24 | * to elements (post body, excerpt, title...) of a post being displayed in WordPress theme code. 25 | * 26 | * @uses is_syndicated() 27 | * @uses get_feed_meta() 28 | * @uses get_option() 29 | * @uses add_boilerplate_reformat() 30 | * 31 | * @param string $element indicates the element of the post 'post' (= main body), 'excerpt', or 'title' 32 | * @param string $title provides the text of the element waiting for boilerplate to be inserted 33 | * @param int|null $id provides the numeric ID of the post being displayed (null = current post in WP loop) 34 | * @return string provides the reformatted text, including any boilerplate text that has been inserted 35 | */ 36 | function add_boilerplate_simple ($element, $title, $id = NULL) { 37 | if (is_syndicated($id)) : 38 | $meta = get_feed_meta('boilerplate rules', $id); 39 | if ($meta and !is_array($meta)) : $meta = unserialize($meta); endif; 40 | 41 | if ( !is_array($meta) or empty($meta)) : 42 | $meta = get_option('feedwordpress_boilerplate'); 43 | endif; 44 | 45 | if (is_array($meta) and !empty($meta)) : 46 | foreach ($meta as $rule) : 47 | if ($element==$rule['element']) : 48 | $rule['template'] = add_boilerplate_reformat($rule['template'], $element, $id); 49 | 50 | if ('before'==$rule['placement']) : 51 | $title = $rule['template'] . ' ' . $title; 52 | else : 53 | $title = $title . ' ' . $rule['template']; 54 | endif; 55 | endif; 56 | endforeach; 57 | endif; 58 | endif; 59 | return $title; 60 | } /* function add_boilerplate_simple() */ 61 | 62 | /** 63 | * function add_boilerplate_title: filter hook for the_title to add Boilerplate / Credit text, 64 | * if any is set, for the title of syndicated posts 65 | * 66 | * @uses add_boilerplate_simple() 67 | * 68 | * @param string $title contains the text of the title of the post being displayed 69 | * @param int|null $id provides the numeric ID of the post being displayed (null = current post in WP loop) 70 | * @return string provides the text of the title, reformatted to include any relevant boilerplate text 71 | */ 72 | function add_boilerplate_title ($title, $id = NULL) { 73 | return add_boilerplate_simple('title', $title, $id); 74 | } /* function add_boilerplate_title () */ 75 | 76 | /** 77 | * function add_boilerplate_excerpt: filter hook for the_excerpt to add Boilerplate / Credit text, 78 | * if any is set, for the excerpt of syndicated posts 79 | * 80 | * @uses add_boilerplate_simple() 81 | * 82 | * @param string $excerpt contains the text of the excerpt of the post being displayed 83 | * @param int|null $id provides the numeric ID of the post being displayed (null = current post in WP loop) 84 | * @return string provides the text of the excerpt, reformatted to include any relevant boilerplate text 85 | */ 86 | function add_boilerplate_excerpt ($title, $id = NULL) { 87 | return add_boilerplate_simple('excerpt', $title, $id); 88 | } /* function add_boilerplate_excerpt () */ 89 | 90 | /** 91 | * function add_boilerplate_content: filter hook for the_content to add Boilerplate / Credit text, 92 | * if any is set, for the excerpt of syndicated posts 93 | * 94 | * @uses is_syndicated() 95 | * @uses get_feed_meta() 96 | * @uses get_option() 97 | * @uses add_boilerplate_reformat() 98 | * 99 | * @param string $content contains the text content of the post being displayed 100 | * @return string provides the text content, reformatted to include any relevant boilerplate text 101 | */ 102 | function add_boilerplate_content ($content) { 103 | if (is_syndicated()) : 104 | $meta = get_feed_meta('boilerplate rules'); 105 | if ($meta and !is_array($meta)) : $meta = unserialize($meta); endif; 106 | 107 | if ( !is_array($meta) or empty($meta)) : 108 | $meta = get_option('feedwordpress_boilerplate'); 109 | endif; 110 | 111 | if (is_array($meta) and !empty($meta)) : 112 | foreach ($meta as $rule) : 113 | if ('post'==$rule['element']) : 114 | $rule['template'] = add_boilerplate_reformat($rule['template'], 'post'); 115 | 116 | if ('before'==$rule['placement']) : 117 | $content = $rule['template'] . "\n" . $content; 118 | else : 119 | $content = $content . "\n" . $rule['template']; 120 | endif; 121 | endif; 122 | endforeach; 123 | endif; 124 | endif; 125 | return $content; 126 | } /* add_boilerplate_content () */ 127 | -------------------------------------------------------------------------------- /feedwordpressdiagnostic.class.php: -------------------------------------------------------------------------------- 1 | uri(); 18 | 19 | // check for effects of an effective-url filter 20 | $effectiveUrl = $link->uri( array( 'fetch' => true ) ); 21 | if ( $url != $effectiveUrl ) : $url .= ' | ' . $effectiveUrl; endif; 22 | 23 | $mesgs = $wpError->get_error_messages(); 24 | foreach ( $mesgs as $mesg ) : 25 | $mesg = esc_html( $mesg ); 26 | FeedWordPress::diagnostic( 27 | 'updated_feeds:errors', 28 | "Feed Error: [{$url}] update returned error: $mesg" 29 | ); 30 | 31 | $hours = get_option( 'feedwordpress_diagnostics_persistent_errors_hours', 2 ); 32 | $span = ( $error['ts'] - $error['since'] ); 33 | 34 | if ( $span >= ( $hours * 60 * 60 ) ) : 35 | $since = date( 'r', $error['since'] ); 36 | /** @var string Never used. */ 37 | $mostRecent = date( 'r', $error['ts'] ); // never used?... (gwyneth 20230919) 38 | FeedWordPress::diagnostic( 39 | 'updated_feeds:errors:persistent', 40 | "Feed Update Error: [{$url}] returning errors" 41 | ." since {$since}:$mesg
",
42 | $url,
43 | $error['since'],
44 | $error['ts']
45 | );
46 | endif;
47 | endforeach;
48 | } /* FeedWordPressDiagnostic::feed_error() */
49 |
50 | /**
51 | * Returns an array with the list of administrator emails for this site.
52 | *
53 | * @param int|string $id Current blog ID (for multisite installations).
54 | *
55 | * @return array Array with all email addresses for this blog.
56 | *
57 | * @uses get_users_of_blog()
58 | *
59 | * @note This uses the deprecated WP function `get_users_of_blog()`, which
60 | * should be replaced with `get_users()`, which, however, has quite more
61 | * intricate syntax (and customisation!).
62 | *
63 | * It might be even possible to retrieve everything in a single call:
64 | * ```
65 | * return get_users(
66 | * array(
67 | * 'role__in' => 'administrator',
68 | * 'capability__in' => 'administrator',
69 | * 'fields' => 'user_email',
70 | * 'count_total' => false // no need to count them; improves performance.
71 | * )
72 | * );
73 | * ```
74 | *
75 | * Alternatively, the function `admin_emails()` may simply be marked as deprecated and
76 | * `get_users()` used instead. This requires debugging! (gwyneth 20230919)
77 | */
78 | public static function admin_emails( $id = '' ) {
79 | // deprecated, see comment on the function description! (gwyneth 20230919)
80 | $users = get_users_of_blog( $id );
81 | $recipients = array();
82 | foreach ( $users as $user ) :
83 | $user_id = ( isset( $user->user_id ) ? $user->user_id : $user->ID );
84 | $dude = new WP_User( $user_id );
85 | if ( $dude->has_cap('administrator') ) :
86 | if ( $dude->user_email ) :
87 | $recipients[] = $dude->user_email;
88 | endif;
89 | endif;
90 | endforeach;
91 | return $recipients;
92 | } /* FeedWordPressDiagnostic::admin_emails() */
93 |
94 | public static function noncritical_bug ($varname, $var, $line, $file = NULL) {
95 | if ( FEEDWORDPRESS_DEBUG ) : // halt only when we are doing debugging
96 | self::critical_bug($varname, $var, $line, $file);
97 | endif;
98 | } /* FeedWordPressDiagnostic::noncritical_bug () */
99 |
100 | public static function critical_bug ($varname, $var, $line, $file = NULL) {
101 | global $wp_version;
102 |
103 | if ( !is_null($file)) :
104 | $location = "line # {$line} of ".basename($file);
105 | else :
106 | $location = "line # {$line}";
107 | endif;
108 |
109 | print 'Critical error: There may be a bug in FeedWordPress. Please contact the author and paste the following information into your e-mail:
'; 110 | print "\n"; 111 | print "Triggered at " . esc_html($location) . "\n"; 112 | print "FeedWordPress: " . esc_html( FEEDWORDPRESS_VERSION ) . "\n"; 113 | print "WordPress: " . esc_html( $wp_version ) . "\n"; 114 | print "PHP: " . esc_html( phpversion() ) . "\n"; 115 | print "Error data: "; 116 | print esc_html($varname) . ": " . esc_html( MyPHP::val( $var ) ) . "\n"; 117 | print "\n"; 118 | die; 119 | } /* FeedWordPressDiagnostic::critical_bug () */ 120 | 121 | public static function is_on ($level) { 122 | $show = get_option('feedwordpress_diagnostics_show', array()); 123 | if ( ! is_array( $show ) ) { 124 | $show = array( $show ); 125 | } 126 | 127 | return ( in_array( $level, $show ) ); 128 | } /* FeedWordPressDiagnostic::is_on () */ 129 | 130 | } /* class FeedWordPressDiagnostic */ 131 | -------------------------------------------------------------------------------- /feedwordpresshtml.class.php: -------------------------------------------------------------------------------- 1 | ]*) 6 | ($attr)= 7 | ) 8 | ( 9 | \s*(\"|') 10 | (((?!\\6).)*) 11 | \\6([^>]*>) 12 | | 13 | \s*(((?!/>)[^\s>])*) 14 | ([^>]*>) 15 | ) 16 | :ix"; 17 | } /* function FeedWordPressHTML::attributeRegex () */ 18 | 19 | static function attributeMatch ($matches) { 20 | for ($i = 0; $i <= 12; $i++) : 21 | if ( !isset($matches[$i])) : 22 | $matches[$i] = ''; 23 | endif; 24 | endfor; 25 | 26 | $suffix = $matches[12].$matches[9]; 27 | $value = $matches[10].$matches[7]; 28 | 29 | return array( 30 | "tag" => $matches[3], 31 | "attribute" => $matches[4], 32 | "value" => $value, 33 | "quote" => $matches[6], 34 | "prefix" => $matches[1].$matches[6], 35 | "suffix" => $matches[6].$suffix, 36 | "before_attribute" => $matches[2], 37 | "after_attribute" => $suffix, 38 | ); 39 | } /* function FeedWordPressHTML::attributeMatch () */ 40 | 41 | static function tagWithAttributeRegex ($tag, $attr, $value, $closing = true) { 42 | return ":( 43 | (<($tag)\s+[^>]*) 44 | ($attr)= 45 | ) 46 | ( 47 | \s*(\"|') 48 | ((((?!\\6).)*\s)*($value)(\s((?!\\6).)*)*) 49 | \\6([^>]*>) 50 | | 51 | \s*((?!/>)($value)) 52 | ([^>]*>) 53 | )".($closing ? " 54 | (((?!($tag)>).)*) 55 | (($tag)>) 56 | " : "")." 57 | :ix"; 58 | } /* FeedWordPressHTML::tagWithAttributeRegex () */ 59 | 60 | static function tagWithAttributeMatch ($matches, $closing = true) { 61 | for ($i = 0; $i <= 21; $i++) : 62 | if ( !isset($matches[$i])) : 63 | $matches[$i] = ''; 64 | endif; 65 | endfor; 66 | 67 | $suffix = $matches[16].$matches[13]; 68 | $value = $matches[14].$matches[7]; 69 | 70 | return array( 71 | "full" => $matches[0], 72 | "tag" => $matches[3], 73 | "attribute" => $matches[4], 74 | "value" => $value, 75 | "quote" => $matches[6], 76 | "prefix" => $matches[1].$matches[6], 77 | "suffix" => $matches[6].$suffix, 78 | "before_attribute" => $matches[2], 79 | "after_attribute" => $suffix, 80 | "open_tag" => $matches[1].$matches[6].$value.$matches[6].$suffix, 81 | "content" => ($closing ? $matches[17] : NULL), 82 | "close_tag" => ($closing ? $matches[20] : NULL), 83 | ); 84 | 85 | } /* FeedWordPressHTML::tagWithAttributeMatch () */ 86 | } /* class FeedWordPressHTML */ 87 | 88 | -------------------------------------------------------------------------------- /feedwordpresshttpauthenticator.class.php: -------------------------------------------------------------------------------- 1 | 'None'); 17 | 18 | if ($this->have_curl(array('authentication' => 'digest'))) : 19 | $methods = array_merge(array( 20 | 'digest' => 'Digest', 21 | ), $methods); 22 | endif; 23 | 24 | if ( 25 | $this->have_curl(array('authentication' => 'basic')) 26 | or $this->have_streams(array('authentication' => 'basic')) 27 | ) : 28 | $methods = array_merge(array( 29 | 'basic' => 'Basic', 30 | ), $methods); 31 | endif; 32 | 33 | return $methods; 34 | } 35 | 36 | function pre_http_request ($pre, $args, $url) { 37 | $this->args = wp_parse_args($args, array( 38 | 'authentication' => NULL, 39 | 'username' => NULL, 40 | 'password' => NULL, 41 | )); 42 | 43 | // Ruh roh... 44 | $auth = $this->args['authentication']; 45 | if (is_null($auth) or (strlen($auth) == 0)) : 46 | $this->args['authentication'] = '-'; 47 | endif; 48 | 49 | switch ($this->args['authentication']) : 50 | case '-' : 51 | // No HTTP Auth method. Remove this stuff. 52 | $this->args['authentication'] = NULL; 53 | $this->args['username'] = NULL; 54 | $this->args['password'] = NULL; 55 | break; 56 | case 'basic' : 57 | if ($this->have_curl($args, $url)) : 58 | // Don't need to do anything. http_api_curl hook takes care 59 | // of it. 60 | break; 61 | elseif ($this->have_streams($args, $url)) : 62 | // curl has a nice native way to jam in the username and 63 | // passwd but streams and fsockopen do not. So we have to 64 | // make a recursive call with the credentials in the URL. 65 | // Wee ha! 66 | $method = $this->args['authentication']; 67 | $credentials = $this->args['username']; 68 | if ( !is_null($this->args['password'])) : 69 | $credentials .= ':'.$args['password']; 70 | endif; 71 | 72 | // Remove these so we don't recurse all the way down 73 | unset($this->args['authentication']); 74 | unset($this->args['username']); 75 | unset($this->args['password']); 76 | 77 | $url = preg_replace('!(https?://)!', '$1'.$credentials.'@', $url); 78 | 79 | // Subsidiary request 80 | $pre = wp_remote_request($url, $this->args); 81 | break; 82 | endif; 83 | case 'digest' : 84 | if ($this->have_curl($args, $url)) : 85 | // Don't need to do anything. http_api_curl hook takes care 86 | // of it. 87 | break; 88 | endif; 89 | default : 90 | if (is_callable('WP_Http', '_get_first_available_transport')) : 91 | $trans = WP_Http::_get_first_available_transport($args, $url); 92 | if ( ! $trans) : 93 | $trans = WP_Http::_get_first_available_transport(array(), $url); 94 | endif; 95 | elseif (is_callable('WP_Http', '_getTransport')) : 96 | $transports = WP_Http::_getTransport($args); // absolutely deprecated & removed. (gwyneth 20230920) 97 | $trans = get_class(reset($transports)); 98 | else : 99 | $trans = 'HTTP'; 100 | endif; 101 | 102 | $pre = new WP_Error('http_request_failed', 103 | sprintf( 104 | __('%s cannot use %s authentication with the %s transport.'), 105 | __CLASS__, 106 | $args['authentication'], 107 | $trans 108 | ) 109 | ); 110 | endswitch; 111 | 112 | return $pre; 113 | } /* FeedWordPressHTTPAuthenticator::pre_http_request () */ 114 | 115 | function have_curl ($args, $url = NULL) { 116 | return WP_Http_Curl::test($args); 117 | } 118 | 119 | function have_streams ($args, $url = NULL) { 120 | return WP_Http_Streams::test($args); 121 | } 122 | 123 | function need_curl ($args) { 124 | $args = wp_parse_args($args, array( 125 | 'authentication' => NULL, 126 | )); 127 | 128 | switch ($args['authentication']) : 129 | case 'digest' : 130 | $use = true; 131 | break; 132 | default : 133 | $use = false; 134 | endswitch; 135 | return $use; 136 | } /* FeedWordPressHTTPAuthenticator::need_curl () */ 137 | 138 | function digest_do_it ($use, $args) { 139 | return $this->if_curl($use, $args, true); 140 | } /* FeedWordPerssHTTPAuthenticator::digest_do_it () */ 141 | 142 | function digest_dont ($use, $args) { 143 | return $this->if_curl($use, $args, false); 144 | } /* FeedWordPressHTTPAuthenticator::digest_dont () */ 145 | 146 | function if_curl ($use, $args, $what) { 147 | if ($this->need_curl($args)) : 148 | $use = $what; 149 | endif; 150 | return $use; 151 | } /* FeedWordPressHTTPAuthenticator::if_curl () */ 152 | 153 | function set_auth_options ($handle, $r, $url) { 154 | if ('digest'==$this->args['authentication']) : 155 | curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); 156 | endif; 157 | 158 | if ( !is_null($this->args['username'])) : 159 | $userPass = $this->args['username']; 160 | if ( !is_null($this->args['password'])) : 161 | $userPass .= ':'.$this->args['password']; 162 | endif; 163 | 164 | curl_setopt($handle, CURLOPT_USERPWD, $userPass); 165 | endif; 166 | 167 | } /* FeedWordPressHTTPAuthenticator::set_auth_options() */ 168 | 169 | } /* class FeedWordPressHTTPAuthenticator */ 170 | -------------------------------------------------------------------------------- /feedwordpresslocalpost.class.php: -------------------------------------------------------------------------------- 1 | post = $post; // current post in loop 12 | elseif (is_object($p)) : 13 | $this->post = $p; 14 | else : 15 | $this->post = get_post($p); 16 | endif; 17 | } 18 | 19 | public function id () { 20 | if (is_null($this->post) or !is_object($this->post)) : 21 | return NULL; 22 | else : 23 | return $this->post->ID; 24 | endif; 25 | } /* FeedWordPressLocalPost::id () */ 26 | 27 | public function meta ($what, $params = array()) { 28 | 29 | // -=-=-= 1. INITIAL SETUP. =-=-=- 30 | $params = wp_parse_args($params, array( 31 | "single" => true, 32 | "default" => NULL, 33 | "global" => NULL, 34 | "unproxied setting" => NULL, 35 | "unproxy" => false, 36 | )); 37 | 38 | // If we got put through the_content without a current 39 | // $post object set, then bail out immediately. 40 | if (is_null($this->post) or !is_object($this->post)) : 41 | return $params['default']; 42 | endif; 43 | 44 | // This is a little weird, just bear with me here. 45 | $results = array(); 46 | 47 | // Has this been left up to the admin setting? 48 | if (is_null($params['unproxy'])) : 49 | $params['unproxy'] = FeedWordPress::use_aggregator_source_data(); 50 | endif; 51 | 52 | // -=-=-= 2. GET DATA FROM THE PROXIMATE OR THE ULTIMATE SOURCE. =-=-=- 53 | 54 | // Now if we are supposed to look for ultimate source data (e.g. from 55 | //
\n"; 90 | wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); 91 | wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); 92 | echo "
\n\n"; 93 | endif; 94 | } /* FeedWordPressSettingsUI::ajax_nonce_fields () */ 95 | 96 | static function fix_toggles_js ($context) { 97 | ?> 98 | 110 | 0 ): 133 | $ext = ".{$type}{$ext}"; 134 | endif; 135 | 136 | if ( strlen( $name ) > 0 ) : 137 | $templates[] = "{$slug}-{$name}{$ext}"; 138 | endif; 139 | $templates[] = "{$slug}{$ext}"; 140 | 141 | do_action( "feedwordpress_get_template_part", $slug, $name, $type, $args ); 142 | 143 | // locate_template 144 | $located = ''; 145 | foreach ( $templates as $template_name ) : 146 | if ( !! $template_name ) : 147 | $templatePath = $feedwordpress->plugin_dir_path( 'templates/' . $template_name ); 148 | if ( is_readable( $templatePath ) ) : 149 | $located = $templatePath; 150 | break; 151 | endif; 152 | endif; 153 | endforeach; 154 | 155 | if ( strlen( $located ) > 0 ) : 156 | load_template( $located, /*require_once=*/ false, /*args=*/ $args ); 157 | endif; 158 | } /* FeedWordPressSettingsUI::get_template_part () */ 159 | 160 | /** 161 | * Generates contextual hovering text with tips for the form fields. 162 | * 163 | * How exactly this works is beyond myself. (gwyneth 20230916) 164 | * 165 | * @param string $id Apparently it's the field's id attribute. 166 | * 167 | */ 168 | static function magic_input_tip_js( $id ) { 169 | if ( ! preg_match( '/^[.#]/', $id ) ) : 170 | $id = '#' . $id; 171 | endif; 172 | ?> 173 | 190 | 29 |ID: | 33 |ID); ?> |
34 |
---|---|
GUID: | 38 |guid); ?> |
39 |
Custom Fields |
43 | |
".esc_html($key); 52 | if ($idx > 1) : 53 | print esc_html( sprintf( '[%d]', intval( $idx ) ) ); 54 | endif; 55 | print ": | "; 56 | print " ";
57 | print " |
No custom fields for this post. |
Feed cache: | 91 |
92 | This will clear all cached copies of feed data from the WordPress database 93 | and force FeedWordPress to make a fresh scan for updates on syndicated feeds. |
---|---|
Guid index: | 97 |
98 |
99 | Creating this index may significantly improve performance on some large 100 | FeedWordPress installations. 101 | 102 | 103 |You have already created an index on the guid column in the WordPress posts 104 | table. If you'd like to remove the index for any reason, you can do so here. 105 | 106 | 107 | 108 | 109 | 110 | |
FeedWordPress warning. Debugging mode is ON. 3 | While it remains on, FeedWordPress displays many diagnostic error messages, 4 | warnings, and notices that are ordinarily suppressed, and also turns off all 5 | caching of feeds. Use with caution: this setting is absolutely inappropriate 6 | for a production server.
7 |When includes updated content for 38 | a post that was already syndicated, should the syndicated copy 39 | of the post be updated to match the revised version?
40 | 41 | page->setting_radio_control( 43 | 'freeze updates', 'freeze_updates', 44 | $settings, $params 45 | ); 46 | ?> 47 | 48 |