PHP Class Devise\Pages\Interpreter\DvsPageData

Show file Open project: devisephp/cms

Protected Properties

Property Type Description
$CollectionsRepository CollectionRepository The collections repository gets a list of collections for us
$PagesRepository Devise\Pages\PagesRepository The pages repository fetches additional information we need for our page
$TagManager TagManager Tag manager that creates and finds fields for our tags
$cids array Keeps track of some cids for variable tags
$csrfToken string Csrf token
$database array Keeps track of a database that we can build in javascript where all the cool data is stored
$initialized boolean We don't need to initialize our dvspagedata object more than once
$languageId integer Language id
$pageId integer Page id
$pageVersionId integer Page version id
$tags array Keep track of all the page tags

Public Methods

Method Description
__construct ( TagManager $TagManager, CollectionsRepository $CollectionsRepository, PagesRepository $PagesRepository ) Create a new page data object
cid ( string $id, string $bindingType, string $collection, string $key, string $type, string $humanName, $collectionName, string $group, string $category, string $alternateTarget, mixed $defaults ) : string Returns the cid for this $id and also sets default values for this cid. At this point, the $default values should be set correctly, if not then we need to just throw the exception because something is not right. We also allow for variables in this place, so we need to update all the values for this $id. So if we have a human name with like $someVar in it, then this is the place where we actually update it.
database ( [type] $key, [type] $value ) : [type] Set the values up in the database
initialize ( integer $pageId, integer $pageVersionId, integer $languageId, $csrfToken ) : void The dvs page data cannot create fields and collection objects without knowing what page we are on. This is injected in on every view that uses dvsPageData.
register ( string $id, string $bindingType, string $collection, string $key, string $type, string $humanName, $collectionName, string $group, string $category, string $alternateTarget ) : void Register a binding, collection or model data-devise tag using this method.
setDefaults ( string $id, mixed $defaults ) Try to set defaults for an id
toJSON ( ) : string Creates a json object that we use for editing a devise page

Protected Methods

Method Description
addCollectionNodesIntoGroupsOrNodes ( array $collections, array $groups, array $nodes ) Adds collections into the existing nodes or groups array
addGroupNodes ( array $groups, array $nodes ) Adds the groups into the nodes. Groups are organized into categories. Some groups only have 1 category but it is possible to have many categories inside of a single group
addNodesIntoGroupsOrNodes ( array $nodes, array $groups, $allNodes ) : array Adds nodes into the existing nodes or groups array
appendToArray ( array $container, string $key, mixed $item ) : array Helper method so that I don't have to put this logic inside of another foreach loop
assertNoDuplicateTags ( string $id ) : void Makes sure we don't get duplicate tags registered
assertTagExists ( string $id ) : void Assert that the id exists.
buildCollectionNode ( string $collectionName, array $collectionFields ) : array Collection nodes are grouped together
buildGroupNode ( string $cid, $name, $categories ) : array Group nodes are just a bunch of node items
buildNode ( array $node ) : array Build a node
buildNodes ( $collections, $fields, $models, $attributes, $creators ) : array Build the node structure for this json. This takes into account groups too. Nodes that are grouped together we will take that into account too.
extractModelFromKey ( $chain ) : string Analyze this key variable and determine if it is a attribute or model type
filterTags ( string $bindingType ) : array Filter the tags by the binding type
jsonEncode ( mixed $object ) : string Encodes the object passed in as a json string and also escapes all ' characters
resolveTag ( string $id, string $bindingType, string $collection, string $key, string $type, string $humanName, $collectionName, string $group, string $category, string $alternateTarget, mixed $defaults ) : string Resolve the tag
resolveVariableTag ( string $id, string $bindingType, string $collection, string $key, string $type, string $humanName, $collectionName, string $group, string $category, string $alternateTarget, mixed $defaults ) : string Resolve the variable tag

Method Details

__construct() public method

Create a new page data object
public __construct ( TagManager $TagManager, CollectionsRepository $CollectionsRepository, PagesRepository $PagesRepository )
$TagManager TagManager
$CollectionsRepository Devise\Pages\Collections\CollectionsRepository
$PagesRepository Devise\Pages\PagesRepository

addCollectionNodesIntoGroupsOrNodes() protected method

Adds collections into the existing nodes or groups array
protected addCollectionNodesIntoGroupsOrNodes ( array $collections, array $groups, array $nodes )
$collections array
$groups array
$nodes array

addGroupNodes() protected method

Adds the groups into the nodes. Groups are organized into categories. Some groups only have 1 category but it is possible to have many categories inside of a single group
protected addGroupNodes ( array $groups, array $nodes )
$groups array
$nodes array

addNodesIntoGroupsOrNodes() protected method

Adds nodes into the existing nodes or groups array
protected addNodesIntoGroupsOrNodes ( array $nodes, array $groups, $allNodes ) : array
$nodes array
$groups array
return array

appendToArray() protected method

