SproutCMS

This is the code documentation for the SproutCMS project

Page options:

Inherited members

class PerRecordPermissionAdminController

Manages which controllers have per-record permissions enabled

Variables

NameVisibilityDescription
$action_log
Should this controller log add/edit/delete actions?
$add_defaults
Default values used for adding a record.
$controller_name 
$duplicate_defaults
Default values used for duplicating a record.
$duplicate_enabled
Flag to turn duplication on or off
$export_modifiers
Modifiers applied to data prior to export
Should be a class which extends ColModifier
Can be an object instance or string of a class name
$friendly_name 
$import_columns
The columns to allow import for
$import_duplicates
The default selection for the "duplicates" option
Values are "new", "merge", "merge_blank" and "skip".
$import_headings
If a client is providing CSVs which don't have headings
You'll need to provide them in this array
$import_id_column
Typically, we don't want to import the ID, and just let autoinc do it's thing
$main_actions
Actions for the itemlist
$main_add
Should a link be shown above the list for adding records? (default yes)
$main_columns
The columns to use for the main view
$main_delete
Is deletion allowed, with an option shown in the UI? (default: no)
$main_modes
Different modes available for the main view
By default, there is only one mode: list
$main_order
Order of main view records
$main_where
An additional where clause for the main view
$navigation_name
The friendly name used in the sidebar navigation. Defaults to matching the friendly name.
$per_subsite
Should a UI for editing the "subsite_id" field on a record be shown?
If enabled by extending classes, then the table should contain a 'subsite_id' INT UNSIGNED column
$records_per_page
The default number of records to show per page
$refine_bar
Defines the widgets for the refine bar
$table_name 

Functions

