WordPress.org

Plugin Directory

Changeset 525651


Ignore:
Timestamp:
03/31/12 18:45:44 (2 years ago)
Author:
dllh
Message:

Add the ability to fetch link categories and links.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • posterous-importer/branches/v2api/posterous.php

    r525524 r525651  
    1111 
    1212// TODO: Actually honor the retry-after headers instead of using an arbitrary wait time. 
    13 // TODO: Add page count to bottom of import screen. 
     13// TODO: Add page and link counts to bottom of import screen. 
    1414// TODO: Figure out Posterous's weird shortcode/hashing thing for inserting images into pages and body_html (e.g. [[posterous-content:jhsmtHnEjaoooaxfmmbm]]) 
    1515 
     
    4747    var $url_remap = array(); 
    4848    var $have_posts = true; 
     49    var $category_map = array(); 
    4950    var $api_sleep_duration = 1100000; 
    5051    var $last_api_call_timestamp = 0; 
     
    111112        $this->do_posts( 'pages' ); 
    112113        $this->process_attachments(); 
     114        $this->process_links(); 
    113115        $this->cleanup(); 
    114116    } 
     
    10181020    } 
    10191021 
     1022    function process_links() {       
     1023        $url = 'http://posterous.com/api/2/sites/' . $this->site_id . '/link_categories'; 
     1024        $url = add_query_arg( 'api_token', $this->api_token, $url );         
     1025        do_action( 'posterous_api_sleep' ); 
     1026        $this->last_api_call_timestamp = time(); 
     1027        $data = $this->get_page( $url, $this->username, $this->password );       
     1028        if ( is_wp_error( $data ) ) { 
     1029            echo "Error:\n" . $data->get_error_message() . "\n"; 
     1030            return; 
     1031        } 
     1032 
     1033        $code = (int) $data['response']['code']; 
     1034        if ( 200 !== $code ) { 
     1035            do_action( 'posterous_handle_bad_response', $data, $code ); 
     1036        } 
     1037 
     1038        $body = $data['body']; 
     1039        $categories = json_decode( $body ); 
     1040 
     1041        foreach ( $categories as $cat ) { 
     1042            if ( $this->add_link_category( $cat ) ) { 
     1043                do_action( 'posterous_api_sleep' ); 
     1044                $links_url = 'http://posterous.com/api/2/sites/' . $this->site_id . '/link_categories/' . $cat->id . '/links'; 
     1045                $links_url = add_query_arg( 'api_token', $this->api_token, $links_url ); 
     1046                $this->last_api_call_timestamp = time(); 
     1047                $data = $this->get_page( $links_url, $this->username, $this->password ); 
     1048                 
     1049                if ( is_wp_error( $data ) ) { 
     1050                    echo "Error:\n" . $data->get_error_message() . "\n"; 
     1051                    return; 
     1052                } 
     1053         
     1054                $code = (int) $data['response']['code']; 
     1055                if ( 200 !== $code ) { 
     1056                    do_action( 'posterous_handle_bad_response', $data, $code ); 
     1057                } 
     1058         
     1059                $body = $data['body']; 
     1060                $links = json_decode( $body ); 
     1061                 
     1062                foreach ( $links as $link ) { 
     1063                    $this->add_link( $link ); 
     1064                }                
     1065            } 
     1066        }    
     1067    } 
     1068 
     1069    function add_link_category( $category ) { 
     1070        $cat = wp_insert_term( $category->title, 'link_category' ) ; 
     1071        if ( is_wp_error( $cat ) ) { 
     1072            echo "Error: Could not insert category '$category'\n"; 
     1073            return false; 
     1074        } 
     1075        $this->category_map[$category->id] = $cat['term_id']; 
     1076        return true; 
     1077    } 
     1078     
     1079    function add_link( $link ) { 
     1080        $link_data = array(); 
     1081        $link_data['link_name'] = $link->title; 
     1082        $link_data['link_url'] = $link->url; 
     1083        $link_data['link_category'] = $this->category_map[$link->parent_id]; 
     1084        if ( is_wp_error( wp_insert_link( $link_data ) ) ) { 
     1085            echo "Error: Could not insert link '<a href=\"$link->url\">$link->title</a>'\n"; 
     1086            return false; 
     1087        } 
     1088        return true; 
     1089    } 
     1090 
    10201091    /** 
    10211092     * Hook to run when we want to sleep to keep from getting 403 responses from the Posterous API. 
Note: See TracChangeset for help on using the changeset viewer.