本文整理匯總了PHP中dibi::nativeQuery方法的典型用法代碼示例。如果您正苦於以下問題:PHP dibi::nativeQuery方法的具體用法?PHP dibi::nativeQuery怎麽用?PHP dibi::nativeQuery使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類dibi
的用法示例。
在下文中一共展示了dibi::nativeQuery方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: load
/**
* Load initial user data (Rights, Preferences and Bookmarks).
*
* @see AbstractAjxpUser#load()
*/
public function load()
{
$this->log('Loading all user data..');
// update group
$res = dibi::query('SELECT [groupPath] FROM [ajxp_users] WHERE [login] = %s', $this->getId());
$this->groupPath = $res->fetchSingle();
if (empty($this->groupPath)) {
// Auto migrate from old version
$this->setGroupPath("/");
}
$result_rights = dibi::query('SELECT [repo_uuid], [rights] FROM [ajxp_user_rights] WHERE [login] = %s', $this->getId());
$this->rights = $result_rights->fetchPairs('repo_uuid', 'rights');
// Db field returns integer or string so we are required to cast it in order to make the comparison
if (isset($this->rights["ajxp.admin"]) && (bool) $this->rights["ajxp.admin"] === true) {
$this->setAdmin(true);
}
if (isset($this->rights["ajxp.parent_user"])) {
$this->setParent($this->rights["ajxp.parent_user"]);
}
if (isset($this->rights["ajxp.hidden"])) {
$this->setHidden(true);
}
if ("postgre" == $this->storage->sqlDriver["driver"]) {
dibi::nativeQuery('SET bytea_output = escape');
}
$result_prefs = dibi::query('SELECT [name], [val] FROM [ajxp_user_prefs] WHERE [login] = %s', $this->getId());
$this->prefs = $result_prefs->fetchPairs('name', 'val');
$result_bookmarks = dibi::query('SELECT [repo_uuid], [path], [title] FROM [ajxp_user_bookmarks] WHERE [login] = %s', $this->getId());
$all_bookmarks = $result_bookmarks->fetchAll();
if (!is_array($this->bookmarks)) {
$this->bookmarks = array();
}
$this->bookmarks = array();
foreach ($all_bookmarks as $b) {
if (!is_array($this->bookmarks[$b['repo_uuid']])) {
$this->bookmarks[$b['repo_uuid']] = array();
}
$this->bookmarks[$b['repo_uuid']][] = array('PATH' => $b['path'], 'TITLE' => $b['title']);
}
// COLLECT ROLES TO LOAD
$rolesToLoad = array();
if (isset($this->rights["ajxp.roles"])) {
if (is_string($this->rights["ajxp.roles"])) {
if (strpos($this->rights["ajxp.roles"], '$phpserial$') === 0) {
$this->rights["ajxp.roles"] = unserialize(str_replace('$phpserial$', '', $this->rights["ajxp.roles"]));
} else {
if (strpos($this->rights["ajxp.roles"], '$json$') === 0) {
$this->rights["ajxp.roles"] = json_decode(str_replace('$json$', '', $this->rights["ajxp.roles"]), true);
} else {
$this->rights["ajxp.roles"] = unserialize($this->rights["ajxp.roles"]);
}
}
}
if (is_array($this->rights["ajxp.roles"])) {
$rolesToLoad = array_keys($this->rights["ajxp.roles"]);
}
}
$rolesToLoad[] = "AJXP_GRP_/";
if ($this->groupPath != null) {
$base = "";
$exp = explode("/", $this->groupPath);
foreach ($exp as $pathPart) {
if (empty($pathPart)) {
continue;
}
$base = $base . "/" . $pathPart;
$rolesToLoad[] = "AJXP_GRP_" . $base;
}
}
$rolesToLoad[] = "AJXP_USR_/" . $this->id;
// NOW LOAD THEM
if (count($rolesToLoad)) {
$allRoles = AuthService::getRolesList($rolesToLoad);
foreach ($rolesToLoad as $roleId) {
if (isset($allRoles[$roleId])) {
$this->roles[$roleId] = $allRoles[$roleId];
$this->rights["ajxp.roles"][$roleId] = true;
$roleObject = $allRoles[$roleId];
if ($roleObject->alwaysOverrides()) {
if (!isset($this->rights["ajxp.roles.sticky"]) || !is_array($this->rights["ajxp.roles.sticky"])) {
$this->rights["ajxp.roles.sticky"] = array();
}
$this->rights["ajxp.roles.sticky"][$roleId] = true;
}
} else {
if (is_array($this->rights["ajxp.roles"]) && isset($this->rights["ajxp.roles"][$roleId])) {
unset($this->rights["ajxp.roles"][$roleId]);
}
}
}
}
if (!isset($this->rights["ajxp.roles.order"]) && is_array($this->rights["ajxp.roles"])) {
// Create sample order
$this->rights["ajxp.roles.order"] = array();
$index = 0;
//.........這裏部分代碼省略.........
示例2: upgradeDB
public function upgradeDB()
{
$confDriver = ConfService::getConfStorageImpl();
$authDriver = ConfService::getAuthDriverImpl();
$logger = AJXP_Logger::getInstance();
if (is_a($confDriver, "sqlConfDriver")) {
$conf = AJXP_Utils::cleanDibiDriverParameters($confDriver->getOption("SQL_DRIVER"));
if (!is_array($conf) || !isset($conf["driver"])) {
return "Nothing to do";
}
switch ($conf["driver"]) {
case "sqlite":
case "sqlite3":
$ext = ".sqlite";
break;
case "postgre":
$ext = ".pgsql";
break;
case "mysql":
$ext = is_file($this->workingFolder . "/" . $this->dbUpgrade . ".mysql") ? ".mysql" : ".sql";
break;
default:
return "ERROR!, DB driver " . $conf["driver"] . " not supported yet in __FUNCTION__";
}
$file = $this->dbUpgrade . $ext;
if (!is_file($this->workingFolder . "/" . $file)) {
return "Nothing to do.";
}
$sqlInstructions = file_get_contents($this->workingFolder . "/" . $file);
$parts = array_map("trim", explode("/* SEPARATOR */", $sqlInstructions));
$results = array();
$errors = array();
dibi::connect($conf);
dibi::begin();
foreach ($parts as $sqlPart) {
if (empty($sqlPart)) {
continue;
}
try {
dibi::nativeQuery($sqlPart);
$results[] = $sqlPart;
} catch (DibiException $e) {
$errors[] = $sqlPart . " (" . $e->getMessage() . ")";
}
}
dibi::commit();
dibi::disconnect();
if (!count($errors)) {
return "Database successfully upgraded";
} else {
return "Database upgrade failed. <br>The following statements were executed : <br>" . implode("<br>", $results) . ",<br><br> The following statements failed : <br>" . implode("<br>", $errors) . "<br><br> You should manually upgrade your DB.";
}
}
}
示例3: simpleStoreGet
public function simpleStoreGet($storeID, $dataID, $dataType, &$data)
{
if ($this->sqlDriver["driver"] == "postgre") {
dibi::nativeQuery("SET bytea_output=escape");
}
$children_results = dibi::query("SELECT * FROM [ajxp_simple_store] WHERE [store_id]=%s AND [object_id]=%s", $storeID, $dataID);
$value = $children_results->fetchAll();
if (!count($value)) {
return false;
}
$value = $value[0];
if ($dataType == "serial") {
$data = unserialize($value["serialized_data"]);
} else {
$data = $value["binary_data"];
}
if (isset($value["related_object_id"])) {
return $value["related_object_id"];
} else {
return false;
}
}
示例4: runCreateTablesQuery
public static function runCreateTablesQuery($p, $file)
{
switch ($p["driver"]) {
case "sqlite":
case "sqlite3":
if (!file_exists(dirname($p["database"]))) {
@mkdir(dirname($p["database"]), 0755, true);
}
$ext = ".sqlite";
break;
case "mysql":
$ext = ".mysql";
break;
case "postgre":
$ext = ".pgsql";
break;
default:
return "ERROR!, DB driver " . $p["driver"] . " not supported yet in __FUNCTION__";
}
$result = array();
$file = dirname($file) . "/" . str_replace(".sql", $ext, basename($file));
$sql = file_get_contents($file);
$separators = explode("/** SEPARATOR **/", $sql);
$allParts = array();
foreach ($separators as $sep) {
$explode = explode("\n", trim($sep));
$firstLine = array_shift($explode);
if ($firstLine == "/** BLOCK **/") {
$allParts[] = $sep;
} else {
$parts = explode(";", $sep);
$remove = array();
for ($i = 0; $i < count($parts); $i++) {
$part = $parts[$i];
if (strpos($part, "BEGIN") && isset($parts[$i + 1])) {
$parts[$i] .= ';' . $parts[$i + 1];
$remove[] = $i + 1;
}
}
foreach ($remove as $rk) {
unset($parts[$rk]);
}
$allParts = array_merge($allParts, $parts);
}
}
dibi::connect($p);
dibi::begin();
foreach ($allParts as $createPart) {
$sqlPart = trim($createPart);
if (empty($sqlPart)) {
continue;
}
try {
dibi::nativeQuery($sqlPart);
$resKey = str_replace("\n", "", substr($sqlPart, 0, 50)) . "...";
$result[] = "OK: {$resKey} executed successfully";
} catch (DibiException $e) {
$result[] = "ERROR! {$sqlPart} failed";
}
}
dibi::commit();
dibi::disconnect();
$message = implode("\n", $result);
if (strpos($message, "ERROR!")) {
return $message;
} else {
return "SUCCESS:" . $message;
}
}
示例5: array_map
$test = AJXP_Utils::cleanDibiDriverParameters($confDriver->getOption("SQL_DRIVER"));
}
if (is_array($test) && isset($test["driver"]) && $test["driver"] == "mysql") {
echo "Upgrading MYSQL database ...";
$parts = array_map("trim", explode("/* SEPARATOR */", $dbInst));
$results = array();
$errors = array();
require_once AJXP_BIN_FOLDER . "/dibi.compact.php";
dibi::connect($test);
dibi::begin();
foreach ($parts as $sqlPart) {
if (empty($sqlPart)) {
continue;
}
try {
dibi::nativeQuery($sqlPart);
echo "<div class='upgrade_result success'>{$sqlPart} ... OK</div>";
} catch (DibiException $e) {
$errors[] = $e->getMessage();
echo "<div class='upgrade_result success'>{$sqlPart} ... FAILED (" . $e->getMessage() . ")</div>";
}
}
dibi::commit();
dibi::disconnect();
} else {
if (is_array($test) && $test["driver"] != "mysql") {
echo "Cannot auto-upgrade Sqlite or PostgreSql DB automatically, please review the update instructions.";
} else {
echo "Nothing to do for the DB";
}
}