WordPress.org

Plugin Directory

Changeset 428720


Ignore:
Timestamp:
08/25/11 15:49:43 (3 years ago)
Author:
ydubois
Message:

Version 2.0.0 released!

Location:
yd-buddypress-feed-syndication/trunk
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • yd-buddypress-feed-syndication/trunk/inc/ydbfs.inc.php

    r413686 r428720  
    1919        add_action( 'init', array( &$this, 'setup_tabs' ) ); 
    2020        add_filter( 'wp_feed_cache_transient_lifetime', array( &$this, 'set_transient_lifetime' ) ); 
    21     } 
    22  
     21         
     22        bp_register_group_extension( 'groupFeedSyndication' ); 
     23         
     24        //add_filter( 'bp_activity_permalink', array( &$this, 'add_target' ), 10000 ); 
     25        //add_filter( 'bp_insert_activity_meta', array( &$this, 'add_target' ), 10000 ); 
     26        add_filter( 'bp_get_activity_action', array( &$this, 'add_target' ), 10000 ); 
     27        //add_filter( 'bp_get_activity_action', array( &$this, 'activity_action_filter' ) ); 
     28    } 
     29     
     30    // =======================================  FRONT OFFICE ==================================== 
     31     
     32    function add_target( $html ) { 
     33        $options = get_option( $this->option_key ); 
     34        if( isset( $options['open_out'] ) && $options['open_out'] ) { 
     35            //$html = preg_replace( '/(<a\s+[^>]+class="view")/i', "\\1 target=\"_blank\"", $html ); 
     36            $html = preg_replace( '/<(a\s+[^>]+)>/i', "<\\1 target=\"_blank\">", $html ); 
     37            //$html = preg_replace( '/Afficher/i', "Truc", $html ); 
     38            //echo 'html: ' . $html . '<br/>'; 
     39            //exit(0); 
     40        } 
     41        return $html; 
     42    } 
     43     
     44    /* 
     45    function activity_action_filter( $html ) { 
     46        if( 'new_blog_post' == bp_get_activity_type() ) { 
     47            global $activities_template; 
     48            if( 'imported_blog' == $activities_template->activity->component ) { 
     49                $dn = $activities_template->activity->display_name; 
     50                $user_feed_id = $activities_template->activity->item_id; 
     51                if( !empty( $user_feed_id ) ) { 
     52                    $syndications_title = get_user_meta( (int)$activities_template->activity->user_id, 'yd_syndications_title', true ); 
     53                    if( isset( $syndications_title[$user_feed_id] ) ) { 
     54                        $t = $syndications_title[$user_feed_id]; 
     55                    } else { 
     56                        $t = ''; 
     57                    } 
     58                } else { 
     59                    $t = ''; 
     60                } 
     61                $html = $activities_template->activity->action . $html; 
     62                if( $t ) { 
     63                    $html = preg_replace(  
     64                        '/New blog post:/',  
     65                        sprintf(__( 'New blog post imported from &laquo;%1$s&raquo; by %2$s: ', 'ydbfs' ),$t,$dn), 
     66                        $html 
     67                    ); 
     68                } else { 
     69                    $html = preg_replace(  
     70                        '/New blog post:/',  
     71                        sprintf(__( 'New blog post imported by %1$s: ', 'ydbfs' ),$dn), 
     72                        $html 
     73                    ); 
     74                } 
     75            } 
     76        } 
     77        return $html; 
     78    } 
     79    */ 
     80     
    2381    // =======================================  ADMIN SCREEN  =================================== 
    2482     
     
    45103    } 
    46104     
    47     function screen_syndication_settings() { 
     105    function screen_syndication_settings( $group = false ) { 
    48106        global $current_user, $bp_settings_updated; 
    49107     
     
    71129                        $syndications_refresh[$key] = $_POST['refresh'][$key]; 
    72130                    } 
     131                    if( isset( $_POST['titles'][$key] ) && !empty( $_POST['titles'][$key] ) ) { 
     132                        $syndications_title[$key] = $_POST['titles'][$key]; 
     133                    } 
    73134                } 
    74135                 
     
    76137                update_user_meta( (int)$current_user->id, 'yd_syndications_status', $syndications_status ); 
    77138                update_user_meta( (int)$current_user->id, 'yd_syndications_refresh', $syndications_refresh ); 
     139                update_user_meta( (int)$current_user->id, 'yd_syndications_title', $syndications_title ); 
    78140                //foreach ( (array)$_POST['syndications'] as $key => $value ) { 
    79141                //  update_user_meta( (int)$current_user->id, $key, $value ); 
     
    115177    } 
    116178     
    117     function screen_syndication_settings_content() { 
    118         global $bp, $current_user, $bp_settings_updated; ?> 
     179    function screen_syndication_settings_content( $group = false ) { 
     180        global $bp, $current_user, $bp_settings_updated; 
     181        $options = get_option( $this->option_key ); 
     182        if( $group ) { 
     183            $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
     184            $syndications_status = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_status', true ); 
     185            $syndications_refresh = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', true ); 
     186            $syndications_title = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_title', true ); 
     187        } else { 
     188            $syndications = get_user_meta( (int)$current_user->id, 'yd_syndications', true ); 
     189            $syndications_status = get_user_meta( (int)$current_user->id, 'yd_syndications_status', true ); 
     190            $syndications_refresh = get_user_meta( (int)$current_user->id, 'yd_syndications_refresh', true ); 
     191            $syndications_title = get_user_meta( (int)$current_user->id, 'yd_syndications_title', true ); 
     192        } 
     193        //echo 'group a: ' . $group . '<br/>'; //Debug 
     194        //echo 'ok: ' . $this->option_key . '<br/>'; //Debug 
     195        ?> 
    119196 
    120197        <?php if ( $bp_settings_updated ) { ?> 
     
    144221        </style> 
    145222        <table class="ydbfs" id="feed_agregation_table"> 
     223        <tr> 
     224        <th><?php echo __( 'Feed address', $this->tdomain ) ?></th> 
     225        <th><?php echo __( 'Feed title', $this->tdomain ) ?></th> 
     226        <th><?php echo __( 'Feed refresh', $this->tdomain ) ?></th> 
     227        <th><?php echo __( 'Unsubscribe', $this->tdomain ) ?></th> 
     228        </tr> 
    146229        <?php  
    147230         
    148         $syndications = get_user_meta( (int)$current_user->id, 'yd_syndications', true ); 
    149         $syndications_status = get_user_meta( (int)$current_user->id, 'yd_syndications_status', true ); 
    150         $syndications_refresh = get_user_meta( (int)$current_user->id, 'yd_syndications_refresh', true ); 
     231        $count = 0; 
    151232        foreach( (array)$syndications as $key => $syndication ) { 
     233            $count ++; 
    152234            if( $syndications_status[$key] == 'ok' ) { 
    153235                $color = '#9f9'; 
     
    161243            echo '<span class="highlight ydbfs" style="background-color:' . $color . ';"><a href="' . $syndication . '" target="_rss" title="' . $title . '">' . $syndication . '</a></span>'; 
    162244             
     245            echo '</td>'; 
     246            echo '<td>' . $syndications_title[$key] . '</td>'; 
     247             
     248            //echo 'group b: ' . $group . '<br/>';  //Debug 
    163249            // Specify refresh delay for this feed  
    164             $this->refresh_delay_menu( $syndication, $syndications_refresh[$key] ); 
    165              
    166             $delete_url = $bp->loggedin_user->domain . BP_SETTINGS_SLUG . '/rss_syndication' 
    167                 . '?delete=' . urlencode( (string)$syndication ); 
     250            $this->refresh_delay_menu( $syndication, $syndications_refresh[$key], $group ); 
     251             
     252            if( $group ) { 
     253                $delete_url = '?delete=' . urlencode( (string)$syndication ); 
     254            } else { 
     255                $delete_url = $bp->loggedin_user->domain . BP_SETTINGS_SLUG . '/rss_syndication' 
     256                    . '?delete=' . urlencode( (string)$syndication ); 
     257            } 
    168258            echo '</td><td><a class="trash ydbfs" title="' . __( 'Delete feed', $this->tdomain ) . '" href="' . wp_nonce_url( $delete_url, 'bp_settings_syndication' ) . '">X</a>'; 
    169259            echo '</tr>'; 
    170260            echo '<input type="hidden" name="syndications[]" value="' . $syndication . '"/>'; 
    171         } 
    172          
     261            echo '<input type="hidden" name="titles[]" value="' . $syndications_title[$key] . '"/>'; 
     262        } 
    173263        ?> 
    174264         
    175         <tr> 
    176         <td><label for="add_syndication"><?php _e( 'New RSS feed address to syndicate:', $this->tdomain ) ?></label> 
    177         <input type="text" name="syndications[]" id="add_syndication" size="50" class="ydbfs" /></td> 
    178          
    179         <?php $this->refresh_delay_menu(); ?> 
    180  
    181         <td> 
    182         <div class="submit"> 
    183             <input type="submit" name="submit" value="<?php _e( 'Add feed', $this->tdomain ) ?>" id="submit" class="auto ydbfs" /> 
    184         </div> 
    185         </td> 
    186         </tr> 
     265        <?php if( $count < $options['limit'] ) : ?> 
     266            <tr> 
     267            <td> 
     268             <label for="add_syndication"><?php _e( 'New RSS feed address to syndicate:', $this->tdomain ) ?></label><br/> 
     269             <label for="add_title"><?php _e( 'Feed title:', $this->tdomain ) ?></label> 
     270            </td> 
     271            <td> 
     272              <input type="text" name="syndications[]" id="add_syndication" size="50" class="ydbfs" /><br/> 
     273              <input type="text" name="titles[]" id="add_title" size="50" class="ydbfs" /> 
     274            </td> 
     275             
     276            <?php $this->refresh_delay_menu( '', '', $group ); ?> 
     277     
     278            <td> 
     279            <div class="submit"> 
     280                <input type="submit" name="submit" value="<?php _e( 'Add feed', $this->tdomain ) ?>" id="submit" class="auto ydbfs" /> 
     281            </div> 
     282            </td> 
     283            </tr> 
     284        <?php endif; ?> 
     285         
    187286        </table> 
    188287         
     
    193292    } 
    194293     
    195     function refresh_delay_menu( $syndication = '', $refresh = 0 ) { 
     294    function refresh_delay_menu( $syndication = '', $refresh = 0, $group = false ) { 
    196295        global $bp; 
     296        //echo 'group c: ' . $group . '<br/>';  //Debug 
    197297        if( !empty( $syndication ) ) { 
    198             $update_url = wp_nonce_url(  
    199                 $bp->loggedin_user->domain . BP_SETTINGS_SLUG . '/rss_syndication' 
    200                 . '?update=' . urlencode( (string)$syndication ),  
    201                 'bp_settings_syndication'  
    202             ) . '&refresh='; 
     298            if( !$group ) { 
     299                $update_url = wp_nonce_url(  
     300                    $bp->loggedin_user->domain . BP_SETTINGS_SLUG . '/rss_syndication' 
     301                    . '?update=' . urlencode( (string)$syndication ),  
     302                    'bp_settings_syndication'  
     303                ) . '&refresh='; 
     304            } else { 
     305                $url = bp_get_group_permalink() 
     306                    . 'admin/group-feed-syndication' 
     307                    . '?update=' . urlencode( (string)$syndication ); 
     308                $update_url = wp_nonce_url( $url,  
     309                    'bp_settings_syndication' ) . '&refresh='; 
     310            } 
    203311            $onchange = 'onChange="document.location=\'' . $update_url  
    204312                . '\'+this.options[this.selectedIndex].value;"'; 
     
    206314            $onchange = ''; 
    207315        } 
     316        //echo 'group: ' . $group . '<br/>'; //Debug 
     317        //echo 'url: ' . $url . '<br/>'; //Debug 
    208318        echo '<td>'; 
    209319        echo __( 'Refresh every:', $this->tdomain ); 
     
    245355            $syndications_refresh = get_user_meta( (int)$user, 'yd_syndications_refresh', true ); 
    246356            $syndications_updated = get_user_meta( (int)$user, 'yd_syndications_updated', true ); 
     357            $syndications_title = get_user_meta( (int)$user, 'yd_syndications_title', true ); 
    247358            foreach( (array) $syndications as $key => $syndication ) { 
    248359                if( ( !$nok && $syndications_status[$key] == 'ok' ) || ( $nok && $syndications_status[$key] == 'nok' ) ) { 
     
    256367                        'user_id' => $user, 
    257368                        'user_feed_id' => $key, 
    258                         'feed_url' => $syndication 
     369                        'feed_url' => $syndication, 
     370                        'feed_title' => $syndications_title[$key] 
    259371                    ); 
    260372                } 
     
    268380     */ 
    269381    function syndicate( $nok = false, $force = false ) { 
     382        $options = get_option( 'yd-buddypress-feed-syndication' ); //statically called :-s 
    270383        $feeds = self::get_feed_list( $nok, $force ); 
    271384        //var_dump( $feeds );   //debug 
     
    302415                $items[$key]['feed_id'] = $feed_id; 
    303416                $items[$key]['user_id'] = $feed['user_id']; 
     417                $items[$key]['user_feed_id'] = $feed['user_feed_id']; 
     418                $items[$key]['feed_title'] = $feed['feed_title']; 
    304419     
    305420                $items[$key]['link'] = $rss_item->get_link(); 
     
    332447                $feed_id = $post['feed_id']; 
    333448                $author_link = ( $post['author'] ) ? '<a href="' . bp_core_get_user_domain( $post['author'] ) . '">' . bp_core_get_user_displayname( $post['author'] ) . '</a>' :  __( 'Imported', 'ydbfs' ); 
    334                 $item_link = '<a href="' . $post['link'] . '">' . $post['title'] . '</a>'; 
     449                if( isset( $options['open_out'] ) && $options['open_out'] ) { 
     450                    $target = ' target="_blank" '; 
     451                } else { 
     452                    $target = ''; 
     453                } 
     454                $item_link = '<a href="' . $post['link'] . '" ' . $target . '>' . $post['title'] . '</a>'; 
    335455                //$activity_action = sprintf( '%s published a new blog post %s', $author_link, $item_link ); 
    336                 $activity_action = sprintf( __( 'New blog post: %s', 'ydbfs' ), $item_link ); 
     456                //$activity_action = sprintf( __( 'New blog post: %s', 'ydbfs' ), $item_link ); 
     457                 
     458                $t = $post['feed_title']; 
     459                $dn = bp_core_get_user_displayname( $post['user_id'] ); 
     460                if( !empty($t) ) { 
     461                    $activity_action = sprintf(__( 'New blog post imported from &laquo;%1$s&raquo; by %2$s: %3$s', 'ydbfs' ), $t, $dn, $item_link ); 
     462                } else { 
     463                    $activity_action = sprintf(__( 'New blog post imported by %1$s: %2$s', 'ydbfs' ), $dn, $item_link ); 
     464                } 
     465                 
    337466                //echo $item_link . '<br/>'; //debug 
     467                //echo $dn . '<br/>'; //debug 
    338468                 
    339469                /* Fetch an existing activity_id if one exists. */ 
     
    351481                    'recorded_time' => gmdate( "Y-m-d H:i:s", $post_date ), 
    352482                    'hide_sitewide' => false, 
    353                     'content' => $post['description'] 
     483                    'content' => $post['description'], 
     484                    'item_id' => $post['user_feed_id'] 
    354485                ); 
    355486                bp_activity_add( $activity_data ); 
     
    410541         
    411542        self::syndicate( $nok, $force ); 
     543        groupFeedSyndication::syndicate( $nok, $force ); 
    412544        //$op->error_msg .= 'Great.'; 
    413545        $op->update_msg .= 'Feeds syndication updated.'; 
     
    451583    } 
    452584} 
     585 
     586 
     587// =======================================  GROUP FEATURES ================================== 
     588 
     589// This is inspired by the external-group-blogs BP plugin 
     590     
     591/* Group blog extension using the BuddyPress group extension API */ 
     592class groupFeedSyndication extends BP_Group_Extension { 
     593     
     594    public $option_key = 'yd-buddypress-feed-syndication'; 
     595    public $AVAILABLE_DELAYS = array( 
     596        '3 hours' => 10800, 
     597        '6 hours' => 21600, 
     598        '12 hours' => 43200 
     599    ); 
     600     
     601    function groupFeedSyndication() { 
     602        global $bp; 
     603 
     604        $this->name = __( 'Import blogs', 'bp-group-feed-syndication' ); 
     605        $this->slug = 'group-feed-syndication'; 
     606 
     607        $this->create_step_position = 21; 
     608        $this->enable_nav_item = false; 
     609    } 
     610     
     611    function create_screen() { 
     612        //echo 'create screen<br/>'; 
     613    } 
     614     
     615    function create_screen_save() { 
     616        //echo 'create screen save<br/>'; 
     617    } 
     618     
     619    function edit_screen() { 
     620        //echo 'edit screen<br/>'; 
     621        ydbfsPlugin::screen_syndication_settings_content( $group = true ); 
     622    } 
     623     
     624    function edit_screen_save() { 
     625        //error_log( 'YD::Debug: edit_screen_save' );        
     626        //ydbfsPlugin::screen_syndication_settings( $group = true ); 
     627 
     628        global $bp, $current_user, $bp_settings_updated; 
     629     
     630        $bp_settings_updated = false; 
     631     
     632        if ( $_POST['submit'] ) { 
     633            check_admin_referer('bp_settings_syndication'); 
     634     
     635            if ( $syndications = $_POST['syndications'] ) { 
     636                foreach( (array)$syndications as $key => $syndication ) { 
     637                    if( !$syndication || empty( $syndication ) || $syndication == '' ) { 
     638                        unset( $syndications[$key] ); 
     639                        continue; 
     640                    } 
     641                    if( !preg_match( '|^http://|', $syndication ) ) 
     642                        $syndication = $syndications[$key] = 'http://' . $syndication; 
     643                    include_once( ABSPATH . 'wp-includes/rss.php' ); 
     644                    $rss = fetch_feed( $syndication ); 
     645                    if( is_wp_error( $rss ) ) { 
     646                        $syndications_status[$key] = 'nok'; 
     647                    } else { 
     648                        $syndications_status[$key] = 'ok'; 
     649                    } 
     650                    if( isset( $_POST['refresh'][$key] ) && !empty( $_POST['refresh'][$key] ) && is_numeric( $_POST['refresh'][$key] ) ) { 
     651                        $syndications_refresh[$key] = $_POST['refresh'][$key]; 
     652                    } 
     653                    if( isset( $_POST['titles'][$key] ) && !empty( $_POST['titles'][$key] ) ) { 
     654                        $syndications_title[$key] = $_POST['titles'][$key]; 
     655                    } 
     656                } 
     657                 
     658                groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', $syndications ); 
     659                groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_status', $syndications_status ); 
     660                groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', $syndications_refresh ); 
     661                groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_title', $syndications_title ); 
     662                //foreach ( (array)$_POST['syndications'] as $key => $value ) { 
     663                //  update_user_meta( (int)$current_user->id, $key, $value ); 
     664                //} 
     665            } 
     666     
     667            $bp_settings_updated = true; 
     668        } 
     669        if ( $_GET['delete'] ) { 
     670            check_admin_referer('bp_settings_syndication'); 
     671             
     672            $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
     673            foreach( (array)$syndications as $key => $syndication ) { 
     674                if( $syndication == $_GET['delete'] )  
     675                    unset( $syndications[$key] );  
     676            } 
     677            groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', $syndications ); 
     678        } 
     679        if ( $_GET['update'] && $_GET['refresh'] ) { 
     680            check_admin_referer('bp_settings_syndication'); 
     681             
     682            $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
     683            $syndications_refresh = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', true ); 
     684            foreach( (array)$syndications as $key => $syndication ) { 
     685                if( $syndication == $_GET['update'] )  
     686                    $syndications_refresh[$key] = $_GET['refresh'];  
     687            } 
     688            groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', $syndications_refresh ); 
     689        } 
     690         
     691         
     692    } 
     693     
     694    /* We don't need display functions since the group activity stream handles it all. */ 
     695    function display() {} 
     696    function widget_display() {} 
     697     
     698    // custom fonction === 
     699     
     700    function refresh_delay_menu( $syndication = '', $refresh = 0, $group = false ) { 
     701        ydbfsPlugin::refresh_delay_menu( $syndication, $refresh, $group ); 
     702    } 
     703     
     704    // Syndication ======== 
     705     
     706    function get_all_feed_groups() { 
     707        global $wpdb, $bp; 
     708        $gm = $bp->groups->table_name_groupmeta; 
     709        $query = " 
     710            SELECT DISTINCT( group_id ) 
     711            FROM $gm 
     712            WHERE meta_key = 'yd_syndications'; 
     713        "; 
     714        $groups = $wpdb->get_col( $query ); 
     715        return $groups; 
     716    } 
     717     
     718    function get_feed_list( $nok = false, $force = false ) { 
     719        $feeds = array(); 
     720        $group_ids = self::get_all_feed_groups(); 
     721        //if( $force ) echo 'FORCE<br/>';   //debug 
     722        //if( $nok ) echo 'NOK<br/>';   //debug 
     723        foreach( $group_ids as $group_id ) { 
     724            $syndications = groups_get_groupmeta( (int)$group_id, 'yd_syndications', true ); 
     725            $syndications_status = groups_get_groupmeta( (int)$group_id, 'yd_syndications_status', true ); 
     726            $syndications_refresh = groups_get_groupmeta( (int)$group_id, 'yd_syndications_refresh', true ); 
     727            $syndications_updated = groups_get_groupmeta( (int)$group_id, 'yd_syndications_updated', true ); 
     728            $syndications_title = groups_get_groupmeta( (int)$group_id, 'yd_syndications_title', true ); 
     729            foreach( (array) $syndications as $key => $syndication ) { 
     730                if( ( !$nok && $syndications_status[$key] == 'ok' ) || ( $nok && $syndications_status[$key] == 'nok' ) ) { 
     731                    //Only include feeds which are due to be updated according to refresh delay 
     732                    if( isset( $syndications_updated[$key] ) && $syndications_updated[$key] > 0 ) { 
     733                        $delay = time() - $syndications_updated[$key]; 
     734                        if( !$force && $delay < $syndications_refresh[$key] ) 
     735                            continue; 
     736                    } 
     737                    $feeds[] = array( 
     738                        'group_id' => $group_id, 
     739                        'group_feed_id' => $key, 
     740                        'feed_url' => $syndication, 
     741                        'feed_title' => $syndications_title[$key] 
     742                    ); 
     743                } 
     744            } 
     745        } 
     746        return $feeds; 
     747    } 
     748     
     749    function syndicate( $nok = false, $force = false ) { 
     750        global $bp; 
     751        $options = get_option( 'yd-buddypress-feed-syndication' ); //statically called :-s 
     752        $feeds = self::get_feed_list( $nok, $force ); 
     753        //var_dump( $feeds );   //debug 
     754         
     755        foreach ( (array) $feeds as $feed_id => $feed ) { 
     756            $rss = fetch_feed( trim( $feed['feed_url'] ) ); 
     757             
     758            //Mark broken feeds as nok 
     759            if( is_wp_error( $rss ) ) { 
     760                self::mark_error( $feed ); 
     761                continue; 
     762            } 
     763             
     764            //Mark feed as updated 
     765            self::mark_updated( $feed ); 
     766             
     767            /** debug ** 
     768            if( $force ) { 
     769                $cd = $rss->cache_duration; 
     770                echo "cache duration: $cd for " . $feed['feed_url'] . "<br/>"; 
     771            } 
     772            ** /debug **/ 
     773             
     774            $maxitems = $rss->get_item_quantity(); 
     775             
     776            $items = array(); 
     777             
     778            // thanks to bp-external-activity plugin authors for this  
     779            $rss_items = $rss->get_items(0, $maxitems); 
     780            foreach ($rss->get_items(0, $maxitems) as $rss_item ) { 
     781                $date = $rss_item->get_date(); 
     782                $key = strtotime( $date ); 
     783     
     784                $items[$key]['feed_id'] = $feed_id; 
     785                $items[$key]['group_id'] = $feed['group_id']; 
     786                $items[$key]['group_feed_id'] = $feed['group_feed_id']; 
     787                $items[$key]['feed_title'] = $feed['feed_title']; 
     788     
     789                $items[$key]['link'] = $rss_item->get_link(); 
     790                $items[$key]['link'] = preg_replace( '|diff.*prev|', '', $items[$key]['link'] ); 
     791                //echo $items[$key]['link'] . '<br/>'; //debug 
     792     
     793                $items[$key]['title'] = $rss_item->get_title(); 
     794                //$items[$key]['description'] = self::ttruncat( strip_tags( $rss_item->get_description() ), self::DESCRIPTION_MAX_SIZE ); 
     795                $items[$key]['description'] = $rss_item->get_description(); 
     796                 
     797                $author = $rss_item->get_author(); 
     798                $user_id = false; 
     799     
     800                $items[$key]['author'] = $user_id; 
     801            } 
     802             
     803            if ( $items ) { 
     804                ksort($items); 
     805                $items = array_reverse($items, true); 
     806            } else { 
     807                continue; 
     808            } 
     809             
     810            /* Record found items in activity streams */ 
     811            foreach ( (array) $items as $post_date => $post ) { 
     812                $feed_id = $post['feed_id']; 
     813                $author_link = ( $post['author'] ) ? '<a href="' . bp_core_get_user_domain( $post['author'] ) . '">' . bp_core_get_user_displayname( $post['author'] ) . '</a>' :  __( 'Imported', 'ydbfs' ); 
     814                if( isset( $options['open_out'] ) && $options['open_out'] ) { 
     815                    $target = ' target="_blank" '; 
     816                } else { 
     817                    $target = ''; 
     818                } 
     819                $item_link = '<a href="' . $post['link'] . '" ' . $target . '>' . $post['title'] . '</a>'; 
     820                //$activity_action = sprintf( '%s published a new blog post %s', $author_link, $item_link ); 
     821                //$activity_action = sprintf( __( 'New blog post: %s', 'ydbfs' ), $item_link ); 
     822                 
     823                $t = $post['feed_title']; 
     824                $mygroup = groups_get_group( array( 'group_id' => $post['group_id'] ) ); 
     825                $gn = $mygroup->name; 
     826                 
     827                if( !empty($t) ) { 
     828                    $activity_action = sprintf(__( 'New blog post imported from &laquo;%1$s&raquo; for group %2$s: %3$s', 'ydbfs' ), $t, $gn, $item_link ); 
     829                } else { 
     830                    $activity_action = sprintf(__( 'New blog post imported for group %1$s: %2$s', 'ydbfs' ), $gn, $item_link ); 
     831                } 
     832                 
     833                //echo $item_link . '<br/>'; //debug 
     834                //echo $gn . '<br/>'; //debug 
     835                 
     836                /* Fetch an existing activity_id if one exists. */ 
     837                if ( function_exists( 'bp_activity_get_activity_id' ) ) 
     838                    $id = bp_activity_get_activity_id( array(  
     839                        'user_id' => false,  
     840                        'action' => $activity_action,  
     841                        'component' => 'imported_blog',  
     842                        'type' => 'new_blog_post',  
     843                        'item_id' => $post['group_id'],  
     844                        'secondary_item_id' => wp_hash( $post['link'] ) 
     845                    )  
     846                ); 
     847                 
     848                /* Record or update in activity streams. */ 
     849                $activity_data = array( 
     850                    'id' => $id, 
     851                    'user_id' => false, 
     852                    'component' => 'imported_blog', 
     853                    'action' => $activity_action, 
     854                    'primary_link' => $post['link'], 
     855                    'type' => 'new_blog_post', 
     856                    'recorded_time' => gmdate( "Y-m-d H:i:s", $post_date ), 
     857                    'hide_sitewide' => false, 
     858                    'content' => $post['description'], 
     859                    'item_id' => $post['group_id'], 
     860                    'secondary_item_id' => $post['group_feed_id'] 
     861                ); 
     862                $res = groups_record_activity( $activity_data ); 
     863                /* 
     864                var_dump( $activity_data ); // debug 
     865                echo '<br/><br/>'; //debug 
     866                var_dump( $res ); //debug 
     867                echo '<br/><br/>'; // debug 
     868                */ 
     869            } 
     870        } 
     871    } 
     872     
     873    function mark_updated( $feed ) { 
     874        $group  = $feed['group_id']; 
     875        $key    = $feed['group_feed_id']; 
     876        $syndications_updated = groups_get_groupmeta( (int)$group, 'yd_syndications_updated', true ); 
     877        $syndications_updated[$key] = time(); 
     878        groups_update_groupmeta( (int)$group, 'yd_syndications_updated', $syndications_updated ); 
     879    } 
     880     
     881    function mark_error( $feed ) { 
     882        $group  = $feed['group_id']; 
     883        $key    = $feed['group_feed_id']; 
     884        $syndications_status = groups_get_groupmeta( (int)$group, 'yd_syndications_status', true ); 
     885        $syndications_status[$key] = 'nok'; 
     886        groups_update_groupmeta( (int)$group, 'yd_syndications_status', $syndications_status ); 
     887    } 
     888} 
     889 
     890 
    453891?> 
  • yd-buddypress-feed-syndication/trunk/languages/ydbfs-fr_FR.po

    r411453 r428720  
    88"Project-Id-Version: YD BuddyPress Feed Syndication Text\n" 
    99"POT-Creation-Date: 2011-07-15 12:36+0000\n" 
    10 "PO-Revision-Date: 2011-07-18 15:53+0100\n" 
     10"PO-Revision-Date: 2011-08-25 17:38+0100\n" 
    1111"Last-Translator: Yann Dubois <yann@abc.fr>\n" 
    1212"Language-Team: Y.Dubois <yann@abc.fr>\n" 
     
    2222msgstr "Options principales" 
    2323 
    24 #: ydbfs.inc.php:28 
     24#: ydbfs.inc.php:88 
    2525msgid "Import a blog" 
    2626msgstr "Importer un blog" 
     27 
     28#: ydbfs.inc.php:224 
     29msgid "Feed address" 
     30msgstr "Adresse du fil" 
     31 
     32#: ydbfs.inc.php:225 
     33msgid "Feed title" 
     34msgstr "Titre du fil" 
     35 
     36#: ydbfs.inc.php:226 
     37msgid "Feed refresh" 
     38msgstr "Mises à jour" 
     39 
     40#: ydbfs.inc.php:227 
     41msgid "Unsubscribe" 
     42msgstr "Supprimer" 
    2743 
    2844#: ydbfs.inc.php:99 
     
    4258msgstr "Vous pouvez indiquer plusieurs flux qui seront agrégés." 
    4359 
    44 #: ydbfs.inc.php:146 
     60#: ydbfs.inc.php:236 
    4561msgid "Feed validated" 
    4662msgstr "Fil validé." 
    4763 
    48 #: ydbfs.inc.php:149 
     64#: ydbfs.inc.php:239 
    4965msgid "Error: feed could not be fetched at that address" 
    5066msgstr "Erreur&nbsp;: le fil n'a pas été trouvé à cette adresse" 
    5167 
    52 #: ydbfs.inc.php:160 
     68#: ydbfs.inc.php:258 
    5369msgid "Delete feed" 
    5470msgstr "Supprimer ce fil" 
     
    6278msgstr "Ajouter" 
    6379 
    64 #: ydbfs.inc.php:201 
     80#: ydbfs.inc.php:319 
    6581msgid "Refresh every:" 
    6682msgstr "Rafraîchir toutes les&nbsp;:" 
     
    7894msgstr "12 heures" 
    7995 
    80 #: ydbfs.inc.php:315 
     96#: ydbfs.inc.php:448,809 
    8197msgid "Imported" 
    8298msgstr "Importé" 
     
    86102msgstr "Nouveau billet&nbsp;: %s" 
    87103 
     104#: ydbfs.inc.php:461 
     105msgid "New blog post imported from &laquo;%1$s&raquo; by %2$s: %3$s" 
     106msgstr "Nouveau billet importé de &laquo;%1$s&raquo; par %2$s&nbsp;: %3$s" 
     107 
     108#: ydbfs.inc.php:463 
     109msgid "New blog post imported by %1$s: %2$s" 
     110msgstr "Nouveau billet importé par %1$s&nbsp;: %2$s" 
     111 
     112#: ydbfs.inc.php:600 
     113msgid "Import blogs" 
     114msgstr "Importer des blogs" 
     115 
     116#: ydbfs.inc.php:828 
     117msgid "New blog post imported from &laquo;%1$s&raquo; for group %2$s: %3$s" 
     118msgstr "Nouveau billet importé de &laquo;%1$s&raquo; pour le groupe %2$s&nbsp;: %3$s" 
     119 
     120#: ydbfs.inc.php:830 
     121msgid "New blog post imported for group %1$s: %2$s" 
     122msgstr "Nouveau billet importé pour le groupe %1$s&nbsp;: %1$s" 
     123 
  • yd-buddypress-feed-syndication/trunk/readme.txt

    r413686 r428720  
    4343* French: Yann Dubois 
    4444* Italian: Giancarlo Cuzzolin ( [Uajika](http://uajika.tk/ "Uajika - The social network") ) 
     45* Russian: Diogen Platonovitch ( http://platonovich.ru/ ) 
    4546 
    4647All those translations are provided in the distribution. The plugin is fully internationalized and can easily be translated into any other language. 
     
    7879== Revisions == 
    7980 
     81* 2.0.0. Production release / new features / bugfix of 2011/08/25 
    8082* 1.1.0. Production release / bugfix of 2011/07/22 
    8183* 1.0.0. Production release of 2011/07/18 
     
    8587== Changelog == 
    8688 
     89= 2.0.0 = 
     90* Russian language translation kindly provided by Diogen Platonovitch ( http://platonovich.ru/ ) 
     91* Feature: added user nickname and RSS title information 
     92* Feature: limit to the amount of aggregated feeds a user can add 
     93* Feature: group feeds 
     94* Feature: links can be opened in another window 
     95* Bugfix: "view" button next to the title 
    8796= 1.1.0 = 
    8897* Bugfix : feeds without author (thanks to Guillaume Dott @ Selliance.com ) 
     
    102111== Upgrade Notice == 
    103112 
     113= 2.0.0 = 
     114* No specifics. Automatic upgrade works fine. 
    104115= 1.1.0 = 
    105116* No specifics. Automatic upgrade works fine. 
  • yd-buddypress-feed-syndication/trunk/yd-buddypress-feed-syndication.php

    r413686 r428720  
    33 * @package YD_BuddyPress-feed-syndication 
    44 * @author Yann Dubois 
    5  * @version 1.1.0 
     5 * @version 2.0.0 
    66 */ 
    77 
     
    1010 Plugin URI: http://www.yann.com/ 
    1111 Description: Syndicate and aggregate any RSS feeds into your BuddyPress activity feed/wall (like with Facebook). 
    12  Version: 1.1.0 
     12 Version: 2.0.0 
    1313 Author: Yann Dubois 
    1414 Author URI: http://www.yann.com/ 
     
    3737 
    3838/** 
     39 Revision 2.0.0: 
     40 - Production release of 2011/08/25 
     41 - Russian language translation kindly provided by Diogen Platonovitch ( http://platonovich.ru/ ) 
     42 - Feature: added user nickname and RSS title information 
     43 - Feature: limit to the amount of aggregated feeds a user can add 
     44 - Feature: group feeds 
     45 - Feature: links can be opened in another window 
     46 - Bugfix: "view" button next to the title 
    3947 Revision 1.1.0: 
    4048 - Production release of 2011/07/22 
    41  - Bugfix : feeds without author (thanks to Guillaume Dott @ Selliance.com ) 
    42  - Bugfix : SimplePie default cache lifetime (thanks to Guillaume Dott @ Selliance.com ) 
     49 - Bugfix: feeds without author (thanks to Guillaume Dott @ Selliance.com ) 
     50 - Bugfix: SimplePie default cache lifetime (thanks to Guillaume Dott @ Selliance.com ) 
    4351 - Features: added buttons to force feed reloads in the option page 
    4452 Revision 1.0.0: 
    4553 - Production release of 2011/07/18 
    46  - Italian language version provided by Czz (Giancarlo Cuzzolin @ Uajika.tk) 
     54 - Italian language translation kindly provided by Czz (Giancarlo Cuzzolin @ Uajika.tk) 
    4755 Revision 0.2.0: 
    4856 - Original beta release 02 
     
    7987    array( 
    8088        'name'              => 'YD BuddyPress Feed Syndication', 
    81         'version'           => '1.1.0', 
     89        'version'           => '2.0.0', 
    8290        'has_option_page'   => true, 
    8391        'option_page_title' => 'YD Feed Syndication', 
     
    101109        'translations'      => array( 
    102110            array( 'English', 'Yann Dubois', 'http://www.yann.com/' ), 
    103         ),       
     111            array( 'French', 'Yann Dubois', 'http://www.yann.com/' ), 
     112            array( 'Italian', 'Czz', 'Uajika.tk' ), 
     113            array( 'Russian', 'Diogen Platonovich', 'http://platonovich.ru/' ) 
     114        ), 
    104115        'initial_funding'   => array( 'Selliance', 'http://www.selliance.com' ), 
    105116        'additional_funding'=> array(), 
    106117        'form_blocks'       => array( 
    107118            'Main options' => array(  
    108                 //'autotrack'   => 'bool', 
    109                 //'autoattr'    => 'text', 
     119                'limit' => 'text', 
     120                'open_out'  => 'bool', 
    110121                //'autopage'    => 'bool' 
    111122            ) 
    112123        ), 
    113124        'option_field_labels'=>array( 
    114                 //'autotrack'   => 'Blah', 
    115                 //'autoattr'    => 'Bleeh', 
     125                'limit' => 'Limit number of feeds to aggregate to a maximum of:', 
     126                'open_out'  => 'Open feed links in new window.', 
    116127                //'autopage'    => 'Blooh' 
    117128        ), 
    118129        'option_defaults'   => array( 
    119                 //'autotrack'   => true, 
    120                 //'autoattr'    => '', 
     130                'limit' => 5, 
     131                'open_out'  => 1, 
    121132                //'autopage'    => true 
    122133        ), 
Note: See TracChangeset for help on using the changeset viewer.