2024.8.23
Loading...
Searching...
No Matches
BinPostgresql Class Reference
+ Inheritance diagram for BinPostgresql:
+ Collaboration 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 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()

BinPostgresql::__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()

BinPostgresql::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()

BinPostgresql::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 326 of file class.bin.postgresql.php.

327 {
328 global $bearsamppWinbinder;
329 $error = null;
330
331 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
332 $dbLink = pg_connect( 'host=127.0.0.1 port=' . $this->port . ' user=' . $this->rootUser . ' password=' . $currentPwd );
333
334 if ( !$dbLink ) {
335 $error = pg_last_error( $dbLink );
336 }
337
338 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
339 $pgr = pg_query_params( $dbLink, 'SELECT quote_ident($1)', array(pg_escape_string( $this->rootUser )) );
340 list( $quoted_user ) = pg_fetch_array( $pgr );
341 $password = pg_escape_string( $newPwd );
342 $result = pg_query( $dbLink, "ALTER USER $quoted_user WITH PASSWORD '$password'" );
343 if ( empty( $error ) && !$result ) {
344 $error = pg_last_error( $dbLink );
345 }
346
347 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
348 if ( $dbLink ) {
349 pg_close( $dbLink );
350 }
351
352 if ( !empty( $error ) ) {
353 return $error;
354 }
355
356 // bearsampp.conf
357 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
358 $this->setRootPwd( $newPwd );
359
360 // conf
361 $this->update();
362 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
363
364 return true;
365 }
$result

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

◆ checkPort()

BinPostgresql::checkPort ( $port,
$showWindow = false )

Checks if the specified port is used by PostgreSQL.

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

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

247 {
248 global $bearsamppLang, $bearsamppWinbinder;
249 $boxTitle = sprintf( $bearsamppLang->getValue( Lang::CHECK_PORT_TITLE ), $this->getName(), $port );
250
251 if ( !Util::isValidPort( $port ) ) {
252 Util::logError( $this->getName() . ' port not valid: ' . $port );
253
254 return false;
255 }
256
257 $fp = @fsockopen( '127.0.0.1', $port, $errno, $errstr, 5 );
258 if ( $fp ) {
259 $dbLink = pg_connect( 'host=127.0.0.1 port=' . $port . ' user=' . $this->rootUser . ' password=' . $this->rootPwd );
260
261 $isPostgresql = false;
262 $version = false;
263
264 if ( $dbLink ) {
265 $result = pg_version( $dbLink );
266 pg_close( $dbLink );
267 if ( $result ) {
268 if ( isset( $result['server'] ) && $result['server'] == $this->getVersion() ) {
269 $version = $result['server'];
270 $isPostgresql = true;
271 }
272 if ( !$isPostgresql ) {
273 Util::logDebug( $this->getName() . ' port used by another DBMS: ' . $port );
274 if ( $showWindow ) {
275 $bearsamppWinbinder->messageBoxWarning(
277 $boxTitle
278 );
279 }
280 }
281 else {
282 Util::logDebug( $this->getName() . ' port ' . $port . ' is used by: ' . $this->getName() . ' ' . $version );
283 if ( $showWindow ) {
284 $bearsamppWinbinder->messageBoxInfo(
285 sprintf( $bearsamppLang->getValue( Lang::PORT_USED_BY ), $port, $this->getName() . ' ' . $version ),
286 $boxTitle
287 );
288 }
289
290 return true;
291 }
292 }
293 }
294 else {
295 Util::logDebug( $this->getName() . ' port ' . $port . ' is used by another application' );
296 if ( $showWindow ) {
297 $bearsamppWinbinder->messageBoxWarning(
298 sprintf( $bearsamppLang->getValue( Lang::PORT_NOT_USED_BY ), $port ),
299 $boxTitle
300 );
301 }
302 }
303 }
304 else {
305 Util::logDebug( $this->getName() . ' port ' . $port . ' is not used' );
306 if ( $showWindow ) {
307 $bearsamppWinbinder->messageBoxError(
308 sprintf( $bearsamppLang->getValue( Lang::PORT_NOT_USED ), $port ),
309 $boxTitle
310 );
311 }
312 }
313
314 return false;
315 }
global $bearsamppLang
const PORT_NOT_USED_BY
const PORT_USED_BY_ANOTHER_DBMS
const CHECK_PORT_TITLE
const PORT_USED_BY
const PORT_NOT_USED

References $bearsamppLang, $port, $result, Module\$version, Lang\CHECK_PORT_TITLE, Module\getName(), Module\getVersion(), Util\isValidPort(), Util\logDebug(), Util\logError(), Lang\PORT_NOT_USED, Lang\PORT_NOT_USED_BY, Lang\PORT_USED_BY, and Lang\PORT_USED_BY_ANOTHER_DBMS.

