Documentation

AdminAjaxController extends Controller
in package

Handles processing of various admin AJAX methods including: widget settings; links; and categories.

Table of Contents

Constants

ALLOW_PRODUCTION  : mixed = TRUE

Properties

$action_log  : mixed
Should this controller log add/edit/delete actions?
$session  : Session

Methods

__call()  : void
Handles methods that do not exist.
__construct()  : void
Constructor
_run()  : mixed
The router/kohana will invoke this method to invoke an action.
addAddon()  : mixed
Popup for adding an addon
addCategory()  : mixed
Adds a category
attrEditor()  : mixed
Load an attribute editor for a given field
footerCompat()  : mixed
getAbsModulePath()  : string
Get the absolute path of the current module for this controller.
getCssClassName()  : string
Return the class name for this controller, expressed in CSS style, i.e. with dashes
getEntranceArguments()  : mixed
getModule()  : ModuleInterface|null
Get the module that this controller belongs to.
getModulePath()  : string
Get the a prefix suitable for finding views for this controller.
getTagSuggestions()  : mixed
lnkEditor()  : mixed
Load an attribute editor for a given field
richtextImport()  : mixed
Called by button handlers on the two RTEs and loaded in a facebox window Shows an interface to load stuff into the editor The editor id will br provided in $elemid
richtextImportIframe()  : mixed
Handle an upload of a document. Echos DIV-warapped JSON with the result of the import.
setTourCompleted()  : mixed
Set a given JavaScript tour as complete, preventing it from showing again.
styleGuideDemoConditions()  : void
Demo AJAX JSON callback url for {@see Fb::conditionsList}
widgetDispCondParams()  : void
Callback url for {@see Fb::conditionsList} for the widget display conditions
widgetDispConds()  : void
AJAX-loaded popup content for UI to manage widget display conditions
widgetSettings()  : mixed
Returns the HTML for the settings for an individual widget.
autoSetEmptyParam()  : void
Auto-set the "empty" param for fields with foreign keys to be NULL
deleteRecord()  : int
Deletes a record, and logs the deletion This should be used by all _deleteSave methods Starts a transaction and commits it if not already in a transaction when called
generateFormView()  : PhpView
Generates a form view from a JSON config file
jsonExtraValidate()  : void
Do any additional validation prior to saving the record
loadEditJson()  : array<string, array<string|int, array<string, mixed>>>
Loads a JSON config file for an automated edit-type form for this controller
loadFormJson()  : array<string|int, mixed>
Loads a config file for a JsonForm associated with this controller
loadRecord()  : array<string|int, mixed>|bool
Fetches the pre-update record from the database.
logAction()  : int
Stores a history item in the database, recording an add (i.e. insert), edit, or delete.
logAdd()  : int
Logs an add action. This is a wrapper for {@see Controller::logAction}
logAddCategory()  : int
Logs the adding of a record to a category. This is a wrapper for {@see Controller::logAction}
logDelete()  : int
Logs a delete action. This is a wrapper for {@see Controller::logAction}
logDeleteCategory()  : int
Logs the removal of a record from a category. This is a wrapper for {@see Controller::logAction}
logEdit()  : int
Logs an edit action. This is a wrapper for {@see Controller::logAction}
replaceSet()  : void
Inserts records which are in $new_records, but are not in the specified table Deletes records which are in the specified table, but not in $new_records Updates records which are in both
saveJsonData()  : bool
Automatically saves the data associated with a submission on a JSON-generated form

Constants

Properties

$action_log

Should this controller log add/edit/delete actions?

protected mixed $action_log = false

Methods

__call()

Handles methods that do not exist.

public __call(string $method, array<string|int, mixed> $args) : void
Parameters
$method : string

Method name

$args : array<string|int, mixed>

Arguments

Tags
throws
BadMethodCallException

_run()

The router/kohana will invoke this method to invoke an action.

public _run(mixed $method, mixed $args) : mixed
Parameters
$method : mixed
$args : mixed
Tags
inheritdoc

addAddon()

Popup for adding an addon

public addAddon(mixed $area_id, mixed $field_name) : mixed
Parameters
$area_id : mixed
$field_name : mixed

attrEditor()

Load an attribute editor for a given field

public attrEditor() : mixed

getAbsModulePath()

Get the absolute path of the current module for this controller.

public getAbsModulePath() : string

TODO this might be too broad. It's only used for loading JSON forms and perhaps encourages bad behaviour. Such as assuming common path structures for all modules, where instead this should be written into the module class.

Return values
string

getCssClassName()

Return the class name for this controller, expressed in CSS style, i.e. with dashes

public getCssClassName() : string

Example: When called from BlogPostController --> 'blog-post-controller'

Return values
string —

Name of this PHP class, in a format suitable for use in CSS

getEntranceArguments()

