WordPress.org

Plugin Directory

Changeset 417798 for feedwordpress


Ignore:
Timestamp:
08/01/11 05:37:18 (6 years ago)
Author:
radgeek
Message:

Prelim: get the ability to put in username and password without revealing it in the link_rss URL; allow for some altnerate methods of HTTP Auth -- for now, Digest as well as Basic.

Location:
feedwordpress/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • feedwordpress/trunk/feeds-page.php

    r413101 r417798  
    413413        endif; 
    414414 
     415        $hideAuth = false; 
     416 
     417        $username = $this->setting('http username', NULL); 
     418 
     419        if (is_null($username)) : 
     420            $username = ''; 
     421            $hideAuth = true; 
     422        endif; 
     423         
     424        $password = $this->setting('http password', NULL); 
     425        if (is_null($password)) : 
     426            $password = ''; 
     427        endif; 
     428         
     429        $auth = $this->setting('http auth method', NULL); 
     430 
     431        $authMethods = apply_filters('feedwordpress_http_auth_methods', array( 
     432            'basic' => 'Basic', 
     433            'digest' => 'Digest', 
     434            '-' => 'None', 
     435        )); 
     436        if (is_null($auth)) : 
     437            $auth = '-'; 
     438            $hideAuth = true; 
     439        endif; 
     440 
    415441        // Hey ho, let's go 
    416442        ?> 
     
    425451        title="Check feed &lt;<?php echo esc_html($rss_url); ?>&gt; for validity">validate</a>) 
    426452        <input type="submit" name="feedfinder" value="switch &rarr;" style="font-size:smaller" /> 
     453         
     454        <table id="link-rss-authentication"> 
     455        <tbody> 
     456        <tr id="link-rss-authentication-credentials"> 
     457        <td><label>user: <input type="text" name="link_rss_username" 
     458            value="<?php print esc_attr($username); ?>" size="16" 
     459            placeholder="username to access this feed" /></label></td> 
     460        <td><label>pass: <input type="text" name="link_rss_password" 
     461            value="<?php print esc_attr($password); ?>" size="16" 
     462            placeholder="password to access this feed" /></label></td> 
     463        <td id="link-rss-authentication-method"><label>method: <select id="link-rss-auth-method" name="link_rss_auth_method" size="1"> 
     464<?php foreach ($authMethods as $value => $label) : ?> 
     465          <option value="<?php print esc_attr($value); ?>"<?php 
     466          if ($value == $auth) : ?> selected="selected"<?php 
     467          endif; ?>><?php print esc_html($label); ?></option> 
     468<?php endforeach; ?> 
     469        </select></label></td> 
     470        </tr> 
     471        </tbody> 
     472        </table> 
    427473         
    428474        <table id="link-rss-params"> 
     
    451497         
    452498        <script type="text/javascript"> 
     499        function linkUserPassFlip (init) { 
     500            var speed = 'slow'; 
     501            if (typeof(init)=='boolean' && init) { 
     502                speed = 0; 
     503            } 
     504             
     505            if (jQuery('#link-rss-auth-method').val()=='-') { 
     506                jQuery('<a style="display: none" class="add-remove" id="link-rss-userpass-use" href="#">+ Uses username/password</a>') 
     507                    .insertAfter('#link-rss-authentication') 
     508                    .click( function () { 
     509                            jQuery('#link-rss-auth-method').val('basic'); 
     510                            linkUserPassFlip(); 
     511                            return false; 
     512                    } ) 
     513                    .show(speed); 
     514                jQuery('#link-rss-authentication').hide(speed); 
     515            } else { 
     516                jQuery('#link-rss-userpass-use').hide(speed, function () { jQuery(this).remove(); } ); 
     517                jQuery('#link-rss-authentication').show(speed); 
     518            } 
     519        } 
     520        jQuery('<td><a class="add-remove remove-it" id="link-rss-userpass-remove" href="#"><span class="x">(X)</span> Remove</a></td>') 
     521            .appendTo('#link-rss-authentication-credentials').click(function () { 
     522            jQuery('#link-rss-auth-method').val('-'); 
     523            linkUserPassFlip(); 
     524        } ); 
     525        jQuery('#link-rss-auth-method').change( linkUserPassFlip ); 
     526        linkUserPassFlip(/*init=*/ true); 
     527         
    453528        function linkParamsRowRemove (element) { 
    454529            jQuery(element).closest('tr').fadeOut('slow', function () { 
     
    460535 
    461536        jQuery('#link-rss-params-new').hide(); 
    462         jQuery('<a  class="add-remove" id="link-rss-params-add" href="#">+ Add a query parameter</a>').insertAfter('#link-rss-params'); 
     537        jQuery('<a class="add-remove" id="link-rss-params-add" href="#">+ Add a query parameter</a>').insertAfter('#link-rss-params'); 
    463538        jQuery('#link-rss-params-add').click( function () { 
    464539            var next = jQuery('#link-rss-params-num').val(); 
     
    868943    function save_settings ($post) { 
    869944        if ($this->for_feed_settings()) : 
     945             
    870946            if (isset($post['link_rss_params_key'])) : 
    871947                $qp = array(); 
     
    9691045            $this->update_setting('update/minimum', $post['update_minimum']); 
    9701046        endif; 
     1047 
     1048        if ( 
     1049            isset($post['link_rss_auth_method']) 
     1050            and $post['link_rss_auth_method'] 
     1051            and ('-' != $post['link_rss_auth_method']) 
     1052        ) : 
     1053            $this->update_setting('http auth method', $post['link_rss_auth_method']); 
     1054        else : 
     1055            $this->update_setting('http auth method', NULL);                 
     1056        endif; 
     1057         
     1058        if ( 
     1059            isset($post['link_rss_username']) 
     1060            and (strlen($post['link_rss_username']) > 0) 
     1061        ) : 
     1062            $this->update_setting('http username', $post['link_rss_username']); 
     1063        else : 
     1064            $this->update_setting('http username', NULL);                
     1065        endif; 
     1066 
     1067        if ( 
     1068            isset($post['link_rss_password']) 
     1069            and (strlen($post['link_rss_password']) > 0) 
     1070        ) : 
     1071            $this->update_setting('http password', $post['link_rss_password']); 
     1072        else : 
     1073            $this->update_setting('http password', NULL);                
     1074        endif; 
    9711075         
    9721076        $this->updatedPosts->accept_POST($post); 
     1077 
    9731078        parent::save_settings($post); 
    9741079    } /* FeedWordPressFeedsPage::save_settings() */ 
  • feedwordpress/trunk/feedwordpress-elements.css

    r319407 r417798  
    388388} 
    389389 
     390#link-rss-userpass-use, #link-rss-authentication { 
     391    display: block; 
     392    font-size: 75%; 
     393    white-space: nowrap;  
     394    padding: 0.5em 0; 
     395} 
     396#link-rss-authentication label { 
     397    font-weight: bold; 
     398    padding-left: 1.5em; 
     399} 
     400#link-rss-authentication td { 
     401    width: 25%; 
     402} 
     403 
    390404#feedwordpress-admin-feeds .link-rss-params-row { vertical-align: middle; } 
    391405#feedwordpress-admin-feeds .link-rss-params-remove, .feedwordpress-admin .remove-it { 
  • feedwordpress/trunk/feedwordpress.php

    r413226 r417798  
    44Plugin URI: http://feedwordpress.radgeek.com/ 
    55Description: simple and flexible Atom/RSS syndication for WordPress 
    6 Version: 2011.0721 
     6Version: 2011.0731 
    77Author: Charles Johnson 
    88Author URI: http://radgeek.com/ 
     
    1212/** 
    1313 * @package FeedWordPress 
    14  * @version 2011.0721 
     14 * @version 2011.0731 
    1515 */ 
    1616 
     
    123123require_once("${dir}/feedwordpress_parser.class.php"); 
    124124require_once("${dir}/feedwordpressrpc.class.php"); 
     125require_once("${dir}/feedwordpresshttpauthenticator.class.php"); 
    125126 
    126127// Magic quotes are just about the stupidest thing ever. 
     
    916917    var $feeds = NULL; 
    917918 
     919    var $httpauth = NULL; 
    918920    # function FeedWordPress (): Contructor; retrieve a list of feeds  
    919921    function FeedWordPress () { 
     
    923925            $this->feeds[] = new SyndicatedLink($link); 
    924926        endforeach; endif; 
     927         
     928        $this->httpauth = new FeedWordPressHTTPAuthenticator; 
    925929    } // FeedWordPress::FeedWordPress () 
    926930 
     
    15751579            $force_feed = $params; 
    15761580        else : // Parameter array 
    1577             $args = shortcode_atts(array( 
     1581            $args = wp_parse_args(array( 
    15781582            'force_feed' => $force_feed, 
    15791583            'timeout' => $timeout 
  • feedwordpress/trunk/feedwordpress_file.class.php

    r405139 r417798  
    66     
    77    function __construct ($url, $timeout = 10, $redirects = 5, $headers = null, $useragent = null, $force_fsockopen = false) { 
    8         if (is_callable(array('WP_SimplePie_File', 'WP_SimplePie_File'))) : // PHP 4 idiom 
    9             WP_SimplePie_File::WP_SimplePie_File($url, $timeout, $redirects, $headers, $useragent, $force_fsockopen); 
    10         else : // PHP 5+ 
    11             parent::__construct($url, $timeout, $redirects, $headers, $useragent, $force_fsockopen); 
    12         endif; 
     8        $this->url = $url; 
     9        $this->timeout = $timeout; 
     10        $this->redirects = $redirects; 
     11        $this->headers = $headers; 
     12        $this->useragent = $useragent; 
    1313         
     14        $this->method = SIMPLEPIE_FILE_SOURCE_REMOTE; 
     15         
     16        global $wpdb; 
     17         
     18        if ( preg_match('/^http(s)?:\/\//i', $url) ) { 
     19            $args = array( 'timeout' => $this->timeout, 'redirection' => $this->redirects); 
     20     
     21            if ( !empty($this->headers) ) 
     22                $args['headers'] = $this->headers; 
     23 
     24            if ( SIMPLEPIE_USERAGENT != $this->useragent ) //Use default WP user agent unless custom has been specified 
     25                $args['user-agent'] = $this->useragent; 
     26 
     27            $links = $wpdb->get_results( 
     28                $wpdb->prepare("SELECT * FROM {$wpdb->links} WHERE link_rss = '%s'", $url) 
     29            ); 
     30            if ($links) : 
     31                $source = new SyndicatedLink($links[0]); 
     32                $args['authentication'] = $source->authentication_method(); 
     33                $args['username'] = $source->username(); 
     34                $args['password'] = $source->password(); 
     35            endif; 
     36             
     37            $res = wp_remote_request($url, $args); 
     38 
     39            if ( is_wp_error($res) ) { 
     40                $this->error = 'WP HTTP Error: ' . $res->get_error_message(); 
     41                $this->success = false; 
     42            } else { 
     43                $this->headers = wp_remote_retrieve_headers( $res ); 
     44                $this->body = wp_remote_retrieve_body( $res ); 
     45                $this->status_code = wp_remote_retrieve_response_code( $res ); 
     46            } 
     47        } else { 
     48            if ( ! $this->body = file_get_contents($url) ) { 
     49                $this->error = 'file_get_contents could not read the file'; 
     50                $this->success = false; 
     51            } 
     52        } 
     53 
    1454        // SimplePie makes a strongly typed check against integers with 
    1555        // this, but WordPress puts a string in. Which causes caching 
  • feedwordpress/trunk/syndicatedlink.class.php

    r409685 r417798  
    631631    } /* SyndicatedLink::uri () */ 
    632632 
     633    function username () { 
     634        return $this->setting('http username', 'http_username', NULL); 
     635    } /* SyndicatedLink::username () */ 
     636     
     637    function password () { 
     638        return $this->setting('http password', 'http_password', NULL); 
     639    } /* SyndicatedLink::password () */ 
     640     
     641    function authentication_method () { 
     642        $auth = $this->setting('http auth method', NULL); 
     643        if (('-' == $auth) or (strlen($auth)==0)) : 
     644            $auth = NULL; 
     645        endif; 
     646        return $auth; 
     647    } /* SyndicatedLink::authentication_method () */ 
     648     
    633649    function property_cascade ($fromFeed, $link_field, $setting, $simplepie_method) { 
    634650        $value = NULL; 
Note: See TracChangeset for help on using the changeset viewer.