{"record":{"id":"a1b4c0fa41fe8899","repo":"octobercms/october","slug":"system-lang-updates-plugin-not-found","errorCode":"system::lang.updates.plugin_not_found","errorMessage":"Plugin not found","messagePattern":"Plugin not found","errorType":"exception","errorClass":"ApplicationException","httpStatus":null,"severity":"warning","filePath":"modules/system/controllers/Market.php","lineNumber":108,"sourceCode":"        }\n    }\n\n    /**\n     * plugin\n     */\n    public function plugin($urlCode = null, $tab = null)\n    {\n        try {\n            $this->pageTitle = 'system::lang.updates.details_title_plugin';\n            $this->pageSize = 950;\n            $this->addJs('/modules/system/assets/js/pages/market.details.js');\n            $this->addCss('/modules/system/assets/css/pages/market.css');\n\n            $code = $this->slugToCode($urlCode);\n            $product = new ProductDetail($code);\n\n            if (!$product->exists()) {\n                throw new ApplicationException(Lang::get('system::lang.updates.plugin_not_found'));\n            }\n\n            // Fetch from server\n            // if (get('fetch')) {\n            //     $fetchedContent = UpdateManager::instance()->requestPluginContent($code);\n            //     $product->upgradeHtml = array_get($fetchedContent, 'upgrade_guide_html');\n            // }\n\n            $this->vars['projectDetails'] = UpdateManager::instance()->getProjectDetails();\n            $this->vars['activeTab'] = $tab ?: 'readme';\n            $this->vars['urlCode'] = $urlCode;\n            $this->vars['product'] = $product;\n        }\n        catch (Exception $ex) {\n            $this->handleError($ex);\n        }\n    }\n","sourceCodeStart":90,"sourceCodeEnd":126,"githubUrl":"https://github.com/octobercms/october/blob/b608633a7e8922487d91a8161499020121c3b3bf/modules/system/controllers/Market.php#L90-L126","documentation":"Backend marketplace detail action Market::plugin() (URL backend/system/market/plugin/<slug>) converts the URL slug to a product code via slugToCode(), wraps it in a ProductDetail and queries the marketplace gateway. If the product does not exist ($product->exists() returns false), ApplicationException system::lang.updates.plugin_not_found ('Plugin not found') is thrown, caught by handleError($ex) and rendered as an error page.","triggerScenarios":"Opening backend/system/market/plugin/<author-plugin-slug> for a product the gateway cannot find: plugin removed or renamed on the marketplace, the slug does not map back to a valid Author.Plugin code, or the gateway returned empty details.","commonSituations":"Stale bookmarks or external links to deleted marketplace plugins; a typo in the plugin code; transient gateway failures.","solutions":["Search the plugin again from Settings > System > Updates > Plugins and open the fresh detail link","Verify the plugin still exists on octobercms.com and copy its exact Author.Plugin code","If building the URL yourself, make sure the code converts to a valid slug (slugToCode reverses dashes to dots)"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"$product = new \\System\\Classes\\ProductDetail($code);\nif (!$product->exists()) {\n    // do not link/redirect to the marketplace detail page for this code\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Generate marketplace links from current marketplace search results, not stored slugs","Cache ProductDetail existence checks and expire them so delisted products stop 404ing","Remember the controller already catches and renders this error via handleError"],"tags":["marketplace","plugin","backend","not-found"],"backgroundTag":"resource-not-found","analyzedSha":"b608633a7e8922487d91a8161499020121c3b3bf","analyzedAt":"2026-08-21T04:24:57.515Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}