123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <?php
- namespace Elgg\Debug\Inspector;
- /**
- * WARNING: API IN FLUX. DO NOT USE DIRECTLY.
- *
- * @access private
- *
- * @package Elgg.Core
- * @since 1.11
- */
- class ViewComponent {
- /**
- * @var string View location. E.g. "/path/to/views/default/"
- */
- public $location;
- /**
- * @var string View name. E.g. "css/elgg"
- */
- public $view;
- /**
- * @var string View file extension, if known. E.g. "php"
- */
- public $extension = null;
- /**
- * @var bool Is this component represent an overridden view?
- */
- public $overridden = false;
- /**
- * @return string Return the component as a file path
- */
- public function getFile() {
- $ext = pathinfo($this->view, PATHINFO_EXTENSION);
- if ($ext) {
- // view is filename
- return "{$this->location}{$this->view}";
- }
- $str = "{$this->location}{$this->view}.{$this->extension}";
- if ($this->extension === null) {
- // try to guess from filesystem
- $files = glob("{$this->location}{$this->view}.*");
- if (count($files) === 1) {
- $str = $files[0];
- } else {
- $str = "{$this->location}{$this->view}.?";
- }
- }
- return $str;
- }
- /**
- * Get a component from the path and location
- *
- * @param string $path Full file path
- * @param string $location Base location of view
- *
- * @return ViewComponent
- */
- public static function fromPaths($path, $location) {
- $component = new self();
- $component->location = $location;
- // cut location off
- $file = substr($path, strlen($location));
- $component->file = $file;
- $basename = basename($file);
- $period = strpos($basename, '.');
- if ($period === false) {
- // file with no extension? shouldn't happen
- $component->view = $file;
- $component->extension = '';
- } else {
- $cut_off_end = strlen($basename) - $period;
- $component->view = substr($file, 0, -$cut_off_end);
- $component->extension = substr($basename, $period + 1);
- }
- return $component;
- }
- }
|