1
0
mirror of https://github.com/owncloudarchive/contacts.git synced 2024-11-29 11:24:11 +01:00

Contacts: Some updates to Datebase backend

This commit is contained in:
Thomas Tanghus 2013-03-20 11:24:05 +01:00
parent 9044749985
commit 5e67fc27d6

View File

@ -23,6 +23,7 @@
namespace OCA\Contacts\Backend;
use OCA\Contacts\Contact;
use OCA\Contacts\VObject\VCard;
use Sabre\VObject\Reader;
/**
@ -89,16 +90,13 @@ class Database extends AbstractBackend {
//\OCP\Util::writeLog('contacts', __METHOD__.' id: '
// . $addressbookid, \OCP\Util::DEBUG);
if($this->addressbooks && isset($this->addressbooks[$addressbookid])) {
//print(__METHOD__ . ' ' . __LINE__ .' addressBookInfo: ' . print_r($this->addressbooks[$addressbookid], true));
return $this->addressbooks[$addressbookid];
/*foreach($this->addressbooks as $addressbook) {
if($addressbook['id'] === $addressbookid) {
return $addressbook;
}
}*/
// Hmm, not found. Lets query the db.
}
try {
$query = 'SELECT * FROM `' . $this->addressBooksTableName
$query = 'SELECT `id`, `displayname`, `description`, `userid` AS `owner`, `ctag` AS `lastmodified` FROM `'
. $this->addressBooksTableName
. '` WHERE `id` = ?';
if(!isset(self::$preparedQueries['getaddressbook'])) {
self::$preparedQueries['getaddressbook'] = \OCP\DB::prepare($query);
@ -109,7 +107,9 @@ class Database extends AbstractBackend {
. \OC_DB::getErrorMessage($result), \OCP\Util::ERROR);
return array();
}
return $result->fetchRow();
$row = $result->fetchRow();
$row['permissions'] = \OCP\PERMISSION_ALL;
return $row;
} catch(\Exception $e) {
\OCP\Util::writeLog('contacts', __METHOD__.' exception: '
. $e->getMessage(), \OCP\Util::ERROR);
@ -192,7 +192,7 @@ class Database extends AbstractBackend {
*/
public function createAddressBook(array $properties, $userid = null) {
$userid = $userid ? $userid : $this->userid;
if(count($properties) === 0) {
if(count($properties) === 0 || !isset($properties['displayname'])) {
return false;
}
@ -424,10 +424,23 @@ class Database extends AbstractBackend {
}
}
try {
$contact->validate(VCard::REPAIR|VCard::UPGRADE);
} catch (\Exception $e) {
OCP\Util::writeLog('contacts', __METHOD__ . ' ' .
'Error validating vcard: ' . $e->getMessage(), \OCP\Util::ERROR);
return false;
}
$uri = is_null($uri) ? $contact->UID . '.vcf' : $uri;
$now = new \DateTime;
$contact->REV = $now->format(\DateTime::W3C);
$appinfo = \OCP\App::getAppInfo('contacts');
$appversion = \OCP\App::getAppVersion('contacts');
$prodid = '-//ownCloud//NONSGML '.$appinfo['name'].' '.$appversion.'//EN';
$contact->add('PRODID', $prodid);
$data = $contact->serialize();
if(!isset(self::$preparedQueries['createcontact'])) {
self::$preparedQueries['createcontact'] = \OCP\DB::prepare('INSERT INTO `'
@ -436,7 +449,15 @@ class Database extends AbstractBackend {
}
try {
$result = self::$preparedQueries['createcontact']
->execute(array($addressbookid, (string)$contact->FN, $contact->serialize(), $uri, time()));
->execute(
array(
$addressbookid,
(string)$contact->FN,
$contact->serialize(),
$uri,
time()
)
);
if (\OC_DB::isError($result)) {
\OC_Log::write('contacts', __METHOD__. 'DB error: ' . \OC_DB::getErrorMessage($result), \OCP\Util::ERROR);
return false;