tbrehm
2013-02-12 72695f0356210b5ca68d33d09e91c00ed9d6c2b6
server/lib/classes/modules.inc.php
@@ -83,11 +83,11 @@
      global $app,$conf;
      
      //* If its a multiserver setup
      if($app->db->dbHost != $app->dbmaster->dbHost) {
      if($app->db->dbHost != $app->dbmaster->dbHost || ($app->db->dbHost == $app->dbmaster->dbHost && $app->db->dbName != $app->dbmaster->dbName)) {
         if($conf['mirror_server_id'] > 0) {
            $sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = ".$conf['mirror_server_id']." OR server_id = 0) ORDER BY datalog_id";
            $sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = ".$conf['mirror_server_id']." OR server_id = 0) ORDER BY datalog_id LIMIT 0,1000";
         } else {
            $sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = 0) ORDER BY datalog_id";
            $sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = 0) ORDER BY datalog_id LIMIT 0,1000";
         }
         
         $records = $app->dbmaster->queryAllRecords($sql);
@@ -108,6 +108,7 @@
            */
            
            $replication_error = false;
            $data['mirrored'] = false;
            
            $this->current_datalog_id = $d['datalog_id'];
            
@@ -115,9 +116,16 @@
            * If we are in a mirror setup, rewrite the server_id of records that originally 
            * belonged to the mirrored server to the local server_id
            */
            if($conf['mirror_server_id'] > 0 && $d['dbtable'] != 'server') {
               if(isset($data['new']['server_id']) && $data['new']['server_id'] == $conf['mirror_server_id']) $data['new']['server_id'] = $conf['server_id'];
               if(isset($data['old']['server_id']) && $data['old']['server_id'] == $conf['mirror_server_id']) $data['old']['server_id'] = $conf['server_id'];
               if(isset($data['new']['server_id']) && $data['new']['server_id'] == $conf['mirror_server_id']) {
                  $data['new']['server_id'] = $conf['server_id'];
                  $data['mirrored'] = true;
               }
               if(isset($data['old']['server_id']) && $data['old']['server_id'] == $conf['mirror_server_id']) {
                  $data['old']['server_id'] = $conf['server_id'];
                  $data['mirrored'] = true;
               }
            }
            
            if(count($data['new']) > 0) {
@@ -175,13 +183,11 @@
            
               if($replication_error == false) {
                  if(is_array($data['old']) || is_array($data['new'])) {
                     $app->db->query("UPDATE server SET updated = ".$d["datalog_id"]." WHERE server_id = ".$conf['server_id']);
                     $this->raiseTableHook($d['dbtable'],$d['action'],$data);
                  } else {
                     $app->log('Data array was empty for datalog_id '.$d['datalog_id'],LOGLEVEL_WARN);
                  }
                  //$this->raiseTableHook($d["dbtable"],$d["action"],$data);
                  //$app->dbmaster->query("DELETE FROM sys_datalog WHERE datalog_id = ".$d["datalog_id"]);
                  //$app->log("Deleting sys_datalog ID ".$d["datalog_id"],LOGLEVEL_DEBUG);
                  $app->dbmaster->query("UPDATE server SET updated = ".$d["datalog_id"]." WHERE server_id = ".$conf['server_id']);
                  $app->log('Processed datalog_id '.$d['datalog_id'],LOGLEVEL_DEBUG);
               } else {
@@ -199,7 +205,7 @@
         
      //* if we have a single server setup
      } else {
         $sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = 0) ORDER BY datalog_id";
         $sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = 0) ORDER BY datalog_id LIMIT 0,1000";
         $records = $app->db->queryAllRecords($sql);
         foreach($records as $d) {
            
@@ -217,6 +223,9 @@
            }
            */
            
            //* Data on a single server is never mirrored
            $data['mirrored'] = false;
            $this->current_datalog_id = $d['datalog_id'];
            if(is_array($data['old']) || is_array($data['new'])) {
               $this->raiseTableHook($d['dbtable'],$d['action'],$data);