FIX Escape class and field name when looking up shortcode fields for SiteTree

This commit is contained in:
Robbie Averill 2017-12-07 12:52:54 +13:00
parent 82a8a4b142
commit dbad64939a

View File

@ -39,18 +39,22 @@ class ShortCodeRelationFinder
} }
/** /**
* @param int $number
* @return DataList * @return DataList
*/ */
public function getList($number) public function getList($number)
{ {
$number = (int) $number;
$list = DataList::create('SiteTree'); $list = DataList::create('SiteTree');
$where = array(); $where = array();
$fields = $this->getShortCodeFields('SiteTree'); $fields = $this->getShortCodeFields('SiteTree');
$shortcode = DMS::inst()->getShortcodeHandlerKey(); $shortcode = DMS::inst()->getShortcodeHandlerKey();
foreach ($fields as $ancClass => $ancFields) { foreach ($fields as $ancClass => $ancFields) {
$ancClass = Convert::raw2sql($ancClass);
foreach ($ancFields as $ancFieldName => $ancFieldSpec) { foreach ($ancFields as $ancFieldName => $ancFieldSpec) {
$ancFieldName = Convert::raw2sql($ancFieldName);
if ($ancClass != "SiteTree") { if ($ancClass != "SiteTree") {
$list = $list->leftJoin($ancClass, '"'.$ancClass.'"."ID" = "SiteTree"."ID"'); $list = $list->leftJoin($ancClass, '"' . $ancClass . '"."ID" = "SiteTree"."ID"');
} }
$where[] = "\"$ancClass\".\"$ancFieldName\" LIKE '%[{$shortcode},id=$number]%'"; //."%s" LIKE ""', $where[] = "\"$ancClass\".\"$ancFieldName\" LIKE '%[{$shortcode},id=$number]%'"; //."%s" LIKE ""',
} }