Completed
Push — master ( 1d4c1e...2a5bde )
by Jacob
03:22
created
controller/home/ContactController.class.inc.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -60,16 +60,16 @@
 block discarded – undo
60 60
 				'values' => $values);
61 61
 		}
62 62
 
63
-    global $container;
64
-    $sent = $container['mail']
65
-      ->addTo($container['config']->admin_email)
66
-      ->setSubject('Home Page Contact')
67
-      ->setPlainMessage(
68
-        "Name: {$values->name}\n" .
69
-        "Email: {$values->email}\n" .
70
-        "Message: {$values->message}"
71
-      )
72
-      ->send();		
63
+	global $container;
64
+	$sent = $container['mail']
65
+	  ->addTo($container['config']->admin_email)
66
+	  ->setSubject('Home Page Contact')
67
+	  ->setPlainMessage(
68
+		"Name: {$values->name}\n" .
69
+		"Email: {$values->email}\n" .
70
+		"Message: {$values->message}"
71
+	  )
72
+	  ->send();		
73 73
 
74 74
 		return (object) array('display' => 'success');
75 75
 	}
Please login to merge, or discard this patch.
module/form/CommentSubmitModule.class.inc.php 1 patch
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -167,26 +167,26 @@
 block discarded – undo
167 167
 			}
168 168
 		}
169 169
         
170
-        $site = URLDecode::getSite();
170
+		$site = URLDecode::getSite();
171 171
         
172
-        if ($site == 'blog') {
173
-            $subject = "New Comment on Jacob Emerick's Blog";
174
-            $message = "Hello!\nThere has been a new comment on the post '{$this->page_title}' at Jacob Emerick's Blog. You have chosen to be notified of it - please reply to [email protected] if you would like to be removed from these notifications.\n\nOn " . date('F j, Y g:i a') . ", " . Request::getPost('name') . " commented...\n" . Request::getPost('comment') . "\n\nVisit {$this->full_path}#comments to see and reply to all the comments on this post.\nThank you!";
175
-        } else if ($site == 'waterfalls') {
176
-            $subject = "New Comment on Waterfalls of the Keweenaw";
177
-            $message = "Hello!\nThere has been a new comment on the page '{$this->page_title}' at Waterfalls of the Keweenaw. You have chosen to be notified of it - please reply to [email protected] if you would like to be removed from these notifications.\n\nOn " . date('F j, Y g:i a') . ", " . Request::getPost('name') . " commented...\n" . Request::getPost('comment') . "\n\nVisit {$this->full_path}#comments to see and reply to all the comments on this post.\nThank you!";
178
-        }
172
+		if ($site == 'blog') {
173
+			$subject = "New Comment on Jacob Emerick's Blog";
174
+			$message = "Hello!\nThere has been a new comment on the post '{$this->page_title}' at Jacob Emerick's Blog. You have chosen to be notified of it - please reply to [email protected] if you would like to be removed from these notifications.\n\nOn " . date('F j, Y g:i a') . ", " . Request::getPost('name') . " commented...\n" . Request::getPost('comment') . "\n\nVisit {$this->full_path}#comments to see and reply to all the comments on this post.\nThank you!";
175
+		} else if ($site == 'waterfalls') {
176
+			$subject = "New Comment on Waterfalls of the Keweenaw";
177
+			$message = "Hello!\nThere has been a new comment on the page '{$this->page_title}' at Waterfalls of the Keweenaw. You have chosen to be notified of it - please reply to [email protected] if you would like to be removed from these notifications.\n\nOn " . date('F j, Y g:i a') . ", " . Request::getPost('name') . " commented...\n" . Request::getPost('comment') . "\n\nVisit {$this->full_path}#comments to see and reply to all the comments on this post.\nThank you!";
178
+		}
179 179
 
180
-    global $container;
180
+	global $container;
181 181
 
182 182
 		foreach($email_recipient_array as $email_recipient)
183 183
 		{
184
-      $sent = $container['mail']
185
-        ->addTo($email_recipient['email'], $email_recipient['name'])
186
-        ->addBCC($container['config']->admin_email)
187
-        ->setSubject($subject)
188
-        ->setPlainMessage($message)
189
-        ->send();		
184
+	  $sent = $container['mail']
185
+		->addTo($email_recipient['email'], $email_recipient['name'])
186
+		->addBCC($container['config']->admin_email)
187
+		->setSubject($subject)
188
+		->setPlainMessage($message)
189
+		->send();		
190 190
 		}
