X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fabook_local_file.php;h=9f7acf7a5bfaa2565bab00b86ecd1244c15cfc25;hb=59387d1cb4e9187dc5958905115eadfb23572709;hp=b91af2bc1b5a29ac9fc730d28593c5d5e5cf7c66;hpb=01265fbab60e51c5d97f55cfefe5888abb383ae9;p=squirrelmail.git 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