/**
  * Get an xPDO connection to the database.
  *
  * @param int $mode
  * @return xPDO A copy of the xpdo object.
  */
 public function getConnection($mode = 0)
 {
     if ($this->settings && empty($mode)) {
         $mode = (int) $this->settings->get('installmode');
     }
     if (empty($mode)) {
         $mode = modInstall::MODE_NEW;
     }
     if ($mode === modInstall::MODE_UPGRADE_REVO) {
         $errors = array();
         $this->xpdo = $this->_modx($errors);
     } else {
         if (!is_object($this->xpdo)) {
             $options = array();
             if ($this->settings->get('new_folder_permissions')) {
                 $options['new_folder_permissions'] = $this->settings->get('new_folder_permissions');
             }
             if ($this->settings->get('new_file_permissions')) {
                 $options['new_file_permissions'] = $this->settings->get('new_file_permissions');
             }
             $this->xpdo = $this->_connect($this->settings->get('database_dsn'), $this->settings->get('database_user'), $this->settings->get('database_password'), $this->settings->get('table_prefix'), $options);
             if (!$this->xpdo instanceof xPDO) {
                 return $this->xpdo;
             }
             $this->xpdo->setOption('cache_path', MODX_CORE_PATH . 'cache/');
             if ($mode === modInstall::MODE_UPGRADE_REVO_ADVANCED) {
                 if ($this->xpdo->connect()) {
                     $errors = array();
                     $this->xpdo = $this->_modx($errors);
                 } else {
                     return $this->lexicon('db_err_connect_upgrade');
                 }
             }
         }
     }
     if (is_object($this->xpdo) && $this->xpdo instanceof xPDO) {
         $this->xpdo->setLogTarget(array('target' => 'FILE', 'options' => array('filename' => 'install.' . MODX_CONFIG_KEY . '.' . strftime('%Y-%m-%dT%H.%M.%S') . '.log')));
         $this->xpdo->setLogLevel(xPDO::LOG_LEVEL_ERROR);
         $this->xpdo->setPackage('modx', MODX_CORE_PATH . 'model/', $this->settings->get('table_prefix'));
     }
     return $this->xpdo;
 }
    @unlink($packageDirectory . 'core.transport.zip');
}
if (file_exists($packageDirectory . 'core') && is_dir($packageDirectory . 'core')) {
    $cacheManager->deleteTree($packageDirectory . 'core', array('deleteTop' => true, 'skipDirs' => false, 'extensions' => '*'));
}
if (!file_exists($packageDirectory . 'core') && !file_exists($packageDirectory . 'core.transport.zip')) {
    $xpdo->log(xPDO::LOG_LEVEL_INFO, 'Removed pre-existing core/ and core.transport.zip.');
    flush();
} else {
    $xpdo->log(xPDO::LOG_LEVEL_ERROR, 'Could not remove core/ and core.transport.zip before starting build.');
    flush();
}
/* create core transport package */
$package = new xPDOTransport($xpdo, 'core', $packageDirectory);
unset($packageDirectory);
$xpdo->setPackage('modx', MODX_CORE_PATH . 'model/');
$xpdo->loadClass('modAccess');
$xpdo->loadClass('modAccessibleObject');
$xpdo->loadClass('modAccessibleSimpleObject');
$xpdo->loadClass('modPrincipal');
$xpdo->log(xPDO::LOG_LEVEL_INFO, 'Core transport package created.');
flush();
/* core namespace */
$namespace = $xpdo->newObject('modNamespace');
$namespace->set('name', 'core');
$namespace->set('path', '{core_path}');
$namespace->set('assets_path', '{assets_path}');
$package->put($namespace, array(xPDOTransport::PRESERVE_KEYS => true, xPDOTransport::UPDATE_OBJECT => true));
unset($namespace);
$xpdo->log(xPDO::LOG_LEVEL_INFO, 'Core Namespace packaged.');
flush();
Exemple #3
0
            <p>The <code>%s</code> directory is not writable by PHP.</p>
            <p>Adjust the permissions and try again.</p>', $d));
        exit;
    }
}
if ($verbose) {
    print_msg(sprintf('<br/><strong>Ok:</strong> The necessary directories exist and have the correct permissions inside of <br/>
        <code>%s</code>', $package_dir));
}
// Delete/regenerate map files?
if (file_exists($xml_schema_file) && !$regenerate_schema && $verbose) {
    print_msg(sprintf('<br/><strong>Ok:</strong> Using existing XML schema file:<br/><code>%s</code>', $xml_schema_file));
}
$xpdo = new xPDO("mysql:host={$database_server};dbname={$dbase}", $database_user, $database_password, $table_prefix);
// Set the package name and root path of that package
$xpdo->setPackage($package_name, $package_dir, $package_dir);
$xpdo->setDebug($debug);
$manager = $xpdo->getManager();
$generator = $manager->getGenerator();
//Use this to create an XML schema from an existing database
if ($regenerate_schema) {
    $xml = $generator->writeSchema($xml_schema_file, $package_name, 'xPDOObject', $table_prefix, $restrict_prefix);
    if ($verbose) {
        print_msg(sprintf('<br/><strong>Ok:</strong> XML schema file generated: <code>%s</code>', $xml_schema_file));
    }
}
// Use this to generate classes and maps from your schema
if ($regenerate_classes) {
    print_msg('<br/>Attempting to remove/regenerate class files...');
    delete_class_files($class_dir);
    delete_class_files($mysql_class_dir);
<?php

if (!is_object($modx)) {
    die("You shouldn't be here!");
}
// Load configuration
require_once 'config.php';
$snippetUrl = $modx->config['base_url'] . 'assets/snippets/Gregorian/';
$snippetDir = $_SERVER['DOCUMENT_ROOT'] . $snippetUrl;
// Load xPDO
$xpdo = new xPDO(XPDO_DSN, XPDO_DB_USER, XPDO_DB_PASS, XPDO_TABLE_PREFIX, array(PDO_ATTR_ERRMODE => PDO_ERRMODE_WARNING, PDO_ATTR_PERSISTENT => false, PDO_MYSQL_ATTR_USE_BUFFERED_QUERY => true));
$xpdo->setPackage('Gregorian', $snippetDir . 'model/');
// $xpdo->setDebug();
// $xpdo->setLoglevel(XPDO_LOG_LEVEL_INFO);
$moduleUrl = "{$_SERVER['SCRIPT_NAME']}?a={$_REQUEST['a']}&id={$_REQUEST['id']}";
$output = '';
$output .= "<a href='{$moduleUrl}&action=createContent'>Create random content</a><br />";
$output .= "<a href='{$moduleUrl}&action=createTables'>Create database tables</a><br />";
if (array_key_exists('action', $_REQUEST)) {
    switch ($_REQUEST['action']) {
        case 'createContent':
            // Generate 10 random events in the future
            $calendar = $xpdo->getObject('Gregorian', 1);
            for ($i = 0; $i < 10; $i++) {
                $start = time() + rand(1, 10) * 3600 * 24;
                $fields = array('summary' => "Test event number {$i}", 'dtstart' => date('Y-m-d H:i', $start));
                if (rand(0, 10) > 5) {
                    $fields['dtend'] = date('Y-m-d H:i', $start + rand(1, 48) * 3600);
                }
                $fields['allday'] = rand(0, 10) > 5;
                if (rand(0, 10) > 5) {
<?php

$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;
$properties = array();
include_once dirname(dirname(dirname(__FILE__))) . '/xpdo/xpdo.class.php';
require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/config.core.php';
require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/_build/build.properties.php';
foreach (array('mysql', 'sqlsrv') as $driver) {
    $xpdo = new xPDO($properties["{$driver}_string_dsn_nodb"], $properties["{$driver}_string_username"], $properties["{$driver}_string_password"], $properties["{$driver}_array_options"], $properties["{$driver}_array_driverOptions"]);
    $xpdo->setPackage('modx', dirname(XPDO_CORE_PATH) . '/model/');
    $xpdo->setDebug(true);
    $manager = $xpdo->getManager();
    $generator = $manager->getGenerator();
    $generator->classTemplate = <<<EOD
<?php
/**
 * [+phpdoc-package+]
 * [+phpdoc-subpackage+]
 */
/**
 * [+phpdoc-package+]
 * [+phpdoc-subpackage+]
 */
class [+class+] extends [+extends+] {
}
EOD;
    $generator->platformTemplate = <<<EOD
<?php
Exemple #6
0
<?php

$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;
require_once 'build.config.php';
include_once '../../xpdo/xpdo.class.php';
//Set some valid connection properties here
$xpdo = new xPDO(XPDO_DSN, XPDO_DB_USER, XPDO_DB_PASS, XPDO_TABLE_PREFIX, array(PDO_ATTR_ERRMODE => PDO_ERRMODE_WARNING, PDO_ATTR_PERSISTENT => false, PDO_MYSQL_ATTR_USE_BUFFERED_QUERY => true));
$xpdo->setPackage('Gregorian', XPDO_CORE_PATH . '../model/');
$xpdo->setDebug(true);
$manager = $xpdo->getManager();
$generator = $manager->getGenerator();
//Use this to generate classes and maps from a schema
// NOTE: by default, only maps are overwritten; delete class files if you want to regenerate classes
$generator->classTemplate = <<<EOD
<?php
class [+class+] extends [+extends+] {
    function [+class+](& \$xpdo) {
        \$this->__construct(\$xpdo);
    }
    function __construct(& \$xpdo) {
        parent :: __construct(\$xpdo);
    }
}
?>
EOD;
$generator->platformTemplate = <<<EOD
<?php
require_once (dirname(dirname(__FILE__)) . '/[+class-lowercase+].class.php');
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307 USA
 */
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;
$properties = array();
include dirname(dirname(dirname(dirname(__FILE__)))) . '/xpdo/xpdo.class.php';
include dirname(dirname(dirname(dirname(__FILE__)))) . '/test/properties.inc.php';
$dbtypes = array('mysql', 'sqlite', 'sqlsrv');
foreach ($dbtypes as $dbtype) {
    $xpdo = new xPDO($properties["{$dbtype}_string_dsn_test"], $properties["{$dbtype}_string_username"], $properties["{$dbtype}_string_password"], $properties["{$dbtype}_array_driverOptions"]);
    $xpdo->setPackage('sample', $properties['xpdo_test_path'] . 'model/');
    $xpdo->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');
    $xpdo->setLogLevel(xPDO::LOG_LEVEL_INFO);
    //    $xpdo->setDebug(true);
    $xpdo->getManager();
    $xpdo->manager->getGenerator();
    //Use this to create a schema from an existing database
    #$xml= $xpdo->manager->generator->writeSchema(XPDO_CORE_PATH . '../model/schema/sample.' . $dbtype . '.schema.xml', 'sample', 'xPDOObject', '');
    //Use this to generate classes and maps from a schema
    // NOTE: by default, only maps are overwritten; delete class files if you want to regenerate classes
    $xpdo->manager->generator->parseSchema($properties['xpdo_test_path'] . 'model/schema/sample.' . $dbtype . '.schema.xml', $properties['xpdo_test_path'] . 'model/');
    $xpdo->manager->generator->parseSchema($properties['xpdo_test_path'] . 'model/schema/sample.sti.' . $dbtype . '.schema.xml', $properties['xpdo_test_path'] . 'model/');
    unset($xpdo);
}
$mtime = microtime();
$mtime = explode(" ", $mtime);
 * data migration.
 *
 * @todo some manual intervention is needed to set up the table relationships we need
 *
 * Thanks to Jason Coward for posting how do set up a schema from a database:
 * http://modxcms.com/forums/index.php/topic,16562.0.html
 */
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;
//Customize this line based on the location of your script
include_once '../../../xpdo/xpdo.class.php';
$xpdo = new xPDO('mysql:host=localhost;dbname=wordpress_devtrench', 'root', '', 'wp_');
// Set the package name and root path of that package
$xpdo->setPackage('wordpress', XPDO_CORE_PATH . '../model/');
$xpdo->setDebug(true);
$manager = $xpdo->getManager();
$generator = $manager->getGenerator();
//Use this to create a schema from an existing database
//$xml= $generator->writeSchema(XPDO_CORE_PATH . '../model/schema/wordpress.mysql.schema.xml', 'wordpress', 'xPDOObject', 'wp_');
//Use this to generate classes and maps from your schema
// NOTE: by default, only maps are overwritten; delete class files if you want to regenerate classes
$generator->parseSchema(XPDO_CORE_PATH . '../model/wordpress/schema/wordpress.mysql.schema.xml', XPDO_CORE_PATH . '../model/');
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$tend = $mtime;
$totalTime = $tend - $tstart;
$totalTime = sprintf("%2.4f s", $totalTime);
echo "\nExecution time: {$totalTime}\n";
Exemple #9
0
<?php

$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$tstart = $mtime;
require_once 'build.config.php';
include_once '../../xpdo/xpdo.class.php';
//Set some valid connection properties here
$xpdo = new xPDO(XPDO_DSN, XPDO_DB_USER, XPDO_DB_PASS, XPDO_TABLE_PREFIX, array(PDO_ATTR_ERRMODE => PDO_ERRMODE_WARNING, PDO_ATTR_PERSISTENT => false, PDO_MYSQL_ATTR_USE_BUFFERED_QUERY => true));
$xpdo->setPackage('Gregorian', dirname(dirname(__FILE__)) . '/');
$xpdo->setDebug(true);
$manager = $xpdo->getManager();
$classes = array('Gregorian', 'GregorianEvent', 'GregorianTag', 'GregorianEventTag');
foreach ($classes as $class) {
    $manager->createObjectContainer($class);
}
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$tend = $mtime;
$totalTime = $tend - $tstart;
$totalTime = sprintf("%2.4f s", $totalTime);
echo "\nExecution time: {$totalTime}\n";
exit;