- MOD: Refactored NGINX secure_link_md5 decorator into interface and
class in Downloads plugin
- NEW: Downloads plugin: Admin preferences UX improvement:
Preferences >> Protection now shows the user a list of
supported NGINX variables pulled from
NginxSecureLinkMd5Decorator
- NEW: "Protection" section in Downloads >> Preferences
- NEW: Basic support for NGINX secure_link_md5 in Downloads plugin
- NEW: When configured with a URL protection mode, Downloads will
modify the direct download URL and/or the mirror download URL
to be compatible with the implemented URL protection
Fixes: #3075
e_tree_model::prepareSimulatedCustomOrdering() performed an ORDER BY
second sort that doesn't add any benefit at all and causes #3086.
This second sort has been removed.
Fixes: #3086
e_tree_model is apparently used for flat lists as well as parent-child
relationships (trees). Trees are expected to be far smaller than possible flat
lists. Very large flat lists (10,000+ rows or greater) are rendered very slowly
because of the tree computation overhead.
This change figures out whether a flat list or a tree is requested and chooses
the appropriate code to run based on what is requested. Trees run the more
expensive code while flat lists are returned as-is.
In addition, the tree rendering code has been optimized. Optimizations:
* Unchanging tree node ID is set once instead of inside a foreach() loop
* The parent-child query is now sorted by the sort parent ID so that each move
rows to tree nodes iteration doesn't have to run through every remaining row
Fixes: #3062
An untested oversight in e_tree_model::multiFieldCmp() where $sort_field
could be a string has now been corrected.
$sort_field now accepts a string to prevent infinite recursion.
Fixes: #3044
e_tree_model::prepareSimulatedPagination() did not correctly handle the
count-only condition because of an incorrectly written emptiness check.
Fixes: #3034