◆ checkRootPassword()

BinPostgresql::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 375 of file class.bin.postgresql.php.

376 {
377 global $bearsamppWinbinder;
378 $currentPwd = $currentPwd == null ? $this->rootPwd : $currentPwd;
379 $error = null;
380
381 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
382 $dbLink = pg_connect( 'host=127.0.0.1 port=' . $this->port . ' user=' . $this->rootUser . ' password=' . $currentPwd );
383 if ( !$dbLink ) {
384 $error = pg_last_error( $dbLink );
385 }
386
387 $bearsamppWinbinder->incrProgressBar( $wbProgressBar );
388 if ( $dbLink ) {
389 pg_close( $dbLink );
390 }
391
392 if ( !empty( $error ) ) {
393 return $error;
394 }
395
396 return true;
397 }

◆ getCliExe()

BinPostgresql::getCliExe ( )

Gets the path to the PostgreSQL command line interface executable.

Returns
string The path to the CLI executable.

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

620 {
621 return $this->cliExe;
622 }

References $cliExe.

Referenced by getCmdLineOutput().

+ Here is the caller graph for this function:

◆ getCmdLineOutput()

BinPostgresql::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 522 of file class.bin.postgresql.php.

523 {
524 $result = null;
525
526 $bin = $this->getCliExe();
527 if ( file_exists( $bin ) ) {
528 $tmpResult = Batch::exec( 'postgresqlGetCmdLineOutput', '"' . $bin . '" ' . $cmd );
529 if ( $tmpResult !== false && is_array( $tmpResult ) ) {
530 $result = trim( str_replace( $bin, '', implode( PHP_EOL, $tmpResult ) ) );
531 }
532 }
533
534 return $result;
535 }
static exec($basename, $content, $timeout=true, $catchOutput=true, $standalone=false, $silent=true, $rebuild=true)

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

◆ getConf()

BinPostgresql::getConf ( )

Gets the path to the PostgreSQL configuration file.

Returns
string The path to the configuration file.

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

650 {
651 return $this->conf;
652 }

References $conf.

Referenced by updateConfig().

+ Here is the caller graph for this function:

◆ getCtlExe()

BinPostgresql::getCtlExe ( )

Gets the path to the PostgreSQL control executable.

Returns
string The path to the control executable.

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

610 {
611 return $this->ctlExe;
612 }

References $ctlExe.

◆ getDumpAllExe()

BinPostgresql::getDumpAllExe ( )

Gets the path to the PostgreSQL dump all executable.

Returns
string The path to the dump all executable.

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

640 {
641 return $this->dumpAllExe;
642 }

References $dumpAllExe.

◆ getDumpExe()

BinPostgresql::getDumpExe ( )

Gets the path to the PostgreSQL dump executable.

Returns
string The path to the dump executable.

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

630 {
631 return $this->dumpExe;
632 }

References $dumpExe.

◆ getErrorLog()

BinPostgresql::getErrorLog ( )

Gets the path to the PostgreSQL error log file.

Returns
string The path to the error log file.

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

600 {
601 return $this->errorLog;
602 }

References $errorLog.

◆ getHbaConf()

BinPostgresql::getHbaConf ( )

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

Returns
string The path to the HBA configuration file.

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

660 {
661 return $this->hbaConf;
662 }

References $hbaConf.

◆ getPort()

BinPostgresql::getPort ( )

Gets the port number used by PostgreSQL.

Returns
int The port number.

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

670 {
671 return $this->port;
672 }

References $port.

◆ getRootPwd()

BinPostgresql::getRootPwd ( )

Gets the root password for PostgreSQL.

Returns
string The root password.

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

710 {
711 return $this->rootPwd;
712 }

References $rootPwd.

◆ getRootUser()

BinPostgresql::getRootUser ( )

Gets the root user for PostgreSQL.

Returns
string The root user.

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

690 {
691 return $this->rootUser;
692 }

References $rootUser.

◆ getService()

BinPostgresql::getService ( )

Gets the service object for PostgreSQL.

Returns
Win32Service The service object.

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

556 {
557 return $this->service;
558 }

References $service.

◆ initData()

BinPostgresql::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 491 of file class.bin.postgresql.php.

492 {
493 $path = $path != null ? $path : $this->getCurrentPath();
494
495 if ( file_exists( $path . '/data' ) ) {
496 return;
497 }
498
500 }
static initializePostgresql($path)

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

Referenced by updateConfig().

+ Here is the caller graph for this function:

◆ rebuildConf()

BinPostgresql::rebuildConf ( )

Rebuilds the PostgreSQL configuration files by updating the port number.

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

