Bearsampp 2025.8.29
Loading...
Searching...
No Matches
BinPostgresql Class Reference
Inheritance diagram for BinPostgresql:

Public Member Functions

 __construct ($id, $type)
 changePort ($port, $checkUsed=false, $wbProgressBar=null)
 changeRootPassword ($currentPwd, $newPwd, $wbProgressBar=null)
 checkPort ($port, $showWindow=false)
 checkRootPassword ($currentPwd=null, $wbProgressBar=null)
 getCliExe ()
 getCmdLineOutput ($cmd)
 getConf ()
 getCtlExe ()
 getDumpAllExe ()
 getDumpExe ()
 getErrorLog ()
 getHbaConf ()
 getPort ()
 getRootPwd ()
 getRootUser ()
 getService ()
 initData ($path=null)
 rebuildConf ()
 reload ($id=null, $type=null)
 setEnable ($enabled, $showWindow=false)
 setPort ($port)
 setRootPwd ($rootPwd)
 setRootUser ($rootUser)
 setVersion ($version)
 switchVersion ($version, $showWindow=false)
Public Member Functions inherited from Module
 __toString ()
 getCurrentPath ()
 getId ()
 getName ()
 getRelease ()
 getRootPath ()
 getSymlinkPath ()
 getType ()
 getVersion ()
 getVersionList ()
 isEnable ()
 update ($sub=0, $showWindow=false)

Data Fields

const CMD_VERSION = '--version'
const LOCAL_CFG_ALT_CONF = 'postgresqlAltConf'
const LOCAL_CFG_ALT_HBA_CONF = 'postgresqlAltUserConf'
const LOCAL_CFG_CLI_EXE = 'postgresqlCliExe'
const LOCAL_CFG_CONF = 'postgresqlConf'
const LOCAL_CFG_CTL_EXE = 'postgresqlCtlExe'
const LOCAL_CFG_DUMP_ALL_EXE = 'postgresqlDumpAllExe'
const LOCAL_CFG_DUMP_EXE = 'postgresqlDumpExe'
const LOCAL_CFG_HBA_CONF = 'postgresqlUserConf'
const LOCAL_CFG_PORT = 'postgresqlPort'
const LOCAL_CFG_ROOT_PWD = 'postgresqlRootPwd'
const LOCAL_CFG_ROOT_USER = 'postgresqlRootUser'
const ROOT_CFG_ENABLE = 'postgresqlEnable'
const ROOT_CFG_VERSION = 'postgresqlVersion'
const SERVICE_NAME = 'bearsampppostgresql'
Data Fields inherited from Module
const BUNDLE_RELEASE = 'bundleRelease'

Protected Member Functions

 replaceAll ($params)
 updateConfig ($version=null, $sub=0, $showWindow=false)
Protected Member Functions inherited from Module
 __construct ()
 replace ($key, $value)

Private Member Functions

 handleNonPostgresUsage ($port, $showWindow, $boxTitle)

Private Attributes

 $altConf
 $altHbaConf
 $cliExe
 $conf
 $ctlExe
 $dumpAllExe
 $dumpExe
 $errorLog
 $hbaConf
 $port
 $rootPwd
 $rootUser
 $service

Additional Inherited Members

Protected Attributes inherited from Module
 $bearsamppConf
 $bearsamppConfRaw
 $currentPath
 $enable
 $name
 $release = 'N/A'
 $rootPath
 $symlinkPath
 $version

Detailed Description

Class BinPostgresql

This class represents the PostgreSQL module in the Bearsampp application. It handles the configuration, management, and operations related to PostgreSQL.

Definition at line 16 of file class.bin.postgresql.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( $id,
$type )

Constructor for the BinPostgresql class.

Parameters
string$idThe ID of the module.
string$typeThe type of the module.

Definition at line 57 of file class.bin.postgresql.php.

58 {
59 Util::logInitClass( $this );
60 $this->reload( $id, $type );
61 }
reload($id=null, $type=null)
static logInitClass($classInstance)

References Module\$id, Module\$type, Util\logInitClass(), and reload().

Member Function Documentation

◆ changePort()

changePort ( $port,
$checkUsed = false,
$wbProgressBar = null )

Changes the port used by PostgreSQL.

Parameters
int$portThe new port number.
bool$checkUsedWhether to check if the port is already in use.
mixed$wbProgressBarThe progress bar object for UI updates.
Returns
bool|string True if the port was changed successfully, or the process using the port if it is in use.

Definition at line 207 of file class.bin.postgresql.php.