NameVisibilityDescription
__callpublicHandles methods that do not exist.
__constructpublicConstructor. This must be called in the extending class.
_actionLogpublic 
_addPreRenderprotectedHook called by _getAddForm() just before the view is rendered
_addSavepublic 
_deletePostSavepublicDoes custom actions after the _deleteSave method is called, e.g. clearing cache data
_deletePreSavepublicDoes custom actions before _deleteSave method is called, e.g. extra security checks
_deleteSavepublic 
_duplicatePreRenderprotectedHook called by _getDuplicateForm() just before the view is rendered
_duplicateSavepublicProcess the saving of a duplication. Basic version just calls _editSave
_editPreRenderprotectedHook called by _getEditForm() just before the view is rendered
_editSavepublic 
_exportDatapublicDoes the actual export. Return false on error.
_extraMultiDeletepublicForm to delete multiple records
_extraResetpublic 
_getAddFormpublic 
_getAddSubActionspublicReturn the sub-actions for adding a record (e.g. preview)
_getContentspublicGenerate a form where operators can specify which controllers should have per-record permissions enabled
_getContentsQueryprotectedReturns the SQL query for use by the contents list.
_getContentsViewpublicReturn HTML for a resultset of items
_getContentsViewListpublicFormats a resultset of items into an Itemlist
_getCustomAddSaveHTMLpublicOptional custom HTML for the save box
_getCustomDuplicateSaveHTMLpublicOptional custom HTML for the save box
_getCustomEditSaveHTMLpublicOptional custom HTML for the save box
_getDeleteFormpublic 
_getDeleteSubActionspublicReturn the sub-actions for deleting a record (e.g. cancel)
_getDuplicateFormpublicReturn HTML which represents the form for duplicating a record
_getDuplicateSubActionspublicReturn the sub-actions for duplicating a record
_getEditFormpublic 
_getEditLiveUrlpublicReturn the URL to use for the 'view live site' button, when editing a given record
_getEditSubActionspublicReturn the sub-actions for editing a record (e.g. deleting)
_getExportpublicReturns form for doing exports
_getExportQueryprotectedReturns the SQL query for use by the export tools.
_getImportpublicReturns a form which contains options for doing an export
_getNavigationpublicReturn the navigation for this controller
_getRecordprotectedFetch the record with a given id
_getRefineClauseprotectedReturn the WHERE clause to use for a given key which is provided by the RefineBar
_getSearchFormpublicReturn HTML for a search form
_getToolspublic 
_getVisibilityFieldspublicReturn the fields to show in the sidebar when adding or editing a record.
_identifierpublicCreates the identifier used in the heading, and for reordering.
_importColGuessprotectedTry to guess the database name for a given CSV heading.
_importDatapublicDoes the actual import
_importExtraOptionsprotectedCalled when the import form is being built.
_importPostprotectedCalled at the end of the the import process, after everything has been done.
_importPostRecordprotectedCalled after a record has been inserted or updated.
_importPreprotectedCalled at the beginning of the the import process.
_importPreRecordprotectedCalled after the field data has been determined, but before the insert or update is run.
_intropublicReturns the intro HTML for this controller.
_invalidateCachespublicThis is called after every add, edit and delete, as well as other (i.e. bulk) actions.
_isAddSavedpublicIs the "add" action saved?
_isDeleteSavedpublicCheck if deletion of a particular record is allowed
_isEditSavedpublicIs the "edit" action saved?
_modeSelectorprotectedReturns HTML for a ui component to update the current main view mode
_paginationBarprotectedBuilds the HTML for showing the navigation through pages in the admin.
_preSaveprotected 
_runpublicThe router/kohana will invoke this method to invoke an action.
ajaxLookuppublicReturn list of records for given search term
ajaxLookupListpublicReturn list of records for given search term
applyRefineFilterprotectedApplies filters defined in the query string using a LIKE contains
autoSetEmptyParamprotectedAuto-set the "empty" param for fields with foreign keys to be NULL
deleteRecordprotectedDeletes a record, and logs the deletion
generateFormViewprotectedGenerates a form view from a JSON config file
getControllerListprotectedGets the list of controllers which can have per-category permissions set
getControllerNamepublicReturns the defined controller name.
getCssClassNamepublicReturn the class name for this controller, expressed in CSS style, i.e. with dashes
getDuplicateEnabledpublicReturns the duplication enabling flag
getFriendlyNamepublicReturns the defined controller friendly name
getModulePathpublicGets the relative path to the module the controller lives in, or sprout itself
getNavigationNamepublicReturns the defined controller navigation name
getTableNamepublicReturns the defined table name
getTopnavNamepublicGets the name of the controller to use for the top nav
initRefineBarprotectedInitialises the refine bar if it isn't already set, with a search widget for the 'name' field if it exists
initTableNameprotectedInitialises the table name if it isn't already set, using the plural of the shorthand controller name
injectVisiblityFieldsprotectedInject the visiblity fields into a loaded json configuration, so they actually save
isPerSubsitepublicIf true, then a UI for editing the "subsite_id" for a record should be shown
jsonExtraValidateprotectedDo any additional validation prior to saving the record
loadEditJsonprotectedLoads a JSON config file for an automated edit-type form for this controller
loadFormJsonprotectedLoads a config file for a JsonForm associated with this controller
loadRecordprotectedFetches the pre-update record from the database.
logActionprotectedStores a history item in the database, recording an add (i.e. insert), edit, or delete.
logAddprotectedLogs an add action. This is a wrapper for Controller::logAction
logAddCategoryprotectedLogs the adding of a record to a category. This is a wrapper for Controller::logAction
logDeleteprotectedLogs a delete action. This is a wrapper for Controller::logAction
logDeleteCategoryprotectedLogs the removal of a record from a category. This is a wrapper for Controller::logAction
logEditprotectedLogs an edit action. This is a wrapper for Controller::logAction
postJsonMultiTagpublicMulti-tag some items. Uses AJAX. Returns JSON.
postMultiDeletepublicDelete multiple records
replaceSetprotectedInserts records which are in $new_records, but are not in the specified table
resetSavepublic 
savepublicSave which controllers should have per-record permissions enabled
saveJsonDataprotectedAutomatically saves the data associated with a submission on a JSON-generated form

public __call (from BaseController)

