Source of file Build.php
Size: 4,339 Bytes - Last Modified: 2014-09-11T01:33:48+02:00
/home/theseer/storage/php/phpdox/src/generator/enricher/build/Build.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | <?php namespace TheSeer\phpDox\Generator\Enricher { use TheSeer\fDOM\fDOMDocument; use TheSeer\fDOM\fDOMElement; use TheSeer\phpDox\EnrichConfig; use TheSeer\phpDox\Generator\ClassStartEvent; use TheSeer\phpDox\Generator\InterfaceStartEvent; use TheSeer\phpDox\Generator\PHPDoxStartEvent; use TheSeer\phpDox\Generator\TokenFileStartEvent; use TheSeer\phpDox\Generator\TraitStartEvent; use TheSeer\phpDox\Version; class Build extends AbstractEnricher implements StartEnricherInterface, ClassEnricherInterface, TraitEnricherInterface, InterfaceEnricherInterface, TokenFileEnricherInterface { /** * @var array */ private $enrichers; /** * @var fDOMElement */ private $buildInfo; public function __construct(EnrichConfig $config) { $this->enrichers = array_keys($config->getGeneratorConfig()->getActiveEnrichSources()); } /** * @return string */ public function getName() { return 'Build Information'; } public function enrichStart(PHPDoxStartEvent $event) { $this->genericProcess($event->getIndex()->asDom()); } public function enrichClass(ClassStartEvent $event) { $this->genericProcess($event->getClass()->asDom()); } public function enrichInterface(InterfaceStartEvent $event) { $this->genericProcess($event->getInterface()->asDom()); } public function enrichTrait(TraitStartEvent $event) { $this->genericProcess($event->getTrait()->asDom()); } public function enrichTokenFile(TokenFileStartEvent $event) { $this->genericProcess($event->getTokenFile()->asDom()); } private function genericProcess(fDOMDocument $dom) { $enrichment = $this->getEnrichtmentContainer($dom->documentElement, 'build'); $enrichment->appendChild( $dom->importNode($this->getGeneralBuildInfo(), true) ); } private function getGeneralBuildInfo() { if ($this->buildInfo != NULL) { return $this->buildInfo; } $dom = new fDOMDocument(); $this->buildInfo = $dom->createDocumentFragment(); $dateNode = $dom->createElementNS(self::XMLNS, 'date'); $this->buildInfo->appendChild($dateNode); $date = new \DateTime('now'); $dateNode->setAttribute('unix', $date->getTimestamp()); $dateNode->setAttribute('date', $date->format('d-m-Y')); $dateNode->setAttribute('time', $date->format('H:i:s')); $dateNode->setAttribute('iso', $date->format('c')); $dateNode->setAttribute('rfc', $date->format('r')); $phpdoxNode = $dom->createElementNS(self::XMLNS, 'phpdox'); $this->buildInfo->appendChild($phpdoxNode); $phpdoxNode->setAttribute('version', Version::getVersion()); $phpdoxNode->setAttribute('info', Version::getInfoString()); $phpdoxNode->setAttribute('generated', Version::getGeneratedByString()); $phpdoxNode->setAttribute('phar', defined('PHPDOX_PHAR') ? 'yes' : 'no'); foreach($this->enrichers as $enricher) { $enricherNode = $phpdoxNode->appendElementNS(self::XMLNS, 'enricher'); $enricherNode->setAttribute('type', $enricher); } $phpNode = $dom->createElementNS(self::XMLNS, 'php'); $this->buildInfo->appendChild($phpNode); $phpNode->setAttribute('version', PHP_VERSION); $phpNode->setAttribute('os', PHP_OS); foreach(get_loaded_extensions(true) as $extension) { $extNode = $dom->createElementNS(self::XMLNS, 'zendextension'); $extNode->setAttribute('name', $extension); $phpNode->appendChild($extNode); } foreach(get_loaded_extensions(false) as $extension) { $extNode = $dom->createElementNS(self::XMLNS, 'extension'); $extNode->setAttribute('name', $extension); $phpNode->appendChild($extNode); } return $this->buildInfo; } } } |