208 {
209 global $bearsamppWinbinder;
210
211 if ( !Util::isValidPort( $port ) ) {
212 Util::logError( $this->getName() . ' port not valid: ' . $port );
213
214 return false;
215 }
216
217 $port = intval( $port );
218 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
219
220 $isPortInUse = Util::isPortInUse( $port );
221 if ( !$checkUsed || $isPortInUse === false ) {
222 // bearsampp.conf
223 $this->setPort( $port );
224 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
225
226 // conf
227 $this->update();
228 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
229
230 return true;
231 }
232
233 Util::logDebug( $this->getName() . ' port in used: ' . $port . ' - ' . $isPortInUse );
234
235 return $isPortInUse;
236 }
update($sub=0, $showWindow=false)
static logError($data, $file=null)
static isValidPort($port)
static logDebug($data, $file=null)
static isPortInUse($port)

References $port, Module\getName(), Util\isPortInUse(), Util\isValidPort(), Util\logDebug(), Util\logError(), setPort(), and Module\update().

◆ changeRootPassword()

changeRootPassword ( $currentPwd,
$newPwd,
$wbProgressBar = null )

Changes the root password for PostgreSQL.

Parameters
string$currentPwdThe current root password.
string$newPwdThe new root password.
mixed$wbProgressBarThe progress bar object for UI updates.
Returns
bool|string True if the password was changed successfully, or an error message if it failed.

Definition at line 315 of file class.bin.postgresql.php.

316 {
317 global $bearsamppWinbinder;
318 $error = null;
319
320 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
321 $dbLink = pg_connect( 'host=127.0.0.1 port=' . $this->port . ' user=' . $this->rootUser . ' password=' . $currentPwd );
322
323 if ( !$dbLink ) {
324 $error = pg_last_error( $dbLink );
325 }
326
327 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
328 $pgr = pg_query_params( $dbLink, 'SELECT quote_ident($1)', array(pg_escape_string( $this->rootUser )) );
329 list( $quoted_user ) = pg_fetch_array( $pgr );
330 $password = pg_escape_string( $newPwd );
331 $result = pg_query( $dbLink, "ALTER USER $quoted_user WITH PASSWORD '$password'" );
332 if ( empty( $error ) && !$result ) {
333 $error = pg_last_error( $dbLink );
334 }
335
336 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
337 if ( $dbLink ) {
338 pg_close( $dbLink );
339 }
340
341 if ( !empty( $error ) ) {
342 return $error;
343 }
344
345 // bearsampp.conf
346 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
347 $this->setRootPwd( $newPwd );
348
349 // conf
350 $this->update();
351 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
352
353 return true;
354 }
$result

References $result, setRootPwd(), and Module\update().

◆ checkPort()

checkPort ( $port,
$showWindow = false )

Checks if the specified port is being used by PostgreSQL

Parameters
int$portThe port number to check
bool$showWindowWhether to show a message box with the result
Returns
bool True if port is used by PostgreSQL, false otherwise

Definition at line 244 of file class.bin.postgresql.php.

245 {
246 global $bearsamppLang, $bearsamppWinbinder;
247 $boxTitle = sprintf($bearsamppLang->getValue(Lang::CHECK_PORT_TITLE), $this->getName(), $port);
248
249 if (!Util::isValidPort($port)) {
250 Util::logError($this->getName() . ' port not valid: ' . $port);
251 return false;
252 }
253
254 $dbLink = @pg_connect("host=127.0.0.1 port=$port user={$this->rootUser} password={$this->rootPwd}");
255 if (!$dbLink) {
256 Util::logDebug($this->getName() . ' connection failed: ' . pg_last_error());
257 return $this->handleNonPostgresUsage($port, $showWindow, $boxTitle);
258 }
259
260 // Verify active PostgreSQL connection
261 $connectionStatus = pg_connection_status($dbLink);
262 $isPostgres = $connectionStatus === PGSQL_CONNECTION_OK;
263 pg_close($dbLink);
264
265 if ($isPostgres) {
266 Util::logDebug($this->getName() . " port $port is used by PostgreSQL");
267 if ($showWindow) {
268 $bearsamppWinbinder->messageBoxInfo(
269 sprintf($bearsamppLang->getValue(Lang::PORT_USED_BY), $port, 'PostgreSQL'),
270 $boxTitle
271 );
272 }
273 return true;
274 }
275
276 return $this->handleNonPostgresUsage($port, $showWindow, $boxTitle);
277 }
global $bearsamppLang
handleNonPostgresUsage($port, $showWindow, $boxTitle)
const CHECK_PORT_TITLE
const PORT_USED_BY

References $bearsamppLang, $port, Lang\CHECK_PORT_TITLE, Module\getName(), handleNonPostgresUsage(), Util\isValidPort(), Util\logDebug(), Util\logError(), and Lang\PORT_USED_BY.

