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
Parsing bug deleted all MariaDB users and databases that were not in the
active tests list. Now, cPanelDeployer will only delete the MariaDB
users and databases that are expired and leave those that are not part
of the testing suite alone.
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
git-clean in E107Base now runs first in _beforeSuite() so that tainted
files are not uploaded in Acceptance tests
E107Base::revokeLocalE107Config() now checks for file existence before
unlinking. XXX: Could remove this method if cleanVCS() proves reliable
Acceptance won't try to write an e107_config.php because the tests
themselves populate the configuration file
Apparently, reconfiguring only applies to one test. This commit makes
all tests' modules reconfigured.
Introduced command to clean local app repo
InstallCest actually installs e107 now
Ideal for pulls and users who have not uploaded their SSH public key to
their GitHub account
Bit more of a hassle to those who code for e107 and normally push with
their SSH public key
Fixes: #2