getList($number); $found = $list->column(); return $found; } function findPageCount($number) { $list = $this->getList($number); return $list->count(); } /** * @return DataList */ function getList($number) { $list = DataList::create('SiteTree'); $where = array(); $fields = $this->getShortCodeFields('SiteTree'); foreach($fields as $ancClass => $ancFields) { foreach($ancFields as $ancFieldName => $ancFieldSpec) { if ($ancClass != "SiteTree") $list = $list->leftJoin($ancClass,'"'.$ancClass.'"."ID" = "SiteTree"."ID"'); $where[] = "\"$ancClass\".\"$ancFieldName\" LIKE '%[dms_document_link,id=$number]%'"; //."%s" LIKE ""', } } $list->where(implode(' OR ',$where)); return $list; } /** * Returns a filtered list of fields which could contain shortcodes. * * @param String * @return Array Map of class names to an array of field names on these classes. */ function getShortcodeFields($class) { $fields = array(); $ancestry = array_values(ClassInfo::dataClassesFor($class)); foreach($ancestry as $ancestor) { if(ClassInfo::classImplements($ancestor, 'TestOnly')) continue; $ancFields = DataObject::custom_database_fields($ancestor); if($ancFields) foreach($ancFields as $ancFieldName => $ancFieldSpec) { if(preg_match($this->fieldSpecRegex, $ancFieldSpec)) { if(!@$fields[$ancestor]) $fields[$ancestor] = array(); $fields[$ancestor][$ancFieldName] = $ancFieldSpec; } } } return $fields; } }