◆ checkRootPassword()

checkRootPassword ( $currentPwd = null,
$wbProgressBar = null )

Checks if the provided root password is correct.

Parameters
string | null$currentPwdThe current root password. If null, the stored root password is used.
mixed$wbProgressBarThe progress bar object for UI updates.
Returns
bool|string True if the password is correct, or an error message if it is incorrect.

Definition at line 364 of file class.bin.postgresql.php.

365 {
366 global $bearsamppWinbinder;
367 $currentPwd = $currentPwd == null ? $this->rootPwd : $currentPwd;
368 $error = null;
369
370 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
371 $dbLink = pg_connect( 'host=127.0.0.1 port=' . $this->port . ' user=' . $this->rootUser . ' password=' . $currentPwd );
372 if ( !$dbLink ) {
373 $error = pg_last_error( $dbLink );
374 }
375
376 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
377 if ( $dbLink ) {
378 pg_close( $dbLink );
379 }
380
381 if ( !empty( $error ) ) {
382 return $error;
383 }
384
385 return true;
386 }

◆ getCliExe()

getCliExe ( )

Gets the path to the PostgreSQL command line interface executable.

Returns
string The path to the CLI executable.

Definition at line 605 of file class.bin.postgresql.php.

606 {
607 return $this->cliExe;
608 }

References $cliExe.

Referenced by getCmdLineOutput().

◆ getCmdLineOutput()

getCmdLineOutput ( $cmd)

Executes a PostgreSQL command line instruction and returns the output.

Parameters
string$cmdThe command to execute.
Returns
string|null The output of the command, or null if the command failed.

Definition at line 508 of file class.bin.postgresql.php.

509 {
510 $result = null;
511
512 $bin = $this->getCliExe();
513 if ( file_exists( $bin ) ) {
514 $tmpResult = Batch::exec( 'postgresqlGetCmdLineOutput', '"' . $bin . '" ' . $cmd );
515 if ( $tmpResult !== false && is_array( $tmpResult ) ) {
516 $result = trim( str_replace( $bin, '', implode( PHP_EOL, $tmpResult ) ) );
517 }
518 }
519
520 return $result;
521 }
static exec($basename, $content, $timeout=true, $catchOutput=true, $standalone=false, $silent=true, $rebuild=true)

References $result, Batch\exec(), and getCliExe().

◆ getConf()

getConf ( )

Gets the path to the PostgreSQL configuration file.

Returns
string The path to the configuration file.

Definition at line 635 of file class.bin.postgresql.php.

636 {
637 return $this->conf;
638 }

References $conf.

Referenced by updateConfig().

◆ getCtlExe()

getCtlExe ( )

Gets the path to the PostgreSQL control executable.

Returns
string The path to the control executable.

Definition at line 595 of file class.bin.postgresql.php.

596 {
597 return $this->ctlExe;
598 }

References $ctlExe.

◆ getDumpAllExe()

getDumpAllExe ( )

Gets the path to the PostgreSQL dump all executable.

Returns
string The path to the dump all executable.

Definition at line 625 of file class.bin.postgresql.php.

626 {
627 return $this->dumpAllExe;
628 }

References $dumpAllExe.

◆ getDumpExe()

getDumpExe ( )

Gets the path to the PostgreSQL dump executable.

Returns
string The path to the dump executable.

Definition at line 615 of file class.bin.postgresql.php.

616 {
617 return $this->dumpExe;
618 }

References $dumpExe.

◆ getErrorLog()

getErrorLog ( )

Gets the path to the PostgreSQL error log file.

Returns
string The path to the error log file.

Definition at line 585 of file class.bin.postgresql.php.

586 {
587 return $this->errorLog;
588 }

References $errorLog.

◆ getHbaConf()

getHbaConf ( )

Gets the path to the PostgreSQL host-based authentication configuration file.

Returns
string The path to the HBA configuration file.

Definition at line 645 of file class.bin.postgresql.php.

646 {
647 return $this->hbaConf;
648 }

References $hbaConf.

◆ getPort()

getPort ( )

Gets the port number used by PostgreSQL.

Returns
int The port number.

Definition at line 655 of file class.bin.postgresql.php.

656 {
657 return $this->port;
658 }

References $port.

◆ getRootPwd()

getRootPwd ( )

Gets the root password for PostgreSQL.

Returns
string The root password.

Definition at line 695 of file class.bin.postgresql.php.

696 {
697 return $this->rootPwd;
698 }

References $rootPwd.

◆ getRootUser()

getRootUser ( )

Gets the root user for PostgreSQL.

