From 575fc9acf852e4c3678afc3d41ca70ea4958f152 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Thu, 27 Aug 2020 15:31:38 -0400 Subject: [PATCH] Add a FieldtypeFile::getPagefile() method --- wire/modules/Fieldtype/FieldtypeFile.module | 28 +++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/wire/modules/Fieldtype/FieldtypeFile.module b/wire/modules/Fieldtype/FieldtypeFile.module index ba365b77..b1602081 100644 --- a/wire/modules/Fieldtype/FieldtypeFile.module +++ b/wire/modules/Fieldtype/FieldtypeFile.module @@ -1266,6 +1266,34 @@ class FieldtypeFile extends FieldtypeMulti implements ConfigurableModule { return $page; } + /** + * Given a Page and file basename, return the Pagefile object if file is found for Page + * + * The returned Pagefile will have a `field` property that reveals the Field it is from. + * + * @param Page $page + * @param string $basename + * @return Pagefile|null + * + */ + public function getPagefile(Page $page, $basename) { + $pagefile = null; + foreach($page->template->fieldgroup as $field) { + if(!($field->type instanceof FieldtypeFile)) continue; + $pagefiles = $page->get($field->name); + if($pagefiles instanceof Pagefile) { + if($pagefiles->basename() === $basename) $pagefile = $pagefiles; + } else if($pagefiles instanceof Pagefiles) { + foreach($pagefiles as $f) { + if($f->basename() === $basename) $pagefile = $f; + if($pagefile) break; + } + } + if($pagefile) break; + } + return $pagefile; + } + /** * Save a single Pagefile to DB *