2018-09-01 01:50:29 +02:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Class for connecting with the LBRY Network
|
|
|
|
*
|
|
|
|
* @package LBRYPress
|
|
|
|
*/
|
|
|
|
|
|
|
|
class LBRY_Network
|
|
|
|
{
|
2018-10-12 03:21:49 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* The Publishing Object
|
|
|
|
* @var LBRY_Network_Publisher
|
|
|
|
*/
|
|
|
|
public $publisher = null;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The Parsing Object
|
|
|
|
* @var LBRY_Network_Parser
|
|
|
|
*/
|
|
|
|
public $parser = null;
|
|
|
|
|
2018-09-11 22:10:15 +02:00
|
|
|
public function __construct()
|
2018-09-01 01:50:29 +02:00
|
|
|
{
|
2018-10-12 03:21:49 +02:00
|
|
|
$this->publisher = new LBRY_Network_Publisher();
|
|
|
|
$this->parser = new LBRY_Network_Parser();
|
|
|
|
|
|
|
|
$this->post_meta_setup();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets up everything for the post meta boxes
|
|
|
|
*/
|
|
|
|
private function post_meta_setup()
|
|
|
|
{
|
|
|
|
// Add the meta boxes
|
|
|
|
add_action('add_meta_boxes', array($this, 'add_meta_boxes'));
|
|
|
|
|
|
|
|
// Save the post meta on 'save_post' hook
|
2018-11-01 18:13:55 +01:00
|
|
|
add_action('wp_insert_post', array($this, 'save_post_meta'), 11, 2);
|
2018-10-12 03:21:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds the meta boxes to the post editing backend
|
|
|
|
*/
|
|
|
|
public function add_meta_boxes()
|
|
|
|
{
|
2018-11-01 18:13:55 +01:00
|
|
|
// IDEA: Support post types based on user selection
|
2018-10-12 03:21:49 +02:00
|
|
|
add_meta_box(
|
|
|
|
'lbry-network-publishing', // Unique ID
|
|
|
|
'LBRY Network', // Title
|
|
|
|
array($this, 'meta_box_html'), // Callback function
|
|
|
|
'post', // Screen Options (or post type)
|
|
|
|
'side', // Context
|
2018-10-12 05:59:01 +02:00
|
|
|
'high' // Priority
|
2018-10-12 03:21:49 +02:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handles saving the post meta that is relative to publishing to the LBRY Network
|
2018-10-12 22:31:23 +02:00
|
|
|
* @param int $post_id The ID of the post we are saving
|
|
|
|
* @param WP_Post $post The Post Object we are saving
|
2018-11-09 19:34:12 +01:00
|
|
|
* @return int Returns post_id if user cannot edit post
|
2018-10-12 03:21:49 +02:00
|
|
|
*/
|
2018-10-12 05:59:01 +02:00
|
|
|
public function save_post_meta($post_id, $post)
|
2018-10-12 03:21:49 +02:00
|
|
|
{
|
2018-11-01 18:13:55 +01:00
|
|
|
if ($post->post_type != 'post') {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2018-10-12 05:59:01 +02:00
|
|
|
// Verify the nonce before proceeding.
|
|
|
|
if (!isset($_POST['_lbrynonce']) || !wp_verify_nonce($_POST['_lbrynonce'], 'lbry_publish_channels')) {
|
|
|
|
return $post_id;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check if the current user has permission to edit the post.
|
|
|
|
$post_type = get_post_type_object($post->post_type);
|
|
|
|
if (!current_user_can($post_type->cap->edit_post, $post_id)) {
|
|
|
|
return $post_id;
|
|
|
|
}
|
|
|
|
|
2018-10-12 22:31:23 +02:00
|
|
|
$will_publish = (isset($_POST[LBRY_WILL_PUBLISH]) ? $_POST[LBRY_WILL_PUBLISH] : false);
|
|
|
|
$new_channel = (isset($_POST[LBRY_POST_CHANNEL]) ? $_POST[LBRY_POST_CHANNEL] : null);
|
|
|
|
$cur_channel = get_post_meta($post_id, LBRY_POST_CHANNEL, true);
|
2018-10-12 05:59:01 +02:00
|
|
|
|
2018-10-12 22:31:23 +02:00
|
|
|
// Update meta acordingly
|
|
|
|
if (!$will_publish) {
|
|
|
|
update_post_meta($post_id, LBRY_WILL_PUBLISH, 'false');
|
|
|
|
} else {
|
|
|
|
update_post_meta($post_id, LBRY_WILL_PUBLISH, 'true');
|
|
|
|
}
|
|
|
|
if ($new_channel !== $cur_channel) {
|
|
|
|
update_post_meta($post_id, LBRY_POST_CHANNEL, $new_channel);
|
2018-10-12 05:59:01 +02:00
|
|
|
}
|
2018-10-12 08:22:20 +02:00
|
|
|
|
2018-11-14 22:01:44 +01:00
|
|
|
if ($will_publish && $post->post_status == 'publish') {
|
2018-10-12 22:31:23 +02:00
|
|
|
// Publish the post on the LBRY Network
|
|
|
|
$this->publisher->publish($post, get_post_meta($post_id, LBRY_POST_CHANNEL, true));
|
|
|
|
}
|
2018-10-12 03:21:49 +02:00
|
|
|
}
|
|
|
|
|
2018-10-12 22:31:23 +02:00
|
|
|
/**
|
|
|
|
* Returns the HTML for the LBRY Meta Box
|
2018-11-09 19:34:12 +01:00
|
|
|
* @param WP_POST $post
|
2018-10-12 22:31:23 +02:00
|
|
|
*/
|
2018-10-12 05:59:01 +02:00
|
|
|
public function meta_box_html($post)
|
2018-10-12 03:21:49 +02:00
|
|
|
{
|
|
|
|
require_once(LBRY_ABSPATH . 'templates/meta_box.php');
|
2018-09-01 01:50:29 +02:00
|
|
|
}
|
|
|
|
}
|