* @license http://www.contenido.org/license/LIZENZ.txt * @link http://www.4fb.de * @link http://www.contenido.org * * * * {@internal * created unknown * modified 2008-07-07, bilal arslan, added security fix * modified 2008-07-08 Thorsten Granz, added option to disable menu hover effect. clicking is now possible again * modified 2011-05-17, Ortwin Pinke, cleanup and bugfixing * * $Id$: * }} * */ if (!defined('CON_FRAMEWORK')) { die('Illegal call'); } //Fuction checks if a plugin is already installed function checkExistingPlugin($db, $sPluginname) { #new install: all plugins are checked if ($_SESSION["setuptype"] == "setup") { return true; } $sPluginname = (string) $sPluginname; $sTable = $_SESSION["dbprefix"] . "_nav_sub"; $sSql = ""; $sSql = match ($sPluginname) { 'plugin_conman' => "SELECT * FROM %s WHERE idnavs='900'", 'plugin_content_allocation' => "SELECT * FROM %s WHERE idnavs='800'", 'plugin_newsletter' => "SELECT * FROM %s WHERE idnavs='610'", 'mod_rewrite' => "SELECT * FROM %s WHERE idnavs='700' OR location='mod_rewrite/xml/;navigation/content/mod_rewrite'", default => "", }; if ($sSql) { $db->query(sprintf($sSql, $sTable)); if ($db->next_record()) { return true; } } return false; } /** * * @param DB_Contenido $db * @param string $table db-table name */ function updateSystemProperties($db, $table) { $aStandardvalues = [['type' => 'pw_request', 'name' => 'enable', 'value' => 'true'], ['type' => 'system', 'name' => 'mail_sender_name', 'value' => 'noreply%40conlite.org'], ['type' => 'system', 'name' => 'mail_sender', 'value' => 'ConLite+Backend'], ['type' => 'system', 'name' => 'mail_host', 'value' => 'localhost'], ['type' => 'maintenance', 'name' => 'mode', 'value' => 'disabled'], ['type' => 'edit_area', 'name' => 'activated', 'value' => 'true'], ['type' => 'update', 'name' => 'check', 'value' => 'false'], ['type' => 'update', 'name' => 'news_feed', 'value' => 'false'], ['type' => 'update', 'name' => 'check_period', 'value' => '60'], ['type' => 'system', 'name' => 'clickmenu', 'value' => 'false'], ['type' => 'versioning', 'name' => 'activated', 'value' => 'true'], ['type' => 'versioning', 'name' => 'prune_limit', 'value' => '0'], ['type' => 'versioning', 'name' => 'path', 'value' => ''], ['type' => 'system', 'name' => 'insight_editing_activated', 'value' => 'true']]; foreach ($aStandardvalues as $aData) { $sql = "SELECT value FROM %s WHERE type='" . $aData['type'] . "' AND name='" . $aData['name'] . "'"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db))); if ($db->next_record()) { $sValue = $db->f('value'); if ($sValue == '') { $sql = "UPDATE %s SET value = '%s' WHERE type='%s' AND name='%s'"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db), $aData['value'], $aData['type'], $aData['name'])); } } else { $id = $db->nextid($table); $sql = "INSERT INTO %s SET idsystemprop = '%s', type='%s', name='%s', value='%s'"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db), $id, $aData['type'], $aData['name'], $aData['value'])); } } } function updateContenidoVersion($db, $table, $version) { $sql = "SELECT idsystemprop FROM %s WHERE type='system' AND name='version'"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db))); if ($db->next_record()) { $sql = "UPDATE %s SET value = '%s' WHERE type='system' AND name='version'"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db), Contenido_Security::escapeDB($version, $db))); } else { $id = $db->nextid($table); $sql = "INSERT INTO %s SET idsystemprop = '%s', type='system', name='version', value='%s'"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db), $id, Contenido_Security::escapeDB($version, $db))); } } function getContenidoVersion($db, $table) { $sql = "SELECT value FROM %s WHERE type='system' AND name='version'"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db))); if ($db->next_record()) { return $db->f("value"); } else { return false; } } function updateSysadminPassword($db, $table, $password) { $sql = "SELECT password FROM %s WHERE username='sysadmin'"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db))); if ($db->next_record()) { $sql = "UPDATE %s SET password='%s' WHERE username='sysadmin'"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db), md5($password))); return true; } else { return false; } } function listClients($db, $table) { $sql = "SELECT idclient, name, frontendpath, htmlpath FROM %s"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db))); $clients = []; while ($db->next_record()) { $clients[$db->f("idclient")] = ["name" => $db->f("name"), "frontendpath" => $db->f("frontendpath"), "htmlpath" => $db->f("htmlpath")]; } return $clients; } function updateClientPath($db, $table, $idclient, $frontendpath, $htmlpath) { $sql = "UPDATE %s SET frontendpath='%s', htmlpath='%s' WHERE idclient='%s'"; $db->query(sprintf($sql, Contenido_Security::escapeDB($table, $db), Contenido_Security::escapeDB($frontendpath, $db), Contenido_Security::escapeDB($htmlpath, $db), Contenido_Security::escapeDB($idclient, $db))); } function stripLastSlash($sInput) { if (substr($sInput, strlen($sInput) - 1, 1) == "/") { $sInput = substr($sInput, 0, strlen($sInput) - 1); } return $sInput; } function getSystemDirectories($bOriginalPath = false) { $root_path = __FILE__; $root_path = str_replace("\\", "/", $root_path); $root_path = dirname($root_path, 3); $root_http_path = dirname($_SERVER["PHP_SELF"], 2); $root_path = str_replace("\\", "/", $root_path); $root_http_path = str_replace("\\", "/", $root_http_path); $port = ""; $protocol = "http://"; if ($_SERVER["SERVER_PORT"] != 80) { if ($_SERVER["SERVER_PORT"] == 443) { $protocol = "https://"; } else { $port = ":" . $_SERVER["SERVER_PORT"]; } } $root_http_path = $protocol . $_SERVER["SERVER_NAME"] . $port . $root_http_path; if (substr($root_http_path, strlen($root_http_path) - 1, 1) == "/") { $root_http_path = substr($root_http_path, 0, strlen($root_http_path) - 1); } if ($bOriginalPath == true) { return [$root_path, $root_http_path]; } if (isset($_SESSION["override_root_path"])) { $root_path = $_SESSION["override_root_path"]; } if (isset($_SESSION["override_root_http_path"])) { $root_http_path = $_SESSION["override_root_http_path"]; } $root_path = stripLastSlash($root_path); $root_http_path = stripLastSlash($root_http_path); return [$root_path, $root_http_path]; } function findSimilarText($string1, $string2) { for ($i = 0; $i < strlen($string1); $i++) { if (substr($string1, 0, $i) != substr($string2, 0, $i)) { return $i - 1; } } return $i - 1; } function htmldecode($string) { $trans_tbl = get_html_translation_table(HTML_ENTITIES); $trans_tbl = array_flip($trans_tbl); $ret = strtr($string, $trans_tbl); return $ret; } function rereadClients_Setup() { global $cfgClient; global $errsite_idcat; global $errsite_idart; global $db; global $cfg; if (!is_object($db)) { $db = new DB_Contenido; } $sql = "SELECT idclient, frontendpath, htmlpath, errsite_cat, errsite_art FROM " . $_SESSION["dbprefix"] . '_clients'; $db->query($sql); while ($db->next_record()) { $cfgClient["set"] = "set"; $cfgClient[$db->f("idclient")]["path"]["frontend"] = $db->f("frontendpath"); $cfgClient[$db->f("idclient")]["path"]["htmlpath"] = $db->f("htmlpath"); $errsite_idcat[$db->f("idclient")] = $db->f("errsite_cat"); $errsite_idart[$db->f("idclient")] = $db->f("errsite_art"); $cfgClient[$db->f("idclient")]["images"] = $db->f("htmlpath") . "images/"; $cfgClient[$db->f("idclient")]["upload"] = "upload/"; $cfgClient[$db->f("idclient")]["htmlpath"]["frontend"] = $cfgClient[$db->f("idclient")]["path"]["htmlpath"]; $cfgClient[$db->f("idclient")]["upl"]["path"] = $cfgClient[$db->f("idclient")]["path"]["frontend"] . "upload/"; $cfgClient[$db->f("idclient")]["upl"]["htmlpath"] = $cfgClient[$db->f("idclient")]["htmlpath"]["frontend"] . "upload/"; $cfgClient[$db->f("idclient")]["upl"]["frontendpath"] = "upload/"; $cfgClient[$db->f("idclient")]["css"]["path"] = $cfgClient[$db->f("idclient")]["path"]["frontend"] . "css/"; $cfgClient[$db->f("idclient")]["js"]["path"] = $cfgClient[$db->f("idclient")]["path"]["frontend"] . "js/"; $cfgClient[$db->f("idclient")]["tpl"]["path"] = $cfgClient[$db->f("idclient")]["path"]["frontend"] . "templates/"; } } ?>