WordPress.org

Plugin Directory

Changeset 428689


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

branching to 2.0

Location:
yd-buddypress-feed-syndication/branches/2.0.1
Files:
15 copied

Legend:

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

    r413686 r428689  
    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( '/Afficher/i', "Truc", $html ); 
     37            //echo 'html: ' . $html . '<br/>'; 
     38            //exit(0); 
     39        } 
     40        return $html; 
     41    } 
     42     
     43    /* 
     44    function activity_action_filter( $html ) { 
     45        if( 'new_blog_post' == bp_get_activity_type() ) { 
     46            global $activities_template; 
     47            if( 'imported_blog' == $activities_template->activity->component ) { 
     48                $dn = $activities_template->activity->display_name; 
     49                $user_feed_id = $activities_template->activity->item_id; 
     50                if( !empty( $user_feed_id ) ) { 
     51                    $syndications_title = get_user_meta( (int)$activities_template->activity->user_id, 'yd_syndications_title', true ); 
     52                    if( isset( $syndications_title[$user_feed_id] ) ) { 
     53                        $t = $syndications_title[$user_feed_id]; 
     54                    } else { 
     55                        $t = ''; 
     56                    } 
     57                } else { 
     58                    $t = ''; 
     59                } 
     60                $html = $activities_template->activity->action . $html; 
     61                if( $t ) { 
     62                    $html = preg_replace(  
     63                        '/New blog post:/',  
     64                        sprintf(__( 'New blog post imported from &laquo;%1$s&raquo; by %2$s: ', 'ydbfs' ),$t,$dn), 
     65                        $html 
     66                    ); 
     67                } else { 
     68                    $html = preg_replace(  
     69                        '/New blog post:/',  
     70                        sprintf(__( 'New blog post imported by %1$s: ', 'ydbfs' ),$dn), 
     71                        $html 
     72                    ); 
     73                } 
     74            } 
     75        } 
     76        return $html; 
     77    } 
     78    */ 
     79     
    2380    // =======================================  ADMIN SCREEN  =================================== 
    2481     
     
    45102    } 
    46103     
    47     function screen_syndication_settings() { 
     104    function screen_syndication_settings( $group = false ) { 
    48105        global $current_user, $bp_settings_updated; 
    49106     
     
    71128                        $syndications_refresh[$key] = $_POST['refresh'][$key]; 
    72129                    } 
     130                    if( isset( $_POST['titles'][$key] ) && !empty( $_POST['titles'][$key] ) ) { 
     131                        $syndications_title[$key] = $_POST['titles'][$key]; 
     132                    } 
    73133                } 
    74134                 
     
    76136                update_user_meta( (int)$current_user->id, 'yd_syndications_status', $syndications_status ); 
    77137                update_user_meta( (int)$current_user->id, 'yd_syndications_refresh', $syndications_refresh ); 
     138                update_user_meta( (int)$current_user->id, 'yd_syndications_title', $syndications_title ); 
    78139                //foreach ( (array)$_POST['syndications'] as $key => $value ) { 
    79140                //  update_user_meta( (int)$current_user->id, $key, $value ); 
     
    115176    } 
    116177     
    117     function screen_syndication_settings_content() { 
    118         global $bp, $current_user, $bp_settings_updated; ?> 
     178    function screen_syndication_settings_content( $group = false ) { 
     179        global $bp, $current_user, $bp_settings_updated; 
     180        $options = get_option( $this->option_key ); 
     181        if( $group ) { 
     182            $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
     183            $syndications_status = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_status', true ); 
     184            $syndications_refresh = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', true ); 
     185            $syndications_title = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_title', true ); 
     186        } else { 
     187            $syndications = get_user_meta( (int)$current_user->id, 'yd_syndications', true ); 
     188            $syndications_status = get_user_meta( (int)$current_user->id, 'yd_syndications_status', true ); 
     189            $syndications_refresh = get_user_meta( (int)$current_user->id, 'yd_syndications_refresh', true ); 
     190            $syndications_title = get_user_meta( (int)$current_user->id, 'yd_syndications_title', true ); 
     191        } 
     192        echo 'group a: ' . $group . '<br/>'; 
     193        echo 'ok: ' . $this->option_key . '<br/>'; 
     194        ?> 
    119195 
    120196        <?php if ( $bp_settings_updated ) { ?> 
     
    144220        </style> 
    145221        <table class="ydbfs" id="feed_agregation_table"> 
     222        <tr> 
     223        <th><?php echo __( 'Feed address', $this->tdomain ) ?></th> 
     224        <th><?php echo __( 'Feed title', $this->tdomain ) ?></th> 
     225        <th><?php echo __( 'Feed refresh', $this->tdomain ) ?></th> 
     226        <th><?php echo __( 'Unsubscribe', $this->tdomain ) ?></th> 
     227        </tr> 
    146228        <?php  
    147229         
    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 ); 
     230        $count = 0; 
    151231        foreach( (array)$syndications as $key => $syndication ) { 
     232            $count ++; 
    152233            if( $syndications_status[$key] == 'ok' ) { 
    153234                $color = '#9f9'; 
     
    161242            echo '<span class="highlight ydbfs" style="background-color:' . $color . ';"><a href="' . $syndication . '" target="_rss" title="' . $title . '">' . $syndication . '</a></span>'; 
    162243             
     244            echo '</td>'; 
     245            echo '<td>' . $syndications_title[$key] . '</td>'; 
     246             
     247            echo 'group b: ' . $group . '<br/>'; 
    163248            // 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 ); 
     249            $this->refresh_delay_menu( $syndication, $syndications_refresh[$key], $group ); 
     250             
     251            if( $group ) { 
     252                $delete_url = '?delete=' . urlencode( (string)$syndication ); 
     253            } else { 
     254                $delete_url = $bp->loggedin_user->domain . BP_SETTINGS_SLUG . '/rss_syndication' 
     255                    . '?delete=' . urlencode( (string)$syndication ); 
     256            } 
    168257            echo '</td><td><a class="trash ydbfs" title="' . __( 'Delete feed', $this->tdomain ) . '" href="' . wp_nonce_url( $delete_url, 'bp_settings_syndication' ) . '">X</a>'; 
    169258            echo '</tr>'; 
    170259            echo '<input type="hidden" name="syndications[]" value="' . $syndication . '"/>'; 
    171         } 
    172          
     260            echo '<input type="hidden" name="titles[]" value="' . $syndications_title[$key] . '"/>'; 
     261        } 
    173262        ?> 
    174263         
    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> 
     264        <?php if( $count < $options['limit'] ) : ?> 
     265            <tr> 
     266            <td> 
     267             <label for="add_syndication"><?php _e( 'New RSS feed address to syndicate:', $this->tdomain ) ?></label><br/> 
     268             <label for="add_title"><?php _e( 'Feed title:', $this->tdomain ) ?></label> 
     269            </td> 
     270            <td> 
     271              <input type="text" name="syndications[]" id="add_syndication" size="50" class="ydbfs" /><br/> 
     272              <input type="text" name="titles[]" id="add_title" size="50" class="ydbfs" /> 
     273            </td> 
     274             
     275            <?php $this->refresh_delay_menu( '', '', $group ); ?> 
     276     
     277            <td> 
     278            <div class="submit"> 
     279                <input type="submit" name="submit" value="<?php _e( 'Add feed', $this->tdomain ) ?>" id="submit" class="auto ydbfs" /> 
     280            </div> 
     281            </td> 
     282            </tr> 
     283        <?php endif; ?> 
     284         
    187285        </table> 
    188286         
     
    193291    } 
    194292     
    195     function refresh_delay_menu( $syndication = '', $refresh = 0 ) { 
     293    function refresh_delay_menu( $syndication = '', $refresh = 0, $group = false ) { 
    196294        global $bp; 
     295        echo 'group c: ' . $group . '<br/>'; 
    197296        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='; 
     297            if( !$group ) { 
     298                $update_url = wp_nonce_url(  
     299                    $bp->loggedin_user->domain . BP_SETTINGS_SLUG . '/rss_syndication' 
     300                    . '?update=' . urlencode( (string)$syndication ),  
     301                    'bp_settings_syndication'  
     302                ) . '&refresh='; 
     303            } else { 
     304                $url = bp_get_group_permalink() 
     305                    . 'admin/group-feed-syndication' 
     306                    . '?update=' . urlencode( (string)$syndication ); 
     307                $update_url = wp_nonce_url( $url,  
     308                    'bp_settings_syndication' ) . '&refresh='; 
     309            } 
    203310            $onchange = 'onChange="document.location=\'' . $update_url  
    204311                . '\'+this.options[this.selectedIndex].value;"'; 
     
    206313            $onchange = ''; 
    207314        } 
     315        echo 'group: ' . $group . '<br/>'; 
     316        echo 'url: ' . $url . '<br/>'; 
    208317        echo '<td>'; 
    209318        echo __( 'Refresh every:', $this->tdomain ); 
     
    245354            $syndications_refresh = get_user_meta( (int)$user, 'yd_syndications_refresh', true ); 
    246355            $syndications_updated = get_user_meta( (int)$user, 'yd_syndications_updated', true ); 
     356            $syndications_title = get_user_meta( (int)$user, 'yd_syndications_title', true ); 
    247357            foreach( (array) $syndications as $key => $syndication ) { 
    248358                if( ( !$nok && $syndications_status[$key] == 'ok' ) || ( $nok && $syndications_status[$key] == 'nok' ) ) { 
     
    256366                        'user_id' => $user, 
    257367                        'user_feed_id' => $key, 
    258                         'feed_url' => $syndication 
     368                        'feed_url' => $syndication, 
     369                        'feed_title' => $syndications_title[$key] 
    259370                    ); 
    260371                } 
     
    268379     */ 
    269380    function syndicate( $nok = false, $force = false ) { 
     381        $options = get_option( 'yd-buddypress-feed-syndication' ); //statically called :-s 
    270382        $feeds = self::get_feed_list( $nok, $force ); 
    271383        //var_dump( $feeds );   //debug 
     
    302414                $items[$key]['feed_id'] = $feed_id; 
    303415                $items[$key]['user_id'] = $feed['user_id']; 
     416                $items[$key]['user_feed_id'] = $feed['user_feed_id']; 
     417                $items[$key]['feed_title'] = $feed['feed_title']; 
    304418     
    305419                $items[$key]['link'] = $rss_item->get_link(); 
     
    332446                $feed_id = $post['feed_id']; 
    333447                $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>'; 
     448                if( isset( $options['open_out'] ) && $options['open_out'] ) { 
     449                    $target = ' target="_blank" '; 
     450                } else { 
     451                    $target = ''; 
     452                } 
     453                $item_link = '<a href="' . $post['link'] . '" ' . $target . '>' . $post['title'] . '</a>'; 
    335454                //$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 ); 
     455                //$activity_action = sprintf( __( 'New blog post: %s', 'ydbfs' ), $item_link ); 
     456                 
     457                $t = $post['feed_title']; 
     458                $dn = bp_core_get_user_displayname( $post['author'] ); 
     459                $activity_action = sprintf(__( 'New blog post imported from &laquo;%1$s&raquo; by %2$s: %3s', 'ydbfs' ), $t, $dn, $item_link ); 
     460                 
    337461                //echo $item_link . '<br/>'; //debug 
    338462                 
     
    351475                    'recorded_time' => gmdate( "Y-m-d H:i:s", $post_date ), 
    352476                    'hide_sitewide' => false, 
    353                     'content' => $post['description'] 
     477                    'content' => $post['description'], 
     478                    'item_id' => $post['user_feed_id'] 
    354479                ); 
    355480                bp_activity_add( $activity_data ); 
     
    410535         
    411536        self::syndicate( $nok, $force ); 
     537        groupFeedSyndication::syndicate( $nok, $force ); 
    412538        //$op->error_msg .= 'Great.'; 
    413539        $op->update_msg .= 'Feeds syndication updated.'; 
     
    451577    } 
    452578} 
     579 
     580 
     581// =======================================  GROUP FEATURES ================================== 
     582 
     583// This is inspired by the external-group-blogs BP plugin 
     584     
     585/* Group blog extension using the BuddyPress group extension API */ 
     586class groupFeedSyndication extends BP_Group_Extension { 
     587     
     588    public $option_key = 'yd-buddypress-feed-syndication'; 
     589    public $AVAILABLE_DELAYS = array( 
     590        '3 hours' => 10800, 
     591        '6 hours' => 21600, 
     592        '12 hours' => 43200 
     593    ); 
     594     
     595    function groupFeedSyndication() { 
     596        global $bp; 
     597 
     598        $this->name = __( 'Import blogs', 'bp-group-feed-syndication' ); 
     599        $this->slug = 'group-feed-syndication'; 
     600 
     601        $this->create_step_position = 21; 
     602        $this->enable_nav_item = false; 
     603    } 
     604     
     605    function create_screen() { 
     606        echo 'create screen<br/>'; 
     607    } 
     608     
     609    function create_screen_save() { 
     610        echo 'create screen save<br/>'; 
     611    } 
     612     
     613    function edit_screen() { 
     614        echo 'edit screen<br/>'; 
     615        ydbfsPlugin::screen_syndication_settings_content( $group = true ); 
     616    } 
     617     
     618    function edit_screen_save() { 
     619        error_log( 'YD::Debug: edit_screen_save' );      
     620        //ydbfsPlugin::screen_syndication_settings( $group = true ); 
     621 
     622        global $bp, $current_user, $bp_settings_updated; 
     623     
     624        $bp_settings_updated = false; 
     625     
     626        if ( $_POST['submit'] ) { 
     627            check_admin_referer('bp_settings_syndication'); 
     628     
     629            if ( $syndications = $_POST['syndications'] ) { 
     630                foreach( (array)$syndications as $key => $syndication ) { 
     631                    if( !$syndication || empty( $syndication ) || $syndication == '' ) { 
     632                        unset( $syndications[$key] ); 
     633                        continue; 
     634                    } 
     635                    if( !preg_match( '|^http://|', $syndication ) ) 
     636                        $syndication = $syndications[$key] = 'http://' . $syndication; 
     637                    include_once( ABSPATH . 'wp-includes/rss.php' ); 
     638                    $rss = fetch_feed( $syndication ); 
     639                    if( is_wp_error( $rss ) ) { 
     640                        $syndications_status[$key] = 'nok'; 
     641                    } else { 
     642                        $syndications_status[$key] = 'ok'; 
     643                    } 
     644                    if( isset( $_POST['refresh'][$key] ) && !empty( $_POST['refresh'][$key] ) && is_numeric( $_POST['refresh'][$key] ) ) { 
     645                        $syndications_refresh[$key] = $_POST['refresh'][$key]; 
     646                    } 
     647                    if( isset( $_POST['titles'][$key] ) && !empty( $_POST['titles'][$key] ) ) { 
     648                        $syndications_title[$key] = $_POST['titles'][$key]; 
     649                    } 
     650                } 
     651                 
     652                groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', $syndications ); 
     653                groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_status', $syndications_status ); 
     654                groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', $syndications_refresh ); 
     655                groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_title', $syndications_title ); 
     656                //foreach ( (array)$_POST['syndications'] as $key => $value ) { 
     657                //  update_user_meta( (int)$current_user->id, $key, $value ); 
     658                //} 
     659            } 
     660     
     661            $bp_settings_updated = true; 
     662        } 
     663        if ( $_GET['delete'] ) { 
     664            check_admin_referer('bp_settings_syndication'); 
     665             
     666            $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
     667            foreach( (array)$syndications as $key => $syndication ) { 
     668                if( $syndication == $_GET['delete'] )  
     669                    unset( $syndications[$key] );  
     670            } 
     671            groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', $syndications ); 
     672        } 
     673        if ( $_GET['update'] && $_GET['refresh'] ) { 
     674            check_admin_referer('bp_settings_syndication'); 
     675             
     676            $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
     677            $syndications_refresh = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', true ); 
     678            foreach( (array)$syndications as $key => $syndication ) { 
     679                if( $syndication == $_GET['update'] )  
     680                    $syndications_refresh[$key] = $_GET['refresh'];  
     681            } 
     682            groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', $syndications_refresh ); 
     683        } 
     684         
     685         
     686    } 
     687     
     688    /* We don't need display functions since the group activity stream handles it all. */ 
     689    function display() {} 
     690    function widget_display() {} 
     691     
     692    // custom fonction === 
     693     
     694    function refresh_delay_menu( $syndication = '', $refresh = 0, $group = false ) { 
     695        ydbfsPlugin::refresh_delay_menu( $syndication, $refresh, $group ); 
     696    } 
     697     
     698    // Syndication ======== 
     699     
     700    function get_all_feed_groups() { 
     701        global $wpdb, $bp; 
     702        $gm = $bp->groups->table_name_groupmeta; 
     703        $query = " 
     704            SELECT DISTINCT( group_id ) 
     705            FROM $gm 
     706            WHERE meta_key = 'yd_syndications'; 
     707        "; 
     708        $groups = $wpdb->get_col( $query ); 
     709        return $groups; 
     710    } 
     711     
     712    function get_feed_list( $nok = false, $force = false ) { 
     713        $feeds = array(); 
     714        $group_ids = self::get_all_feed_groups(); 
     715        //if( $force ) echo 'FORCE<br/>';   //debug 
     716        //if( $nok ) echo 'NOK<br/>';   //debug 
     717        foreach( $group_ids as $group_id ) { 
     718            $syndications = groups_get_groupmeta( (int)$group_id, 'yd_syndications', true ); 
     719            $syndications_status = groups_get_groupmeta( (int)$group_id, 'yd_syndications_status', true ); 
     720            $syndications_refresh = groups_get_groupmeta( (int)$group_id, 'yd_syndications_refresh', true ); 
     721            $syndications_updated = groups_get_groupmeta( (int)$group_id, 'yd_syndications_updated', true ); 
     722            $syndications_title = groups_get_groupmeta( (int)$group_id, 'yd_syndications_title', true ); 
     723            foreach( (array) $syndications as $key => $syndication ) { 
     724                if( ( !$nok && $syndications_status[$key] == 'ok' ) || ( $nok && $syndications_status[$key] == 'nok' ) ) { 
     725                    //Only include feeds which are due to be updated according to refresh delay 
     726                    if( isset( $syndications_updated[$key] ) && $syndications_updated[$key] > 0 ) { 
     727                        $delay = time() - $syndications_updated[$key]; 
     728                        if( !$force && $delay < $syndications_refresh[$key] ) 
     729                            continue; 
     730                    } 
     731                    $feeds[] = array( 
     732                        'group_id' => $group_id, 
     733                        'group_feed_id' => $key, 
     734                        'feed_url' => $syndication, 
     735                        'feed_title' => $syndications_title[$key] 
     736                    ); 
     737                } 
     738            } 
     739        } 
     740        return $feeds; 
     741    } 
     742     
     743    function syndicate( $nok = false, $force = false ) { 
     744        global $bp; 
     745        $options = get_option( 'yd-buddypress-feed-syndication' ); //statically called :-s 
     746        $feeds = self::get_feed_list( $nok, $force ); 
     747        //var_dump( $feeds );   //debug 
     748         
     749        foreach ( (array) $feeds as $feed_id => $feed ) { 
     750            $rss = fetch_feed( trim( $feed['feed_url'] ) ); 
     751             
     752            //Mark broken feeds as nok 
     753            if( is_wp_error( $rss ) ) { 
     754                self::mark_error( $feed ); 
     755                continue; 
     756            } 
     757             
     758            //Mark feed as updated 
     759            self::mark_updated( $feed ); 
     760             
     761            /** debug ** 
     762            if( $force ) { 
     763                $cd = $rss->cache_duration; 
     764                echo "cache duration: $cd for " . $feed['feed_url'] . "<br/>"; 
     765            } 
     766            ** /debug **/ 
     767             
     768            $maxitems = $rss->get_item_quantity(); 
     769             
     770            $items = array(); 
     771             
     772            // thanks to bp-external-activity plugin authors for this  
     773            $rss_items = $rss->get_items(0, $maxitems); 
     774            foreach ($rss->get_items(0, $maxitems) as $rss_item ) { 
     775                $date = $rss_item->get_date(); 
     776                $key = strtotime( $date ); 
     777     
     778                $items[$key]['feed_id'] = $feed_id; 
     779                $items[$key]['group_id'] = $feed['group_id']; 
     780                $items[$key]['group_feed_id'] = $feed['group_feed_id']; 
     781                $items[$key]['feed_title'] = $feed['feed_title']; 
     782     
     783                $items[$key]['link'] = $rss_item->get_link(); 
     784                $items[$key]['link'] = preg_replace( '|diff.*prev|', '', $items[$key]['link'] ); 
     785                //echo $items[$key]['link'] . '<br/>'; //debug 
     786     
     787                $items[$key]['title'] = $rss_item->get_title(); 
     788                //$items[$key]['description'] = self::ttruncat( strip_tags( $rss_item->get_description() ), self::DESCRIPTION_MAX_SIZE ); 
     789                $items[$key]['description'] = $rss_item->get_description(); 
     790                 
     791                $author = $rss_item->get_author(); 
     792                $user_id = false; 
     793     
     794                $items[$key]['author'] = $user_id; 
     795            } 
     796             
     797            if ( $items ) { 
     798                ksort($items); 
     799                $items = array_reverse($items, true); 
     800            } else { 
     801                continue; 
     802            } 
     803             
     804            /* Record found items in activity streams */ 
     805            foreach ( (array) $items as $post_date => $post ) { 
     806                $feed_id = $post['feed_id']; 
     807                $author_link = ( $post['author'] ) ? '<a href="' . bp_core_get_user_domain( $post['author'] ) . '">' . bp_core_get_user_displayname( $post['author'] ) . '</a>' :  __( 'Imported', 'ydbfs' ); 
     808                if( isset( $options['open_out'] ) && $options['open_out'] ) { 
     809                    $target = ' target="_blank" '; 
     810                } else { 
     811                    $target = ''; 
     812                } 
     813                $item_link = '<a href="' . $post['link'] . '" ' . $target . '>' . $post['title'] . '</a>'; 
     814                //$activity_action = sprintf( '%s published a new blog post %s', $author_link, $item_link ); 
     815                //$activity_action = sprintf( __( 'New blog post: %s', 'ydbfs' ), $item_link ); 
     816                 
     817                $t = $post['feed_title']; 
     818                 
     819                $activity_action = sprintf(__( 'New blog post imported from &laquo;%1$s&raquo;: %2s', 'ydbfs' ), $t, $item_link ); 
     820                 
     821                //echo $item_link . '<br/>'; //debug 
     822                 
     823                /* Fetch an existing activity_id if one exists. */ 
     824                if ( function_exists( 'bp_activity_get_activity_id' ) ) 
     825                    $id = bp_activity_get_activity_id( array(  
     826                        'user_id' => false,  
     827                        'action' => $activity_action,  
     828                        'component' => 'imported_blog',  
     829                        'type' => 'new_blog_post',  
     830                        'item_id' => $post['group_id'],  
     831                        'secondary_item_id' => wp_hash( $post['link'] ) 
     832                    )  
     833                ); 
     834                 
     835                /* Record or update in activity streams. */ 
     836                $activity_data = array( 
     837                    'id' => $id, 
     838                    'user_id' => false, 
     839                    'component' => 'imported_blog', 
     840                    'action' => $activity_action, 
     841                    'primary_link' => $post['link'], 
     842                    'type' => 'new_blog_post', 
     843                    'recorded_time' => gmdate( "Y-m-d H:i:s", $post_date ), 
     844                    'hide_sitewide' => false, 
     845                    'content' => $post['description'], 
     846                    'item_id' => $post['group_id'], 
     847                    'secondary_item_id' => $post['group_feed_id'] 
     848                ); 
     849                $res = groups_record_activity( $activity_data ); 
     850                var_dump( $activity_data ); // debug 
     851                echo '<br/><br/>'; 
     852                var_dump( $res ); 
     853                echo '<br/><br/>'; // debug 
     854            } 
     855        } 
     856    } 
     857     
     858    function mark_updated( $feed ) { 
     859        $group  = $feed['group_id']; 
     860        $key    = $feed['group_feed_id']; 
     861        $syndications_updated = groups_get_groupmeta( (int)$group, 'yd_syndications_updated', true ); 
     862        $syndications_updated[$key] = time(); 
     863        groups_update_groupmeta( (int)$group, 'yd_syndications_updated', $syndications_updated ); 
     864    } 
     865     
     866    function mark_error( $feed ) { 
     867        $group  = $feed['group_id']; 
     868        $key    = $feed['group_feed_id']; 
     869        $syndications_status = groups_get_groupmeta( (int)$group, 'yd_syndications_status', true ); 
     870        $syndications_status[$key] = 'nok'; 
     871        groups_update_groupmeta( (int)$group, 'yd_syndications_status', $syndications_status ); 
     872    } 
     873} 
     874 
     875 
    453876?> 
  • yd-buddypress-feed-syndication/branches/2.0.1/yd-buddypress-feed-syndication.php

    r413686 r428689  
    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 now works 
    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.