setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $dbh; } // Data Access ///////////////// // Returns the value for the specified setting name. function getSetting($name) { require_once($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."classes".DIRECTORY_SEPARATOR."settings.class.php"); $settings = new settings(); if ($name == "dataStorage") { return $settings::db_driver; } if ($settings::db_driver == 'xml') { // XML $theseSettings = simplexml_load_file($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."data".DIRECTORY_SEPARATOR."settings.xml"); foreach ($theseSettings as $setting) { if ($setting->name == $name) { return $setting->value; } } } else { // PDO $dbh = $this->pdoOpen(); $sql = "SELECT * FROM ".$settings::db_prefix."settings WHERE name = :name"; $sth = $dbh->prepare($sql); $sth->bindParam(':name', $name, PDO::PARAM_STR, 50); $sth->execute(); $row = $sth->fetch(); $sth = NULL; $dbh = NULL; return $row['value']; } return ""; } // Updates the value for the specified setting name. function updateSetting($name, $value) { require_once($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."classes".DIRECTORY_SEPARATOR."settings.class.php"); $settings = new settings(); if ($settings::db_driver == "xml") { // XML $settings = simplexml_load_file($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."data".DIRECTORY_SEPARATOR."settings.xml"); foreach ($settings->xpath("setting[name='".$name."']") as $setting) { $setting->value = $value; } file_put_contents($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."data".DIRECTORY_SEPARATOR."settings.xml", $settings->asXML()); } else { // PDO $dbh = $this->pdoOpen(); $sql = "UPDATE ".$settings::db_prefix."settings SET value = :value WHERE name = :name"; $sth = $dbh->prepare($sql); $sth->bindParam(':name', $name, PDO::PARAM_STR, 50); $sth->bindParam(':value', $value, PDO::PARAM_STR, 100); $sth->execute(); $sth = NULL; $dbh = NULL; } } function addSetting($name, $value) { require_once($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."classes".DIRECTORY_SEPARATOR."settings.class.php"); $settings = new settings(); if ($settings::db_driver == "xml") { // XML $xmlSettings = simplexml_load_file($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."data".DIRECTORY_SEPARATOR."settings.xml"); $xmlSetting = $xmlSettings->addChild('setting'); $xmlSetting->addChild('name', $name); $xmlSetting->addChild('value', $value); file_put_contents($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."data".DIRECTORY_SEPARATOR."settings.xml", $xmlSettings->asXML()); } else { // PDO $dbh = $this->pdoOpen(); $sql = "INSERT INTO ".$settings::db_prefix."settings (name, value) VALUES (:name, :value)"; $sth = $dbh->prepare($sql); $sth->bindParam(':name', $name, PDO::PARAM_STR, 50); $sth->bindParam(':value', $value, PDO::PARAM_STR, 100); $sth->execute(); $sth = NULL; $dbh = NULL; } } function deleteSetting($name) { require_once($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."classes".DIRECTORY_SEPARATOR."settings.class.php"); $settings = new settings(); if ($settings::db_driver == "xml") { $xmlSettings = simplexml_load_file($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."data".DIRECTORY_SEPARATOR."settings.xml"); foreach($xmlSettings as $xmlSetting) { if($xmlSetting->name == $name) { $dom = dom_import_simplexml($xmlSetting); $dom->parentNode->removeChild($dom); } } file_put_contents($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."data".DIRECTORY_SEPARATOR."settings.xml", $xmlSettings->asXml()); } else { // PDO require_once($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."classes".DIRECTORY_SEPARATOR."common.class.php"); $common = new common(); $dbh = $common->pdoOpen(); $sql = "DELETE FROM ".$settings::db_prefix."settings WHERE name = :name"; $sth = $dbh->prepare($sql); $sth->bindParam(':name', $name, PDO::PARAM_STR, 100); $sth->execute(); $sth = NULL; $dbh = NULL; } } // Returns the name associated to the specified administrator login. function getAdminstratorName($login) { require_once($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."classes".DIRECTORY_SEPARATOR."settings.class.php"); $settings = new settings(); if ($settings::db_driver == "xml") { // XML $administrators = simplexml_load_file($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."data".DIRECTORY_SEPARATOR."administrators.xml"); foreach ($administrators as $administrator) { if ($administrator->login = $login) { return $administrator->name; } } } else { // PDO $dbh = $this->pdoOpen(); $sql = "SELECT * FROM ".$settings::db_prefix."administrators WHERE login = :login"; $sth = $dbh->prepare($sql); $sth->bindParam(':login', $login, PDO::PARAM_STR, 25); $sth->execute(); $row = $sth->fetch(); $sth = NULL; $dbh = NULL; return $row['name']; } } // Functions Not Related To Data Retrieval ///////////////////////////////////////////// // Check if page load is a post back. function postBack() { if ($_SERVER['REQUEST_METHOD'] === 'POST') { return TRUE; } return FALSE; } // Return a boolean from a string. function stringToBoolean($value) { switch(strtoupper($value)) { case 'TRUE': return TRUE; case 'FALSE': return FALSE; default: return NULL; } } // Generate a random string of the given length. function randomString($length) { $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $string = ''; for ($p = 0; $p < $length; $p++) { $string .= $characters[mt_rand(0, strlen($characters))]; } return $string; } // Returns the supplied file name without an extension. function removeExtension($fileName) { return pathinfo($fileName, PATHINFO_FILENAME); } // Remove all HTML tags from a string. function removeHtmlTags($string) { $string = preg_replace ('/<[^>]*>/', ' ', $string); $string = str_replace("\r", '', $string); $string = str_replace("\n", ' ', $string); $string = str_replace("\t", ' ', $string); $string = trim(preg_replace('/ {2,}/', ' ', $string)); return $string; } // Remove HTML from a string and shorten to the specified length. function cleanAndShortenString($string, $length) { return substr($this->removeHtmlTags($string), 0, $length); } // Pagination. function paginateArray($inArray, $page, $itemsPerPage) { $page = $page < 1 ? 1 : $page; $start = ($page - 1) * ($itemsPerPage + 1); $offset = $itemsPerPage + 1; return array_slice($inArray, $start, $offset); } // Function that returns the string contained between two strings. function extractString($string, $start, $end) { $string = " ".$string; $ini = strpos($string, $start); if ($ini == 0) return ""; $ini += strlen($start); $len = strpos($string, $end, $ini) - $ini; return substr($string, $ini, $len); } // Returns the base URL from the requested URL. function getBaseUrl(){ if(isset($_SERVER['HTTPS'])){ $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http"; } else { $protocol = 'http'; } return $protocol."://".$_SERVER['HTTP_HOST']; } // Send an email. function sendEmail($to, $subject, $message) { $headers = 'From: '.$this->getSetting("emailFrom")."\r\n". 'Reply-To: '.$this->getSetting("emailReplyTo")."\r\n". 'X-Mailer: PHP/'.phpversion(); return mail($to, $subject, $message, $headers); } // Get the size of the database. function getDatabaseSize($measurement = "") { require_once($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."classes".DIRECTORY_SEPARATOR."settings.class.php"); $settings = new settings(); if ($settings::db_driver == "sqlite") { $databaseSize = filesize($_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR."data".DIRECTORY_SEPARATOR."portal.sqlite"); } elseif ($settings::db_driver == "mysql") { $dbh = $this->pdoOpen(); $sql = "SHOW TABLE STATUS"; $sth = $dbh->prepare($sql); $sth->execute(); $databaseSize = $sth->fetch(PDO::FETCH_ASSOC)["Data_length"]; $sth = NULL; $dbh = NULL; } else { $databaseSize = 0; } switch ($measurement) { case "kb": return round($databaseSize / 1024, 2); break; case "mb": return round($databaseSize / 1024 / 1024, 2); break; case "gb": return round($databaseSize / 1024 / 1024 /1024, 2); break; case "tb": return round($databaseSize / 1024 /1024 /1024 /1024, 2); break; default: return $databaseSize; } } } ?>