mirror of https://github.com/movim/movim
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
447 lines
15 KiB
447 lines
15 KiB
<?php
|
|
|
|
namespace modl;
|
|
|
|
class ContactDAO extends SQL {
|
|
function __construct() {
|
|
parent::__construct();
|
|
}
|
|
|
|
function get($jid) {
|
|
$this->_sql = '
|
|
select *, privacy.value as privacy from contact
|
|
left outer join privacy
|
|
on contact.jid = privacy.pkey
|
|
where jid = :jid';
|
|
|
|
$this->prepare(
|
|
'Contact',
|
|
array(
|
|
'jid' => $jid
|
|
)
|
|
);
|
|
|
|
return $this->run('Contact', 'item');
|
|
}
|
|
|
|
function set(Contact $contact) {
|
|
$this->_sql = '
|
|
update contact
|
|
set fn = :fn,
|
|
name = :name,
|
|
date = :date,
|
|
url = :url,
|
|
|
|
email = :email,
|
|
|
|
adrlocality = :adrlocality,
|
|
adrpostalcode = :adrpostalcode,
|
|
adrcountry = :adrcountry,
|
|
|
|
gender = :gender,
|
|
marital = :marital,
|
|
|
|
description = :description,
|
|
|
|
mood = :mood,
|
|
|
|
activity = :activity,
|
|
|
|
nickname = :nickname,
|
|
|
|
tuneartist = :tuneartist,
|
|
tunelenght = :tunelenght,
|
|
tunerating = :tunerating,
|
|
tunesource = :tunesource,
|
|
tunetitle = :tunetitle,
|
|
tunetrack = :tunetrack,
|
|
|
|
loclatitude = :loclatitude,
|
|
loclongitude = :loclongitude,
|
|
localtitude = :localtitude,
|
|
loccountry = :loccountry,
|
|
loccountrycode = :loccountrycode,
|
|
locregion = :locregion,
|
|
locpostalcode = :locpostalcode,
|
|
loclocality = :loclocality,
|
|
locstreet = :locstreet,
|
|
locbuilding = :locbuilding,
|
|
loctext = :loctext,
|
|
locuri = :locuri,
|
|
loctimestamp = :loctimestamp,
|
|
twitter = :twitter,
|
|
skype = :skype,
|
|
yahoo = :yahoo
|
|
where contact.jid = :jid';
|
|
|
|
$this->prepare(
|
|
'Contact',
|
|
array(
|
|
'fn' => $contact->fn,
|
|
'name' => $contact->name,
|
|
'date' => $contact->date,
|
|
'url' => $contact->url,
|
|
|
|
'email' => $contact->email,
|
|
|
|
'adrlocality' => $contact->adrlocality,
|
|
'adrpostalcode' => $contact->adrpostalcode,
|
|
'adrcountry' => $contact->adrcountry,
|
|
|
|
'gender' => $contact->gender,
|
|
'marital' => $contact->marital,
|
|
|
|
'description' => $contact->description,
|
|
|
|
// User Mood (contain serialized array) - XEP 0107
|
|
'mood' => $contact->mood,
|
|
|
|
// User Activity (contain serialized array) - XEP 0108
|
|
'activity' => $contact->activity,
|
|
|
|
// User Nickname - XEP 0172
|
|
'nickname' => $contact->nickname,
|
|
|
|
// User Tune - XEP 0118
|
|
'tuneartist' => $contact->tuneartist,
|
|
'tunelenght' => $contact->tunelenght,
|
|
'tunerating' => $contact->tunerating,
|
|
'tunesource' => $contact->tunesource,
|
|
'tunetitle' => $contact->tunetitle,
|
|
'tunetrack' => $contact->tunetrack,
|
|
|
|
// User Location
|
|
'loclatitude' => $contact->loclatitude,
|
|
'loclongitude' => $contact->loclongitude,
|
|
'localtitude' => $contact->localtitude,
|
|
'loccountry' => $contact->loccountry,
|
|
'loccountrycode' => $contact->loccountrycode,
|
|
'locregion' => $contact->locregion,
|
|
'locpostalcode' => $contact->locpostalcode,
|
|
'loclocality' => $contact->loclocality,
|
|
'locstreet' => $contact->locstreet,
|
|
'locbuilding' => $contact->locbuilding,
|
|
'loctext' => $contact->loctext,
|
|
'locuri' => $contact->locuri,
|
|
'loctimestamp' => $contact->loctimestamp,
|
|
|
|
'twitter' => $contact->twitter,
|
|
'skype' => $contact->skype,
|
|
'yahoo' => $contact->yahoo,
|
|
|
|
'jid' => $contact->jid
|
|
)
|
|
);
|
|
|
|
$this->run('Contact');
|
|
|
|
if(!$this->_effective) {
|
|
$this->_sql = '
|
|
insert into contact
|
|
(
|
|
fn,
|
|
name,
|
|
date,
|
|
url,
|
|
|
|
email,
|
|
|
|
adrlocality,
|
|
adrpostalcode,
|
|
adrcountry,
|
|
|
|
gender,
|
|
marital,
|
|
|
|
description,
|
|
|
|
mood,
|
|
|
|
activity,
|
|
|
|
nickname,
|
|
|
|
tuneartist,
|
|
tunelenght,
|
|
tunerating,
|
|
tunesource,
|
|
tunetitle,
|
|
tunetrack,
|
|
|
|
loclatitude,
|
|
loclongitude,
|
|
localtitude,
|
|
loccountry,
|
|
loccountrycode,
|
|
locregion,
|
|
locpostalcode,
|
|
loclocality,
|
|
locstreet,
|
|
locbuilding,
|
|
loctext,
|
|
locuri,
|
|
loctimestamp,
|
|
|
|
twitter,
|
|
skype,
|
|
yahoo,
|
|
|
|
jid)
|
|
values (
|
|
:fn,
|
|
:name,
|
|
:date,
|
|
:url,
|
|
|
|
:email,
|
|
|
|
:adrlocality,
|
|
:adrpostalcode,
|
|
:adrcountry,
|
|
|
|
:gender,
|
|
:marital,
|
|
|
|
:description,
|
|
|
|
:mood,
|
|
|
|
:activity,
|
|
|
|
:nickname,
|
|
|
|
:tuneartist,
|
|
:tunelenght,
|
|
:tunerating,
|
|
:tunesource,
|
|
:tunetitle,
|
|
:tunetrack,
|
|
|
|
:loclatitude,
|
|
:loclongitude,
|
|
:localtitude,
|
|
:loccountry,
|
|
:loccountrycode,
|
|
:locregion,
|
|
:locpostalcode,
|
|
:loclocality,
|
|
:locstreet,
|
|
:locbuilding,
|
|
:loctext,
|
|
:locuri,
|
|
:loctimestamp,
|
|
|
|
:twitter,
|
|
:skype,
|
|
:yahoo,
|
|
|
|
:jid)';
|
|
|
|
|
|
$this->prepare(
|
|
'Contact',
|
|
array(
|
|
'fn' => $contact->fn,
|
|
'name' => $contact->name,
|
|
'date' => $contact->date,
|
|
'url' => $contact->url,
|
|
|
|
'email' => $contact->email,
|
|
|
|
'adrlocality' => $contact->adrlocality,
|
|
'adrpostalcode' => $contact->adrpostalcode,
|
|
'adrcountry' => $contact->adrcountry,
|
|
|
|
'gender' => $contact->gender,
|
|
'marital' => $contact->marital,
|
|
|
|
'description' => $contact->description,
|
|
|
|
// User Mood (contain serialized array) - XEP 0107
|
|
'mood' => $contact->mood,
|
|
|
|
// User Activity (contain serialized array) - XEP 0108
|
|
'activity' => $contact->activity,
|
|
|
|
// User Nickname - XEP 0172
|
|
'nickname' => $contact->nickname,
|
|
|
|
// User Tune - XEP 0118
|
|
'tuneartist' => $contact->tuneartist,
|
|
'tunelenght' => $contact->tunelenght,
|
|
'tunerating' => $contact->tunerating,
|
|
'tunesource' => $contact->tunesource,
|
|
'tunetitle' => $contact->tunetitle,
|
|
'tunetrack' => $contact->tunetrack,
|
|
|
|
// User Location
|
|
'loclatitude' => $contact->loclatitude,
|
|
'loclongitude' => $contact->loclongitude,
|
|
'localtitude' => $contact->localtitude,
|
|
'loccountry' => $contact->loccountry,
|
|
'loccountrycode' => $contact->loccountrycode,
|
|
'locregion' => $contact->locregion,
|
|
'locpostalcode' => $contact->locpostalcode,
|
|
'loclocality' => $contact->loclocality,
|
|
'locstreet' => $contact->locstreet,
|
|
'locbuilding' => $contact->locbuilding,
|
|
'loctext' => $contact->loctext,
|
|
'locuri' => $contact->locuri,
|
|
'loctimestamp' => $contact->loctimestamp,
|
|
|
|
'twitter' => $contact->twitter,
|
|
'skype' => $contact->skype,
|
|
'yahoo' => $contact->yahoo,
|
|
|
|
'jid' => $contact->jid
|
|
)
|
|
);
|
|
|
|
$this->run('Contact');
|
|
}
|
|
}
|
|
|
|
function getAll() {
|
|
$this->_sql =
|
|
'select *, privacy.value as privacy from contact
|
|
left outer join privacy
|
|
on contact.jid = privacy.pkey';
|
|
|
|
$this->prepare('Contact');
|
|
return $this->run('Contact');
|
|
}
|
|
|
|
function getAllPublic() {
|
|
$this->_sql =
|
|
'select *, privacy.value as privacy from contact
|
|
left outer join privacy
|
|
on contact.jid = privacy.pkey
|
|
where privacy.value = 1';
|
|
|
|
$this->prepare('Contact');
|
|
return $this->run('Contact');
|
|
}
|
|
|
|
function cleanRoster() {
|
|
$this->_sql = '
|
|
delete from rosterlink
|
|
where session = :session';
|
|
|
|
$this->prepare(
|
|
'RosterLink',
|
|
array(
|
|
'session' => $this->_user
|
|
)
|
|
);
|
|
|
|
return $this->run('RosterLink');
|
|
}
|
|
function getRoster() {
|
|
$this->_sql = '
|
|
select * from rosterlink
|
|
left outer join presence
|
|
on rosterlink.jid = presence.jid and rosterlink.session = presence.session
|
|
left outer join contact
|
|
on rosterlink.jid = contact.jid
|
|
where rosterlink.session = :session
|
|
order by groupname, rosterlink.jid, presence.value';
|
|
|
|
$this->prepare(
|
|
'RosterLink',
|
|
array(
|
|
'session' => $this->_user
|
|
)
|
|
);
|
|
|
|
return $this->run('RosterContact');
|
|
}
|
|
// limit 1
|
|
function getRosterChat() {
|
|
$this->_sql = '
|
|
select * from rosterlink
|
|
left outer join (
|
|
select * from presence
|
|
order by presence.priority desc
|
|
) as presence
|
|
on rosterlink.jid = presence.jid
|
|
left outer join contact
|
|
on rosterlink.jid = contact.jid
|
|
where rosterlink.session = :session
|
|
and rosterlink.chaton > 0
|
|
order by rosterlink.groupname, rosterlink.jid, presence.value';
|
|
|
|
$this->prepare(
|
|
'RosterLink',
|
|
array(
|
|
'session' => $this->_user
|
|
)
|
|
);
|
|
|
|
return $this->run('RosterContact');
|
|
}
|
|
|
|
function getRosterItem($jid, $item = false) {
|
|
$this->_sql = '
|
|
select * from rosterlink
|
|
left outer join presence
|
|
on rosterlink.jid = presence.jid and rosterlink.session = presence.session
|
|
left outer join contact
|
|
on rosterlink.jid = contact.jid
|
|
where rosterlink.session = :session
|
|
and rosterlink.jid = :jid
|
|
order by groupname, rosterlink.jid, presence.value';
|
|
|
|
$this->prepare(
|
|
'RosterLink',
|
|
array(
|
|
'session' => $this->_user,
|
|
'jid' => $jid
|
|
)
|
|
);
|
|
|
|
if($item)
|
|
return $this->run('RosterContact');
|
|
else
|
|
return $this->run('RosterContact', 'item');
|
|
}
|
|
|
|
function getMe($item = false) {
|
|
$this->_sql = '
|
|
select * from contact
|
|
left outer join presence on contact.jid = presence.jid
|
|
where contact.jid = :jid
|
|
and presence.session = :session';
|
|
|
|
$this->prepare(
|
|
'RosterLink',
|
|
array(
|
|
'session' => $this->_user,
|
|
'jid' => $this->_user
|
|
)
|
|
);
|
|
|
|
if($item)
|
|
return $this->run('RosterContact');
|
|
else
|
|
return $this->run('RosterContact', 'item');
|
|
|
|
}
|
|
|
|
function getStatistics() {
|
|
$this->_sql = '
|
|
select
|
|
(select count(*) from postn where postn.session = :session ) as post,
|
|
(select count(*) from rosterlink where rosterlink.session= :session ) as rosterlink,
|
|
(select count(*) from presence where presence.session= :session ) as presence,
|
|
(select count(*) from message where message.session = :session) as message;';
|
|
|
|
$this->prepare(
|
|
'Postn',
|
|
array(
|
|
'session' => $this->_user
|
|
)
|
|
);
|
|
|
|
return $this->run(null, 'array');
|
|
}
|
|
}
|