Пример #1
0
 /**
  * Initialize the DAO object.
  *
  * @param string $dsn
  *   The database connection string.
  */
 public static function init($dsn)
 {
     Civi::$statics[__CLASS__]['init'] = 1;
     $options =& PEAR::getStaticProperty('DB_DataObject', 'options');
     $options['database'] = $dsn;
     if (defined('CIVICRM_DAO_DEBUG')) {
         self::DebugLevel(CIVICRM_DAO_DEBUG);
     }
     CRM_Core_DAO::setFactory(new CRM_Contact_DAO_Factory());
     if (CRM_Utils_Constant::value('CIVICRM_MYSQL_STRICT', CRM_Utils_System::isDevelopment())) {
         CRM_Core_DAO::executeQuery('SET SESSION sql_mode = STRICT_TRANS_TABLES');
     }
     CRM_Core_DAO::executeQuery('SET NAMES utf8');
     CRM_Core_DAO::executeQuery('SET @uniqueID = %1', array(1 => array(CRM_Utils_Request::id(), 'String')));
 }
Пример #2
0
 /**
  * @return NULL|string
  */
 public function getFile()
 {
     if ($this->file === NULL) {
         $prefix = 'trigger' . \CRM_Utils_Request::id();
         $config = \CRM_Core_Config::singleton();
         $this->file = "{$config->configAndLogDir}CiviCRM." . $prefix . md5($config->dsn) . '.sql';
     }
     return $this->file;
 }
Пример #3
0
 /**
  * @param string|NULL $dsn
  *   Use NULL to load the default/active connection from CRM_Core_DAO.
  *   Otherwise, give a full DSN string.
  * @param string $fileName
  * @param null $prefix
  * @param bool $isQueryString
  * @param bool $dieOnErrors
  */
 public static function sourceSQLFile($dsn, $fileName, $prefix = NULL, $isQueryString = FALSE, $dieOnErrors = TRUE)
 {
     if ($dsn === NULL) {
         $db = CRM_Core_DAO::getConnection();
     } else {
         require_once 'DB.php';
         $db = DB::connect($dsn);
     }
     if (PEAR::isError($db)) {
         die("Cannot open {$dsn}: " . $db->getMessage());
     }
     if (CRM_Utils_Constant::value('CIVICRM_MYSQL_STRICT', CRM_Utils_System::isDevelopment())) {
         $db->query('SET SESSION sql_mode = STRICT_TRANS_TABLES');
     }
     $db->query('SET NAMES utf8');
     $transactionId = CRM_Utils_Type::escape(CRM_Utils_Request::id(), 'String');
     $db->query('SET @uniqueID = ' . "'{$transactionId}'");
     if (!$isQueryString) {
         $string = $prefix . file_get_contents($fileName);
     } else {
         // use filename as query string
         $string = $prefix . $fileName;
     }
     // get rid of comments starting with # and --
     $string = preg_replace("/^#[^\n]*\$/m", "\n", $string);
     $string = preg_replace("/^(--[^-]).*/m", "\n", $string);
     $queries = preg_split('/;\\s*$/m', $string);
     foreach ($queries as $query) {
         $query = trim($query);
         if (!empty($query)) {
             CRM_Core_Error::debug_query($query);
             $res =& $db->query($query);
             if (PEAR::isError($res)) {
                 if ($dieOnErrors) {
                     die("Cannot execute {$query}: " . $res->getMessage());
                 } else {
                     echo "Cannot execute {$query}: " . $res->getMessage() . "<p>";
                 }
             }
         }
     }
 }