I am new to PHP, so bare with me if I dont know what I am saying/asking. I updated the panel from 2.2.2 to 2.3 and my blog page stopped working. On Linux Centos 7 with php7 and Apache. I narrowed the problem down to the controller code, but I am a little lost. I could be wrong but the only problem i was not able to fix was myblog.com/blog. This the only page that spits errors out if I turn debugging on. Thank you.
Template blog.php code:
<!DOCTYPE html>
<?php
snippet('open-html');
snippet('head');
snippet('open-body');
snippet('open-app-wrap');
snippet('header');
snippet('open-app-body');
snippet('primary-header');
// Logic for posts, pagination and filters in /site/controllers/blog.php
// Display filter message if filter, otherwise default page intro
if ($filter):
snippet('page-header-filtered-posts');
else:
snippet('page-intro');
endif;
// Display the short posts
if ($posts->count() > 0):
foreach ($posts as $post):
snippet('post-short', array('post' => $post));
endforeach;
else:
echo l('blog_no_posts_found');
endif;
// Display pagination
if ($pagination->hasPages()):
snippet('pagination', array('type' => 'blog', 'pagination' => $pagination));
endif;
snippet('close-app-body');
snippet('footer');
snippet('close-app-wrap');
snippet('close-body');
snippet('close-html');
?>
My controller code for blog.php:
<?php
return function($site, $pages, $page) {
// Set default filter status
$filter = false;
// Get setting for number of posts per page
$per_page = intval($site->blog_posts_per_page()->value());
// Get sort order
switch ($site->blog_sort_order()->value()) {
case "chronological":
$sort_field = 'date_published';
$sort_dir = 'asc';
break;
case "reverse_chronological":
$sort_field = 'date_published';
$sort_dir = 'desc';
break;
case "alphabetical":
$sort_field = 'title';
$sort_dir = 'asc';
break;
case "reverse_alphabetical":
$sort_field = 'title';
$sort_dir = 'desc';
break;
default:
$sort_field = 'date_published';
$sort_dir = 'desc';
}
// Get all posts
$posts = $page->children()->visible()->filter(function($child) {
// Don't show posts with publish dates in the future
return (time() - strtotime($child->date_published())) >= 0;
});
// Apply sorting if required
if ($site->blog_sort_order()->value() != 'manual') {
$posts = $posts->sortBy($sort_field, $sort_dir);
}
// Apply pagination
$posts = $posts->paginate($per_page);
// Author filter
if ($by = param('by')):
switch ($site->blog_author_name_display_style()):
case 'full_name':
$user = $site->users()->filter(function($user) {
return $user->firstname() . ' ' . $user->lastname() == urldecode(param('by'));
})->first();
$username = isset($user) ? $user->username() : '';
break;
case 'first_name':
$user = $site->users()->filter(function($user) {
return $user->firstname() == urldecode(param('by'));
})->first();
$username = isset($user) ? $user->username() : '';
break;
default:
$username = $by;
break;
endswitch;
$posts = $posts->filterBy('author_username', urldecode($username));
$filter = true;
endif;
// Date filter
if ($date = param('from')):
$posts = $posts->filterBy('date_published', urldecode($date));
$filter = true;
endif;
// Tag filter
if ($tag = param('tag')):
$posts = $posts->filterBy('tags', urldecode($tag), ',');
$filter = true;
endif;
// Type filter
if ($type = param('type')):
$posts = $posts->filter(function($child) {
return $child->template() == urldecode('post-' . param('type'));
});
$filter = true;
endif;
// Create a shortcut for pagination
$pagination = $posts->pagination();
// Pass objects to the template
return compact('posts', 'pagination', 'filter');
};