0001: SET sql_mode = ? 0.0001s

0002: SHOW DATABASES LIKE 's2hubsql2' 0.0013s

0003: SHOW FULL TABLES WHERE Table_Type != 'VIEW' 0.0018s

0004: SHOW FULL FIELDS IN "Fluent_Domain" 0.0009s

0005: SHOW COLLATION LIKE 'utf8mb4_unicode_ci' 0.0002s

0006: SELECT DISTINCT "Fluent_Domain"."ClassName", "Fluent_Domain"."LastEdited", "Fluent_Domain"."Created", "Fluent_Domain"."Domain", "Fluent_Domain"."DefaultLocaleID", "Fluent_Domain"."ID", CASE WHEN "Fluent_Domain"."ClassName" IS NOT NULL THEN "Fluent_Domain"."ClassName" ELSE 'TractorCow\\Fluent\\Model\\Domain' END AS "RecordClassName" FROM "Fluent_Domain" 0.0002s

0007: SHOW FULL FIELDS IN "Fluent_Locale" 0.0009s

0008: SELECT DISTINCT "Fluent_Locale"."ClassName", "Fluent_Locale"."LastEdited", "Fluent_Locale"."Created", "Fluent_Locale"."Title", "Fluent_Locale"."Locale", "Fluent_Locale"."URLSegment", "Fluent_Locale"."IsGlobalDefault", "Fluent_Locale"."UseDefaultCode", "Fluent_Locale"."Sort", "Fluent_Locale"."DomainID", "Fluent_Locale"."ID", CASE WHEN "Fluent_Locale"."ClassName" IS NOT NULL THEN "Fluent_Locale"."ClassName" ELSE 'TractorCow\\Fluent\\Model\\Locale' END AS "RecordClassName" FROM "Fluent_Locale" ORDER BY "Fluent_Locale"."Sort" ASC, "Fluent_Locale"."Locale" ASC 0.0002s

