$modx->initialize('mgr'); $modx->getService('error', 'error.modError'); $modx->setLogLevel(modX::LOG_LEVEL_ERROR); $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML'); $modx->loadClass('transport.modPackageBuilder', '', false, true); /** @var xPDOManager $manager */ $manager = $modx->getManager(); /** @var xPDOGenerator $generator */ $generator = $manager->getGenerator(); // Remove old model rrmdir($sources['model'] . PKG_NAME_LOWER . '/mysql'); // Generate a new one $generator->parseSchema($sources['xml'], $sources['model']); $modx->addPackage(PKG_NAME_LOWER, $sources['model']); $modx->log(modX::LOG_LEVEL_INFO, 'Model generated.'); add_plugins_call($sources['model'] . PKG_NAME_LOWER, array('msProductData', 'msCustomerProfile')); print "\nDone\n"; /********************************************************/ function add_plugins_call($dir, $classes = array()) { foreach ($classes as $name) { $file = $dir . '/mysql/' . strtolower($name) . '.map.inc.php'; if (file_exists($file)) { file_put_contents($file, str_replace(' ', '', "\n" . ' if (!class_exists(\'ms2Plugins\') || !is_object($this->ms2Plugins)) { require_once (dirname(dirname(__FILE__)) . \'/plugins.class.php\'); $this->ms2Plugins = new ms2Plugins($this, array()); } $xpdo_meta_map[\'' . $name . '\'] = $this->ms2Plugins->loadMap(\'' . $name . '\', $xpdo_meta_map[\'' . $name . '\']);'), FILE_APPEND); } }
/*******************************************************/ $modx->getService('error', 'error.modError'); $modx->setLogLevel(modX::LOG_LEVEL_ERROR); $modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML'); $modx->error->message = null; $modx->loadClass('transport.modPackageBuilder', '', false, true); $manager = $modx->getManager(); $generator = $manager->getGenerator(); $generator->parseSchema($xml, $Model); $modx->addPackage($package, $Model); $objects = array(); foreach ($objects as $object) { $manager->removeObjectContainer($object); $manager->createObjectContainer($object); } add_plugins_call($Model . $package, array('msProductData', 'msCustomerProfile')); print "\nDone\n"; /********************************************************/ function rrmdir($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != "." && $object != "..") { if (filetype($dir . "/" . $object) == "dir") { rrmdir($dir . "/" . $object); } else { unlink($dir . "/" . $object); } } }