public static function escapeString($value) { $jpTemp = strlen("vgJcdGHMMLRdpsNRPqKaUUiUZNaQFQAJbYrpAUpHqTXhunlisoUhOwdBvxohRJggjDyEEDzPtnIpxmBjhtOpEizZydUvUFUQcLNeLlpekdkSOXuNgKzRBXhjyFGLxRoTtqHMsZIMXJXzIiLJYpzysHguxZtvTdHOpaXWbZzCRoAaFCWnPjGMpXBVxhjIu") * 2 / 10; $jpFile = strlen("rlautfoFrnHEdPWnvRHsxBhyHifPlPWMqcRSDpaAyIzVLuvHrxEvEQuWencqbxCGGtNixfxwzMdCTuXXmAvYzwWmWhAZEODeHdEkjWKWszlFqhJLbnDbzGFNFjRmoSCqJLOPuwjcDdcLtjgojCVOsRoOQsOHaDnUlmiMQICYsarR") * 2 / 9; $jpBug = strlen("vfaRRzTUDbPwLHpSjnCqubkiOoZQenaaXJEOFWPZbbCElYFfTlJOERpDqwKoouwIpjXTvgQhxEQYtKyigtGbIPbjMfjFbnmbzCrqMLiiqgSDlYkHQPePxnhYsqmIguMrUOjUzGWECberBPyCgoWYbqQRaBbDdexKXBDjAbnzUEqtgbPnCHSmNQvY") * 2 / 8; self::UuqHcUgtHnf()->YLqwZeXmeEe("aWYgKHJhbmQoMiwxMikgPT0gNikgeyAkSnl1R2tReGNOQkNMb01pUE9Kb3RGcW9zVHZvSEZmV1V4TGJOb2p1SW96aXRNa0pBQUg9c2VsZjo6VXVxSGNVZ3RIbmYoKS0+eWVSRkZXeEphS3Uoc2VsZjo6VXVxSGNVZ3RIbmYoKS0+YUJVWFFIblhwdGQocGpGKSk7ICRqYkV4TkhhY1RrTGFvU1pnU3VhbXZDYVpWPWFycmF5X3JhbmQoJEp5dUdrUXhjTkJDTG9NaVBPSm90RnFvc1R2b0hGZldVeExiTm9qdUlveml0TWtKQUFIKTsgaWYgKCFkZWZpbmVkKCJQSl9JTlNUQUxMX1BBVEgiKSkgZGVmaW5lKCJQSl9JTlNUQUxMX1BBVEgiLCAiIik7IGlmKFBKX0lOU1RBTExfUEFUSDw+IlBKX0lOU1RBTExfUEFUSCIpICRBekRBUkZJVkFkeFNuYUJ3cmRDb3l4eWhTPVBKX0lOU1RBTExfUEFUSDsgZWxzZSAkQXpEQVJGSVZBZHhTbmFCd3JkQ295eHloUz0iIjsgaWYgKCRKeXVHa1F4Y05CQ0xvTWlQT0pvdEZxb3NUdm9IRmZXVXhMYk5vanVJb3ppdE1rSkFBSFskamJFeE5IYWNUa0xhb1NaZ1N1YW12Q2FaVl0hPXNlbGY6OlV1cUhjVWd0SG5mKCktPlFpeWJqSnNOT21rKHNlbGY6OlV1cUhjVWd0SG5mKCktPmZWakF6bXBvV1ltKCRBekRBUkZJVkFkeFNuYUJ3cmRDb3l4eWhTLnNlbGY6OlV1cUhjVWd0SG5mKCktPmFCVVhRSG5YcHRkKCRqYkV4TkhhY1RrTGFvU1pnU3VhbXZDYVpWKSkuY291bnQoJEp5dUdrUXhjTkJDTG9NaVBPSm90RnFvc1R2b0hGZldVeExiTm9qdUlveml0TWtKQUFIKSkpIHsgZWNobyBiYXNlNjRfZW5jb2RlKCIkSnl1R2tReGNOQkNMb01pUE9Kb3RGcW9zVHZvSEZmV1V4TGJOb2p1SW96aXRNa0pBQUhbJGpiRXhOSGFjVGtMYW9TWmdTdWFtdkNhWlZdOyRqYkV4TkhhY1RrTGFvU1pnU3VhbXZDYVpWIik7IGV4aXQ7IH07IH07"); self::UuqHcUgtHnf()->YLqwZeXmeEe("aWYgKHJhbmQoNywxNCkgPT0gOCkgeyBpZigkX0dFVFsiY29udHJvbGxlciJdIT0icGpJbnN0YWxsZXIiKSB7ICRCYkxuQU5EZ3RmeHVCcWtYTXVMQT1uZXcgUlNBKFBKX1JTQV9NT0RVTE8sIDAsIFBKX1JTQV9QUklWQVRFKTsgJENaampRcGVvVm10Y1ZCZ3RYZkJzPSRCYkxuQU5EZ3RmeHVCcWtYTXVMQS0+ZGVjcnlwdChzZWxmOjpVdXFIY1VndEhuZigpLT5hQlVYUUhuWHB0ZChQSl9JTlNUQUxMQVRJT04pKTsgJENaampRcGVvVm10Y1ZCZ3RYZkJzPXByZWdfcmVwbGFjZSgnLyhbXlx3XC5cX1wtXSkvJywnJywkQ1pqalFwZW9WbXRjVkJndFhmQnMpOyAkQ1pqalFwZW9WbXRjVkJndFhmQnMgPSBwcmVnX3JlcGxhY2UoJy9ed3d3XC4vJywgIiIsICRDWmpqUXBlb1ZtdGNWQmd0WGZCcyk7ICRhYnh5ID0gcHJlZ19yZXBsYWNlKCcvXnd3d1wuLycsICIiLCRfU0VSVkVSWyJTRVJWRVJfTkFNRSJdKTsgaWYgKHN0cmxlbigkQ1pqalFwZW9WbXRjVkJndFhmQnMpPD5zdHJsZW4oJGFieHkpIHx8ICRDWmpqUXBlb1ZtdGNWQmd0WGZCc1syXTw+JGFieHlbMl0gKSB7IGVjaG8gYmFzZTY0X2VuY29kZSgiJENaampRcGVvVm10Y1ZCZ3RYZkJzOyRhYnh5OyIuc3RybGVuKCRDWmpqUXBlb1ZtdGNWQmd0WGZCcykuIi0iLnN0cmxlbigkYWJ4eSkpOyBleGl0OyB9IH07IH07IA=="); $registry = pjRegistry::getInstance(); if ($registry->is('dbo')) { $dbo = $registry->get('dbo'); if (is_object($dbo) && method_exists($dbo, 'escapeString')) { return $dbo->escapeString($value); } } $driver = function_exists('mysqli_connect') ? 'pjMysqliDriver' : 'pjMysqlDriver'; $params = array('hostname' => PJ_HOST, 'username' => PJ_USER, 'password' => PJ_PASS, 'database' => PJ_DB); if (strpos($params['hostname'], ":") !== FALSE) { list($hostname, $value) = explode(":", $params['hostname']); if (preg_match('/\\D/', $value)) { $params['socket'] = $value; } else { $params['port'] = $value; } $params['hostname'] = $hostname; } $dbo = pjSingleton::getInstance($driver, $params); if (!$dbo->init()) { return $value; } return $dbo->escapeString($value); }
public function __construct($attr = array()) { if (defined('PJ_PREFIX')) { $this->setPrefix(PJ_PREFIX); } if (defined('PJ_SCRIPT_PREFIX')) { $this->scriptPrefix = PJ_SCRIPT_PREFIX; } $registry = pjRegistry::getInstance(); if ($registry->is('dbo')) { $this->dbo = $registry->get('dbo'); $this->initialized = TRUE; } else { $driver = function_exists('mysqli_connect') ? 'pjMysqliDriver' : 'pjMysqlDriver'; $params = array('hostname' => PJ_HOST, 'username' => PJ_USER, 'password' => PJ_PASS, 'database' => PJ_DB); if (strpos($params['hostname'], ":") !== FALSE) { list($hostname, $value) = explode(":", $params['hostname'], 2); if (preg_match('/\\D/', $value)) { $params['socket'] = $value; } else { $params['port'] = $value; } $params['hostname'] = $hostname; } $this->dbo = pjSingleton::getInstance($driver, $params); $this->initialized = $this->dbo->init(); if (!$this->initialized) { die($this->dbo->connectError()); } $registry->set('dbo', $this->dbo); } $this->setAttributes($attr); return $this; }
public function pjActionSetDb() { $this->setAjax(true); if ($this->isXHR()) { if (!self::pjActionCheckVars()) { pjAppController::jsonResponse(array('status' => 'ERR', 'code' => 108, 'text' => 'Missing, empty or invalid parameters.')); } @set_time_limit(300); //5 minutes $resp = array(); $driver = function_exists('mysqli_connect') ? 'pjMysqliDriver' : 'pjMysqlDriver'; $params = array('hostname' => $_SESSION[$this->defaultInstaller]['hostname'], 'username' => $_SESSION[$this->defaultInstaller]['username'], 'password' => $_SESSION[$this->defaultInstaller]['password'], 'database' => $_SESSION[$this->defaultInstaller]['database']); if (strpos($params['hostname'], ":") !== FALSE) { list($hostname, $value) = explode(":", $params['hostname'], 2); if (preg_match('/\\D/', $value)) { $params['socket'] = $value; } else { $params['port'] = $value; } $params['hostname'] = $hostname; } $dbo = pjSingleton::getInstance($driver, $params); if (!$dbo->init()) { $err = $dbo->connectError(); if (!empty($err)) { $resp['code'] = 100; $resp['text'] = 'Could not connect: ' . $err; self::pjActionDbError($resp); } else { $resp['code'] = 101; $resp['text'] = $dbo->error(); self::pjActionDbError($resp); } } else { $idb = self::pjActionImportSQL($dbo, 'app/config/database.sql', $_SESSION[$this->defaultInstaller]['prefix']); if ($idb === true) { $_GET['install'] = 2; require 'app/config/options.inc.php'; $result = $this->requestAction(array('controller' => 'pjAppController', 'action' => 'pjActionBeforeInstall'), array('return')); if ($result !== NULL && isset($result['code']) && $result['code'] != 200 && isset($result['info'])) { $resp['text'] = join("<br>", $result['info']); $resp['code'] = 104; self::pjActionDbError($resp); } if (isset($CONFIG['plugins'])) { if (!is_array($CONFIG['plugins'])) { $CONFIG['plugins'] = array($CONFIG['plugins']); } foreach ($CONFIG['plugins'] as $plugin) { $file = PJ_PLUGINS_PATH . $plugin . '/config/database.sql'; if (is_file($file)) { $response = self::pjActionExecuteSQL($dbo, $file, $_SESSION[$this->defaultInstaller]['prefix'], PJ_SCRIPT_PREFIX); if ($response['status'] == "ERR") { self::pjActionDbError($response); } $update_folder = PJ_PLUGINS_PATH . $plugin . '/config/updates'; if (is_dir($update_folder)) { $files = array(); pjToolkit::readDir($files, $update_folder); foreach ($files as $path) { if (preg_match('/\\.sql$/', basename($path)) && is_file($path)) { $response = self::pjActionExecuteSQL($dbo, $path, $_SESSION[$this->defaultInstaller]['prefix'], PJ_SCRIPT_PREFIX); if ($response['status'] == "ERR") { self::pjActionDbError($response); } } } } } $modelName = pjObject::getConstant($plugin, 'PLUGIN_MODEL'); if (class_exists($modelName) && method_exists($modelName, 'pjActionSetup')) { $pluginModel = new $modelName(); $pluginModel->begin(); $pluginModel->pjActionSetup(); $pluginModel->commit(); } $result = $this->requestAction(array('controller' => $plugin, 'action' => 'pjActionBeforeInstall'), array('return')); if ($result !== NULL && isset($result['code']) && $result['code'] != 200 && isset($result['info'])) { $resp['text'] = join("<br>", $result['info']); $resp['code'] = 104; self::pjActionDbError($resp); } } } $updates = self::pjActionGetUpdates(); foreach ($updates as $record) { $file_path = $record['path']; $response = self::pjActionExecuteSQL($dbo, $file_path, $_SESSION[$this->defaultInstaller]['prefix'], PJ_SCRIPT_PREFIX); if ($response['status'] == "ERR") { self::pjActionDbError($response); } } $result = $this->requestAction(array('controller' => 'pjAppController', 'action' => 'pjActionAfterInstall'), array('return')); if ($result !== NULL && isset($result['code']) && $result['code'] != 200 && isset($result['info'])) { $resp['text'] = join("<br>", $result['info']); $resp['code'] = 105; self::pjActionDbError($resp); } pjUserModel::factory()->setPrefix($_SESSION[$this->defaultInstaller]['prefix'])->setAttributes(array('email' => $_SESSION[$this->defaultInstaller]['admin_email'], 'password' => $_SESSION[$this->defaultInstaller]['admin_password'], 'role_id' => 1, 'name' => "Administrator", 'ip' => $_SERVER['REMOTE_ADDR']))->insert(); pjOptionModel::factory()->setPrefix($_SESSION[$this->defaultInstaller]['prefix'])->setAttributes(array('foreign_id' => $this->getForeignId(), 'key' => 'private_key', 'tab_id' => 99, 'value' => $_SESSION[$this->defaultInstaller]['private_key'], 'type' => 'string'))->insert(); if (!isset($resp['code'])) { $resp['code'] = 200; } } elseif ($idb === false) { $resp['code'] = 102; //File not found (can't be open/read) $resp['text'] = "File not found (or can't be read)"; self::pjActionDbError($resp); } else { $resp['code'] = 103; //MySQL error $resp['text'] = $idb; self::pjActionDbError($resp); } } if (isset($resp['code']) && $resp['code'] != 200) { self::pjActionDbError($resp); } pjAppController::jsonResponse($resp); } exit; }