Twinnable

class Nos\Orm_Behaviour_Twinnable
It adds the ability to twin together different items with different contexts.
It also adds the ability to link medias and WYSIWYGs to context twins.

Configuration

property Nos\Orm_Behaviour_Twinnable::$common_id_property

Required. Column used to store the common ID between twinned items. Data type must be int.

property Nos\Orm_Behaviour_Twinnable::$is_main_property

Required. Column used to store if the item is the main item among twin items. Data type must be boolean.

property Nos\Orm_Behaviour_Twinnable::$common_fields

Array of fields which are common to all context twins.

Methods

static Nos\Orm_Behaviour_Twinnable::hasCommonFields
Returns:True if model has common fields, medias or WYSIWYGs.
static Nos\Orm_Behaviour_Twinnable::isCommonField($name)
Parameters:
  • $name (string) – The field name to check.
Returns:

True if the field name is a common field or, media or WYSIWYG.

Nos\Orm_Behaviour_Twinnable::delete_all_context()

Removes all items twinned to the current item, including the current item itself.

Nos\Orm_Behaviour_Twinnable::is_main_context()
Returns:True if item is the main among twin items.
Nos\Orm_Behaviour_Twinnable::find_context($context)
Parameters:
  • $context (mixed) –

    Can be

    • Array of contexts ID.
    • all, to receive all contexts.
    • Context ID.
    • main, to receive main twin item.
Returns:

A twinned item, or an array of twinned items, null or array() if none.

Nos\Orm_Behaviour_Twinnable::find_main_context()
Returns:The main item among the twins.

Alias for ->find_context('main').

Nos\Orm_Behaviour_Twinnable::find_other_context($filter = array())
Parameters:
  • $filter (array) – Array of contexts ID. If set, return only twin items which the context belongs to array $filter.
Returns:

Array of twin items, current item exclude.

Nos\Orm_Behaviour_Twinnable::get_all_context()
Returns:Array of all twinned contexts, including the one of the current item.
Nos\Orm_Behaviour_Twinnable::get_other_context($filter = array())
Parameters:
  • $filter (array) – Array of contexts ID. If set, return only twinned contexts which belongs to array $filter.
Returns:

Array of all twinned contexts ID, excluding the one of the current item.

Nos\Orm_Behaviour_Twinnable::get_possible_context()
Returns:Array of possible contexts ID for current item.
static Nos\Orm_Behaviour_Twinnable::findMainOrContext($context, array $options = array())
Parameters:
  • $context (mixed) – A context ID or array of context IDs.
  • $options (array) – Array of others options like in find().
Returns:

Array of items, like find(), either in the given context, either the main.

Example

<?php
class Model_Page extends \Nos\Orm\Model
{
        protected static $_behaviours = array(
                'Nos\Orm_Behaviour_Twinnable' => array(
                        'events' => array('before_insert', 'after_insert', 'before_save', 'after_delete', 'change_parent'),
                        'context_property'      => 'page_context',
                        'common_id_property' => 'page_context_common_id',
                        'is_main_property' => 'page_context_is_main',
                        'common_fields'   => array(),
                ),
        );
}