Fix on heuristic to get Summit Pages

Change-Id: Ideca7236721dc4b3ad2926cc9fdac4e29fbe7d2a
This commit is contained in:
Sebastian Marcet 2018-10-05 16:30:19 -03:00
parent 79353a59a4
commit b75c54bb2a
4 changed files with 35 additions and 28 deletions

View File

@ -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)) {

View File

@ -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()

View File

@ -1248,21 +1248,11 @@ class Summit extends SilverstripeBaseModel
*/
public function getMainPage()
{
try {
$sql = <<<SQL
SELECT URLSegment FROM SiteTree
INNER JOIN
SummitPage ON SummitPage.ID = SiteTree.ID
WHERE SummitID = :summit_id AND ClassName IN ('SummitStaticAboutBostonPage', 'SummitStaticAboutPage','SummitNewStaticAboutPage','SummitHighlightsPage', 'SummitAboutPage');
SQL;
$stmt = $this->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 = <<<SQL
SELECT URLSegment FROM SiteTree
SELECT URLSegment,ParentID FROM SiteTree
INNER JOIN
SummitPage ON SummitPage.ID = SiteTree.ID
WHERE SummitID = :summit_id AND ClassName = 'SummitAppSchedPage';
SQL;
$stmt = $this->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 = <<<SQL
SELECT URLSegment,ParentID FROM SiteTree
WHERE ID = :parent_id;
SQL;
$stmt = $this->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));
}
/**

View File

@ -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