diff options
Diffstat (limited to 'apps/contacts')
-rw-r--r-- | apps/contacts/contacts.php | 62 | ||||
-rw-r--r-- | apps/contacts/index.php | 73 | ||||
-rw-r--r-- | apps/contacts/js/contacts.js | 15 | ||||
-rw-r--r-- | apps/contacts/lib/vcard.php | 69 | ||||
-rw-r--r-- | apps/contacts/photo.php | 1 | ||||
-rw-r--r-- | apps/contacts/templates/index.php | 4 | ||||
-rw-r--r-- | apps/contacts/templates/index2.php | 27 | ||||
-rw-r--r-- | apps/contacts/thumbnail.php | 32 |
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(); |