<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://htyp.org/mw/index.php?action=history&amp;feed=atom&amp;title=VbzCart%2Fv1%2Fclass%2FvcCartDataFieldGroup</id>
	<title>VbzCart/v1/class/vcCartDataFieldGroup - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://htyp.org/mw/index.php?action=history&amp;feed=atom&amp;title=VbzCart%2Fv1%2Fclass%2FvcCartDataFieldGroup"/>
	<link rel="alternate" type="text/html" href="https://htyp.org/mw/index.php?title=VbzCart/v1/class/vcCartDataFieldGroup&amp;action=history"/>
	<updated>2026-07-26T11:08:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://htyp.org/mw/index.php?title=VbzCart/v1/class/vcCartDataFieldGroup&amp;diff=24707&amp;oldid=prev</id>
		<title>Woozle at 16:24, 24 February 2019</title>
		<link rel="alternate" type="text/html" href="https://htyp.org/mw/index.php?title=VbzCart/v1/class/vcCartDataFieldGroup&amp;diff=24707&amp;oldid=prev"/>
		<updated>2019-02-24T16:24:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:24, 24 February 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{page/code/class}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{page/code/class}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;file&amp;#039;&amp;#039;&amp;#039;: {{l/project|file|cart/cart.data.fg.php}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;file&amp;#039;&amp;#039;&amp;#039;: {{l/project|file|cart/cart.data.fg.php}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &#039;&#039;&#039;extended by&#039;&#039;&#039;: {{l/version|class|vcCartData_NameAddress}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=php&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=php&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class vcCartDataFieldGroup {&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;class vcCartDataFieldGroup {&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Woozle</name></author>
	</entry>
	<entry>
		<id>https://htyp.org/mw/index.php?title=VbzCart/v1/class/vcCartDataFieldGroup&amp;diff=24697&amp;oldid=prev</id>
		<title>Woozle: Created page with &quot;{{page/code/class}} * &#039;&#039;&#039;file&#039;&#039;&#039;: {{l/project|file|cart/cart.data.fg.php}} &lt;source lang=php&gt; class vcCartDataFieldGroup {     use ftFrameworkAccess;      public function __con...&quot;</title>
		<link rel="alternate" type="text/html" href="https://htyp.org/mw/index.php?title=VbzCart/v1/class/vcCartDataFieldGroup&amp;diff=24697&amp;oldid=prev"/>
		<updated>2019-02-24T14:31:09Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{page/code/class}} * &amp;#039;&amp;#039;&amp;#039;file&amp;#039;&amp;#039;&amp;#039;: {{l/project|file|cart/cart.data.fg.php}} &amp;lt;source lang=php&amp;gt; class vcCartDataFieldGroup {     use ftFrameworkAccess;      public function __con...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{page/code/class}}&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;file&amp;#039;&amp;#039;&amp;#039;: {{l/project|file|cart/cart.data.fg.php}}&lt;br /&gt;
