194 final function connect(array &$settings = []): void
196 if (!defined(
"DB_USER"))
198 $ini_file_name = LEPTON_PATH.
"/config/lepton.ini.php";
200 if (
true === file_exists($ini_file_name))
202 $config = parse_ini_string(
";" . file_get_contents($ini_file_name),
true);
205 if (!isset($settings[
'host']))
207 $settings[
'host'] = $config[
'database'][
'host'];
210 if (!isset($settings[
'user']))
212 $settings[
'user'] = $config[
'database'][
'user'];
215 if (!isset($settings[
'pass']))
217 $settings[
'pass'] = $config[
'database'][
'pass'];
220 if (!isset($settings[
'name']))
222 $settings[
'name'] = $config[
'database'][
'name'];
225 if (!isset($settings[
'port']))
227 $settings[
'port'] = $config[
'database'][
'port'];
230 if ((isset($config[
'database'][
'charset'])) && (!isset($settings[
'charset'])))
232 $settings[
'charset'] = $config[
'database'][
'charset'];
235 if (!defined(
"TABLE_PREFIX"))
237 define(
"TABLE_PREFIX", $config[
'database'][
'prefix']);
241 if (isset($config[
'database'][
'key']))
243 self::$db_key = $config[
'database'][
'key'];
246 if (isset($config[
'database'][
'options']))
248 self::$default_openssl_options = intval($config[
'database'][
'options']);
251 if (isset($config[
'database'][
'cipher']))
253 if (
"0" === $config[
'database'][
'cipher'])
255 $config[
'database'][
'cipher'] = 0;
257 self::$default_openssl_method = $config[
'database'][
'cipher'];
260 if (isset($config[
'database'][
'iv']))
262 self::$default_openssl_iv = $config[
'database'][
'iv'];
265 if (isset($config[
'database'][
'ivlen']))
267 self::$default_openssl_ivlen = $config[
'database'][
'ivlen'];
273 if (isset($config[
'system_const']))
275 foreach ($config[
'system_const'] as $key => $value)
279 define($key, $value);
286 exit(
'<p><b>Sorry, but this installation seems to be damaged! Please contact your webmaster!</b></p>');
291 if (isset($settings[
'key']))
293 self::$db_key = $settings[
'key'];
295 if (isset($settings[
'options']))
297 self::$default_openssl_options = $settings[
'options'];
299 if (isset($settings[
'cipher']))
301 self::$default_openssl_method = $settings[
'cipher'];
303 if (isset($settings[
'iv']))
305 self::$default_openssl_iv = $settings[
'iv'];
307 if (isset($settings[
'ivlen']))
309 self::$default_openssl_ivlen = $settings[
'ivlen'];
313 'host' => array_key_exists(
'host', $settings) ? $settings[
'host'] : DB_HOST,
314 'user' => array_key_exists(
'user', $settings) ? $settings[
'user'] : DB_USERNAME,
315 'pass' => array_key_exists(
'pass', $settings) ? $settings[
'pass'] : DB_PASSWORD,
316 'name' => array_key_exists(
'name', $settings) ? $settings[
'name'] : DB_NAME,
317 'port' => array_key_exists(
'port', $settings) ? $settings[
'port'] : DB_PORT
320 if (array_key_exists(
'charset', $settings))
322 $setup[
'charset'] = $settings[
'charset'];
324 $setup[
'charset'] = (defined(
'DB_CHARSET') ? DB_CHARSET :
"utf8");
328 if ($setup[
'port'] !==
'3306')
330 $setup[
'host'] .=
';port=' . $setup[
'port'];
334 $dsn =
"mysql:dbname=".$setup[
'name'].
";host=".$setup[
'host'].
";charset=".$setup[
'charset'];
338 $this->db_handle =
new PDO(
343 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
344 PDO::ATTR_PERSISTENT =>
true,
345 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
352 $this->
simple_query(
"SET NAMES '".$setup[
'charset'].
"'");
361 if(isset( $config[
'database'][
'mode'] ))
363 $this->
simple_query(
"SET GLOBAL sql_mode='".$config[
'database'][
'mode'].
"'");
370 }
catch (PDOException $oError) {
371 $this->
set_error( $oError->getMessage() );
407 public function simple_query(
string $sMySQL_Query =
"", array $aParams = []): int
412 $oStatement=$this->db_handle->prepare( $sMySQL_Query );
413 if (!empty($aParams))
415 if ((isset($aParams[0])) && (is_array($aParams[0])))
417 foreach ($aParams as $temp_params)
419 $oStatement->execute($temp_params);
422 $oStatement->execute($aParams);
425 $oStatement->execute();
427 return $oStatement->rowCount();
428 }
catch (PDOException $error)
430 $this->error = $error->getMessage() .
"\n<p>Query: " . $sMySQL_Query .
"\n</p>\n";
431 $this->HandleDisplayError(
"301");
490 $oStatement=$this->db_handle->prepare(
"SHOW tables" );
491 $oStatement->execute();
493 $data = $oStatement->fetchAll();
495 catch (Exception $error)
497 $this->error = $error->getMessage();
498 $this->HandleDisplayError(
"1");
503 foreach($data as &$ref)
505 $ret_value[] = array_shift( $ref );
511 foreach ($ret_value as &$ref2)
513 $ref2 = str_replace($strip,
"", $ref2);
531 public function describe_table(
string $sTableName, array &$aStorage = [],
int $iForm = self::DESCRIBE_RAW ): bool
536 $oStatement=$this->db_handle->prepare(
"DESCRIBE `" . $sTableName .
"`" );
537 $oStatement->execute();
539 $aStorage = $oStatement->fetchAll();
543 case (self::DESCRIBE_ASSOC):
545 foreach($aStorage as $values)
547 $aTemp[ $values[
"Field"] ] = $values;
553 case (self::DESCRIBE_ONLY_NAMES):
555 foreach($aStorage as $values)
557 $aTemp[] = $values[
"Field"];
570 catch (Exception $error)
572 $this->error = $error->getMessage();
573 $this->HandleDisplayError(
"2");
599 public function execute_query(
string $aQuery=
"",
bool $bFetch=
false, array &$aStorage=[],
bool $bFetchAll=
true ) : int
603 $oStatement=$this->db_handle->prepare($aQuery);
604 $oStatement->execute();
606 if (($oStatement->rowCount() > 0) && (
true === $bFetch))
608 $aStorage = (
true === $bFetchAll)
609 ? $oStatement->fetchAll()
610 : $oStatement->fetch()
614 return $oStatement->rowCount();
615 }
catch( PDOException $error) {
616 $this->error = $error->getMessage();
617 $this->HandleDisplayError(
"10");
636 public function build_and_execute(
string $type,
string $table_name, array $table_values,
string $condition=
"",
bool $display_query=
false): int
639 switch( strtolower($type) )
642 $q =
"UPDATE `" . $table_name .
"` SET ";
643 foreach ($table_values as $field => $value)
645 $q .=
"`" . $field .
"`= :" . $field .
", ";
647 $q = substr($q, 0, -2) . (($condition !=
"") ?
" WHERE " . $condition :
"");
651 $keys = array_keys($table_values);
652 $q =
"INSERT into `" . $table_name .
"` (`";
653 $q .= implode(
"`,`", $keys) .
"`) VALUES (:";
654 $q .= implode(
", :", $keys) .
")";
658 die(__line__.
": build_and_execute-> type unknown!");
661 if($display_query ===
true)
669 $oStatement=$this->db_handle->prepare($q);
670 $oStatement->execute( $table_values );
671 return $oStatement->rowCount();
673 catch( PDOException $error)
675 $this->error = $error->getMessage().
"\n<p>Query: ".$q.
"\n</p>\n";
676 $this->HandleDisplayError(
"12");
728 public function query(
string $sSqlQuery =
""): object|null
732 $oStatement = $this->db_handle->prepare($sSqlQuery);
733 $oStatement->execute();
735 if ((
true === $this->bXrunInstalled) && (
true === lib_comp::$bXRunInit))
737 return new lib_comp_query($oStatement);
742 }
catch( PDOException $error ) {
743 $this->
set_error( $error->getMessage() );
744 $this->HandleDisplayError(
"xRun 101");
804 foreach ($aAllTables as $sTempTablename)
806 if ($sTempTablename == $sAddonName)
808 $ret_value[] = $sAddonName;
811 if (str_starts_with($sTempTablename, $sAddonName.
"_"))
813 $ret_value[] = $sTempTablename;