commit
9051cb1781
8 changed files with 83 additions and 33 deletions
|
@ -209,13 +209,13 @@ class LBRY_Admin
|
|||
/**
|
||||
* Checks at most once an hour to see if the wallet balance is too low
|
||||
*/
|
||||
// COMBAK: Check user permissions possibly
|
||||
// IDEA: Check user permissions possibly
|
||||
public static function wallet_balance_warning()
|
||||
{
|
||||
// See if we've checked in the past two hours
|
||||
if (!get_transient('lbry_wallet_check')) {
|
||||
$balance = LBRY()->daemon->wallet_balance();
|
||||
if ($balance < LBRY_MIN_BALANCE) {
|
||||
if ($balance < get_option(LBRY_SETTINGS)[LBRY_LBC_PUBLISH] * 20) {
|
||||
// If LBRY Balance is low, send email, but only once per day
|
||||
if (!get_transient('lbry_wallet_warning_email')) {
|
||||
$email = get_option('admin_email');
|
||||
|
|
|
@ -121,7 +121,7 @@ class LBRY_Daemon
|
|||
* @param string $language Two letter ISO Code of the language
|
||||
* @return string $channel The Claim ID of the Channel
|
||||
*/
|
||||
public function publish($name, $bid, $filepath, $title, $description, $language, $channel)
|
||||
public function publish($name, $bid, $filepath, $title, $description, $language, $channel, $thumbnail = false)
|
||||
{
|
||||
$args = array(
|
||||
'name' => $name,
|
||||
|
@ -137,7 +137,10 @@ class LBRY_Daemon
|
|||
$args['channel_id'] = $channel;
|
||||
}
|
||||
|
||||
// TODO: Bring thumbnails into the mix
|
||||
if ($thumbnail) {
|
||||
$args['thumbnail'] = $thumbnail;
|
||||
}
|
||||
|
||||
try {
|
||||
$result = $this->request(
|
||||
'publish',
|
||||
|
@ -145,7 +148,7 @@ class LBRY_Daemon
|
|||
);
|
||||
return $result->result;
|
||||
} catch (LBRYDaemonException $e) {
|
||||
$this->logger->log('wallet_unused_address error', $e->getMessage() . ' | Code: ' . $e->getCode());
|
||||
$this->logger->log('publish error', $e->getMessage() . ' | Code: ' . $e->getCode());
|
||||
LBRY()->notice->set_notice('error', 'Issue publishing / updating post to LBRY Network.');
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ class LBRY_Network
|
|||
add_action('add_meta_boxes', array($this, 'add_meta_boxes'));
|
||||
|
||||
// Save the post meta on 'save_post' hook
|
||||
add_action('save_post', array($this, 'save_post_meta'), 10, 2);
|
||||
add_action('wp_insert_post', array($this, 'save_post_meta'), 11, 2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -48,7 +48,7 @@ class LBRY_Network
|
|||
*/
|
||||
public function add_meta_boxes()
|
||||
{
|
||||
// TODO: Support post types based on user selection
|
||||
// IDEA: Support post types based on user selection
|
||||
add_meta_box(
|
||||
'lbry-network-publishing', // Unique ID
|
||||
'LBRY Network', // Title
|
||||
|
@ -67,6 +67,10 @@ class LBRY_Network
|
|||
*/
|
||||
public function save_post_meta($post_id, $post)
|
||||
{
|
||||
if ($post->post_type != 'post') {
|
||||
return;
|
||||
}
|
||||
|
||||
// Verify the nonce before proceeding.
|
||||
if (!isset($_POST['_lbrynonce']) || !wp_verify_nonce($_POST['_lbrynonce'], 'lbry_publish_channels')) {
|
||||
return $post_id;
|
||||
|
|
|
@ -18,7 +18,7 @@ class LBRY_Network_Parser
|
|||
// COMBAK: Composer is not safe in a wordpress environment. May have to write our own package.
|
||||
require_once LBRY_ABSPATH . 'vendor/autoload.php';
|
||||
$this->converter = new HtmlConverter(array(
|
||||
'strip_tags' => true
|
||||
'strip_tags' => false
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ class LBRY_Network_Publisher
|
|||
* @param int $post_id The ID of the post we are publishing
|
||||
* @param string $channel The Claim ID of the channel we are posting to
|
||||
*/
|
||||
// NOTE: This is currently sitting at about 150ms, mostly the post parsing
|
||||
public function publish($post, $channel)
|
||||
{
|
||||
// Leave if nothing to publish to
|
||||
|
@ -32,25 +33,37 @@ class LBRY_Network_Publisher
|
|||
$converted = LBRY()->network->parser->convert_to_markdown($post);
|
||||
$write_status = $file && fwrite($file, $converted);
|
||||
fclose($file);
|
||||
$endtime = microtime(true);
|
||||
|
||||
// TODO: Catch relative exceptions if necessary
|
||||
try {
|
||||
// If everything went well with the conversion, carry on
|
||||
if ($write_status) {
|
||||
$featured_image = get_the_post_thumbnail($post);
|
||||
|
||||
$name = $post->post_name;
|
||||
$bid = floatval(get_option(LBRY_SETTINGS)[LBRY_LBC_PUBLISH]);
|
||||
$title = $post->post_title;
|
||||
$language = substr(get_locale(), 0, 2);
|
||||
$license = get_option(LBRY_SETTINGS)[LBRY_LICENSE];
|
||||
// TODO: See if we can grab from yoast or a default?
|
||||
$description = $post->post_title;
|
||||
// TODO: Bring thumbnails into the mix
|
||||
// $thumbnail = $featured_image ? $featured_image : null;
|
||||
|
||||
LBRY()->daemon->publish($name, $bid, $filepath, $title, $description, $language, $channel);
|
||||
// Setup featured image
|
||||
$featured_id = get_post_thumbnail_id($post);
|
||||
$featured_image = wp_get_attachment_image_src($featured_id, 'medium');
|
||||
$thumbnail = $featured_image[0] ? $featured_image[0] : false;
|
||||
|
||||
// Build description using Yoast if installed and its used, excerpt/title otherwise
|
||||
$description = false;
|
||||
if (class_exists('WPSEO_META')) {
|
||||
$description = WPSEO_META::get_value('opengraph-description', $post->ID);
|
||||
}
|
||||
if (!$description) {
|
||||
$excerpt = get_the_excerpt($post);
|
||||
$description = $excerpt ? $excerpt : $title;
|
||||
}
|
||||
$description .= ' | Originally published at ' . get_permalink($post);
|
||||
|
||||
LBRY()->daemon->publish($name, $bid, $filepath, $title, $description, $language, $channel, $thumbnail);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
error_log('Issue publishing post ' . $post->ID . ' to LBRY: ' . $e->getMessage());
|
||||
} finally {
|
||||
//Delete the temporary markdown file
|
||||
unlink($filepath);
|
||||
|
|
|
@ -21,7 +21,7 @@ class LBRY_Speech
|
|||
|
||||
if (is_admin()) {
|
||||
add_action('save_post', array($this, 'upload_media'), 10, 2);
|
||||
} else {
|
||||
}
|
||||
// Replace the image srcsets
|
||||
add_filter('wp_calculate_image_srcset', array($this->parser, 'replace_image_srcset'), 10, 5);
|
||||
// Core filter for lots of image source calls
|
||||
|
@ -29,7 +29,6 @@ class LBRY_Speech
|
|||
// Replace any left over urls with speech urls
|
||||
add_filter('the_content', array($this->parser, 'replace_urls_with_speech'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Uploads assets to the speech server
|
||||
|
@ -52,7 +51,7 @@ class LBRY_Speech
|
|||
|
||||
$all_media = $this->find_media($post_id);
|
||||
|
||||
// IDEA: Notify user if post save time will take a while, may be a concern for request timeouts
|
||||
// IDEA: Notify user if post save time will take a while
|
||||
if ($all_media) {
|
||||
$requests = array();
|
||||
|
||||
|
|
|
@ -104,11 +104,15 @@ class LBRYPress
|
|||
$this->define('LBRY_WILL_PUBLISH', 'lbry_will_publish'); // The meta key for if to publish to LBRY Network or not
|
||||
$this->define('LBRY_POST_CHANNEL', 'lbry_channel'); // The meta key for which channel to publish
|
||||
$this->define('LBRY_AVAILABLE_LICENSES', array(
|
||||
'mit' => 'MIT',
|
||||
'license2' => 'License 2',
|
||||
'license3' => 'License 3'
|
||||
'Creative Commons Attribution 4.0 International' => 'Creative Commons Attribution 4.0 International',
|
||||
'Creative Commons Attribution-ShareAlike 4.0 International' => 'Creative Commons Attribution-ShareAlike 4.0 International',
|
||||
'Creative Commons Attribution-NoDerivatives 4.0 International' => 'Creative Commons Attribution-NoDerivatives 4.0 International',
|
||||
'Creative Commons Attribution-NonCommercial 4.0 International' => 'Creative Commons Attribution-NonCommercial 4.0 International',
|
||||
'Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International' => 'Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International',
|
||||
'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International' => 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International',
|
||||
'Copyrighted' => 'Copyrighted',
|
||||
'Public Domain' => 'Public Domain'
|
||||
));
|
||||
$this->define('LBRY_MIN_BALANCE', 2000);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -137,8 +141,6 @@ class LBRYPress
|
|||
$this->admin = new LBRY_Admin();
|
||||
$this->notice = new LBRY_Admin_Notice();
|
||||
$this->network = new LBRY_Network();
|
||||
} else {
|
||||
// $this->speech->maybe_rewrite_urls();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -149,6 +151,10 @@ class LBRYPress
|
|||
{
|
||||
register_activation_hook(LBRY_PLUGIN_FILE, array($this, 'activate'));
|
||||
register_deactivation_hook(LBRY_PLUGIN_FILE, array($this, 'deactivate'));
|
||||
|
||||
// Banner output for published posts
|
||||
// NOTE: move this to its own class to reduce clutter?
|
||||
add_action('the_content', array($this, 'published_on_lbry_banner'), 12, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -192,11 +198,32 @@ class LBRYPress
|
|||
*/
|
||||
public function deactivate()
|
||||
{
|
||||
// Deactivate Wallet Balance cron job
|
||||
$this->admin->wallet_balance_deactivate();
|
||||
// TODO: Stop the daemon
|
||||
error_log('Deactivated');
|
||||
}
|
||||
|
||||
public function published_on_lbry_banner($content)
|
||||
{
|
||||
if (!is_single() || !in_the_loop() || !is_main_query()) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
global $post;
|
||||
if ($post->post_type != 'post') {
|
||||
return $content;
|
||||
}
|
||||
|
||||
if (!get_post_meta($post->ID, LBRY_WILL_PUBLISH, true)) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
ob_start();
|
||||
require(LBRY_ABSPATH . 'templates/published_on_lbry_banner.php');
|
||||
$banner = ob_get_clean();
|
||||
|
||||
return $content .= $banner;
|
||||
}
|
||||
|
||||
/*
|
||||
* Utility Functions
|
||||
*/
|
||||
|
|
4
templates/published_on_lbry_banner.php
Normal file
4
templates/published_on_lbry_banner.php
Normal file
|
@ -0,0 +1,4 @@
|
|||
<div class="lbry-published-banner">
|
||||
<h5>This post has also been published to the <a href="https://lbry.io" target="_blank">LBRY blockchain</a> network.</h5>
|
||||
<h5><a href="https://lbry.io/learn" target="_blank">Click Here</a> to learn more about the benefits of content freedom.</h5>
|
||||
</div>
|
Loading…
Reference in a new issue