PagefilesManager class

Manages files and file directories for a page independent of a particular field.

Files in ProcessWire are always connected with a particular Field on a Page. This is typically a FieldtypeFile field or a FieldtypeImage field, which exist as Pagefiles or Pageimages values on the Page. Sometimes it is necessary to manage all files connected with a page as a group, and this files manager class provides that. Likewise, something needs to manage the paths and URLs where these files live, and that is where this files manager comes into play as well.

Summary of what PagefilesManager does

  • Provides methods for movement of all files connected with a page as a group.
  • Ensures that file directories for a page are created (and removed) when applicable.
  • Manages secured vs. normal page file paths (see $config->pagefileSecure).
  • Manages extended vs. normal page file paths (see $config->pagefileExtendedPaths).

How to access the Page files manager

The Page files manager can be accessed from any page’s Page::filesManager() method or property.

// Example of getting a Page’s dedicated file path and URL
$filesPath = $page->filesManager->path();
$filesURL = $page->filesManager->url();

Click any linked item for full usage details and examples. Hookable methods are indicated with the icon. In addition to those shown below, the PagefilesManager class also inherits all the methods and properties of: Wire.

Show class?             Show args?        

Common

NameReturnSummary 
PagefilesManager::getFile(string $name)
Pagefile Pageimage nullGet the Pagefile object containing the given filename. 
PagefilesManager::getFiles()
arrayGet an array of all published filenames on the current Page. 
PagefilesManager::getTempPath()
stringReturn a path where temporary files can be stored unique to this ProcessWire instance 
PagefilesManager::page Page Page that this files manager is for.  
PagefilesManager::path()
stringGet the published path for files
Can also be used as property: PagefilesManager::path
 
PagefilesManager::url()
stringGet the published URL for files
Can also be used as property: PagefilesManager::url
 

For hooks

These methods are only useful for hooking and should not be called directly.

NameReturnSummary 
PagefilesManager::save()
(nothing)For hooks to listen to on page save action, for file-specific operations

Static

These methods are not connected with a particular instance and may only be called statically.

NameReturnSummary 
PagefilesManager::dirToPageID(string $dir)
intGiven a dir (URL or path) to a files directory, return the page ID associated with it. 
PagefilesManager::hasFiles(Page $page)
boolReturns true if Page has a path and files, false if not. 
PagefilesManager::hasPath(Page $page)
boolReturns true if Page has a files path that exists. 

Additional methods and properties

In addition to the methods and properties above, PagefilesManager also inherits the methods and properties of these classes:

API reference based on ProcessWire core version 3.0.135

Twitter updates

  • New post: A look at two new WireMail modules for sending email, plus details on how you can configure ProcessWire to use Gmail for sending email— More
    19 July 2019
  • New post: Version 3.0.135 of ProcessWire on the dev branch focuses on some .htaccess updates, adds clarity to debug mode, and improves upon the installer— More
    5 July 2019
  • ProcessWire 3.0.133 adds a useful new Page::meta() method for a new type of page-specific persistent data storage, adds the ability for users to create their own bookmarks in Lister, and has a handy and time saving update for the asmSelect input type— More
    14 June 2019

Latest news

  • ProcessWire Weekly #271
    In the 271st issue of ProcessWire Weekly we're going to introduce two brand new WireMail modules, a new Textformatter module from BitPoet, and a brand new markup module from Chris Thomson. Read on!
    Weekly.pw / 20 July 2019
  • Two new WireMail modules and using Gmail with PW
    A look at two new WireMail modules for sending email, plus details on how you can configure ProcessWire to use Gmail for sending email.
    Blog / 19 July 2019
  • Subscribe to weekly ProcessWire news

“I am currently managing a ProcessWire site with 2 million+ pages. It’s admirably fast, and much, much faster than any other CMS we tested.” —Nickie, Web developer