&amp;lt;source lang=php&amp;gt;&lt;br /&gt;
class vcCartDataFieldGroup {&lt;br /&gt;
    use ftFrameworkAccess;&lt;br /&gt;
&lt;br /&gt;
    public function __construct(fcBlobField $oBlob) {&lt;br /&gt;
	$this-&amp;gt;SetDataBlob($oBlob);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // ++ I/O ++ //&lt;br /&gt;
    //++internal data++//&lt;br /&gt;
&lt;br /&gt;
    private $oBlob;&lt;br /&gt;
    protected function SetDataBlob(fcBlobField $oBlob) {&lt;br /&gt;
	$this-&amp;gt;oBlob = $oBlob;&lt;br /&gt;
    }&lt;br /&gt;
    protected function GetDataBlob() {&lt;br /&gt;
	return $this-&amp;gt;oBlob;&lt;br /&gt;
    }&lt;br /&gt;
    // PURPOSE: debugging&lt;br /&gt;
    public function DumpArray() {&lt;br /&gt;
	return fcArray::Render($this-&amp;gt;GetDataBlob()-&amp;gt;GetArray());&lt;br /&gt;
    }&lt;br /&gt;
    protected function GetValue($id) {&lt;br /&gt;
	return $this-&amp;gt;GetDataBlob()-&amp;gt;GetValue($id);&lt;br /&gt;
    }&lt;br /&gt;
    protected function SetValue($id,$sValue) {&lt;br /&gt;
	$this-&amp;gt;GetDataBlob()-&amp;gt;SetValue($id,$sValue);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //--internal data--//&lt;br /&gt;
    // -- I/O -- //&lt;br /&gt;
    // ++ FORMS ++ //&lt;br /&gt;
&lt;br /&gt;
    private $oForm = NULL;&lt;br /&gt;
    protected function FormObject() {&lt;br /&gt;
	if (is_null($this-&amp;gt;oForm)) {&lt;br /&gt;
	    // create fields &amp;amp; controls&lt;br /&gt;
 	    $this-&amp;gt;oForm = new fcForm_blob(&amp;#039;cart&amp;#039;,$this-&amp;gt;GetDataBlob());  // 2019-02-24 actually not sure if &amp;quot;cart&amp;quot; is what is wanted&lt;br /&gt;
	}&lt;br /&gt;
	return $this-&amp;gt;oForm;&lt;br /&gt;
    }&lt;br /&gt;
    /*----&lt;br /&gt;
      HISTORY:&lt;br /&gt;
	2018-07-24 Replaed call to GetRecordValues_asNative() with call to GetFieldArray_toWrite_native().&lt;br /&gt;
	  The former does not seem to exist in the blob-form class. Hope the latter is appropriate.&lt;br /&gt;
    */&lt;br /&gt;
    public function GetFormArray() {&lt;br /&gt;
	$oForm = $this-&amp;gt;FormObject();&lt;br /&gt;
	//return $oForm-&amp;gt;GetRecordValues_asNative();&lt;br /&gt;
	return $oForm-&amp;gt;GetFieldArray_toWrite_native();&lt;br /&gt;
    }&lt;br /&gt;
    private $arMissed;&lt;br /&gt;
    protected function AddMissing(array $ar=NULL) {&lt;br /&gt;
	if (!is_null($ar)) {&lt;br /&gt;
	    $this-&amp;gt;arMissed = array_merge($this-&amp;gt;GetMissingArray(),$ar);&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
    /*----&lt;br /&gt;
      NOTE: These two methods ^^ vv are essentially duplicates of methods in vcrShopCart.&lt;br /&gt;
	I *think* the way it works is that the Cart object is collating missing-lists from&lt;br /&gt;
	vcCartDataFieldGroup forms. Maybe missing-lists should be their own class?&lt;br /&gt;
    */&lt;br /&gt;
    public function GetMissingArray() {&lt;br /&gt;
	if (empty($this-&amp;gt;arMissed)) {&lt;br /&gt;
	    $this-&amp;gt;arMissed = array();&lt;br /&gt;
	}&lt;br /&gt;
	return $this-&amp;gt;arMissed;&lt;br /&gt;
    }&lt;br /&gt;
    /*&lt;br /&gt;
      NOTE: These methods are kind of a kluge necessitated by limitations in Ferreteria Forms v2.&lt;br /&gt;
    */&lt;br /&gt;
    &lt;br /&gt;
    protected function CopyFieldToArray(fcFormField $oField) {&lt;br /&gt;
	$id = $oField-&amp;gt;GetNameString();&lt;br /&gt;
	$val = $oField-&amp;gt;GetValue();&lt;br /&gt;
	$this-&amp;gt;SetValue($id,$val);&lt;br /&gt;
    }&lt;br /&gt;
    protected function CopyArrayToField(fcFormField $oField) {&lt;br /&gt;
	$id = $oField-&amp;gt;GetNameString();&lt;br /&gt;
	$oField-&amp;gt;SetValue($this-&amp;gt;GetValue($id));&lt;br /&gt;
    }&lt;br /&gt;
    /*----&lt;br /&gt;
      NOTES:&lt;br /&gt;
	I originally thought we&amp;#039;d only want to return values we actually received, otherwise&lt;br /&gt;
	stored values kept in one form-instance might overwrite values actually received by&lt;br /&gt;
	another form-instance (though I&amp;#039;m not sure what actual usage this might reflect).&lt;br /&gt;
	&lt;br /&gt;
	I also wrote --&lt;br /&gt;
	&lt;br /&gt;
	However, if we do that here, then we can&amp;#039;t set anything beforehand; it gets wiped out.&lt;br /&gt;
	Canonically, the way around this would just be to have a form field for any additional&lt;br /&gt;
	data -- but in the case of the input-mode thingy (new vs. old), the value is set by&lt;br /&gt;
	pressing a button, which doesn&amp;#039;t really conform to any pre-existing kind of form control.&lt;br /&gt;
	So I&amp;#039;d have to write one just for this.&lt;br /&gt;
	&lt;br /&gt;
	-- but I&amp;#039;m kind of vague on what I thought I meant.&lt;br /&gt;
	&lt;br /&gt;
	It now (2016-06-19) turns out that we *need* to keep the existing data because otherwise&lt;br /&gt;
	a form which is being re-displayed after having been saved earlier won&amp;#039;t show the saved&lt;br /&gt;
	values, which is definitely problematic.&lt;br /&gt;
      HISTORY:&lt;br /&gt;
	2016-06-19 Commenting out the $this-&amp;gt;GetDataBlob()-&amp;gt;ClearArray() line (see NOTES).&lt;br /&gt;
    */&lt;br /&gt;
    protected function CopyFieldsToArray() {&lt;br /&gt;
	$oForm = $this-&amp;gt;FormObject();&lt;br /&gt;
	// see NOTE - clear the output array before copying received data:&lt;br /&gt;
	//$this-&amp;gt;GetDataBlob()-&amp;gt;ClearArray();&lt;br /&gt;
	foreach ($oForm-&amp;gt;GetFieldArray() as $key =&amp;gt; $oField) {&lt;br /&gt;
	    $this-&amp;gt;CopyFieldToArray($oField);&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
    // NOTE: Copies only the fields for which there are objects defined&lt;br /&gt;
    // TODO: Is this the same functionality as $this-&amp;gt;FormObject()-&amp;gt;LoadFields_fromBlob()?&lt;br /&gt;
    protected function CopyArrayToFields() {&lt;br /&gt;
	$oForm = $this-&amp;gt;FormObject();&lt;br /&gt;
	foreach ($oForm-&amp;gt;GetFieldArray() as $key =&amp;gt; $oField) {&lt;br /&gt;
	    $this-&amp;gt;CopyArrayToField($oField);&lt;br /&gt;
	}&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    // -- FORMS -- //&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Woozle</name></author>
	</entry>
</feed>