예제 #1
0
 /**
  * Construct
  *
  * @param Registry $registry
  * @param Request $request
  * @param int $language_id Default language id
  */
 public function __construct(Registry $registry, Request $request, $language_id)
 {
     $_translation = array();
     $this->_db = $registry->get('db');
     try {
         $statement = $this->_db->query('SELECT * FROM `language`');
     } catch (PDOException $e) {
         if ($this->_db->inTransaction()) {
             $this->_db->rollBack();
         }
         trigger_error($e->getMessage());
     }
     if ($statement->rowCount()) {
         foreach ($statement->fetchAll() as $language) {
             // Add languages registry
             $this->_languages[$language->language_id] = array('language_id' => $language->language_id, 'language_code' => $language->code, 'language_locale' => $language->locale, 'language_name' => $language->name);
             // Set default language
             if ($language->language_id == $language_id) {
                 $this->_language_id = $language->language_id;
                 $this->_language_code = $language->code;
                 $this->_language_locale = $language->locale;
                 $this->_language_name = $language->name;
             }
             // Get active language
             if (isset($request->get['language_id'])) {
                 $_language_id = (int) $request->get['language_id'];
             } else {
                 if (isset($request->cookie['language_id'])) {
                     $_language_id = (int) $request->cookie['language_id'];
                 } else {
                     $_language_id = (int) DEFAULT_LANGUAGE_ID;
                 }
             }
             // Set current language
             $language_file = DIR_BASE . 'language' . DIR_SEPARATOR . $language->code . '.php';
             if ($_language_id == $language->language_id && file_exists($language_file) && is_readable($language_file)) {
                 $this->_language_id = $language->language_id;
                 $this->_language_code = $language->code;
                 $this->_language_locale = $language->locale;
                 $this->_language_name = $language->name;
                 // Load language package if exist
                 require_once $language_file;
                 $this->_translation = $_translation;
             }
         }
     }
 }
예제 #2
0
 /**
  * Construct
  *
  * @param registry $registry
  * @param int $language_id Current language id
  */
 public function __construct(Registry $registry, $language_id)
 {
     $this->_db = $registry->get('db');
     try {
         $statement = $this->_db->prepare('SELECT * FROM `language`');
         $statement->execute();
     } catch (PDOException $e) {
         if ($this->_db->inTransaction()) {
             $this->_db->rollBack();
         }
         trigger_error($e->getMessage());
     }
     if ($statement->rowCount()) {
         foreach ($statement->fetchAll() as $language) {
             $this->_languages[$language->language_id] = array('language_id' => $language->language_id, 'language_code' => $language->code, 'language_locale' => $language->locale, 'language_name' => $language->name);
             if ($language->language_id == $language_id) {
                 $this->_language_id = $language->language_id;
                 $this->_language_code = $language->code;
                 $this->_language_locale = $language->locale;
                 $this->_language_name = $language->name;
             }
         }
     }
 }
 /**
  * 完成事务,根据查询是否出错决定是提交事务还是回滚事务
  *
  * 如果 $commitOnNoErrors 参数为 true,当事务中所有查询都成功完成时,则提交事务,否则回滚事务
  * 如果 $commitOnNoErrors 参数为 false,则强制回滚事务
  *
  * @param  $commitOnNoErrors 指示在没有错误时是否提交事务
  */
 function completeTrans($commitOnNoErrors = true)
 {
     if ($this->_transCount < 1) {
         return;
     }
     if ($this->_transCount > 1) {
         $this->_transCount -= 1;
         return;
     }
     $this->_transCount = 0;
     if ($this->_transCommit && $commitOnNoErrors) {
         $this->conn->commit();
     } else {
         $this->conn->rollBack();
     }
 }
예제 #4
0
 protected function createDatabaseTables()
 {
     $queries = array();
     switch ($this->database_driver) {
         case self::SI_DRIVER_SQLITE3:
             $queries[] = "CREATE TABLE \"{$this->database_table}\" (\n                                id VARCHAR(40),\n                                namespace VARCHAR(32) NOT NULL,\n                                code VARCHAR(32) NOT NULL,\n                                code_display VARCHAR(32) NOT NULL,\n                                created INTEGER NOT NULL,\n                                PRIMARY KEY(id, namespace)\n                              )";
             $queries[] = "CREATE INDEX ndx_created ON {$this->database_table} (created)";
             break;
         case self::SI_DRIVER_MYSQL:
             $queries[] = "CREATE TABLE `{$this->database_table}` (\n                                `id` VARCHAR(40) NOT NULL,\n                                `namespace` VARCHAR(32) NOT NULL,\n                                `code` VARCHAR(32) NOT NULL,\n                                `code_display` VARCHAR(32) NOT NULL,\n                                `created` INT NOT NULL,\n                                PRIMARY KEY(id, namespace),\n                                INDEX(created)\n                              )";
             break;
         case self::SI_DRIVER_PGSQL:
             $queries[] = "CREATE TABLE {$this->database_table} (\n                                id character varying(40) NOT NULL,\n                                namespace character varying(32) NOT NULL,\n                                code character varying(32) NOT NULL,\n                                code_display character varying(32) NOT NULL,\n                                created integer NOT NULL,\n                                CONSTRAINT pkey_id_namespace PRIMARY KEY (id, namespace)\n                              )";
             $queries[] = "CREATE INDEX ndx_created ON {$this->database_table} (created);";
             break;
     }
     $this->pdo_conn->beginTransaction();
     foreach ($queries as $query) {
         $result = $this->pdo_conn->query($query);
         if (!$result) {
             $err = $this->pdo_conn->errorInfo();
             trigger_error("Failed to create table.  {$err[1]}: {$err[2]}", E_USER_WARNING);
             $this->pdo_conn->rollBack();
             $this->pdo_conn = false;
             return false;
         }
     }
     $this->pdo_conn->commit();
     return true;
 }
예제 #5
0
 /**
  * Rolls back a transaction
  *
  * @return bool
  */
 public function rollBack()
 {
     return $this->_conn->rollBack();
 }
예제 #6
0
 /**
  * Roll-back a transaction.
  */
 protected function _rollBack()
 {
     $this->_connect();
     $this->connection->rollBack();
 }