From 3124d6a61b8013abde6f9f85f6a8b22a5f8ddfdd Mon Sep 17 00:00:00 2001 From: MrCasual Date: Mon, 23 Nov 2015 12:56:23 -0500 Subject: [PATCH] - Fixes issue with ucwords() function on older PHP versions - Updates Supervisor/Daemon to strip port from site_url() when it's running on localhost inside a virtual machine :) --- lib/Config/PublicAPI.php | 3 ++- lib/Queue/Daemon.php | 2 +- lib/Queue/Supervisor.php | 11 ++++++++++- lib/Util/Helpers.php | 26 ++++++++++++++++++++------ 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/lib/Config/PublicAPI.php b/lib/Config/PublicAPI.php index e4b80a11a7..5bbc1094f5 100644 --- a/lib/Config/PublicAPI.php +++ b/lib/Config/PublicAPI.php @@ -2,6 +2,7 @@ namespace MailPoet\Config; use MailPoet\Queue\Daemon; +use MailPoet\Util\Helpers; if(!defined('ABSPATH')) exit; @@ -11,7 +12,7 @@ class PublicAPI { $this->api = isset($_GET['mailpoet-api']) ? true : false; $this->section = isset($_GET['section']) ? $_GET['section'] : false; $this->action = isset($_GET['action']) ? - str_replace('_', '', lcfirst(ucwords($_GET['action'], '_'))) : + Helpers::underscoreToCamelCase($_GET['action']) : false; $this->payload = isset($_GET['payload']) ? json_decode(urldecode($_GET['payload']), true) : diff --git a/lib/Queue/Daemon.php b/lib/Queue/Daemon.php index da795dea22..5f6c0fb745 100644 --- a/lib/Queue/Daemon.php +++ b/lib/Queue/Daemon.php @@ -85,7 +85,7 @@ class Daemon { 'user-agent' => 'MailPoet (www.mailpoet.com)' ); wp_remote_get( - site_url() . + Supervisor::getSiteUrl() . '/?mailpoet-api§ion=queue&action=run&payload=' . urlencode($payload), $args ); diff --git a/lib/Queue/Supervisor.php b/lib/Queue/Supervisor.php index eb4d497fcb..609433410c 100644 --- a/lib/Queue/Supervisor.php +++ b/lib/Queue/Supervisor.php @@ -52,7 +52,7 @@ class Supervisor { ) ); wp_remote_get( - site_url() . + self::getSiteUrl() . '/?mailpoet-api§ion=queue&action=start&payload=' . urlencode($payload), $args @@ -87,4 +87,13 @@ class Supervisor { throw new \Exception('Database has not been configured.'); } } + + static function getSiteUrl() { + if(!preg_match('!:/!', site_url())) return site_url(); + preg_match('!http://(?P.*?):(?P\d+)!', site_url(), $server); + $fp = fsockopen($server['host'], $server['port'], $errno, $errstr, 1); + return ($fp) ? + site_url() : + preg_replace('/(?=:\d+):\d+/', '$1', site_url()); + } } \ No newline at end of file diff --git a/lib/Util/Helpers.php b/lib/Util/Helpers.php index 53f98283ba..28a98a7c40 100644 --- a/lib/Util/Helpers.php +++ b/lib/Util/Helpers.php @@ -76,12 +76,18 @@ class Helpers { static function getMaxPostSize($bytes = false) { $maxPostSize = ini_get('post_max_size'); if(!$bytes) return $maxPostSize; - switch (substr ($maxPostSize, -1)) - { - case 'M': case 'm': return (int)$maxPostSize * 1048576; - case 'K': case 'k': return (int)$maxPostSize * 1024; - case 'G': case 'g': return (int)$maxPostSize * 1073741824; - default: return $maxPostSize; + switch (substr($maxPostSize, -1)) { + case 'M': + case 'm': + return (int) $maxPostSize * 1048576; + case 'K': + case 'k': + return (int) $maxPostSize * 1024; + case 'G': + case 'g': + return (int) $maxPostSize * 1073741824; + default: + return $maxPostSize; } } @@ -164,4 +170,12 @@ class Helpers { } return $resultArray; } + + static function underscoreToCamelCase($str, $capitalise_first_char = false) { + if($capitalise_first_char) { + $str[0] = strtoupper($str[0]); + } + $func = create_function('$c', 'return strtoupper($c[1]);'); + return preg_replace_callback('/_([a-z])/', $func, $str); + } } \ No newline at end of file