json([ 'isDone' => false, 'status' => 'paused', 'code' => 'FREE_NODE_UPDATES_PAUSED', 'message' => 'Free node updates are temporarily paused; existing publications are retained.', ], 503, ['Retry-After' => '3600'])); } public static function guardArticle(Articles $article): void { if (! self::quiet()) return; $fields = ['sSlug','iCategoryId','sTitle','sTitleSub','sContent','sThumb', 'iStatus','created_at','sDisplayPublishedAt','sResourceStatus','iResourceCount']; if ($article->exists && ! $article->isDirty($fields)) return; $ids = array_filter([$article->iCategoryId, $article->getRawOriginal('iCategoryId')]); if ($ids && Categories::whereIn('id', $ids)->where('sSlug', 'freenode')->exists()) { self::assertUpdatesAllowed('freenode'); } } }