public getEntranceArguments(mixed $class) : mixed
Parameters
$class : mixed

getModulePath()

Get the a prefix suitable for finding views for this controller.

public getModulePath() : string

Do not assume that all modules, or even core sprout live relative to each other or the DOCROOT (as they previously did).

TODO rename this - like getViewPrefix()

Return values
string —

'sprout' or 'modules/AwesomeModule'

getTagSuggestions()

public getTagSuggestions([mixed $table = null ]) : mixed
Parameters
$table : mixed = null

richtextImport()

Called by button handlers on the two RTEs and loaded in a facebox window Shows an interface to load stuff into the editor The editor id will br provided in $elemid

public richtextImport(mixed $elemid) : mixed
Parameters
$elemid : mixed

richtextImportIframe()

Handle an upload of a document. Echos DIV-warapped JSON with the result of the import.

public richtextImportIframe() : mixed

Keys include: 'html' The imported HTML of the document

setTourCompleted()

Set a given JavaScript tour as complete, preventing it from showing again.

public setTourCompleted(mixed $tour_name) : mixed
Parameters
$tour_name : mixed

styleGuideDemoConditions()

Demo AJAX JSON callback url for {@see Fb::conditionsList}

public styleGuideDemoConditions() : void

Input is GET params 'field', 'op', 'val'

Output is JSON with two keys, 'op' and 'val'. They are both HTML strings containing Form fields for the operator dropdown and the values dropdown/textbox

Return values
void —

Outputs JSON and then terminates

widgetDispCondParams()

Callback url for {@see Fb::conditionsList} for the widget display conditions

public widgetDispCondParams() : void

Input is GET params 'field', 'op', 'val'

Output is JSON with two keys, 'op' and 'val'. They are both HTML strings containing Form fields for the operator dropdown and the values dropdown/textbox

Return values
void —

Outputs JSON and then terminates

widgetDispConds()

AJAX-loaded popup content for UI to manage widget display conditions

public widgetDispConds() : void
Return values
void —

Outputs HTML directly

widgetSettings()

Returns the HTML for the settings for an individual widget.

public widgetSettings(string $widget_name) : mixed
Parameters
$widget_name : string

The name of the widget to get settings for.

autoSetEmptyParam()

Auto-set the "empty" param for fields with foreign keys to be NULL

protected autoSetEmptyParam(array<string, array<string|int, array<string, mixed>>> &$conf) : void

This greatly reduces the number of foreign-key constraints hit in day-to-day use, especially with file fields.

Parameters
$conf : array<string, array<string|int, array<string, mixed>>>

Json form configuration

Return values
void —

Array $conf is altered in-place

deleteRecord()

Deletes a record, and logs the deletion This should be used by all _deleteSave methods Starts a transaction and commits it if not already in a transaction when called

protected deleteRecord(string $table, int $record_id[, int $parent_log_id = 0 ]) : int
Parameters
$table : string

Table name

$record_id : int
$parent_log_id : int = 0

ID of a parent entry in the history_items table. This is used when multiple records are deleted by a single action. Undoing that action can then restore all of the deleted data.

Tags
throws
QueryException
Return values
int —

ID of the record inserted into the history_items table (0 if no logging)

generateFormView()

Generates a form view from a JSON config file

protected generateFormView(mixed $file_name) : PhpView
Parameters
$file_name : mixed
Tags
throws
Exception

If the file is missing or invalid

Return values
PhpView

jsonExtraValidate()

Do any additional validation prior to saving the record

protected jsonExtraValidate(int $id, Validator $validator) : void
Parameters
$id : int

Record ID or 0 for adds

$validator : Validator

Validator instance to attach your errors to

loadEditJson()

Loads a JSON config file for an automated edit-type form for this controller

protected loadEditJson() : array<string, array<string|int, array<string, mixed>>>
Tags
throws
Exception

If the file is missing or invalid

Return values
array<string, array<string|int, array<string, mixed>>>

loadFormJson()

Loads a config file for a JsonForm associated with this controller

protected loadFormJson(string $file_name) : array<string|int, mixed>
Parameters
$file_name : string

The config file name, e.g. 'register.json'

Tags
throws
FileMissingException

If the file is missing

Exception

If the file is invalid

Return values
array<string|int, mixed>

loadRecord()

Fetches the pre-update record from the database.

protected loadRecord(string $table, int $record_id) : array<string|int, mixed>|bool

Used by the action log system, and disabled if the action log system has been turned off

Parameters
$table : string

Name of table to load record from

$record_id : int

ID of record to load

Tags
throws
RowMissingException

If record doesn't exist

Return values
array<string|int, mixed>|bool —

False if not using logging for this controller, else the record row

logAction()

Stores a history item in the database, recording an add (i.e. insert), edit, or delete.

