summaryrefslogtreecommitdiffstats
path: root/apps/contacts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/contacts')
-rw-r--r--apps/contacts/contacts.php62
-rw-r--r--apps/contacts/index.php73
-rw-r--r--apps/contacts/js/contacts.js15
-rw-r--r--apps/contacts/lib/vcard.php69
-rw-r--r--apps/contacts/photo.php1
-rw-r--r--apps/contacts/templates/index.php4
-rw-r--r--apps/contacts/templates/index2.php27
-rw-r--r--apps/contacts/thumbnail.php32
8 files changed, 126 insertions, 157 deletions
diff --git a/apps/contacts/contacts.php b/apps/contacts/contacts.php
deleted file mode 100644
index 938a6b13a04..00000000000
--- a/apps/contacts/contacts.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-require_once('../../lib/base.php');
-
-// Check if we are a user
-OC_Util::checkLoggedIn();
-// Get active address books. This creates a default one if none exists.
-$ids = OC_Contacts_Addressbook::activeIds(OC_User::getUser());
-$contacts = OC_Contacts_VCard::all($ids);
-
-$addressbooks = OC_Contacts_Addressbook::active(OC_User::getUser());
-
-// Load the files we need
-OC_App::setActiveNavigationEntry( 'contacts_index' );
-
-// Load a specific user?
-$id = isset( $_GET['id'] ) ? $_GET['id'] : null;
-$details = array();
-
-// FIXME: This cannot work..?
-if(is_null($id) && count($contacts) > 0) {
- $id = $contacts[0]['id'];
-}
-if(!is_null($id)) {
- $vcard = OC_Contacts_App::getContactVCard($id);
- $details = OC_Contacts_VCard::structureContact($vcard);
-}
-$property_types = OC_Contacts_App::getAddPropertyOptions();
-$phone_types = OC_Contacts_App::getTypesOfProperty('TEL');
-
-$upload_max_filesize = OC_Helper::computerFileSize(ini_get('upload_max_filesize'));
-$post_max_size = OC_Helper::computerFileSize(ini_get('post_max_size'));
-$maxUploadFilesize = min($upload_max_filesize, $post_max_size);
-
-$freeSpace=OC_Filesystem::free_space('/');
-$freeSpace=max($freeSpace,0);
-$maxUploadFilesize = min($maxUploadFilesize ,$freeSpace);
-
-OC_Util::addScript('','jquery.multiselect');
-//OC_Util::addScript('contacts','interface');
-OC_Util::addScript('contacts','contacts');
-OC_Util::addScript('contacts','jquery.combobox');
-OC_Util::addScript('contacts','jquery.inview');
-OC_Util::addScript('contacts','jquery.Jcrop');
-OC_Util::addScript('contacts','jquery.jec-1.3.3');
-OC_Util::addStyle('','jquery.multiselect');
-//OC_Util::addStyle('contacts','styles');
-OC_Util::addStyle('contacts','jquery.combobox');
-OC_Util::addStyle('contacts','jquery.Jcrop');
-OC_Util::addStyle('contacts','contacts');
-
-$tmpl = new OC_Template( "contacts", "index2", "user" );
-$tmpl->assign('uploadMaxFilesize', $maxUploadFilesize);
-$tmpl->assign('uploadMaxHumanFilesize', OC_Helper::humanFileSize($maxUploadFilesize));
-$tmpl->assign('property_types',$property_types);
-$tmpl->assign('phone_types',$phone_types);
-$tmpl->assign('addressbooks', $addressbooks);
-$tmpl->assign('contacts', $contacts);
-$tmpl->assign('details', $details );
-$tmpl->assign('id',$id);
-$tmpl->printPage();
-
-?>
diff --git a/apps/contacts/index.php b/apps/contacts/index.php
index 9012e5d8af8..c5115d16074 100644
--- a/apps/contacts/index.php
+++ b/apps/contacts/index.php
@@ -1,36 +1,15 @@
<?php
/**
- * ownCloud - Addressbook
- *
- * @author Jakob Sack
- * @copyright 2011 Jakob Sack mail@jakobsack.de
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU Affero General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
+ * Copyright (c) 2012 Thomas Tanghus <thomas@tanghus.net>
+ * Copyright (c) 2011 Jakob Sack mail@jakobsack.de
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
*/
-
-function contacts_namesort($a,$b){
- return strcmp($a['fullname'],$b['fullname']);
-}
-
-// Init owncloud
require_once('../../lib/base.php');
// Check if we are a user
OC_Util::checkLoggedIn();
-OC_Util::checkAppEnabled('contacts');
-
// Get active address books. This creates a default one if none exists.
$ids = OC_Contacts_Addressbook::activeIds(OC_User::getUser());
$contacts = OC_Contacts_VCard::all($ids);
@@ -47,33 +26,41 @@ $details = array();
if(is_null($id) && count($contacts) > 0) {
$id = $contacts[0]['id'];
}
-$vcard = null;
-$details = null;
if(!is_null($id)) {
$vcard = OC_Contacts_App::getContactVCard($id);
- if(!is_null($vcard)) {
- $details = OC_Contacts_VCard::structureContact($vcard);
- }
+ $details = OC_Contacts_VCard::structureContact($vcard);
}
-
-// Include Style and Script
-OC_Util::addScript('contacts','interface');
-OC_Util::addScript('contacts','jquery.inview');
-OC_Util::addScript('', 'jquery.multiselect');
-OC_Util::addStyle('contacts','styles');
-//OC_Util::addStyle('contacts','formtastic');
-
$property_types = OC_Contacts_App::getAddPropertyOptions();
-$adr_types = OC_Contacts_App::getTypesOfProperty('ADR');
$phone_types = OC_Contacts_App::getTypesOfProperty('TEL');
-// Process the template
-$tmpl = new OC_Template( 'contacts', 'index', 'user' );
+$upload_max_filesize = OC_Helper::computerFileSize(ini_get('upload_max_filesize'));
+$post_max_size = OC_Helper::computerFileSize(ini_get('post_max_size'));
+$maxUploadFilesize = min($upload_max_filesize, $post_max_size);
+
+$freeSpace=OC_Filesystem::free_space('/');
+$freeSpace=max($freeSpace,0);
+$maxUploadFilesize = min($maxUploadFilesize ,$freeSpace);
+
+OC_Util::addScript('','jquery.multiselect');
+OC_Util::addScript('contacts','contacts');
+OC_Util::addScript('contacts','jquery.combobox');
+OC_Util::addScript('contacts','jquery.inview');
+OC_Util::addScript('contacts','jquery.Jcrop');
+OC_Util::addStyle('','jquery.multiselect');
+//OC_Util::addStyle('contacts','styles');
+OC_Util::addStyle('contacts','jquery.combobox');
+OC_Util::addStyle('contacts','jquery.Jcrop');
+OC_Util::addStyle('contacts','contacts');
+
+$tmpl = new OC_Template( "contacts", "index", "user" );
+$tmpl->assign('uploadMaxFilesize', $maxUploadFilesize);
+$tmpl->assign('uploadMaxHumanFilesize', OC_Helper::humanFileSize($maxUploadFilesize));
$tmpl->assign('property_types',$property_types);
-$tmpl->assign('adr_types',$adr_types);
$tmpl->assign('phone_types',$phone_types);
$tmpl->assign('addressbooks', $addressbooks);
$tmpl->assign('contacts', $contacts);
$tmpl->assign('details', $details );
$tmpl->assign('id',$id);
$tmpl->printPage();
+
+?>
diff --git a/apps/contacts/js/contacts.js b/apps/contacts/js/contacts.js
index 9071038b50a..d61489b63c3 100644
--- a/apps/contacts/js/contacts.js
+++ b/apps/contacts/js/contacts.js
@@ -3,6 +3,21 @@ function ucwords (str) {
return $1.toUpperCase();
});
}
+/* TODO: Test this.
+ * http://snipplr.com/view/45323/remove-duplicate-values-from-array/
+Array.prototype.unique = function unique() {
+ var i = 0;
+ while (i < this.length) {
+ var current = this[i];
+ for (k = this.length; k > i; k--) {
+ if (this[k] === current) {
+ this.splice(k,1);
+ }
+ } i++;
+ }
+ return this;
+}
+*/
String.prototype.strip_tags = function(){
tags = this;
diff --git a/apps/contacts/lib/vcard.php b/apps/contacts/lib/vcard.php
index f9ca427354e..ece203bd458 100644
--- a/apps/contacts/lib/vcard.php
+++ b/apps/contacts/lib/vcard.php
@@ -47,6 +47,7 @@ class OC_Contacts_VCard{
* ['carddata']
*/
public static function all($id){
+ $result = null;
if(is_array($id)) {
$id_sql = join(',', array_fill(0, count($id), '?'));
$prep = 'SELECT * FROM *PREFIX*contacts_cards WHERE addressbookid IN ('.$id_sql.') ORDER BY fullname';
@@ -58,13 +59,20 @@ class OC_Contacts_VCard{
OC_Log::write('contacts','OC_Contacts_VCard:all, ids: '.join(',', $id),OC_Log::DEBUG);
OC_Log::write('contacts','SQL:'.$prep,OC_Log::DEBUG);
}
- } else {
- $stmt = OC_DB::prepare( 'SELECT * FROM *PREFIX*contacts_cards WHERE addressbookid = ? ORDER BY fullname' );
- $result = $stmt->execute(array($id));
+ } elseif($id) {
+ try {
+ $stmt = OC_DB::prepare( 'SELECT * FROM *PREFIX*contacts_cards WHERE addressbookid = ? ORDER BY fullname' );
+ $result = $stmt->execute(array($id));
+ } catch(Exception $e) {
+ OC_Log::write('contacts','OC_Contacts_VCard:all:, exception: '.$e->getMessage(),OC_Log::DEBUG);
+ OC_Log::write('contacts','OC_Contacts_VCard:all, ids: '. $id,OC_Log::DEBUG);
+ }
}
$cards = array();
- while( $row = $result->fetchRow()){
- $cards[] = $row;
+ if(!is_null($result)) {
+ while( $row = $result->fetchRow()){
+ $cards[] = $row;
+ }
}
return $cards;
@@ -124,10 +132,9 @@ class OC_Contacts_VCard{
OC_Log::write('contacts','OC_Contacts_VCard::add. Added missing \'N\' field: '.$n,OC_Log::DEBUG);
}
$uid = $card->getAsString('UID');
- if(is_null($uid)){
+ if(!$uid){
$card->setUID();
$uid = $card->getAsString('UID');
- //$data = $card->serialize();
};
$uri = $uid.'.vcf';
@@ -176,7 +183,7 @@ class OC_Contacts_VCard{
* @return insertid
*/
public static function addFromDAVData($id,$uri,$data){
- $fn = $n = null;
+ $fn = $n = $uid = null;
$email = null;
$card = OC_VObject::parse($data);
if(!is_null($card)){
@@ -187,6 +194,9 @@ class OC_Contacts_VCard{
if($property->name == 'N'){
$n = $property->value;
}
+ if($property->name == 'UID'){
+ $uid = $property->value;
+ }
if($property->name == 'EMAIL' && is_null($email)){
$email = $property->value;
}
@@ -210,6 +220,10 @@ class OC_Contacts_VCard{
$data = $card->serialize();
OC_Log::write('contacts','OC_Contacts_VCard::add. Added missing \'N\' field: '.$n,OC_Log::DEBUG);
}
+ if(!$uid) {
+ $card->setUID();
+ $data = $card->serialize();
+ }
$stmt = OC_DB::prepare( 'INSERT INTO *PREFIX*contacts_cards (addressbookid,fullname,carddata,uri,lastmodified) VALUES(?,?,?,?,?)' );
$result = $stmt->execute(array($id,$fn,$data,$uri,time()));
@@ -384,4 +398,43 @@ class OC_Contacts_VCard{
}
return $temp;
}
+
+ /**
+ * @brief Move card(s) to an address book
+ * @param integer $aid Address book id
+ * @param $id Array or integer of cards to be moved.
+ * @return boolean
+ *
+ */
+ public static function moveToAddressBook($aid, $id){
+ OC_Contacts_App::getAddressbook($aid); // check for user ownership.
+ if(is_array($id)) {
+ $id_sql = join(',', array_fill(0, count($id), '?'));
+ $prep = 'UPDATE *PREFIX*contacts_cards SET addressbookid = ? WHERE id IN ('.$id_sql.')';
+ try {
+ $stmt = OC_DB::prepare( $prep );
+ //$aid = array($aid);
+ $vals = array_merge((array)$aid, $id);
+ $result = $stmt->execute($vals);
+ } catch(Exception $e) {
+ OC_Log::write('contacts','OC_Contacts_VCard::moveToAddressBook:, exception: '.$e->getMessage(),OC_Log::DEBUG);
+ OC_Log::write('contacts','OC_Contacts_VCard::moveToAddressBook, ids: '.join(',', $vals),OC_Log::DEBUG);
+ OC_Log::write('contacts','SQL:'.$prep,OC_Log::DEBUG);
+ return false;
+ }
+ } else {
+ try {
+ $stmt = OC_DB::prepare( 'UPDATE *PREFIX*contacts_cards SET addressbookid = ? WHERE id = ?' );
+ $result = $stmt->execute(array($aid, $id));
+ } catch(Exception $e) {
+ OC_Log::write('contacts','OC_Contacts_VCard::moveToAddressBook:, exception: '.$e->getMessage(),OC_Log::DEBUG);
+ OC_Log::write('contacts','OC_Contacts_VCard::moveToAddressBook, id: '.$id,OC_Log::DEBUG);
+ return false;
+ }
+ }
+
+ OC_Contacts_Addressbook::touch($aid);
+ return true;
+ }
+
}
diff --git a/apps/contacts/photo.php b/apps/contacts/photo.php
index 314bce7cecc..8dfbcb6fb10 100644
--- a/apps/contacts/photo.php
+++ b/apps/contacts/photo.php
@@ -21,6 +21,7 @@ $image = new OC_Image();
if( is_null($contact)) {
OC_Log::write('contacts','photo.php. The VCard for ID '.$id.' is not RFC compatible',OC_Log::ERROR);
} else {
+ OC_Response::enableCaching();
OC_Contacts_App::setLastModifiedHeader($contact);
// Photo :-)
diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php
index 5d9c312712f..4c0dfad6177 100644
--- a/apps/contacts/templates/index.php
+++ b/apps/contacts/templates/index.php
@@ -15,10 +15,10 @@
<div id="rightcontent" class="rightcontent" data-id="<?php echo $_['id']; ?>">
<?php
if ($_['id']){
- echo $this->inc("part.details");
+ echo $this->inc('part.contact');
}
else{
- echo $this->inc("part.addcardform");
+ echo $this->inc('part.no_contacts');
}
?>
</div>
diff --git a/apps/contacts/templates/index2.php b/apps/contacts/templates/index2.php
deleted file mode 100644
index 4c0dfad6177..00000000000
--- a/apps/contacts/templates/index2.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<script type='text/javascript'>
- var totalurl = '<?php echo OC_Helper::linkTo('contacts', 'carddav.php', null, true); ?>/addressbooks';
-</script>
-<div id="controls">
- <form>
- <input type="button" id="contacts_newcontact" value="<?php echo $l->t('Add Contact'); ?>">
- <input type="button" id="chooseaddressbook" value="<?php echo $l->t('Addressbooks'); ?>">
- </form>
-</div>
-<div id="leftcontent" class="leftcontent">
- <ul id="contacts">
- <?php echo $this->inc("part.contacts"); ?>
- </ul>
-</div>
-<div id="rightcontent" class="rightcontent" data-id="<?php echo $_['id']; ?>">
- <?php
- if ($_['id']){
- echo $this->inc('part.contact');
- }
- else{
- echo $this->inc('part.no_contacts');
- }
- ?>
-</div>
-<!-- Dialogs -->
-<div id="dialog_holder"></div>
-<!-- End of Dialogs -->
diff --git a/apps/contacts/thumbnail.php b/apps/contacts/thumbnail.php
index c020c29ac8c..5082626499b 100644
--- a/apps/contacts/thumbnail.php
+++ b/apps/contacts/thumbnail.php
@@ -48,6 +48,7 @@ if(is_null($contact)){
getStandardImage();
exit();
}
+OC_Response::enableCaching();
OC_Contacts_App::setLastModifiedHeader($contact);
$thumbnail_size = 23;
@@ -55,25 +56,26 @@ $thumbnail_size = 23;
// Find the photo from VCard.
$image = new OC_Image();
$photo = $contact->getAsString('PHOTO');
+if($photo) {
+ OC_Response::setETagHeader(md5($photo));
-OC_Response::setETagHeader(md5($photo));
-
-if($image->loadFromBase64($photo)) {
- if($image->centerCrop()) {
- if($image->resize($thumbnail_size)) {
- if($image->show()) {
- // done
- exit();
+ if($image->loadFromBase64($photo)) {
+ if($image->centerCrop()) {
+ if($image->resize($thumbnail_size)) {
+ if($image->show()) {
+ // done
+ exit();
+ } else {
+ OC_Log::write('contacts','thumbnail.php. Couldn\'t display thumbnail for ID '.$id,OC_Log::ERROR);
+ }
} else {
- OC_Log::write('contacts','thumbnail.php. Couldn\'t display thumbnail for ID '.$id,OC_Log::ERROR);
+ OC_Log::write('contacts','thumbnail.php. Couldn\'t resize thumbnail for ID '.$id,OC_Log::ERROR);
}
- } else {
- OC_Log::write('contacts','thumbnail.php. Couldn\'t resize thumbnail for ID '.$id,OC_Log::ERROR);
+ }else{
+ OC_Log::write('contacts','thumbnail.php. Couldn\'t crop thumbnail for ID '.$id,OC_Log::ERROR);
}
- }else{
- OC_Log::write('contacts','thumbnail.php. Couldn\'t crop thumbnail for ID '.$id,OC_Log::ERROR);
+ } else {
+ OC_Log::write('contacts','thumbnail.php. Couldn\'t load image string for ID '.$id,OC_Log::ERROR);
}
-} else {
- OC_Log::write('contacts','thumbnail.php. Couldn\'t load image string for ID '.$id,OC_Log::ERROR);
}
getStandardImage();