Fix code quality violations and rename select input components
Move small tasks from wishlist to todo, update npm packages Replace #[Auth] attributes with manual auth checks and code quality rule Remove on_jqhtml_ready lifecycle method from framework Complete ACL system with 100-based role indexing and /dev/acl tester WIP: ACL system implementation with debug instrumentation Convert rsx:check JS linting to RPC socket server Clean up docs and fix $id→$sid in man pages, remove SSR/FPC feature Reorganize wishlists: priority order, mark sublayouts complete, add email Update model_fetch docs: mark MVP complete, fix enum docs, reorganize Comprehensive documentation overhaul: clarity, compression, and critical rules Convert Contacts/Projects CRUD to Model.fetch() and add fetch_or_null() Add JS ORM relationship lazy-loading and fetch array handling Add JS ORM relationship fetching and CRUD documentation Fix ORM hydration and add IDE resolution for Base_* model stubs Rename Json_Tree_Component to JS_Tree_Debug_Component and move to framework Enhance JS ORM infrastructure and add Json_Tree class name badges 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1300,6 +1300,70 @@ function handle_resolve_class_service($data) {
|
||||
}
|
||||
}
|
||||
|
||||
// Final fallback: Check for Base_* model stubs (auto-generated at bundle time)
|
||||
// These don't exist as JS classes but their corresponding PHP models do
|
||||
if (str_starts_with($identifier, 'Base_')) {
|
||||
$model_name = substr($identifier, 5); // Strip 'Base_' prefix
|
||||
$model_data = $find_php_class($model_name);
|
||||
|
||||
if ($model_data) {
|
||||
// Check if this is a subclass of Rsx_Model_Abstract
|
||||
$is_model = false;
|
||||
$current_class = $model_name;
|
||||
$visited = [];
|
||||
|
||||
while ($current_class) {
|
||||
if (in_array($current_class, $visited)) break;
|
||||
$visited[] = $current_class;
|
||||
|
||||
$class_data = $find_php_class($current_class);
|
||||
if (!$class_data) break;
|
||||
|
||||
$extends = $class_data['extends'] ?? null;
|
||||
if (!$extends) break;
|
||||
|
||||
// Normalize extends (strip namespace)
|
||||
$extends_parts = explode('\\', $extends);
|
||||
$extends_simple = end($extends_parts);
|
||||
|
||||
if ($extends_simple === 'Rsx_Model_Abstract') {
|
||||
$is_model = true;
|
||||
break;
|
||||
}
|
||||
|
||||
$current_class = $extends_simple;
|
||||
}
|
||||
|
||||
if ($is_model) {
|
||||
$file_path = $model_data['file'];
|
||||
$line_number = 1;
|
||||
$absolute_path = IDE_BASE_PATH . '/' . $file_path;
|
||||
|
||||
// Try to find the fetch method line number if it exists
|
||||
if (file_exists($absolute_path)) {
|
||||
$content = file_get_contents($absolute_path);
|
||||
$lines = explode("\n", $content);
|
||||
|
||||
foreach ($lines as $index => $line) {
|
||||
if (preg_match('/^\s*(public\s+)?(static\s+)?function\s+fetch\s*\(/', $line)) {
|
||||
$line_number = $index + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
json_response([
|
||||
'found' => true,
|
||||
'type' => 'base_model_stub',
|
||||
'file' => $file_path,
|
||||
'line' => $line_number,
|
||||
'identifier' => $identifier,
|
||||
'resolved_model' => $model_name,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Nothing found after trying all types
|
||||
json_response([
|
||||
'found' => false,
|
||||
|
||||
Reference in New Issue
Block a user