From c504af53e5b3e13f19039f1ab03cd16279ce4967 Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Fri, 5 Nov 2010 21:50:42 +0100 Subject: [PATCH] PlFlagset and PlDBTableEntry are exportable. Signed-off-by: Florent Bruneau --- classes/pldbtableentry.php | 34 +++++++++++++++++++++++++++++++--- classes/plflagset.php | 22 ++++++++++++++-------- 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/classes/pldbtableentry.php b/classes/pldbtableentry.php index cbeb7bf..466a4ff 100644 --- a/classes/pldbtableentry.php +++ b/classes/pldbtableentry.php @@ -170,7 +170,7 @@ interface PlDBTableFieldValidator public function __construct(PlDBTableField $field, $value); } -interface PlDBTableFieldFormatter extends PlDBTableFieldValidator, XDBFormat +interface PlDBTableFieldFormatter extends PlDBTableFieldValidator, XDBFormat, PlExportable { } @@ -196,13 +196,18 @@ class DateFieldFormatter implements PlDBTableFieldFormatter public function format() { - return XDB::escape($this->datetime->format($this->storageFormat)); + return XDB::escape($this->export()); } public function date($format) { return $this->datetime->format($format); } + + public function export() + { + return $this->datetime->format($this->storageFormat); + } } class JSonFieldFormatter implements PlDBTableFieldFormatter, ArrayAccess @@ -233,6 +238,11 @@ class JSonFieldFormatter implements PlDBTableFieldFormatter, ArrayAccess return XDB::escape(json_encode($this->data)); } + public function export() + { + return $this->data; + } + public function offsetExists($offset) { return isset($this->data[$offset]); @@ -535,13 +545,26 @@ class PlDBTable $allowIncomplete)); } + public function exportEntry(PlDBTableEntry $entry) + { + $export = array(); + foreach ($this->schema as $key=>$field) { + $value = $entry->$key; + if ($value instanceof PlExportable) { + $value = $value->export(); + } + $export[$key] = $value; + } + return $export; + } + public static function get($name) { return new PlDBTable($name); } } -class PlDBTableEntry extends PlAbstractIterable +class PlDBTableEntry extends PlAbstractIterable implements PlExportable { private $table; private $changed; @@ -744,6 +767,11 @@ class PlDBTableEntry extends PlAbstractIterable } return $this->table->deleteEntry($this, true); } + + public function export() + { + return $this->table->exportEntry($this); + } } // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: diff --git a/classes/plflagset.php b/classes/plflagset.php index 6e5a039..7957075 100644 --- a/classes/plflagset.php +++ b/classes/plflagset.php @@ -21,7 +21,7 @@ /** class for describing flags */ -class PlFlagSet extends PlAbstractIterable implements XDBFormat +class PlFlagSet extends PlAbstractIterable implements XDBFormat, PlExportable { /** string that holds the PlFlagSet */ private $values = array(); @@ -128,6 +128,18 @@ class PlFlagSet extends PlAbstractIterable implements XDBFormat return $flags; } + /** export the PlFlagSet + */ + public function export() + { + $array = array(); + foreach ($this->values as $key=>$value) { + if ($value) { + $array[] = $key; + } + } + return $array; + } /** format for XDB */ @@ -141,13 +153,7 @@ class PlFlagSet extends PlAbstractIterable implements XDBFormat */ public function iterate() { - $array = array(); - foreach ($this->values as $key=>$value) { - if ($value) { - $array[] = $key; - } - } - return PlIteratorUtils::fromArray($array, 1, true); + return PlIteratorUtils::fromArray($this->export(), 1, true); } } -- 2.1.4