506 {
507 Util::replaceInFile( $this->conf, array(
508 '/^port(.*?)=(.*?)(\d+)/' => 'port = ' . $this->port
509 ) );
510 Util::replaceInFile( $this->altConf, array(
511 '/^port(.*?)=(.*?)(\d+)/' => 'port = ' . $this->port
512 ) );
513 }
static replaceInFile($path, $replaceList)

References Util\replaceInFile().

◆ reload()

BinPostgresql::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_FILE_NOT_FOUND
const ERROR_INVALID_PARAMETER
const ERROR_CONF_NOT_FOUND
const ERROR_EXE_NOT_FOUND
const POSTGRESQL
static logReloadClass($classInstance)
static logInfo($data, $file=null)
global $bearsamppConfig
Definition homepage.php:26
const APP_TITLE
Definition root.php:12

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(), LOCAL_CFG_ALT_CONF, LOCAL_CFG_ALT_HBA_CONF, LOCAL_CFG_CLI_EXE, LOCAL_CFG_CONF, LOCAL_CFG_CTL_EXE, LOCAL_CFG_DUMP_ALL_EXE, LOCAL_CFG_DUMP_EXE, LOCAL_CFG_HBA_CONF, LOCAL_CFG_PORT, LOCAL_CFG_ROOT_PWD, LOCAL_CFG_ROOT_USER, Util\logError(), Util\logInfo(), Util\logReloadClass(), Lang\POSTGRESQL, Win32Service\SERVER_ERROR_NORMAL, and Win32Service\SERVICE_DEMAND_START.

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

+ Here is the caller graph for this function:

◆ replaceAll()

BinPostgresql::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 ) {
184 $this->port = $value;
185 break;
187 $this->rootUser = $value;
188 break;
190 $this->rootPwd = $value;
191 break;
192 }
193 }
194
195 file_put_contents( $this->bearsamppConf, $content );
196 }

References LOCAL_CFG_PORT, LOCAL_CFG_ROOT_PWD, and LOCAL_CFG_ROOT_USER.

◆ setEnable()

BinPostgresql::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 566 of file class.bin.postgresql.php.

567 {
568 global $bearsamppConfig, $bearsamppLang, $bearsamppWinbinder;
569
570 if ( $enabled == Config::ENABLED && !is_dir( $this->currentPath ) ) {
571 Util::logDebug( $this->getName() . ' cannot be enabled because bundle ' . $this->getVersion() . ' does not exist in ' . $this->currentPath );
572 if ( $showWindow ) {
573 $bearsamppWinbinder->messageBoxError(
574 sprintf( $bearsamppLang->getValue( Lang::ENABLE_BUNDLE_NOT_EXIST ), $this->getName(), $this->getVersion(), $this->currentPath ),
575 sprintf( $bearsamppLang->getValue( Lang::ENABLE_TITLE ), $this->getName() )
576 );
577 }
578 $enabled = Config::DISABLED;
579 }
580
581 Util::logInfo( $this->getName() . ' switched to ' . ($enabled == Config::ENABLED ? 'enabled' : 'disabled') );
582 $this->enable = $enabled == Config::ENABLED;
583 $bearsamppConfig->replace( self::ROOT_CFG_ENABLE, $enabled );
584
585 $this->reload();
586 if ( $this->enable ) {
587 Util::installService( $this, $this->port, null, $showWindow );
588 }
589 else {
590 Util::removeService( $this->service, $this->name );
591 }
592 }
const DISABLED
const ENABLED
const ENABLE_TITLE
const ENABLE_BUNDLE_NOT_EXIST
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()

BinPostgresql::setPort ( $port)

Sets the port number used by PostgreSQL.

Parameters
int$portThe port number to set.

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

680 {
681 $this->replace( self::LOCAL_CFG_PORT, $port );
682 }
replace($key, $value)

References $port, and Module\replace().

Referenced by changePort().

+ Here is the caller graph for this function:

◆ setRootPwd()

BinPostgresql::setRootPwd ( $rootPwd)

Sets the root password for PostgreSQL.

Parameters
string$rootPwdThe root password to set.

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

720 {
721 $this->replace( self::LOCAL_CFG_ROOT_PWD, $rootPwd );
722 }

References $rootPwd, and Module\replace().

Referenced by changeRootPassword().

+ Here is the caller graph for this function:

◆ setRootUser()

BinPostgresql::setRootUser ( $rootUser)

Sets the root user for PostgreSQL.

Parameters
string$rootUserThe root user to set.

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

700 {
701 $this->replace( self::LOCAL_CFG_ROOT_USER, $rootUser );
702 }

References $rootUser, and Module\replace().

◆ setVersion()