Returns
string The root user.

Definition at line 675 of file class.bin.postgresql.php.

676 {
677 return $this->rootUser;
678 }

References $rootUser.

◆ getService()

getService ( )

Gets the service object for PostgreSQL.

Returns
Win32Service The service object.

Definition at line 541 of file class.bin.postgresql.php.

542 {
543 return $this->service;
544 }

References $service.

◆ handleNonPostgresUsage()

handleNonPostgresUsage ( $port,
$showWindow,
$boxTitle )
private

Handles non-PostgreSQL port usage scenarios

Definition at line 282 of file class.bin.postgresql.php.

283 {
284 global $bearsamppLang, $bearsamppWinbinder;
285
287 Util::logDebug($this->getName() . " port $port used by non-PostgreSQL service");
288 if ($showWindow) {
289 $bearsamppWinbinder->messageBoxWarning(
291 $boxTitle
292 );
293 }
294 return false;
295 }
296
297 Util::logDebug($this->getName() . " port $port not in use");
298 if ($showWindow) {
299 $bearsamppWinbinder->messageBoxError(
300 sprintf($bearsamppLang->getValue(Lang::PORT_NOT_USED), $port),
301 $boxTitle
302 );
303 }
304 return false;
305 }
const PORT_NOT_USED
const PORT_USED_BY_ANOTHER_DBMS

References $bearsamppLang, $port, Module\getName(), Util\isPortInUse(), Util\logDebug(), Lang\PORT_NOT_USED, and Lang\PORT_USED_BY_ANOTHER_DBMS.

Referenced by checkPort().

◆ initData()

initData ( $path = null)

Initializes the data directory for PostgreSQL if it does not already exist.

Parameters
string | null$pathThe path to the PostgreSQL data directory. If null, the current path is used.

Definition at line 477 of file class.bin.postgresql.php.

478 {
479 $path = $path != null ? $path : $this->getCurrentPath();
480
481 if ( file_exists( $path . '/data' ) ) {
482 return;
483 }
484
486 }
static initializePostgresql($path)

References Module\getCurrentPath(), and Batch\initializePostgresql().

Referenced by updateConfig().

◆ rebuildConf()

rebuildConf ( )

Rebuilds the PostgreSQL configuration files by updating the port number.

Definition at line 491 of file class.bin.postgresql.php.

492 {
493 Util::replaceInFile( $this->conf, array(
494 '/^port(.*?)=(.*?)(\d+)/' => 'port = ' . $this->port
495 ) );
496 Util::replaceInFile( $this->altConf, array(
497 '/^port(.*?)=(.*?)(\d+)/' => 'port = ' . $this->port
498 ) );
499 }
static replaceInFile($path, $replaceList)

References Util\replaceInFile().

◆ reload()

reload ( $id = null,
$type = null )

Reloads the module configuration based on the provided ID and type.

Parameters
string | null$idThe ID of the module. If null, the current ID is used.
string | null$typeThe type of the module. If null, the current type is used.

Reimplemented from Module.

Definition at line 69 of file class.bin.postgresql.php.

