\JSchemaChangeitem
Each object represents one query, which is one line from a DDL SQL query.
This class is used to check the site's database to see if the DDL query has been run.
If not, it provides the ability to fix the database by re-running the DDL query.
The queries are parsed from the update files in the folder
administrator/components/com_admin/sql/updates/<database>.
These updates are run automatically if the site was updated using com_installer.
However, it is possible that the program files could be updated without udpating
the database (for example, if a user just copies the new files over the top of an
existing installation).
This is an abstract class. We need to extend it for each database and add a
buildCheckQuery() method that creates the query to check that a DDL query has been run.
Synopsis
class JSchemaChangeitem
{
- // members
- public $file;
- public $updateQuery;
- public $checkQuery;
- public $checkQueryExpected;
- public JDatabaseDriver $db;
- public $queryType;
- public $msgElements;
- public $checkStatus;
- public $rerunStatus;
- // methods
- public void __construct()
- public static JSchemaChangeitem getInstance()
- protected abstract void buildCheckQuery()
- public boolean check()
- public void fix()
Hierarchy
Members
public
- $checkQuery
—
string
Check query: query used to check the db schema - $checkQueryExpected
—
string
Check query result: expected result of check query if database is up to date - $checkStatus
—
integer
Checked status - $db
—
JDatabaseDriver
JDatabaseDriver object - $file
—
string
Update file: full path file name where query was found - $msgElements
—
array
Array with values for use in a JText::sprintf statment indicating what was checked - $queryType
—
string
Query type: To be used in building a language key for a message to tell user what was checked / changed Possible values: ADD_TABLE, ADD_COLUMN, CHANGE_COLUMN_TYPE, ADD_INDEX - $rerunStatus
—
int
Rerun status - $updateQuery
—
string
Update query: query used to change the db schema (one line from the file)
Methods
protected
- buildCheckQuery() — Checks a DDL query to see if it is a known type If yes, build a check query to see if the DDL has been run on the database.
public
- __construct() — Constructor: builds check query and message from $updateQuery
- check() — Runs the check query and checks that 1 row is returned If yes, return true, otherwise return false
- fix() — Runs the update query to apply the change to the database
- getInstance() — Returns a reference to the JSchemaChangeitem object.