sResourceStatus, ['failed','empty'], true)) return false; // Legacy explicit zero is evidence of no result, not a successful refresh. return !preg_match('/(?:共|更新)\s*0\s*个可用节点/u', Seo::text($article->sTitleSub)); } public static function validate(array $article): array { validator($article, ['title'=>'required|string|max:250','title_sub'=>'present|string|max:4000', 'content'=>'required|string|max:2000000','tags'=>'present|array','7like'=>'nullable|integer|min:0', 'check_status'=>'nullable|in:success,failed,unknown','valid_count'=>'nullable|integer|min:0'])->validate(); $count = isset($article['valid_count']) ? (int)$article['valid_count'] : null; $state = $article['check_status'] ?? 'unknown'; // Compatibility for the current upstream; a reported count is not a new live check. if ($count === null && preg_match('/(?:共|更新)\s*(\d+)\s*个可用节点/u', Seo::text($article['title_sub']), $m)) $count = (int)$m[1]; abort_if($state === 'failed' || $count === 0 || trim(Seo::text($article['content'])) === '', 422, 'Resource update has no usable result; previous publication retained'); return ['sResourceStatus'=>$state === 'success' && $count > 0 ? 'success' : 'unknown','iResourceCount'=>$count]; } }