70 {
72 Util::logReloadClass( $this );
73
74 $this->name = $bearsamppLang->getValue( Lang::POSTGRESQL );
75 $this->version = $bearsamppConfig->getRaw( self::ROOT_CFG_VERSION );
76 parent::reload( $id, $type );
77
78 $this->enable = $this->enable && $bearsamppConfig->getRaw( self::ROOT_CFG_ENABLE );
79 $this->service = new Win32Service( self::SERVICE_NAME );
80 $this->errorLog = $bearsamppRoot->getLogsPath() . '/postgresql.log';
81
82 if ( $this->bearsamppConfRaw !== false ) {
83 $this->ctlExe = $this->symlinkPath . '/' . $this->bearsamppConfRaw[self::LOCAL_CFG_CTL_EXE];
84 $this->cliExe = $this->symlinkPath . '/' . $this->bearsamppConfRaw[self::LOCAL_CFG_CLI_EXE];
85 $this->dumpExe = $this->symlinkPath . '/' . $this->bearsamppConfRaw[self::LOCAL_CFG_DUMP_EXE];
86 $this->dumpAllExe = $this->symlinkPath . '/' . $this->bearsamppConfRaw[self::LOCAL_CFG_DUMP_ALL_EXE];
87 $this->conf = $this->symlinkPath . '/' . $this->bearsamppConfRaw[self::LOCAL_CFG_CONF];
88 $this->hbaConf = $this->symlinkPath . '/' . $this->bearsamppConfRaw[self::LOCAL_CFG_HBA_CONF];
89 $this->altConf = $this->symlinkPath . '/' . $this->bearsamppConfRaw[self::LOCAL_CFG_ALT_CONF];
90 $this->altHbaConf = $this->symlinkPath . '/' . $this->bearsamppConfRaw[self::LOCAL_CFG_ALT_HBA_CONF];
91 $this->port = $this->bearsamppConfRaw[self::LOCAL_CFG_PORT];
92 $this->rootUser = isset( $this->bearsamppConfRaw[self::LOCAL_CFG_ROOT_USER] ) ? $this->bearsamppConfRaw[self::LOCAL_CFG_ROOT_USER] : 'postgres';
93 $this->rootPwd = isset( $this->bearsamppConfRaw[self::LOCAL_CFG_ROOT_PWD] ) ? $this->bearsamppConfRaw[self::LOCAL_CFG_ROOT_PWD] : '';
94 }
95
96 if ( !$this->enable ) {
97 Util::logInfo( $this->name . ' is not enabled!' );
98
99 return;
100 }
101 if ( !is_dir( $this->currentPath ) ) {
102 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_FILE_NOT_FOUND ), $this->name . ' ' . $this->version, $this->currentPath ) );
103
104 return;
105 }
106 if ( !is_dir( $this->symlinkPath ) ) {
107 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_FILE_NOT_FOUND ), $this->name . ' ' . $this->version, $this->symlinkPath ) );
108
109 return;
110 }
111 if ( !is_file( $this->bearsamppConf ) ) {
112 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_CONF_NOT_FOUND ), $this->name . ' ' . $this->version, $this->bearsamppConf ) );
113
114 return;
115 }
116 if ( !file_exists( $this->conf ) ) {
117 $this->conf = $this->altConf;
118 }
119 if ( !file_exists( $this->hbaConf ) ) {
120 $this->hbaConf = $this->altHbaConf;
121 }
122
123 if ( !is_file( $this->ctlExe ) ) {
124 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_EXE_NOT_FOUND ), $this->name . ' ' . $this->version, $this->ctlExe ) );
125
126 return;
127 }
128 if ( !is_file( $this->cliExe ) ) {
129 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_EXE_NOT_FOUND ), $this->name . ' ' . $this->version, $this->cliExe ) );
130
131 return;
132 }
133 if ( !is_file( $this->dumpExe ) ) {
134 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_EXE_NOT_FOUND ), $this->name . ' ' . $this->version, $this->dumpExe ) );
135
136 return;
137 }
138 if ( !is_file( $this->dumpAllExe ) ) {
139 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_EXE_NOT_FOUND ), $this->name . ' ' . $this->version, $this->dumpAllExe ) );
140
141 return;
142 }
143 if ( !is_file( $this->conf ) ) {
144 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_CONF_NOT_FOUND ), $this->name . ' ' . $this->version, $this->conf ) );
145
146 return;
147 }
148 if ( !is_file( $this->hbaConf ) ) {
149 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_CONF_NOT_FOUND ), $this->name . ' ' . $this->version, $this->hbaConf ) );
150
151 return;
152 }
153 if ( !is_numeric( $this->port ) || $this->port <= 0 ) {
154 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_INVALID_PARAMETER ), self::LOCAL_CFG_PORT, $this->port ) );
155
156 return;
157 }
158 if ( empty( $this->rootUser ) ) {
159 Util::logError( sprintf( $bearsamppLang->getValue( Lang::ERROR_INVALID_PARAMETER ), self::LOCAL_CFG_ROOT_USER, $this->rootUser ) );
160
161 return;
162 }
163
164 $this->service->setDisplayName( APP_TITLE . ' ' . $this->getName() );
165 $this->service->setBinPath( $this->ctlExe );
166 $this->service->setStartType( Win32Service::SERVICE_DEMAND_START );
167 $this->service->setErrorControl( Win32Service::SERVER_ERROR_NORMAL );
168 }
global $bearsamppRoot
const ERROR_EXE_NOT_FOUND
const ERROR_CONF_NOT_FOUND
const POSTGRESQL
const ERROR_INVALID_PARAMETER
const ERROR_FILE_NOT_FOUND
static logInfo($data, $file=null)
static logReloadClass($classInstance)
global $bearsamppConfig
Definition homepage.php:27
const APP_TITLE
Definition root.php:13

References $altConf, $altHbaConf, $bearsamppConfig, $bearsamppLang, $bearsamppRoot, Module\$id, Module\$type, APP_TITLE, Lang\ERROR_CONF_NOT_FOUND, Lang\ERROR_EXE_NOT_FOUND, Lang\ERROR_FILE_NOT_FOUND, Lang\ERROR_INVALID_PARAMETER, Module\getName(), Util\logError(), Util\logInfo(), Util\logReloadClass(), Lang\POSTGRESQL, Win32Service\SERVER_ERROR_NORMAL, and Win32Service\SERVICE_DEMAND_START.