void $BaseController->__call ( string $method , array $args );

Handles methods that do not exist.

public __construct (from ManagedAdminController)

void $ManagedAdminController->__construct ( );

Constructor. This must be called in the extending class.

public _actionLog (from ManagedAdminController)

unknown $ManagedAdminController->_actionLog ( );

This function does not have a description

protected _addPreRender (from ManagedAdminController)

void $ManagedAdminController->_addPreRender ( mixed $view );

Hook called by _getAddForm() just before the view is rendered

public _addSave (from NoRecordsAdminController)

unknown $NoRecordsAdminController->_addSave ( mixed &$item_id );

This function does not have a description

public _deletePostSave (from ManagedAdminController)

void $ManagedAdminController->_deletePostSave ( int $item_id );

Does custom actions after the _deleteSave method is called, e.g. clearing cache data

public _deletePreSave (from ManagedAdminController)

void $ManagedAdminController->_deletePreSave ( int $item_id );

Does custom actions before _deleteSave method is called, e.g. extra security checks

public _deleteSave (from NoRecordsAdminController)

unknown $NoRecordsAdminController->_deleteSave ( mixed $item_id );

This function does not have a description

protected _duplicatePreRender (from ManagedAdminController)

void $ManagedAdminController->_duplicatePreRender ( mixed $view , mixed $item_id );

Hook called by _getDuplicateForm() just before the view is rendered

public _duplicateSave (from ManagedAdminController)

boolean $ManagedAdminController->_duplicateSave ( int $id );

Process the saving of a duplication. Basic version just calls _editSave

protected _editPreRender (from ManagedAdminController)

void $ManagedAdminController->_editPreRender ( mixed $view , mixed $item_id );

Hook called by _getEditForm() just before the view is rendered

public _editSave (from NoRecordsAdminController)

unknown $NoRecordsAdminController->_editSave ( mixed $item_id );

This function does not have a description

public _exportData (from ManagedAdminController)

array $ManagedAdminController->_exportData ( );

Does the actual export. Return false on error.

public _extraMultiDelete (from ManagedAdminController)

unknown $ManagedAdminController->_extraMultiDelete ( );

Form to delete multiple records

public _extraReset

unknown $PerRecordPermissionAdminController->_extraReset ( );

This function does not have a description

public _getAddForm (from NoRecordsAdminController)

unknown $NoRecordsAdminController->_getAddForm ( );

This function does not have a description

public _getAddSubActions (from ManagedAdminController)

array $ManagedAdminController->_getAddSubActions ( );

Return the sub-actions for adding a record (e.g. preview)
These are rendered into HTML using AdminController::renderSubActions

public _getContents

array $PerRecordPermissionAdminController->_getContents ( );

Generate a form where operators can specify which controllers should have per-record permissions enabled

This is instead of the normal behaviour: HTML which represents a list of records for a controller

protected _getContentsQuery (from ManagedAdminController)

string $ManagedAdminController->_getContentsQuery ( string $where , string $order , array &$params );

Returns the SQL query for use by the contents list.

The query MUST NOT include a LIMIT clause.
The query MUST include a SQL_CALC_FOUND_ROWS clause.
The main table SHOULD be aliased to 'item'.

public _getContentsView (from ManagedAdminController)

unknown $ManagedAdminController->_getContentsView ( Traversable $items , string $mode , anything $unused );

Return HTML for a resultset of items
The returned HTML will be sandwiched between the refinebar and the pagination bar.

public _getContentsViewList (from ManagedAdminController)

unknown $ManagedAdminController->_getContentsViewList ( Traversable $items , anything $unused );

Formats a resultset of items into an Itemlist

public _getCustomAddSaveHTML (from ManagedAdminController)

unknown $ManagedAdminController->_getCustomAddSaveHTML ( );

Optional custom HTML for the save box
Return NULL to use the default HTML

public _getCustomDuplicateSaveHTML (from ManagedAdminController)

unknown $ManagedAdminController->_getCustomDuplicateSaveHTML ( return $item_id );

