WordPress.org

Plugin Directory

Changeset 207762


Ignore:
Timestamp:
02/18/10 23:03:47 (8 years ago)
Author:
czepol
Message:

0.2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • wp-planet/trunk/wp-planet.php

    r207202 r207762  
    99*/ 
    1010define('WP_PLANET_DB', 'wp_planet'); 
    11 //define('WP_FEEDS_DB', 'wp_feeds'); 
     11define('WP_POSTS_DB', 'wp_planet_posts'); 
     12define('WP_FEEDS_DB', 'wp_feeds'); 
    1213register_activation_hook( __FILE__, 'install_wp_planet' ); 
    1314add_action('admin_menu', 'wp_planet_menu'); 
     
    2829    dbDelta($sql); 
    2930    } 
    30     /*if($wpdb->get_var("SHOW TABLES LIKE '".WP_FEEDS_DB."'") != WP_FEEDS_DB) { 
    31     $sql = ""; 
     31    if($wpdb->get_var("SHOW TABLES LIKE '".WP_POSTS_DB."'") != WP_POSTS_DB) { 
     32    $sql = "CREATE TABLE ".WP_POSTS_DB." ( 
     33    `ID` INT( 6 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 
     34    `post_id` INT( 6 ) NOT NULL , 
     35    `source_service` INT( 3 ) NOT NULL , 
     36    `source_url` VARCHAR( 1000 ) NOT NULL , 
     37    `source_author` VARCHAR( 200 ) NOT NULL 
     38    ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; 
    3239    require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
    3340    dbDelta($sql);       
    34     }*/ 
     41    } 
     42    if($wpdb->get_var("SHOW TABLES LIKE '".WP_FEEDS_DB."'") != WP_FEEDS_DB) { 
     43    $sql = "CREATE TABLE ".WP_FEEDS_DB." ( 
     44    `ID` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 
     45    `feed_id` INT( 10 ) NOT NULL , 
     46    `item_id` INT( 10 ) NOT NULL, 
     47    `item_title` VARCHAR( 200 ) NOT NULL , 
     48    `item_url` VARCHAR( 500 ) NOT NULL , 
     49    `item_content` TEXT NOT NULL, 
     50    `item_pub_date` DATETIME NOT NULL, 
     51    `item_tags` text NOT NULL 
     52    ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;"; 
     53    require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
     54    dbDelta($sql);       
     55    } 
    3556} 
    3657 
     
    4970    } 
    5071     
    51     /*  
    52      * Klasa: Planet 
    53      * Funkcja: search_feed 
    54      * Argument nie jest wymagany, jeśli $where jest puste, to funkcja  
    55      * robi najzwyklejszy SELECT *FROM z tabeli. 
    56      * Jako parametr $where można podać bezpośrednio dalszą część zapytania 
    57      * np. $where = " ID=1 AND feed_url=http://example.com". 
    58      * $where może być także tablicą  
    59      * np. $where = array( 'ID'=> 5, 'feed_url'=> 'http://example.com'). 
    60      */  
    6172    public function search_feed( $where = null ) { 
    6273    global $wpdb; 
     
    140151     
    141152    function validate( $url ) { 
    142     if(fetch_rss($url) == true) { 
     153        $rss = @simplexml_load_file($url); 
     154        if(is_object($rss)) { 
     155            return true; 
     156        } else { 
     157            return false; 
     158        } 
     159    } 
     160     
     161    function get_feed( $url ) { 
     162        return RSS::get_last_feed($url); 
     163        if(RSS::validate($url) == true) { 
     164         
     165        } 
     166         
     167        else { 
     168            return false; 
     169        } 
     170    } 
     171     
     172    function feed_from_db( $data ) { 
     173     
     174    } 
     175     
     176    function feed_to_db( $data, $url ) { 
     177    if(!(RSS::is_feed_exist_in_db($data)) || !(RSS::is_feed_edited($data))) { 
     178        $feed = RSS::get_last_feed($url); 
     179        global $wpdb; 
     180         
     181    } else if(RSS::is_feed_edited($data)) { 
     182    //Trzeba jeszcze raz pobrać RSSa (zaktualizować) 
     183    //TODO   
     184    echo "Feed istnieje, ale był edytowany"; 
     185    } else { 
     186        echo "Feed już zindeksowany"; 
     187        return false; 
     188    } 
     189    } 
     190     
     191    function is_feed_exist_in_db( $data ) { 
     192    //ID -> http://jakilinux.org/?p=2324324 
     193    //ID = 2324324 
     194    //Data  
     195    global $wpdb; 
     196    $id = $data['id']; 
     197    $date = $data['date']; 
     198    $query = $wpdb->get_results("SELECT * FROM ".WP_FEEDS_DB." WHERE item_id ='".$id."' AND item_pub_date = '".$date."'"); 
     199    if(isset($query[0])) { 
    143200        return true; 
    144201    } else { 
    145202        return false; 
    146203    } 
    147     } 
    148      
    149     function is_rss( $url ) { 
    150     //todo   
    151     } 
    152     function get_feed( $url, $limit = 5 ) { 
    153     /*$rss = fetch_rss($url); 
    154     echo "Strona: ", $rss->channel['title'], "<br>\n"; 
    155     foreach ($rss->items as $item ) { 
    156     $title = $item[title]; 
    157     $url   = $item[guid]; 
    158     echo "<a href=$url>$title</a></li><br>\n"; 
    159     echo $item->description;*/ 
    160     $feed = simplexml_load_file($url); 
    161     echo "Strona: ", $feed->channel->title; 
    162     echo "<br />"; 
    163      
    164     //foreach($feed->channel->item as $item) { 
    165     for($i=1;$i<$limit+1; $i++) { 
    166         $item = $feed->channel->item; 
    167         $item = $item[$i-1]; 
    168         echo "<h2>".$item->title."</h2>"; 
    169         echo "<p>".$item->description."</p>"; 
    170         echo "<hr />"; 
    171         //print_r($item); 
    172         } 
     204     
     205    } 
     206     
     207    function is_feed_edited( $data ) { 
     208    global $wpdb; 
     209    $id = $data['id']; 
     210    $date = $data['date']; 
     211    $query = $wpdb->get_results("SELECT * FROM ".WP_FEEDS_DB." WHERE item_id ='".$id."' AND item_pub_date != '".$date."'"); 
     212    if(isset($query[0])) { 
     213        return true; 
     214    } else { 
     215        return false; 
     216    }    
     217    } 
     218     
     219    function formate_date( $input ) { 
     220        return date('Y-m-d H:i:s', strtotime($input)); 
     221    } 
     222     
     223    function get_last_feed( $url ) { 
     224        if(RSS::validate($url) == true) { 
     225            $feed = simplexml_load_file($url); 
     226            $item = $feed->channel->item; 
     227            $title = $item->title;                      //$title = Czy powinno się tworzyć aplikację na wiele systemów operacyjnych? – analiza przypadku komunikatora Kadu 
     228            $link = $item->link;                        //$link = http://jakilinux.org/aplikacje/komunikatory/czy-powinno-sie-tworzyc-aplikacje-na-wiele-systemow-operacyjnych-analiza-przypadku-komunikatora-kadu/ 
     229            $comments_link = $item->comments;           //$comments_link = http://jakilinux.org/aplikacje/komunikatory/czy-powinno-sie-tworzyc-aplikacje-na-wiele-systemow-operacyjnych-analiza-przypadku-komunikatora-kadu/#comments 
     230            $date = $item->pubDate;                     //$date = Tue, 09 Feb 2010 20:50:30 +0000 
     231            $categories = $item->category;              //$categories = array(Komunikatory, Gnome, KDE, mac, usability); 
     232            $permalink = $item->guid;                   //$permalink = http://jakilinux.org/?p=104722 
     233            $ns = array ( 
     234                ‘content’ => "http://purl.org/rss/1.0/modules/content/", 
     235                ‘wfw’ => "http://wellformedweb.org/CommentAPI/", 
     236                ‘dc’ => "http://purl.org/dc/elements/1.1/" 
     237            );  
     238            $content = $item->children($ns[‘content’]); //$content - sformatowany string 
     239            $dc      = $item->children($ns[‘dc’]);      //$dc = patpi 
     240            $wfw     = $item->children($ns[‘wfw’]);     //$wfw = http://jakilinux.org/aplikacje/komunikatory/czy-powinno-sie-tworzyc-aplikacje-na-wiele-systemow-operacyjnych-analiza-przypadku-komunikatora-kadu/feed/ 
     241            $friendly_url = explode('/feed/', $wfw);    //$wfw = http://example.com/wpis/feed/ 
     242            $friendly_url = $friendly_url[0].'/';       //$friendly_url = http://example.com/wpis/ 
     243            $c = count($categories); 
     244            $tags =""; 
     245            for($i=0;$i<$c;$i++) { 
     246                $tags.= $categories[$i]; 
     247                if($i<($c-1)) { 
     248                    $tags .= ", ";   
     249                } 
     250            } 
     251            $explode = explode("?p=", $permalink); 
     252            $service = $explode[0]; 
     253            $orginal_post_id = $explode[1]; 
     254            $string = '<span id="more-'.$orginal_post_id.'"></span>'; 
     255            $content = strip_tags($content, '<p><a><em><span><b><i><strong><li><ul><ol><img><br><table><tr><td><th><abbr>'); 
     256            $content = explode($string, $content); 
     257            $content = $content[0]."<!--more-->".$content[1]; 
     258            $postdata = array( 
     259            'title' => $title, 
     260            'permalink' => $friendly_url, 
     261            'content' => $content, 
     262            'service' => $service, 
     263            'date' => $date, 
     264            'tags' => $tags 
     265            );            
     266            return $postdata; 
     267        } else { 
     268            return false; 
     269        }  
    173270    }   
    174271     
    175     function feed2post ( $data ) { 
     272    function feed2post ( $data, $service ) { 
    176273     
    177274        if( !isset( $data ) ) { 
     
    182279            return false;  
    183280        } 
     281        $author = $service['manager']; 
     282        $category = $service['category']; 
     283        $post = array( 
     284          'menu_order' => '0', 
     285          'comment_status' => 'open', 
     286          'ping_status' => 'open', 
     287          'pinged' => '', 
     288          'post_author' => $author, 
     289          'post_category' => $category, 
     290          'post_content' => $data['content'], 
     291          'post_date' => date('Y-m-d H:i:s'), 
     292          'post_date_gmt' => '', 
     293          'post_excerpt' => '', 
     294          'post_name' => '', 
     295          'post_parent' => '0', 
     296          'post_password' => '', 
     297          'post_status' => 'publish', 
     298          'post_title' => $data['title'], 
     299          'post_type' => 'post', 
     300          'tags_input' => $data['tags'], 
     301          'to_ping' => '' 
     302        );       
    184303         
    185         foreach( $data as $item ) { 
    186          
    187         } 
    188         /*$post = array( 
    189           'ID' => [ <post id> ] //Are you updating an existing post? 
    190           'menu_order' => [ <order> ] //If new post is a page, sets the order should it appear in the tabs. 
    191           'comment_status' => [ 'closed' | 'open' ] // 'closed' means no comments. 
    192           'ping_status' => [ 'closed' | 'open' ] // 'closed' means pingbacks or trackbacks turned off 
    193           'pinged' => [ ? ] //? 
    194           'post_author' => [ <user ID> ] //The user ID number of the author. 
    195           'post_category' => [ array(<category id>, <...>) ] //Add some categories. 
    196           'post_content' => [ <the text of the post> ] //The full text of the post. 
    197           'post_date' => [ Y-m-d H:i:s ] //The time post was made. 
    198           'post_date_gmt' => [ Y-m-d H:i:s ] //The time post was made, in GMT. 
    199           'post_excerpt' => [ <an excerpt> ] //For all your post excerpt needs. 
    200           'post_name' => [ <the name> ] // The name (slug) for your post 
    201           'post_parent' => [ <post ID> ] //Sets the parent of the new post. 
    202           'post_password' => [ ? ] //password for post? 
    203           'post_status' => [ 'draft' | 'publish' | 'pending' ] //Set the status of the new post.  
    204           'post_title' => [ <the title> ] //The title of your post. 
    205           'post_type' => [ 'post' | 'page' ] //Sometimes you want to post a page. 
    206           'tags_input' => [ '<tag>, <tag>, <...>' ] //For tags. 
    207           'to_ping' => [ ? ] //? 
    208         );  */   
    209         return true; 
     304        return wp_insert_post($post); 
    210305     
    211306    } 
     
    495590 
    496591function single_feed() { 
    497  
    498 $url = 'http://feeds.feedburner.com/jakilinuxorg'; 
    499 $feed = simplexml_load_file($url); 
     592$rss = new RSS(); 
     593$url = 'http://www.devblogi.pl/feeds/posts/default?alt=rss'; 
     594$single = $rss->get_feed($url); 
     595$service = array('author'=>1, 'category'=>1); 
     596$data = array('id'=>'1', 'date'=>'2010-02-18 22:22:22'); 
     597print_r($rss->get_last_feed($url)); 
     598//print_r($rss->is_feed_exist_in_db($data)); 
     599//$rss->feed2post($single, $service); 
     600$rss->feed_to_db( $data, $url );  
     601 
     602/* 
     603echo "<br />"; 
     604 
     605$curl = curl_init(); 
     606curl_setopt($curl, CURLOPT_URL, 'http://jakilinux.org/feed/?format=xml'); 
     607curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
     608$strona = curl_exec($curl); 
     609curl_close($curl); 
     610echo $strona; 
     611//$feed = simplexml_load_string($strona); 
     612//$feed = simplexml_load_file($url); 
    500613$feed = $feed->channel; 
    501614$item = $feed->item[0]; 
     
    528641echo $content; 
    529642echo "<br />"; 
    530 print_r($item); 
     643echo $wfw; 
     644//print_r($item);*/ 
    531645} 
    532646?> 
Note: See TracChangeset for help on using the changeset viewer.