Fix for PHP7 & Mysql 5.7

- added default values to not null columns
- fixed passing by reference issue on MailChimp->getDataCenter
- fixed a couple unit tests
This commit is contained in:
Jonathan Labreuille
2016-05-16 14:50:43 +02:00
parent 395e95bc54
commit 607a151c23
4 changed files with 25 additions and 14 deletions

View File

@ -59,7 +59,7 @@ class Migrator {
'id mediumint(9) NOT NULL AUTO_INCREMENT,', 'id mediumint(9) NOT NULL AUTO_INCREMENT,',
'name varchar(90) NOT NULL,', 'name varchar(90) NOT NULL,',
'type varchar(90) NOT NULL DEFAULT "default",', 'type varchar(90) NOT NULL DEFAULT "default",',
'description varchar(250) NOT NULL,', 'description varchar(250) NOT NULL DEFAULT "",',
'created_at TIMESTAMP NOT NULL DEFAULT 0,', 'created_at TIMESTAMP NOT NULL DEFAULT 0,',
'deleted_at TIMESTAMP NULL DEFAULT NULL,', 'deleted_at TIMESTAMP NULL DEFAULT NULL,',
'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,', 'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
@ -124,8 +124,8 @@ class Migrator {
$attributes = array( $attributes = array(
'id mediumint(9) NOT NULL AUTO_INCREMENT,', 'id mediumint(9) NOT NULL AUTO_INCREMENT,',
'wp_user_id bigint(20) NULL,', 'wp_user_id bigint(20) NULL,',
'first_name tinytext NOT NULL,', 'first_name tinytext NOT NULL DEFAULT "",',
'last_name tinytext NOT NULL,', 'last_name tinytext NOT NULL DEFAULT "",',
'email varchar(150) NOT NULL,', 'email varchar(150) NOT NULL,',
'status varchar(12) NOT NULL DEFAULT "unconfirmed",', 'status varchar(12) NOT NULL DEFAULT "unconfirmed",',
'created_at TIMESTAMP NOT NULL DEFAULT 0,', 'created_at TIMESTAMP NOT NULL DEFAULT 0,',
@ -156,7 +156,7 @@ class Migrator {
'id mediumint(9) NOT NULL AUTO_INCREMENT,', 'id mediumint(9) NOT NULL AUTO_INCREMENT,',
'subscriber_id mediumint(9) NOT NULL,', 'subscriber_id mediumint(9) NOT NULL,',
'custom_field_id mediumint(9) NOT NULL,', 'custom_field_id mediumint(9) NOT NULL,',
'value varchar(255) NOT NULL,', 'value varchar(255) NOT NULL DEFAULT "",',
'created_at TIMESTAMP NOT NULL DEFAULT 0,', 'created_at TIMESTAMP NOT NULL DEFAULT 0,',
'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,', 'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
'PRIMARY KEY (id),', 'PRIMARY KEY (id),',
@ -168,13 +168,13 @@ class Migrator {
function newsletters() { function newsletters() {
$attributes = array( $attributes = array(
'id mediumint(9) NOT NULL AUTO_INCREMENT,', 'id mediumint(9) NOT NULL AUTO_INCREMENT,',
'subject varchar(250) NOT NULL,', 'subject varchar(250) NOT NULL DEFAULT "",',
'type varchar(20) NOT NULL DEFAULT "standard",', 'type varchar(20) NOT NULL DEFAULT "standard",',
'sender_address varchar(150) NOT NULL,', 'sender_address varchar(150) NOT NULL DEFAULT "",',
'sender_name varchar(150) NOT NULL,', 'sender_name varchar(150) NOT NULL DEFAULT "",',
'reply_to_address varchar(150) NOT NULL,', 'reply_to_address varchar(150) NOT NULL DEFAULT "",',
'reply_to_name varchar(150) NOT NULL,', 'reply_to_name varchar(150) NOT NULL DEFAULT "",',
'preheader varchar(250) NOT NULL,', 'preheader varchar(250) NOT NULL DEFAULT "",',
'body longtext,', 'body longtext,',
'created_at TIMESTAMP NOT NULL DEFAULT 0,', 'created_at TIMESTAMP NOT NULL DEFAULT 0,',
'deleted_at TIMESTAMP NULL DEFAULT NULL,', 'deleted_at TIMESTAMP NULL DEFAULT NULL,',
@ -217,7 +217,7 @@ class Migrator {
'id mediumint(9) NOT NULL AUTO_INCREMENT,', 'id mediumint(9) NOT NULL AUTO_INCREMENT,',
'newsletter_id mediumint(9) NOT NULL,', 'newsletter_id mediumint(9) NOT NULL,',
'option_field_id mediumint(9) NOT NULL,', 'option_field_id mediumint(9) NOT NULL,',
'value varchar(255) NOT NULL,', 'value varchar(255) NOT NULL DEFAULT "",',
'created_at TIMESTAMP NOT NULL DEFAULT 0,', 'created_at TIMESTAMP NOT NULL DEFAULT 0,',
'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,', 'updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,',
'PRIMARY KEY (id),', 'PRIMARY KEY (id),',

View File

@ -121,7 +121,8 @@ class MailChimp {
function getDataCenter($APIKey) { function getDataCenter($APIKey) {
if (!preg_match('/-[a-zA-Z0-9]{3,}/', $APIKey)) return false; if (!preg_match('/-[a-zA-Z0-9]{3,}/', $APIKey)) return false;
// double parantheses: http://phpsadness.com/sad/51 // double parantheses: http://phpsadness.com/sad/51
return end((explode('-', $APIKey))); $key_parts = explode('-', $APIKey);
return end($key_parts);
} }
function getAPIKey($APIKey) { function getAPIKey($APIKey) {

View File

@ -2,6 +2,7 @@
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
use MailPoet\Models\Segment; use MailPoet\Models\Segment;
use MailPoet\Models\Subscriber;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
use MailPoet\Models\NewsletterSegment; use MailPoet\Models\NewsletterSegment;
use MailPoet\Models\NewsletterOptionField; use MailPoet\Models\NewsletterOptionField;
@ -111,10 +112,17 @@ class NewsletterTest extends MailPoetTest {
$sending_queue = SendingQueue::create(); $sending_queue = SendingQueue::create();
$sending_queue->newsletter_id = $this->newsletter->id; $sending_queue->newsletter_id = $this->newsletter->id;
$sending_queue->save(); $sending_queue->save();
$subscriber = Subscriber::createOrUpdate(array(
'email' => 'john.doe@mailpoet.com'
));
$opens = StatisticsOpens::create(); $opens = StatisticsOpens::create();
$opens->subscriber_id = $subscriber->id;
$opens->newsletter_id = $this->newsletter->id; $opens->newsletter_id = $this->newsletter->id;
$opens->queue_id = $sending_queue->id; $opens->queue_id = $sending_queue->id;
$opens->save(); $opens->save();
$newsletter->queue = $newsletter->getQueue()->asArray(); $newsletter->queue = $newsletter->getQueue()->asArray();
$statistics = $newsletter->getStatistics(); $statistics = $newsletter->getStatistics();
expect($statistics->opened)->equals(1); expect($statistics->opened)->equals(1);

View File

@ -53,8 +53,10 @@ class NewslettersTest extends MailPoetTest {
function testItCanSaveAnExistingNewsletter() { function testItCanSaveAnExistingNewsletter() {
$router = new Newsletters(); $router = new Newsletters();
$newsletter_data = $this->newsletter->asArray(); $newsletter_data = array(
$newsletter_data['subject'] = 'My Updated Newsletter'; 'id' => $this->newsletter->id,
'subject' => 'My Updated Newsletter'
);
$response = $router->save($newsletter_data); $response = $router->save($newsletter_data);
expect($response['result'])->true(); expect($response['result'])->true();