BinPostgresql::setVersion ( $version)

Sets the version of PostgreSQL and reloads the configuration.

Parameters
string$versionThe version to set.

Reimplemented from Module.

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

543 {
544 global $bearsamppConfig;
545 $this->version = $version;
546 $bearsamppConfig->replace( self::ROOT_CFG_VERSION, $version );
547 $this->reload();
548 }

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

Referenced by updateConfig().

+ Here is the caller graph for this function:

◆ switchVersion()

BinPostgresql::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 407 of file class.bin.postgresql.php.

408 {
409 Util::logDebug( 'Switch ' . $this->name . ' version to ' . $version );
410
411 return $this->updateConfig( $version, 0, $showWindow );
412 }
updateConfig($version=null, $sub=0, $showWindow=false)

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

◆ updateConfig()

BinPostgresql::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 423 of file class.bin.postgresql.php.

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

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().

+ Here is the caller graph for this function:

Field Documentation

◆ $altConf

BinPostgresql::$altConf
private

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

Referenced by reload().

◆ $altHbaConf

BinPostgresql::$altHbaConf
private

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

Referenced by reload().

◆ $cliExe

BinPostgresql::$cliExe
private

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

Referenced by getCliExe().

◆ $conf

BinPostgresql::$conf
private

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

Referenced by getConf(), and updateConfig().

◆ $ctlExe

BinPostgresql::$ctlExe
private

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

Referenced by getCtlExe().

◆ $dumpAllExe

BinPostgresql::$dumpAllExe
private

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

Referenced by getDumpAllExe().

◆ $dumpExe

BinPostgresql::$dumpExe
private

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

Referenced by getDumpExe().

◆ $errorLog

BinPostgresql::$errorLog
private

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

Referenced by getErrorLog().

◆ $hbaConf

BinPostgresql::$hbaConf
private

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

Referenced by getHbaConf().

◆ $port

BinPostgresql::$port
private

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

Referenced by changePort(), checkPort(), getPort(), and setPort().

◆ $rootPwd

BinPostgresql::$rootPwd
private

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

Referenced by getRootPwd(), and setRootPwd().

◆ $rootUser

BinPostgresql::$rootUser
private

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

Referenced by getRootUser(), and setRootUser().

◆ $service

BinPostgresql::$service
private

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

Referenced by getService().

◆ CMD_VERSION

const BinPostgresql::CMD_VERSION = '--version'

◆ LOCAL_CFG_ALT_CONF

const BinPostgresql::LOCAL_CFG_ALT_CONF = 'postgresqlAltConf'

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

Referenced by reload().

◆ LOCAL_CFG_ALT_HBA_CONF

const BinPostgresql::LOCAL_CFG_ALT_HBA_CONF = 'postgresqlAltUserConf'

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

Referenced by reload().

◆ LOCAL_CFG_CLI_EXE

const BinPostgresql::LOCAL_CFG_CLI_EXE = 'postgresqlCliExe'

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

Referenced by reload().

◆ LOCAL_CFG_CONF

const BinPostgresql::LOCAL_CFG_CONF = 'postgresqlConf'

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

Referenced by reload().

◆ LOCAL_CFG_CTL_EXE

const BinPostgresql::LOCAL_CFG_CTL_EXE = 'postgresqlCtlExe'

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

Referenced by reload().

◆ LOCAL_CFG_DUMP_ALL_EXE

const BinPostgresql::LOCAL_CFG_DUMP_ALL_EXE = 'postgresqlDumpAllExe'

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

Referenced by reload().

◆ LOCAL_CFG_DUMP_EXE

const BinPostgresql::LOCAL_CFG_DUMP_EXE = 'postgresqlDumpExe'

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

Referenced by reload().

◆ LOCAL_CFG_HBA_CONF

const BinPostgresql::LOCAL_CFG_HBA_CONF = 'postgresqlUserConf'

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

Referenced by reload().

◆ LOCAL_CFG_PORT

const BinPostgresql::LOCAL_CFG_PORT = 'postgresqlPort'

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

Referenced by reload(), and replaceAll().

◆ LOCAL_CFG_ROOT_PWD

const BinPostgresql::LOCAL_CFG_ROOT_PWD = 'postgresqlRootPwd'

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

Referenced by reload(), and replaceAll().

◆ LOCAL_CFG_ROOT_USER

const BinPostgresql::LOCAL_CFG_ROOT_USER = 'postgresqlRootUser'

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

Referenced by reload(), and replaceAll().

◆ ROOT_CFG_ENABLE

const BinPostgresql::ROOT_CFG_ENABLE = 'postgresqlEnable'

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

◆ ROOT_CFG_VERSION

const BinPostgresql::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: