Skip to content

Commit 5919041

Browse files
Merge pull request #17 from alt-design/ssg-redirects
ServiceProvider.php - Tidying up, added new configureSSG method with …
2 parents 9acde12 + e159656 commit 5919041

File tree

2 files changed

+56
-7
lines changed

2 files changed

+56
-7
lines changed

resources/views/ssg.blade.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<html>
2+
<head>
3+
<meta http-equiv="Refresh" content="0; url='{{ $to }}'" />
4+
</head>
5+
<body>
6+
<p>Moved to <a href="{{ $to }}">{{ $to }}</a></p>
7+
</body>
8+
</html>

src/ServiceProvider.php

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
<?php namespace AltDesign\AltRedirect;
22

3-
// Facades
4-
use AltDesign\AltRedirect\Console\Commands\DefaultQueryStringsCommand;
5-
use AltDesign\AltRedirect\Helpers\Data;
6-
use AltDesign\AltRedirect\Helpers\DefaultQueryStrings;
3+
use Statamic\Providers\AddonServiceProvider;
74
use Statamic\Facades\CP\Nav;
85
use Statamic\Facades\Permission;
96
use Statamic\Filesystem\Manager;
7+
use Statamic\StaticSite\SSG;
8+
use Illuminate\Support\Str;
109

11-
// Providers
12-
use Statamic\Providers\AddonServiceProvider;
10+
use AltDesign\AltRedirect\Console\Commands\DefaultQueryStringsCommand;
11+
use AltDesign\AltRedirect\Helpers\DefaultQueryStrings;
12+
use AltDesign\AltRedirect\Helpers\Data;
1313

1414
class ServiceProvider extends AddonServiceProvider
1515
{
@@ -95,12 +95,53 @@ public function installDefaultQueryStrings() : self
9595
return $this;
9696
}
9797

98+
public function configureSSG() : self
99+
{
100+
if (!class_exists(SSG::class)) {
101+
return $this;
102+
}
103+
104+
SSG::after(function () {
105+
$dest = config('statamic.ssg.destination');
106+
$base = rtrim(config('statamic.ssg.base_url'), '/'); // remove trailing slash
107+
$disk = (new Manager())->disk();
108+
109+
$redirects = (new Data('redirects'))->all();
110+
print("Found " . count($redirects) . " redirects\n");
111+
112+
$generated = $directories = 0;
113+
foreach( $redirects as $redirect ) {
114+
$fromDir = $dest . $redirect['from'];
115+
$from = sprintf('%s%sindex.html',
116+
$fromDir,
117+
(Str::endsWith($fromDir, '/') ? '' : '/')
118+
);
119+
$to = $base . $redirect['to'];
120+
121+
if (!$disk->exists($from)) {
122+
$contents = view('alt-redirect::ssg', ['to' => $to]);
123+
if (!$disk->isDirectory($fromDir)) {
124+
mkdir($fromDir, 0777, true);
125+
$directories++;
126+
}
127+
if ($disk->put($from, $contents)) {
128+
$generated++;
129+
}
130+
}
131+
}
132+
133+
print("Generated $generated redirect files in $directories new directories\n");
134+
});
135+
return $this;
136+
}
137+
98138
public function bootAddon()
99139
{
100140
$this->addToNav()
101141
->registerPermissions()
102142
->registerCommands()
103-
->installDefaultQueryStrings();
143+
->installDefaultQueryStrings()
144+
->configureSSG();
104145
}
105146
}
106147

0 commit comments

Comments
 (0)