lithium\net\http\Media::path()

public static method

Returns the physical path to an asset in the /webroot directory of an application or plugin.

Parameters

  • string $paths

    The path to a web asset, relative to the root path for its type. For example, for a JavaScript file in /webroot/js/subpath/file.js, the correct value for $path would be 'subpath/file.js'.

  • string $type

    A valid asset type, i.e. 'js', 'cs', 'image', or another type registered with Media::assets(), or 'generic'.

  • array $options

    The options used to calculate the path to the file.

Returns

string

Returns the physical filesystem path to an asset in the /webroot directory.

Source

	public static function path($path, $type, array $options = array()) {
		$defaults = array(
			'base' => null,
			'paths' => array(),
			'suffix' => null,
			'library' => true,
			'scope' => false
		);
		if (!$base = static::_assets($type)) {
			$base = static::_assets('generic');
		}
		$options += ($base + $defaults);
		$paths = $options['paths'];

		if ($options['scope']) {
			$root = static::webroot(false, $options['scope']);
		} else {
			$root = static::webroot($options['library']);
			Libraries::get(true, 'name') === $options['library'] ? end($paths) : reset($paths);
		}

		if ($qOffset = strpos($path, '?')) {
			$path = substr($path, 0, $qOffset);
		}

		if ($path[0] === '/') {
			$file = $root . $path;
		} else {
			$template = str_replace('{:library}/', '', key($paths));
			$insert = array('base' => $root) + compact('path');
			$file = String::insert($template, $insert);
		}
		return realpath($file);
	}