Ejemplo n.º 1
0
 /**
  * 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;
 }