function bebop_facebook_import($extension, $user_metas = null) { global $wpdb, $bp; if (empty($extension)) { bebop_tables::log_general('Importer', 'The $extension parameter is empty.'); return false; } else { if (!bebop_tables::check_option_exists('bebop_' . $extension . '_consumer_key')) { bebop_tables::log_general('Importer', 'No consumer key was found for ' . $extension); return false; } else { $this_extension = bebop_extensions::bebop_get_extension_config_by_name($extension); } } //item counter for in the logs $itemCounter = 0; //if no user_metas are supplied, serarch for them. if (!isset($user_metas)) { $user_metas = bebop_tables::get_user_ids_from_meta_name('bebop_' . $this_extension['name'] . '_oauth_token'); } if (isset($user_metas)) { foreach ($user_metas as $user_meta) { $errors = null; $items = null; //Ensure the user is currently wanting to import items. if (bebop_tables::get_user_meta_value($user_meta->user_id, 'bebop_' . $this_extension['name'] . '_active_for_user') == 1) { //if it is the first import, update the flag. if (bebop_tables::check_for_first_import($user_meta->user_id, $this_extension['name'], 'bebop_' . $this_extension['name'] . '_do_initial_import')) { bebop_tables::delete_from_first_importers($user_meta->user_id, $this_extension['name'], 'bebop_' . $this_extension['name'] . '_do_initial_import'); } /* * ****************************************************************************************************************** * Depending on the data source, you will need to switch how the data is retrieved. If the feed is RSS, use the * * SimplePie method, as shown in the youtube extension. If the feed is oAuth API based, use the oAuth implementation* * as shown in the twitter extension. If the feed is an API without oAuth authentication, use SlideShare * * ****************************************************************************************************************** */ $data_request = new bebop_data(); $params = array('limit' => '30', 'access_token' => bebop_tables::get_user_meta_value($user_meta->user_id, 'bebop_' . $this_extension['name'] . '_oauth_token')); $data = $data_request->execute_request($this_extension['data_feed'], $params); $items = json_decode($data); /* * ****************************************************************************************************************** * We can get as far as loading the items, but you will need to adjust the values of the variables below to match * * the values from the extension's API. * * This is because each API return data under different parameter names, and the simplest way to get around this is * * to quickly match the values. To find out what values you should be using, consult the provider's documentation. * * You can also contact us if you get stuck - details are in the 'support' section of the admin homepage. * * ****************************************************************************************************************** * * Values you will need to check and update are: * $errors - Must point to the error boolean value (true/false) * $username - Must point to the value holding the username of the person. * $id - Must be the ID of the item returned through the data API. * $item_content - The actual content of the imported item. * $item_published - The time the item was published. * $action_link - This is where the link will point to - i.e. where the user can click to get more info. */ //Edit the following two variables to point to where the relevant content is being stored in the API: if (isset($items->error)) { bebop_tables::log_error(sprintf(__('Importer - %1$s', 'bebop'), $this_extension['display_name']), sprintf(__('Feed Error: %1$s', 'bebop'), serialize($data->error))); } else { if (!bebop_tables::check_user_meta_exists($user_meta->user_id, 'bebop_' . $this_extension['name'] . '_username')) { $get_username = true; } else { $get_username = false; $username = bebop_tables::get_user_meta_value($user_meta->user_id, 'bebop_' . $this_extension['name'] . '_username'); } if ($items) { foreach ($items->data as $item) { //if its a story, break as we only want wall posts, not comments. if (isset($item->message)) { //if the username doesnt exist, add it. if ($get_username == true) { $this_user_id = substr($item->id, 0, strpos($item->id, '_')); $user_query_data = $data_request->execute_request($this_extension['people_data'] . $this_user_id); $user = json_decode($user_query_data); $username = $user->name; bebop_tables::update_user_meta($user_meta->user_id, $this_extension['name'], 'bebop_' . $this_extension['name'] . '_username', $username); $get_username = false; } if (!bebop_filters::import_limit_reached($this_extension['name'], $user_meta->user_id, $username)) { //Edit the following three variables to point to where the relevant content is being stored: $id = $item->id; $item_content = $item->message; $item_published = gmdate('Y-m-d H:i:s', strtotime($item->created_time)); if (isset($item->actions[0]->link)) { $action_link = $item->actions[0]->link; } else { if (isset($item->link)) { $action_link = $item->link; } } //Stop editing - you should be all done. //generate an $item_id $item_id = bebop_generate_secondary_id($user_meta->user_id, $id, $item_published); //if the id is not found, import the content. if (!bebop_tables::check_existing_content_id($user_meta->user_id, $this_extension['name'], $item_id)) { if (bebop_create_buffer_item(array('user_id' => $user_meta->user_id, 'extension' => $this_extension['name'], 'type' => $this_extension['content_type'], 'username' => $username, 'content' => $item_content, 'content_oembed' => $this_extension['content_oembed'], 'item_id' => $item_id, 'raw_date' => $item_published, 'actionlink' => $action_link))) { $itemCounter++; } } } } //End if ( isset( $item->message ) ) { unset($item); } } } //End else unset($user_meta); } } } //return the result return $itemCounter . ' ' . $this_extension['content_type'] . 's'; }
function bebop_create_buffer_item($params) { global $bp, $wpdb; if (is_array($params)) { if (!bebop_tables::check_existing_content_id($params['user_id'], $params['extension'], $params['item_id'])) { $original_text = $params['content']; if (!bebop_tables::bebop_check_existing_content_buffer($params['user_id'], $params['extension'], $original_text)) { $content = ''; if ($params['content_oembed'] == true) { $content = $original_text; } else { $content = '<div class="bebop_activity_container ' . $params['extension'] . '">' . $original_text . '</div>'; } $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>'; $action .= ' ' . __('posted a', 'bebop'); $action .= '<a href="' . $params['actionlink'] . '" target="_blank" rel="external"> ' . __($params['type'], 'bebop_' . $params['extension']); $action .= '</a>: '; $date_imported = gmdate('Y-m-d H:i:s', time()); //extra check to be sure we don't have an empty activity $clean_comment = ''; $clean_comment = trim(strip_tags($content)); //controls how user content is verified. $should_users_verify_content = bebop_tables::get_option_value('bebop_' . $params['extension'] . '_content_user_verification'); if ($should_users_verify_content == 'no') { $oer_status = 'verified'; } else { $oer_status = 'unverified'; } $hide_sitewide = bebop_tables::get_option_value('bebop_' . $params['extension'] . '_hide_sitewide'); if ($hide_sitewide == 'yes') { $oer_hide_sitewide = 1; } else { $oer_hide_sitewide = 0; } if (!empty($clean_comment)) { if (bebop_filters::day_increase($params['extension'], $params['user_id'], $params['username'])) { if ($wpdb->query($wpdb->prepare('INSERT INTO ' . bp_core_get_table_prefix() . 'bp_bebop_oer_manager ( user_id, status, type, action, content, secondary_item_id, date_imported, date_recorded, hide_sitewide ) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s )', $wpdb->escape($params['user_id']), $oer_status, $wpdb->escape($params['extension']), $wpdb->escape($action), $wpdb->escape($content), $wpdb->escape($params['item_id']), $wpdb->escape($date_imported), $wpdb->escape($params['raw_date']), $wpdb->escape($oer_hide_sitewide)))) { $id = $wpdb->insert_id; //if users shouldn't verify content, add it to the activity stream immediately. if ($should_users_verify_content == 'no') { $new_activity_item = array('user_id' => $params['user_id'], 'component' => 'bebop_oer_plugin', 'type' => $params['extension'], 'action' => $action, 'content' => $content, 'item_id' => $id, 'date_recorded' => $date_imported, 'hide_sitewide' => $oer_hide_sitewide); if (bp_activity_add($new_activity_item)) { bebop_tables::update_oer_data($id, 'activity_stream_id', $activity_stream_id = $wpdb->insert_id); } } return true; } else { bebop_tables::log_error(__('Importer', 'bebop'), __('Import query error', 'bebop')); } } else { bebop_tables::log_error(__('Importer', 'bebop'), __('Could not import as a daycounter could not be found.', 'bebop')); } } else { bebop_tables::log_error(__('Importer', 'bebop'), __('Could not import, content already exists.', 'bebop')); } } } } return false; }
function bebop_rss_import($extension, $user_metas = null) { global $wpdb, $bp; $itemCounter = 0; if (empty($extension)) { bebop_tables::log_general('Importer', 'The $extension parameter is empty.'); return false; } else { $this_extension = bebop_extensions::bebop_get_extension_config_by_name($extension); } require_once ABSPATH . WPINC . '/class-feed.php'; //if user_metas is not defined, get some user meta. if (!isset($user_metas)) { $user_metas = bebop_tables::get_user_ids_from_meta_type($this_extension['name']); } else { $secondary_importers = true; } if (isset($user_metas)) { foreach ($user_metas as $user_meta) { //Ensure the user is wanting to import items. if (bebop_tables::get_user_meta_value($user_meta->user_id, 'bebop_' . $this_extension['name'] . '_active_for_user')) { if (isset($secondary_importers) && $secondary_importers === true) { $feeds = bebop_tables::get_initial_import_feeds($user_meta->user_id, $this_extension['name']); $user_feeds = bebop_tables::get_user_feeds_from_array($user_meta->user_id, $this_extension['name'], $feeds); } else { $user_feeds = bebop_tables::get_user_feeds($user_meta->user_id, $this_extension['name']); } foreach ($user_feeds as $user_feed) { $errors = null; $items = null; $feed_name = $user_feed->meta_name; $feed_url = $user_feed->meta_value; $import_username = stripslashes($feed_name); //Check the user has not gone past their import limit for the day. if (!bebop_filters::import_limit_reached($this_extension['name'], $user_meta->user_id, $import_username)) { if (bebop_tables::check_for_first_import($user_meta->user_id, $this_extension['name'], 'bebop_' . $this_extension['name'] . '_' . $import_username . '_do_initial_import')) { bebop_tables::delete_from_first_importers($user_meta->user_id, $this_extension['name'], 'bebop_' . $this_extension['name'] . '_' . $import_username . '_do_initial_import'); } /* * ****************************************************************************************************************** * Depending on the data source, you will need to switch how the data is retrieved. If the feed is RSS, use the * * SimplePie method, as shown in the youtube extension. If the feed is oAuth API based, use the oAuth implementation* * as shown in the twitter extension. If the feed is an API without oAuth authentication, use SlideShare * * ****************************************************************************************************************** */ //import the url //Configure the feed $feed = new SimplePie(); $feed->set_feed_url($feed_url); $feed->set_cache_class('WP_Feed_Cache'); $feed->set_file_class('WP_SimplePie_File'); $feed->enable_cache(false); $feed->set_cache_duration(0); do_action_ref_array('wp_feed_options', array($feed, $feed_url)); $feed->init(); $feed->handle_content_type(); /* * ****************************************************************************************************************** * We can get as far as loading the items, but you will need to adjust the values of the variables below to match * * the values from the extension's feed. * * This is because each feed return data under different parameter names, and the simplest way to get around this is* * to quickly match the values. To find out what values you should be using, consult the provider's documentation. * * You can also contact us if you get stuck - details are in the 'support' section of the admin homepage. * * ****************************************************************************************************************** * * Values you will need to check and update are: * $errors - Must point to the error boolean value (true/false) * $id - Must be the ID of the item returned through the data feed. * $description - The actual content of the imported item. * $item_published - The time the item was published. * $action_link - This is where the link will point to - i.e. where the user can click to get more info. */ //Edit the following variables to point to where the relevant content is being stored in the feed: $errors = $feed->error; if (!$errors) { //Edit the following variable to point to where the relevant content is being stored in the feed: $items = $feed->get_items(); if ($items) { foreach ($items as $item) { if (!bebop_filters::import_limit_reached($this_extension['name'], $user_meta->user_id, $import_username)) { //Edit the following variables to point to where the relevant content is being stored: //$description = $item->get_content(); $item_published = date('Y-m-d H:i:s', strtotime($item->get_date())); $title = $item->get_title(); $action_link = $item->get_permalink(); $id_array = array_reverse(explode('/', $action_link)); $id = $id_array[1]; //Stop editing - you should be all done. //generate an $item_id $item_id = bebop_generate_secondary_id($user_meta->user_id, $id, $item_published); //if the id is not found, import the content. if (!bebop_tables::check_existing_content_id($user_meta->user_id, $this_extension['name'], $item_id)) { $item_content = $title . ' ' . $action_link; if (bebop_create_buffer_item(array('user_id' => $user_meta->user_id, 'extension' => $this_extension['name'], 'type' => $this_extension['content_type'], 'username' => $import_username, 'content' => $item_content, 'content_oembed' => $this_extension['content_oembed'], 'item_id' => $item_id, 'raw_date' => $item_published, 'actionlink' => $action_link))) { $itemCounter++; } } //End if ( ! empty( $secondary->secondary_item_id ) ) { } unset($item); } } } else { bebop_tables::log_error(sprintf(__('Importer - %1$s', 'bebop'), $this_extension['display_name']), sprintf(__('RSS Error: %1$s', 'bebop'), $errors)); } } } //End foreach ($user_feeds as $user_feed ) { unset($user_meta); } } } //return the result return $itemCounter . ' ' . $this_extension['content_type'] . 's'; }
function bebop_slideshare_import($extension, $user_metas = null) { global $wpdb, $bp; $itemCounter = 0; if (empty($extension)) { bebop_tables::log_general('Importer', 'The $extension parameter is empty.'); return false; } else { if (!bebop_tables::check_option_exists('bebop_' . $extension . '_consumer_key')) { bebop_tables::log_general('Importer', 'No consumer key was found for ' . $extension); return false; } else { $this_extension = bebop_extensions::bebop_get_extension_config_by_name($extension); } } //if user_metas is not defined, get some user meta. if (!isset($user_metas)) { $user_metas = bebop_tables::get_user_ids_from_meta_type($this_extension['name']); } else { $secondary_importers = true; } if (isset($user_metas)) { foreach ($user_metas as $user_meta) { //Ensure the user is currently wanting to import items. if (bebop_tables::get_user_meta_value($user_meta->user_id, 'bebop_' . $this_extension['name'] . '_active_for_user') == 1) { if (isset($secondary_importers) && $secondary_importers === true) { $user_feeds = bebop_tables::get_initial_import_feeds($user_meta->user_id, $this_extension['name']); } else { $user_feeds = bebop_tables::get_user_feeds($user_meta->user_id, $this_extension['name']); } foreach ($user_feeds as $user_feed) { $errors = null; $items = null; //extract the username as appropriate if (isset($secondary_importers) && $secondary_importers === true) { $username = $user_feed; } else { $username = $user_feed->meta_value; } $import_username = str_replace(' ', '_', $username); //Check the user has not gone past their import limit for the day. if (!bebop_filters::import_limit_reached($this_extension['name'], $user_meta->user_id, $import_username)) { if (bebop_tables::check_for_first_import($user_meta->user_id, $this_extension['name'], 'bebop_' . $this_extension['name'] . '_' . $import_username . '_do_initial_import')) { bebop_tables::delete_from_first_importers($user_meta->user_id, $this_extension['name'], 'bebop_' . $this_extension['name'] . '_' . $import_username . '_do_initial_import'); } /* * ****************************************************************************************************************** * Depending on the data source, you will need to switch how the data is retrieved. If the feed is RSS, use the * * SimplePie method, as shown in the youtube extension. If the feed is oAuth API based, use the oAuth implementation* * as shown in thr twitter extension. If the feed is an API without oAuth authentication, use SlideShare * * ****************************************************************************************************************** */ //We are not using oauth for slideshare - so just build the api request and send it using our bebop-data class. //If you are using a service that uses oAuth, then use the oAuth class and set the paramaters required for the request. //These are custom for slideshare - edit these to match the paremeters required by the API. $data_request = new bebop_data(); $params = array('api_key' => bebop_tables::get_option_value('bebop_' . $this_extension['name'] . '_consumer_key'), 'ts' => time(), 'hash' => sha1(bebop_tables::get_option_value('bebop_' . $this_extension['name'] . '_consumer_secret') . time()), 'username_for' => $import_username); $data = $data_request->execute_request($this_extension['data_feed'], $params); $data = simplexml_load_string($data); /* * ****************************************************************************************************************** * We can get as far as loading the items, but you will need to adjust the values of the variables below to match * * the values from the extension's feed. * * This is because each feed return data under different parameter names, and the simplest way to get around this is* * to quickly match the values. To find out what values you should be using, consult the provider's documentation. * * You can also contact us if you get stuck - details are in the 'support' section of the admin homepage. * * ****************************************************************************************************************** * * Values you will need to check and update are: * $errors - Must point to the error value * $items - Must point to the items that will be imported into the plugin. * $id - Must be the ID of the item returned through the data feed. * $description - The actual content of the imported item. * $item_published - The time the item was published. * $action_link - This is where the link will point to - i.e. where the user can click to get more info. */ //Edit the following variable to point to where the relevant content is being stored in in the returned data: $errors = $data->Message; if (!$errors) { //Edit the following variable to point to where the relevant content is being stored in the : $items = $data->Slideshow; foreach ($items as $item) { if (!bebop_filters::import_limit_reached($this_extension['name'], $user_meta->user_id, $import_username)) { //Edit the following variables to point to where the relevant content is being stored: $id = $item->ID; $description = $item->Description; $item_published = gmdate('Y-m-d H:i:s', strtotime($item->Created)); $action_link = $item->URL; //Stop editing - you should be all done. //generate an $item_id $item_id = bebop_generate_secondary_id($user_meta->user_id, $id, $item_published); //if the id is not found, import the content. if (!bebop_tables::check_existing_content_id($user_meta->user_id, $this_extension['name'], $item_id)) { //Only for content which has a description. if (!empty($description)) { //This manually puts the link and description together with a line break, which is needed for oembed. $item_content = $action_link . ' ' . $description; } else { $item_content = $action_link; } if (bebop_create_buffer_item(array('user_id' => $user_meta->user_id, 'extension' => $this_extension['name'], 'type' => $this_extension['content_type'], 'username' => $import_username, 'content' => $item_content, 'content_oembed' => $this_extension['content_oembed'], 'item_id' => $item_id, 'raw_date' => $item_published, 'actionlink' => $action_link))) { $itemCounter++; } } //End if ( ! empty( $secondary->secondary_item_id ) ) { } unset($item); } } else { bebop_tables::log_error(sprintf(__('Importer - %1$s', 'bebop'), $this_extension['display_name']), sprintf(__('Feed Error: %1$s', 'bebop'), $errors)); } } unset($user_feed); } //End foreach ($user_feeds as $user_feed ) { } unset($user_meta); } } //return the result return $itemCounter . ' ' . $this_extension['content_type'] . 's'; }
} //Check that the importers queue isn't empty, then start calling the import functions if (!empty($importers[0])) { bebop_tables::log_general(__('Main Importer', 'bebop'), __('Main importer service started.', 'bebop')); $return_array = array(); foreach ($importers as $extension) { if (bebop_tables::get_option_value('bebop_' . strtolower($extension) . '_provider') == 'on') { if (file_exists(WP_PLUGIN_DIR . '/bebop/extensions/' . strtolower($extension) . '/import.php')) { include_once WP_PLUGIN_DIR . '/bebop/extensions/' . strtolower($extension) . '/import.php'; if (function_exists('bebop_' . strtolower($extension) . '_import')) { $return_array[] = call_user_func('bebop_' . strtolower($extension) . '_import', strtolower($extension)); } else { bebop_tables::log_error(__('Main Importer', 'bebop'), sprintf(__('The function: bebop_%1$s_import does not exist.', 'bebop'), strtolower($extension))); } } else { bebop_tables::log_error(__('Main Importer', 'bebop'), sprintf(__('The function: %1$s/import.php does not exist.', 'bebop'), WP_PLUGIN_DIR . '/bebop/extensions/' . strtolower($extension))); } } unset($extension); } $log_array = array(); foreach ($return_array as $key => $value) { if (!empty($value)) { $log_array[] = $value; } } $log_results = implode(', ', $log_array); if (!empty($log_results)) { $message = sprintf(__('Main importer service completed. Imported %1$s.', 'bebop'), $log_results); echo $message; } else {
function bebop_get_extension_configs() { $config = array(); $extensions = bebop_extensions::bebop_gather_extensions(); foreach ($extensions as $extension_path) { if (file_exists($extension_path . 'config.php')) { include_once $extension_path . 'config.php'; $extension_name = bebop_extensions::bebop_get_extension_name_from_path($extension_path); if (function_exists('get_' . $extension_name . '_config')) { $config[] = call_user_func('get_' . $extension_name . '_config'); } else { bebop_tables::log_error(__('Extension Error', 'bebop'), sprintf(__('Could not find the method "get_%1$s_config" for the %1$s extension.', 'bebop'), $extension_name)); } } else { bebop_tables::log_error(__('Extension Error', 'bebop'), sprintf(__('Could not find a "config.php" file in %1$s.', 'bebop'), $extension_path)); } } return $config; }
function remove_option($option_name) { //function to remove an option from the options table. global $wpdb; if (bebop_tables::check_option_exists($option_name) == true) { $wpdb->get_results('DELETE FROM ' . bp_core_get_table_prefix() . "bp_bebop_options WHERE option_name = '" . $wpdb->escape($option_name) . "' LIMIT 1"); return true; } else { bebop_tables::log_error(__('bebop_option_error', 'bebop'), sprintf(__('option: %1$s does not exist.', 'bebop'), $option_name)); return false; } }