mirror of
https://code.castopod.org/adaures/castopod
synced 2025-04-19 13:01:19 +00:00
fix: check for database connection and podcasts table existence before redirecting to install
fix signature regex
This commit is contained in:
parent
cacd228098
commit
eb74e81c3d
@ -11,25 +11,25 @@ declare(strict_types=1);
|
||||
namespace App\Controllers;
|
||||
|
||||
use App\Models\PodcastModel;
|
||||
use CodeIgniter\Database\Exceptions\DatabaseException;
|
||||
use CodeIgniter\HTTP\RedirectResponse;
|
||||
use Config\Services;
|
||||
use mysqli_sql_exception;
|
||||
|
||||
class HomeController extends BaseController
|
||||
{
|
||||
public function index(): RedirectResponse | string
|
||||
{
|
||||
try {
|
||||
$allPodcasts = (new PodcastModel())->findAll();
|
||||
} catch (mysqli_sql_exception | DatabaseException) {
|
||||
// An error was caught when retrieving the podcasts from the database.
|
||||
$connections = \CodeIgniter\Database\Config::getConnections();
|
||||
$db = db_connect();
|
||||
if ($connections === [] || ! $db->tableExists('podcasts')) {
|
||||
// Cannot connect to the database or cannot find the podcasts table
|
||||
// Redirecting to install page because it is likely that Castopod Host has not been installed yet.
|
||||
// NB: as base_url wouldn't have been defined here, redirect to install wizard manually
|
||||
$route = Services::routes()->reverseRoute('install');
|
||||
return redirect()->to(rtrim(host_url(), '/') . $route);
|
||||
}
|
||||
|
||||
$allPodcasts = (new PodcastModel())->findAll();
|
||||
|
||||
// check if there's only one podcast to redirect user to it
|
||||
if (count($allPodcasts) === 1) {
|
||||
return redirect()->route('podcast-activity', [$allPodcasts[0]->name]);
|
||||
|
@ -39,29 +39,25 @@ class NoteController extends ActivityPubNoteController
|
||||
|
||||
public function _remap(string $method, string ...$params): mixed
|
||||
{
|
||||
if (count($params) < 2) {
|
||||
throw PageNotFoundException::forPageNotFound();
|
||||
}
|
||||
|
||||
if (
|
||||
($this->podcast = (new PodcastModel())->getPodcastByName($params[0])) === null
|
||||
($podcast = (new PodcastModel())->getPodcastByName($params[0],)) === null
|
||||
) {
|
||||
throw PageNotFoundException::forPageNotFound();
|
||||
}
|
||||
|
||||
$this->podcast = $podcast;
|
||||
$this->actor = $this->podcast->actor;
|
||||
|
||||
if (
|
||||
($note = (new NoteModel())->getNoteById($params[1])) === null
|
||||
count($params) > 1 &&
|
||||
($note = (new NoteModel())->getNoteById($params[1])) !== null
|
||||
) {
|
||||
throw PageNotFoundException::forPageNotFound();
|
||||
$this->note = $note;
|
||||
|
||||
unset($params[0]);
|
||||
unset($params[1]);
|
||||
}
|
||||
|
||||
$this->note = $note;
|
||||
|
||||
unset($params[0]);
|
||||
unset($params[1]);
|
||||
|
||||
return $this->{$method}(...$params);
|
||||
}
|
||||
|
||||
|
@ -38,6 +38,7 @@ class PodcastController extends BaseController
|
||||
$this->podcast = $podcast;
|
||||
|
||||
unset($params[0]);
|
||||
|
||||
return $this->{$method}(...$params);
|
||||
}
|
||||
|
||||
|
@ -272,9 +272,9 @@ class ActorController extends Controller
|
||||
->where('`created_at` <= NOW()', null, false)
|
||||
->orderBy('created_at', 'DESC');
|
||||
|
||||
$pageNumber = $this->request->getGet('page');
|
||||
$pageNumber = (int) $this->request->getGet('page');
|
||||
|
||||
if (! isset($pageNumber)) {
|
||||
if ($pageNumber < 1) {
|
||||
$actorActivity->paginate(12);
|
||||
$pager = $actorActivity->pager;
|
||||
$collection = new OrderedCollectionObject(null, $pager);
|
||||
@ -304,9 +304,9 @@ class ActorController extends Controller
|
||||
->where('activitypub_follows.target_actor_id', $this->actor->id)
|
||||
->orderBy('activitypub_follows.created_at', 'DESC');
|
||||
|
||||
$pageNumber = $this->request->getGet('page');
|
||||
$pageNumber = (int) $this->request->getGet('page');
|
||||
|
||||
if (! isset($pageNumber)) {
|
||||
if ($pageNumber < 1) {
|
||||
$followers->paginate(12);
|
||||
$pager = $followers->pager;
|
||||
$followersCollection = new OrderedCollectionObject(null, $pager);
|
||||
|
@ -39,10 +39,6 @@ class NoteController extends Controller
|
||||
|
||||
public function _remap(string $method, string ...$params): mixed
|
||||
{
|
||||
if (count($params) < 1) {
|
||||
throw PageNotFoundException::forPageNotFound();
|
||||
}
|
||||
|
||||
if (($note = model('NoteModel')->getNoteById($params[0])) === null) {
|
||||
throw PageNotFoundException::forPageNotFound();
|
||||
}
|
||||
@ -80,9 +76,9 @@ class NoteController extends Controller
|
||||
->where('`published_at` <= NOW()', null, false)
|
||||
->orderBy('published_at', 'ASC');
|
||||
|
||||
$pageNumber = $this->request->getGet('page');
|
||||
$pageNumber = (int) $this->request->getGet('page');
|
||||
|
||||
if (! isset($pageNumber)) {
|
||||
if ($pageNumber < 1) {
|
||||
$noteReplies->paginate(12);
|
||||
$pager = $noteReplies->pager;
|
||||
$collection = new OrderedCollectionObject(null, $pager);
|
||||
|
@ -35,7 +35,7 @@ class HttpSignature
|
||||
([\w\-\.#\/@]+)
|
||||
)",
|
||||
algorithm="(?P<algorithm>[\w\-]+)",
|
||||
(headers="\(request-target\) (?P<headers>[\w\\-\s]+)")?
|
||||
(headers="\(request-target\) (?P<headers>[\w\\-\s]+)",)?
|
||||
signature="(?P<signature>[\w+\/]+={0,2})"
|
||||
/x';
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user