0.3
This commit is contained in:
parent
e0d8a2a052
commit
46e6d74d67
7 changed files with 302 additions and 58 deletions
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -1,3 +0,0 @@
|
|||
[submodule "lib/acTwitterConversation"]
|
||||
path = lib/acTwitterConversation
|
||||
url = https://github.com/adriancrepaz/acTwitterConversation.git
|
|
@ -141,7 +141,6 @@ class Keyring_500px_Reactions extends Keyring_Reactions_Base {
|
|||
*/
|
||||
function get_comments ( &$post_id, &$silo_id ) {
|
||||
$baseurl = sprintf("https://api.500px.com/v1/photos/%s/comments", $silo_id);
|
||||
|
||||
$results = $this->request ( $baseurl, 'comments' );
|
||||
if ($results && is_array($results) && !empty($results)) {
|
||||
$auto = ( $this->get_option( 'auto_approve' ) == 1 ) ? 1 : 0;
|
||||
|
@ -173,6 +172,31 @@ class Keyring_500px_Reactions extends Keyring_Reactions_Base {
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// temporarily hack
|
||||
$baseurl = sprintf( "https://api.500px.com/v1/photos/%s?", $silo_id );
|
||||
$params = array(
|
||||
'comments' => 1,
|
||||
);
|
||||
$starturl = $baseurl . http_build_query( $params );
|
||||
$result = $this->request ( $starturl, 'photo' );
|
||||
|
||||
if ($result && is_array($result) && !empty($result)) {
|
||||
$geo = array (
|
||||
16 => 'geo_latitude',
|
||||
17 => 'geo_longitude'
|
||||
);
|
||||
|
||||
foreach ($geo as $check => $meta_key ) {
|
||||
if ( isset($result[$check]) && !empty($result[$check])) {
|
||||
update_post_meta ($post_id, $meta_key, $result[$check]);
|
||||
Keyring_Util::debug(sprintf(__('adding geo data for %s','keyring'), $post_id));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -79,13 +79,13 @@ class Keyring_Facebook_Reactions extends Keyring_Reactions_Base {
|
|||
|
||||
$auto = ( $this->get_option( 'auto_approve' ) == 1 ) ? 1 : 0;
|
||||
$type = $this->methods[ 'likes' ];
|
||||
$tpl = __( '<a href="%s" rel="nofollow">%s</a> liked this entry on <a href="https://facebook.com" rel="nofollow">facebook</a>','keyring');
|
||||
|
||||
foreach ( $results as $element ) {
|
||||
|
||||
$avatar = sprintf('https://graph.facebook.com/%s/picture', $element->id );
|
||||
$author_url = 'https://facebook.com/' . $element->id;
|
||||
$name = $element->name;
|
||||
$tpl = __( '<a href="%s" rel="nofollow">%s</a> liked this entry on <a href="https://facebook.com" rel="nofollow">facebook</a>','keyring');
|
||||
|
||||
$c = array (
|
||||
'comment_author' => $name,
|
||||
|
|
169
importers/keyring-reactions-instagram.php
Normal file
169
importers/keyring-reactions-instagram.php
Normal file
|
@ -0,0 +1,169 @@
|
|||
<?php
|
||||
|
||||
function Keyring_Instagram_Reactions() {
|
||||
|
||||
class Keyring_Instagram_Reactions extends Keyring_Reactions_Base {
|
||||
const SLUG = 'instagram_reactions';
|
||||
const LABEL = 'Instagram - comments and likes';
|
||||
const KEYRING_SERVICE = 'Keyring_Service_Instagram';
|
||||
const KEYRING_NAME = 'instagram';
|
||||
const REQUESTS_PER_LOAD = 3; // How many remote requests should be made before reloading the page?
|
||||
const NUM_PER_REQUEST = 50; // Number of images per request to ask for
|
||||
|
||||
const SILONAME = 'instagram.com';
|
||||
|
||||
function __construct() {
|
||||
$this->methods = array (
|
||||
// method name => comment type
|
||||
'likes' => 'like',
|
||||
'comments' => 'comment'
|
||||
);
|
||||
|
||||
//$this->methods = array ('votes', 'favs', 'comments');
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
function make_all_requests( $method, $post ) {
|
||||
extract($post);
|
||||
|
||||
if (empty($post_id))
|
||||
return new Keyring_Error(
|
||||
'keyring-instagram-reactions-missing-post-id',
|
||||
__( 'Missing post ID to make request for.', 'keyring')
|
||||
);
|
||||
|
||||
if (empty($syndication_url))
|
||||
return new Keyring_Error(
|
||||
'keyring-instagram-reactions-missing-syndication-url',
|
||||
__( 'Missing syndication URL.', 'keyring')
|
||||
);
|
||||
|
||||
// get media id here
|
||||
$api = file_get_contents(sprintf('https://api.instagram.com/oembed?url=%s', $syndication_url));
|
||||
$apiObj = json_decode($api,true);
|
||||
if ( !isset($apiObj['media_id']) || empty($apiObj['media_id']))
|
||||
return new Keyring_Error(
|
||||
'keyring-instagram-reactions-photo-id-not-found',
|
||||
__( 'Cannot get photo ID out of syndication URL.', 'keyring' )
|
||||
);
|
||||
|
||||
$silo_id = $apiObj['media_id'];
|
||||
|
||||
$func = 'get_' . $method;
|
||||
if ( !method_exists( $this, $func ) )
|
||||
return new Keyring_Error(
|
||||
'keyring-instagram-reactions-missing-func',
|
||||
sprintf(__( 'Function is missing for this method (%s), cannot proceed!', 'keyring'), $method)
|
||||
);
|
||||
|
||||
return $this->$func ( $post_id, $silo_id );
|
||||
}
|
||||
|
||||
/**
|
||||
* LIKES
|
||||
*/
|
||||
|
||||
function get_likes ( $post_id, $silo_id ) {
|
||||
$baseurl = sprintf ('https://api.instagram.com/v1/media/%s/likes?', $silo_id );
|
||||
|
||||
$params = array(
|
||||
'access_token' => $this->service->token->token,
|
||||
);
|
||||
|
||||
$url = $baseurl . http_build_query( $params );
|
||||
$data = $this->service->request( $url, array( 'method' => $this->request_method, 'timeout' => 10 ) );
|
||||
|
||||
if ( Keyring_Util::is_error( $data ) )
|
||||
Keyring_Util::Debug (json_encode($data));
|
||||
|
||||
if ($data->data && is_array($data->data) && !empty($data->data)) {
|
||||
|
||||
$auto = ( $this->get_option( 'auto_approve' ) == 1 ) ? 1 : 0;
|
||||
$type = $this->methods[ 'likes' ];
|
||||
$tpl = __( '<a href="%s" rel="nofollow">%s</a> liked this entry on <a href="https://instagram.com" rel="nofollow">instagram</a>','keyring');
|
||||
|
||||
foreach ( $data->data as $element ) {
|
||||
|
||||
$name = empty($element->full_name) ? $element->username : $element->full_name;
|
||||
$email = $element->username .'@'. self::SILONAME;
|
||||
$avatar = empty ($element->profile_picture) ? '' : $element->profile_picture;
|
||||
$author_url = 'https://instagram.com/' . $element->username;
|
||||
|
||||
$c = array (
|
||||
'comment_author' => $name,
|
||||
'comment_author_url' => $author_url,
|
||||
'comment_author_email' => $email,
|
||||
'comment_post_ID' => $post_id,
|
||||
'comment_type' => $type,
|
||||
//'comment_date' => date("Y-m-d H:i:s", $element->favedate ),
|
||||
//'comment_date_gmt' => date("Y-m-d H:i:s", $element->favedate ),
|
||||
'comment_agent' => get_class($this),
|
||||
'comment_approved' => $auto,
|
||||
'comment_content' => sprintf( $tpl, $author_url, $name ),
|
||||
);
|
||||
|
||||
$this->insert_comment ( $post_id, $c, $element, $avatar);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* COMMENTS
|
||||
*/
|
||||
|
||||
function get_comments ( $post_id, $silo_id ) {
|
||||
$baseurl = sprintf ('https://api.instagram.com/v1/media/%s/comments?', $silo_id );
|
||||
|
||||
$params = array(
|
||||
'access_token' => $this->service->token->token,
|
||||
);
|
||||
|
||||
$url = $baseurl . http_build_query( $params );
|
||||
$data = $this->service->request( $url, array( 'method' => $this->request_method, 'timeout' => 10 ) );
|
||||
|
||||
if ( Keyring_Util::is_error( $data ) )
|
||||
Keyring_Util::Debug (json_encode($data));
|
||||
|
||||
|
||||
if ($data->data && is_array($data->data) && !empty($data->data)) {
|
||||
|
||||
$auto = ( $this->get_option( 'auto_approve' ) == 1 ) ? 1 : 0;
|
||||
$type = $this->methods[ 'comments' ];
|
||||
|
||||
foreach ( $data->data as $element ) {
|
||||
|
||||
$name = empty($element->from->full_name) ? $element->from->username : $element->from->full_name;
|
||||
$email = $element->from->username .'@'. self::SILONAME;
|
||||
$avatar = empty ($element->from->profile_picture) ? '' : $element->from->profile_picture;
|
||||
$author_url = 'https://instagram.com/' . $element->from->username;
|
||||
|
||||
$c = array (
|
||||
'comment_author' => $name,
|
||||
'comment_author_url' => $author_url,
|
||||
'comment_author_email' => $email,
|
||||
'comment_post_ID' => $post_id,
|
||||
'comment_type' => $type,
|
||||
'comment_date' => date("Y-m-d H:i:s", $element->created_time ),
|
||||
'comment_date_gmt' => date("Y-m-d H:i:s", $element->created_time ),
|
||||
'comment_agent' => get_class($this),
|
||||
'comment_approved' => $auto,
|
||||
'comment_content' => $element->text
|
||||
);
|
||||
|
||||
$this->insert_comment ( $post_id, $c, $element, $avatar);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
|
||||
add_action( 'init', function() {
|
||||
Keyring_Instagram_Reactions(); // Load the class code from above
|
||||
keyring_register_reactions(
|
||||
Keyring_Instagram_Reactions::SLUG,
|
||||
'Keyring_Instagram_Reactions',
|
||||
plugin_basename( __FILE__ ),
|
||||
__( 'Import comments and likes from Instagram for your syndicated posts.', 'keyring' )
|
||||
);
|
||||
} );
|
|
@ -51,6 +51,7 @@ abstract class Keyring_Reactions_Base {
|
|||
const KEYRING_NAME = ''; // Keyring service name; SLUG is not used to avoid conflict with Keyring Social Importer
|
||||
const KEYRING_SERVICE = ''; // Full class name of the Keyring_Service this importer requires
|
||||
const REQUESTS_PER_LOAD = 3; // How many posts should queried before moving over to the next branch / reload the page
|
||||
const REQUESTS_PER_AUTO = 16;
|
||||
const KEYRING_VERSION = '1.4'; // Minimum version of Keyring required
|
||||
|
||||
const SILONAME = ''; // identifier for the silo in the syndication_url field entry
|
||||
|
@ -60,7 +61,7 @@ abstract class Keyring_Reactions_Base {
|
|||
|
||||
const SCHEDULE = 'daily'; // this may break many things, careful if you wish to change it
|
||||
const SCHEDULETIME = 36400; // in tandem with the previous
|
||||
const RESCHEDULE = 30;
|
||||
const RESCHEDULE = 60;
|
||||
|
||||
// You shouldn't need to edit (or override) these ones
|
||||
var $step = 'greet';
|
||||
|
@ -100,11 +101,14 @@ abstract class Keyring_Reactions_Base {
|
|||
// additional comment types
|
||||
add_action('admin_comment_types_dropdown', array(&$this, 'comment_types_dropdown'));
|
||||
|
||||
// ...
|
||||
add_filter('get_avatar_comment_types', array( &$this, 'add_comment_types'));
|
||||
|
||||
// additional cron schedules
|
||||
add_filter( 'cron_schedules', array(&$this, 'cron' ));
|
||||
|
||||
// additional avatar filter
|
||||
add_filter( 'get_avatar' , 'Keyring_Reactions_Base::get_avatar' , 1 , 5 );
|
||||
add_filter( 'get_avatar' , array(&$this, 'get_avatar'), 1, 5 );
|
||||
|
||||
// If a request is made for a new connection, pass it off to Keyring
|
||||
if (
|
||||
|
@ -127,11 +131,6 @@ abstract class Keyring_Reactions_Base {
|
|||
$this->service->set_token( $token );
|
||||
}
|
||||
|
||||
// Make sure we have a scheduled job to handle auto-imports if enabled
|
||||
// but delay it for good reasons
|
||||
if ( $this->get_option( 'auto_import' ) && !wp_get_schedule( $this->schedule ) )
|
||||
wp_schedule_event( time() + static::SCHEDULETIME, static::SCHEDULE, $this->schedule );
|
||||
|
||||
// jump to the first worker
|
||||
$this->handle_request();
|
||||
}
|
||||
|
@ -166,6 +165,17 @@ abstract class Keyring_Reactions_Base {
|
|||
return $types;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function add_comment_types ( $types ) {
|
||||
foreach ($this->methods as $method => $type ) {
|
||||
if (!in_array( $type, $types ))
|
||||
array_push( $types, $type );
|
||||
}
|
||||
return $types;
|
||||
}
|
||||
|
||||
/**
|
||||
* add our own, ridiculously intense schedule for chanining all the requests
|
||||
* wee need for the imports
|
||||
|
@ -175,12 +185,14 @@ abstract class Keyring_Reactions_Base {
|
|||
* @return array the filtered WP CRON schedules
|
||||
*/
|
||||
public function cron ( $schedules ) {
|
||||
/*
|
||||
if (!isset($schedules[ $this->optname ])) {
|
||||
$schedules[ $this->optname ] = array(
|
||||
'interval' => static::RESCHEDULE,
|
||||
'display' => sprintf(__( '%s auto import' ), static::SLUG )
|
||||
);
|
||||
}
|
||||
*/
|
||||
return $schedules;
|
||||
}
|
||||
|
||||
|
@ -208,6 +220,7 @@ abstract class Keyring_Reactions_Base {
|
|||
else
|
||||
$safe_alt = esc_attr($alt);
|
||||
|
||||
|
||||
return sprintf( '<img alt="%s" src="%s" class="avatar photo u-photo" style="width: %spx; height: %spx;" />', $safe_alt, $c_avatar, $size, $size );
|
||||
}
|
||||
|
||||
|
@ -217,13 +230,31 @@ abstract class Keyring_Reactions_Base {
|
|||
* done, set $this->step = 'import' to continue, or 'options' to show the options form again.
|
||||
*/
|
||||
protected function handle_request_options() {
|
||||
$bools = array('auto_import','auto_approve');
|
||||
$auto_import = (isset( $_POST['auto_import']) && !empty($_POST['auto_import'])) ? true : false;
|
||||
|
||||
foreach ( $bools as $bool ) {
|
||||
if ( isset( $_POST[$bool] ) )
|
||||
$_POST[$bool] = true;
|
||||
else
|
||||
$_POST[$bool] = false;
|
||||
$auto_approve = (isset( $_POST['auto_approve']) && !empty($_POST['auto_approve'])) ? true : false;
|
||||
|
||||
/*
|
||||
if ( $this->get_option('auto_import') && !wp_get_schedule( $this->schedule ) ) {
|
||||
wp_schedule_event( time() + static::SCHEDULETIME, static::SCHEDULE, $this->schedule );
|
||||
}
|
||||
elseif ( $this->get_option('auto_import') && wp_get_schedule( $this->schedule != static::SCHEDULE ) ) {
|
||||
wp_clear_scheduled_hook ( $this->schedule );
|
||||
wp_schedule_event( time() + static::SCHEDULETIME, static::SCHEDULE, $this->schedule );
|
||||
}
|
||||
elseif ( !$this->get_option('auto_import') ) {
|
||||
Keyring_Util::Debug('Ez most fut?');
|
||||
wp_clear_scheduled_hook ( $this->schedule );
|
||||
}
|
||||
*/
|
||||
|
||||
wp_clear_scheduled_hook ( $this->schedule );
|
||||
|
||||
if ($auto_import) {
|
||||
wp_schedule_event( time() + static::SCHEDULETIME, static::SCHEDULE, $this->schedule );
|
||||
}
|
||||
else {
|
||||
$this->cleanup();
|
||||
}
|
||||
|
||||
// If there were errors, output them, otherwise store options and start importing
|
||||
|
@ -231,12 +262,12 @@ abstract class Keyring_Reactions_Base {
|
|||
$this->step = 'greet';
|
||||
} else {
|
||||
$this->set_option( array(
|
||||
'auto_import' => (bool) $_POST['auto_import'],
|
||||
'auto_approve' => (bool) $_POST['auto_approve'],
|
||||
'limit_posts' => sanitize_text_field($_POST['limit_posts']),
|
||||
'auto_import' => $auto_import,
|
||||
'auto_approve' => $auto_approve,
|
||||
'limit_posts' => sanitize_text_field($_POST['limit_posts']),
|
||||
) );
|
||||
|
||||
$this->step = 'import';
|
||||
$this->step = 'done';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -300,7 +331,7 @@ abstract class Keyring_Reactions_Base {
|
|||
$this->options = array_merge( (array) $this->options, $name );
|
||||
else if ( is_null( $name ) && is_null( $val ) ) { // $name = null to reset all options
|
||||
$this->options = array();
|
||||
wp_unschedule_event( time(), $this->schedule );
|
||||
wp_clear_scheduled_hook ( $this->schedule );
|
||||
}
|
||||
else if ( is_null( $val ) && isset( $this->options[ $name ] ) )
|
||||
unset( $this->options[ $name ] );
|
||||
|
@ -379,9 +410,9 @@ abstract class Keyring_Reactions_Base {
|
|||
}
|
||||
|
||||
// If we're "refreshing", then just act like it's an auto import
|
||||
if ( isset( $_POST['refresh'] ) ) {
|
||||
$this->auto_import = true;
|
||||
}
|
||||
//if ( isset( $_POST['refresh'] ) ) {
|
||||
// $this->auto_import = true;
|
||||
//}
|
||||
|
||||
// Write a custom request handler in the extending class here
|
||||
// to handle processing/storing options for import. Make sure to
|
||||
|
@ -414,7 +445,6 @@ abstract class Keyring_Reactions_Base {
|
|||
case 'greet':
|
||||
$this->greet();
|
||||
break;
|
||||
|
||||
case 'options':
|
||||
$this->options();
|
||||
break;
|
||||
|
@ -423,6 +453,7 @@ abstract class Keyring_Reactions_Base {
|
|||
break;
|
||||
case 'import_single':
|
||||
$this->do_single_import();
|
||||
break;
|
||||
case 'done':
|
||||
$this->done();
|
||||
break;
|
||||
|
@ -738,16 +769,20 @@ abstract class Keyring_Reactions_Base {
|
|||
* one-by-one so one iteration of the WP CRON event will not take that long
|
||||
* and may not cause issues later on.
|
||||
*/
|
||||
public function do_auto_import() {
|
||||
public function do_auto_import( ) {
|
||||
defined( 'WP_IMPORTING' ) or define( 'WP_IMPORTING', true );
|
||||
do_action( 'import_start' );
|
||||
set_time_limit( 0 );
|
||||
|
||||
Keyring_Util::debug( static::SLUG . sprintf(' auto import: init'));
|
||||
|
||||
// In case auto-import has been disabled, clear all jobs and bail
|
||||
if ( !$this->get_option( 'auto_import' ) ) {
|
||||
Keyring_Util::debug( static::SLUG . sprintf(' auto import: clearing hook'));
|
||||
wp_clear_scheduled_hook( 'keyring_' . static::SLUG . '_import_auto' );
|
||||
return;
|
||||
}
|
||||
|
||||
// Need a token to do anything with this
|
||||
if ( !$this->service->get_token() )
|
||||
return;
|
||||
|
@ -756,13 +791,13 @@ abstract class Keyring_Reactions_Base {
|
|||
require_once ABSPATH . 'wp-admin/includes/post.php';
|
||||
require_once ABSPATH . 'wp-admin/includes/comment.php';
|
||||
|
||||
$this->auto_import = true;
|
||||
$next = 0;
|
||||
$position = 0;
|
||||
$num = 0;
|
||||
|
||||
$this->get_posts();
|
||||
|
||||
if ( !$this->finished ) {
|
||||
while ( !$this->finished && $num < static::REQUESTS_PER_AUTO ) {
|
||||
|
||||
$position = $this->get_option( static::OPTNAME_POSTPOS, 0);
|
||||
if ( !is_array($this->posts) || !isset($this->posts[$position]) )
|
||||
|
@ -772,8 +807,9 @@ abstract class Keyring_Reactions_Base {
|
|||
);
|
||||
|
||||
$todo = $this->posts[$position];
|
||||
$msg = sprintf(__('Starting auto import for #%s', 'keyring'), $todo['post_id']);
|
||||
Keyring_Util::debug($msg);
|
||||
Keyring_Util::debug( static::SLUG . sprintf(' auto import: doing %s/%s', $position, count($this->posts)-1 ));
|
||||
//$msg = sprintf(__('Starting auto import for #%s', 'keyring'), $todo['post_id']);
|
||||
//Keyring_Util::debug($msg);
|
||||
|
||||
foreach ( $this->methods as $method => $type ) {
|
||||
$msg = sprintf(__('Processing %s for post #%s', 'keyring'), $method, $todo['post_id']);
|
||||
|
@ -786,29 +822,30 @@ abstract class Keyring_Reactions_Base {
|
|||
}
|
||||
|
||||
$next = $position+1;
|
||||
$num++;
|
||||
|
||||
// we're done, clean up
|
||||
if ($next >= sizeof($this->posts)) {
|
||||
if ( $next >= count($this->posts) ) {
|
||||
$this->finished = true;
|
||||
$this->cleanup();
|
||||
Keyring_Util::debug( static::SLUG . ' auto import finished' );
|
||||
|
||||
// set the original schedule, starting with the defined next offset
|
||||
wp_reschedule_event( time() + static::SCHEDULETIME, static::SCHEDULE , $this->schedule );
|
||||
break;
|
||||
}
|
||||
// we're not finished yet
|
||||
else {
|
||||
$this->set_option( static::OPTNAME_POSTPOS, $next );
|
||||
Keyring_Util::debug( static::SLUG . ' auto import: there is more coming' );
|
||||
|
||||
// the next run of this very job should be
|
||||
// near immediate, otherwise we'd never finish with all the post;
|
||||
// event this way a few thousand posts will result in issues
|
||||
// for sure, so there has to be something
|
||||
wp_reschedule_event( time() + static::RESCHEDULE , $this->optname, $this->schedule );
|
||||
}
|
||||
}
|
||||
|
||||
Keyring_Util::debug( sprintf ('%s auto import: current batch finised (%s to %s out of %s )', static::SLUG, (int) ($position - static::REQUESTS_PER_AUTO), $position, count($this->posts)-1 ));
|
||||
|
||||
if ( $this->finished || $next >= count($this->posts) ) {
|
||||
Keyring_Util::debug( sprintf ('%s auto import: FINISHED', static::SLUG));
|
||||
$this->cleanup();
|
||||
do_action( 'keyring_import_done', $this->optname );
|
||||
}
|
||||
else {
|
||||
Keyring_Util::debug( sprintf ('%s auto import: Rescheduling event', static::SLUG));
|
||||
wp_schedule_single_event( time() + static::RESCHEDULE, $this->schedule );
|
||||
}
|
||||
|
||||
do_action( 'import_end' );
|
||||
}
|
||||
|
||||
|
@ -968,12 +1005,23 @@ abstract class Keyring_Reactions_Base {
|
|||
do_action( 'keyring_import_done', $this->optname );
|
||||
}
|
||||
|
||||
/**
|
||||
* When they're complete, give them a quick summary and a link back to their website.
|
||||
*/
|
||||
function saved() {
|
||||
$this->header();
|
||||
echo '<h2>' . __( 'Setting saved!', 'keyring' ) . '</h2>';
|
||||
$this->footer();
|
||||
}
|
||||
|
||||
/**
|
||||
* reset internal variables
|
||||
*/
|
||||
function cleanup() {
|
||||
$this->set_option( static::OPTNAME_POSTS, array() );
|
||||
$this->set_option( static::OPTNAME_POSTPOS , 0 );
|
||||
$msg = __('DOING CLEANUP', 'keyring');
|
||||
Keyring_Util::debug($msg);
|
||||
$this->set_option( static::OPTNAME_POSTS );
|
||||
$this->set_option( static::OPTNAME_POSTPOS );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1052,10 +1100,10 @@ abstract class Keyring_Reactions_Base {
|
|||
$comment['comment_author_email'] = filter_var ( $comment['comment_author_email'], FILTER_SANITIZE_EMAIL );
|
||||
$comment['comment_author_url'] = filter_var ( $comment['comment_author_url'], FILTER_SANITIZE_URL );
|
||||
$comment['comment_author'] = filter_var ( $comment['comment_author'], FILTER_SANITIZE_STRING);
|
||||
$comment['comment_content'] = filter_var ( $comment['comment_content'], FILTER_SANITIZE_SPECIAL_CHARS );
|
||||
//$comment['comment_content'] = filter_var ( $comment['comment_content'], FILTER_SANITIZE_SPECIAL_CHARS );
|
||||
|
||||
//test if we already have this imported
|
||||
$args = array(
|
||||
$testargs = array(
|
||||
'author_email' => $comment['comment_author_email'],
|
||||
'post_id' => $post_id,
|
||||
);
|
||||
|
@ -1063,7 +1111,7 @@ abstract class Keyring_Reactions_Base {
|
|||
// so if the type is comment and you add type = 'comment', WP will not return the comments
|
||||
// such logical!
|
||||
if ( $comment['comment_type'] != 'comment')
|
||||
$args['type'] = $comment['comment_type'];
|
||||
$testargs['type'] = $comment['comment_type'];
|
||||
|
||||
// in case it's a fav or a like, the date field is not always present
|
||||
// but there should be only one of those, so the lack of a date field indicates
|
||||
|
@ -1087,7 +1135,7 @@ abstract class Keyring_Reactions_Base {
|
|||
);
|
||||
|
||||
*/
|
||||
$args['date_query'] = $comment['comment_date'];
|
||||
$testargs['date_query'] = $comment['comment_date'];
|
||||
|
||||
//test if we already have this imported
|
||||
Keyring_Util::debug(sprintf(__('checking comment existence for %s (with date) for post #%s','keyring'), $comment['comment_author_email'], $post_id));
|
||||
|
@ -1101,7 +1149,7 @@ abstract class Keyring_Reactions_Base {
|
|||
Keyring_Util::debug(sprintf(__('checking comment existence for %s (no date) for post #%s','keyring'), $comment['comment_author_email'], $post_id));
|
||||
}
|
||||
|
||||
$existing = get_comments($args);
|
||||
$existing = get_comments($testargs);
|
||||
|
||||
// no matching comment yet, insert it
|
||||
if (empty($existing)) {
|
||||
|
@ -1136,8 +1184,6 @@ abstract class Keyring_Reactions_Base {
|
|||
$r = sprintf (__("Already exists: %s from %s for #%s", 'keyring'), $comment['comment_type'], $comment['comment_author'], $post_id );
|
||||
}
|
||||
|
||||
Keyring_Util::debug($r);
|
||||
|
||||
return $comment_id;
|
||||
}
|
||||
|
||||
|
@ -1151,6 +1197,9 @@ function keyring_register_reactions( $slug, $class, $plugin, $info = false ) {
|
|||
$info = __( 'Import reactions from %s and save them as Comments within WordPress.', 'keyring' );
|
||||
|
||||
$name = $class::LABEL;
|
||||
$options = get_option( 'keyring-' . $class::SLUG );
|
||||
if ( !empty( $options['auto_import'] ) && !empty( $options['token'] ) )
|
||||
$name = '✓ ' . $name;
|
||||
|
||||
register_importer(
|
||||
$slug,
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Subproject commit e192896817919b3cd399ac02b70c27c8bad3ce0f
|
10
readme.txt
10
readme.txt
|
@ -1,9 +1,9 @@
|
|||
=== Keyring Reactions Importer ===
|
||||
Contributors: cadeyrn
|
||||
Tags: facebook, flickr, 500px, backfeed, indieweb, comments, likes, favorites
|
||||
Tags: instagram, facebook, flickr, 500px, backfeed, indieweb, comments, likes, favorites
|
||||
Requires at least: 3.0
|
||||
Tested up to: 4.1
|
||||
Stable tag: 0.2
|
||||
Stable tag: 0.3
|
||||
License: GPLv3
|
||||
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
||||
|
||||
|
@ -31,6 +31,7 @@ A [backfeed](http://indiewebcamp.com/backfeed) plugin to have all the reaction f
|
|||
* [500px](https://500px.com/) - comments, favs, likes
|
||||
* [Flickr](https://flickr.com/) - comments, favs
|
||||
* [Facebook](https://facebook.com/) - comments, likes
|
||||
* [Instagram](https://instagram.com) - comments, likes
|
||||
|
||||
The plugin uses the brilliant [Keyring](https://wordpress.org/plugins/keyring/) for handling networks and us based on [Keyring Social Importers](https://wordpress.org/plugins/keyring-social-importers/); both from [Beau Lebens](http://dentedreality.com.au/).
|
||||
|
||||
|
@ -43,6 +44,11 @@ The plugin uses the brilliant [Keyring](https://wordpress.org/plugins/keyring/)
|
|||
|
||||
== Changelog ==
|
||||
|
||||
= 0.3 =
|
||||
*2015-04-16*
|
||||
|
||||
* adding Instagram
|
||||
|
||||
= 0.2 =
|
||||
*2015-03-13*
|
||||
|
||||
|
|
Loading…
Reference in a new issue