romainq
|
4b36e9e017
Obsolescence: introduction of this new concept (wording could change later). The obsolescence of an object is computed after other attributes, by the mean of an OQL expression. The code has been refactored (again) so as to factorize between the computation of friendly names and the computation of obsolescence flags. The refactoring involved a significant AND RISKY change: external key friendly names (magic attributes) have been changed from AttributeFriendlyName to AttributeExternalField, which simplifies the SQL query build logic.
|
8 years ago |
romainq
|
34ab6cd77b
NEW! Archiving data. Archiving is a soft delete. It can be undone. Enter the archive mode to see all the data including archives (everything is read-only in that mode). Archiving must be enabled per class (data model). Archiving is achieved by the mean of the API DBObject::Archive (or Unarchive).
|
8 years ago |
romainq
|
43d294e036
Internal: query arguments could be array values, making it easier to build dynamic IN() clauses
|
9 years ago |
romainq
|
353e6a0ffc
OQL arguments: when the value of a query argument is null, it must be considered as being a valid argument (was reported as missing). Improved the error reporting when the argument is in the form :this->attcode and the attcode is not valid for the class of 'this'.
|
9 years ago |
romainq
|
0dff1739a5
Internal: fixed the verb DBObjectSearch::IsAny
|
9 years ago |
dflaven
|
cda7f3861f
Code refactoring to make the OQL parsing self contained in the "oql" subdirectory.
|
9 years ago |