Optional custom HTML for the save box
Return NULL to use the default HTML

public _getCustomEditSaveHTML (from ManagedAdminController)

unknown $ManagedAdminController->_getCustomEditSaveHTML ( return $item_id );

Optional custom HTML for the save box
Return NULL to use the default HTML

public _getDeleteForm (from NoRecordsAdminController)

unknown $NoRecordsAdminController->_getDeleteForm ( mixed $item_id );

This function does not have a description

public _getDeleteSubActions (from ManagedAdminController)

array $ManagedAdminController->_getDeleteSubActions ( mixed $item_id );

Return the sub-actions for deleting a record (e.g. cancel)
These are rendered into HTML using AdminController::renderSubActions

public _getDuplicateForm (from ManagedAdminController)

unknown $ManagedAdminController->_getDuplicateForm ( int $id );

Return HTML which represents the form for duplicating a record

public _getDuplicateSubActions (from ManagedAdminController)

array $ManagedAdminController->_getDuplicateSubActions ( mixed $item_id );

Return the sub-actions for duplicating a record
These are rendered into HTML using AdminController::renderSubActions

public _getEditForm (from NoRecordsAdminController)

unknown $NoRecordsAdminController->_getEditForm ( mixed $item_id );

This function does not have a description

public _getEditLiveUrl (from ManagedAdminController)

string|null $ManagedAdminController->_getEditLiveUrl ( int $item_id );

Return the URL to use for the 'view live site' button, when editing a given record

public _getEditSubActions (from ManagedAdminController)

array $ManagedAdminController->_getEditSubActions ( mixed $item_id );

Return the sub-actions for editing a record (e.g. deleting)
These are rendered into HTML using AdminController::renderSubActions

public _getExport (from ManagedAdminController)

unknown $ManagedAdminController->_getExport ( );

Returns form for doing exports

protected _getExportQuery (from ManagedAdminController)

unknown $ManagedAdminController->_getExportQuery ( [ string $where ] );

Returns the SQL query for use by the export tools.
The query does MUST NOT include a LIMIT clause.

public _getImport (from ManagedAdminController)

unknown $ManagedAdminController->_getImport ( mixed $filename );

Returns a form which contains options for doing an export

public _getNavigation

string $PerRecordPermissionAdminController->_getNavigation ( );

Return the navigation for this controller

protected _getRecord (from ManagedAdminController)

array $ManagedAdminController->_getRecord ( int $id );

Fetch the record with a given id

protected _getRefineClause (from ManagedAdminController)

string $ManagedAdminController->_getRefineClause ( string $key , string $val , array &$query_params );

Return the WHERE clause to use for a given key which is provided by the RefineBar
This must be called in the extending class if no clause can be determined,
i.e. return parent::_getRefineClause()

Allows custom non-table clauses to be added.
Is only called for key names which begin with an underscore.
The base table is aliased to 'item'.

public _getSearchForm (from ManagedAdminController)

unknown $ManagedAdminController->_getSearchForm ( );

Return HTML for a search form

public _getTools (from NoRecordsAdminController)

unknown $NoRecordsAdminController->_getTools ( );

This function does not have a description

public _getVisibilityFields (from ManagedAdminController)

array $ManagedAdminController->_getVisibilityFields ( );

Return the fields to show in the sidebar when adding or editing a record.
These fields are shown under a heading of "Visibility"

Key is the field name, value is the field label

public _identifier (from ManagedAdminController)

string $ManagedAdminController->_identifier ( array $item );

Creates the identifier used in the heading, and for reordering.

protected _importColGuess (from ManagedAdminController)

string $ManagedAdminController->_importColGuess ( string $csv_heading );

Try to guess the database name for a given CSV heading.
If you can't figure it out, return NULL.
If NULL is returned, the rudimentry almost-exact guesser will be run.

public _importData (from ManagedAdminController)

unknown $ManagedAdminController->_importData ( string $filename );

Does the actual import

protected _importExtraOptions (from ManagedAdminController)

