/usr/share/phpmyadmin/libraries/classes
Edit: /usr/share/phpmyadmin/libraries/classes/ReplicationInfo.php (4943B)
dbi = $dbi;
}
public function load(?string $connection = null): void
{
global $url_params;
$this->setPrimaryStatus();
if (! empty($connection)) {
$this->setMultiPrimaryStatus();
if ($this->multiPrimaryStatus) {
$this->setDefaultPrimaryConnection($connection);
$url_params['master_connection'] = $connection;
}
}
$this->setReplicaStatus();
$this->setPrimaryInfo();
$this->setReplicaInfo();
}
private function setPrimaryStatus(): void
{
$this->primaryStatus = $this->dbi->fetchResult('SHOW MASTER STATUS');
}
/**
* @return array
*/
public function getPrimaryStatus()
{
return $this->primaryStatus;
}
private function setReplicaStatus(): void
{
$this->replicaStatus = $this->dbi->fetchResult('SHOW SLAVE STATUS');
}
/**
* @return array
*/
public function getReplicaStatus()
{
return $this->replicaStatus;
}
private function setMultiPrimaryStatus(): void
{
$this->multiPrimaryStatus = $this->dbi->fetchResult('SHOW ALL SLAVES STATUS');
}
private function setDefaultPrimaryConnection(string $connection): void
{
$this->dbi->query(sprintf('SET @@default_master_connection = \'%s\'', $this->dbi->escapeString($connection)));
}
private static function fill(array $status, string $key): array
{
if (empty($status[0][$key])) {
return [];
}
return explode(',', $status[0][$key]);
}
private function setPrimaryInfo(): void
{
$this->primaryInfo = ['status' => false];
if (count($this->primaryStatus) > 0) {
$this->primaryInfo['status'] = true;
}
if (! $this->primaryInfo['status']) {
return;
}
$this->primaryInfo['Do_DB'] = self::fill($this->primaryStatus, 'Binlog_Do_DB');
$this->primaryInfo['Ignore_DB'] = self::fill($this->primaryStatus, 'Binlog_Ignore_DB');
}
/**
* @return array
*/
public function getPrimaryInfo(): array
{
return $this->primaryInfo;
}
private function setReplicaInfo(): void
{
$this->replicaInfo = ['status' => false];
if (count($this->replicaStatus) > 0) {
$this->replicaInfo['status'] = true;
}
if (! $this->replicaInfo['status']) {
return;
}
$this->replicaInfo['Do_DB'] = self::fill($this->replicaStatus, 'Replicate_Do_DB');
$this->replicaInfo['Ignore_DB'] = self::fill($this->replicaStatus, 'Replicate_Ignore_DB');
$this->replicaInfo['Do_Table'] = self::fill($this->replicaStatus, 'Replicate_Do_Table');
$this->replicaInfo['Ignore_Table'] = self::fill($this->replicaStatus, 'Replicate_Ignore_Table');
$this->replicaInfo['Wild_Do_Table'] = self::fill($this->replicaStatus, 'Replicate_Wild_Do_Table');
$this->replicaInfo['Wild_Ignore_Table'] = self::fill($this->replicaStatus, 'Replicate_Wild_Ignore_Table');
}
/**
* @return array
*/
public function getReplicaInfo(): array
{
return $this->replicaInfo;
}
}