WordPress.org

Plugin Directory

Changeset 429501


Ignore:
Timestamp:
08/27/11 17:25:20 (3 years ago)
Author:
ydubois
Message:

Branching for beta tests of 2.1.0

Location:
yd-buddypress-feed-syndication/branches/2.1.0
Files:
17 copied

Legend:

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

    r428914 r429501  
    22class ydbfsPlugin extends YD_Plugin { 
    33     
    4     const DESCRIPTION_MAX_SIZE = 300; 
    5     const RSS_CACHE_LIFETIME = 10800;       // SimplePie rss feed cache = 60 * 60 * 3 seconds 
    6     private $AVAILABLE_DELAYS = array( 
    7         '3 hours' => 10800, 
    8         '6 hours' => 21600, 
    9         '12 hours' => 43200 
     4    const DESCRIPTION_MAX_SIZE  = 300; 
     5    const RSS_CACHE_LIFETIME    = 10800;        // SimplePie rss feed cache = 60 * 60 * 3 seconds 
     6    private $AVAILABLE_DELAYS   = array( 
     7        '3 hours'   => 10800, 
     8        '6 hours'   => 21600, 
     9        '12 hours'  => 43200 
    1010    ); 
    1111     
     
    2424        } 
    2525         
    26         //add_filter( 'bp_activity_permalink', array( &$this, 'add_target' ), 10000 ); 
    27         //add_filter( 'bp_insert_activity_meta', array( &$this, 'add_target' ), 10000 ); 
    2826        add_filter( 'bp_get_activity_action', array( &$this, 'add_target' ), 10000 ); 
    29         //add_filter( 'bp_get_activity_action', array( &$this, 'activity_action_filter' ) ); 
    3027    } 
    3128     
     
    3936        $options = get_option( $this->option_key ); 
    4037        if( isset( $options['open_out'] ) && $options['open_out'] ) { 
    41             //$html = preg_replace( '/(<a\s+[^>]+class="view")/i', "\\1 target=\"_blank\"", $html ); 
    4238            $html = preg_replace( '/<(a\s+[^>]+)>/i', "<\\1 target=\"_blank\">", $html ); 
    43             //$html = preg_replace( '/Afficher/i', "Truc", $html ); 
    44             //echo 'html: ' . $html . '<br/>'; 
    45             //exit(0); 
    4639        } 
    4740        return $html; 
    4841    } 
    49      
    50     /* 
    51     function activity_action_filter( $html ) { 
    52         if( 'new_blog_post' == bp_get_activity_type() ) { 
    53             global $activities_template; 
    54             if( 'imported_blog' == $activities_template->activity->component ) { 
    55                 $dn = $activities_template->activity->display_name; 
    56                 $user_feed_id = $activities_template->activity->item_id; 
    57                 if( !empty( $user_feed_id ) ) { 
    58                     $syndications_title = get_user_meta( (int)$activities_template->activity->user_id, 'yd_syndications_title', true ); 
    59                     if( isset( $syndications_title[$user_feed_id] ) ) { 
    60                         $t = $syndications_title[$user_feed_id]; 
    61                     } else { 
    62                         $t = ''; 
    63                     } 
    64                 } else { 
    65                     $t = ''; 
    66                 } 
    67                 $html = $activities_template->activity->action . $html; 
    68                 if( $t ) { 
    69                     $html = preg_replace(  
    70                         '/New blog post:/',  
    71                         sprintf(__( 'New blog post imported from &laquo;%1$s&raquo; by %2$s: ', 'ydbfs' ),$t,$dn), 
    72                         $html 
    73                     ); 
    74                 } else { 
    75                     $html = preg_replace(  
    76                         '/New blog post:/',  
    77                         sprintf(__( 'New blog post imported by %1$s: ', 'ydbfs' ),$dn), 
    78                         $html 
    79                     ); 
    80                 } 
    81             } 
    82         } 
    83         return $html; 
    84     } 
    85     */ 
    86      
     42         
    8743    // =======================================  ADMIN SCREEN  =================================== 
    8844     
     
    10460     
    10561    /* thanks to Guillaume Dott @ Selliance.com for pointing me to this */ 
    106     function set_transient_lifetime( $lifetime, $url = '' ) { 
    107          
     62    function set_transient_lifetime( $lifetime, $url = '' ) {    
    10863        return self::RSS_CACHE_LIFETIME; 
    10964    } 
     
    14499                update_user_meta( (int)$current_user->id, 'yd_syndications_refresh', $syndications_refresh ); 
    145100                update_user_meta( (int)$current_user->id, 'yd_syndications_title', $syndications_title ); 
    146                 //foreach ( (array)$_POST['syndications'] as $key => $value ) { 
    147                 //  update_user_meta( (int)$current_user->id, $key, $value ); 
    148                 //} 
    149101            } 
    150102     
     
    187139        $options = get_option( $this->option_key ); 
    188140        if( $group ) { 
    189             $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
    190             $syndications_status = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_status', true ); 
    191             $syndications_refresh = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', true ); 
    192             $syndications_title = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_title', true ); 
     141            $syndications           = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
     142            $syndications_status    = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_status', true ); 
     143            $syndications_refresh   = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', true ); 
     144            $syndications_title     = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_title', true ); 
    193145        } else { 
    194             $syndications = get_user_meta( (int)$current_user->id, 'yd_syndications', true ); 
    195             $syndications_status = get_user_meta( (int)$current_user->id, 'yd_syndications_status', true ); 
    196             $syndications_refresh = get_user_meta( (int)$current_user->id, 'yd_syndications_refresh', true ); 
    197             $syndications_title = get_user_meta( (int)$current_user->id, 'yd_syndications_title', true ); 
    198         } 
    199         //echo 'group a: ' . $group . '<br/>'; //Debug 
    200         //echo 'ok: ' . $this->option_key . '<br/>'; //Debug 
     146            $syndications           = get_user_meta( (int)$current_user->id, 'yd_syndications', true ); 
     147            $syndications_status    = get_user_meta( (int)$current_user->id, 'yd_syndications_status', true ); 
     148            $syndications_refresh   = get_user_meta( (int)$current_user->id, 'yd_syndications_refresh', true ); 
     149            $syndications_title     = get_user_meta( (int)$current_user->id, 'yd_syndications_title', true ); 
     150        } 
    201151        ?> 
    202152 
    203153        <?php if ( $bp_settings_updated ) { ?> 
    204154            <div id="message" class="updated fade"> 
    205                 <p><?php _e( 'Changes Saved.', 'buddypress' ) ?></p> 
     155                <p><?php _e( 'Changes Saved.', $this->tdomain ) ?></p> 
    206156            </div> 
    207157        <?php } ?> 
    208158         
    209         <form action="<?php echo $bp->loggedin_user->domain . BP_SETTINGS_SLUG . '/rss_syndication' ?>" method="post" id="settings-form"> 
     159        <form action="<?php echo $bp->loggedin_user->domain . BP_SETTINGS_SLUG . '/rss_syndication' ?>" method="post" id="settings-form" class="standard-form"> 
    210160        <h3><?php _e( 'RSS feed syndication and aggregation', $this->tdomain ) ?></h3> 
    211161 
    212162        <p><?php _e( 'Enter full URL of blog or site feeds to import into your activity page.', $this->tdomain ) ?></p> 
    213         <p><?php _e( 'You can specify multiple RSS feeds that will be mixed.', $this->tdomain ) ?></p> 
     163         
     164        <?php if( ($group && $options['group_limit']>1) || (!$group && $options['limit']>1 ) ) : ?> 
     165            <p><?php _e( 'You can specify multiple RSS feeds that will be mixed.', $this->tdomain ) ?></p> 
     166        <?php endif; ?> 
     167         
    214168        <style> 
    215169        a.trash { 
     
    225179            margin: 2px; 
    226180        } 
     181        .ydbfs td { 
     182            overflow:hidden; 
     183            word-wrap:break-word; 
     184            max-width:200px; 
     185            vertical-align: top; 
     186        } <?php /* You can use the tr class to override this */ ?> 
     187        .ydbfs tr { 
     188            border-bottom:1px dotted #ccc; 
     189        } <?php /* You can use the tr class to override this */ ?> 
     190        .ydbfs tr.new { 
     191            border: none; 
     192        } 
    227193        </style> 
    228194        <table class="ydbfs" id="feed_agregation_table"> 
     
    236202         
    237203        $count = 0; 
    238         foreach( (array)$syndications as $key => $syndication ) { 
    239             $count ++; 
    240             if( $syndications_status[$key] == 'ok' ) { 
    241                 $color = '#9f9'; 
    242                 $title = __( 'Feed validated', $this->tdomain ); 
    243             } else { 
    244                 $color = '#f99'; 
    245                 $title = __( 'Error: feed could not be fetched at that address', $this->tdomain ); 
    246             } 
    247             echo '<tr style="border-bottom:1px dotted #ccc"><td>'; 
    248             //echo ' ' . $key . ' '; 
    249             echo '<span class="highlight ydbfs" style="background-color:' . $color . ';"><a href="' . $syndication . '" target="_rss" title="' . $title . '">' . $syndication . '</a></span>'; 
    250              
    251             echo '</td>'; 
    252             echo '<td>' . $syndications_title[$key] . '</td>'; 
    253              
    254             //echo 'group b: ' . $group . '<br/>';  //Debug 
    255             // Specify refresh delay for this feed  
    256             $this->refresh_delay_menu( $syndication, $syndications_refresh[$key], $group ); 
    257              
    258             if( $group ) { 
    259                 $delete_url = '?delete=' . urlencode( (string)$syndication ); 
    260             } else { 
    261                 $delete_url = $bp->loggedin_user->domain . BP_SETTINGS_SLUG . '/rss_syndication' 
    262                     . '?delete=' . urlencode( (string)$syndication ); 
    263             } 
    264             echo '</td><td><a class="trash ydbfs" title="' . __( 'Delete feed', $this->tdomain ) . '" href="' . wp_nonce_url( $delete_url, 'bp_settings_syndication' ) . '">X</a>'; 
    265             echo '</tr>'; 
    266             echo '<input type="hidden" name="syndications[]" value="' . $syndication . '"/>'; 
    267             echo '<input type="hidden" name="titles[]" value="' . $syndications_title[$key] . '"/>'; 
     204        if( !empty( $syndications ) ) { 
     205            foreach( (array)$syndications as $key => $syndication ) { 
     206                $count ++; 
     207                if( $syndications_status[$key] == 'ok' ) { 
     208                    $color = '#9f9'; 
     209                    $title = __( 'Feed validated', $this->tdomain ); 
     210                } else { 
     211                    $color = '#f99'; 
     212                    $title = __( 'Error: feed could not be fetched at that address', $this->tdomain ); 
     213                } 
     214                echo '<tr class="ydbfs"><td>'; 
     215     
     216                echo '<span class="highlight ydbfs" style="background-color:' . $color . ';"><a href="' . $syndication . '" target="_rss" title="' . $title . '">' . $syndication . '</a></span>'; 
     217                 
     218                echo '</td>'; 
     219                echo '<td>' . $syndications_title[$key] . '</td>'; 
     220                 
     221                $this->refresh_delay_menu( $syndication, $syndications_refresh[$key], $group ); 
     222                 
     223                if( $group ) { 
     224                    $delete_url = '?delete=' . urlencode( (string)$syndication ); 
     225                } else { 
     226                    $delete_url = $bp->loggedin_user->domain . BP_SETTINGS_SLUG . '/rss_syndication' 
     227                        . '?delete=' . urlencode( (string)$syndication ); 
     228                } 
     229                echo '</td><td><a class="trash ydbfs" title="' . __( 'Delete feed', $this->tdomain ) . '" href="' . wp_nonce_url( $delete_url, 'bp_settings_syndication' ) . '">X</a>'; 
     230                echo '</tr>'; 
     231                echo '<input type="hidden" name="syndications[]" value="' . $syndication . '"/>'; 
     232                echo '<input type="hidden" name="titles[]" value="' . $syndications_title[$key] . '"/>'; 
     233            } 
    268234        } 
    269235        ?> 
    270236         
    271         <?php if( $count < $options['limit'] ) : ?> 
    272             <tr> 
    273             <td> 
    274              <label for="add_syndication"><?php _e( 'New RSS feed address to syndicate:', $this->tdomain ) ?></label><br/> 
    275              <label for="add_title"><?php _e( 'Feed title:', $this->tdomain ) ?></label> 
    276             </td> 
    277             <td> 
    278               <input type="text" name="syndications[]" id="add_syndication" size="50" class="ydbfs" /><br/> 
     237        <?php if( ($group && $count < $options['group_limit']) || (!$group && $count < $options['limit'] ) ) : ?> 
     238            <tr class="ydbfs new first"> 
     239             <td> 
     240              <label for="add_syndication"><?php _e( 'New RSS feed address to syndicate:', $this->tdomain ) ?></label> 
     241             </td> 
     242             <td> 
     243              <input type="text" name="syndications[]" id="add_syndication" size="50" class="ydbfs" /> 
     244             </td> 
     245             <?php $this->refresh_delay_menu( '', '', $group ); ?> 
     246             <td rowspan="2"> 
     247              <div class="submit"> 
     248               <input type="submit" name="submit" value="<?php _e( 'Add feed', $this->tdomain ) ?>" id="submit" class="auto ydbfs" /> 
     249              </div> 
     250             </td> 
     251            </tr> 
     252            <tr class="ydbfs new second"> 
     253             <td> 
     254              <label for="add_title"><?php _e( 'Feed title:', $this->tdomain ) ?></label> 
     255             </td> 
     256             <td> 
    279257              <input type="text" name="titles[]" id="add_title" size="50" class="ydbfs" /> 
    280             </td> 
    281              
    282             <?php $this->refresh_delay_menu( '', '', $group ); ?> 
    283      
    284             <td> 
    285             <div class="submit"> 
    286                 <input type="submit" name="submit" value="<?php _e( 'Add feed', $this->tdomain ) ?>" id="submit" class="auto ydbfs" /> 
    287             </div> 
    288             </td> 
     258             </td> 
     259             <td>&nbsp;</td> 
    289260            </tr> 
    290261        <?php endif; ?> 
     
    300271    function refresh_delay_menu( $syndication = '', $refresh = 0, $group = false ) { 
    301272        global $bp; 
    302         //echo 'group c: ' . $group . '<br/>';  //Debug 
     273 
    303274        if( !empty( $syndication ) ) { 
    304275            if( !$group ) { 
     
    320291            $onchange = ''; 
    321292        } 
    322         //echo 'group: ' . $group . '<br/>'; //Debug 
    323         //echo 'url: ' . $url . '<br/>'; //Debug 
     293 
    324294        echo '<td>'; 
    325295        echo __( 'Refresh every:', $this->tdomain ); 
    326         echo '<select name="refresh[]" ' . $onchange . '>'; 
     296        echo ' <select name="refresh[]" ' . $onchange . '>'; 
    327297        foreach( (array)$this->AVAILABLE_DELAYS as $opt => $val ) { 
    328298            echo '<option value="' . $val . '" '; 
     
    337307    // ======================================  SYNDICATION  =================================== 
    338308     
    339     /** 
    340      * select all users that have syndication feed data (parse all user metas) 
    341      */ 
     309    /** Select all users that have syndication feed data (parse all user metas) **/ 
    342310    function get_all_feed_users() { 
    343311        global $wpdb; 
     
    354322        $feeds = array(); 
    355323        $users = self::get_all_feed_users(); 
    356         //if( $force ) echo 'FORCE<br/>';   //debug 
    357         //if( $nok ) echo 'NOK<br/>';   //debug 
     324 
    358325        foreach( $users as $user ) { 
    359             $syndications = get_user_meta( (int)$user, 'yd_syndications', true ); 
    360             $syndications_status = get_user_meta( (int)$user, 'yd_syndications_status', true ); 
    361             $syndications_refresh = get_user_meta( (int)$user, 'yd_syndications_refresh', true ); 
    362             $syndications_updated = get_user_meta( (int)$user, 'yd_syndications_updated', true ); 
    363             $syndications_title = get_user_meta( (int)$user, 'yd_syndications_title', true ); 
     326            $syndications           = get_user_meta( (int)$user, 'yd_syndications', true ); 
     327            $syndications_status    = get_user_meta( (int)$user, 'yd_syndications_status', true ); 
     328            $syndications_refresh   = get_user_meta( (int)$user, 'yd_syndications_refresh', true ); 
     329            $syndications_updated   = get_user_meta( (int)$user, 'yd_syndications_updated', true ); 
     330            $syndications_title     = get_user_meta( (int)$user, 'yd_syndications_title', true ); 
    364331            foreach( (array) $syndications as $key => $syndication ) { 
    365332                if( ( !$nok && $syndications_status[$key] == 'ok' ) || ( $nok && $syndications_status[$key] == 'nok' ) ) { 
    366                     //Only include feeds which are due to be updated according to refresh delay 
     333 
     334                    /** Only include feeds which are due to be updated according to refresh delay **/ 
    367335                    if( isset( $syndications_updated[$key] ) && $syndications_updated[$key] > 0 ) { 
    368336                        $delay = time() - $syndications_updated[$key]; 
     
    382350    } 
    383351     
    384     /** 
    385      * get all appropriate feeds, fetch them, parse them, inject items in user's activity feeds 
    386      */ 
     352    /** Get all appropriate feeds, fetch them, parse them, inject items in user's activity feeds **/ 
    387353    function syndicate( $nok = false, $force = false ) { 
    388354        $options = get_option( 'yd-buddypress-feed-syndication' ); //statically called :-s 
    389355        $feeds = self::get_feed_list( $nok, $force ); 
    390         //var_dump( $feeds );   //debug 
    391356         
    392357        foreach ( (array) $feeds as $feed_id => $feed ) { 
    393358            $rss = fetch_feed( trim( $feed['feed_url'] ) ); 
    394359             
    395             //Mark broken feeds as nok 
     360            /** Mark broken feeds as nok **/ 
    396361            if( is_wp_error( $rss ) ) { 
    397362                self::mark_error( $feed ); 
     
    399364            } 
    400365             
    401             //Mark feed as updated 
     366            /** Mark feed as updated **/ 
    402367            self::mark_updated( $feed ); 
    403368             
    404             /** debug ** 
    405             if( $force ) { 
    406                 $cd = $rss->cache_duration; 
    407                 echo "cache duration: $cd for " . $feed['feed_url'] . "<br/>"; 
    408             } 
    409             ** /debug **/ 
    410              
    411369            $maxitems = $rss->get_item_quantity(); 
    412370             
    413371            $items = array(); 
    414372             
    415             // thanks to bp-external-activity plugin authors for this  
     373            /* thanks to bp-external-activity plugin authors for this */  
    416374            $rss_items = $rss->get_items(0, $maxitems); 
    417375            foreach ($rss->get_items(0, $maxitems) as $rss_item ) { 
     
    426384                $items[$key]['link'] = $rss_item->get_link(); 
    427385                $items[$key]['link'] = preg_replace( '|diff.*prev|', '', $items[$key]['link'] ); 
    428                 //echo $items[$key]['link'] . '<br/>'; //debug 
    429386     
    430387                $items[$key]['title'] = $rss_item->get_title(); 
     
    449406            } 
    450407             
    451             /* Record found items in activity streams */ 
     408            /** Record found items in activity streams **/ 
    452409            foreach ( (array) $items as $post_date => $post ) { 
    453410                $feed_id = $post['feed_id']; 
     
    459416                } 
    460417                $item_link = '<a href="' . $post['link'] . '" ' . $target . '>' . $post['title'] . '</a>'; 
    461                 //$activity_action = sprintf( '%s published a new blog post %s', $author_link, $item_link ); 
    462                 //$activity_action = sprintf( __( 'New blog post: %s', 'ydbfs' ), $item_link ); 
    463418                 
    464419                $t = $post['feed_title']; 
     
    470425                } 
    471426                 
    472                 //echo $item_link . '<br/>'; //debug 
    473                 //echo $dn . '<br/>'; //debug 
    474                  
    475                 /* Fetch an existing activity_id if one exists. */ 
     427                /** Fetch an existing activity_id if one exists. **/ 
    476428                if ( function_exists( 'bp_activity_get_activity_id' ) ) 
    477                     $id = bp_activity_get_activity_id( array( 'user_id' => $post['user_id'], 'action' => $activity_action, 'component' => 'imported_blog', 'type' => 'new_blog_post' ) ); 
    478                  
    479                 /* Record or update in activity streams. */ 
     429                    $id = bp_activity_get_activity_id(  
     430                        array(  
     431                            'user_id'           => $post['user_id'],  
     432                            //'action'          => $activity_action, //? 
     433                            'component'         => 'imported_blog',  
     434                            'type'              => 'new_blog_post', 
     435                            'item_id'           => $post['user_feed_id'],  
     436                            'secondary_item_id' => wp_hash( $post['link'] ) 
     437                        )  
     438                    ); 
     439                 
     440                /** Record or update in activity streams. **/ 
    480441                $activity_data = array( 
    481                     'id' => $id, 
    482                     'user_id' => $post['user_id'], 
    483                     'component' => 'imported_blog', 
    484                     'action' => $activity_action, 
    485                     'primary_link' => $post['link'], 
    486                     'type' => 'new_blog_post', 
    487                     'recorded_time' => gmdate( "Y-m-d H:i:s", $post_date ), 
    488                     'hide_sitewide' => false, 
    489                     'content' => $post['description'], 
    490                     'item_id' => $post['user_feed_id'] 
     442                    'id'                => $id, 
     443                    'user_id'           => $post['user_id'], 
     444                    'component'         => 'imported_blog', 
     445                    'action'            => $activity_action, 
     446                    'primary_link'      => $post['link'], 
     447                    'type'              => 'new_blog_post', 
     448                    'recorded_time'     => gmdate( "Y-m-d H:i:s", $post_date ), 
     449                    'hide_sitewide'     => false, 
     450                    'content'           => $post['description'], 
     451                    'item_id'           => $post['user_feed_id'], 
     452                    'secondary_item_id' => wp_hash( $post['link'] ) 
    491453                ); 
    492454                bp_activity_add( $activity_data ); 
    493                 //var_dump( $activity_data ); // debug 
    494                 //echo '<br/><br/>'; // debug 
    495455            } 
    496456        } 
     
    519479            $op = new YD_OptionPage(); //dummy object 
    520480        } 
    521         //if( $force ) echo 'HU_FORCE' . $force . '<br/>';  //debug 
    522         //var_dump( $force );   //debug 
     481 
    523482        self::do_things( &$op, $nok = false, $force ); 
    524483        update_option( 'YD_P_hourly', time() ); 
     
    541500    } 
    542501     
    543     function do_things( $op = false, $nok = false, $force = false ) { 
    544         // do things 
    545         //$option_key = 'yd-fbsplugin'; 
    546         //$options = get_option( $option_key ); 
    547          
     502    function do_things( $op = false, $nok = false, $force = false ) {        
    548503        self::syndicate( $nok, $force ); 
    549504        if( class_exists( 'groupFeedSyndication' ) ) { 
     
    551506        } 
    552507        //$op->error_msg .= 'Great.'; 
    553         $op->update_msg .= 'Feeds syndication updated.'; 
     508        $op->update_msg .= __( 'Feeds syndication updated.', 'ydbfs' ); 
    554509         
    555510        update_option( 'YD_P_last_action', time() ); 
     
    559514        $op->update_msg .= '<p>'; 
    560515        if( $last = get_option( 'YD_P_daily' ) ) { 
    561             $op->update_msg .= 'Last daily action was on: '  
    562                 . date( DATE_RSS, $last ) . '<br/>'; 
     516            $op->update_msg .= __( 'Last daily action was on: ', 'ydbfs' )  
     517                . date_i18n( DATE_RSS, $last ) . '<br/>'; 
    563518        } else {  
    564             $op->update_msg .= 'No daily action yet.<br/>'; 
     519            $op->update_msg .= __( 'No daily action yet.', 'ydbfs' ) . '<br/>'; 
    565520        } 
    566521        if( $last = get_option( 'YD_P_hourly' ) ) { 
    567             $op->update_msg .= 'Last hourly action was on: '  
    568                 . date( DATE_RSS, $last ) . '<br/>'; 
     522            $op->update_msg .= __( 'Last hourly action was on: ', 'ydbfs' )  
     523                . date_i18n( DATE_RSS, $last ) . '<br/>'; 
    569524        } else {  
    570             $op->update_msg .= 'No hourly action yet.<br/>'; 
     525            $op->update_msg .= __( 'No hourly action yet.', 'ydbfs' ) . '<br/>'; 
    571526        } 
    572527        if( $last = get_option( 'YD_P_last_action' ) ) { 
    573             $op->update_msg .= 'Last completed action was on: '  
    574                 . date( DATE_RSS, $last ) . '<br/>'; 
     528            $op->update_msg .= __( 'Last completed action was on: ', 'ydbfs' )  
     529                . date_i18n( DATE_RSS, $last ) . '<br/>'; 
    575530        } else {  
    576             $op->update_msg .= 'No recorded action yet.<br/>'; 
     531            $op->update_msg .= __( 'No recorded action yet.', 'ydbfs' ) . '<br/>'; 
    577532        } 
    578533        $op->update_msg .= '</p>'; 
     
    592547} 
    593548 
    594  
    595549// =======================================  GROUP FEATURES ================================== 
    596550 
    597551// This is inspired by the external-group-blogs BP plugin 
    598552 
     553/** Group blog extension using the BuddyPress group extension API **/ 
    599554if( class_exists( 'BP_Group_Extension' ) ) { 
    600 /* Group blog extension using the BuddyPress group extension API */ 
    601 class groupFeedSyndication extends BP_Group_Extension { 
    602      
    603     public $option_key = 'yd-buddypress-feed-syndication'; 
    604     public $AVAILABLE_DELAYS = array( 
    605         '3 hours' => 10800, 
    606         '6 hours' => 21600, 
    607         '12 hours' => 43200 
    608     ); 
    609      
    610     function groupFeedSyndication() { 
    611         global $bp; 
    612  
    613         $this->name = __( 'Import blogs', 'bp-group-feed-syndication' ); 
    614         $this->slug = 'group-feed-syndication'; 
    615  
    616         $this->create_step_position = 21; 
    617         $this->enable_nav_item = false; 
    618     } 
    619      
    620     function create_screen() { 
    621         //echo 'create screen<br/>'; 
    622     } 
    623      
    624     function create_screen_save() { 
    625         //echo 'create screen save<br/>'; 
    626     } 
    627      
    628     function edit_screen() { 
    629         //echo 'edit screen<br/>'; 
    630         ydbfsPlugin::screen_syndication_settings_content( $group = true ); 
    631     } 
    632      
    633     function edit_screen_save() { 
    634         //error_log( 'YD::Debug: edit_screen_save' );        
    635         //ydbfsPlugin::screen_syndication_settings( $group = true ); 
    636  
    637         global $bp, $current_user, $bp_settings_updated; 
    638      
    639         $bp_settings_updated = false; 
    640      
    641         if ( $_POST['submit'] ) { 
    642             check_admin_referer('bp_settings_syndication'); 
    643      
    644             if ( $syndications = $_POST['syndications'] ) { 
     555    class groupFeedSyndication extends BP_Group_Extension { 
     556 
     557        function groupFeedSyndication() { 
     558            global $bp, $ydbfs_o; 
     559     
     560            $this->name = __( 'Import blogs', $ydbfs_o->tdomain ); 
     561            $this->slug = 'group-feed-syndication'; 
     562     
     563            //$this->create_step_position = 21; 
     564            $this->enable_create_step = false; 
     565            $this->enable_nav_item = false; 
     566        } 
     567         
     568        function create_screen() { 
     569            //wp_nonce_field('bp_settings_syndication');//? 
     570        } 
     571         
     572        function create_screen_save() { 
     573            //wp_nonce_field('bp_settings_syndication');//? 
     574        } 
     575         
     576        function edit_screen() { 
     577            global $ydbfs_o; 
     578            $ydbfs_o->screen_syndication_settings_content( $group = true ); 
     579        } 
     580         
     581        function edit_screen_save() { 
     582            global $bp, $current_user, $bp_settings_updated; 
     583         
     584            $bp_settings_updated = false; 
     585         
     586            if ( $_POST['submit'] ) { 
     587                check_admin_referer('bp_settings_syndication'); 
     588         
     589                if ( $syndications = $_POST['syndications'] ) { 
     590                    foreach( (array)$syndications as $key => $syndication ) { 
     591                        if( !$syndication || empty( $syndication ) || $syndication == '' ) { 
     592                            unset( $syndications[$key] ); 
     593                            continue; 
     594                        } 
     595                        if( !preg_match( '|^http://|', $syndication ) ) 
     596                            $syndication = $syndications[$key] = 'http://' . $syndication; 
     597                        include_once( ABSPATH . 'wp-includes/rss.php' ); 
     598                        $rss = fetch_feed( $syndication ); 
     599                        if( is_wp_error( $rss ) ) { 
     600                            $syndications_status[$key] = 'nok'; 
     601                        } else { 
     602                            $syndications_status[$key] = 'ok'; 
     603                        } 
     604                        if( isset( $_POST['refresh'][$key] ) && !empty( $_POST['refresh'][$key] ) && is_numeric( $_POST['refresh'][$key] ) ) { 
     605                            $syndications_refresh[$key] = $_POST['refresh'][$key]; 
     606                        } 
     607                        if( isset( $_POST['titles'][$key] ) && !empty( $_POST['titles'][$key] ) ) { 
     608                            $syndications_title[$key] = $_POST['titles'][$key]; 
     609                        } 
     610                    } 
     611                     
     612                    groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', $syndications ); 
     613                    groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_status', $syndications_status ); 
     614                    groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', $syndications_refresh ); 
     615                    groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_title', $syndications_title ); 
     616                } 
     617         
     618                $bp_settings_updated = true; 
     619            } 
     620            if ( $_GET['delete'] ) { 
     621                check_admin_referer('bp_settings_syndication'); 
     622                 
     623                $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
    645624                foreach( (array)$syndications as $key => $syndication ) { 
    646                     if( !$syndication || empty( $syndication ) || $syndication == '' ) { 
    647                         unset( $syndications[$key] ); 
    648                         continue; 
     625                    if( $syndication == $_GET['delete'] )  
     626                        unset( $syndications[$key] );  
     627                } 
     628                groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', $syndications ); 
     629            } 
     630            if ( $_GET['update'] && $_GET['refresh'] ) { 
     631                check_admin_referer('bp_settings_syndication'); 
     632                 
     633                $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
     634                $syndications_refresh = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', true ); 
     635                foreach( (array)$syndications as $key => $syndication ) { 
     636                    if( $syndication == $_GET['update'] )  
     637                        $syndications_refresh[$key] = $_GET['refresh'];  
     638                } 
     639                groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', $syndications_refresh ); 
     640            } 
     641             
     642             
     643        } 
     644         
     645        /* We don't need display functions since the group activity stream handles it all. */ 
     646        function display() {} 
     647        function widget_display() {} 
     648         
     649        // Custom fonction === 
     650         
     651        function refresh_delay_menu( $syndication = '', $refresh = 0, $group = false ) { 
     652            global $ydbfs_o; 
     653            $ydbfs_o->refresh_delay_menu( $syndication, $refresh, $group ); 
     654        } 
     655         
     656        // Syndication ======== 
     657         
     658        function get_all_feed_groups() { 
     659            global $wpdb, $bp; 
     660            $gm = $bp->groups->table_name_groupmeta; 
     661            $query = " 
     662                SELECT DISTINCT( group_id ) 
     663                FROM $gm 
     664                WHERE meta_key = 'yd_syndications'; 
     665            "; 
     666            $groups = $wpdb->get_col( $query ); 
     667            return $groups; 
     668        } 
     669         
     670        function get_feed_list( $nok = false, $force = false ) { 
     671            $feeds = array(); 
     672            $group_ids = self::get_all_feed_groups(); 
     673            //if( $force ) echo 'FORCE<br/>';   //debug 
     674            //if( $nok ) echo 'NOK<br/>';   //debug 
     675            foreach( $group_ids as $group_id ) { 
     676                $syndications           = groups_get_groupmeta( (int)$group_id, 'yd_syndications', true ); 
     677                $syndications_status    = groups_get_groupmeta( (int)$group_id, 'yd_syndications_status', true ); 
     678                $syndications_refresh   = groups_get_groupmeta( (int)$group_id, 'yd_syndications_refresh', true ); 
     679                $syndications_updated   = groups_get_groupmeta( (int)$group_id, 'yd_syndications_updated', true ); 
     680                $syndications_title     = groups_get_groupmeta( (int)$group_id, 'yd_syndications_title', true ); 
     681                foreach( (array) $syndications as $key => $syndication ) { 
     682                    if( ( !$nok && $syndications_status[$key] == 'ok' ) || ( $nok && $syndications_status[$key] == 'nok' ) ) { 
     683                        //Only include feeds which are due to be updated according to refresh delay 
     684                        if( isset( $syndications_updated[$key] ) && $syndications_updated[$key] > 0 ) { 
     685                            $delay = time() - $syndications_updated[$key]; 
     686                            if( !$force && $delay < $syndications_refresh[$key] ) 
     687                                continue; 
     688                        } 
     689                        $feeds[] = array( 
     690                            'group_id' => $group_id, 
     691                            'group_feed_id' => $key, 
     692                            'feed_url' => $syndication, 
     693                            'feed_title' => $syndications_title[$key] 
     694                        ); 
    649695                    } 
    650                     if( !preg_match( '|^http://|', $syndication ) ) 
    651                         $syndication = $syndications[$key] = 'http://' . $syndication; 
    652                     include_once( ABSPATH . 'wp-includes/rss.php' ); 
    653                     $rss = fetch_feed( $syndication ); 
    654                     if( is_wp_error( $rss ) ) { 
    655                         $syndications_status[$key] = 'nok'; 
     696                } 
     697            } 
     698            return $feeds; 
     699        } 
     700         
     701        function syndicate( $nok = false, $force = false ) { 
     702            global $bp; 
     703            $options = get_option( 'yd-buddypress-feed-syndication' ); //statically called :-s 
     704            $feeds = self::get_feed_list( $nok, $force ); 
     705             
     706            foreach ( (array) $feeds as $feed_id => $feed ) { 
     707                $rss = fetch_feed( trim( $feed['feed_url'] ) ); 
     708                 
     709                /** Mark broken feeds as nok **/ 
     710                if( is_wp_error( $rss ) ) { 
     711                    self::mark_error( $feed ); 
     712                    continue; 
     713                } 
     714                 
     715                /** Mark feed as updated **/ 
     716                self::mark_updated( $feed ); 
     717                 
     718                $maxitems = $rss->get_item_quantity(); 
     719                 
     720                $items = array(); 
     721                 
     722                /* thanks to bp-external-activity plugin authors for this */  
     723                $rss_items = $rss->get_items(0, $maxitems); 
     724                foreach ($rss->get_items(0, $maxitems) as $rss_item ) { 
     725                    $date = $rss_item->get_date(); 
     726                    $key = strtotime( $date ); 
     727         
     728                    $items[$key]['feed_id'] = $feed_id; 
     729                    $items[$key]['group_id'] = $feed['group_id']; 
     730                    $items[$key]['group_feed_id'] = $feed['group_feed_id']; 
     731                    $items[$key]['feed_title'] = $feed['feed_title']; 
     732         
     733                    $items[$key]['link'] = $rss_item->get_link(); 
     734                    $items[$key]['link'] = preg_replace( '|diff.*prev|', '', $items[$key]['link'] ); 
     735         
     736                    $items[$key]['title'] = $rss_item->get_title(); 
     737                    //$items[$key]['description'] = self::ttruncat( strip_tags( $rss_item->get_description() ), self::DESCRIPTION_MAX_SIZE ); 
     738                    $items[$key]['description'] = $rss_item->get_description(); 
     739                     
     740                    $author = $rss_item->get_author(); 
     741                    $user_id = false; 
     742         
     743                    $items[$key]['author'] = $user_id; 
     744                } 
     745                 
     746                if ( $items ) { 
     747                    ksort($items); 
     748                    $items = array_reverse($items, true); 
     749                } else { 
     750                    continue; 
     751                } 
     752                 
     753                /** Record found items in activity streams **/ 
     754                foreach ( (array) $items as $post_date => $post ) { 
     755                    $feed_id = $post['feed_id']; 
     756                    $author_link = ( $post['author'] ) ? '<a href="' . bp_core_get_user_domain( $post['author'] ) . '">' . bp_core_get_user_displayname( $post['author'] ) . '</a>' :  __( 'Imported', 'ydbfs' ); 
     757                    if( isset( $options['open_out'] ) && $options['open_out'] ) { 
     758                        $target = ' target="_blank" '; 
    656759                    } else { 
    657                         $syndications_status[$key] = 'ok'; 
     760                        $target = ''; 
    658761                    } 
    659                     if( isset( $_POST['refresh'][$key] ) && !empty( $_POST['refresh'][$key] ) && is_numeric( $_POST['refresh'][$key] ) ) { 
    660                         $syndications_refresh[$key] = $_POST['refresh'][$key]; 
     762                    $item_link = '<a href="' . $post['link'] . '" ' . $target . '>' . $post['title'] . '</a>'; 
     763                 
     764                    $t = $post['feed_title']; 
     765                    $mygroup = groups_get_group( array( 'group_id' => $post['group_id'] ) ); 
     766                    $gn = $mygroup->name; 
     767                     
     768                    if( !empty($t) ) { 
     769                        $activity_action = sprintf(__( 'New blog post imported from &laquo;%1$s&raquo; for group %2$s: %3$s', 'ydbfs' ), $t, $gn, $item_link ); 
     770                    } else { 
     771                        $activity_action = sprintf(__( 'New blog post imported for group %1$s: %2$s', 'ydbfs' ), $gn, $item_link ); 
    661772                    } 
    662                     if( isset( $_POST['titles'][$key] ) && !empty( $_POST['titles'][$key] ) ) { 
    663                         $syndications_title[$key] = $_POST['titles'][$key]; 
    664                     } 
    665                 } 
    666                  
    667                 groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', $syndications ); 
    668                 groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_status', $syndications_status ); 
    669                 groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', $syndications_refresh ); 
    670                 groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_title', $syndications_title ); 
    671                 //foreach ( (array)$_POST['syndications'] as $key => $value ) { 
    672                 //  update_user_meta( (int)$current_user->id, $key, $value ); 
    673                 //} 
    674             } 
    675      
    676             $bp_settings_updated = true; 
    677         } 
    678         if ( $_GET['delete'] ) { 
    679             check_admin_referer('bp_settings_syndication'); 
    680              
    681             $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
    682             foreach( (array)$syndications as $key => $syndication ) { 
    683                 if( $syndication == $_GET['delete'] )  
    684                     unset( $syndications[$key] );  
    685             } 
    686             groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', $syndications ); 
    687         } 
    688         if ( $_GET['update'] && $_GET['refresh'] ) { 
    689             check_admin_referer('bp_settings_syndication'); 
    690              
    691             $syndications = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications', true ); 
    692             $syndications_refresh = groups_get_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', true ); 
    693             foreach( (array)$syndications as $key => $syndication ) { 
    694                 if( $syndication == $_GET['update'] )  
    695                     $syndications_refresh[$key] = $_GET['refresh'];  
    696             } 
    697             groups_update_groupmeta( (int)$bp->groups->current_group->id, 'yd_syndications_refresh', $syndications_refresh ); 
    698         } 
    699          
    700          
    701     } 
    702      
    703     /* We don't need display functions since the group activity stream handles it all. */ 
    704     function display() {} 
    705     function widget_display() {} 
    706      
    707     // custom fonction === 
    708      
    709     function refresh_delay_menu( $syndication = '', $refresh = 0, $group = false ) { 
    710         ydbfsPlugin::refresh_delay_menu( $syndication, $refresh, $group ); 
    711     } 
    712      
    713     // Syndication ======== 
    714      
    715     function get_all_feed_groups() { 
    716         global $wpdb, $bp; 
    717         $gm = $bp->groups->table_name_groupmeta; 
    718         $query = " 
    719             SELECT DISTINCT( group_id ) 
    720             FROM $gm 
    721             WHERE meta_key = 'yd_syndications'; 
    722         "; 
    723         $groups = $wpdb->get_col( $query ); 
    724         return $groups; 
    725     } 
    726      
    727     function get_feed_list( $nok = false, $force = false ) { 
    728         $feeds = array(); 
    729         $group_ids = self::get_all_feed_groups(); 
    730         //if( $force ) echo 'FORCE<br/>';   //debug 
    731         //if( $nok ) echo 'NOK<br/>';   //debug 
    732         foreach( $group_ids as $group_id ) { 
    733             $syndications = groups_get_groupmeta( (int)$group_id, 'yd_syndications', true ); 
    734             $syndications_status = groups_get_groupmeta( (int)$group_id, 'yd_syndications_status', true ); 
    735             $syndications_refresh = groups_get_groupmeta( (int)$group_id, 'yd_syndications_refresh', true ); 
    736             $syndications_updated = groups_get_groupmeta( (int)$group_id, 'yd_syndications_updated', true ); 
    737             $syndications_title = groups_get_groupmeta( (int)$group_id, 'yd_syndications_title', true ); 
    738             foreach( (array) $syndications as $key => $syndication ) { 
    739                 if( ( !$nok && $syndications_status[$key] == 'ok' ) || ( $nok && $syndications_status[$key] == 'nok' ) ) { 
    740                     //Only include feeds which are due to be updated according to refresh delay 
    741                     if( isset( $syndications_updated[$key] ) && $syndications_updated[$key] > 0 ) { 
    742                         $delay = time() - $syndications_updated[$key]; 
    743                         if( !$force && $delay < $syndications_refresh[$key] ) 
    744                             continue; 
    745                     } 
    746                     $feeds[] = array( 
    747                         'group_id' => $group_id, 
    748                         'group_feed_id' => $key, 
    749                         'feed_url' => $syndication, 
    750                         'feed_title' => $syndications_title[$key] 
     773                     
     774                    /** Fetch an existing activity_id if one exists. **/ 
     775                    if ( function_exists( 'bp_activity_get_activity_id' ) ) 
     776                        $id = bp_activity_get_activity_id( array(  
     777                            'user_id'           => false,  
     778                            //'action'          => $activity_action,  
     779                            'component'         => 'groups',  
     780                            'type'              => 'activity_update',  
     781                            'item_id'           => $post['group_id'],  
     782                            'secondary_item_id' => wp_hash( $post['link'] ) 
     783                        ) 
    751784                    ); 
    752                 } 
    753             } 
    754         } 
    755         return $feeds; 
    756     } 
    757      
    758     function syndicate( $nok = false, $force = false ) { 
    759         global $bp; 
    760         $options = get_option( 'yd-buddypress-feed-syndication' ); //statically called :-s 
    761         $feeds = self::get_feed_list( $nok, $force ); 
    762         //var_dump( $feeds );   //debug 
    763          
    764         foreach ( (array) $feeds as $feed_id => $feed ) { 
    765             $rss = fetch_feed( trim( $feed['feed_url'] ) ); 
    766              
    767             //Mark broken feeds as nok 
    768             if( is_wp_error( $rss ) ) { 
    769                 self::mark_error( $feed ); 
    770                 continue; 
    771             } 
    772              
    773             //Mark feed as updated 
    774             self::mark_updated( $feed ); 
    775              
    776             /** debug ** 
    777             if( $force ) { 
    778                 $cd = $rss->cache_duration; 
    779                 echo "cache duration: $cd for " . $feed['feed_url'] . "<br/>"; 
    780             } 
    781             ** /debug **/ 
    782              
    783             $maxitems = $rss->get_item_quantity(); 
    784              
    785             $items = array(); 
    786              
    787             // thanks to bp-external-activity plugin authors for this  
    788             $rss_items = $rss->get_items(0, $maxitems); 
    789             foreach ($rss->get_items(0, $maxitems) as $rss_item ) { 
    790                 $date = $rss_item->get_date(); 
    791                 $key = strtotime( $date ); 
    792      
    793                 $items[$key]['feed_id'] = $feed_id; 
    794                 $items[$key]['group_id'] = $feed['group_id']; 
    795                 $items[$key]['group_feed_id'] = $feed['group_feed_id']; 
    796                 $items[$key]['feed_title'] = $feed['feed_title']; 
    797      
    798                 $items[$key]['link'] = $rss_item->get_link(); 
    799                 $items[$key]['link'] = preg_replace( '|diff.*prev|', '', $items[$key]['link'] ); 
    800                 //echo $items[$key]['link'] . '<br/>'; //debug 
    801      
    802                 $items[$key]['title'] = $rss_item->get_title(); 
    803                 //$items[$key]['description'] = self::ttruncat( strip_tags( $rss_item->get_description() ), self::DESCRIPTION_MAX_SIZE ); 
    804                 $items[$key]['description'] = $rss_item->get_description(); 
    805                  
    806                 $author = $rss_item->get_author(); 
    807                 $user_id = false; 
    808      
    809                 $items[$key]['author'] = $user_id; 
    810             } 
    811              
    812             if ( $items ) { 
    813                 ksort($items); 
    814                 $items = array_reverse($items, true); 
    815             } else { 
    816                 continue; 
    817             } 
    818              
    819             /* Record found items in activity streams */ 
    820             foreach ( (array) $items as $post_date => $post ) { 
    821                 $feed_id = $post['feed_id']; 
    822                 $author_link = ( $post['author'] ) ? '<a href="' . bp_core_get_user_domain( $post['author'] ) . '">' . bp_core_get_user_displayname( $post['author'] ) . '</a>' :  __( 'Imported', 'ydbfs' ); 
    823                 if( isset( $options['open_out'] ) && $options['open_out'] ) { 
    824                     $target = ' target="_blank" '; 
    825                 } else { 
    826                     $target = ''; 
    827                 } 
    828                 $item_link = '<a href="' . $post['link'] . '" ' . $target . '>' . $post['title'] . '</a>'; 
    829                 //$activity_action = sprintf( '%s published a new blog post %s', $author_link, $item_link ); 
    830                 //$activity_action = sprintf( __( 'New blog post: %s', 'ydbfs' ), $item_link ); 
    831                  
    832                 $t = $post['feed_title']; 
    833                 $mygroup = groups_get_group( array( 'group_id' => $post['group_id'] ) ); 
    834                 $gn = $mygroup->name; 
    835                  
    836                 if( !empty($t) ) { 
    837                     $activity_action = sprintf(__( 'New blog post imported from &laquo;%1$s&raquo; for group %2$s: %3$s', 'ydbfs' ), $t, $gn, $item_link ); 
    838                 } else { 
    839                     $activity_action = sprintf(__( 'New blog post imported for group %1$s: %2$s', 'ydbfs' ), $gn, $item_link ); 
    840                 } 
    841                  
    842                 //echo $item_link . '<br/>'; //debug 
    843                 //echo $gn . '<br/>'; //debug 
    844                  
    845                 /* Fetch an existing activity_id if one exists. */ 
    846                 if ( function_exists( 'bp_activity_get_activity_id' ) ) 
    847                     $id = bp_activity_get_activity_id( array(  
    848                         'user_id' => false,  
    849                         'action' => $activity_action,  
    850                         'component' => 'imported_blog',  
    851                         'type' => 'new_blog_post',  
    852                         'item_id' => $post['group_id'],  
    853                         'secondary_item_id' => wp_hash( $post['link'] ) 
    854                     )  
    855                 ); 
    856                  
    857                 /* Record or update in activity streams. */ 
    858                 $activity_data = array( 
    859                     'id' => $id, 
    860                     'user_id' => false, 
    861                     'component' => 'imported_blog', 
    862                     'action' => $activity_action, 
    863                     'primary_link' => $post['link'], 
    864                     'type' => 'new_blog_post', 
    865                     'recorded_time' => gmdate( "Y-m-d H:i:s", $post_date ), 
    866                     'hide_sitewide' => false, 
    867                     'content' => $post['description'], 
    868                     'item_id' => $post['group_id'], 
    869                     'secondary_item_id' => $post['group_feed_id'] 
    870                 ); 
    871                 $res = groups_record_activity( $activity_data ); 
    872                 /* 
    873                 var_dump( $activity_data ); // debug 
    874                 echo '<br/><br/>'; //debug 
    875                 var_dump( $res ); //debug 
    876                 echo '<br/><br/>'; // debug 
    877                 */ 
    878             } 
    879         } 
    880     } 
    881      
    882     function mark_updated( $feed ) { 
    883         $group  = $feed['group_id']; 
    884         $key    = $feed['group_feed_id']; 
    885         $syndications_updated = groups_get_groupmeta( (int)$group, 'yd_syndications_updated', true ); 
    886         $syndications_updated[$key] = time(); 
    887         groups_update_groupmeta( (int)$group, 'yd_syndications_updated', $syndications_updated ); 
    888     } 
    889      
    890     function mark_error( $feed ) { 
    891         $group  = $feed['group_id']; 
    892         $key    = $feed['group_feed_id']; 
    893         $syndications_status = groups_get_groupmeta( (int)$group, 'yd_syndications_status', true ); 
    894         $syndications_status[$key] = 'nok'; 
    895         groups_update_groupmeta( (int)$group, 'yd_syndications_status', $syndications_status ); 
    896     } 
    897 } 
    898 } 
    899  
     785                     
     786                    /** Record or update in activity streams. **/ 
     787                    $activity_data = array( 
     788                        'id'                => $id, 
     789                        'user_id'           => false, 
     790                        'component'         => 'groups', 
     791                        'action'            => $activity_action, 
     792                        'primary_link'      => $post['link'], 
     793                        'type'              => 'activity_update', 
     794                        'recorded_time'     => gmdate( "Y-m-d H:i:s", $post_date ), 
     795                        'hide_sitewide'     => false, 
     796                        'content'           => $post['description'], 
     797                        'item_id'           => $post['group_id'], 
     798                        'secondary_item_id' => wp_hash( $post['link'] ) 
     799                    ); 
     800                    $res = groups_record_activity( $activity_data ); 
     801                } 
     802            } 
     803        } 
     804         
     805        function mark_updated( $feed ) { 
     806            $group  = $feed['group_id']; 
     807            $key    = $feed['group_feed_id']; 
     808            $syndications_updated = groups_get_groupmeta( (int)$group, 'yd_syndications_updated', true ); 
     809            $syndications_updated[$key] = time(); 
     810            groups_update_groupmeta( (int)$group, 'yd_syndications_updated', $syndications_updated ); 
     811        } 
     812         
     813        function mark_error( $feed ) { 
     814            $group  = $feed['group_id']; 
     815            $key    = $feed['group_feed_id']; 
     816            $syndications_status = groups_get_groupmeta( (int)$group, 'yd_syndications_status', true ); 
     817            $syndications_status[$key] = 'nok'; 
     818            groups_update_groupmeta( (int)$group, 'yd_syndications_status', $syndications_status ); 
     819        } 
     820    } // - end of class def 
     821} // - if class exists 
    900822?> 
  • yd-buddypress-feed-syndication/branches/2.1.0/languages/ydbfs-fr_FR.po

    r428720 r429501  
    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-08-25 17:38+0100\n" 
     10"PO-Revision-Date: 2011-08-27 18:54+0100\n" 
    1111"Last-Translator: Yann Dubois <yann@abc.fr>\n" 
    1212"Language-Team: Y.Dubois <yann@abc.fr>\n" 
     
    2525msgid "Import a blog" 
    2626msgstr "Importer un blog" 
     27 
     28#: ydbfs.inc.php:155 
     29msgid "Changes Saved." 
     30msgstr "Modifications enregistrées." 
    2731 
    2832#: ydbfs.inc.php:224 
     
    110114msgstr "Nouveau billet importé par %1$s&nbsp;: %2$s" 
    111115 
     116#: ydbfs.inc.php:499 
     117msgid "Feeds syndication updated." 
     118msgstr "Abonnements aux fils RSS mis à jour." 
     119 
     120#: ydbfs.inc.php:507 
     121msgid "Last daily action was on: " 
     122msgstr "Dernier déclenchement quotidien&nbsp;: " 
     123 
     124#: ydbfs.inc.php:510 
     125msgid "No daily action yet." 
     126msgstr "Pas encore de déclenchement quotidien." 
     127 
     128#: ydbfs.inc.php:513 
     129msgid "Last hourly action was on: " 
     130msgstr "Dernier déclenchement horaire&nbsp;: " 
     131 
     132#: ydbfs.inc.php:516 
     133msgid "No hourly action yet." 
     134msgstr "Pas encore de déclenchement horaire." 
     135 
     136#: ydbfs.inc.php:519 
     137msgid "Last completed action was on: " 
     138msgstr "Dernier déclenchement effectué&nbsp;: " 
     139 
     140#: ydbfs.inc.php:522 
     141msgid "No recorded action yet." 
     142msgstr "Aucune action enregistrée pour le moment." 
     143 
    112144#: ydbfs.inc.php:600 
    113145msgid "Import blogs" 
     
    122154msgstr "Nouveau billet importé pour le groupe %1$s&nbsp;: %1$s" 
    123155 
     156#: yd-buddypress-feed-syndication.php:135 
     157msgid "Maximum number of user-aggregated feeds:" 
     158msgstr "Nombre maximum de fils qu'un utilisateur peut agréger&nbsp;:" 
     159 
     160#: yd-buddypress-feed-syndication.php:136 
     161msgid "Maximum number of group-aggregated feeds:" 
     162msgstr "Nombre maximum de fils qu'un groupe peut agréger&nbsp;:" 
     163 
     164#: yd-buddypress-feed-syndication.php:137 
     165msgid "Open feed links in new window." 
     166msgstr "Ouvrir les liens des fils dans une nouvelle fenêtre." 
     167 
     168#: yd-buddypress-feed-syndication.php:145 
     169msgid "Manually run hourly process" 
     170msgstr "Déclencher manuellement le processus horaire" 
     171 
     172#: yd-buddypress-feed-syndication.php:146 
     173msgid "Manually force feed reload" 
     174msgstr "Forcer le rechargement des fils RSS" 
     175 
     176#: yd-buddypress-feed-syndication.php:147 
     177msgid "Manually check broken feeds" 
     178msgstr "Vérifier les fils marqués défectueux" 
     179 
     180#: yd-buddypress-feed-syndication.php:148 
     181msgid "Check latest" 
     182msgstr "Rapport du dernier déclenchement" 
     183 
  • yd-buddypress-feed-syndication/branches/2.1.0/readme.txt

    r428914 r429501  
    9797 
    9898 
     99* 2.1.0. Production release / new features / bugfix of 2011/08/27 
    99100* 2.0.4. Bugfix release 4 of 2011/08/26 
    100101* 2.0.3. Bugfix release 3 of 2011/08/26 
     
    109110== Changelog == 
    110111 
     112= 2.1.0 = 
     113* Production release of 2011/08/27 
     114* New feature: Max feeds per user != max feeds per groups (as suggested by J.Pisano) 
     115* Interface styling improvements (thanks go to John/Roman & Jubal for suggestions) 
     116* Interface now says you can aggregate only if max allowed feeds > 1 
     117* Better BuddyPress feed integration for groups (thanks to Guillaume Dott @ Selliance.com ) 
     118* Better Internationalization and localization / translation of the admin interface 
     119* New, more comprehensive .po/.mo files (previously existing translations need a serious update!) 
     120* Updated French translation files 
     121* Bugfix when maximum number of feeds is initially 1 (pointed by J.Pisano) 
     122* Bugfix for translation (thanks to Guillaume Dott @ Selliance.com ) 
     123* Bugfix for duplicate posts (thanks to Guillaume Dott @ Selliance.com ) 
     124* Bugfix for group creation process (thanks to Guillaume Dott @ Selliance.com ) 
    111125= 2.0.4 = 
    112126* Additional bugfix for when Group component is turned off 
     
    141155== Upgrade Notice == 
    142156 
     157= 2.1.0 = 
     158* No specifics. Automatic upgrade works fine. 
    143159= 2.0.4 = 
    144160* No specifics. Automatic upgrade works fine. 
  • yd-buddypress-feed-syndication/branches/2.1.0/yd-buddypress-feed-syndication.php

    r428914 r429501  
    33 * @package YD_BuddyPress-feed-syndication 
    44 * @author Yann Dubois 
    5  * @version 2.0.4 
     5 * @version 2.1.0 
    66 */ 
    77 
     
    99 Plugin Name: YD BuddyPress Feed Syndication 
    1010 Plugin URI: http://www.yann.com/ 
    11  Description: Syndicate and aggregate any RSS feeds into your BuddyPress activity feed/wall (like with Facebook). 
    12  Version: 2.0.4 
     11 Description: Syndicate and aggregate any RSS feeds into your BuddyPress user or group activity feed/wall (like with Facebook). 
     12 Version: 2.1.0 
    1313 Author: Yann Dubois 
    1414 Author URI: http://www.yann.com/ 
     
    2020 * 
    2121 *  Original development of this plugin was kindly funded by www.selliance.com 
     22 * 
     23 *  Includes patches kindly provided by Guillaume Dott @ Selliance.com 
    2224 * 
    2325 *  This program is free software; you can redistribute it and/or modify 
     
    3739 
    3840/** 
     41 Revision 2.1.0: 
     42 - Production release of 2011/08/27 
     43 - New feature: Max feeds per user != max feeds per groups (as suggested by J.Pisano) 
     44 - Interface styling improvements (thanks go to John/Roman & Jubal for suggestions) 
     45 - Interface now says you can aggregate only if max allowed feeds > 1 
     46 - Better BuddyPress feed integration for groups (thanks to Guillaume Dott @ Selliance.com ) 
     47 - Better Internationalization and localization / translation of the admin interface 
     48 - New, more comprehensive .po/.mo files (previously existing translations need a serious update!) 
     49 - Updated French translation files 
     50 - Bugfix when maximum number of feeds is initially 1 (pointed by J.Pisano) 
     51 - Bugfix for translation (thanks to Guillaume Dott @ Selliance.com ) 
     52 - Bugfix for duplicate posts (thanks to Guillaume Dott @ Selliance.com ) 
     53 - Bugfix for group creation process (thanks to Guillaume Dott @ Selliance.com ) 
    3954 Revision 2.0.4: 
    4055 - Additional bugfix for when Group component is turned off 
     
    7388 */ 
    7489 
    75  
    76 /** Misc. Texts **/ 
    77  
    78 global $ydbfs_texts;  
    79 $ydbfs_texts = array ( 
    80 ); 
    81  
    8290/** Class includes **/ 
    8391 
     
    95103    array( 
    96104        'name'              => 'YD BuddyPress Feed Syndication', 
    97         'version'           => '2.0.4', 
     105        'version'           => '2.1.0', 
    98106        'has_option_page'   => true, 
    99107        'option_page_title' => 'YD Feed Syndication', 
     
    121129            array( 'Russian', 'Diogen Platonovich', 'http://platonovich.ru/' ) 
    122130        ), 
    123         'initial_funding'   => array( 'Selliance', 'http://www.selliance.com' ), 
    124         'additional_funding'=> array(), 
    125         'form_blocks'       => array( 
    126             'Main options' => array(  
    127                 'limit' => 'text', 
    128                 'open_out'  => 'bool', 
    129                 //'autopage'    => 'bool' 
     131        'initial_funding'       => array( 'Selliance', 'http://www.selliance.com' ), 
     132        'additional_funding'    => array(  
     133            array( 'Selliance', 'http://www.selliance.com' ) 
     134        ), 
     135        'form_blocks'           => array( 
     136            'Main options'      => array(  
     137                'limit'         => 'text', 
     138                'group_limit'   => 'text',  
     139                'open_out'      => 'bool', 
    130140            ) 
    131141        ), 
    132142        'option_field_labels'=>array( 
    133                 'limit' => 'Limit number of feeds to aggregate to a maximum of:', 
    134                 'open_out'  => 'Open feed links in new window.', 
    135                 //'autopage'    => 'Blooh' 
     143                'limit'         => 'Maximum number of user-aggregated feeds:', 
     144                'group_limit'   => 'Maximum number of group-aggregated feeds:', 
     145                'open_out'      => 'Open feed links in new window.', 
    136146        ), 
    137147        'option_defaults'   => array( 
    138                 'limit' => 5, 
    139                 'open_out'  => 1, 
    140                 //'autopage'    => true 
     148                'limit'         => 5, 
     149                'group_limit'   => 5,  
     150                'open_out'      => 1, 
    141151        ), 
    142152        'form_add_actions'  => array( 
     
    146156                'Check latest'                  => array( 'ydbfsPlugin', 'check_update' ) 
    147157        ), 
    148         'has_cache'         => false, 
    149         'option_page_text'  => '', 
    150         'backlinkware_text' => '', 
    151         'plugin_file'       => __FILE__, 
     158        'has_cache'             => false, 
     159        'option_page_text'      => '', 
     160        'backlinkware_text'     => '', 
     161        'plugin_file'           => __FILE__, 
    152162        'has_activation_notice' => false, 
    153         'activation_notice' => '', 
    154         'form_method'       => 'post' 
     163        'activation_notice'     => '', 
     164        'form_method'           => 'post' 
    155165    ) 
    156166); 
Note: See TracChangeset for help on using the changeset viewer.