Age | Commit message (Collapse) | Author | Files | Lines |
|
This is an interface to alter the settings stored in the 'settings'
database table. Typically restricted to administrators only.
|
|
This is not meant to be a user (admin) configurable key. Rather, this
is a mechanism for success/failure results from interactions with
PHPMailer to make their way back to the UI. Down the road, email
sending functions should publish their true/false return value to this
configuration key. The initial default value of "NULL" means no mail
send attempts have taken place.
|
|
|
|
|
|
|
|
|
|
The controller now (again) prevents browsing to objects the user is not
allowed to access.
|
|
This places all (both) of the service configuration files together and
cleans up the top-level directory. The file is renamed to 'mysql.sql'
to indicate the particular service it corresponds to.
|
|
|
|
I was experiencing problems on Mysql proper with the way Scrott
interacts with the database when forming new objects. It attempts some
writeback querries before all attributes are applied to the new objects.
This makes sense if you understand how many initNew and helper functions
are implemented. As a convenience a function which mutates an object
will also apply its changes to the database automatically. These
function are used instead of directly settings PHP object properties
because there are additional pieces of logic performed to ensure
everything remains valid in the datamodel.
As was the case for a few types of objects, cirtain functions which
behave this way were being called during an object's initNew(), causing
DB writebacks to occur before some other 'default-less' field had been
defined for that object.
This patch provides some 'not so invalid' default states for database
table columns which were previously undefined. This should also
mitigate some issues I may have not run unto yet.
|
|
I don't mean to impose a character limit here, so I am changing this
type to 'text'. As per the previous commit, the default value is also
removed.
|
|
It is an error in Mysql for columns of type 'text' to have a default
value. Removing these resolves Mysql errors and MariaDB warnings.
|
|
|
|
|
|
In cases where the pad had no stages beneath it, `new
stage($this->stage)` would construct an invalid object. As it turns
out, calling ->getArray() on an uninitialized stage object yeilds bad
results.
Instead of patching the stage::getArray() function, I add a check to
harden pad::getStages(). My reasoning for this is as follows: The bug
in getArray() manifests from a domain error, ie. it's only because we
are calling it on an uninitialized object. The object is already in a
bad state prior to caling getArray(). Rather, I opt to patch
getStages() so that we never create a bad object in the first place.
Now, for no-stage pads, getStages() will return early an empty array.
|
|
This particular flaw was dampening (and could popentially be hiding) the
effects of other bugs.
For instance, in this case, a GUID of "" was invalidly being used to
construct an object. This should obviously be considered an error, but
since "" evaluates to false, the construction was treated as default (no
GUID) construction and succedded. It wasn't until later when missing
properties were accessed that random PHP error messages clued me into what
was happening.
Now, when any sort of explicit value is used to construct an object (not
NULL), an object load will be attempted, giving bad input more chances
to fail outright and trigger an exception. In addition, the 'no such
guid' exception message is updated to place quotes ('') around the GUID
string to make it more obvious when "" is used in the future.
|
|
Removed placholder text and now displaying the logged-in user's display
name. This is accopanied by the user icon and (conditionally) the
'cool' sunglasses icon for admins. This is similar, but not identical,
to the markup of my old archived code I'm clearing out.
|
|
This additional spacing is added to the navbar text to improve its
appearance in the browser.
|
|
As a convenience, I'm adding a basic set of stages to new pads. These
stages are "To Do", "In Progress" ('Done' being closed issues). This
implements a very simple workflow for new pads.
|
|
These two functions, 'getCurrentTimestamp()' and 'isGUID()' are updated
to be public. There is actually no good reason for them to be private;
I originally just never antisipated their use outside this class.
I need isGUID() in index.php to help with page routing. Neither of
these two functions have side effects of any kind nor any unexpected
behavior, so there is no harm in going public.
|
|
Removing these unnecessary checks. They are not protecting us from
anything, only inconveniencing me in index.php.
|
|
|
|
Update all usage of saveFile() to use added saveIfFile() function,
forwarding on the convenience to model code. Model code can pass in
file field names, rather than $_FILES arrays directly.
|
|
This is an alternative function to globals' saveFile(), which allows
model code to just pass in the name of the expected uploaded file,
rather than requiring them to look up the file themselves. This is in
line with my preference to encapsulate PHP superglobals access away from
most of the codebase.
Note that even if the user opts not to upload optional files, the
associated file <input> field will still be present in $_FILES, with a
special error code set (meaning 'no file uploaded') which setFile()
ignores. It is only in the case of a malformed form submission that
$_FILES will be missing the requested file field, prompting Scrott to
throw an exception.
|
|
The input[ ] portion of the hidden field name had been left off. This
commit fixes this bug.
|
|
|
|
|
|
Updated old settings modal design, to incorporate added Scrott features.
Reimplemented this modal in Scrott from archived code and have included
it in the navbar.
|
|
|
|
Similar to objHeadCircle() but for displaying a bg img on page, rather
than as the actual background.
|
|
We can check for the existence of an object's background image by
calling getBgImg(), since it returns NULL when there is no such image.
But getHeadImg() behaves differently, returning a path to
'static/img/null.jpg' (via df.php) when there is no image, making it
more difficult to tell. This function addresses this concern.
|
|
This ctrl is not POSTed as part of the input[] array, but as a
standalone name.
|
|
|
|
|
|
|
|
The initial intended use case for this is applying the "active" and "in
active" classes to the first tab to appear in the settings modal.
|
|
|
|
|
|
This is basically a constructor for agent. The actual type returned is
a contrete agent.
|
|
|
|
|
|
|
|
If a table query yeilds zero rows, we would still attempt to load the
first (index zero) into $this, causing an error to be thrown by PHP. We
are now checking the size of the results array first.
|
|
|
|
|
|
|
|
|
|
|
|
UI module to use when listing out groups and pads. These will link to
the group/pad page and display information about the object.
|
|
Added a $limit argument to specify a maximum number of results to
return.
|