Helper method so that I don't have to put this logic inside of another foreach loop
protected appendToArray ( array $container, string $key, mixed $item ) : array
$container array
$key string
$item mixed
return array

assertNoDuplicateTags() protected method

Makes sure we don't get duplicate tags registered
protected assertNoDuplicateTags ( string $id ) : void
$id string
return void

assertTagExists() protected method

.. this means we should have registered the id already
protected assertTagExists ( string $id ) : void
$id string
return void

buildCollectionNode() protected method

Collection nodes are grouped together
protected buildCollectionNode ( string $collectionName, array $collectionFields ) : array
$collectionName string
$collectionFields array
return array

buildGroupNode() protected method

Group nodes are just a bunch of node items
protected buildGroupNode ( string $cid, $name, $categories ) : array
$cid string
return array

buildNode() protected method

Build a node
protected buildNode ( array $node ) : array
$node array
return array

buildNodes() protected method

.. Loop through all collections, fields, models, attributes and creators and create the node structure for them.
protected buildNodes ( $collections, $fields, $models, $attributes, $creators ) : array
return array

cid() public method

.. if this field's binding type is a creator, field, or colelction then we only use 1 cid if this type is a model or attribute then we need to register a new cid for this thing... because we are dealing with new instances everytime we get called (think about iterating over a collection of models inside of a foreach loop), each one has their own key (model's id)
public cid ( string $id, string $bindingType, string $collection, string $key, string $type, string $humanName, $collectionName, string $group, string $category, string $alternateTarget, mixed $defaults ) : string
$id string
$bindingType string
$collection string
$key string
$type string
$humanName string
$group string
$category string
$alternateTarget string
$defaults mixed
return string

database() public method

Set the values up in the database
public database ( [type] $key, [type] $value ) : [type]
$key [type]
$value [type]
return [type]

extractModelFromKey() protected method

Analyze this key variable and determine if it is a attribute or model type
protected extractModelFromKey ( $chain ) : string
return string

filterTags() protected method

Filter the tags by the binding type
protected filterTags ( string $bindingType ) : array
$bindingType string
return array

initialize() public method

..
public initialize ( integer $pageId, integer $pageVersionId, integer $languageId, $csrfToken ) : void
$pageId integer
$pageVersionId integer
$languageId integer
return void

jsonEncode() protected method

Encodes the object passed in as a json string and also escapes all ' characters
protected jsonEncode ( mixed $object ) : string
$object mixed
return string

register() public method

Register a binding, collection or model data-devise tag using this method.
public register ( string $id, string $bindingType, string $collection, string $key, string $type, string $humanName, $collectionName, string $group, string $category, string $alternateTarget ) : void
$id string
$bindingType string
$collection string
$key string
$type string
$humanName string
$group string
$category string
$alternateTarget string
return void

resolveTag() protected method

Resolve the tag
protected resolveTag ( string $id, string $bindingType, string $collection, string $key, string $type, string $humanName, $collectionName, string $group, string $category, string $alternateTarget, mixed $defaults ) : string
$id string
$bindingType string
$collection string
$key string
$type string
$humanName string
$group string
$category string
$alternateTarget string
$defaults mixed
return string

resolveVariableTag() protected method

Resolve the variable tag
protected resolveVariableTag ( string $id, string $bindingType, string $collection, string $key, string $type, string $humanName, $collectionName, string $group, string $category, string $alternateTarget, mixed $defaults ) : string
$id string
$bindingType string
$collection string
$key string
$type string
$humanName string
$group string
$category string
$alternateTarget string
$defaults mixed
return string

setDefaults() public method

Try to set defaults for an id
public setDefaults ( string $id, mixed $defaults )
$id string
$defaults mixed

toJSON() public method

Creates a json object that we use for editing a devise page
public toJSON ( ) : string
return string

Property Details

$CollectionsRepository protected property

The collections repository gets a list of collections for us
protected CollectionRepository $CollectionsRepository
return CollectionRepository

$PagesRepository protected property

The pages repository fetches additional information we need for our page
protected PagesRepository,Devise\Pages $PagesRepository
return Devise\Pages\PagesRepository

$TagManager protected property

Tag manager that creates and finds fields for our tags
protected TagManager,Devise\Pages\Interpreter $TagManager
return TagManager

$cids protected property

Keeps track of some cids for variable tags
protected array $cids
return array

$csrfToken protected property

Csrf token
protected string $csrfToken
return string

$database protected property

Keeps track of a database that we can build in javascript where all the cool data is stored
protected array $database
return array

$initialized protected property

We don't need to initialize our dvspagedata object more than once
protected bool $initialized
return boolean

$languageId protected property

Language id
protected int $languageId
return integer

$pageId protected property

Page id
protected int $pageId
return integer

$pageVersionId protected property

Page version id
protected int $pageVersionId
return integer

$tags protected property

Keep track of all the page tags
protected array $tags
return array