mirror of
https://github.com/chylex/Nextcloud-News.git
synced 2025-04-30 16:34:08 +02:00
77 lines
1.6 KiB
PHP
77 lines
1.6 KiB
PHP
<?php
|
|
/**
|
|
* Nextcloud - News
|
|
*
|
|
* This file is licensed under the Affero General Public License version 3 or
|
|
* later. See the COPYING file.
|
|
*
|
|
* @author Bernhard Posselt <dev@bernhard-posselt.com>
|
|
* @copyright 2012-2014 Bernhard Posselt
|
|
*/
|
|
|
|
namespace OCA\News\Controller;
|
|
|
|
use \OCA\News\Db\IAPI;
|
|
|
|
/**
|
|
* Class EntityApiSerializer
|
|
*
|
|
* @package OCA\News\Controller
|
|
* @deprecated use ApiPayloadTrait
|
|
*/
|
|
class EntityApiSerializer
|
|
{
|
|
|
|
private $level;
|
|
|
|
public function __construct($level)
|
|
{
|
|
$this->level = $level;
|
|
}
|
|
|
|
|
|
/**
|
|
* Call toAPI() method on all entities. Works on
|
|
*
|
|
* @param mixed $data :
|
|
* * Entity
|
|
* * Entity[]
|
|
* * array('level' => Entity[])
|
|
* * Response
|
|
* @return array|mixed
|
|
*/
|
|
public function serialize($data)
|
|
{
|
|
|
|
if ($data instanceof IAPI) {
|
|
return [$this->level => [$data->toAPI()]];
|
|
}
|
|
|
|
if (is_array($data) && array_key_exists($this->level, $data)) {
|
|
$data[$this->level] = $this->convert($data[$this->level]);
|
|
} elseif (is_array($data)) {
|
|
$data = [$this->level => $this->convert($data)];
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
|
|
private function convert(array $entities)
|
|
{
|
|
$converted = [];
|
|
|
|
foreach ($entities as $entity) {
|
|
if ($entity instanceof IAPI) {
|
|
$converted[] = $entity->toAPI();
|
|
|
|
// break if it contains anything else than entities
|
|
} else {
|
|
return $entities;
|
|
}
|
|
}
|
|
|
|
return $converted;
|
|
}
|
|
}
|