This fixes the issue introduced by the transfer id which itself wasn't
taken into account by the shortcut code for part file in the shared
storage class.
Storage mount points are not deletable, so make sure that the unlink
operation and its hooks aren't run in such cases.
Note that some storages might recursively delete their contents when
calling unlink on their root. This fix prevents that as well.
The core 3rdparty directory is in the include_path from lib/base.php anyway, so this is unnecessary, and causes problems for downstream distributors who unbundle Pimple.
Using this method will result in an unneccesary extra SQL query (which also may
return an incorrect result because the underlying table changed in the
meantime).
In general:
If you are performing an UPDATE, DELETE or equivalent query,
OC_DB_StatementWrapper::execute() will already give you the number of
"affected rows" via \Doctrine\DBAL\Driver\Statement::rowCount(). This will
not work for SELECT queries, however.
If you want to know whether a table contains any rows matching your condition,
use "SELECT id FROM ... WHERE ... LIMIT 1".
If you want to know whether a table contains any rows matching your condition
and you also need the data, use "SELECT ... FROM ... WHERE ...", then use
one of the fetch() methods.
If you want to count the number of rows matching your condition, use use
"SELECT COUNT(...) AS number_of_rows FROM ... WHERE ...", then use one of the
fetch() methods.
On SQLite the app order can be arbitrary and cause strange bugs.
On MySQL, the app order seems to be always alphabetical.
This fix enforces alphabetical order to make sure that all environments
behave the same and to reduce bugs related to app loading order.
Fixes#6442