本文整理汇总了PHP中XDB::format方法的典型用法代码示例。如果您正苦于以下问题:PHP XDB::format方法的具体用法?PHP XDB::format怎么用?PHP XDB::format使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XDB
的用法示例。
在下文中一共展示了XDB::format方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: assign_json_to_map
public static function assign_json_to_map(PlPage $page, $pids = null)
{
if (!is_null($pids)) {
$where = XDB::format(' AND pa.pid IN {?}', $pids);
} else {
$where = '';
}
if (!S::logged() || !S::user()->checkPerms('directory_ax')) {
$where .= " AND pa.pub = 'public'";
$name_publicity = 'public';
} else {
if (!S::user()->checkPerms('directory_private')) {
$where .= " AND pa.pub = 'ax'";
$name_publicity = 'public';
} else {
$name_publicity = 'private';
}
}
$data = XDB::rawFetchAllAssoc('SELECT pa.latitude, pa.longitude, GROUP_CONCAT(DISTINCT p.hrpid SEPARATOR \',\') AS hrpid,
GROUP_CONCAT(pd.promo SEPARATOR \',\') AS promo,
GROUP_CONCAT(DISTINCT pd.' . $name_publicity . '_name, \' (\', pd.promo, \')\' SEPARATOR \', \') AS name,
GROUP_CONCAT(DISTINCT pa.pid SEPARATOR \',\') AS pid
FROM profile_addresses AS pa
INNER JOIN profiles AS p ON (pa.pid = p.pid)
INNER JOIN profile_display AS pd ON (pd.pid = pa.pid)
WHERE pa.type = \'home\' AND p.deathdate IS NULL AND pa.latitude IS NOT NULL AND pa.longitude IS NOT NULL' . $where . '
GROUP BY pa.latitude, pa.longitude');
$page->jsonAssign('data', $data);
}
示例2: save
public function save(ProfilePage $page, $field, $value)
{
XDB::execute("DELETE FROM profile_binets\n WHERE pid = {?}", $page->pid());
if (!count($value)) {
return;
}
$insert = array();
foreach ($value as $id => $text) {
$insert[] = XDB::format('({?}, {?})', $page->pid(), $id);
}
XDB::execute("INSERT INTO profile_binets (pid, binet_id)\n VALUES " . implode(',', $insert));
}
示例3: getComponentId
public static function getComponentId(array $component)
{
$where = '';
foreach ($component['types'] as $type) {
$where .= XDB::format(' AND FIND_IN_SET({?}, types)', $type);
}
$id = XDB::fetchOneCell('SELECT id
FROM profile_addresses_components_enum
WHERE short_name = {?} AND long_name = {?}' . $where, $component['short_name'], $component['long_name']);
if (is_null($id)) {
XDB::execute('INSERT INTO profile_addresses_components_enum (short_name, long_name, types)
VALUES ({?}, {?}, {?})', $component['short_name'], $component['long_name'], implode(',', $component['types']));
$id = XDB::insertId();
}
return $id;
}
示例4: commit
public function commit()
{
$values = array();
$i = 0;
foreach ($this->users as $user) {
$values[] = XDB::format('({?}, {?}, {?}, NOW(), {?}, {?}, {?})', $user['uid'], $user['hruid'], $user['email'], rand_url_id(12), $this->user->fullName(), $this->group);
if ($i == $this->limit) {
XDB::rawExecute('INSERT INTO register_pending_xnet (uid, hruid, email, date, hash, sender_name, group_name)
VALUES ' . implode(', ', $values));
$i = 0;
$values = array();
} else {
++$i;
}
}
XDB::rawExecute('INSERT INTO register_pending_xnet (uid, hruid, email, date, hash, sender_name, group_name)
VALUES ' . implode(', ', $values));
return true;
}
示例5: get
public static function get($id, $can_be_shortname = true)
{
if (!$id) {
return null;
}
if (!$can_be_shortname) {
$where = XDB::format('a.id = {?}', $id);
} else {
$where = XDB::format('a.diminutif = {?}', $id);
}
$res = XDB::query('SELECT a.*, d.nom AS domnom,
FIND_IN_SET(\'wiki_desc\', a.flags) AS wiki_desc,
FIND_IN_SET(\'notif_unsub\', a.flags) AS notif_unsub,
FIND_IN_SET(\'notify_all\', a.flags) AS notify_all,
(nls.id IS NOT NULL) AS has_nl, ad.text AS address,
p.display_tel AS phone, f.display_tel AS fax
FROM groups AS a
LEFT JOIN group_dom AS d ON d.id = a.dom
LEFT JOIN newsletters AS nls ON (nls.group_id = a.id)
LEFT JOIN profile_phones AS p ON (p.link_type = \'group\' AND p.link_id = a.id AND p.tel_id = 0)
LEFT JOIN profile_phones AS f ON (f.link_type = \'group\' AND f.link_id = a.id AND f.tel_id = 1)
LEFT JOIN profile_addresses AS ad ON (ad.type = \'group\' AND ad.groupid = a.id)
WHERE ' . $where);
if ($res->numRows() != 1) {
if ($can_be_shortname && (is_int($id) || ctype_digit($id))) {
return Group::get($id, false);
}
return null;
}
$data = $res->fetchOneAssoc();
$positions = XDB::fetchAllAssoc('SELECT position, uid
FROM group_members
WHERE asso_id = {?} AND position IS NOT NULL
ORDER BY position', $data['id']);
return new Group(array_merge($data, array('positions' => $positions)));
}
示例6: handler_trusted
function handler_trusted($page, $action = 'list', $id = null)
{
$page->setTitle('Sites tiers de confiance');
$page->assign('title', 'Mes sites tiers de confiance pour OpenId');
$table_editor = new PLTableEditor('openid/trusted', 'account_auth_openid', 'id');
$table_editor->set_where_clause(XDB::format('uid = {?}', S::user()->id()));
$table_editor->vars['uid']['display_list'] = false;
$table_editor->vars['uid']['display_item'] = false;
$table_editor->describe('url', 'site tiers', true);
$page->assign('deleteonly', true);
$table_editor->apply($page, $action, $id);
}
示例7: getAutoComplete
public function getAutoComplete($text, $subid = null)
{
$text = str_replace(array('%', '_'), '', $text);
if (is_null($this->ac_where) || $this->ac_where == '') {
$where = '';
} else {
$where = $this->ac_where . ' AND ';
}
if ($subid != null && array_key_exists($subid, $this->suboptions)) {
$where .= XDB::format($this->optfield . ' = {?} AND ', $subid);
}
$tests = $this->mkTests($this->valfield, $text);
if (!is_null($this->valfield2)) {
$tests = array_merge($tests, $this->mkTests($this->valfield2, $text));
}
$where .= '(' . implode(' OR ', $tests) . ')';
return XDB::fetchAllAssoc('SELECT ' . $this->valfield . ' AS field' . ($this->ac_distinct ? ', COUNT(DISTINCT ' . $this->ac_unique . ') AS nb' : '') . ($this->ac_withid ? ', ' . $this->idfield . ' AS id' : '') . '
FROM ' . $this->from . '
' . $this->ac_join . '
WHERE ' . $where . '
GROUP BY ' . $this->valfield . '
ORDER BY ' . ($this->ac_distinct ? 'nb DESC' : $this->valfield) . '
LIMIT ' . self::AUTOCOMPLETE_LIMIT);
}
示例8: getSortTokens
protected function getSortTokens(PlFilter $uf)
{
$toks = $uf->getNameTokens();
$scores = array();
// If there weren't any sort tokens, we shouldn't sort by score, sort by NULL instead
if (count($toks) == 0) {
return 'NULL';
}
foreach ($toks as $sub => $token) {
$scores[] = XDB::format('SUM(' . $sub . '.score + IF (' . $sub . '.token = {?}, 5, 0) )', $token);
}
return implode(' + ', $scores);
}
示例9: buildCondition
public function buildCondition(PlFilter $f)
{
$sub = $f->addGroupFilter();
return XDB::format($sub . '.gid IN {?}', $this->gids);
}
示例10: save
public function save(ProfilePage $page, $field, $value)
{
require_once 'name.func.inc.php';
$old = XDB::fetchOneAssoc('SELECT lastname_main, lastname_marital, lastname_ordinary,
firstname_main, firstname_ordinary, pseudonym
FROM profile_public_names
WHERE pid = {?}', $page->pid());
if ($has_diff = $this->diff($page->pid(), $old, $value['public_names'])) {
$new_names = new NamesReq(S::user(), $page->profile, $value['public_names'], $old);
$new_names->submit();
Platal::page()->assign('validation', true);
Platal::page()->trigWarning('La demande de modification des noms a bien été prise en compte.' . ' Un email sera envoyé dès que ces changements auront été effectués.');
}
XDB::execute('DELETE FROM profile_private_names
WHERE pid = {?}', $page->pid());
$values = array();
$nickname = $lastname = $firstname = 0;
if (isset($value['private_names'])) {
foreach ($value['private_names'] as $name) {
$values[] = XDB::format('({?}, {?}, {?}, {?})', $page->pid(), $name['type'], ${$name}['type']++, $name['name']);
}
}
if (count($values)) {
XDB::rawExecute('INSERT INTO profile_private_names (pid, type, id, name)
VALUES ' . implode(',', $values));
}
if ($has_diff) {
update_display_names($page->profile, $old, $value['private_names']);
} else {
update_display_names($page->profile, $value['public_names'], isset($value['private_names']) ? $value['private_names'] : null);
}
}
示例11: loadMainFieldsFromUIDs
protected static function loadMainFieldsFromUIDs(array $uids, $respect_order = true)
{
if (empty($uids)) {
return PlIteratorUtils::emptyIterator();
}
global $globals;
$joins = '';
$fields = array();
if ($globals->asso('id')) {
$joins .= XDB::format("LEFT JOIN group_members AS gpm ON (gpm.uid = a.uid AND gpm.asso_id = {?})\n", $globals->asso('id'));
$fields[] = 'gpm.perms AS group_perms';
$fields[] = 'gpm.comm AS group_comm';
$fields[] = 'gpm.position AS group_position';
}
if (count($fields) > 0) {
$fields = ', ' . implode(', ', $fields);
} else {
$fields = '';
}
if ($respect_order) {
$order = 'ORDER BY ' . XDB::formatCustomOrder('a.uid', $uids);
} else {
$order = '';
}
$uids = array_map(array('XDB', 'escape'), $uids);
return XDB::iterator('SELECT a.uid, a.hruid, a.registration_date, h.uid IS NOT NULL AS homonym, a.firstname, a.lastname,
IF(ef.email IS NULL, NULL, CONCAT(ef.email, \'@\', mf.name)) AS forlife,
IF(ef.email IS NULL, NULL, CONCAT(ef.email, \'@\', df.name)) AS forlife_alternate,
IF(eb.email IS NULL, NULL, CONCAT(eb.email, \'@\', mb.name)) AS bestalias,
(er.redirect IS NULL AND a.state = \'active\' AND FIND_IN_SET(\'mail\', at.perms)) AS lost,
a.email, a.full_name, a.directory_name, a.display_name, a.sort_name, a.sex = \'female\' AS gender,
IF(a.state = \'active\', CONCAT(at.perms, \',\', IF(a.user_perms IS NULL, \'\', a.user_perms)), \'\') AS perms,
a.user_perms, a.email_format, a.is_admin, a.state, a.type, at.description AS type_description, a.skin,
FIND_IN_SET(\'watch\', a.flags) AS watch, a.comment,
a.weak_password IS NOT NULL AS weak_access, g.g_account_name IS NOT NULL AS googleapps,
a.token IS NOT NULL AS token_access, a.token, a.last_version,
s.start AS lastlogin, s.host, fp.last_seen AS banana_last
' . $fields . '
FROM accounts AS a
INNER JOIN account_types AS at ON (at.type = a.type)
LEFT JOIN email_source_account AS ef ON (ef.uid = a.uid AND ef.type = \'forlife\')
LEFT JOIN email_virtual_domains AS mf ON (ef.domain = mf.id)
LEFT JOIN email_virtual_domains AS df ON (df.aliasing = mf.id AND
df.name LIKE CONCAT(\'%\', {?}) AND df.name NOT LIKE \'alumni.%\')
LEFT JOIN email_source_account AS eb ON (eb.uid = a.uid AND FIND_IN_SET(\'bestalias\',eb.flags))
LEFT JOIN email_virtual_domains AS mb ON (a.best_domain = mb.id)
LEFT JOIN email_redirect_account AS er ON (er.uid = a.uid AND er.flags = \'active\' AND er.broken_level < 3
AND er.type != \'imap\' AND er.type != \'homonym\')
LEFT JOIN homonyms_list AS h ON (h.uid = a.uid)
LEFT JOIN gapps_accounts AS g ON (a.uid = g.l_userid AND g.g_status = \'active\')
LEFT JOIN log_last_sessions AS ls ON (ls.uid = a.uid)
LEFT JOIN log_sessions AS s ON (s.id = ls.id)
LEFT JOIN forum_profiles AS fp ON (fp.uid = a.uid)
' . $joins . '
WHERE a.uid IN (' . implode(', ', $uids) . ')
GROUP BY a.uid
' . $order, $globals->mail->domain2, $globals->mail->domain2);
}
示例12: rebuildSearchTokens
public static function rebuildSearchTokens($pids, $transaction = true)
{
require_once 'name.func.inc.php';
if (!is_array($pids)) {
$pids = array($pids);
}
$keys = XDB::iterator("(SELECT pid, name, type, IF(type = 'nickname', 2, 1) AS score, '' AS public\n FROM profile_private_names\n WHERE pid IN {?})\n UNION\n (SELECT pid, lastname_main, 'lastname' AS type, 10 AS score, 'public' AS public\n FROM profile_public_names\n WHERE lastname_main != '' AND pid IN {?})\n UNION\n (SELECT pid, lastname_marital, 'lastname' AS type, 10 AS score, 'public' AS public\n FROM profile_public_names\n WHERE lastname_marital != '' AND pid IN {?})\n UNION\n (SELECT pid, lastname_ordinary, 'lastname' AS type, 10 AS score, 'public' AS public\n FROM profile_public_names\n WHERE lastname_ordinary != '' AND pid IN {?})\n UNION\n (SELECT pid, firstname_main, 'firstname' AS type, 10 AS score, 'public' AS public\n FROM profile_public_names\n WHERE firstname_main != '' AND pid IN {?})\n UNION\n (SELECT pid, firstname_ordinary, 'firstname' AS type, 10 AS score, 'public' AS public\n FROM profile_public_names\n WHERE firstname_ordinary != '' AND pid IN {?})\n UNION\n (SELECT pid, pseudonym, 'nickname' AS type, 10 AS score, 'public' AS public\n FROM profile_public_names\n WHERE pseudonym != '' AND pid IN {?})", $pids, $pids, $pids, $pids, $pids, $pids, $pids);
$names = array();
while ($key = $keys->next()) {
if ($key['name'] == '') {
continue;
}
$pid = $key['pid'];
$toks = split_name_for_search($key['name']);
$toks = array_reverse($toks);
/* Split the score between the tokens to avoid the user to be over-rated.
* Let says my user name is "Machin-Truc Bidule" and I also have a user named
* 'Machin Truc'. Distributing the score force "Machin Truc" to be displayed
* before "Machin-Truc" for both "Machin Truc" and "Machin" searches.
*/
$eltScore = ceil((double) $key['score'] / (double) count($toks));
$token = '';
foreach ($toks as $tok) {
$token = $tok . $token;
$names["{$pid}-{$token}"] = XDB::format('({?}, {?}, {?}, {?}, {?}, {?})', $token, $pid, soundex_fr($token), $eltScore, $key['public'], $key['type']);
}
}
if ($transaction) {
XDB::startTransaction();
}
XDB::execute('DELETE FROM search_name
WHERE pid IN {?}', $pids);
if (count($names) > 0) {
XDB::rawExecute('INSERT INTO search_name (token, pid, soundex, score, flags, general_type)
VALUES ' . implode(', ', $names));
}
if ($transaction) {
XDB::commit();
}
}
示例13: save
/** Save the global properties of this NL issue (title&co).
*/
public function save()
{
$errors = array();
// Fill the list of fields to update
$fields = array('title' => $this->title, 'mail_title' => $this->title_mail, 'head' => $this->head, 'signature' => $this->signature);
if (!empty($this->reply_to) && !isvalid_email($this->reply_to)) {
$errors[] = self::ERROR_INVALID_REPLY_TO;
} else {
$fields['reply_to'] = $this->reply_to;
}
if ($this->isEditable()) {
$fields['date'] = $this->date;
if (!preg_match('/^[-a-z0-9]+$/i', $this->shortname) || is_numeric($this->shortname)) {
$errors[] = self::ERROR_INVALID_SHORTNAME;
} else {
$fields['short_name'] = $this->shortname;
}
if ($this->sufb->isValid() || $this->sufb->isEmpty()) {
$fields['sufb_json'] = json_encode($this->sufb->export()->dict());
// If sufb_json is too long to be store, we do not store a truncated json and notify the user.
// The limit is LONGTEXT's one, ie 2^32 = 4294967296.
if (strlen($fields['sufb_json']) > 4294967295) {
$errors[] = self::ERROR_TOO_LONG_UFC;
}
} else {
$errors[] = self::ERROR_INVALID_UFC;
}
if ($this->nl->automaticMailingEnabled()) {
$fields['send_before'] = $this->send_before ? $this->send_before : null;
}
}
if (count($errors)) {
return $errors;
}
$field_sets = array();
foreach ($fields as $key => $value) {
$field_sets[] = XDB::format($key . ' = {?}', $value);
}
XDB::execute('UPDATE newsletter_issues
SET ' . implode(', ', $field_sets) . '
WHERE id={?}', $this->id);
if (XDB::affectedRows()) {
$this->refresh();
} else {
$errors[] = self::ERROR_SQL_SAVE;
}
return $errors;
}
示例14: layoutMinimodules
public function layoutMinimodules(array $layout)
{
$cols = array_keys(FrankizMiniModule::emptyLayout());
$sql = array();
foreach ($cols as $col) {
if (isset($layout[$col])) {
foreach ($layout[$col] as $row => $name) {
$sql[] = XDB::format('({?}, {?}, {?}, {?})', S::user()->id(), $name, $col, $row);
}
}
}
XDB::execute('INSERT INTO users_minimodules (uid, name, col, row)
VALUES ' . implode(', ', $sql) . '
ON DUPLICATE KEY UPDATE col = VALUES(col), row = VALUES(row)');
if (!(XDB::affectedRows() > 0)) {
return false;
}
$this->select(UserSelect::minimodules());
return true;
}
示例15: __construct
public function __construct(array $pids, array $link_types, array $link_ids, $visibility)
{
$where = array();
if (count($pids) != 0) {
$where[] = XDB::format('(pid IN {?})', $pids);
}
if (count($link_types) != 0) {
$where[] = XDB::format('(link_type IN {?})', $link_types);
}
if (count($link_ids) != 0) {
$where[] = XDB::format('(link_id IN {?})', $link_ids);
}
if ($visibility == null || !$visibility instanceof Visibility) {
$visibility = Visibility::defaultForRead();
}
$where[] = 'pve.best_display_level+0 <= pub+0';
$sql = 'SELECT search_tel AS search, display_tel AS display, comment, link_id,
tel_type AS type, link_type, tel_id AS id, pid, pub
FROM profile_phones
LEFT JOIN profile_visibility_enum AS pve ON (pve.access_level = {?})
WHERE ' . implode(' AND ', $where) . '
ORDER BY pid, link_id, tel_id';
$this->dbiter = XDB::iterator($sql, $visibility->level());
}