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 *