Referenced by __construct(), setEnable(), and setVersion().

◆ replaceAll()

replaceAll ( $params)
protected

Replaces multiple key-value pairs in the configuration file.

Parameters
array$paramsAn associative array of key-value pairs to replace.

Reimplemented from Module.

Definition at line 175 of file class.bin.postgresql.php.

176 {
177 $content = file_get_contents( $this->bearsamppConf );
178
179 foreach ( $params as $key => $value ) {
180 $content = preg_replace( '|' . $key . ' = .*|', $key . ' = ' . '"' . $value . '"', $content );
181 $this->bearsamppConfRaw[$key] = $value;
182 switch ( $key ) {
183 case self::LOCAL_CFG_PORT:
184 $this->port = $value;
185 break;
186 case self::LOCAL_CFG_ROOT_USER:
187 $this->rootUser = $value;
188 break;
189 case self::LOCAL_CFG_ROOT_PWD:
190 $this->rootPwd = $value;
191 break;
192 }
193 }
194
195 file_put_contents( $this->bearsamppConf, $content );
196 }

◆ setEnable()

setEnable ( $enabled,
$showWindow = false )

Enables or disables the PostgreSQL module.

Parameters
bool$enabledWhether to enable or disable the module.
bool$showWindowWhether to show a message box with the result.

Definition at line 552 of file class.bin.postgresql.php.

553 {
554 global $bearsamppConfig, $bearsamppLang, $bearsamppWinbinder;
555
556 if ( $enabled == Config::ENABLED && !is_dir( $this->currentPath ) ) {
557 Util::logDebug( $this->getName() . ' cannot be enabled because bundle ' . $this->getVersion() . ' does not exist in ' . $this->currentPath );
558 if ( $showWindow ) {
559 $bearsamppWinbinder->messageBoxError(
560 sprintf( $bearsamppLang->getValue( Lang::ENABLE_BUNDLE_NOT_EXIST ), $this->getName(), $this->getVersion(), $this->currentPath ),
561 sprintf( $bearsamppLang->getValue( Lang::ENABLE_TITLE ), $this->getName() )
562 );
563 }
564 $enabled = Config::DISABLED;
565 }
566
567 Util::logInfo( $this->getName() . ' switched to ' . ($enabled == Config::ENABLED ? 'enabled' : 'disabled') );
568 $this->enable = $enabled == Config::ENABLED;
569 $bearsamppConfig->replace( self::ROOT_CFG_ENABLE, $enabled );
570
571 $this->reload();
572 if ( $this->enable ) {
573 Util::installService( $this, $this->port, null, $showWindow );
574 }
575 else {
576 Util::removeService( $this->service, $this->name );
577 }
578 }
const DISABLED
const ENABLED
const ENABLE_BUNDLE_NOT_EXIST
const ENABLE_TITLE
static installService($bin, $port, $syntaxCheckCmd, $showWindow=false)
static removeService($service, $name)

References $bearsamppConfig, $bearsamppLang, Config\DISABLED, Lang\ENABLE_BUNDLE_NOT_EXIST, Lang\ENABLE_TITLE, Config\ENABLED, Module\getName(), Module\getVersion(), Util\installService(), Util\logDebug(), Util\logInfo(), reload(), and Util\removeService().

◆ setPort()

setPort ( $port)

Sets the port number used by PostgreSQL.

Parameters
int$portThe port number to set.

Definition at line 665 of file class.bin.postgresql.php.

666 {
667 $this->replace( self::LOCAL_CFG_PORT, $port );
668 }
replace($key, $value)

References $port, and Module\replace().

Referenced by changePort().

◆ setRootPwd()

setRootPwd ( $rootPwd)

Sets the root password for PostgreSQL.

Parameters
string$rootPwdThe root password to set.

Definition at line 705 of file class.bin.postgresql.php.

706 {
707 $this->replace( self::LOCAL_CFG_ROOT_PWD, $rootPwd );
708 }

References $rootPwd, and Module\replace().

Referenced by changeRootPassword().

◆ setRootUser()

setRootUser ( $rootUser)

Sets the root user for PostgreSQL.

Parameters
string$rootUserThe root user to set.

Definition at line 685 of file class.bin.postgresql.php.

686 {
687 $this->replace( self::LOCAL_CFG_ROOT_USER, $rootUser );
688 }

References $rootUser, and Module\replace().

◆ setVersion()

setVersion ( $version)

