Esempio n. 1
0
 public function indexAction()
 {
     /** @var \DOMElement $statusNode */
     $statusNode = $this->root->appendChild($this->xml->createElement('status'));
     // stats/difra
     $statusNode->setAttribute('difra', \Difra\Envi\Version::getFrameworkVersion(true));
     $statusNode->setAttribute('cache', \Difra\Cache::getInstance()->adapter);
     $statusNode->setAttribute('webserver', $_SERVER['SERVER_SOFTWARE']);
     $statusNode->setAttribute('phpversion', phpversion());
     // stats/plugins
     /** @var $pluginsNode \DOMElement */
     $plugins = \Difra\Plugger::getAllPlugins();
     $enabledPlugins = $disabledPlugins = [];
     foreach ($plugins as $plugin) {
         if ($plugin->isEnabled()) {
             $enabledPlugins[] = $plugin->getName();
         } else {
             $disabledPlugins[] = $plugin->getName();
         }
     }
     $statusNode->setAttribute('enabledPlugins', implode(', ', $enabledPlugins));
     $statusNode->setAttribute('disabledPlugins', implode(', ', $disabledPlugins));
     // stats/extensions
     /** @var $extensionsNode \DOMElement */
     $extensionsNode = $statusNode->appendChild($this->xml->createElement('extensions'));
     $extensions = get_loaded_extensions();
     $extensionsOk = [];
     $extensionsExtra = [];
     $extensionsRequired = ['dom', 'SimpleXML', 'xsl', 'zlib', 'ctype', 'json', 'mbstring', 'Reflection', 'Phar', 'imagick'];
     foreach ($extensions as $extension) {
         if (in_array($extension, $extensionsRequired)) {
             $extensionsOk[] = $extension;
             unset($extensionsRequired[array_search($extension, $extensionsRequired)]);
         } else {
             $extensionsExtra[] = $extension;
         }
     }
     natcasesort($extensionsOk);
     natcasesort($extensionsRequired);
     natcasesort($extensionsExtra);
     $extensionsNode->setAttribute('ok', implode(', ', $extensionsOk));
     $extensionsNode->setAttribute('required', implode(', ', $extensionsRequired));
     $extensionsNode->setAttribute('extra', implode(', ', $extensionsExtra));
     /** @var $permNode \DOMElement */
     $permNode = $statusNode->appendChild($statusNode->ownerDocument->createElement('permissions'));
     if (!is_dir(DIR_DATA)) {
         $permNode->setAttribute('data', 'Directory ' . DIR_DATA . ' does not exist!');
     } elseif (!is_writable(DIR_DATA)) {
         $permNode->setAttribute('data', 'Directory ' . DIR_DATA . ' is not writeable!');
     }
 }
Esempio n. 2
0
 /**
  * Fill output XML with some common data
  * @param \DOMDocument|null $xml
  * @param null $instance
  */
 public static function fillXML(&$xml = null, $instance = null)
 {
     $controller = Controller::getInstance();
     if (is_null($xml)) {
         $xml = $controller->xml;
         $node = $controller->realRoot;
     } else {
         $node = $xml->documentElement;
     }
     Debugger::addLine('Filling XML data for render: Started');
     // TODO: sync this with Envi::getState()
     $node->setAttribute('lang', Envi\Setup::getLocale());
     $node->setAttribute('site', Envi::getSubsite());
     $node->setAttribute('host', $host = Envi::getHost());
     $node->setAttribute('mainhost', $mainhost = Envi::getHost(true));
     $node->setAttribute('protocol', Envi::getProtocol());
     $node->setAttribute('fullhost', Envi::getURLPrefix());
     $node->setAttribute('instance', $instance ? $instance : View::$instance);
     $node->setAttribute('uri', Envi::getUri());
     $node->setAttribute('controllerUri', Action::getControllerUri());
     if ($host != $mainhost) {
         $node->setAttribute('urlprefix', Envi::getURLPrefix(true));
     }
     // get user agent
     Envi\UserAgent::getUserAgentXML($node);
     // ajax flag
     $node->setAttribute('ajax', (Request::isAjax() or isset($_SERVER['HTTP_X_REQUESTED_WITH']) and $_SERVER['HTTP_X_REQUESTED_WITH'] == 'SwitchPage') ? '1' : '0');
     $node->setAttribute('switcher', (!$controller->cache and isset($_SERVER['HTTP_X_REQUESTED_WITH']) and $_SERVER['HTTP_X_REQUESTED_WITH'] == 'SwitchPage') ? '1' : '0');
     // build and version number
     $node->setAttribute('build', Version::getBuild());
     $node->setAttribute('framework', Version::getFrameworkVersion(false));
     $node->setAttribute('frameworkLong', Version::getFrameworkVersion(true));
     // date
     /** @var $dateNode \DOMElement */
     $dateNode = $node->appendChild($xml->createElement('date'));
     $dateKeys = ['d', 'e', 'A', 'a', 'm', 'B', 'b', 'Y', 'y', 'c', 'x', 'H', 'M', 'S'];
     $dateValues = explode('|', strftime('%' . implode('|%', $dateKeys)));
     $dateCombined = array_combine($dateKeys, $dateValues);
     $dateNode->setAttribute('ts', time());
     foreach ($dateCombined as $k => $v) {
         $dateNode->setAttribute($k, $v);
     }
     // debug flag
     $node->setAttribute('debug', Debugger::isEnabled() ? '1' : '0');
     // config values (for js variable)
     $configNode = $node->appendChild($xml->createElement('config'));
     Envi::getStateXML($configNode);
     // menu
     if ($menuResource = Resourcer::getInstance('menu')->compile(View::$instance)) {
         $menuXML = new \DOMDocument();
         $menuXML->loadXML($menuResource);
         $node->appendChild($xml->importNode($menuXML->documentElement, true));
     }
     // auth
     Auth::getInstance()->getAuthXML($node);
     // locale
     Locales::getInstance()->getLocaleXML($node);
     // Add config js object
     $config = Envi::getState();
     $confJS = '';
     foreach ($config as $k => $v) {
         $confJS .= "config.{$k}='" . addslashes($v) . "';";
     }
     $node->setAttribute('jsConfig', $confJS);
     Debugger::addLine('Filling XML data for render: Done');
     Debugger::debugXML($node);
 }
Esempio n. 3
0
 /**
  * Fill information about missing requirements, old versions, etc.
  */
 public static function fillMissingReq()
 {
     static $didIt = false;
     if ($didIt) {
         return;
     }
     $didIt = true;
     foreach (self::$pluginsData as $name => $data) {
         if (!$data['loaded'] and !empty($data['require'])) {
             foreach ($data['require'] as $req) {
                 if (empty(self::$provisions[$req])) {
                     self::$pluginsData[$name]['missingReq'][] = $req;
                     self::$pluginsData[$name]['disabled'] = true;
                 }
             }
         }
         if ($data['version'] < (double) Envi\Version::getFrameworkVersion(false)) {
             self::$pluginsData[$name]['old'] = true;
         }
     }
 }