protected logAction(string $table, int $record_id, string $type[, array<string|int, mixed> $data = [] ][, int $parent_log_id = 0 ]) : int

Should be called AFTER the action has been made. N.B. This is a low-level method; the friendlier wrapper methods are preferred; e.g. Controller::logAdd, Controller::logEdit

Parameters
$table : string

The table which had data modified by the query

$record_id : int

The id of the added/edited/deleted record

$type : string

ENUM value from history_items.type

$data : array<string|int, mixed> = []

Data associated with an add/edit. The handling differs based on the $type parameter: 'Add' ignored 'Edit' should be an array of the pre-update data, used to build a diff 'Delete' should contain the complete data of the deleted record 'Add category' should contain ['cat_id' => value] 'Delete category' should contain ['cat_id' => value] 'Change password' should be an empty array

$parent_log_id : int = 0

ID of a parent log entry in the history_items table. This is used when multiple records are deleted by a single action. Undoing that action can then restore all of the deleted data. N.B. This is only relevant for deletes

Tags
throws
QueryException
Return values
int —

ID of the record inserted into the history_items table; 0 if no insert was done; -1 if it failed

logAdd()

Logs an add action. This is a wrapper for {@see Controller::logAction}

protected logAdd(string $table, int $record_id) : int
Parameters
$table : string

The table which had data modified by the query

$record_id : int

The id of the added record

Tags
throws
QueryException
Return values
int —

ID of the record inserted into the history_items table

logAddCategory()

Logs the adding of a record to a category. This is a wrapper for {@see Controller::logAction}

protected logAddCategory(string $table, int $record_id, int $cat_id) : int
Parameters
$table : string

The table which had data modified by the query

$record_id : int

The ID of the record which was added to the category

$cat_id : int

The ID of the category which the record was added to

Tags
throws
QueryException
Return values
int —

ID of the record inserted into the history_items table

logDelete()

Logs a delete action. This is a wrapper for {@see Controller::logAction}

protected logDelete(string $table, int $record_id, array<string|int, mixed> $data[, int $parent_log_id = 0 ]) : int
Parameters
$table : string

The table which contained the deleted record

$record_id : int

The id of the deleted record

$data : array<string|int, mixed>

The complete contents of the record which was deleted, i.e. [field => value], so it can be restored if necessary

$parent_log_id : int = 0

ID of a parent log entry in the history_items table. This is used when multiple records are deleted by a single action. Undoing that action can then restore all of the deleted data.

Tags
throws
QueryException
Return values
int —

ID of the record inserted into the history_items table

logDeleteCategory()

Logs the removal of a record from a category. This is a wrapper for {@see Controller::logAction}

protected logDeleteCategory(string $table, int $record_id, int $cat_id) : int
Parameters
$table : string

The table which contains the record which was removed from the category

$record_id : int

The ID of the record which was removed from the category

$cat_id : int

The ID of the category which the record was removed from

Tags
throws
QueryException
Return values
int —

ID of the record inserted into the history_items table

logEdit()

Logs an edit action. This is a wrapper for {@see Controller::logAction}

protected logEdit(string $table, int $record_id, array<string|int, mixed> $data) : int
Parameters
$table : string

The table which had data modified by the query

$record_id : int

The id of the edited record

$data : array<string|int, mixed>

Pre-update data, used to build a diff

Tags
throws
QueryException
Return values
int —

ID of the record inserted into the history_items table

replaceSet()

Inserts records which are in $new_records, but are not in the specified table Deletes records which are in the specified table, but not in $new_records Updates records which are in both

protected replaceSet(string $table, array<string|int, mixed> $new_records, array<string|int, mixed> $conditions) : void

Matching is done on the 'id' field, as a result the $new_records arrays MUST contain an id field.

Parameters
$table : string

The table name. Do not include prefix.

$new_records : array<string|int, mixed>

The new records for the table. Should be an array of arrays, With each sub-array being the arguments which would normally be passed to Pdb::insert or Pdb::update

$conditions : array<string|int, mixed>

A where clause to use when looking to see what records already exist. Pdb::buildClause

Tags
throws
QueryException

saveJsonData()

Automatically saves the data associated with a submission on a JSON-generated form

protected saveJsonData(array<string, array<string|int, array<string, mixed>>> $conf, int &$item_id[, string $mode = '' ]) : bool
Parameters
$conf : array<string, array<string|int, array<string, mixed>>>

Config loaded from a JSON file

$item_id : int

Database ID of record to store data in. If zero, a new record will be inserted, and as this argument is a reference, it will be updated with the auto-increment ID generated by the insert.

$mode : string = ''

Mode: 'add', 'edit', or something custom (e.g. 'duplicate', 'verify'). If blank, 'add' or 'edit' will be automatically determined, based on $item_id

Return values
bool —

True if the save succeeded. If false is returned, errors will be saved in $_SESSION

On this page

Search results