/** * Create a activity item * @param $params * @return string */ function buddystreamCreateActivity($params) { global $bp, $wpdb; $buddyStreamExtensions = new BuddyStreamExtensions(); $buddyStreamFilters = new BuddyStreamFilters(); /** * buddystreamCreateActivity(array( * 'user_id' => $user_meta->user_id, * 'extension' => 'facebook', * 'type' => 'photo', * 'content' => $content, * 'item_id' => $item['id'], * 'raw_date' => $item['created_time'], * 'actionlink' => 'url_to_original_item') * )); * */ if (is_array($params)) { //load config of extension $originalText = $params['content']; foreach ($buddyStreamExtensions->getExtensionsConfigs() as $extension) { if (isset($extension['hashtag'])) { $originalText = str_replace($extension['hashtag'], "", $originalText); $originalText = trim($originalText); } } //set the content $content = ""; $content = '<div class="buddystream_activity_container ' . $params['extension'] . '">' . $originalText . '</div>'; if (!buddyStreamCheckImportLog($params['user_id'], $params['item_id'], $params['extension']) && !buddyStreamCheckExistingContent($content) && !buddyStreamCheckExistingContent($originalText)) { buddyStreamAddToImportLog($params['user_id'], $params['item_id'], $params['extension']); remove_filter('bp_activity_action_before_save', 'bp_activity_filter_kses', 1); $activity = new BP_Activity_Activity(); $activity->user_id = $params['user_id']; $activity->component = $params['extension']; $activity->type = $params['extension']; $activity->content = $content; $activity->item_id = $params['item_id']; $activity->secondary_item_id = ''; $activity->date_recorded = $params['raw_date']; $activity->hide_sitewide = 0; $activity->action .= '<a href="' . bp_core_get_user_domain($params['user_id']) . '" title="' . bp_core_get_username($params['user_id']) . '">' . bp_core_get_user_displayname($params['user_id']) . '</a>'; $activity->action .= ' ' . __('posted a', 'buddystream_lang') . ' '; $activity->action .= '<a href="' . $params['actionlink'] . '" target="_blank" rel="external"> ' . __($params['type'], 'buddystream_' . $extension['name']); $activity->action .= '</a>: '; $activity->primary_link = $params['actionlink']; if (!preg_match("/" . $params['item_id'] . "/i", get_user_meta($params['user_id'], 'buddystream_blacklist_ids', 1))) { $activity->save(); $buddyStreamFilters->updateDayLimitByOne($params['extension'], $params['user_id']); return true; } } } return false; }
public function doImport() { global $bp, $wpdb; $buddyStreamFilter = new BuddyStreamFilters(); $buddyStreamLog = new BuddyStreamLog(); $itemCounter = 0; if (get_site_option("soundcloud_client_id")) { if (get_site_option('soundcloud_user_settings_syncbp') == 0) { $user_metas = $wpdb->get_results("SELECT user_id\n FROM {$wpdb->usermeta} WHERE\n meta_key='soundcloud_access_token'"); if ($user_metas) { foreach ($user_metas as $user_meta) { //daycounter reset if (get_user_meta($user_meta->user_id, 'soundcloud_counterdate') != date('d-m-Y')) { update_user_meta($user_meta->user_id, 'soundcloud_daycounter', 1); update_user_meta($user_meta->user_id, 'soundcloud_counterdate', date('d-m-Y')); } //check for daylimit $limitReached = $buddyStreamFilter->limitReached('soundcloud', $user_meta->user_id); if (!$limitReached) { $soundcloud = new BuddystreamSoundcloud(get_site_option("soundcloud_client_id"), get_site_option("soundcloud_client_secret"), $bp->root_domain . "/?buddystream_auth=soundcloud"); $soundcloud->setAccessToken(get_user_meta($user_meta->user_id, 'soundcloud_access_token', 1)); //favs try { $favs = json_decode($soundcloud->get('me/favorites'), true); if ($favs) { foreach ($favs as $track) { //check daylimit $limitReached = $buddyStreamFilter->limitReached('soundcloud', $user_meta->user_id); if (!buddyStreamCheckImportLog($user_meta->user_id, "soundcloud_" . $track['id'], 'soundcloud') && !$limitReached) { $returnCreate = buddystreamCreateActivity(array('user_id' => $user_meta->user_id, 'extension' => 'soundcloud', 'type' => 'Soundcloud track', 'content' => $track['title'] . '<br/>' . $track['uri'], 'item_id' => "soundcloud_" . $track['id'], 'raw_date' => gmdate('Y-m-d H:i:s', strtotime($track['created_at'])), 'actionlink' => $track['permalink_url'])); if ($returnCreate) { $itemCounter++; } } } } } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { //do nothing } } try { $tracks = json_decode($soundcloud->get('me/tracks'), true); if ($tracks) { foreach ($tracks as $track) { //check daylimit $limitReached = $buddyStreamFilter->limitReached('soundcloud', $user_meta->user_id); if (!buddyStreamCheckImportLog($user_meta->user_id, "soundcloud_" . $track['id'], 'soundcloud') && !$limitReached) { $returnCreate = buddystreamCreateActivity(array('user_id' => $user_meta->user_id, 'extension' => 'soundcloud', 'type' => 'Soundcloud track', 'content' => $track['title'] . '<br/>' . $track['uri'], 'item_id' => "soundcloud_" . $track['id'], 'raw_date' => gmdate('Y-m-d H:i:s', strtotime($track['created_at'])), 'actionlink' => $track['permalink_url'])); if ($returnCreate) { $itemCounter++; } } } } } catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) { //do nothing } } } } } //add record to the log $buddyStreamLog->log("Soundcloud imported " . $itemCounter . " tracks for " . count($user_metas) . " users."); //return number of items imported return $itemCounter; }