Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Propus-16.5.0-plat-10936-extending interactivity get #9503

Merged
merged 3 commits into from
Jun 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions plugins/interactivity/lib/api/KalturaBaseInteractivity.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* @package plugins.interactivity
* @subpackage api.objects
*/

abstract class KalturaBaseInteractivity extends KalturaObject
{
/**
Expand Down
2 changes: 1 addition & 1 deletion plugins/interactivity/lib/api/KalturaInteractivity.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public function toObject($object_to_fill = null, $propsToSkip = array())
{
if (!$object_to_fill)
{
$object_to_fill = new kInteractivity();
$object_to_fill = new kInteractivity();
}

return parent::toObject($object_to_fill, $propsToSkip);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

/**
* @package plugins.interactivity
* @subpackage api.objects
*/

abstract class KalturaInteractivityDataFieldsFilter extends KalturaObject
{
/**
* A string containing CSV list of fields to include
* @var string
*/
public $fields;

protected static $map_between_objects = array
(
'fields',
);

protected function getMapBetweenObjects()
{
return array_merge(parent::getMapBetweenObjects(), self::$map_between_objects);
}
}
46 changes: 46 additions & 0 deletions plugins/interactivity/lib/api/KalturaInteractivityDataFilter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?php

/**
* @package plugins.interactivity
* @subpackage api.objects
*/

class KalturaInteractivityDataFilter extends KalturaObject
{
/**
* @var KalturaInteractivityRootFilter
*/
public $rootFilter;

/**
* @var KalturaInteractivityNodeFilter
*/
public $nodeFilter;

/**
* @var KalturaInteractivityInteractionFilter
*/
public $interactionFilter;

protected static $map_between_objects = array
(
'rootFilter',
'nodeFilter',
'interactionFilter',
);

public function toObject($object_to_fill = null, $props_to_skip = array())
{
if (!$object_to_fill)
{
$object_to_fill = new kInteractivityDataFilter();
}

return parent::toObject($object_to_fill, $props_to_skip);
}

protected function getMapBetweenObjects()
{
return array_merge(parent::getMapBetweenObjects(), self::$map_between_objects);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

/**
* @package plugins.interactivity
* @subpackage api.objects
*/

class KalturaInteractivityInteractionFilter extends KalturaInteractivityDataFieldsFilter
{
public function toObject($object_to_fill = null, $props_to_skip = array())
{
if (!$object_to_fill)
{
$object_to_fill = new kInteractivityInteractionFilter();
}

return parent::toObject($object_to_fill, $props_to_skip);
}
}
19 changes: 19 additions & 0 deletions plugins/interactivity/lib/api/KalturaInteractivityNodeFilter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

/**
* @package plugins.interactivity
* @subpackage api.objects
*/

class KalturaInteractivityNodeFilter extends KalturaInteractivityDataFieldsFilter
{
public function toObject($object_to_fill = null, $props_to_skip = array())
{
if (!$object_to_fill)
{
$object_to_fill = new kInteractivityNodeFilter();
}

return parent::toObject($object_to_fill, $props_to_skip);
}
}
19 changes: 19 additions & 0 deletions plugins/interactivity/lib/api/KalturaInteractivityRootFilter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

/**
* @package plugins.interactivity
* @subpackage api.objects
*/

class KalturaInteractivityRootFilter extends KalturaInteractivityDataFieldsFilter
{
public function toObject($object_to_fill = null, $props_to_skip = array())
{
if (!$object_to_fill)
{
$object_to_fill = new kInteractivityRootFilter();
}

return parent::toObject($object_to_fill, $props_to_skip);
}
}
2 changes: 1 addition & 1 deletion plugins/interactivity/lib/model/kBaseInteractivity.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
/**
* @package plugins.interactivity
* @subpackage model.items
* @subpackage model
*/

abstract class kBaseInteractivity extends BaseObject
Expand Down
2 changes: 1 addition & 1 deletion plugins/interactivity/lib/model/kInteractivity.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
/**
* @package plugins.interactivity
* @subpackage model.items
* @subpackage model
*/

class kInteractivity extends kBaseInteractivity
Expand Down
39 changes: 39 additions & 0 deletions plugins/interactivity/lib/model/kInteractivityDataFieldsFilter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php
/**
* @package plugins.interactivity
* @subpackage model
*/

abstract class kInteractivityDataFieldsFilter extends BaseObject
{
const FIELDS_DELIMITER = ',';

/**
* @var array
*/
protected $fields;

/**
* @return string
*/
public function getFields()
{
return implode ( self::FIELDS_DELIMITER, $this->fields);
}

/**
* @param string $fields
*/
public function setFields($fields)
{
$this->fields = array_map('trim', explode(self::FIELDS_DELIMITER, $fields));
}

/**
* @return array
*/
public function getFieldsAsArray()
{
return $this->fields;
}
}
19 changes: 19 additions & 0 deletions plugins/interactivity/lib/model/kInteractivityDataFieldsName.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php
/**
* @package plugins.interactivity
* @subpackage model
*/

class kInteractivityDataFieldsName
{
const NODES = 'nodes';
const NODE_ID = 'id';
const INTERACTION_ID = 'id';
const NAME = 'name';
const ENTRY_ID = 'entryId';
const INTERACTIONS = 'interactions';
const TAGS = 'tags';
const TYPE = 'type';
const START_TIME = 'startTime';
const END_TIME = 'endTime';
}
161 changes: 161 additions & 0 deletions plugins/interactivity/lib/model/kInteractivityDataFilter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
<?php
/**
* @package plugins.interactivity
* @subpackage model
*/

class kInteractivityDataFilter extends BaseObject
{
/**
* @var kInteractivityRootFilter
*/
protected $rootFilter;

/**
* @var kInteractivityInteractionFilter
*/
protected $interactionFilter;

/**
* @var kInteractivityNodeFilter
*/
protected $nodeFilter;

/**
* @return kInteractivityRootFilter
*/
public function getRootFilter()
{
return $this->rootFilter;
}

/**
* @param kInteractivityRootFilter $rootFilter
*/
public function setRootFilter($rootFilter)
{
$this->rootFilter = $rootFilter;
}

/**
* @return kInteractivityInteractionFilter
*/
public function getInteractionFilter()
{
return $this->interactionFilter;
}

/**
* @param kInteractivityInteractionFilter $interactionFilter
*/
public function setInteractionFilter($interactionFilter)
{
$this->interactionFilter = $interactionFilter;
}

/**
* @return kInteractivityNodeFilter
*/
public function getNodeFilter()
{
return $this->nodeFilter;
}

/**
* @param kInteractivityNodeFilter $nodeFilter
*/
public function setNodeFilter($nodeFilter)
{
$this->nodeFilter = $nodeFilter;
}

/**
* @param string $data
* @return string
*/
public function filterData($data)
{
$dataJson = json_decode($data, true);
if($this->rootFilter)
{
$dataJson = $this->filterObject($dataJson, $this->rootFilter->getFieldsAsArray());
}

if(isset($dataJson[kInteractivityDataFieldsName::NODES]))
{
$dataJson[kInteractivityDataFieldsName::NODES] = $this->filterNodes($dataJson[kInteractivityDataFieldsName::NODES]);
}

return json_encode($dataJson);
}

/**
* @param array $nodes
* @return array
*/
protected function filterNodes($nodes)
{
$result = array();
foreach ($nodes as $node)
{
if($this->nodeFilter)
{
$filteredNode = $this->filterObject($node, $this->nodeFilter->getFieldsAsArray());
}
else
{
$filteredNode = $node;
}

if(isset($filteredNode[kInteractivityDataFieldsName::INTERACTIONS]))
{
$filteredNode[kInteractivityDataFieldsName::INTERACTIONS] = $this->filterInteractions($filteredNode[kInteractivityDataFieldsName::INTERACTIONS]);
}

$result[] = $filteredNode;
}

return $result;
}

/**
* @param array $interactions
* @return array
*/
protected function filterInteractions($interactions)
{
$result = array();
if($this->interactionFilter)
{
foreach ($interactions as $interaction)
{
$result[] = $this->filterObject($interaction, $this->interactionFilter->getFieldsAsArray());
}
}
else
{
$result = $interactions;
}

return $result;
}

/**
* @param array $object
* @param array $fieldsToKeep
* @return array
*/
protected function filterObject($object, $fieldsToKeep)
{
$result = array();
foreach($object as $key => $value)
{
if(in_array($key, $fieldsToKeep))
{
$result[$key] = $value;
}
}

return $result;
}
}
Loading