unknown $ManagedAdminController->_importExtraOptions ( );

Called when the import form is being built.

Returns HTML of extra options to display, or null if no extra options.

protected _importPost (from ManagedAdminController)

unknown $ManagedAdminController->_importPost ( );

Called at the end of the the import process, after everything has been done.
Is called from within a transaction.
Return FALSE to abort the import.

protected _importPostRecord (from ManagedAdminController)

boolean $ManagedAdminController->_importPostRecord ( int $record_id , array $new_data , array $existing_record , string $type , array $raw_data );

Called after a record has been inserted or updated.

protected _importPre (from ManagedAdminController)

unknown $ManagedAdminController->_importPre ( );

Called at the beginning of the the import process.
Is called from within a transaction.
Return FALSE to abort the import.

protected _importPreRecord (from ManagedAdminController)

unknown $ManagedAdminController->_importPreRecord ( array &$new_data , array $raw_data );

Called after the field data has been determined, but before the insert or update is run.

Return FALSE to skip the record.

public _intro (from ManagedAdminController)

void $ManagedAdminController->_intro ( );

Returns the intro HTML for this controller.

public _invalidateCaches (from ManagedAdminController)

void $ManagedAdminController->_invalidateCaches ( string $action [, int $item_id ] );

This is called after every add, edit and delete, as well as other (i.e. bulk) actions.
Use it to clear any frontend caches. The default is an empty method.

public _isAddSaved (from ManagedAdminController)

bool $ManagedAdminController->_isAddSaved ( );

Is the "add" action saved?
These may be false if the UI provides its own save mechanism (e.g. multi-add)

public _isDeleteSaved (from ManagedAdminController)

bool $ManagedAdminController->_isDeleteSaved ( int $item_id );

Check if deletion of a particular record is allowed
This method may be overridden if ignoring the $main_delete property is desired

public _isEditSaved (from ManagedAdminController)

bool $ManagedAdminController->_isEditSaved ( mixed $item_id );

Is the "edit" action saved?
These may be false if the UI provides its own save mechanism

protected _modeSelector (from ManagedAdminController)

unknown $ManagedAdminController->_modeSelector ( mixed $current_mode );

Returns HTML for a ui component to update the current main view mode

protected _paginationBar (from ManagedAdminController)

HTML $ManagedAdminController->_paginationBar ( The $current_page , The $total_row_count );

Builds the HTML for showing the navigation through pages in the admin.
This method is FINAL to help keep the user interface consistent.

protected _preSave (from ManagedAdminController)

void $ManagedAdminController->_preSave ( mixed $id , mixed &$data );

This function does not have a description

public _run (from BaseController)

void $BaseController->_run ( mixed $method , mixed $args );

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

If you please, you may wrap this method to create before/after hooks.

public ajaxLookup (from ManagedAdminController)

void $ManagedAdminController->ajaxLookup ( );

Return list of records for given search term
Used for Fb::autocomplete

public ajaxLookupList (from ManagedAdminController)

void $ManagedAdminController->ajaxLookupList ( );

Return list of records for given search term
Used for Fb::autocompleteList

protected applyRefineFilter (from ManagedAdminController)

array $ManagedAdminController->applyRefineFilter ( [ array $source_data ] );

Applies filters defined in the query string using a LIKE contains
Only fields which exist in the RefineBar will be filtered

protected autoSetEmptyParam (from Controller)

null $Controller->autoSetEmptyParam ( array &$conf );

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

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

protected deleteRecord (from Controller)

int $Controller->deleteRecord ( string $table , int $record_id [, int $parent_log_id ] );

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 generateFormView (from Controller)

array $Controller->generateFormView ( mixed $file_name );

Generates a form view from a JSON config file

protected getControllerList

array $PerRecordPermissionAdminController->getControllerList ( );

Gets the list of controllers which can have per-category permissions set

public getControllerName (from ManagedAdminController)

unknown $ManagedAdminController->getControllerName ( );

Returns the defined controller name.

public getCssClassName (from BaseController)

