private function buildSchema() { $modelPath = $this->packagePath . $this->object->dir_name . "/core/components/" . $this->config->getLowCaseName() . "/" . 'model/'; $modelPath = str_replace('\\', '/', $modelPath); $manager = $this->modx->getManager(); $generator = $manager->getGenerator(); $generator->classTemplate = <<<EOD <?php /** * [+phpdoc-package+] */ class [+class+] extends [+extends+] {} ?> EOD; $generator->platformTemplate = <<<EOD <?php /** * [+phpdoc-package+] */ require_once (strtr(realpath(dirname(dirname(__FILE__))), '\\\\', '/') . '/[+class-lowercase+].class.php'); class [+class+]_[+platform+] extends [+class+] {} ?> EOD; $generator->mapHeader = <<<EOD <?php /** * [+phpdoc-package+] */ EOD; $buildOptions = $this->config->getBuild(); $generator->parseSchema($this->packagePath . $this->object->dir_name . $buildOptions->getSchemaPath(), $modelPath); }
public function process() { $prepare = $this->prepare(); if ($prepare !== true) { return $prepare; } $this->setPaths(); $this->builder = new GitPackageBuilder($this->modx, $this->smarty, $this->packagePath); $buildOptions = $this->config->getBuild(); $objectAttributes = $buildOptions->getAttributes(); foreach ($objectAttributes as $element => $attributes) { $this->builder->updateCategoryAttribute($element, $attributes); } $version = explode('-', $this->config->getVersion()); if (count($version) == 1) { $version[1] = 'pl'; } $this->builder->getTPBuilder()->directory = $this->config->getPackagePath() . '/_packages/'; $this->builder->getTPBuilder()->createPackage($this->config->getLowCaseName(), $version[0], $version[1]); $this->builder->registerNamespace($this->config->getLowCaseName(), false, true, '{core_path}components/' . $this->config->getLowCaseName() . '/', '{assets_path}components/' . $this->config->getLowCaseName() . '/'); $vehicle = $this->addCategory(); $resolver = $buildOptions->getResolver(); $resolversDir = $resolver->getResolversDir(); $resolversDir = trim($resolversDir, '/'); $resolversDir = $this->packagePath . '_build/' . $resolversDir . '/'; $before = $resolver->getBefore(); foreach ($before as $script) { $vehicle->addPHPResolver($resolversDir . ltrim($script, '/')); } if (is_dir($this->assetsPath)) { $vehicle->addAssetsResolver($this->assetsPath); } if (is_dir($this->corePath)) { $vehicle->addCoreResolver($this->corePath); } $fileResolvers = $resolver->getFileResolvers(); foreach ($fileResolvers as $fileResolver) { $source = $fileResolver['source']; $source = str_replace('[[+corePath]]', $this->corePath, $source); $source = str_replace('[[+assetsPath]]', $this->assetsPath, $source); $source = str_replace('[[+packagePath]]', $this->packagePath, $source); $vehicle->addFileResolver($source, $fileResolver['target']); } $db = $this->config->getDatabase(); if ($db != null) { $tables = $db->getTables(); if (!empty($tables)) { $vehicle->addTableResolver($this->packagePath . '_build/gpm_resolvers', $tables); } } $extensionPackage = $this->config->getExtensionPackage(); if ($extensionPackage !== false) { if ($extensionPackage === true) { $vehicle->addExtensionPackageResolver($this->packagePath . '_build/gpm_resolvers'); } else { $vehicle->addExtensionPackageResolver($this->packagePath . '_build/gpm_resolvers', $extensionPackage['serviceName'], $extensionPackage['serviceClass']); } } if (!empty($this->tvMap)) { $vehicle->addTVResolver($this->packagePath . '_build/gpm_resolvers', $this->tvMap); } $resources = $this->config->getResources(); $resourcesArray = array(); foreach ($resources as $resource) { $resourcesArray[] = $resource->toRawArray(); } if (!empty($resourcesArray)) { $vehicle->addResourceResolver($this->packagePath . '_build/gpm_resolvers', $resourcesArray); } $this->addWidgets(); $this->addSystemSettings(); $after = $resolver->getAfter(); foreach ($after as $script) { $vehicle->addPHPResolver($resolversDir . ltrim($script, '/')); } $this->builder->putVehicle($vehicle); $this->addMenus(); $packageAttributes = array(); $license = ltrim($buildOptions->getLicense(), '/'); if (!empty($license) && file_exists($this->corePath . $license)) { $packageAttributes['license'] = file_get_contents($this->corePath . $license); } $readme = ltrim($buildOptions->getReadme(), '/'); if (!empty($readme) && file_exists($this->corePath . $readme)) { $packageAttributes['readme'] = file_get_contents($this->corePath . $readme); } $changeLog = ltrim($buildOptions->getChangeLog(), '/'); if (!empty($changeLog) && file_exists($this->corePath . $changeLog)) { $packageAttributes['changelog'] = file_get_contents($this->corePath . $changeLog); } $setupOptions = $buildOptions->getSetupOptions(); if (!empty($setupOptions) && isset($setupOptions['source']) && !empty($setupOptions['source'])) { $file = $this->packagePath . '_build/' . $setupOptions['source']; if (file_exists($file)) { $setupOptions['source'] = $file; $packageAttributes['setup-options'] = $setupOptions; } } $dependencies = $this->config->getDependencies(); if (!empty($dependencies)) { $packageAttributes['requires'] = array(); foreach ($dependencies as $dependency) { $packageAttributes['requires'][$dependency['name']] = $dependency['version']; } } $this->builder->setPackageAttributes($packageAttributes); $this->builder->pack(); return $this->success(); }