Sets the version of PostgreSQL and reloads the configuration.

Parameters
string$versionThe version to set.

Reimplemented from Module.

Definition at line 528 of file class.bin.postgresql.php.

529 {
530 global $bearsamppConfig;
531 $this->version = $version;
532 $bearsamppConfig->replace( self::ROOT_CFG_VERSION, $version );
533 $this->reload();
534 }

References $bearsamppConfig, Module\$version, and reload().

Referenced by updateConfig().

◆ switchVersion()

switchVersion ( $version,
$showWindow = false )

Switches the PostgreSQL version.

Parameters
string$versionThe version to switch to.
bool$showWindowWhether to show a message box with the result.
Returns
bool True if the version was switched successfully, false otherwise.

Definition at line 396 of file class.bin.postgresql.php.

397 {
398 Util::logDebug( 'Switch ' . $this->name . ' version to ' . $version );
399
400 return $this->updateConfig( $version, 0, $showWindow );
401 }
updateConfig($version=null, $sub=0, $showWindow=false)

References Module\$version, Util\logDebug(), and updateConfig().

◆ updateConfig()

updateConfig ( $version = null,
$sub = 0,
$showWindow = false )
protected

Updates the PostgreSQL configuration.

Parameters
string | null$versionThe version to update to. If null, the current version is used.
int$subThe sub-level for logging indentation.
bool$showWindowWhether to show a window during the update process.
Returns
bool True if the configuration was updated successfully, false otherwise.

Reimplemented from Module.

Definition at line 412 of file class.bin.postgresql.php.

413 {
414 global $bearsamppLang, $bearsamppApps, $bearsamppWinbinder;
415
416 if ( !$this->enable ) {
417 return true;
418 }
419
420 $version = $version == null ? $this->version : $version;
421 Util::logDebug( ($sub > 0 ? str_repeat( ' ', 2 * $sub ) : '') . 'Update ' . $this->name . ' ' . $version . ' config' );
422
423 $boxTitle = sprintf( $bearsamppLang->getValue( Lang::SWITCH_VERSION_TITLE ), $this->getName(), $version );
424
425 $currentPath = str_replace( 'postgresql' . $this->getVersion(), 'postgresql' . $version, $this->getCurrentPath() );
426 $conf = str_replace( 'postgresql' . $this->getVersion(), 'postgresql' . $version, $this->getConf() );
427 $bearsamppConf = str_replace( 'postgresql' . $this->getVersion(), 'postgresql' . $version, $this->bearsamppConf );
428
429 if ( $this->version != $version ) {
430 $this->initData( $currentPath );
431 }
432
433 if ( !file_exists( $conf ) || !file_exists( $bearsamppConf ) ) {
434 Util::logError( 'bearsampp config files not found for ' . $this->getName() . ' ' . $version );
435 if ( $showWindow ) {
436 $bearsamppWinbinder->messageBoxError(
437 sprintf( $bearsamppLang->getValue( Lang::BEARSAMPP_CONF_NOT_FOUND_ERROR ), $this->getName() . ' ' . $version ),
438 $boxTitle
439 );
440 }
441
442 return false;
443 }
444
445 $bearsamppConfRaw = parse_ini_file( $bearsamppConf );
446 if ( $bearsamppConfRaw === false || !isset( $bearsamppConfRaw[self::ROOT_CFG_VERSION] ) || $bearsamppConfRaw[self::ROOT_CFG_VERSION] != $version ) {
447 Util::logError( 'bearsampp config file malformed for ' . $this->getName() . ' ' . $version );
448 if ( $showWindow ) {
449 $bearsamppWinbinder->messageBoxError(
450 sprintf( $bearsamppLang->getValue( Lang::BEARSAMPP_CONF_MALFORMED_ERROR ), $this->getName() . ' ' . $version ),
451 $boxTitle
452 );
453 }
454
455 return false;
456 }
457
458 // bearsampp.conf
459 $this->setVersion( $version );
460
461 // conf
462 Util::replaceInFile( $this->getConf(), array(
463 '/^port(.*?)=(.*?)(\d+)/' => 'port = ' . $this->port
464 ) );
465
466 // phppgadmin
467 $bearsamppApps->getPhppgadmin()->update( $sub + 1 );
468
469 return true;
470 }
const BEARSAMPP_CONF_MALFORMED_ERROR
const BEARSAMPP_CONF_NOT_FOUND_ERROR
const SWITCH_VERSION_TITLE

