本文整理汇总了PHP中XDB::iterator方法的典型用法代码示例。如果您正苦于以下问题:PHP XDB::iterator方法的具体用法?PHP XDB::iterator怎么用?PHP XDB::iterator使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XDB
的用法示例。
在下文中一共展示了XDB::iterator方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
public function __construct(User $_user, Profile $_profile, $_id, $_name, $_acronym, $_url, $_email, $_tel, $_fax, $_address, $_stamp = 0)
{
parent::__construct($_user, $_profile, false, 'entreprise', $_stamp);
$this->id = $_id;
$this->name = $_name;
$this->acronym = $_acronym;
$this->url = $_url;
$this->email = $_email;
$this->tel = $_tel;
$this->fax = $_fax;
$this->address = $_address;
$_name = preg_replace('/[^0-9a-z]/i', ' ', strtolower(replace_accent($_name)));
$name = explode(" ", $_name);
$name_array = array_map("trim", $name);
$length = count($name_array);
$where = "";
for ($i = 0; $i < $length; $i++) {
if (strlen($name_array[$i]) > 2) {
if ($where !== "") {
$where .= " OR ";
}
$where .= "name LIKE '%" . $name_array[$i] . "%'";
}
}
if ($where != '') {
$res = XDB::iterator('SELECT name
FROM profile_job_enum
WHERE ' . $where);
$this->suggestions = "| ";
while ($sug = $res->next()) {
$this->suggestions .= $sug['name'] . " | ";
}
}
}
示例2: batchSelect
public static function batchSelect(array $questions, $options = null)
{
if (empty($questions)) {
return;
}
if (empty($options)) {
$options = self::SELECT_BASE;
}
$bits = self::optionsToBits($options);
$questions = array_combine(self::toIds($questions), $questions);
if ($bits & self::SELECT_BASE) {
$iter = XDB::iterator('SELECT qid AS id, rank, label, description,
mandatory, type, datas
FROM surveys_questions
WHERE qid IN {?}
GROUP BY qid', self::toIds($questions));
while ($datas = $iter->next()) {
$questions[$datas['id']]->decodeDatas(json_decode($datas['datas']));
unset($datas['datas']);
$questions[$datas['id']]->fillFromArray($datas);
}
}
if ($bits & self::SELECT_ANSWERS) {
$iter = XDB::iterRow('SELECT ssid, qid, datas
FROM surveys_answers
WHERE qid IN {?}
GROUP BY qid', self::toIds($questions));
while (list($ssid, $qid, $datas) = $iter->next()) {
$questions[$qid]->decodeAnswer($ssid, json_decode($datas));
}
}
}
示例3: fetch
protected function fetch(PlUser $user)
{
global $globals;
if (!is_null($user)) {
return new UserFilterIterator(XDB::iterator("SELECT id, titre AS title, texte, contacts,\n create_date AS publication,\n FIND_IN_SET('photo', flags) AS photo,\n CONCAT({?}, '/#art', id) AS link\n FROM group_announces\n WHERE expiration >= NOW() AND asso_id = {?}", $this->link, $globals->asso('id'), $user));
} else {
return XDB::iterator("SELECT id, titre AS title, texte, create_date AS publication,\n CONCAT({?}, '/#art', id) AS link,\n NULL AS photo, NULL AS contacts\n FROM group_announces\n WHERE FIND_IN_SET('public', flags) AND expiration >= NOW() AND asso_id = {?}", $this->link, $globals->asso('id'));
}
}
示例4: handler_participants
protected function handler_participants(Collection $activities, $fields)
{
$res = XDB::iterator('SELECT id, participant
FROM activities_participants
WHERE id IN {?}', $activities->ids());
$users = new Collection('User');
$part = array();
while ($datas = $res->next()) {
$part[$datas['id']][] = $users->addget($datas['participant']);
}
foreach ($part as $key => $obj) {
$activities->get($key)->participants($obj);
}
$users->select($this->subs['participants']);
}
示例5: handler_ig_events
function handler_ig_events($page)
{
require_once 'gadgets/gadgets.inc.php';
init_igoogle_html('gadgets/ig-events.tpl', AUTH_COOKIE);
$events = XDB::iterator("SELECT SQL_CALC_FOUND_ROWS\n e.id, e.titre, UNIX_TIMESTAMP(e.creation_date) AS creation_date,\n ev.uid IS NULL AS nonlu, e.uid\n FROM announces AS e\n LEFT JOIN announce_read AS ev ON (e.id = ev.evt_id AND ev.uid = {?})\n WHERE FIND_IN_SET('valide', e.flags) AND expiration >= NOW()\n ORDER BY e.creation_date DESC", S::i('uid'));
$page->assign('event_count', XDB::query("SELECT FOUND_ROWS()")->fetchOneCell());
Platal::load('events', 'feed.inc.php');
$user = S::user();
$data = array();
while ($e = PlFeed::nextEvent($events, $user)) {
$data[] = $e;
if (count($data) == 5) {
break;
}
}
$page->assign('events', $data);
}
示例6: getSubTerms
/** Retreives subterms of a term to display in a tree
* @param $parent_jtid the id of the parent jobterm
* @param $filter enable filtering on jobterms that have been used in jobs or in mentors, in
* that case, each row as an 'nb' field that counts all profiles that match
* @param $token_filter a text (usually ending by %) the retreived subterms to jobterms that
* contains this tokens or that one of their children contains it.
* @return an iterator over jobterms with jtid, name, full_name and nb
*/
public static function getSubTerms($parent_jtid, $filter = self::ALL, $token_filter = null)
{
switch ($filter) {
case self::ALL:
default:
$table = '';
break;
case self::ONLY_JOBS:
$table = 'profile_job_term';
break;
case self::ONLY_MENTORS:
$table = 'profile_mentor_term';
break;
}
// we are in a tree looking for certain job terms:
$countingterms = false;
if ($table) {
$count = ', COUNT(DISTINCT j.pid) AS nb';
$join = ' INNER JOIN profile_job_term_relation AS r2 ON (r2.jtid_1 = e.jtid)
INNER JOIN ' . $table . ' AS j ON (j.jtid = r2.jtid_2)';
$countingterms = 'j.jtid';
} else {
$count = $join = '';
}
if (!empty($token_filter)) {
$join .= ' INNER JOIN profile_job_term_relation AS rtf ON (rtf.jtid_1 = e.jtid) ' . self::token_join_query(self::tokenize($token_filter), 'rtf', 'jtid_2');
if (!$countingterms) {
$countingterms = 'rtf.jtid_2';
}
}
if (!$countingterms) {
$select_leaf = 'IF(r_subbranch.jtid_1 IS NULL,1,0)';
$join .= ' LEFT JOIN profile_job_term_relation AS r_subbranch ON (r_subbranch.jtid_1 = e.jtid AND r_subbranch.computed = "original") ';
} else {
// branches that have counting terms different that
// main branch will have subbranches
$select_leaf = 'MIN(' . $countingterms . ' = e.jtid)';
}
return XDB::iterator('SELECT e.jtid, e.name, e.full_name' . $count . ', ' . $select_leaf . ' AS leaf
FROM profile_job_term_enum AS e
INNER JOIN profile_job_term_relation AS r ON (r.jtid_2 = e.jtid)' . $join . '
WHERE r.jtid_1 = {?} AND r.computed = "original"
GROUP BY e.jtid
ORDER BY e.name', $parent_jtid);
}
示例7: handler_logs_sessions
function handler_logs_sessions($page)
{
$iter = XDB::iterator('SELECT id, uid, host, ip, forward_ip, forward_host,
browser, suid, flags, start
FROM log_sessions
ORDER BY start DESC
LIMIT 50');
$sessions = array();
$users = new Collection('User');
while ($session = $iter->next()) {
$user = $users->addget($session['uid']);
$sessions[$session['id']] = array('user' => $user, 'host' => $session['host'], 'ip' => uint_to_ip($session['ip']), 'forward_host' => $session['forward_host'], 'forward_ip' => uint_to_ip($session['forward_ip']), 'browser' => $session['browser'], 'suid' => $session['suid'], 'flags' => $session['flags'], 'start' => new FrankizDateTime($session['start']));
}
$users->select(UserSelect::base());
$page->assign('title', "Logs des sessions");
$page->assign('sessions', $sessions);
$page->changeTpl('admin/logs_sessions.tpl');
}
示例8: education_options
function education_options($current = 0)
{
$html = '<option value="-1"> </option>';
$res = XDB::iterator("SELECT e.id AS id, gc.country,\n IF(CHAR_LENGTH(e.name) > 76, e.abbreviation, e.name) AS name\n FROM profile_education_enum AS e\n LEFT JOIN geoloc_countries AS gc ON (e.country = gc.iso_3166_1_a2)\n WHERE EXISTS (SELECT *\n FROM profile_education_degree AS d\n WHERE e.id = d.eduid) AND e.name != {?}\n ORDER BY gc.country, e.name", Profile::EDU_X);
$country = "";
while ($arr_edu = $res->next()) {
if ($arr_edu["country"] != $country) {
if ($country) {
$html .= '</optgroup>';
}
$country = $arr_edu["country"];
$html .= '<optgroup label="' . $country . '">';
}
$html .= '<option value="' . $arr_edu["id"] . '"';
if ($arr_edu["id"] == $current) {
$html .= " selected='selected'";
}
$html .= '>' . htmlspecialchars($arr_edu["name"]) . "</option>\n";
}
if ($country) {
$html .= '</optgroup>';
}
return $html;
}
示例9: handler_skin
function handler_skin($page)
{
global $globals;
$page->changeTpl('platal/skins.tpl');
$page->setTitle('Skins');
if (Env::has('newskin')) {
// formulaire soumis, traitons les données envoyées
XDB::execute('UPDATE accounts
SET skin = {?}
WHERE uid = {?}', Env::i('newskin'), S::i('uid'));
S::kill('skin');
Platal::session()->setSkin();
}
$res = XDB::query('SELECT id
FROM skins
WHERE skin_tpl = {?}', S::v('skin'));
$page->assign('skin_id', $res->fetchOneCell());
$sql = 'SELECT s.*, auteur, COUNT(*) AS nb
FROM skins AS s
LEFT JOIN accounts AS a ON (a.skin = s.id)
WHERE skin_tpl != \'\' AND ext != \'\'
GROUP BY id ORDER BY s.date DESC';
$page->assign('skins', XDB::iterator($sql));
}
示例10: handler_relance
function handler_relance($page)
{
$page->changeTpl('marketing/relance.tpl');
if (Post::has('relancer')) {
global $globals;
$nbdix = $globals->core->NbIns;
$sent = array();
$users = User::getBulkUsersWithUIDs($_POST['relance']);
foreach ($users as $user) {
if ($tmp = Marketing::relance($user, $nbdix)) {
$sent[] = $tmp . ' a été relancé.';
}
}
$page->assign('sent', $sent);
}
$page->assign('relance', XDB::iterator('SELECT r.date, r.relance, r.uid
FROM register_pending AS r
WHERE hash != \'INSCRIT\'
ORDER BY date DESC'));
}
示例11: COUNT
// to add a forlife-looking nickname at some point, we'll do it manually.
if (!preg_match('/^[-a-z]+\\.[-a-z]+\\.\\d{4}$/', $nickname['nickname'])) {
$pending_tasks = XDB::fetchOneCell("SELECT COUNT(*)\n FROM gapps_queue\n WHERE q_recipient_id = {?} AND p_status = 'idle' AND j_type = 'n_create' AND j_parameters = {?}", $nickname['id'], json_encode($nickname));
if ($pending_tasks == 0) {
XDB::execute("INSERT INTO gapps_queue\n SET q_recipient_id = {?}, p_entry_date = NOW(), p_notbefore_date = NOW(),\n p_priority = 'offline', j_type = 'n_create', j_parameters = {?}", $nickname['id'], json_encode($nickname));
}
}
}
/* Checks that all nicknames in GoogleApps are also aliases on plat/al side.
Deletes the invalid ones. */
$res = XDB::iterator("SELECT g.l_userid AS id, g.g_nickname AS nickname\n FROM gapps_nicknames AS g\n LEFT JOIN email_source_account AS s ON (s.uid = g.l_userid AND s.type = 'alias' AND s.email = g.g_nickname)\n WHERE g.l_userid IS NOT NULL AND s.email IS NULL");
while ($nickname = $res->next()) {
$pending_tasks = XDB::fetchOneCell("SELECT COUNT(*)\n FROM gapps_queue\n WHERE q_recipient_id = {?} AND p_status = 'idle' AND j_type = 'n_delete' AND j_parameters = {?}", $nickname['id'], json_encode($nickname));
if ($pending_tasks == 0) {
XDB::execute("INSERT INTO gapps_queue\n SET q_recipient_id = {?}, p_entry_date = NOW(), p_notbefore_date = NOW(),\n p_priority = 'offline', j_type = 'n_delete', j_parameters = {?}", $nickname['id'], json_encode($nickname));
}
}
/* Retrieves successful job queues for post-queue processing. */
$res = XDB::iterator("SELECT q_id, q_recipient_id, j_type, j_parameters\n FROM gapps_queue\n WHERE p_status = 'success' AND q_recipient_id IS NOT NULL");
while ($job = $res->next()) {
if ($job['j_type'] == 'u_create') {
post_queue_u_create($job);
} else {
if ($job['j_type'] == 'u_update') {
post_queue_u_update($job);
}
}
}
/* Removes successful jobs, and old failed jobs. */
XDB::execute("DELETE FROM gapps_queue\n WHERE p_status = 'success' OR\n (p_status = 'hardfail' AND p_end_date < DATE_SUB(NOW(), INTERVAL 15 DAY))");
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
示例12: _prepare
public function _prepare(PlPage $page, $id)
{
require_once 'emails.combobox.inc.php';
fill_email_combobox($page, array('redirect', 'job', 'stripped_directory'), $this->owner);
if (!S::user()->isMe($this->owner)) {
$res = XDB::iterator('SELECT id, name
FROM profile_corps_enum
ORDER BY id = 1 DESC, name');
$page->assign('original_corps', $res->fetchAllAssoc());
}
$res = XDB::iterator("SELECT id, name\n FROM profile_corps_enum\n WHERE still_exists = 1\n ORDER BY id = 1 DESC, name");
$page->assign('current_corps', $res->fetchAllAssoc());
$res = XDB::iterator("SELECT id, name\n FROM profile_corps_rank_enum\n ORDER BY id = 1 DESC, name");
$page->assign('corps_rank', $res->fetchAllAssoc());
}
示例13: array
#!/usr/bin/php5
<?php
require_once 'connect.db.inc.php';
$globals->debug = 0;
//do not store backtraces
$terms = XDB::iterator('SELECT `jtid`, `name` FROM `profile_job_term_enum`');
while ($term = $terms->next()) {
$tokens = array_unique(JobTerms::tokenize($term['name']));
if (!count($tokens)) {
continue;
}
$values = array();
foreach ($tokens as $t) {
$values[] = '(' . XDB::escape($t) . ',' . XDB::escape($term['jtid']) . ')';
}
XDB::execute('INSERT IGNORE INTO `profile_job_term_search` (`search`,`jtid`) VALUES ' . implode(',', $values));
}
/* vim:set et sw=4 sts=4 ts=4: */
示例14: getPendingAccounts
public static function getPendingAccounts($login, $iterator = false)
{
if (strpos($login, '@') === false) {
return null;
}
list($login, $domain) = explode('@', $login);
if ($domain && !self::isMainMailDomain($domain)) {
return null;
}
$sql = "SELECT uid, full_name\n FROM accounts\n WHERE state = 'pending' AND REPLACE(hruid, '-', '') LIKE\n CONCAT('%', REPLACE(REPLACE(REPLACE({?}, ' ', ''), '-', ''), '\\'', ''), '%')\n ORDER BY full_name";
if ($iterator) {
return XDB::iterator($sql, $login);
} else {
$res = XDB::query($sql, $login);
return $res->fetchAllAssoc();
}
}
示例15: helper_main
protected function helper_main(Collection $metas, array $cols, array $joins)
{
$table = $this->schema->table();
$as = $this->schema->tableAs();
$id = $this->schema->id();
$sql_fields = self::arrayToSqlCols($cols);
$sql_joins = PlSqlJoin::formatJoins($joins, array());
$collections = array();
foreach ($cols as $fields) {
foreach ($fields as $field) {
if ($this->schema->isCollection($field)) {
// TODO: is this code used ?
//$collections[$field] = new Collection($this->schema->collectionType($field));
throw new Exception("Oops, there is a main handler for collections now ?");
} elseif (!empty($this->subs) && array_key_exists($field, $this->subs)) {
$collections[$field] = new Collection($this->schema->objectType($field));
}
}
}
$iter = XDB::iterator("SELECT {$as}.{$id} AS id, {$sql_fields}\n FROM {$table} AS {$as}\n {$sql_joins}\n WHERE {$as}.{$id} IN {?}", $metas->ids());
while ($datas = $iter->next()) {
foreach ($datas as $key => $value) {
if ($this->schema->isObject($key)) {
$class = $this->schema->objectType($key);
$datas[$key] = new $class($value);
}
if (array_key_exists($key, $collections) && $value !== null) {
$datas[$key] = $collections[$key]->addget($value);
}
if ($value === null) {
/*
* /!\ Null in the DB means false in here.
* Therefore Boolean fields must *not* be nullable !
*/
$datas[$key] = false;
}
}
$metas->get($datas['id'])->fillFromArray($datas);
}
foreach ($collections as $field => $collection) {
$collection->select($this->subs[$field]);
}
}