191 191
 	}
192 192
 
Please login to merge, or discard this patch.
public/index.php 1 patch
Indentation   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -22,28 +22,28 @@
 block discarded – undo
22 22
 
23 23
 // sets up shutdown function to display profiler
24 24
 register_shutdown_function(function () use ($container) {
25
-    if (
26
-        !isset($_COOKIE['debugger']) ||
27
-        $_COOKIE['debugger'] != 'display'
28
-    ) {
29
-        return;
30
-    }
31
-
32
-    $dbProfiles = $container['db_connection_locator']
33
-        ->getRead()
34
-        ->getProfiler()
35
-        ->getProfiles();
36
-    $dbProfiles = array_filter($dbProfiles, function ($profile) {
37
-        return $profile['function'] == 'perform';
38
-    });
39
-    $dbProfiles = array_map(function ($profile) {
40
-        return [
41
-            'sql' => trim(preg_replace('/\s+/', ' ', $profile['statement'])),
42
-            'parameters' => $profile['bind_values'],
43
-            'time' => $profile['duration'],
44
-        ];
45
-    }, $dbProfiles);
46
-    $container['profiler']->setProfiledQueries($dbProfiles);
47
-    $container['profiler']->setDisplay(new Particletree\Pqp\Display());
48
-    $container['profiler']->display($container['db_connection_locator']->getRead());
25
+	if (
26
+		!isset($_COOKIE['debugger']) ||
27
+		$_COOKIE['debugger'] != 'display'
28
+	) {
29
+		return;
30
+	}
31
+
32
+	$dbProfiles = $container['db_connection_locator']
33
+		->getRead()
34
+		->getProfiler()
35
+		->getProfiles();
36
+	$dbProfiles = array_filter($dbProfiles, function ($profile) {
37
+		return $profile['function'] == 'perform';
38
+	});
39
+	$dbProfiles = array_map(function ($profile) {
40
+		return [
41
+			'sql' => trim(preg_replace('/\s+/', ' ', $profile['statement'])),
42
+			'parameters' => $profile['bind_values'],
43
+			'time' => $profile['duration'],
44
+		];
45
+	}, $dbProfiles);
46
+	$container['profiler']->setProfiledQueries($dbProfiles);
47
+	$container['profiler']->setDisplay(new Particletree\Pqp\Display());
48
+	$container['profiler']->display($container['db_connection_locator']->getRead());
49 49
 });
Please login to merge, or discard this patch.
script/cron/fetch-twitter-activity.php 1 patch
Indentation   +23 added lines, -23 removed lines patch added patch discarded remove patch
@@ -6,40 +6,40 @@
 block discarded – undo
6 6
 use Jacobemerick\Web\Domain\Stream\Twitter\MysqlTwitterRepository as TwitterRepository;
7 7
 
8 8
 $client = new TwitterOAuth(
9
-    $config->twitter->consumer_key,
10
-    $config->twitter->consumer_secret,
11
-    $config->twitter->access_token,
12
-    $config->twitter->access_token_secret
9
+	$config->twitter->consumer_key,
10
+	$config->twitter->consumer_secret,
11
+	$config->twitter->access_token,
12
+	$config->twitter->access_token_secret
13 13
 );
14 14
 $client->setDecodeJsonAsArray(true);
15 15
 
16 16
 $twitterRepository = new TwitterRepository($container['db_connection_locator']);
17 17
 
18 18
 $recentTweets = $client->get('statuses/user_timeline', [
19
-    'screen_name' => 'jpemeric',
20
-    'count' => 50,
21
-    'trim_user' => true,
19
+	'screen_name' => 'jpemeric',
20
+	'count' => 50,
21
+	'trim_user' => true,
22 22
 ]);
23 23
 
24 24
 if (isset($recentTweets['errors'])) {
25
-    throw new Exception("Error encountered with twitter api {$recentTweets['errors'][0]['message']}");
25
+	throw new Exception("Error encountered with twitter api {$recentTweets['errors'][0]['message']}");
26 26
 }
