本文整理汇总了PHP中XDB::fetchOneRow方法的典型用法代码示例。如果您正苦于以下问题:PHP XDB::fetchOneRow方法的具体用法?PHP XDB::fetchOneRow怎么用?PHP XDB::fetchOneRow使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XDB
的用法示例。
在下文中一共展示了XDB::fetchOneRow方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: discardExpiredSessions
/**
* Discards from the logger database session details for users.
*
* @param userPerms Permission level to use for that round of discards.
* @param retentionPeriod Minimal number of months to keep entries for.
* @param minimalBacklog Minimal number of entries to keep for any given user,
* no matter what.
*/
function discardExpiredSessions($userPerms, $retentionPeriod, $minimalBacklog)
{
$begin = time();
switch ($userPerms) {
case 'user':
$state = 'active';
$isAdmin = 0;
break;
case 'admin':
$state = 'active';
$isAdmin = 1;
break;
case 'disabled':
$state = 'disabled';
$isAdmin = 0;
break;
default:
return;
}
list($low, $high) = XDB::fetchOneRow("SELECT MIN(uid), MAX(uid)\n FROM #x5dat#.accounts\n WHERE state = {?} AND is_admin = {?}", $state, $isAdmin);
$batchSize = 100;
$nbBatches = 0;
$affectedRows = 0;
// Run in batches.
for ($lowUID = $low; $lowUID <= $high; $lowUID += $batchSize) {
// Slight optimization for last loop: adjust to exactly what's necessary.
$highUID = min($high + 1, $lowUID + $batchSize);
XDB::execute("DELETE s\n FROM log_sessions AS s\n JOIN (SELECT a.uid,\n (SELECT us.start\n FROM log_sessions AS us\n WHERE us.uid = a.uid AND (us.suid IS NULL OR us.suid = 0)\n ORDER BY us.start DESC\n LIMIT {?}, 1) AS no_discard_limit\n FROM #x5dat#.accounts AS a\n WHERE a.state = {?} AND a.is_admin = {?}\n AND a.uid >= {?} AND a.uid < {?}\n ORDER BY a.uid ASC) AS ut ON (ut.uid = s.uid)\n WHERE s.start < DATE_SUB(NOW(), INTERVAL {?} MONTH)\n AND s.start < ut.no_discard_limit", $minimalBacklog - 1, $state, $isAdmin, $lowUID, $highUID, $retentionPeriod);
$nbBatches += 1;
$affectedRows += XDB::affectedRows();
}
$duration = time() - $begin;
echo "Users with permission '{$userPerms}': removed {$affectedRows} sessions in {$duration} seconds ({$nbBatches} batches).\n";
}
示例2: handler_notifs
public function handler_notifs($page, $action = null, $arg = null)
{
$page->changeTpl('carnet/notifs.tpl');
if ($action) {
S::assert_xsrf_token();
switch ($action) {
case 'add_promo':
$this->addPromo($page, $arg);
break;
case 'del_promo':
$this->delPromo($page, $arg);
break;
case 'add_group':
$this->addGroup($page, $arg);
break;
case 'del_group':
$this->delGroup($page, $arg);
break;
case 'del_nonins':
$user = User::get($arg);
if ($user) {
$this->delNonRegistered($page, $user);
}
break;
case 'add_nonins':
$user = User::get($arg);
if ($user) {
$this->addNonRegistered($page, $user);
}
break;
}
}
if (Env::has('subs')) {
S::assert_xsrf_token();
$flags = new PlFlagSet();
foreach (Env::v('sub') as $key => $value) {
$flags->addFlag($key, $value);
}
XDB::execute('UPDATE watch
SET actions = {?}
WHERE uid = {?}', $flags, S::i('uid'));
S::user()->invalidWatchCache();
Platal::session()->updateNbNotifs();
}
if (Env::has('flags_contacts')) {
S::assert_xsrf_token();
XDB::execute('UPDATE watch
SET ' . XDB::changeFlag('flags', 'contacts', Env::b('contacts')) . '
WHERE uid = {?}', S::i('uid'));
S::user()->invalidWatchCache();
Platal::session()->updateNbNotifs();
}
if (Env::has('flags_mail')) {
S::assert_xsrf_token();
XDB::execute('UPDATE watch
SET ' . XDB::changeFlag('flags', 'mail', Env::b('mail')) . '
WHERE uid = {?}', S::i('uid'));
S::user()->invalidWatchCache();
Platal::session()->updateNbNotifs();
}
$user = S::user();
$nonins = new UserFilter(new UFC_WatchRegistration($user));
$promo = XDB::fetchColumn('SELECT promo
FROM watch_promo
WHERE uid = {?}
ORDER BY promo', S::i('uid'));
$page->assign('promo_count', count($promo));
$ranges = array();
$range_start = null;
$range_end = null;
foreach ($promo as $p) {
if (is_null($range_start)) {
$range_start = $range_end = $p;
} else {
if ($p != $range_end + 1) {
$ranges[] = array($range_start, $range_end);
$range_start = $range_end = $p;
} else {
$range_end = $p;
}
}
}
$ranges[] = array($range_start, $range_end);
$page->assign('promo_ranges', $ranges);
$page->assign('nonins', $nonins->getUsers());
$groups = XDB::fetchColumn('SELECT g.nom
FROM watch_group AS w
INNER JOIN groups AS g ON (g.id = w.groupid)
WHERE w.uid = {?}
ORDER BY g.nom', S::i('uid'));
$page->assign('groups', $groups);
$page->assign('groups_count', count($groups));
list($flags, $actions) = XDB::fetchOneRow('SELECT flags, actions
FROM watch
WHERE uid = {?}', S::i('uid'));
$flags = new PlFlagSet($flags);
$actions = new PlFlagSet($actions);
$page->assign('flags', $flags);
$page->assign('actions', $actions);
}
示例3: saveArticle
/** Save an article
* @p $a A reference to a NLArticle object (will be modified once saved)
*/
public function saveArticle($a)
{
$this->fetchArticles();
// Prevent cid to be 0 (use NULL instead)
$a->cid = $a->cid == 0 ? null : $a->cid;
if ($a->aid >= 0) {
// Article already exists in DB
XDB::execute('UPDATE newsletter_art
SET cid = {?}, pos = {?}, title = {?}, body = {?}, append = {?}
WHERE id = {?} AND aid = {?}', $a->cid, $a->pos, $a->title, $a->body, $a->append, $this->id, $a->aid);
} else {
// New article
XDB::startTransaction();
list($aid, $pos) = XDB::fetchOneRow('SELECT MAX(aid) AS aid, MAX(pos) AS pos
FROM newsletter_art AS a
WHERE a.id = {?}', $this->id);
$a->aid = ++$aid;
$a->pos = $a->pos ? $a->pos : ++$pos;
XDB::execute('INSERT INTO newsletter_art (id, aid, cid, pos, title, body, append)
VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?})', $this->id, $a->aid, $a->cid, $a->pos, $a->title, $a->body, $a->append);
XDB::commit();
}
// Update local ID of article
$this->arts[$a->aid] = $a;
}
示例4: formatPostalAddress
public function formatPostalAddress()
{
// Performs rough formatting.
$text = mb_strtoupper(replace_accent($this->text));
$text = str_replace(array(',', ';', '.', ':', '!', '?', '"', '«', '»'), '', $text);
$text = preg_replace('/( |\\t)+/', ' ', $text);
$arrayText = explode("\n", $text);
$arrayText = array_map('trim', $arrayText);
// Formats according to country rules. Thus we first identify the
// country, then apply corresponding formatting or translate country
// into default language.
$count = count($arrayText);
list($countryId, $country) = XDB::fetchOneRow('SELECT gc.iso_3166_1_a2, gc.country
FROM geoloc_countries AS gc
INNER JOIN geoloc_languages AS gl ON (gc.iso_3166_1_a2 = gl.iso_3166_1_a2)
WHERE gl.countryPlain = {?} OR gc.countryPlain = {?}', $arrayText[$count - 1], $arrayText[$count - 1]);
if (is_null($countryId)) {
$text = $this->formatPostalAddressFR($arrayText);
} elseif (in_array(strtoupper($countryId), Address::$formattings)) {
$text = call_user_func(array($this, 'formatPostalAddress' . strtoupper($countryId)), $arrayText);
} else {
$arrayText[$count - 1] = mb_strtoupper(replace_accent($country));
$text = implode("\n", $arrayText);
}
$this->postalText = $text;
}
示例5: handler_alias
function handler_alias($page, $action = null, $value = null)
{
global $globals;
$page->changeTpl('emails/alias.tpl');
$page->setTitle('Alias melix.net');
$user = S::user();
$page->assign('request', AliasReq::get_request($user->id()));
// Remove the email alias.
if ($action == 'delete') {
S::assert_xsrf_token();
XDB::execute('DELETE FROM email_source_account
WHERE uid = {?} AND type = \'alias_aux\'', $user->id());
require_once 'emails.inc.php';
fix_bestalias($user);
}
// Fetch existing auxiliary aliases.
list($alias, $old_alias) = XDB::fetchOneRow('SELECT CONCAT(s.email, \'@\', d.name), s.email
FROM email_source_account AS s
INNER JOIN email_virtual_domains AS d ON (s.domain = d.id)
WHERE s.uid = {?} AND s.type = \'alias_aux\'', $user->id());
$visibility = $user->hasProfile() && $user->profile()->isVisible($user->profile()->alias_pub);
$page->assign('current', $alias);
$page->assign('user', $user);
$page->assign('mail_public', $visibility);
if ($action == 'ask' && Env::has('alias') && Env::has('reason')) {
S::assert_xsrf_token();
// Retrieves user request.
$new_alias = Env::v('alias');
$reason = Env::v('reason');
$public = Env::v('public', 'off') == 'on' ? 'private' : 'hidden';
$page->assign('r_alias', $new_alias);
$page->assign('r_reason', $reason);
if ($public == 'private') {
$page->assign('r_public', true);
}
// Checks special charaters in alias.
if (!preg_match("/^[a-zA-Z0-9\\-.]{2,19}[a-zA-Z0-9\\-]\$/", $new_alias)) {
$page->trigError("L'adresse demandée n'est pas valide." . " Vérifie qu'elle comporte entre 3 et 20 caractères" . " et qu'elle ne contient que des lettres non accentuées," . " des chiffres ou les caractères '-' et '.'. De plus, elle ne" . " peut pas se terminer par un point.");
return;
} else {
// Checks if the alias has already been given.
$res = XDB::query('SELECT COUNT(email)
FROM email_source_account
WHERE email = {?} AND type = \'alias_aux\'', $new_alias);
if ($res->fetchOneCell() > 0) {
$page->trigError("L'alias {$new_alias} a déja été attribué. Tu ne peux donc pas l'obtenir.");
return;
}
// Checks if the alias has already been asked for.
$it = Validate::iterate('alias');
while ($req = $it->next()) {
if ($req->alias == $new_alias) {
$page->trigError("L'alias {$new_alias} a déja été demandé. Tu ne peux donc pas l'obtenir pour l'instant.");
return;
}
}
// Sends requests. This will erase any previous alias pending request.
$myalias = new AliasReq($user, $new_alias, $reason, $public, $old_alias);
$myalias->submit();
$page->assign('success', $new_alias);
return;
}
} elseif ($action == 'set' && ($value == 'public' || $value == 'private')) {
if (!S::has_xsrf_token()) {
return PL_FORBIDDEN;
}
if ($user->hasProfile()) {
XDB::execute('UPDATE profiles
SET alias_pub = {?}
WHERE pid = {?}', $value, $user->profile()->id());
}
exit;
}
}
示例6: extremePromotions
public static function extremePromotions($education)
{
return XDB::fetchOneRow("SELECT MIN(pe.promo_year) AS min, MAX(pe.promo_year) AS max\n FROM profile_education AS pe\n INNER JOIN profile_education_degree_enum AS pede ON (pe.degreeid = pede.id)\n WHERE pede.degree = {?} AND FIND_IN_SET('primary', pe.flags)", $education);
}
示例7: bestEmail
/**
* Tries to returns an email adresse of the user even if
* the emil field is empty.
*
* /!\ To set the 'email' field, use the email() setter
*
*/
public function bestEmail()
{
if ($this->email == '') {
if (empty($this->bestEmail)) {
$res = XDB::fetchOneRow("SELECT s.forlife, f.domain\n FROM studies AS s\n INNER JOIN formations AS f\n ON s.formation_id = f.formation_id\n WHERE s.uid = {?} ", $this->id);
$this->bestEmail = $res[0] . '@' . $res[1];
}
return $this->bestEmail;
}
return $this->email;
}
示例8: getOrigin
/**
* Get where the IP is from
* @param string $ip IP
* @return integer Binary combination of IPAddress:: constants
*
* TODO: add global cache
*/
public static function getOrigin($ip)
{
// Localhost
if ($ip == '127.0.0.1') {
return self::INTERNAL;
}
// Not Polytechnique
if (substr($ip, 0, 8) == '129.104.') {
// Polytechnique
$origin = self::POLYTECHIQUE;
// Read 3rd number
$digit4 = strpos($ip, '.', 9);
$ip3 = (int) substr($ip, 8, $digit4 - 8);
if (!$digit4 || !$ip3) {
return $origin;
}
// Polytechnique's DMZ is external
if ($ip3 == 30 || $ip3 == 247) {
return $origin;
}
$origin |= self::INTERNAL;
// 129.104.192.0/18 has access to student zone
if ($ip3 >= 192) {
$origin |= self::HAS_STUDENT;
}
// Query database to know wether this IP is a premise (=room for a group)
// or a student room
list($is_student, $is_premise) = XDB::fetchOneRow('SELECT EXISTS(SELECT rid
FROM rooms_users AS ru
WHERE ru.rid = ips.rid
) AS stu,
EXISTS(SELECT rid
FROM rooms_groups AS rg
WHERE rg.rid = ips.rid
) AS pre
FROM ips
WHERE ips.ip = {?}
LIMIT 1', $ip);
if ($is_student) {
$origin |= self::STUDENT;
}
if ($is_premise) {
$origin |= self::PREMISE;
}
return $origin;
}
// External IP
return 0;
}
示例9:
#!/usr/bin/php5
<?php
require_once 'connect.db.inc.php';
require_once '../../include/name.func.inc.php';
$pids = XDB::fetchOneRow("SELECT pid\n FROM profile_public_names\n WHERE firstname_ordinary = '0' OR lastname_marital = '0' OR lastname_ordinary = '0'");
XDB::execute("UPDATE profile_public_names\n SET firstname_ordinary = ''\n WHERE firstname_ordinary = '0'");
XDB::execute("UPDATE profile_public_names\n SET lastname_ordinary = ''\n WHERE lastname_ordinary = '0'");
XDB::execute("UPDATE profile_public_names\n SET lastname_ordinary = ''\n WHERE lastname_ordinary = '0'");
foreach ($pids as $pid) {
$profile = Profile::get($pid);
$item = XDB::fetchOneAssoc('SELECT *
FROM profile_public_names
WHERE pid = {?}', $pid);
update_display_names($profile, $item);
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
示例10: fromId
/**
* Get an object by its ID or with a secondary key
* @param mixed $id
* @param boolean $tryKey try the other key if $id is not an index
* @return false if nothing is found, a meta object otherwise
*
* Note: This method is to be called when there is only one expected object.
* For several objects, you should use FrankizFilter and Collection instead.
*/
public static function fromId($id, $tryKey = true)
{
if (empty($id)) {
return false;
}
// If $id is not an ID, return from result
if (!static::isId($id)) {
if (!$tryKey) {
return false;
}
try {
return static::from($id);
} catch (ItemNotFoundException $e) {
return false;
}
}
// Get schema
$schema = Schema::get(get_called_class());
$className = $schema->className();
$id_col = $schema->id();
$key_col = $schema->fromKey();
$mysql_key = $key_col && $key_col != $id_col ? XDB::format(' OR ' . $key_col . ' = {?}', $id) : '';
$res = XDB::fetchOneRow('SELECT ' . $id_col . ' AS id
FROM ' . $schema->table() . '
WHERE ' . $id_col . ' = {?}' . $mysql_key . '
LIMIT 1', $id);
return isset($res[0]) ? new $className($res[0]) : false;
}
示例11: handler_ajax_medal
function handler_ajax_medal($page, $i, $id)
{
pl_content_headers("text/html");
$page->changeTpl('profile/deco.medal.tpl', NO_SKIN);
list($valid, $has_levels) = XDB::fetchOneRow("SELECT NOT FIND_IN_SET('validation', flags), FIND_IN_SET('has_levels', flags)\n FROM profile_medal_enum\n WHERE id = {?}", $id);
$page->assign('id', $i);
$page->assign('medal', array('id' => $id, 'grade' => 0, 'valid' => $valid, 'has_levels' => $has_levels));
}