0009: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."URLSegment" = ?) AND ("SiteTree_Live"."ParentID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0004s

0010: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ParentID" = ?) AND ("SiteTree_Live"."URLSegment" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0004s

0011: SELECT DISTINCT "SiteConfig"."ClassName", "SiteConfig"."LastEdited", "SiteConfig"."Created", "SiteConfig"."GoogleAnalyticsAccountID", "SiteConfig"."GTMAccountID", "SiteConfig"."CookieIsActive", "SiteConfig"."ConsentNoticeDescription", "SiteConfig"."ConsentNoticeLearnMore", "SiteConfig"."ConsentModalTitle", "SiteConfig"."ConsentModalDescription", "SiteConfig"."ConsentModalPrivacyPolicyName", "SiteConfig"."ConsentModalPrivacyPolicyText", "SiteConfig"."AcceptAll", "SiteConfig"."AcceptSelected", "SiteConfig"."Decline", "SiteConfig"."OGSiteName", "SiteConfig"."TwitterHandle", "SiteConfig"."CreatorTwitterHandle", "SiteConfig"."FacebookAppID", "SiteConfig"."UseTitleAsMetaTitle", "SiteConfig"."SchemaOrganisationName", "SiteConfig"."Title", "SiteConfig"."Tagline", "SiteConfig"."CanViewType", "SiteConfig"."CanEditType", "SiteConfig"."CanCreateTopLevelType", "SiteConfig"."CookieLinkPrivacyID", "SiteConfig"."SchemaOrganisationImageID", "SiteConfig"."DefaultSocialImageID", "SiteConfig"."ID", CASE WHEN "SiteConfig"."ClassName" IS NOT NULL THEN "SiteConfig"."ClassName" ELSE 'SilverStripe\\SiteConfig\\SiteConfig' END AS "RecordClassName" FROM "SiteConfig" LIMIT 1 0.0004s

0012: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0003s

0013: SELECT DISTINCT "PublishDate" IS NULL AS "_SortColumn0", "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "BlogPost_Live"."PublishDate", "BlogPost_Live"."AuthorNames", "BlogPost_Live"."Summary", "BlogPost_Live"."ElementalAreaID", "BlogPost_Live"."FeaturedImageID", CASE WHEN "SiteTree_Live"."ClassName" IN ('SilverStripe\\CMS\\Model\\SiteTree', 'Page', 'S2Hub\\Page\\Agencies', 'S2Hub\\Page\\BlockPage', 'SilverStripe\\ErrorPage\\ErrorPage', 'SilverStripe\\Blog\\Model\\Blog', 'SilverStripe\\Blog\\Model\\BlogPost', 'SilverStripe\\CMS\\Model\\RedirectorPage', 'SilverStripe\\CMS\\Model\\VirtualPage', 'SilverStripe\\UserForms\\Model\\UserDefinedForm', 'S2Hub\\Page\\CaseStudyHolder', 'S2Hub\\Page\\SolutionHolder', 'S2Hub\\Page\\CaseStudy', 'S2Hub\\Page\\Solution') THEN "SiteTree_Live"."Priority" WHEN "SiteTree_Live"."ClassName" IN ('Page', 'S2Hub\\Page\\Agencies', 'S2Hub\\Page\\BlockPage', 'SilverStripe\\ErrorPage\\ErrorPage', 'SilverStripe\\Blog\\Model\\Blog', 'SilverStripe\\Blog\\Model\\BlogPost', 'SilverStripe\\CMS\\Model\\RedirectorPage', 'SilverStripe\\CMS\\Model\\VirtualPage', 'SilverStripe\\UserForms\\Model\\UserDefinedForm', 'S2Hub\\Page\\CaseStudyHolder', 'S2Hub\\Page\\SolutionHolder', 'S2Hub\\Page\\CaseStudy', 'S2Hub\\Page\\Solution') THEN "Page_Live"."Priority" ELSE NULL END AS "Priority", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" LEFT JOIN "BlogPost_Live" ON "BlogPost_Live"."ID" = "SiteTree_Live"."ID" LEFT JOIN "Page_Live" ON "Page_Live"."ID" = "SiteTree_Live"."ID" WHERE ("SiteTree_Live"."ID" = ?) AND ("SiteTree_Live"."ClassName" IN (?, ?, ?)) AND ("PublishDate" < '2026-01-01 10:26:13') ORDER BY "_SortColumn0" DESC, "BlogPost_Live"."PublishDate" DESC LIMIT 1 0.0005s

0014: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "Page_Live"."MetaTitle", "Page_Live"."Canonical", "Page_Live"."Robots", "Page_Live"."ChangeFrequency", "Page_Live"."SitemapHide", "Page_Live"."HideSocial", "Page_Live"."OGtype", "Page_Live"."OGlocale", "Page_Live"."TwitterCard", "Page_Live"."SocialImageID", CASE WHEN "SiteTree_Live"."ClassName" IN ('SilverStripe\\CMS\\Model\\SiteTree', 'Page', 'S2Hub\\Page\\Agencies', 'S2Hub\\Page\\BlockPage', 'SilverStripe\\ErrorPage\\ErrorPage', 'SilverStripe\\Blog\\Model\\Blog', 'SilverStripe\\Blog\\Model\\BlogPost', 'SilverStripe\\CMS\\Model\\RedirectorPage', 'SilverStripe\\CMS\\Model\\VirtualPage', 'SilverStripe\\UserForms\\Model\\UserDefinedForm', 'S2Hub\\Page\\CaseStudyHolder', 'S2Hub\\Page\\SolutionHolder', 'S2Hub\\Page\\CaseStudy', 'S2Hub\\Page\\Solution') THEN "SiteTree_Live"."Priority" WHEN "SiteTree_Live"."ClassName" IN ('Page', 'S2Hub\\Page\\Agencies', 'S2Hub\\Page\\BlockPage', 'SilverStripe\\ErrorPage\\ErrorPage', 'SilverStripe\\Blog\\Model\\Blog', 'SilverStripe\\Blog\\Model\\BlogPost', 'SilverStripe\\CMS\\Model\\RedirectorPage', 'SilverStripe\\CMS\\Model\\VirtualPage', 'SilverStripe\\UserForms\\Model\\UserDefinedForm', 'S2Hub\\Page\\CaseStudyHolder', 'S2Hub\\Page\\SolutionHolder', 'S2Hub\\Page\\CaseStudy', 'S2Hub\\Page\\Solution') THEN "Page_Live"."Priority" ELSE NULL END AS "Priority", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName", "SiteTree_Live"."Sort" FROM "SiteTree_Live" LEFT JOIN "Page_Live" ON "Page_Live"."ID" = "SiteTree_Live"."ID" INNER JOIN "BlogPost_Live" ON "SiteTree_Live"."ID" = "BlogPost_Live"."ID" WHERE ("SiteTree_Live"."ID" = ?) AND ("SiteTree_Live"."ClassName" IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0005s

0015: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "Blog_Live"."DefaultPostMetaTitle", "Blog_Live"."DefaultPostMetaDescription", "Blog_Live"."UseFeaturedAsSocialImage", "Blog_Live"."PostsPerPage", CASE WHEN "SiteTree_Live"."ClassName" IN ('SilverStripe\\Blog\\Model\\Blog', 'S2Hub\\Page\\CaseStudyHolder', 'S2Hub\\Page\\SolutionHolder') THEN "Blog_Live"."ElementalAreaID" WHEN "SiteTree_Live"."ClassName" IN ('S2Hub\\Page\\CaseStudyHolder') THEN "CaseStudyHolder_Live"."ElementalAreaID" WHEN "SiteTree_Live"."ClassName" IN ('S2Hub\\Page\\SolutionHolder') THEN "SolutionHolder_Live"."ElementalAreaID" ELSE NULL END AS "ElementalAreaID", CASE WHEN "SiteTree_Live"."ClassName" IN ('SilverStripe\\CMS\\Model\\SiteTree', 'Page', 'S2Hub\\Page\\Agencies', 'S2Hub\\Page\\BlockPage', 'SilverStripe\\ErrorPage\\ErrorPage', 'SilverStripe\\Blog\\Model\\Blog', 'SilverStripe\\Blog\\Model\\BlogPost', 'SilverStripe\\CMS\\Model\\RedirectorPage', 'SilverStripe\\CMS\\Model\\VirtualPage', 'SilverStripe\\UserForms\\Model\\UserDefinedForm', 'S2Hub\\Page\\CaseStudyHolder', 'S2Hub\\Page\\SolutionHolder', 'S2Hub\\Page\\CaseStudy', 'S2Hub\\Page\\Solution') THEN "SiteTree_Live"."Priority" WHEN "SiteTree_Live"."ClassName" IN ('Page', 'S2Hub\\Page\\Agencies', 'S2Hub\\Page\\BlockPage', 'SilverStripe\\ErrorPage\\ErrorPage', 'SilverStripe\\Blog\\Model\\Blog', 'SilverStripe\\Blog\\Model\\BlogPost', 'SilverStripe\\CMS\\Model\\RedirectorPage', 'SilverStripe\\CMS\\Model\\VirtualPage', 'SilverStripe\\UserForms\\Model\\UserDefinedForm', 'S2Hub\\Page\\CaseStudyHolder', 'S2Hub\\Page\\SolutionHolder', 'S2Hub\\Page\\CaseStudy', 'S2Hub\\Page\\Solution') THEN "Page_Live"."Priority" ELSE NULL END AS "Priority", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName", "SiteTree_Live"."Sort" FROM "SiteTree_Live" LEFT JOIN "Page_Live" ON "Page_Live"."ID" = "SiteTree_Live"."ID" LEFT JOIN "Blog_Live" ON "Blog_Live"."ID" = "SiteTree_Live"."ID" LEFT JOIN "CaseStudyHolder_Live" ON "CaseStudyHolder_Live"."ID" = "SiteTree_Live"."ID" LEFT JOIN "SolutionHolder_Live" ON "SolutionHolder_Live"."ID" = "SiteTree_Live"."ID" WHERE ("SiteTree_Live"."ID" = ?) AND ("SiteTree_Live"."ClassName" IN (?, ?, ?)) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0005s

0016: SELECT DISTINCT "SiteConfig"."ClassName", "SiteConfig"."LastEdited", "SiteConfig"."Created", "SiteConfig"."GoogleAnalyticsAccountID", "SiteConfig"."GTMAccountID", "SiteConfig"."CookieIsActive", "SiteConfig"."ConsentNoticeDescription", "SiteConfig"."ConsentNoticeLearnMore", "SiteConfig"."ConsentModalTitle", "SiteConfig"."ConsentModalDescription", "SiteConfig"."ConsentModalPrivacyPolicyName", "SiteConfig"."ConsentModalPrivacyPolicyText", "SiteConfig"."AcceptAll", "SiteConfig"."AcceptSelected", "SiteConfig"."Decline", "SiteConfig"."OGSiteName", "SiteConfig"."TwitterHandle", "SiteConfig"."CreatorTwitterHandle", "SiteConfig"."FacebookAppID", "SiteConfig"."UseTitleAsMetaTitle", "SiteConfig"."SchemaOrganisationName", "SiteConfig"."Title", "SiteConfig"."Tagline", "SiteConfig"."CanViewType", "SiteConfig"."CanEditType", "SiteConfig"."CanCreateTopLevelType", "SiteConfig"."CookieLinkPrivacyID", "SiteConfig"."SchemaOrganisationImageID", "SiteConfig"."DefaultSocialImageID", "SiteConfig"."ID", CASE WHEN "SiteConfig"."ClassName" IS NOT NULL THEN "SiteConfig"."ClassName" ELSE 'SilverStripe\\SiteConfig\\SiteConfig' END AS "RecordClassName" FROM "SiteConfig" LIMIT 1 0.0002s

0017: SELECT DISTINCT "File_Live"."ClassName", "File_Live"."LastEdited", "File_Live"."Created", "File_Live"."Version", "File_Live"."UserFormUpload", "File_Live"."CanViewType", "File_Live"."CanEditType", "File_Live"."Name", "File_Live"."Title", "File_Live"."ShowInSearch", "File_Live"."ParentID", "File_Live"."OwnerID", "File_Live"."FileHash", "File_Live"."FileFilename", "File_Live"."FileVariant", "File_Live"."ID", CASE WHEN "File_Live"."ClassName" IS NOT NULL THEN "File_Live"."ClassName" ELSE 'SilverStripe\\Assets\\File' END AS "RecordClassName" FROM "File_Live" WHERE ("File_Live"."ID" IS NULL) AND ("File_Live"."ClassName" IN (?)) ORDER BY "File_Live"."Name" ASC LIMIT 1 0.0002s

0018: SELECT DISTINCT "SeoHeadTag"."ClassName", "SeoHeadTag"."LastEdited", "SeoHeadTag"."Created", "SeoHeadTag"."Title", "SeoHeadTag"."Value", "SeoHeadTag"."Type", "SeoHeadTag"."PageID", "SeoHeadTag"."PageClass", "SeoHeadTag"."ID", CASE WHEN "SeoHeadTag"."ClassName" IS NOT NULL THEN "SeoHeadTag"."ClassName" ELSE 'CyberDuck\\SEO\\Model\\SeoHeadTag' END AS "RecordClassName" FROM "SeoHeadTag" INNER JOIN "Page_HeadTags" ON "Page_HeadTags"."SeoHeadTagID" = "SeoHeadTag"."ID" WHERE ("Page_HeadTags"."PageID" = ?) AND ("SeoHeadTag"."Type" = ?) ORDER BY "SeoHeadTag"."Title" ASC 0.0004s

0019: SELECT DISTINCT "SeoHeadTag"."ClassName", "SeoHeadTag"."LastEdited", "SeoHeadTag"."Created", "SeoHeadTag"."Title", "SeoHeadTag"."Value", "SeoHeadTag"."Type", "SeoHeadTag"."PageID", "SeoHeadTag"."PageClass", "SeoHeadTag"."ID", CASE WHEN "SeoHeadTag"."ClassName" IS NOT NULL THEN "SeoHeadTag"."ClassName" ELSE 'CyberDuck\\SEO\\Model\\SeoHeadTag' END AS "RecordClassName" FROM "SeoHeadTag" INNER JOIN "Page_HeadTags" ON "Page_HeadTags"."SeoHeadTagID" = "SeoHeadTag"."ID" WHERE ("Page_HeadTags"."PageID" = ?) AND ("SeoHeadTag"."Type" = ?) ORDER BY "SeoHeadTag"."Title" ASC 0.0003s

0020: SELECT DISTINCT "SeoHeadTag"."ClassName", "SeoHeadTag"."LastEdited", "SeoHeadTag"."Created", "SeoHeadTag"."Title", "SeoHeadTag"."Value", "SeoHeadTag"."Type", "SeoHeadTag"."PageID", "SeoHeadTag"."PageClass", "SeoHeadTag"."ID", CASE WHEN "SeoHeadTag"."ClassName" IS NOT NULL THEN "SeoHeadTag"."ClassName" ELSE 'CyberDuck\\SEO\\Model\\SeoHeadTag' END AS "RecordClassName" FROM "SeoHeadTag" INNER JOIN "Page_HeadTags" ON "Page_HeadTags"."SeoHeadTagID" = "SeoHeadTag"."ID" WHERE ("Page_HeadTags"."PageID" = ?) AND ("SeoHeadTag"."Type" = ?) ORDER BY "SeoHeadTag"."Title" ASC 0.0003s

0021: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ShowInMenus" = ?) AND ("SiteTree_Live"."ParentID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC 0.0005s

0022: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

0023: SELECT DISTINCT "ElementalArea_Live"."ClassName", "ElementalArea_Live"."LastEdited", "ElementalArea_Live"."Created", "ElementalArea_Live"."Version", "ElementalArea_Live"."OwnerClassName", "ElementalArea_Live"."ID", CASE WHEN "ElementalArea_Live"."ClassName" IS NOT NULL THEN "ElementalArea_Live"."ClassName" ELSE 'DNADesign\\Elemental\\Models\\ElementalArea' END AS "RecordClassName" FROM "ElementalArea_Live" WHERE ("ElementalArea_Live"."ID" = ?) LIMIT 1 0.0002s

0024: SELECT DISTINCT "Element_Live"."ClassName", "Element_Live"."LastEdited", "Element_Live"."Created", "Element_Live"."AvailableGlobally", "Element_Live"."BubbleStyle", "Element_Live"."PreHeader", "Element_Live"."Version", "Element_Live"."Title", "Element_Live"."ShowTitle", "Element_Live"."Sort", "Element_Live"."ExtraClass", "Element_Live"."Style", "Element_Live"."ParentID", "Element_Live"."ID", CASE WHEN "Element_Live"."ClassName" IS NOT NULL THEN "Element_Live"."ClassName" ELSE 'DNADesign\\Elemental\\Models\\BaseElement' END AS "RecordClassName" FROM "Element_Live" WHERE ("Element_Live"."ParentID" = ?) ORDER BY "Element_Live"."Sort" ASC 0.0002s

0025: SELECT DISTINCT "ElementalArea_Live"."ClassName", "ElementalArea_Live"."LastEdited", "ElementalArea_Live"."Created", "ElementalArea_Live"."Version", "ElementalArea_Live"."OwnerClassName", "ElementalArea_Live"."ID", CASE WHEN "ElementalArea_Live"."ClassName" IS NOT NULL THEN "ElementalArea_Live"."ClassName" ELSE 'DNADesign\\Elemental\\Models\\ElementalArea' END AS "RecordClassName" FROM "ElementalArea_Live" WHERE ("ElementalArea_Live"."ID" = ?) LIMIT 1 0.0001s

0026: SELECT DISTINCT "PublishDate" IS NULL AS "_SortColumn0", "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", CASE WHEN "SiteTree_Live"."ClassName" IN ('SilverStripe\\CMS\\Model\\SiteTree', 'Page', 'S2Hub\\Page\\Agencies', 'S2Hub\\Page\\BlockPage', 'SilverStripe\\ErrorPage\\ErrorPage', 'SilverStripe\\Blog\\Model\\Blog', 'SilverStripe\\Blog\\Model\\BlogPost', 'SilverStripe\\CMS\\Model\\RedirectorPage', 'SilverStripe\\CMS\\Model\\VirtualPage', 'SilverStripe\\UserForms\\Model\\UserDefinedForm', 'S2Hub\\Page\\CaseStudyHolder', 'S2Hub\\Page\\SolutionHolder', 'S2Hub\\Page\\CaseStudy', 'S2Hub\\Page\\Solution') THEN "SiteTree_Live"."Priority" WHEN "SiteTree_Live"."ClassName" IN ('Page', 'S2Hub\\Page\\Agencies', 'S2Hub\\Page\\BlockPage', 'SilverStripe\\ErrorPage\\ErrorPage', 'SilverStripe\\Blog\\Model\\Blog', 'SilverStripe\\Blog\\Model\\BlogPost', 'SilverStripe\\CMS\\Model\\RedirectorPage', 'SilverStripe\\CMS\\Model\\VirtualPage', 'SilverStripe\\UserForms\\Model\\UserDefinedForm', 'S2Hub\\Page\\CaseStudyHolder', 'S2Hub\\Page\\SolutionHolder', 'S2Hub\\Page\\CaseStudy', 'S2Hub\\Page\\Solution') THEN "Page_Live"."Priority" ELSE NULL END AS "Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "Page_Live"."MetaTitle", "Page_Live"."Canonical", "Page_Live"."Robots", "Page_Live"."ChangeFrequency", "Page_Live"."SitemapHide", "Page_Live"."HideSocial", "Page_Live"."OGtype", "Page_Live"."OGlocale", "Page_Live"."TwitterCard", "Page_Live"."SocialImageID", "BlogPost_Live"."PublishDate", "BlogPost_Live"."AuthorNames", "BlogPost_Live"."Summary", "BlogPost_Live"."ElementalAreaID", "BlogPost_Live"."FeaturedImageID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" LEFT JOIN "Page_Live" ON "Page_Live"."ID" = "SiteTree_Live"."ID" LEFT JOIN "BlogPost_Live" ON "BlogPost_Live"."ID" = "SiteTree_Live"."ID" WHERE ("BlogPost_Live"."ElementalAreaID" = ?) AND ("SiteTree_Live"."ClassName" = ?) AND ("SiteTree_Live"."ClassName" IN (?, ?, ?)) AND ("PublishDate" < '2026-01-01 10:26:13') ORDER BY "_SortColumn0" DESC, "BlogPost_Live"."PublishDate" DESC LIMIT 1 0.0012s

0027: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

0028: SELECT DISTINCT "ElementalArea_Live"."ClassName", "ElementalArea_Live"."LastEdited", "ElementalArea_Live"."Created", "ElementalArea_Live"."Version", "ElementalArea_Live"."OwnerClassName", "ElementalArea_Live"."ID", CASE WHEN "ElementalArea_Live"."ClassName" IS NOT NULL THEN "ElementalArea_Live"."ClassName" ELSE 'DNADesign\\Elemental\\Models\\ElementalArea' END AS "RecordClassName" FROM "ElementalArea_Live" WHERE ("ElementalArea_Live"."ID" = ?) LIMIT 1 0.0001s

0029: SELECT DISTINCT "Element_Live"."ClassName", "Element_Live"."LastEdited", "Element_Live"."Created", "Element_Live"."AvailableGlobally", "Element_Live"."BubbleStyle", "Element_Live"."PreHeader", "Element_Live"."Version", "Element_Live"."Title", "Element_Live"."ShowTitle", "Element_Live"."Sort", "Element_Live"."ExtraClass", "Element_Live"."Style", "Element_Live"."ParentID", "Element_Live"."ID", CASE WHEN "Element_Live"."ClassName" IS NOT NULL THEN "Element_Live"."ClassName" ELSE 'DNADesign\\Elemental\\Models\\BaseElement' END AS "RecordClassName" FROM "Element_Live" WHERE ("Element_Live"."ParentID" = ?) ORDER BY "Element_Live"."Sort" ASC LIMIT 1 0.0002s

0030: SELECT DISTINCT "ElementalArea_Live"."ClassName", "ElementalArea_Live"."LastEdited", "ElementalArea_Live"."Created", "ElementalArea_Live"."Version", "ElementalArea_Live"."OwnerClassName", "ElementalArea_Live"."ID", CASE WHEN "ElementalArea_Live"."ClassName" IS NOT NULL THEN "ElementalArea_Live"."ClassName" ELSE 'DNADesign\\Elemental\\Models\\ElementalArea' END AS "RecordClassName" FROM "ElementalArea_Live" WHERE ("ElementalArea_Live"."ID" = ?) LIMIT 1 0.0001s

0031: SELECT DISTINCT "Element_Live"."ClassName", "Element_Live"."LastEdited", "Element_Live"."Created", "ElementMarkdownRemote_Live"."URL", "ElementMarkdownRemote_Live"."MarkdownDataID", "Element_Live"."ID", CASE WHEN "Element_Live"."ClassName" IS NOT NULL THEN "Element_Live"."ClassName" ELSE 'DNADesign\\Elemental\\Models\\BaseElement' END AS "RecordClassName", "Element_Live"."Sort" FROM "Element_Live" LEFT JOIN "ElementMarkdownRemote_Live" ON "ElementMarkdownRemote_Live"."ID" = "Element_Live"."ID" WHERE ("Element_Live"."ID" = ?) AND ("Element_Live"."ClassName" IN (?)) ORDER BY "Element_Live"."Sort" ASC LIMIT 1 0.0003s

0032: SELECT DISTINCT "RemoteMarkdownData"."ClassName", "RemoteMarkdownData"."LastEdited", "RemoteMarkdownData"."Created", "RemoteMarkdownData"."Markdown", "RemoteMarkdownData"."Content", "RemoteMarkdownData"."ID", CASE WHEN "RemoteMarkdownData"."ClassName" IS NOT NULL THEN "RemoteMarkdownData"."ClassName" ELSE 'Netwerkstatt\\RemoteMarkdown\\Model\\RemoteMarkdownData' END AS "RecordClassName" FROM "RemoteMarkdownData" WHERE ("RemoteMarkdownData"."ID" = ?) LIMIT 1 0.0002s

0033: SELECT DISTINCT "MenuSet"."ClassName", "MenuSet"."LastEdited", "MenuSet"."Created", "MenuSet"."Title", "MenuSet"."Slug", "MenuSet"."AllowChildren", "MenuSet"."ID", CASE WHEN "MenuSet"."ClassName" IS NOT NULL THEN "MenuSet"."ClassName" ELSE 'gorriecoe\\Menu\\Models\\MenuSet' END AS "RecordClassName" FROM "MenuSet" WHERE ("MenuSet"."Slug" = ?) LIMIT 1 0.0002s

0034: SELECT DISTINCT "Link"."ClassName", "Link"."LastEdited", "Link"."Created", "Link"."Anchor", "Link"."Title", "Link"."Type", "Link"."URL", "Link"."Email", "Link"."Phone", "Link"."OpenInNewWindow", "Link"."SelectedStyle", "Link"."SiteTreeID", "Link"."FileID", "MenuLink"."Sort", "MenuLink"."MenuSetID", "MenuLink"."ParentID", "Link"."ID", CASE WHEN "Link"."ClassName" IS NOT NULL THEN "Link"."ClassName" ELSE 'gorriecoe\\Link\\Models\\Link' END AS "RecordClassName" FROM "Link" LEFT JOIN "MenuLink" ON "MenuLink"."ID" = "Link"."ID" WHERE ("MenuLink"."MenuSetID" = ?) AND ("Link"."ClassName" IN (?)) ORDER BY "MenuLink"."Sort" ASC 0.0004s

0035: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

0036: SELECT EXISTS(SELECT * FROM "Link" LEFT JOIN "MenuLink" ON "MenuLink"."ID" = "Link"."ID" WHERE ("MenuLink"."ParentID" = ?) AND ("Link"."ClassName" IN (?))) 0.0002s

0037: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

0038: SELECT EXISTS(SELECT * FROM "Link" LEFT JOIN "MenuLink" ON "MenuLink"."ID" = "Link"."ID" WHERE ("MenuLink"."ParentID" = ?) AND ("Link"."ClassName" IN (?))) 0.0001s

0039: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

0040: SELECT EXISTS(SELECT * FROM "Link" LEFT JOIN "MenuLink" ON "MenuLink"."ID" = "Link"."ID" WHERE ("MenuLink"."ParentID" = ?) AND ("Link"."ClassName" IN (?))) 0.0001s

0041: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

0042: SELECT EXISTS(SELECT * FROM "Link" LEFT JOIN "MenuLink" ON "MenuLink"."ID" = "Link"."ID" WHERE ("MenuLink"."ParentID" = ?) AND ("Link"."ClassName" IN (?))) 0.0001s

0043: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

0044: SELECT EXISTS(SELECT * FROM "Link" LEFT JOIN "MenuLink" ON "MenuLink"."ID" = "Link"."ID" WHERE ("MenuLink"."ParentID" = ?) AND ("Link"."ClassName" IN (?))) 0.0001s

0045: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

0046: SELECT EXISTS(SELECT * FROM "Link" LEFT JOIN "MenuLink" ON "MenuLink"."ID" = "Link"."ID" WHERE ("MenuLink"."ParentID" = ?) AND ("Link"."ClassName" IN (?))) 0.0001s

0047: SELECT "Version" FROM "SiteTree" WHERE "ID" = ? 0.0001s

0048: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

0049: SELECT DISTINCT "SiteTree"."ClassName", "SiteTree"."LastEdited", "SiteTree"."Created", "SiteTree"."Priority", "SiteTree"."CanViewType", "SiteTree"."CanEditType", "SiteTree"."Version", "SiteTree"."URLSegment", "SiteTree"."Title", "SiteTree"."MenuTitle", "SiteTree"."Content", "SiteTree"."MetaDescription", "SiteTree"."ExtraMeta", "SiteTree"."ShowInMenus", "SiteTree"."ShowInSearch", "SiteTree"."Sort", "SiteTree"."HasBrokenFile", "SiteTree"."HasBrokenLink", "SiteTree"."ReportClass", "SiteTree"."ParentID", "SiteTree"."ID", CASE WHEN "SiteTree"."ClassName" IS NOT NULL THEN "SiteTree"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree" WHERE ("SiteTree"."ID" = ?) ORDER BY "SiteTree"."Sort" ASC LIMIT 1 0.0002s

0050: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

0051: SELECT DISTINCT "SiteTree_Live"."ClassName", "SiteTree_Live"."LastEdited", "SiteTree_Live"."Created", "SiteTree_Live"."Priority", "SiteTree_Live"."CanViewType", "SiteTree_Live"."CanEditType", "SiteTree_Live"."Version", "SiteTree_Live"."URLSegment", "SiteTree_Live"."Title", "SiteTree_Live"."MenuTitle", "SiteTree_Live"."Content", "SiteTree_Live"."MetaDescription", "SiteTree_Live"."ExtraMeta", "SiteTree_Live"."ShowInMenus", "SiteTree_Live"."ShowInSearch", "SiteTree_Live"."Sort", "SiteTree_Live"."HasBrokenFile", "SiteTree_Live"."HasBrokenLink", "SiteTree_Live"."ReportClass", "SiteTree_Live"."ParentID", "SiteTree_Live"."ID", CASE WHEN "SiteTree_Live"."ClassName" IS NOT NULL THEN "SiteTree_Live"."ClassName" ELSE 'SilverStripe\\CMS\\Model\\SiteTree' END AS "RecordClassName" FROM "SiteTree_Live" WHERE ("SiteTree_Live"."ID" = ?) ORDER BY "SiteTree_Live"."Sort" ASC LIMIT 1 0.0001s

Tips and tricks for populating default records with Silverstripe CMS

Tips and tricks for populating default records with Silverstripe CMS

In Austria, I often hear the proverb "faul, fauler, EDVler", which can be translated as "lazy, lazier, IT-specialaziest". And I tend to be lazy when it comes to adding e.g. predefined site structure or data to my project. While developing I use fake data and lorem ipsum texts to fill the site with content and when deploying I want to start with a clean database. Luckily, Silverstripe has some nice features and modules that help me to avoid adding all that data in the backend manually. Because I'm lazy and don't like clicking around in the backend if I can avoid it.

One powerful feature is called "default records". This means, when the table for your DataObject is created on dev/build, it adds some records to the database, and you can start working without adding this data manually. The most popular example are the default pages (home, about us, contact) you find on a blank installation.

Don't create default pages on first dev/build

While the default pages created by Silverstripe are handy, in some cases you want to start with a clean database and add the pages to your project manually. Then you really don't have any data left and the index starts with no. 1. You can switch them off with the following setting:

SilverStripe\CMS\Model\SiteTree:
  create_default_pages: false

Create page structure

In case you want to create a site structure with yml, you can use a module called silverstripe-populate. You can define fixtures for your model in separate yml files that will be written to the database on dev/build. This is handy, when you want to throw away your development database with mock data and start again from scratch. Or you can define e.g. data for team members in a yml fixture for starting, in case you think that editing yml is easier than using CMS web forms.

To enable the module you need to configure the path to your fixture files.

DNADesign\Populate\Populate:
  include_yaml_fixtures:
    - 'app/fixtures/populate.yml'

In that fixture file you can add the data for your models. One fixture per database entry:

Page:
  home:
    Title: "Home"
    Content: "My Home Page"
    ParentID: 0
  category:
    Title: "A Category"
    ParentID: 0
  subpage1:
    Title: "A subpage of Category"
    ParentID: =>Page.category

In this very simple example I didn't use any advanced page types. Note, that "subpage1" references to the other fixture "category" for getting its ParentID.

More information can be found in the very good module documentation.

By default, silverstripe-populate only runs in dev mode. Be sure to remove the module from composer when the project is live. Otherwise, in some very rare settings combined with an unsecure configurations, the task can be run again by a bot and delete your database. Did I mention, that backups are always a good idea?

Defining default locales for fluent

I prefer to define as many configurations as possible in the yaml config. This way it lives in my git repository and I don't have to add all the locales again when deleting my sandbox database with mock data to start with live data. Fortunately you can use DataObject's default_records to add your locales on dev/build. I often use this configuration:

---
Name: myfluentconfig
After: '#fluentconfig'
---

TractorCow\Fluent\Model\Locale:
  default_records:
    de:
      Title: Deutsch
      Locale: de_DE
      URLSegment: de
      IsGlobalDefault: 1
    en:
      Title: English
      Locale: en_GB
      URLSegment: en

Using silverstripe-populate and fluent together

Of course, you can also use silverstripe-populate to define the project's locales if you need to create. In this case your fixtures need also to fill all the Foo_Localised tables with the translations. There is no need to add the default locale to the localisation table, as they're added when the record is created before.:

TractorCow\Fluent\Model\Locale:
  de:
    Title: Deutsch
    Locale: de_DE
    URLSegment: de
    IsGlobalDefault: 1
  en:
    Title: English
    Locale: en_GB
    URLSegment: en

Page:
  about:
    Title: About Us
    URLSegment: about-us

SiteTree_Localised:
  about_en:
    RecordID: =>Page.about
    Locale: en_GB
    Title: About us
    URLSegment: about-us