Base class for getting, creating, updating and deleting Kayako objects.

All objects interacting with Kayako REST API should extend this class and define: * Kayako controller * XML element name holding object's data in REST response

see \global\kyObjectBase::$controller
see \global\kyObjectBase::$object_xml_name
author Tomasz Sawicki (https://github.com/Furgas)
link http://wiki.kayako.com/display/DEV/REST+API
package Object\Base

 Methods

Default constructor.

__construct(array $data) 

Parameters

$data

array

Object data from XML response converted into array.

Returns API field value.

__get(string $api_field_name) : mixed

Returns API field value based on API field name used by Kayako.

link http://wiki.kayako.com/display/DEV/REST+API+Reference

Parameters

$api_field_name

string

API field name.

Returns

mixed

Sets API field value.

__set(string $api_field_name, mixed $value) : mixed

Sets API field value based on API field name used by Kayako.

link http://wiki.kayako.com/display/DEV/REST+API+Reference

Parameters

$api_field_name

string

API field name.

$value

mixed

API field value.

Returns

mixed

Returns object description with it's type and identifier.

__toString() : string

Calls toString() method to get the object description.

Returns

string

Should build the array of object data for creating or updating the object.

buildData(bool $create) : array

Values must be set in format accepted by REST API.

Parameters

$create

bool

Indicates if the result will be used to create (true) or update (false) an object.

Returns

array

Checks wheter this object has all required fields set.

checkRequiredAPIFields(bool $create, bool $throw_exception) : string[] | bool

Parameters

$create

bool

True when object will be created. False when object will be updated.

$throw_exception

bool

True to throw an exception on missing fields. False to return list of missing fields or true when there are none.

Exceptions

\kyException When there are missing field values and $throw_exception is true.

Returns

string[]boolList of missing API fields or true when there are none.

Creates an object on the server and refreshes its local data.

create() : \kyObjectBase

Creates new object.

createNew() 

Compatible with method chaining.

Deletes the object on the server.

delete() 

Fetches the object from server.

get(int | array $id) : \kyObjectBase

Parameters

$id

intarray

Object identifier or list of identifiers (ex. ticket identifier and ticket post identifier when fetching TicketPost).

Returns

Returns array of API fields.

getAPIFields() : string[]

Format of returned array:

array(
    '' => Field description. (getter: , setter: ),
    ...repeat...
)

Returns

string[]

Fetches objects from server.

getAll(array $search_parameters) : \kyResultSet

Parameters

$search_parameters

array

Optional. Additional search parameters.

Returns

Returns list of available filter methods for use in result sets with objects of this type.

getAvailableFilterMethods(bool $filter_names_only) : array

Optionaly you can return get method names used to filter objects.

Parameters

$filter_names_only

bool

True (default) to return array('filterByXXX', 'filterByYYY', ...). False to return array('filterByXXX' => 'getXXX', 'filterByYYY' => 'YYY', ...).

Returns

array

Returns list of available order methods for use in result sets with objects of this type.

getAvailableOrderMethods(bool $order_names_only) : array

Optionaly you can return get method names used to order objects.

Parameters

$order_names_only

bool

True (default) to return array('orderByXXX', 'orderByYYY', ...). False to return array('orderByXXX' => 'getXXX', 'orderByYYY' => 'YYY', ...).

Returns

array

Returns object controller.

getController() : string

Returns

string

Should return object identifier or complete list of identifiers as needed by API to identify the object (ex.

getId(bool $complete) : int | array

ticket identifier and ticket post identifier in case of TicketPost).

Parameters

$complete

bool

True to return complete list of identifiers as needed by API to identify the object.

Returns

intarray

Returns list of required API fields for objects of this class.

getRequiredAPIFields(bool $create) : string[]

Parameters

$create

bool

True when object will be created. False when object will be updated.

Returns

string[]

Returns whether the object is new and not yet saved on the server.

isNew() : bool

Returns

bool

Returns whether this object is read only.

isReadOnly() : bool

Returns

bool

Refreshes the object data from server.

refresh() : \kyObjectBase

Saves (creates or updates) the object to the server.

save() : \kyObjectBase

Returns

Sets whether this object is read only.

setReadOnly(bool $read_only) : bool

Parameters

$read_only

bool

Read only flag.

Returns

bool

Should return short (one line) description of the object (it's title, name, etc.).

toString() : string

Returns

string

Updates the object on the server and refreshes its local data.

update() : \kyObjectBase

Returns REST client.

getRESTClient() : \kyRESTClientInterface

Should use passed data to fill object properties.

parseData(array $data) 

Parameters

$data

array

Object data from XML response.

Builds API fields list.

initAPIFieldsAccessors() 

Scans protected and private properties of called class, searches for

apiField [name=field name] [accessor=setter/getter name] [getter=getter name] [setter=setter name] [required_create=true if field if required when creating object] [required_update=true if field if required when udpating object] [required=true if field if required when creating or updating object] and builds API field list with property name, description, setter and getter method names, and required flags.
see \global\kyObjectBase::$_api_fields

 Properties

 

Cache for available filter methods.

$_filter_methods : string[]

Format: array( '' => array( '' => '', ...repeat for every filtering enabled method... ), ...repeat for every object class... )

 

Cache for available order methods.

$_order_methods : string[]

Format: array( '' => array( '' => '', ...repeat for every ordering enabled method... ), ...repeat for every object class... )

 

Default Kayako controller used to operate on this objects.

$controller : string

Override in descending classes.

 

Indicates the name of object element in XML response.

$object_xml_name : string

Override in descending classes.

 

Controls if the object can be created/updated/deleted.

$read_only : bool

Override in descending classes.

 

Cache for API fields.

$_api_fields : array

Format: array( '' => array( '' => array( 'property' => '', 'description' => '', 'getter' => '', 'setter' => '', 'required_create' => , 'required_update' => ), ...repeat for every class api field... ), ...repeat for every object class... )

 Constants

 

Data key for storing files to send as multipart/form-data.

FILES_DATA_NAME : string