27 27
 
28 28
 foreach ($recentTweets as $tweet) {
29
-    $uniqueTweetCheck = $twitterRepository->getTwitterByTweetId($tweet['id_str']);
30
-    if ($uniqueTweetCheck !== false) {
31
-        $currentTweetHash = md5($uniqueTweetCheck['metadata']);
32
-        $newTweetHash = md5(json_encode($tweet));
33
-        if ($uniqueTweetCheck['metadata'] != json_encode($tweet)) {
34
-            $twitterRepository->updateTweetMetadata($tweet['id_str'], $tweet);
35
-        }
36
-        continue;
37
-    }
38
-
39
-    $twitterRepository->insertTweet(
40
-        $tweet['id_str'],
41
-        (new DateTime($tweet['created_at']))->setTimezone($container['default_timezone']),
42
-        $tweet
43
-    );
29
+	$uniqueTweetCheck = $twitterRepository->getTwitterByTweetId($tweet['id_str']);
30
+	if ($uniqueTweetCheck !== false) {
31
+		$currentTweetHash = md5($uniqueTweetCheck['metadata']);
32
+		$newTweetHash = md5(json_encode($tweet));
33
+		if ($uniqueTweetCheck['metadata'] != json_encode($tweet)) {
34
+			$twitterRepository->updateTweetMetadata($tweet['id_str'], $tweet);
35
+		}
36
+		continue;
37
+	}
38
+
39
+	$twitterRepository->insertTweet(
40
+		$tweet['id_str'],
41
+		(new DateTime($tweet['created_at']))->setTimezone($container['default_timezone']),
42
+		$tweet
43
+	);
44 44
 }
45 45
 
Please login to merge, or discard this patch.
controller/blog/PostController.class.inc.php 1 patch
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -48,9 +48,9 @@  discard block
 block discarded – undo
48 48
 		$this->set_keywords($this->get_post_keywords());
49 49
 		$this->set_author(self::$AUTHOR);
50 50
 
51
-    $photo = Content::instance('FetchFirstPhoto', $this->post->body)->activate(true);
52
-    $photo = preg_match('/^<img src="([a-z-:\.\/]+)" [^>]+>$/', $photo, $matches);
53
-    $this->set_head('thumbnail', $matches[1]);
51
+	$photo = Content::instance('FetchFirstPhoto', $this->post->body)->activate(true);
52
+	$photo = preg_match('/^<img src="([a-z-:\.\/]+)" [^>]+>$/', $photo, $matches);
53
+	$this->set_head('thumbnail', $matches[1]);
54 54
 
