diff --git a/app/ModelSerializers/Summit/SummitSerializer.php b/app/ModelSerializers/Summit/SummitSerializer.php index 0012cd9f..6f97772e 100644 --- a/app/ModelSerializers/Summit/SummitSerializer.php +++ b/app/ModelSerializers/Summit/SummitSerializer.php @@ -92,9 +92,9 @@ class SummitSerializer extends SilverStripeSerializer // pages info $main_page = $summit->getMainPage(); $schedule_page = $summit->getSchedulePage(); - $values['page_url'] = sprintf("%ssummit/%s", Config::get("server.assets_base_url", 'https://www.openstack.org/'), $main_page); - $values['schedule_page_url'] = sprintf("%ssummit/%s/%s", Config::get("server.assets_base_url", 'https://www.openstack.org/'), $main_page, $schedule_page); - $values['schedule_event_detail_url'] = sprintf("%ssummit/%s/%s/%s", Config::get("server.assets_base_url", 'https://www.openstack.org/'), $main_page, $schedule_page, 'events/:event_id/:event_title'); + $values['page_url'] = sprintf("%s%s", Config::get("server.assets_base_url", 'https://www.openstack.org/'), $main_page); + $values['schedule_page_url'] = sprintf("%s%s", Config::get("server.assets_base_url", 'https://www.openstack.org/'), $schedule_page); + $values['schedule_event_detail_url'] = sprintf("%s%s/%s", Config::get("server.assets_base_url", 'https://www.openstack.org/'), $schedule_page, 'events/:event_id/:event_title'); // tickets if(in_array('ticket_types', $relations)) { diff --git a/app/Models/Foundation/Summit/Events/SummitEvent.php b/app/Models/Foundation/Summit/Events/SummitEvent.php index fe26b49b..692b2f0a 100644 --- a/app/Models/Foundation/Summit/Events/SummitEvent.php +++ b/app/Models/Foundation/Summit/Events/SummitEvent.php @@ -347,12 +347,10 @@ class SummitEvent extends SilverstripeBaseModel if($this->hasRSVPTemplate()){ $summit = $this->getSummit(); - $main_page = $summit->getMainPage(); $schedule_page = $summit->getSchedulePage(); - - $url = sprintf("%ssummit/%s/%s/events/%s/%s/rsvp", + if(empty($schedule_page)) return ''; + $url = sprintf("%s%s/events/%s/%s/rsvp", Config::get("server.assets_base_url", 'https://www.openstack.org/'), - $main_page, $schedule_page, $this->getId(), $this->getSlug() diff --git a/app/Models/Foundation/Summit/Summit.php b/app/Models/Foundation/Summit/Summit.php index eb6b64dc..a6479d8f 100644 --- a/app/Models/Foundation/Summit/Summit.php +++ b/app/Models/Foundation/Summit/Summit.php @@ -1248,21 +1248,11 @@ class Summit extends SilverstripeBaseModel */ public function getMainPage() { - try { - $sql = <<prepareRawSQL($sql); - $stmt->execute(['summit_id' => $this->id]); - $res = $stmt->fetchAll(\PDO::FETCH_COLUMN); - return count($res) > 0 ? $res[0] : ''; - } catch (\Exception $ex) { - - } - return ''; + $path = $this->getSchedulePage(); + if(empty($path)) return ''; + $paths = explode("/", $path); + array_pop($paths); + return join("/", $paths); } /** @@ -1270,21 +1260,40 @@ SQL; */ public function getSchedulePage() { + $paths = []; try { $sql = <<prepareRawSQL($sql); $stmt->execute(['summit_id' => $this->id]); - $res = $stmt->fetchAll(\PDO::FETCH_COLUMN); - return count($res) > 0 ? $res[0] : ''; - } catch (\Exception $ex) { + $res = $stmt->fetchAll(); + if(count($res) == 0 ) return ''; + $segment = $res[0]['URLSegment']; + $parent_id = intval($res[0]['ParentID']); + $paths[] = $segment; + do{ + $sql = <<prepareRawSQL($sql); + $stmt->execute(['parent_id' => $parent_id]); + $res = $stmt->fetchAll(); + if(count($res) == 0 ) break; + $segment = $res[0]['URLSegment']; + $parent_id = intval($res[0]['ParentID']); + $paths[] = $segment; + } while($parent_id > 0); + + } catch (\Exception $ex) { + return ''; } - return ''; + return join("/", array_reverse($paths)); } /** diff --git a/tests/OAuth2SummitApiTest.php b/tests/OAuth2SummitApiTest.php index a1af4b1f..1cb90d83 100644 --- a/tests/OAuth2SummitApiTest.php +++ b/tests/OAuth2SummitApiTest.php @@ -74,7 +74,7 @@ final class OAuth2SummitApiTest extends ProtectedApiTest $this->assertResponseStatus(200); } - public function testGetSummit($summit_id = 24) + public function testGetSummit($summit_id = 25) { $params = array