string $BaseController->getCssClassName ( );

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

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

public getDuplicateEnabled (from ManagedAdminController)

unknown $ManagedAdminController->getDuplicateEnabled ( );

Returns the duplication enabling flag

public getFriendlyName (from ManagedAdminController)

unknown $ManagedAdminController->getFriendlyName ( );

Returns the defined controller friendly name

public getModulePath (from BaseController)

string $BaseController->getModulePath ( );

Gets the relative path to the module the controller lives in, or sprout itself

public getNavigationName (from ManagedAdminController)

unknown $ManagedAdminController->getNavigationName ( );

Returns the defined controller navigation name

public getTableName (from ManagedAdminController)

unknown $ManagedAdminController->getTableName ( );

Returns the defined table name

public getTopnavName (from ManagedAdminController)

unknown $ManagedAdminController->getTopnavName ( );

Gets the name of the controller to use for the top nav

protected initRefineBar (from ManagedAdminController)

void $ManagedAdminController->initRefineBar ( );

Initialises the refine bar if it isn't already set, with a search widget for the 'name' field if it exists
Most controllers which need a custom refine bar should call this before adding their own search widgets

protected initTableName (from ManagedAdminController)

void $ManagedAdminController->initTableName ( );

Initialises the table name if it isn't already set, using the plural of the shorthand controller name

protected injectVisiblityFields (from ManagedAdminController)

void $ManagedAdminController->injectVisiblityFields ( array &$conf );

Inject the visiblity fields into a loaded json configuration, so they actually save

public isPerSubsite (from ManagedAdminController)

unknown $ManagedAdminController->isPerSubsite ( );

If true, then a UI for editing the "subsite_id" for a record should be shown

protected jsonExtraValidate (from Controller)

void $Controller->jsonExtraValidate ( int $id , Validator $validator );

Do any additional validation prior to saving the record

protected loadEditJson (from Controller)

array $Controller->loadEditJson ( );

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

protected loadFormJson (from Controller)

array $Controller->loadFormJson ( string $file_name );

Loads a config file for a JsonForm associated with this controller

protected loadRecord (from Controller)

bool|array $Controller->loadRecord ( string $table , int $record_id );

Fetches the pre-update record from the database.
Used by the action log system, and disabled if the action log system has been turned off

protected logAction (from Controller)

int $Controller->logAction ( string $table , int $record_id , int $type , array $data [, int $parent_log_id ] );

Stores a history item in the database, recording an add (i.e. insert), edit, or delete.
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

protected logAdd (from Controller)

int $Controller->logAdd ( string $table , int $record_id );

Logs an add action. This is a wrapper for Controller::logAction

protected logAddCategory (from Controller)

int $Controller->logAddCategory ( string $table , int $record_id , int $cat_id );

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

protected logDelete (from Controller)

int $Controller->logDelete ( string $table , int $record_id , array $data [, int $parent_log_id ] );

Logs a delete action. This is a wrapper for Controller::logAction

protected logDeleteCategory (from Controller)

int $Controller->logDeleteCategory ( string $table , int $record_id , int $cat_id );

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

protected logEdit (from Controller)

int $Controller->logEdit ( string $table , int $record_id , array $data );

Logs an edit action. This is a wrapper for Controller::logAction

public postJsonMultiTag (from ManagedAdminController)

void $ManagedAdminController->postJsonMultiTag ( );

Multi-tag some items. Uses AJAX. Returns JSON.

public postMultiDelete (from ManagedAdminController)

void $ManagedAdminController->postMultiDelete ( );

Delete multiple records

protected replaceSet (from Controller)

void $Controller->replaceSet ( string $table , array $new_records , array $conditions );

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

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

public resetSave

void $PerRecordPermissionAdminController->resetSave ( );

This function does not have a description

public save

unknown $PerRecordPermissionAdminController->save ( );

Save which controllers should have per-record permissions enabled

protected saveJsonData (from Controller)

bool $Controller->saveJsonData ( array $conf , int &$item_id [, string $mode ] );

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