Refactor afterPageCreate, afterPageModify, and afterPageDelete methods to accept page key as a parameter and improve key handling
This commit is contained in:
1 parent
79ae7eb884
commit
1d525023a3
1 file changed
+14
-70
+14
-70
@@ -79,10 +79,9 @@ class pluginBluditGithub extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function afterPageCreate()
|
public function afterPageCreate($key)
|
||||||
{
|
{
|
||||||
$key = $this->getAffectedPageKey();
|
if (empty($key)) {
|
||||||
if (!$key) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@@ -95,10 +94,9 @@ class pluginBluditGithub extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function afterPageModify()
|
public function afterPageModify($key)
|
||||||
{
|
{
|
||||||
$key = $this->getAffectedPageKey();
|
if (empty($key)) {
|
||||||
if (!$key) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@@ -111,39 +109,21 @@ class pluginBluditGithub extends Plugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function afterPageDelete()
|
public function afterPageDelete($key)
|
||||||
{
|
{
|
||||||
if (!$this->isConfigured()) {
|
if (!$this->isConfigured() || empty($key)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$currentKeys = $this->getAllPageKeys();
|
$filePath = $this->getFilePath($key);
|
||||||
$exportPath = trim($this->getValue('path'), '/');
|
$sha = $this->getFileSha($filePath);
|
||||||
$listEndpoint = '/contents/' . ($exportPath ?: '');
|
|
||||||
|
|
||||||
$items = $this->githubRequest('GET', $listEndpoint);
|
if ($sha) {
|
||||||
if (!is_array($items)) {
|
$this->githubRequest('DELETE', '/contents/' . $filePath, [
|
||||||
return;
|
'message' => 'Delete: ' . $key,
|
||||||
}
|
'sha' => $sha,
|
||||||
|
'branch' => $this->getValue('branch'),
|
||||||
foreach ($items as $item) {
|
]);
|
||||||
if (!isset($item['type']) || $item['type'] !== 'dir') {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$key = $item['name'];
|
|
||||||
if (in_array($key, $currentKeys, true)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// Directory is no longer a Bludit page — delete its index.md
|
|
||||||
$indexPath = $item['path'] . '/index.md';
|
|
||||||
$sha = $this->getFileSha($indexPath);
|
|
||||||
if ($sha) {
|
|
||||||
$this->githubRequest('DELETE', '/contents/' . $indexPath, [
|
|
||||||
'message' => 'Delete: ' . $key,
|
|
||||||
'sha' => $sha,
|
|
||||||
'branch' => $this->getValue('branch'),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,42 +302,6 @@ class pluginBluditGithub extends Plugin
|
|||||||
return $decoded;
|
return $decoded;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getAffectedPageKey()
|
|
||||||
{
|
|
||||||
// Bludit puts the slug in POST on page save
|
|
||||||
foreach (['slug', 'key', 'friendlyURL'] as $field) {
|
|
||||||
if (!empty($_POST[$field])) {
|
|
||||||
return Sanitize::slug($_POST[$field]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fallback: most recently modified page directory (Bludit stores pages as index.txt)
|
|
||||||
if (!defined('PATH_PAGES') || !is_dir(PATH_PAGES)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$newest = null;
|
|
||||||
$newestTime = 0;
|
|
||||||
|
|
||||||
foreach (glob(PATH_PAGES . '*', GLOB_ONLYDIR) as $dir) {
|
|
||||||
$indexFile = $dir . DS . 'index.txt';
|
|
||||||
if (file_exists($indexFile)) {
|
|
||||||
$mtime = filemtime($indexFile);
|
|
||||||
if ($mtime > $newestTime) {
|
|
||||||
$newestTime = $mtime;
|
|
||||||
$newest = basename($dir);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $newest;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function getAllPageKeys()
|
|
||||||
{
|
|
||||||
global $pages;
|
|
||||||
return $pages->getList(1, 9999, true, true, true, true, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function isConfigured()
|
private function isConfigured()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in new issue
Block a user