本文整理汇总了PHP中XDB::rawExecute方法的典型用法代码示例。如果您正苦于以下问题:PHP XDB::rawExecute方法的具体用法?PHP XDB::rawExecute怎么用?PHP XDB::rawExecute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XDB
的用法示例。
在下文中一共展示了XDB::rawExecute方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: handler_picture_token
function handler_picture_token(PlPage $page, $size, $token)
{
XDB::rawExecute('DELETE FROM profile_photo_tokens
WHERE expires <= NOW()');
$pid = XDB::fetchOneCell('SELECT pid
FROM profile_photo_tokens
WHERE token = {?}', $token);
if ($pid != null) {
$res = XDB::fetchOneAssoc('SELECT attach, attachmime, x, y, last_update
FROM profile_photos
WHERE pid = {?}', $pid);
$photo = PlImage::fromData($res['attach'], 'image/' . $res['attachmime'], $res['x'], $res['y'], $res['last_update']);
$photo->send();
} else {
return PL_NOT_FOUND;
}
}
示例2: 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;
}
示例3: preg_match
preg_match($pattern, $data['private_name'], $matches);
$has_ordinary = false;
$count = count($matches);
$update = array();
$has_ordinary = update_main($data, $matches[1], $update);
for ($i = 2; $i < $count; ++$i) {
if (preg_match('/^\\((?:M|Mme) (.+)\\)$/', $matches[$i], $pieces)) {
update_marital($data, $pieces[1], $update);
} elseif (preg_match('/^\\((?:alias|autres prénoms :|autres noms :) .+\\)$/', $matches[$i], $pieces)) {
update_private($data, $matches[$i], $data['pid'], $aliases, $perform_updates);
} else {
$has_ordinary = update_plain($data, $matches[$i], $update, $has_ordinary);
}
}
if (count($update)) {
$set = implode(', ', $update);
if ($perform_updates) {
XDB::rawExecute('UPDATE profile_public_names
SET ' . $set . '
WHERE pid = ' . $data['pid']);
} else {
print $set . ' (for pid ' . $data['pid'] . ")\n";
}
}
}
if ($perform_updates) {
print "\nUpdates done.\n";
} else {
print "\nIf this seems correct, relaunch this script with option --perform-updates=YES.\n";
}
/* vim:set et sw=4 sts=4 ts=4: */
示例4: handler_user
//.........这里部分代码省略.........
}
if (Post::s('type') != $user->type) {
$to_update['type'] = Post::s('type');
}
if (Post::i('watch', 0) != ($user->watch ? 1 : 0)) {
$to_update['flags'] = new PlFlagset();
$to_update['flags']->addFlag('watch', Post::i('watch'));
}
if (Post::t('comment') != $user->comment) {
$to_update['comment'] = Post::blank('comment') ? null : Post::t('comment');
}
$new_email = strtolower(Post::t('email'));
if (require_email_update($user, $new_email)) {
$to_update['email'] = $new_email;
$listClient->change_user_email($user->forlifeEmail(), $new_email);
update_alias_user($user->forlifeEmail(), $new_email);
}
}
}
if (!empty($to_update)) {
$res = XDB::query('SELECT *
FROM accounts
WHERE uid = {?}', $user->id());
$oldValues = $res->fetchAllAssoc();
$oldValues = $oldValues[0];
$set = array();
$diff = array();
foreach ($to_update as $k => $value) {
$value = XDB::format('{?}', $value);
$set[] = $k . ' = ' . $value;
$diff[$k] = array($oldValues[$k], trim($value, "'"));
unset($oldValues[$k]);
}
XDB::rawExecute('UPDATE accounts
SET ' . implode(', ', $set) . '
WHERE uid = ' . XDB::format('{?}', $user->id()));
$page->trigSuccess('Données du compte mise à jour avec succès');
$user = User::getWithUID($user->id());
/* Formats the $diff and send it to the site administrators. The rules are the folowing:
* -formats: password, token, weak_password
*/
foreach (array('password', 'token', 'weak_password') as $key) {
if (isset($diff[$key])) {
$diff[$key] = array('old value', 'new value');
} else {
$oldValues[$key] = 'old value';
}
}
$mail = new PlMailer('admin/useredit.mail.tpl');
$mail->assign('admin', S::user()->hruid);
$mail->assign('hruid', $user->hruid);
$mail->assign('diff', $diff);
$mail->assign('oldValues', $oldValues);
$mail->send();
}
// }}}
// Profile form {{{
if (Post::has('add_profile') || Post::has('del_profile') || Post::has('owner')) {
if (Post::i('del_profile', 0) != 0) {
XDB::execute('DELETE FROM account_profiles
WHERE uid = {?} AND pid = {?}', $user->id(), Post::i('del_profile'));
XDB::execute('DELETE FROM profiles
WHERE pid = {?}', Post::i('del_profile'));
} else {
if (!Post::blank('new_profile')) {
$profile = Profile::get(Post::t('new_profile'));
示例5: save
public function save(ProfilePage $page, $field, $value)
{
$deletePrivate = S::user()->isMe($page->owner) || S::admin();
XDB::execute('DELETE FROM pj, pjt
USING profile_job AS pj
LEFT JOIN profile_job_term AS pjt ON (pj.pid = pjt.pid AND pj.id = pjt.jid)
WHERE pj.pid = {?}' . ($deletePrivate ? '' : ' AND pj.pub IN (\'public\', \'ax\')'), $page->pid());
Address::deleteAddresses($page->pid(), Address::LINK_JOB, null, null, $deletePrivate);
Phone::deletePhones($page->pid(), Phone::LINK_JOB, null, $deletePrivate);
$previous_requests = EntrReq::get_typed_requests($page->pid(), 'entreprise');
foreach ($previous_requests as $request) {
$request->clean();
}
$terms_values = array();
foreach ($value as $id => &$job) {
if (($job['pub'] != 'private' || $deletePrivate) && (isset($job['name']) && $job['name'])) {
if (isset($job['jobid']) && $job['jobid']) {
XDB::execute('INSERT INTO profile_job (pid, id, description, email, entry_year,
url, pub, email_pub, jobid)
VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})', $page->pid(), $id, $job['description'], $job['w_email'], $job['w_entry_year'], $job['w_url'], $job['pub'], $job['w_email_pub'], $job['jobid']);
} else {
XDB::execute('INSERT INTO profile_job (pid, id, description, email, entry_year,
url, pub, email_pub)
VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})', $page->pid(), $id, $job['description'], $job['w_email'], $job['w_entry_year'], $job['w_url'], $job['pub'], $job['w_email_pub']);
$request = new EntrReq(S::user(), $page->profile, $id, $job['name'], $job['hq_acronym'], $job['hq_url'], $job['hq_email'], $job['hq_fixed'], $job['hq_fax'], $job['hq_address']);
$request->submit();
sleep(1);
}
$address = new Address(array_merge($job['w_address'], array('pid' => $page->pid(), 'id' => $id, 'type' => Address::LINK_JOB)));
$address->save();
Phone::savePhones($job['w_phone'], $page->pid(), Phone::LINK_JOB, $id);
if (isset($job['terms'])) {
foreach ($job['terms'] as $term) {
$terms_values[] = XDB::format('({?}, {?}, {?}, {?})', $page->pid(), $id, $term['jtid'], "original");
}
}
}
}
if (count($terms_values) > 0) {
XDB::rawExecute('INSERT INTO profile_job_term (pid, jid, jtid, computed)
VALUES ' . implode(', ', $terms_values) . '
ON DUPLICATE KEY UPDATE computed = VALUES(computed)');
}
if (S::user()->isMe($page->owner) && count($value) > 1) {
Platal::page()->trigWarning('Attention, tu as plusieurs emplois sur ton profil. Pense à supprimer ceux qui sont obsolètes.');
}
}
示例6: 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);
}
}
示例7: 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();
}
}
示例8: ON
// Do not store backtraces.
$it = XDB::iterator('SELECT gl.language, gc.country, gc.iso_3166_1_a2
FROM geoloc_languages AS gl
INNER JOIN geoloc_countries AS gc ON (gl.iso_3166_1_a2 = gc.iso_3166_1_a2)');
echo $it->total() . " pays à remplir.\n";
while ($item = $it->next()) {
if ($item['language'] != 'fr') {
$address = new Address(array('text' => $item['country']));
$gmapsGeocoder = new GMapsGeocoder();
$gmapsGeocoder->getGeocodedAddress($address, $item['language'], true);
$country = $address->country;
} else {
$country = $item['country'];
}
$countryPlain = mb_strtoupper(replace_accent($country));
XDB::execute('UPDATE geoloc_languages
SET country = {?}, countryPlain = {?}
WHERE iso_3166_1_a2 = {?} AND language = {?}', $country, $countryPlain, $item['iso_3166_1_a2'], $item['language']);
sleep(1);
}
$it = XDB::rawIterator('SELECT country, iso_3166_1_a2
FROM geoloc_countries');
echo $it->total() . " pays à simplifier.\n";
while ($item = $it->next()) {
XDB::execute('UPDATE geoloc_countries
SET countryPlain = {?}
WHERE iso_3166_1_a2 = {?}', mb_strtoupper(replace_accent($item['country'])), $item['iso_3166_1_a2']);
}
// Fixes geocoding errors.
XDB::rawExecute("REPLACE INTO geoloc_languages (iso_3166_1_a2, language, country, countryPlain)\n VALUES ('FM', 'en', 'Federated States of Micronesia', 'FEDERATED STATES OF MICRONESIA'),\n ('MH', 'en', 'Republic of the Marshall Islands', 'REPUBLIC OF THE MARSHALL ISLANDS'),\n ('PS', 'ar', 'دولة فلسطين', 'دولة فلسطين'),\n ('SB', 'en', 'Solomon Islands', 'SOLOMON ISLANDS'),\n ('TW', 'zh-CN', '台湾', '台湾'),\n ('TW', 'zh-TW', '台灣', '台灣'),\n ('CZ', 'cs', 'Česká Republika', 'CESKA REPUBLIKA'),\n ('CZ', 'sk', 'Česká Republika', 'CESKA REPUBLIKA'),\n ('DO', 'es', 'República Dominicana', 'REPUBLICA DOMINICANA'),\n ('GD', 'en', 'Grenada', 'GRENADA'),\n ('MD', 'ro', 'Republica Moldova', 'REPUBLICA MOLDOVA'),\n ('RU', 'ru', 'Россия', 'Россия'),\n ('SK', 'sk', 'Slovenská Republika', 'SLOVENSKA REPUBLIKA'),\n ('TZ', 'en', 'United Republic of Tanzania', 'UNITED REPUBLIC OF TANZANIA')");
/* vim:set et sw=4 sts=4 ts=4: */
示例9: handler_admin_member_new
function handler_admin_member_new($page, $email = null)
{
global $globals;
$page->changeTpl('xnetgrp/membres-add.tpl');
$page->addJsLink('xnet_members.js');
if (is_null($email)) {
return;
}
S::assert_xsrf_token();
$suggest_account_activation = false;
// FS#703 : $_GET is urldecoded twice, hence
// + (the data) => %2B (in the url) => + (first decoding) => ' ' (second decoding)
// Since there can be no spaces in emails, we can fix this with :
$email = str_replace(' ', '+', $email);
$is_valid_email = isvalid_email($email);
// X not registered to main site.
if (Env::v('x') && Env::i('userid') && $is_valid_email) {
$user = User::getSilentWithUID(Env::i('userid'));
if (!$user) {
$page->trigError('Utilisateur invalide.');
return;
}
// User has an account but is not yet registered.
if ($user->state == 'pending') {
// Add email in account table.
XDB::query('UPDATE accounts
SET email = {?}
WHERE uid = {?} AND email IS NULL', $email, $user->id());
// Add email for marketing if required.
if (Env::v('marketing')) {
$market = Marketing::get($user->uid, $email);
if (!$market) {
$market = new Marketing($user->uid, $email, 'group', $globals->asso('nom'), Env::v('marketing_from'), S::v('uid'));
$market->add();
}
}
} elseif (Env::v('broken')) {
// Add email for broken if required.
$valid = new BrokenReq(S::user(), $user, $email, 'Groupe : ' . $globals->asso('nom'));
$valid->submit();
}
} else {
$user = User::getSilent($email);
// Wrong email and no user: failure.
if (is_null($user) && (!$is_valid_email || !User::isForeignEmailAddress($email))) {
$page->trigError('« <strong>' . $email . '</strong> » n\'est pas une adresse email valide.');
return;
}
// Deals with xnet accounts.
if (is_null($user) || $user->type == 'xnet') {
// User is of type xnet. There are 3 possible cases:
// * the email is not known yet: we create a new account and
// propose to send an email to the user so he can activate
// his account,
// * the email is known but the user was not contacted in order to
// activate yet: we propose to send an email to the user so he
// can activate his account,
// * the email is known and the user was already contacted or has
// an active account: nothing to be done.
list($mbox, $domain) = explode('@', strtolower($email));
$hruid = User::makeHrid($mbox, $domain, 'ext');
// User might already have an account (in another group for example).
$user = User::getSilent($hruid);
// If the user has no account yet, creates new account: build names from email address.
if (empty($user)) {
require_once 'name.func.inc.php';
$parts = explode('.', $mbox);
if (count($parts) == 1) {
$lastname = $display_name = capitalize_name($mbox);
$firstname = '';
} else {
$display_name = $firstname = capitalize_name($parts[0]);
$lastname = capitalize_name(implode(' ', array_slice($parts, 1)));
}
$full_name = build_full_name($firstname, $lastname);
$directory_name = build_directory_name($firstname, $lastname);
$sort_name = build_sort_name($firstname, $lastname);
XDB::execute('INSERT INTO accounts (hruid, display_name, full_name, directory_name, sort_name,
firstname, lastname, email, type, state)
VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, \'xnet\', \'disabled\')', $hruid, $display_name, $full_name, $directory_name, $sort_name, $firstname, $lastname, $email);
$user = User::getSilent($hruid);
}
$suggest_account_activation = $this->suggest($user);
}
}
if ($user) {
// First check if the user used to be in this group.
XDB::rawExecute('DELETE FROM group_former_members
WHERE remember AND DATE_SUB(NOW(), INTERVAL 1 YEAR) > unsubsciption_date');
$former_member = XDB::fetchOneCell('SELECT remember
FROM group_former_members
WHERE uid = {?} AND asso_id = {?}', $user->id(), $globals->asso('id'));
if ($former_member === 1) {
$page->trigError($user->fullName() . ' est un ancien membre du groupe qui ne souhaite pas y revenir. S\'il souhaite revenir dans le groupe, il faut qu\'il en fasse la demande sur la page d\'accueil du groupe.');
return;
} elseif (!is_null($former_member) && Post::i('force_continue') == 0) {
$page->trigWarning($user->fullName() . ' est un ancien membre du groupe qui s\'est récemment désinscrit. Malgré cela, si tu penses qu\'il souhaite revenir, cliquer sur « Ajouter » l\'ajoutera bien au groupe cette fois.');
$page->assign('force_continue', 1);
return;
}
//.........这里部分代码省略.........
示例10: ON
XDB::rawExecute('UPDATE fusionax_formations AS f
LEFT JOIN profile_education_enum AS pe ON (pe.name = f.Intitule_formation)
LEFT JOIN profile_education_degree_enum AS pd ON (pd.abbreviation = f.Intitule_diplome)
LEFT JOIN profile_education_field_enum AS pf ON (pf.field = f.Descr_formation)
SET f.eduid = pe.id, f.degreeid = pd.id, f.fieldid = pf.id');
XDB::rawExecute('ALTER TABLE profile_education_enum DROP INDEX name');
XDB::rawExecute('ALTER TABLE profile_education_degree_enum DROP INDEX abbreviation');
// Updates non complete educations.
XDB::rawExecute("UPDATE profile_education AS e\n INNER JOIN fusionax_formations AS f ON (f.pid = e.pid)\n INNER JOIN profile_education_degree_enum AS pd ON (e.degreeid = pd.id)\n INNER JOIN profile_education_degree_enum AS fd ON (f.degreeid = fd.id)\n SET e.eduid = f.eduid\n WHERE NOT FIND_IN_SET('primary', e.flags) AND e.eduid IS NULL AND pd.level = fd.level");
XDB::rawExecute("UPDATE profile_education AS e\n INNER JOIN fusionax_formations AS f ON (f.pid = e.pid)\n SET e.degreeid = f.degreeid\n WHERE NOT FIND_IN_SET('primary', e.flags) AND e.degreeid IS NULL AND e.eduid = f.eduid");
// Deletes duplicates.
XDB::rawExecute("DELETE f\n FROM fusionax_formations AS f\n INNER JOIN profile_education_degree_enum AS fd ON (fd.abbreviation = f.Intitule_diplome)\n INNER JOIN profile_education AS e ON (e.pid = f.pid AND NOT FIND_IN_SET('primary', e.flags))\n INNER JOIN profile_education_degree_enum AS pd ON (pd.id = e.degreeid)\n WHERE f.eduid = e.eduid AND fd.level = pd.level");
// Updates merge_issues table.
XDB::rawExecute("UPDATE profile_merge_issues AS pm\n INNER JOIN fusionax_formations AS f ON (f.pid = pm.pid)\n SET pm.issues = IF(pm.issues, CONCAT(pm.issues, ',', 'education'), 'education')");
XDB::rawExecute("INSERT IGNORE INTO profile_merge_issues (pid, issues)\n SELECT pid, 'education'\n FROM fusionax_formations");
$id = 0;
$continue = 1;
while ($continue > 0) {
XDB::rawExecute("INSERT IGNORE INTO profile_education (id, pid, eduid, degreeid, fieldid, program)\n SELECT {$id}, pid, eduid, degreeid, fieldid, Descr_formation\n FROM fusionax_formations");
XDB::rawExecute("DELETE f\n FROM fusionax_formations AS f\n INNER JOIN profile_education AS pe ON (pe.pid = f.pid AND pe.id = {$id})\n WHERE (pe.eduid = f.eduid OR (pe.eduid IS NULL AND f.eduid IS NULL))\n AND (pe.degreeid = f.degreeid OR (pe.degreeid IS NULL AND f.degreeid IS NULL))\n AND (pe.fieldid = f.fieldid OR (pe.fieldid IS NULL AND f.fieldid IS NULL))\n AND (pe.program = f.Descr_formation OR (pe.program IS NULL AND f.Descr_formation IS NULL))");
$continue = XDB::affectedRows();
++$id;
}
// Updates merge_issues table (eduid and degreeid should never be empty).
XDB::rawExecute("UPDATE profile_merge_issues AS pm\n INNER JOIN profile_education AS pe ON (pe.pid = pm.pid)\n SET pm.issues = CONCAT(pm.issues, ',', 'education')\n WHERE NOT FIND_IN_SET('education', pm.issues) AND (pe.eduid = '' OR pe.eduid IS NULL OR pe.degreeid = '' OR pe.degreeid IS NULL)");
XDB::rawExecute("INSERT IGNORE INTO profile_merge_issues (pid, issues)\n SELECT pid, 'education'\n FROM profile_education\n WHERE eduid = '' OR eduid IS NULL OR degreeid = '' OR degreeid IS NULL");
XDB::rawExecute('DROP TABLE IF EXISTS fusionax_formations');
echo "Educations inclusions finished.\n";
echo "All inclusions are done.\n";
XDB::commit();
/* vim:set et sw=4 sts=4 ts=4: */