1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-15 11:14:12 +02:00

Add a FieldtypeFile::getPagefile() method

This commit is contained in:
Ryan Cramer
2020-08-27 15:31:38 -04:00
parent f1b146bb61
commit 575fc9acf8

View File

@@ -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
*