. * */ // Init owncloud require_once('../../../lib/base.php'); $id = $_POST['id']; $checksum = $_POST['checksum']; $l10n = new OC_L10N('contacts'); // Check if we are a user if( !OC_User::isLoggedIn()){ echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!')))); exit(); } $card = OC_Contacts_Addressbook::findCard( $id ); if( $card === false ){ echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!')))); exit(); } $addressbook = OC_Contacts_Addressbook::findAddressbook( $card['addressbookid'] ); if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){ echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!')))); exit(); } // Check if the card is valid if( !OC_Contacts_Addressbook::isValidVObject($card['carddata'])){ echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Unable to parse vCard!')))); exit(); } $vcard = Sabre_VObject_Reader::read($card['carddata']); $line = null; for($i=0;$ichildren);$i++){ if(md5($vcard->children[$i]->serialize()) == $checksum ){ $line = $i; } } if(is_null($line)){ echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!')))); exit(); } // Set the value $value = $_POST['value']; if(is_array($value)){ $value = OC_Contacts_Addressbook::escapeSemicolons($value); } $vcard->children[$line]->setValue($value); // Add parameters $postparameters = isset($_POST['parameters'])?$_POST['parameters']:array(); for($i=0;$ichildren[$line]->parameters);$i++){ $name = $vcard->children[$line]->parameters[$i]->name; if(array_key_exists($name,$postparameters)){ if($postparameters[$name] == '' || is_null($postparameters[$name])){ unset($vcard->children[$line]->parameters[$i]); } else{ $vcard->children[$line]->parameters[$i]->value = $postparameters[$name]; } unset($postparameters[$name]); } } $missingparameters = array_keys($postparameters); foreach($missingparameters as $i){ if(!$postparameters[$i] == '' && !is_null($postparameters[$i])){ $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter($i,$postparameters[$i]); } } // Do checksum and be happy $checksum = md5($vcard->children[$line]->serialize()); OC_Contacts_Addressbook::editCard($id,$vcard->serialize()); $tmpl = new OC_Template('contacts','part.property'); $tmpl->assign('property',OC_Contacts_Addressbook::structureProperty($vcard->children[$line],$line)); $page = $tmpl->fetchPage(); echo json_encode( array( 'status' => 'success', 'data' => array( 'page' => $page, 'line' => $line, 'oldchecksum' => $_POST['checksum'] )));