Setup initialization sequence, autoloader, and basic Daemon request
This commit is contained in:
parent
c50904c49c
commit
9f81309dee
21 changed files with 390 additions and 189 deletions
54
classes/LBRY_Admin.php
Normal file
54
classes/LBRY_Admin.php
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
/**
|
||||
* Class for intializing and displaying all admin settings
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
class LBRY_Admin
|
||||
{
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to initialize the settings interface
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function settings_init()
|
||||
{
|
||||
add_action('admin_menu', array($this, 'create_options_page'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the options page in the WP admin interface
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function create_options_page()
|
||||
{
|
||||
add_options_page(
|
||||
__('LBRYPress Settings', 'lbrypress'),
|
||||
__('LBRYPress', 'lbrypress'),
|
||||
'manage_options',
|
||||
'LBRYPress',
|
||||
array($this, 'options_page_html')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Options Page HTML for the plugin
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function options_page_html()
|
||||
{
|
||||
require_once(LBRY_URI . '/templates/options_page.php');
|
||||
}
|
||||
}
|
101
classes/LBRY_Daemon.php
Normal file
101
classes/LBRY_Daemon.php
Normal file
|
@ -0,0 +1,101 @@
|
|||
<?php
|
||||
/**
|
||||
* Main class for the Daemon setup
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
class LBRY_Daemon
|
||||
{
|
||||
private static $instance = null;
|
||||
private $address = 'localhost:5279';
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an unused wallet address
|
||||
* @return string Unused wallet address in base58
|
||||
*/
|
||||
public function wallet_unused_address()
|
||||
{
|
||||
$result = json_decode($this->request('wallet_unused_address'));
|
||||
return $result->result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the balance of a current LBRY wallet
|
||||
* @param string $address Wallet Address
|
||||
* @return float Wallet Balance
|
||||
*/
|
||||
public function wallet_balance($address)
|
||||
{
|
||||
return $this->request('wallet_balance', array(
|
||||
'address' => $address,
|
||||
'include_unconfirmed' => false
|
||||
));
|
||||
}
|
||||
|
||||
private function request($method, $params = array())
|
||||
{
|
||||
// JSONify our request data
|
||||
$data = array(
|
||||
'method' => $method,
|
||||
'params' => $params
|
||||
);
|
||||
$data = json_encode($data);
|
||||
|
||||
// Send it via curl
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $this->address);
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
|
||||
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
|
||||
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
||||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Temporary placeholder function for daemon. Not currently in use.
|
||||
* @return [type] [description]
|
||||
*/
|
||||
private function download_daemon()
|
||||
{
|
||||
$output_filename = "lbrydaemon";
|
||||
|
||||
$host = "http://build.lbry.io/daemon/build-6788_commit-5099e19_branch-lbryum-refactor/mac/lbrynet";
|
||||
$fp = fopen(LBRY_URI . '/' . $output_filename, 'w+');
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $host);
|
||||
curl_setopt($ch, CURLOPT_VERBOSE, 1);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_FILE, $fp);
|
||||
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
|
||||
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
||||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
fclose($fp);
|
||||
|
||||
$filepath = LBRY_URI . '/' . $output_filename;
|
||||
|
||||
|
||||
`chmod +x {$filepath}`;
|
||||
error_log(`{$filepath} status`);
|
||||
`{$filepath} start &`;
|
||||
}
|
||||
}
|
21
classes/LBRY_Daemon_Logger.php
Normal file
21
classes/LBRY_Daemon_Logger.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* A class for logging LBRY Daemon interactions
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
class LBRY_Daemon_Logger
|
||||
{
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
}
|
21
classes/LBRY_Network.php
Normal file
21
classes/LBRY_Network.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* Class for connecting with the LBRY Network
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
class LBRY_Network
|
||||
{
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
}
|
21
classes/LBRY_Network_Parser.php
Normal file
21
classes/LBRY_Network_Parser.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* Parses wordpress posts to be ready for the LBRY Network
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
class LBRY_Network_Parser
|
||||
{
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
}
|
21
classes/LBRY_Network_Publisher.php
Normal file
21
classes/LBRY_Network_Publisher.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* Class for publishing to the LBRY Network
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
class LBRY_Network_Publisher
|
||||
{
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
}
|
21
classes/LBRY_Notifier.php
Normal file
21
classes/LBRY_Notifier.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* Class for sending LBRYPress related admin notifications
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
class LBRY_Notifier
|
||||
{
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
}
|
23
classes/LBRY_Speech.php
Normal file
23
classes/LBRY_Speech.php
Normal file
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
/**
|
||||
* Connects to an spee.ch style server to host assets via the LBRY Protocol
|
||||
*
|
||||
* Visit https://github.com/lbryio/spee.ch for more info
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
class LBRY_Speech_Parser
|
||||
{
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
}
|
21
classes/LBRY_Speech_Parser.php
Normal file
21
classes/LBRY_Speech_Parser.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* Parses post markup in order to use specified spee.ch url for assets
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
class LBRY_Speech_Parser
|
||||
{
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Class for intializing and displaying all admin settings
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRY_Admin')) {
|
||||
class LBRY_Admin
|
||||
{
|
||||
public function settings_init()
|
||||
{
|
||||
add_action('admin_menu', array($this, 'create_options_page'));
|
||||
}
|
||||
|
||||
public function create_options_page()
|
||||
{
|
||||
add_options_page(
|
||||
__('LBRYPress Settings', 'lbrypress'),
|
||||
__('LBRYPress', 'lbrypress'),
|
||||
'manage_options',
|
||||
'LBRYPress',
|
||||
array($this, 'options_page_html')
|
||||
);
|
||||
}
|
||||
|
||||
public function options_page_html()
|
||||
{
|
||||
require_once(LBRY_URI . '/templates/options_page.php');
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Class for sending LBRYPress related admin notifications
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRY_Notifier')) {
|
||||
class LBRY_Notifier
|
||||
{
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Main class for the Daemon setup
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRY_Daemon')) {
|
||||
class LBRY_Daemon
|
||||
{
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* A class for logging LBRY Daemon interactions
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRY_Daemon_Logger')) {
|
||||
class LBRY_Daemon_Logger
|
||||
{
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Class for connecting with the LBRY Network
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRY_Network')) {
|
||||
class LBRY_Network
|
||||
{
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Parses wordpress posts to be ready for the LBRY Network
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRY_Network_Parser')) {
|
||||
class LBRY_Network_Parser
|
||||
{
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Class for publishing to the LBRY Network
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRY_Network_Publisher')) {
|
||||
class LBRY_Network_Publisher
|
||||
{
|
||||
}
|
||||
}
|
|
@ -6,8 +6,17 @@
|
|||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRY_Post_Handler')) {
|
||||
class LBRY_Post_Handler
|
||||
{
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,65 +5,57 @@
|
|||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRYPress')) {
|
||||
class LBRYPress
|
||||
{
|
||||
// Employ Singleton pattern to preserve single instance
|
||||
private static $instance = null;
|
||||
|
||||
public static function get_instance()
|
||||
{
|
||||
if (null == self::$instance) {
|
||||
// Create the object
|
||||
if (self::$instance === null) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
// Create instances of all necessary classes
|
||||
private $LBRY_Admin;
|
||||
|
||||
private function __construct()
|
||||
/**
|
||||
* Set up all hooks and actions necessary for the plugin to run
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function init()
|
||||
{
|
||||
$this->require_dependencies();
|
||||
$this->LBRY_Admin = new LBRY_Admin();
|
||||
// Initialize the admin interface
|
||||
$LBRY_Admin = LBRY_Admin::get_instance();
|
||||
$LBRY_Admin->settings_init();
|
||||
|
||||
|
||||
$this->LBRY_Admin->settings_init();
|
||||
|
||||
$this->download_daemon();
|
||||
$LBRY_Daemon = LBRY_Daemon::get_instance();
|
||||
}
|
||||
|
||||
private function require_dependencies()
|
||||
/**
|
||||
* Run during plugin activation
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function activate()
|
||||
{
|
||||
require_once(LBRY_URI . '/classes/admin/lbry_admin.php');
|
||||
$LBRY_Daemon = LBRY_Daemon::get_instance();
|
||||
|
||||
// Add options to the options table we need
|
||||
if (! get_option(LBRY_WALLET)) {
|
||||
$wallet_address = $LBRY_Daemon->wallet_unused_address();
|
||||
add_option(LBRY_WALLET, $wallet_address);
|
||||
}
|
||||
|
||||
private function download_daemon()
|
||||
|
||||
error_log('Activated');
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up on deactivation
|
||||
* @return [type] [description]
|
||||
*/
|
||||
public function deactivate()
|
||||
{
|
||||
$output_filename = "lbrydaemon";
|
||||
|
||||
$host = "http://build.lbry.io/daemon/build-6788_commit-5099e19_branch-lbryum-refactor/mac/lbrynet";
|
||||
$fp = fopen(LBRY_URI . '/' . $output_filename, 'w+');
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $host);
|
||||
curl_setopt($ch, CURLOPT_VERBOSE, 1);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_FILE, $fp);
|
||||
curl_setopt($ch, CURLOPT_AUTOREFERER, false);
|
||||
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
||||
curl_setopt($ch, CURLOPT_HEADER, 0);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
fclose($fp);
|
||||
|
||||
$filepath = LBRY_URI . '/' . $output_filename;
|
||||
|
||||
|
||||
`chmod +x {$filepath}`;
|
||||
error_log(`{$filepath} status`);
|
||||
`{$filepath} start &`;
|
||||
}
|
||||
error_log('Deactivated');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Connects to an spee.ch style server to host assets via the LBRY Protocol
|
||||
*
|
||||
* Visit https://github.com/lbryio/spee.ch for more info
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRY_Speech')) {
|
||||
class LBRY_Speech_Parser
|
||||
{
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Parses post markup in order to use specified spee.ch url for assets
|
||||
*
|
||||
* @package LBRYPress
|
||||
*/
|
||||
|
||||
if (! class_exists('LBRY_Speech_Parser')) {
|
||||
class LBRY_Speech_Parser
|
||||
{
|
||||
}
|
||||
}
|
|
@ -31,6 +31,9 @@ define('LBRY_URI', dirname(__FILE__));
|
|||
define('LBRY_REQUIRED_PHP_VERSION', '5.3'); // TODO: Figure out what versions we actually need
|
||||
define('LBRY_REQUIRED_WP_VERSION', '3.1');
|
||||
|
||||
// Library Options Names
|
||||
define('LBRY_WALLET', 'lbry_wallet');
|
||||
|
||||
/**
|
||||
* Checks if the system requirements are met
|
||||
*
|
||||
|
@ -62,18 +65,41 @@ function lbry_requirements_error()
|
|||
require_once(LBRY_URI . '/templates/requirements-error.php');
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Autoloader Registration
|
||||
*/
|
||||
function lbry_autoload_register($class)
|
||||
{
|
||||
$file_name = LBRY_URI . '/classes/' . $class . '.php';
|
||||
|
||||
if (file_exists($file_name)) {
|
||||
require $file_name;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
spl_autoload_register('lbry_autoload_register');
|
||||
|
||||
/**
|
||||
* Check requirements and load main class
|
||||
* The main program needs to be in a separate file that only gets loaded if the plugin requirements are met. Otherwise older PHP installations could crash when trying to parse it.
|
||||
*/
|
||||
if (lbry_requirements_met()) {
|
||||
require_once(dirname(__FILE__) . '/classes/lbrypress.php');
|
||||
add_action('init', function () {
|
||||
LBRYPress::get_instance()->init();
|
||||
});
|
||||
|
||||
if (class_exists('LBRYPress')) {
|
||||
$lbryPress = LBRYPress::get_instance();
|
||||
// register_activation_hook(__FILE__, array( $lbryPress, 'activate' ));
|
||||
// register_deactivation_hook(__FILE__, array( $lbryPress, 'deactivate' ));
|
||||
}
|
||||
register_activation_hook(__FILE__, function () {
|
||||
LBRYPress::get_instance()->activate();
|
||||
});
|
||||
|
||||
register_deactivation_hook(__FILE__, function () {
|
||||
LBRYPress::get_instance()->deactivate();
|
||||
});
|
||||
} else {
|
||||
add_action('admin_notices', 'lbry_requirements_error');
|
||||
}
|
||||
|
||||
/**
|
||||
* Admin Set up
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue