diff --git a/.gitignore b/.gitignore
index 46dc632..70d3e4c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,7 @@
.DS_Store
tmp/*
+logs/*
!*.gitkeep
diff --git a/classes/LBRY_Daemon.php b/classes/LBRY_Daemon.php
index 79da492..61ccda6 100644
--- a/classes/LBRY_Daemon.php
+++ b/classes/LBRY_Daemon.php
@@ -9,10 +9,18 @@ class LBRY_Daemon
{
private $address = 'localhost:5279';
+ private $logger = null;
+
/**
* LBRY Daemon Object constructor
*/
public function __construct()
+ {
+ $this->logger = new LBRY_Daemon_Logger();
+ $this->init();
+ }
+
+ public function init()
{
}
@@ -23,8 +31,14 @@ class LBRY_Daemon
*/
public function wallet_unused_address()
{
- $result = $this->request('wallet_unused_address');
- return $result->result;
+ try {
+ $result = $this->request('wallet_unused_address');
+ return $result->result;
+ } catch (LBRYDaemonException $e) {
+ $this->logger->log('wallet_unused_address error', $e->getMessage() . ' | Code: ' . $e->getCode());
+ LBRY()->notice->set_notice('error', 'Issue getting unused wallet address.');
+ return;
+ }
}
/**
@@ -35,8 +49,14 @@ class LBRY_Daemon
*/
public function wallet_balance()
{
- $result = $this->request('wallet_balance');
- return $result->result;
+ try {
+ $result = $this->request('wallet_balance');
+ return $result->result;
+ } catch (LBRYDaemonException $e) {
+ $this->logger->log('wallet_balance error', $e->getMessage() . ' | Code: ' . $e->getCode());
+ LBRY()->notice->set_notice('error', 'Issue getting wallet address.');
+ return;
+ }
}
/**
@@ -45,8 +65,14 @@ class LBRY_Daemon
*/
public function channel_list()
{
- $result = $this->request('channel_list')->result;
- return empty($result) ? null : $result;
+ try {
+ $result = $this->request('channel_list')->result;
+ return empty($result) ? null : $result;
+ } catch (LBRYDaemonException $e) {
+ $this->logger->log('channel_list error', $e->getMessage() . ' | Code: ' . $e->getCode());
+ LBRY()->notice->set_notice('error', 'Issue retrieving channel list.');
+ return;
+ }
}
/**
@@ -69,15 +95,20 @@ class LBRY_Daemon
$channel_name = '@' . $channel_name;
- $result = $this->request(
- 'channel_new',
- array(
- 'channel_name' => $channel_name,
- 'amount' => floatval($bid_amount)
- )
- );
- $this->check_for_errors($result);
- return $result->result;
+ try {
+ $result = $this->request(
+ 'channel_new',
+ array(
+ 'channel_name' => $channel_name,
+ 'amount' => floatval($bid_amount)
+ )
+ );
+ return $result->result;
+ } catch (LBRYDaemonException $e) {
+ $this->logger->log('channel_new error', $e->getMessage() . ' | Code: ' . $e->getCode());
+ LBRY()->notice->set_notice('error', 'Issue creating new channel.');
+ return;
+ }
}
/**
@@ -107,15 +138,19 @@ class LBRY_Daemon
}
// TODO: Bring thumbnails into the mix
- $result = $this->request(
- 'publish',
- $args
- );
-
- $this->check_for_errors($result);
- return $result;
+ try {
+ $result = $this->request(
+ 'publish',
+ $args
+ );
+ return $result->result;
+ } catch (LBRYDaemonException $e) {
+ $this->logger->log('wallet_unused_address error', $e->getMessage() . ' | Code: ' . $e->getCode());
+ LBRY()->notice->set_notice('error', 'Issue publishing / updating post to LBRY Network.');
+ return;
+ }
}
-
+
/**
* Sends a cURL request to the LBRY Daemon
* @param string $method The method to call on the LBRY API
@@ -143,8 +178,18 @@ class LBRY_Daemon
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);
+ $response_code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
- return json_decode($result);
+
+ if ($response_code != '200') {
+ $this->logger->log("Damon Connection Issue", "Daemon connection returned response code $response_code");
+ throw new LBRYDaemonException("Daemon Connection Issue", $response_code);
+ }
+
+
+ $result = json_decode($result);
+ $this->check_for_errors($result);
+ return $result;
}
/**
@@ -154,7 +199,10 @@ class LBRY_Daemon
private function check_for_errors($response)
{
if (property_exists($response, 'error')) {
- throw new \Exception($response->error->message, $response->error->code);
+ $message = $response->error->message;
+ $code = $response->error->code;
+ $this->logger->log("Daemon error code $code", $message);
+ throw new LBRYDaemonException($message, $code);
}
}
@@ -162,31 +210,39 @@ class LBRY_Daemon
* Temporary placeholder function for daemon. Not currently in use.
* @return [type] [description]
*/
- private function download_daemon()
+ // private function download_daemon()
+ // {
+ // $output_filename = "lbrydaemon";
+ //
+ // // HACK: Shouldn't just directly download, need to know OS, etc
+ // // TODO: Make sure we are only installing if not there or corrupted
+ // $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 &`;
+ // }
+}
+
+class LBRYDaemonException extends Exception
+{
+ public function __contstruct($message = '', $code = 0, Exception $previous = null)
{
- $output_filename = "lbrydaemon";
-
- // HACK: Shouldn't just directly download, need to know OS, etc
- // TODO: Make sure we are only installing if not there or corrupted
- $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 &`;
+ parent::__construct($message, $code, $previous);
}
}
diff --git a/classes/LBRY_Daemon_Logger.php b/classes/LBRY_Daemon_Logger.php
index 356589b..c984bab 100644
--- a/classes/LBRY_Daemon_Logger.php
+++ b/classes/LBRY_Daemon_Logger.php
@@ -8,9 +8,82 @@
class LBRY_Daemon_Logger
{
/**
- * [__construct description]
+ * The directory to log to
+ * @var string
*/
- public function __construct()
+ private $dir = LBRY_ABSPATH . 'logs/';
+
+ /**
+ * The filename to log to
+ * @var string
+ */
+ private $filename;
+
+ /**
+ * The file ext
+ * @var string
+ */
+ private $ext = '.log';
+
+ /**
+ * Max size of the file before rotating
+ * @var int
+ */
+ private $maxsize = 15728640; // 15MB;
+
+ /**
+ * @param string $filename unique name for this logger to log to
+ */
+ public function __construct($filename = 'daemon')
{
+ $this->filename = $filename;
+ }
+
+ /**
+ * Log to a file, with file size maximum. Adds hashs to old files
+ *
+ * @param string $event
+ * @param string $text
+ */
+ public function log($event, $message = null)
+ {
+ $filepath = $this->dir . $this->filename . $this->ext;
+
+ // If our file is past our size limit, stash it
+ if (file_exists($filepath) && filesize($filepath) > $this->maxsize) {
+ rename($filepath, $this->dir . $this->filename . time() . $this->ext);
+
+ $logfiles = scandir($this->dir);
+
+ // If we have to many files, delete the oldest one
+ if (count($logfiles) > 7) {
+ $oldest = PHP_INT_MAX;
+ foreach ($logfiles as $file) {
+ if (!strstr($file, $this->filename)) {
+ continue;
+ }
+
+ $stamp = substr($file, strlen($this->filename));
+ $stamp = str_replace($this->ext, '', $stamp);
+ if ($stamp && $stamp < $oldest) {
+ $oldest = $stamp;
+ }
+ }
+
+ foreach ($logfiles as $file) {
+ if (strstr($file, $this->filename) && strstr($file, $oldest)) {
+ unlink($this->dir . $file);
+ break;
+ }
+ }
+ }
+ }
+
+ $date = date('Y-m-d H:i:s');
+ $space = str_repeat(' ', strlen($date) + 1);
+ $data = date('Y-m-d H:i:s') . " ";
+ $data .= "EVENT: " . $event . PHP_EOL;
+ $data .= $space . "MESSAGE: " . $message . PHP_EOL;
+ file_put_contents($filepath, $data, FILE_APPEND);
}
}
diff --git a/classes/LBRY_Speech.php b/classes/LBRY_Speech.php
index 5ed6c07..8b9f5cf 100644
--- a/classes/LBRY_Speech.php
+++ b/classes/LBRY_Speech.php
@@ -52,7 +52,7 @@ class LBRY_Speech
return;
}
- // error_log('======================== START =====================');
+ error_log('======================== START =====================');
$speech_url = get_option(LBRY_SETTINGS)[LBRY_SPEECH];
@@ -132,8 +132,8 @@ class LBRY_Speech
$images = empty($images[0]) ? array() : $images[0];
$videos = empty($videos[0]) ? array() : $videos[0];
- // error_log(print_r($images, true));
- // error_log(print_r($videos, true));
+ error_log(print_r($images, true));
+ error_log(print_r($videos, true));
// TODO: only create media objects if hasn't been uploaded. IE check meta here
// Throw each image into a media object
@@ -142,16 +142,18 @@ class LBRY_Speech
// Looks for wp image class first, if not, pull id from source
if (preg_match('/wp-image-([0-9]+)/i', $image, $class_id)) {
$attachment_id = absint($class_id[1]);
- // error_log('found with wp-image: ' . $attachment_id);
+ error_log('found with wp-image: ' . $attachment_id);
} elseif (preg_match('/src="((?:https?:)?\/\/[^"]+)"/', $image, $src) && $this->is_local($src[1])) {
$attachment_id = $this->rigid_attachment_url_to_postid($src[1]);
- // error_log('found with url: ' . $attachment_id);
+ error_log('found with url: ' . $attachment_id);
}
if ($attachment_id) {
// Create main image media object
$meta = wp_get_attachment_metadata($attachment_id);
+ error_log(print_r($meta, true));
+
// If we don't have meta, get out because none of this will work
if (!$meta) {
break;
diff --git a/classes/LBRY_Speech_Parser.php b/classes/LBRY_Speech_Parser.php
index 6a3007c..30d999c 100644
--- a/classes/LBRY_Speech_Parser.php
+++ b/classes/LBRY_Speech_Parser.php
@@ -26,6 +26,8 @@ class LBRY_Speech_Parser
$new_sources = $sources;
$sizes = $image_meta['sizes'];
+ error_log(print_r($image_meta, true));
+
foreach ($sources as $width => $source) {
$speech_url = $this->find_speech_url($sizes, $width);
@@ -43,51 +45,51 @@ class LBRY_Speech_Parser
public function replace_urls_with_speech($content)
{
- // Find all images
- preg_match_all('/]+>/', $content, $images);
-
- // Check to make sure we have results
- $images = empty($images[0]) ? array() : $images[0];
-
- foreach ($images as $image) {
- $attachment_id = null;
- // Looks for wp image class first, if not, pull id from source
- if (preg_match('/wp-image-([0-9]+)/i', $image, $class_id)) {
- $attachment_id = absint($class_id[1]);
- } elseif (preg_match('/src="((?:https?:)?\/\/[^"]+)"/', $image, $src) && $this->is_local($src[1])) {
- $attachment_id = $this->rigid_attachment_url_to_postid($src[1]);
- }
-
- // Look for size class
- if (!preg_match('/wp-image-([0-9]+)/i', $image, $class_id)) {
- }
- if ($attachment_id) {
- // Create main image media object
- $meta = wp_get_attachment_metadata($attachment_id);
-
- // If we don't have meta, get out because none of this will work
- if (!$meta) {
- break;
- }
-
- if (!$this->is_published($meta)) {
- $all_media[] = new LBRY_Speech_Media($attachment_id);
- }
-
- // COMBAK: find a way to make this more efficient?
- // Create a media object for each image size
- // Get images sizes for this attachment, as not all image sizes implemented
- $image_sizes = wp_get_attachment_metadata($attachment_id)['sizes'];
-
- foreach ($image_sizes as $size => $meta) {
- if (!$this->is_published($meta)) {
- $all_media[] = new LBRY_Speech_Media($attachment_id, array('image_size' => $size));
- }
- }
- }
- }
- }
- error_log(print_r($content, true));
+ // // Find all images
+ // preg_match_all('/]+>/', $content, $images);
+ //
+ // // Check to make sure we have results
+ // $images = empty($images[0]) ? array() : $images[0];
+ //
+ // foreach ($images as $image) {
+ // $attachment_id = null;
+ // // Looks for wp image class first, if not, pull id from source
+ // if (preg_match('/wp-image-([0-9]+)/i', $image, $class_id)) {
+ // $attachment_id = absint($class_id[1]);
+ // } elseif (preg_match('/src="((?:https?:)?\/\/[^"]+)"/', $image, $src) && $this->is_local($src[1])) {
+ // $attachment_id = $this->rigid_attachment_url_to_postid($src[1]);
+ // }
+ //
+ // // Look for size class
+ // if (!preg_match('/wp-image-([0-9]+)/i', $image, $class_id)) {
+ // }
+ //
+ // if ($attachment_id) {
+ // // Create main image media object
+ // $meta = wp_get_attachment_metadata($attachment_id);
+ //
+ // // If we don't have meta, get out because none of this will work
+ // if (!$meta) {
+ // break;
+ // }
+ //
+ // if (!$this->is_published($meta)) {
+ // $all_media[] = new LBRY_Speech_Media($attachment_id);
+ // }
+ //
+ // // COMBAK: find a way to make this more efficient?
+ // // Create a media object for each image size
+ // // Get images sizes for this attachment, as not all image sizes implemented
+ // $image_sizes = wp_get_attachment_metadata($attachment_id)['sizes'];
+ //
+ // foreach ($image_sizes as $size => $meta) {
+ // if (!$this->is_published($meta)) {
+ // $all_media[] = new LBRY_Speech_Media($attachment_id, array('image_size' => $size));
+ // }
+ // }
+ // }
+ // }
+ // error_log(print_r($content, true));
return $content;
}
@@ -109,8 +111,6 @@ class LBRY_Speech_Parser
return false;
}
-
-
private function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
diff --git a/logs/.gitkeep b/logs/.gitkeep
new file mode 100644
index 0000000..e69de29