'first_name:json_string', 'LastName' => 'last_name:json_string', 'Title' => 'title:json_string', 'Bio' => 'bio:json_string', 'IRCHandle' => 'irc:json_string', 'TwitterName' => 'twitter:json_string', ); protected static $allowed_relations = array ( 'member', ); /** * @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() ) { if(!count($relations)) $relations = $this->getAllowedRelations(); $values = parent::serialize($expand, $fields, $relations, $params); $speaker = $this->object; $summit_id = isset($params['summit_id'])? intval($params['summit_id']):null; $published = isset($params['published'])? intval($params['published']):true; $values['presentations'] = $speaker->getPresentationIds($summit_id, $published); $values['pic'] = Config::get("server.assets_base_url", 'https://www.openstack.org/') . 'profile_images/speakers/' . $speaker->getId(); if (in_array('member', $relations) && $speaker->hasMember()) { $member = $speaker->getMember(); $values['gender'] = $member->getGender(); $values['member_id'] = intval($member->getId()); } if(empty($values['first_name']) || empty($values['last_name'])){ $first_name = ''; $last_name = ''; if ($speaker->hasMember()) { $member = $speaker->getMember(); $first_name = $member->getFirstName(); $last_name = $member->getLastName(); } $values['first_name'] = $first_name; $values['last_name'] = $last_name; } if (!empty($expand)) { foreach (explode(',', $expand) as $relation) { switch (trim($relation)) { case 'presentations': { $presentations = array(); foreach ($speaker->getPresentations() as $p) { $presentations[] = SerializerRegistry::getInstance()->getSerializer($p)->serialize(); } $values['presentations'] = $presentations; } } } } return $values; } }