From 77ec28e9bea1f3f2fec9307d75f2d2abc134b722 Mon Sep 17 00:00:00 2001 From: graf25 Date: Sat, 6 Apr 2002 21:26:37 +0000 Subject: [PATCH] Fix for quoted values by David Rees. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@2693 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/abook_local_file.php | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/functions/abook_local_file.php b/functions/abook_local_file.php index b91af2bc..9f7acf7a 100644 --- a/functions/abook_local_file.php +++ b/functions/abook_local_file.php @@ -142,6 +142,9 @@ class abook_local_file extends addressbook_backend { for($i = 0 ; $i < sizeof($rows) ; $i++) { if(is_array($rows[$i])) { + for($j = 0 ; $j < count($rows[$i]) ; $j++) { + $rows[$i][$j] = $this->quotevalue($rows[$i][$j]); + } fwrite($newfh, join('|', $rows[$i]) . "\n"); } } @@ -247,9 +250,12 @@ class abook_local_file extends addressbook_backend { } /* Here is the data to write */ - $data = $userdata['nickname'] . '|' . $userdata['firstname'] . '|' . - $userdata['lastname'] . '|' . $userdata['email'] . '|' . - $userdata['label']; + $data = $this->quotevalue($userdata['nickname']) . '|' . + $this->quotevalue($userdata['firstname']) . '|' . + $this->quotevalue($userdata['lastname']) . '|' . + $this->quotevalue($userdata['email']) . '|' . + $this->quotevalue($userdata['label']); + /* Strip linefeeds */ $data = ereg_replace("[\r\n]", ' ', $data); /* Add linefeed at end */ @@ -359,5 +365,15 @@ class abook_local_file extends addressbook_backend { return true; } + /* Function for quoting values before saving */ + function quotevalue($value) { + /* Quote the field if it contains | or ". Double quotes need to + * be replaced with "" */ + if(ereg("[|\"]", $value)) { + $value = '"' . str_replace('"', '""', $value) . '"'; + } + return $value; + } + } /* End of class abook_local_file */ ?> \ No newline at end of file -- 2.25.1