References Module\$bearsamppConf, Module\$bearsamppConfRaw, $bearsamppLang, $conf, Module\$currentPath, Module\$version, Lang\BEARSAMPP_CONF_MALFORMED_ERROR, Lang\BEARSAMPP_CONF_NOT_FOUND_ERROR, getConf(), Module\getCurrentPath(), Module\getName(), Module\getVersion(), initData(), Util\logDebug(), Util\logError(), Util\replaceInFile(), setVersion(), and Lang\SWITCH_VERSION_TITLE.

Referenced by switchVersion().

Field Documentation

◆ $altConf

$altConf
private

Definition at line 45 of file class.bin.postgresql.php.

Referenced by reload().

◆ $altHbaConf

$altHbaConf
private

Definition at line 46 of file class.bin.postgresql.php.

Referenced by reload().

◆ $cliExe

$cliExe
private

Definition at line 40 of file class.bin.postgresql.php.

Referenced by getCliExe().

◆ $conf

$conf
private

Definition at line 43 of file class.bin.postgresql.php.

Referenced by getConf(), and updateConfig().

◆ $ctlExe

$ctlExe
private

Definition at line 39 of file class.bin.postgresql.php.

Referenced by getCtlExe().

◆ $dumpAllExe

$dumpAllExe
private

Definition at line 42 of file class.bin.postgresql.php.

Referenced by getDumpAllExe().

◆ $dumpExe

$dumpExe
private

Definition at line 41 of file class.bin.postgresql.php.

Referenced by getDumpExe().

◆ $errorLog

$errorLog
private

Definition at line 38 of file class.bin.postgresql.php.

Referenced by getErrorLog().

◆ $hbaConf

$hbaConf
private

Definition at line 44 of file class.bin.postgresql.php.

Referenced by getHbaConf().

◆ $port

$port
private

◆ $rootPwd

$rootPwd
private

Definition at line 49 of file class.bin.postgresql.php.

Referenced by getRootPwd(), and setRootPwd().

◆ $rootUser

$rootUser
private

Definition at line 48 of file class.bin.postgresql.php.

Referenced by getRootUser(), and setRootUser().

◆ $service

$service
private

Definition at line 37 of file class.bin.postgresql.php.

Referenced by getService().

◆ CMD_VERSION

const CMD_VERSION = '--version'

◆ LOCAL_CFG_ALT_CONF

const LOCAL_CFG_ALT_CONF = 'postgresqlAltConf'

Definition at line 29 of file class.bin.postgresql.php.

◆ LOCAL_CFG_ALT_HBA_CONF

const LOCAL_CFG_ALT_HBA_CONF = 'postgresqlAltUserConf'

Definition at line 30 of file class.bin.postgresql.php.

◆ LOCAL_CFG_CLI_EXE

const LOCAL_CFG_CLI_EXE = 'postgresqlCliExe'

Definition at line 24 of file class.bin.postgresql.php.

◆ LOCAL_CFG_CONF

const LOCAL_CFG_CONF = 'postgresqlConf'

Definition at line 27 of file class.bin.postgresql.php.

◆ LOCAL_CFG_CTL_EXE

const LOCAL_CFG_CTL_EXE = 'postgresqlCtlExe'

Definition at line 23 of file class.bin.postgresql.php.

◆ LOCAL_CFG_DUMP_ALL_EXE

const LOCAL_CFG_DUMP_ALL_EXE = 'postgresqlDumpAllExe'

Definition at line 26 of file class.bin.postgresql.php.

◆ LOCAL_CFG_DUMP_EXE

const LOCAL_CFG_DUMP_EXE = 'postgresqlDumpExe'

Definition at line 25 of file class.bin.postgresql.php.

◆ LOCAL_CFG_HBA_CONF

const LOCAL_CFG_HBA_CONF = 'postgresqlUserConf'

Definition at line 28 of file class.bin.postgresql.php.

◆ LOCAL_CFG_PORT

const LOCAL_CFG_PORT = 'postgresqlPort'

Definition at line 31 of file class.bin.postgresql.php.

◆ LOCAL_CFG_ROOT_PWD

const LOCAL_CFG_ROOT_PWD = 'postgresqlRootPwd'

Definition at line 33 of file class.bin.postgresql.php.

◆ LOCAL_CFG_ROOT_USER

const LOCAL_CFG_ROOT_USER = 'postgresqlRootUser'

Definition at line 32 of file class.bin.postgresql.php.

◆ ROOT_CFG_ENABLE

const ROOT_CFG_ENABLE = 'postgresqlEnable'

Definition at line 20 of file class.bin.postgresql.php.

◆ ROOT_CFG_VERSION

const ROOT_CFG_VERSION = 'postgresqlVersion'

Definition at line 21 of file class.bin.postgresql.php.

◆ SERVICE_NAME


The documentation for this class was generated from the following file: