'name:json_string', 'Description' => 'description:json_string', 'OwnerId' => 'owner_id:json_int', 'CreatedUTC' => 'created_at:datetime_epoch', 'LastEditedUTC' => 'updated_at:datetime_epoch', ); /** * @param null $expand * @param array $fields * @param array $relations * @param array $params * @return array */ public function serialize($expand = null, array $fields = array(), array $relations = array(), array $params = array() ) { $team = $this->object; if(!$team instanceof ChatTeam) return []; $values = parent::serialize($expand, $fields, $relations, $params); $members = []; $current_member = null; if(isset($params['current_member'])) $current_member = $params['current_member']; foreach($team->getMembers() as $member){ $members[] = SerializerRegistry::getInstance()->getSerializer($member)->serialize($expand); } $values['members'] = $members; if (!empty($expand)) { $expand_to = explode(',', $expand); foreach ($expand_to as $relation) { switch (trim($relation)) { case 'owner':{ if(isset($values['owner_id'])) { unset($values['owner_id']); $values['owner'] = SerializerRegistry::getInstance()->getSerializer($team->getOwner())->serialize($expand); } } break; } } } if(!is_null($current_member) && $team->isAdmin($current_member)){ // add pending invitations $invitations = []; foreach($team->getInvitations() as $invitation){ $invitations[] = SerializerRegistry::getInstance()->getSerializer($invitation)->serialize('inviter,invitee'); } $values['invitations'] = $invitations; } return $values; } }