55 55
 		if (array_key_exists($this->post->id, self::$DEPRECATED_BLOGS)) {
56 56
 			$log_id = self::$DEPRECATED_BLOGS[$this->post->id];
@@ -124,13 +124,13 @@  discard block
 block discarded – undo
124 124
 			
125 125
 			$post = new stdclass();
126 126
 
127
-      if (strpos($post_row->title, 'Rainy Supe Loop') === 0) {
128
-        $title = $post_row->title;
129
-        $title = explode(':', $title);
130
-        $title = array_pop($title);
131
-        $title = trim($title);
132
-        $post->title = $title;
133
-      } else if (strpos($post_row->title, 'Isle Royale') === 0) {
127
+	  if (strpos($post_row->title, 'Rainy Supe Loop') === 0) {
128
+		$title = $post_row->title;
129
+		$title = explode(':', $title);
130
+		$title = array_pop($title);
131
+		$title = trim($title);
132
+		$post->title = $title;
133
+	  } else if (strpos($post_row->title, 'Isle Royale') === 0) {
134 134
 				$title = $post_row->title;
135 135
 				$title = explode(',', $title);
136 136
 				$title = array_pop($title);
Please login to merge, or discard this patch.
bootstrap.php 1 patch
Indentation   +37 added lines, -37 removed lines patch added patch discarded remove patch
@@ -10,7 +10,7 @@  discard block
 block discarded – undo
10 10
 
11 11
 $handle = @fopen($config_path, 'r');
12 12
 if ($handle === false) {
13
-    throw new RuntimeException("Could not load config");
13
+	throw new RuntimeException("Could not load config");
14 14
 }
15 15
 $config = fread($handle, filesize($config_path));
16 16
 fclose($handle);
@@ -18,7 +18,7 @@  discard block
 block discarded – undo
18 18
 $config = json_decode($config);
19 19
 $last_json_error = json_last_error();
20 20
 if ($last_json_error !== JSON_ERROR_NONE) {
21
-    throw new RuntimeException("Could not parse config - JSON error detected");
21
+	throw new RuntimeException("Could not parse config - JSON error detected");
22 22
 }
23 23
 $container['config'] = $config;
24 24
 
@@ -26,64 +26,64 @@  discard block
 block discarded – undo
26 26
 // timezones are fun
27 27
 date_default_timezone_set('America/Phoenix'); // todo - belongs in configuration
28 28
 $container['default_timezone'] = function ($c) {
29
-    return new DateTimeZone('America/Phoenix');
29
+	return new DateTimeZone('America/Phoenix');
30 30
 };
31 31
 
32 32
 
33 33
 // configure the db connections holder
34 34
 $db_connections = new Aura\Sql\ConnectionLocator();
35 35
 $db_connections->setDefault(function () use ($config) {
36
-    $connection = $config->database->slave;
37
-    return new Aura\Sql\ExtendedPdo(
38
-        "mysql:host={$connection->host}",
39
-        $connection->user,
40
-        $connection->password
41
-    );
36
+	$connection = $config->database->slave;
37
+	return new Aura\Sql\ExtendedPdo(
38
+		"mysql:host={$connection->host}",
39
+		$connection->user,
40
+		$connection->password
41
+	);
42 42
 });
43 43
 $db_connections->setWrite('master', function () use ($config) {
44
-    $connection = $config->database->master;
45
-    return new Aura\Sql\ExtendedPdo(
46
-        "mysql:host={$connection->host}",
47
-        $connection->user,
48
-        $connection->password
49
-    );
44
+	$connection = $config->database->master;
45
+	return new Aura\Sql\ExtendedPdo(
46
+		"mysql:host={$connection->host}",
47
+		$connection->user,
48
+		$connection->password
49
+	);
50 50
 });
51 51
 $db_connections->setRead('slave', function () use ($config) {
52
-    $connection = $config->database->slave;
53
-    $pdo = new Aura\Sql\ExtendedPdo(
54
-        "mysql:host={$connection->host}",
55
-        $connection->user,
56
-        $connection->password
57
-    );
58
-
59
-    $profiler = new Aura\Sql\Profiler();
60
-    $profiler->setActive(true);
61
-    $pdo->setProfiler($profiler);
62
-
63
-    return $pdo;
52
+	$connection = $config->database->slave;
53
+	$pdo = new Aura\Sql\ExtendedPdo(
54
+		"mysql:host={$connection->host}",
55
+		$connection->user,
56
+		$connection->password
57
+	);
58
+
59
+	$profiler = new Aura\Sql\Profiler();
60
+	$profiler->setActive(true);
61
+	$pdo->setProfiler($profiler);
62
+
63
+	return $pdo;
64 64
 });
65 65
 $container['db_connection_locator'] = $db_connections;
66 66
 
67 67
 
68 68
 // setup mail handler
69 69
 $container['mail'] = $container->factory(function ($c) {
70
-    return (new Jacobemerick\Archangel\Archangel())->setLogger($c['logger']);
70
+	return (new Jacobemerick\Archangel\Archangel())->setLogger($c['logger']);
71 71
 });
72 72
 
73 73
 
74 74
 // setup the logger
75 75
 $container['setup_logger'] = $container->protect(function ($name) use ($container) {
76
-    $logger = new Monolog\Logger($name);
76
+	$logger = new Monolog\Logger($name);
77 77
 
78
-    $logPath = __DIR__ . "/../logs/{$name}.log";
79
-    $streamHandler = new Monolog\Handler\StreamHandler($logPath, Monolog\Logger::INFO);
80
-    $streamHandler->setFormatter(
81
-        new Monolog\Formatter\LineFormatter("[%datetime%] %channel%.%level_name%: %message%\n")
82
-    );
83
-    $logger->pushHandler($streamHandler);
78
+	$logPath = __DIR__ . "/../logs/{$name}.log";
79
+	$streamHandler = new Monolog\Handler\StreamHandler($logPath, Monolog\Logger::INFO);
80
+	$streamHandler->setFormatter(
81
+		new Monolog\Formatter\LineFormatter("[%datetime%] %channel%.%level_name%: %message%\n")
82
+	);
83
+	$logger->pushHandler($streamHandler);
84 84
 
85
-    Monolog\ErrorHandler::register($logger);
86
-    $container['logger'] = $logger;
85
+	Monolog\ErrorHandler::register($logger);
86
+	$container['logger'] = $logger;
87 87
 });
88 88
 
89 89
 
Please login to merge, or discard this patch.
src/Domain/Stream/Blog/MysqlBlogRepository.php 1 patch
Indentation   +35 added lines, -35 removed lines patch added patch discarded remove patch
@@ -8,48 +8,48 @@
 block discarded – undo
8 8
 class MysqlBlogRepository implements BlogRepositoryInterface
9 9
 {
10 10
 
11
-    /** @var  ConnectionLocator */
12
-    protected $connections;
13
-
14
-    /**
15
-     * @param ConnectonLocator $connections
16
-     */
17
-    public function __construct(ConnectionLocator $connections)
18
-    {
19
-        $this->connections = $connections;
20
-    }
21
-
22
-    public function getBlogByPermalink($permalink)
23
-    {
24
-        $query = "
11
+	/** @var  ConnectionLocator */
12
+	protected $connections;
13
+
14
+	/**
15
+	 * @param ConnectonLocator $connections
16
+	 */
17
+	public function __construct(ConnectionLocator $connections)
18
+	{
19
+		$this->connections = $connections;
20
+	}
21
+
22
+	public function getBlogByPermalink($permalink)
23
+	{
24
+		$query = "
25 25
             SELECT *
26 26
             FROM `jpemeric_stream`.`blog`
27 27
             WHERE `permalink` = :permalink
28 28
             LIMIT 1";
29
-        $bindings = [
30
-            'permalink' => $permalink,
31
-        ];
32
-
33
-        return $this
34
-            ->connections
35
-            ->getRead()
36
-            ->fetchOne($query, $bindings);
37
-    }
38
-
39
-    public function getBlogsUpdatedSince(DateTime $datetime)
40
-    {
41
-        $query = "
29
+		$bindings = [
30
+			'permalink' => $permalink,
31
+		];
32
+
33
+		return $this
34
+			->connections
35
+			->getRead()
36
+			->fetchOne($query, $bindings);
37
+	}
38
+
39
+	public function getBlogsUpdatedSince(DateTime $datetime)
40
+	{
41
+		$query = "
42 42
             SELECT *
43 43
             FROM `jpemeric_stream`.`blog`
44 44
             WHERE `updated_at` >= :last_update";
45 45
 
46
-        $bindings = [
47
-            'last_update' => $datetime->format('Y-m-d H:i:s'),
48
-        ];
46
+		$bindings = [
47
+			'last_update' => $datetime->format('Y-m-d H:i:s'),
48
+		];
49 49
 
50
-        return $this
51
-            ->connections
52
-            ->getRead()
53
-            ->fetchAll($query, $bindings);
54
-    }
50
+		return $this
51
+			->connections
52
+			->getRead()
53
+			->fetchAll($query, $bindings);
54
+	}
55 55
 }
Please login to merge, or discard this patch.
src/Domain/Stream/BlogComment/MysqlBlogCommentRepository.php 1 patch
Indentation   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -8,60 +8,60 @@
 block discarded – undo
8 8
 class MysqlBlogCommentRepository implements BlogCommentRepositoryInterface
9 9
 {
10 10
 
11
-    /** @var  ConnectionLocator */
12
-    protected $connections;
11
+	/** @var  ConnectionLocator */
12
+	protected $connections;
13 13
 
14
-    /**
15
-     * @param ConnectonLocator $connections
16
-     */
17
-    public function __construct(ConnectionLocator $connections)
18
-    {
19
-        $this->connections = $connections;
20
-    }
14
+	/**
15
+	 * @param ConnectonLocator $connections
16
+	 */
17
+	public function __construct(ConnectionLocator $connections)
18
+	{
19
+		$this->connections = $connections;
20
+	}
21 21
 
22
-    /**
23
-     * @param integer $limit
24
-     * @param integer $offset
25
-     *
26
-     * @return array|false
27
-     */
28
-    public function getBlogComments($limit = null, $offset = 0)
29
-    {
30
-        $query = "
22
+	/**
23
+	 * @param integer $limit
24
+	 * @param integer $offset
25
+	 *
26
+	 * @return array|false
27
+	 */
28
+	public function getBlogComments($limit = null, $offset = 0)
29
+	{
30
+		$query = "
31 31
             SELECT `id`, `permalink`, `datetime`
32 32
             FROM `jpemeric_stream`.`blog_comment`
33 33
             ORDER BY `datetime` DESC";
34
-        if (!is_null($limit)) {
35
-            $query .= "
34
+		if (!is_null($limit)) {
35
+			$query .= "
36 36
             LIMIT {$offset}, {$limit}";
37
-        }
37
+		}
38 38
 
39
-        return $this
40
-            ->connections
41
-            ->getRead()
42
-            ->fetchAll($query);
43
-    }
39
+		return $this
40
+			->connections
41
+			->getRead()
42
+			->fetchAll($query);
43
+	}
44 44
 
45
-    /**
46
-     * @param string $permalink
47
-     *
48
-     * @return array|false
49
-     */
50
-    public function getBlogCommentByPermalink($permalink)
51
-    {
52
-        $query = "
45
+	/**
46
+	 * @param string $permalink
47
+	 *
48
+	 * @return array|false
49
+	 */
50
+	public function getBlogCommentByPermalink($permalink)
51
+	{
52
+		$query = "
53 53
             SELECT *
54 54
             FROM `jpemeric_stream`.`blog_comment`
55 55
             WHERE `permalink` = :permalink
56 56
             LIMIT 1";
57 57
 
58
-        $bindings = [
59
-            'permalink' => $permalink,
60
-        ];
58
+		$bindings = [
59
+			'permalink' => $permalink,
60
+		];
61 61
 
62
-        return $this
63
-            ->connections
64
-            ->getRead()
65
-            ->fetchOne($query, $bindings);
66
-    }
62
+		return $this
63
+			->connections
64
+			->getRead()
65
+			->fetchOne($query, $bindings);
66
+	}
67 67
 }
Please login to merge, or discard this patch.
src/Domain/Stream/DailyMile/MysqlDailyMileRepository.php 1 patch
Indentation   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -8,31 +8,31 @@
 block discarded – undo
8 8
 class MysqlDailyMileRepository implements DailyMileRepositoryInterface
9 9
 {
10 10
 
11
-    /** @var  ConnectionLocator */
12
-    protected $connections;
13
-
14
-    /**
15
-     * @param ConnectonLocator $connections
16
-     */
17
-    public function __construct(ConnectionLocator $connections)
18
-    {
19
-        $this->connections = $connections;
20
-    }
21
-
22
-    public function getDailyMilesUpdatedSince(DateTime $datetime)
23
-    {
24
-        $query = "
11
+	/** @var  ConnectionLocator */
12
+	protected $connections;
13
+
14
+	/**
15
+	 * @param ConnectonLocator $connections
16
+	 */
17
+	public function __construct(ConnectionLocator $connections)
18
+	{
19
+		$this->connections = $connections;
20
+	}
21
+
22
+	public function getDailyMilesUpdatedSince(DateTime $datetime)
23
+	{
24
+		$query = "
25 25
             SELECT *
26 26
             FROM `jpemeric_stream`.`dailymile`
27 27
             WHERE `updated_at` >= :last_update";
28 28
 
29
-        $bindings = [
30
-            'last_update' => $datetime->format('Y-m-d H:i:s'),
31
-        ];
29
+		$bindings = [
30
+			'last_update' => $datetime->format('Y-m-d H:i:s'),
31
+		];
32 32
 
33
-        return $this
34
-            ->connections
35
-            ->getRead()
36
-            ->fetchAll($query, $bindings);
37
-    }
33
+		return $this
34
+			->connections
35
+			->getRead()
36
+			->fetchAll($query, $bindings);
37
+	}
38 38
 }
Please login to merge, or discard this patch.