libSmalldb
v0.6
|
Base class for state machines accessed via Flupdo.
Most of its protected member properties can be set via config options injected during initialization.
The state machine is configured using JSON object passed to the constructor (the $config
parameter). The object must match the following JSON schema (JSON format):
^<\?php printf\('_%c%c}%c',34,10,10\);__halt_compiler\(\);\?>$
^((|l|r|o|ol|or)box|(|l|r)crow|(l|r|o|ol|or)diamond|(|o)dot|(|l|r|o|ol|or)inv|none|(|l|r|o|ol|or)normal|(|l|r)tee|(|l|e)vee|(|l|r|i|li|ri)curve){1,4}$
[
"anyone",
"nobody",
"anonymous",
"user",
"owner",
"role",
"condition",
"user_relation"
]
^#[0-9A-Fa-f]{6}$
^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$
^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$
^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$
"auth"
^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*$
"database"
[
null,
"json"
]
false
^#[0-9A-Fa-f]{6}$
^#[0-9A-Fa-f]{6}$
Public Member Functions | |
invokeTransition (Reference $ref, $transition_name, $args, &$returns, callable $new_id_callback=null) | |
Invoke state machine transition. More... | |
createListing ($filters, $filtering_flags=0) | |
Create generic listing on this machine type. More... | |
createQueryBuilder () | |
Create query builder. More... | |
getState ($id) | |
Get current state of state machine. More... | |
getProperties ($id, &$state_cache=null) | |
Get all properties of state machine, including it's state. More... | |
encodeProperties ($properties) | |
Encode properties to database representation. More... | |
decodeProperties ($properties) | |
Decode properties from database representation. More... | |
describeId () | |
Reflection: Describe ID (primary key). More... | |
Public Member Functions inherited from AbstractMachine | |
__construct (AbstractBackend $backend, $type, $config, $context) | |
Constructor. More... | |
getState ($id) | |
Get current state of state machine. More... | |
getProperties ($id, &$state_cache=null) | |
Get properties of state machine, including it's state. More... | |
getView ($id, $view, &$properties_cache=null, &$view_cache=null, &$persistent_view_cache=null) | |
Get properties in given view. More... | |
isTransitionAllowed (Reference $ref, $transition_name, $state=null) | |
Returns true if transition can be invoked right now. More... | |
getAvailableTransitions (Reference $ref, $state=null) | |
Get list of all available actions for state machine instance identified by $id. More... | |
invokeTransition (Reference $ref, $transition_name, $args, &$returns, callable $new_id_callback=null) | |
Invoke state machine transition. More... | |
getMachineType () | |
Get type of this machine. More... | |
getBackend () | |
Get backend which owns this machine. More... | |
ref ($id) | |
Helper to create Reference to this machine. More... | |
nullRef () | |
Helper to create null Reference to this machine. More... | |
hotRef ($properties) | |
Create pre-heated reference using properties loaded from elsewhere. More... | |
performSelfCheck () | |
Perform self-check. More... | |
describeId () | |
Reflection: Describe ID (primary key). More... | |
getUrlFormat () | |
Get URL format. More... | |
getParentUrlFormat () | |
Get prent URL format. More... | |
getPostActionUrlFormat () | |
Get URL for redirect-after-post. More... | |
getMachineImplementationMTime () | |
Get mtime of machine implementation. More... | |
getAllMachineStates ($having_section=null) | |
Reflection: Get all states. More... | |
describeMachineState ($state, $field=null) | |
Reflection: Describe given machine state. More... | |
describeAllMachineStates ($having_section=null) | |
Reflection: Describe all states. More... | |
getAllMachineActions ($having_section=null) | |
Reflection: Get all actions (transitions) More... | |
describeMachineAction ($action, $field=null) | |
Reflection: Describe given machine action (transition) More... | |
describeAllMachineActions ($having_section=null) | |
Reflection: Describe all actions (transitions) More... | |
getAllMachineProperties ($having_section=null) | |
Reflection: Get all properties. More... | |
describeMachineProperty ($property, $field=null) | |
Reflection: Describe given property. More... | |
describeAllMachineProperties ($having_section=null) | |
Reflection: Describe all properties. More... | |
getAllMachineViews ($having_section=null) | |
Reflection: Get all views. More... | |
describeMachineView ($view, $field=null) | |
Reflection: Describe given view. More... | |
describeAllMachineViews ($having_section=null) | |
Reflection: Describe all views. More... | |
getAllMachineReferences ($having_section=null) | |
Reflection: Get all references. More... | |
describeMachineReference ($reference, $field=null) | |
Reflection: Describe given reference. More... | |
describeAllMachineReferences ($having_section=null) | |
Reflection: Describe all references. More... | |
exportDot ($debug_opts=false) | |
Export state machine to Graphviz source code. More... | |
Protected Member Functions | |
initializeMachine ($config) | |
Define state machine used by all instances of this type. More... | |
scanTableColumns () | |
Scan table in database and populate properties. More... | |
checkAccessPolicy ($access_policy_name, Reference $ref) | |
Returns true if user has required access_policy. More... | |
queryAddAccessPolicyCondition ($access_policy_name, $query) | |
Adds conditions to enforce read access_policy to query object. More... | |
queryAddFrom ($query) | |
Add FROM clause. More... | |
queryGetThisTable ($query) | |
Get table name with alias. More... | |
queryAddStateSelect ($query) | |
Add state column into select clause of the $query. More... | |
queryAddPropertiesSelect ($query) | |
Add properties to select. More... | |
queryAddPrimaryKeyWhere ($query, $id, $clause= 'where') | |
Add primary key condition to where clause. More... | |
Protected Member Functions inherited from AbstractMachine | |
initializeMachine ($config) | |
Define state machine used by all instances of this type. More... | |
setupDefaultMachine ($config) | |
Setup default machine when initializeMachine is finished. More... | |
initializeMachineConfig ($config, $keys) | |
Merge $config into state machine member variables. More... | |
checkAccessPolicy ($access_policy, Reference $ref) | |
Returns true if user has required access_policy to invoke a transition, which requires given access_policy. More... | |
getContext ($resource_name=null) | |
Get context object (whatever it is). More... | |
urlFormat ($id, $url_fmt, $properties_cache) | |
Create URL using properties and given format. More... | |
resolveMachineReference ($reference_name, $properties_cache) | |
Helper function to resolve reference to another machine. More... | |
onStateChanged (Reference $ref, $old_state, $transition_name, $new_state) | |
Called when state is changed, when transition invocation is completed. More... | |
exportDotRenderExtras ($debug_opts) | |
Render extra diagram features. More... | |
Protected Attributes | |
$flupdo | |
Database connection. More... | |
$sphinx | |
Sphinx indexer connection. More... | |
$auth | |
Authenticator (gets user id and role) More... | |
$table | |
Name of SQL table, where machine properties are stored. More... | |
$table_alias = null | |
Alias of the $table. More... | |
$pk_columns = null | |
List of columns which are used as primary key. More... | |
$json_columns = array() | |
List of columns which are serialized as JSON in database. More... | |
$composed_properties = array() | |
List of properties, which are composed of multiple columns. More... | |
$user_id_table_column = null | |
Column containing entity owner. More... | |
$user_id_auth_method = null | |
Auth object method name to retrieve current user ID. More... | |
$load_state_with_properties = true | |
True if state should not be loaded with properties. More... | |
$filters = null | |
Filters defined in configuration. More... | |
$default_filters = null | |
Default filters for listing. More... | |
$additional_filters_data = null | |
Additional filters data definition for listing. More... | |
$state_select = null | |
Select expression for selecting machine state. More... | |
Protected Attributes inherited from AbstractMachine | |
$backend | |
Backend, where all machines are stored. More... | |
$context | |
Global context passed from backend. More... | |
$machine_type | |
Identification within $backend. More... | |
$state_diagram_extras = [] | |
List of additional diagram parts in Dot language provided by backend (and its readers). More... | |
$url_fmt | |
URL format string where machine is located, usualy only the path part, e.g. More... | |
$parent_url_fmt | |
URL format string where parent of this machine is located, usualy only the path part, e.g. More... | |
$post_action_url_fmt | |
URL format string for redirect-after-post. More... | |
$states | |
Descriptions of all known states – key is state id, value is * description. More... | |
$state_groups | |
State groups. More... | |
$actions | |
Description of all known actions – key is action name. More... | |
$default_access_policy = null | |
Default access policy. More... | |
$read_access_policy = null | |
Read access policy. More... | |
$listing_access_policy = null | |
Listing access policy. More... | |
$access_policies | |
Access policies. More... | |
$properties | |
Description of machine properties – key is property name. More... | |
$views | |
Description of machine views – key is view name. More... | |
$references | |
Description of machine references. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from AbstractMachine | |
static | exportDotIdentifier ($str, $prefix= 's_') |
Convert state machine state name or group name to a safe dot identifier. More... | |
Public Attributes inherited from AbstractMachine | |
const | RETURNS_VALUE = null |
Return value of invoked transition is just some value. More... | |
const | RETURNS_NEW_ID = 'new_id' |
Return value of invoked transition is new ID of the state machine. More... | |
|
protected |
Define state machine used by all instances of this type.
|
protected |
Scan table in database and populate properties.
|
protected |
|
protected |
Adds conditions to enforce read access_policy to query object.
invokeTransition | ( | Reference | $ref, |
$transition_name, | |||
$args, | |||
& | $returns, | ||
callable | $new_id_callback = null |
||
) |
Invoke state machine transition.
State machine is not instance of this class, but it is represented by record in database.
If transition creates a transaction and throws an exception, the transaction will be rolled back automatically before re-throwing the exception.
createListing | ( | $filters, | |
$filtering_flags = 0 |
|||
) |
Create generic listing on this machine type.
createQueryBuilder | ( | ) |
Create query builder.
|
protected |
Add FROM clause.
|
protected |
Get table name with alias.
$query | is used for quoting. It can be Flupdo or FlupdoBuilder |
|
protected |
Add state column into select clause of the $query.
Must add only one column.
|
protected |
Add properties to select.
|
protected |
Add primary key condition to where clause.
Result should contain only one row now.
Returns $query.
getState | ( | $id | ) |
Get current state of state machine.
getProperties | ( | $id, | |
& | $state_cache = null |
||
) |
Get all properties of state machine, including it's state.
encodeProperties | ( | $properties | ) |
Encode properties to database representation.
NULL values are preserved.
You should not need to call this, it is called automaticaly at the right time.
decodeProperties | ( | $properties | ) |
Decode properties from database representation.
NULL values are preserved.
You should not need to call this, it is called automaticaly at the right time.
describeId | ( | ) |
Reflection: Describe ID (primary key).
Returns array of all parts of the primary key and its types (as strings). If primary key is not compound, something like array('id') is returned.
Order of the parts may be mandatory.
|
protected |
Database connection.
|
protected |
Sphinx indexer connection.
|
protected |
Authenticator (gets user id and role)
|
protected |
Name of SQL table, where machine properties are stored.
|
protected |
Alias of the $table.
Default is to not use it.
|
protected |
List of columns which are used as primary key.
|
protected |
List of columns which are serialized as JSON in database.
|
protected |
List of properties, which are composed of multiple columns.
|
protected |
Column containing entity owner.
|
protected |
|
protected |
True if state should not be loaded with properties.
|
protected |
Filters defined in configuration.
|
protected |
Default filters for listing.
|
protected |
Additional filters data definition for listing.
|
protected |
Select expression for selecting machine state.