Eli Bosley c364912d08 fix: searchlink can error in the plugin check
The error occurred because of how searchLink() is called on line 49:

  if ($support = searchLink($info, $url) ?: searchLink($info, newurl($url))) {

  Here's the sequence of events that caused the issue:

  1. First call: searchLink($info, $url) - This works fine if $info contains the JSON data from
  /tmp/community.applications/tempFiles/templates.json
  2. If first call returns falsy: The ?: operator (shorthand ternary) triggers the second call:
  searchLink($info, newurl($url))
  3. The problem: When the first searchLink() returns null or false, PHP's ?: operator evaluates
  the second expression. However, if $info itself is null (which can happen if the JSON file
  doesn't exist or is empty - see line 19 where readJson() returns [] for missing files), then
  searchLink(null, newurl($url)) is called.
  4. The crash: Inside searchLink(), when $db is null, calling count($db) throws the TypeError
  because count() requires an array or Countable object, not null.

  Root causes:
  - The JSON file at /tmp/community.applications/tempFiles/templates.json might not exist or could
  be corrupted
  - The readJson() function returns an empty array [] for missing files, but if the JSON decode
  fails, it could return null
  - The code wasn't defensive against null values being passed to searchLink()

  The fix adds is_array($db) check to ensure we only attempt to count when we have a valid array.
2025-09-02 10:46:46 -04:00
2019-08-30 14:14:25 -05:00
2023-09-08 11:55:53 -07:00

Unraid webgui repo

Structure

The emhttp, etc, sbin, and src dirs in this repo are extracted to the /usr/local/ directory when an Unraid release is built.

Contributions

Please be aware that there is a fairly high barrier to entry when working on the Unraid webgui. It has grown organically over the years and you will need to do quite a bit of reverse engineering to understand it.

If you choose to proceed, clone this repo locally, test edits by copying the changes to your server, then submit a PR to https://github.com/unraid/webgui when fully tested.

Be sure to describe (in the Unraid forum, a GitHub issue, or the GitHub PR) the problem/feature you are working on and explain how the proposed change solves it.

We recommend using VS Code with the following plugins:

Description
Unraid Web UI
Readme 57 MiB
Languages
JavaScript 53.5%
PHP 31.5%
Shell 6.9%
CSS 5.8%
HTML 2.2%