{"id":5275,"date":"2013-05-08T11:54:43","date_gmt":"2013-05-08T15:54:43","guid":{"rendered":"https:\/\/www.caskeys.com\/dc\/?p=5275"},"modified":"2017-01-15T15:21:58","modified_gmt":"2017-01-15T20:21:58","slug":"class-error","status":"publish","type":"post","link":"https:\/\/www.caskeys.com\/dc\/class-error\/","title":{"rendered":"Class &#8211; Forms"},"content":{"rendered":"<pre class=\"brush: php; title: Code:; notranslate\" title=\"Code:\">\r\n&lt;?php \r\n\r\nclass class_forms {\r\n\r\n\t\/*\r\n\tUtility\r\n\tDamon Vaughn Caskey\r\n\t2013_01_21\r\n\t\r\n\tMiscellaneous form input functions.\r\n\t*\/\r\n\t\t\r\n\t\/* Constants *\/\r\n\tconst FORMS_ID_USE_NAME\t\t\t\t\t\t= NULL;\t\t\/\/Use name to generate ID.\r\n\tconst FORMS_ITEM_ADDITIONS_NONE\t\t\t\t= NULL;\t\t\/\/No manual additions to generated item list.\r\n\tconst FORMS_LABEL_NONE\t\t\t\t\t\t= NULL;\t\t\/\/No label for fieldset item.\r\n\tconst FORMS_LABEL_BLANK\t\t\t\t\t\t= 1;\t\t\/\/Blank label for fieldset item.\r\n\tconst FORMS_LABEL_USE_ITEM_KEY\t\t\t\t= 2;\t\t\/\/Use the item key of a field for its fieldset label or visible selection.\r\n\tconst FORMS_LABEL_USE_ITEM_NAME\t\t\t\t= 3;\t\t\/\/Use the item name of a field for its fieldset label or visible selection.\r\n\tconst FORMS_LABEL_USE_ITEM_VALUE\t\t\t= 4;\t\t\/\/Use the items value of a field for its fieldset label or visible selection.\r\n\tconst FORMS_LABEL_TYPE_FIELDSET\t\t\t\t= 0;\t\t\/\/Fieldset label.\r\n\tconst FORMS_LABEL_TYPE_INLINE\t\t\t\t= 1;\t\t\/\/Label text only; no formatting.\r\n\tconst FORMS_LEGEND_NONE \t\t\t\t\t= NULL;\t\t\/\/No legend for fieldset.\r\n\tconst FORMS_QUERY_PARAMETERS_NONE\t\t\t= NULL;\t\t\/\/No query parameters.\r\n\tconst FORMS_TYPE_RADIO\t\t\t\t\t\t= 0;\t\t\/\/Radio type list.\r\n\tconst FORMS_TYPE_SELECT\t\t\t\t\t\t= 1;\t\t\/\/Select type list.\r\n\tconst FORMS_VALUE_CURRENT_NONE\t\t\t\t= NULL;\t\t\/\/Current (last selected) value.\r\n\tconst FORMS_VALUE_DEFAULT_NONE\t\t\t\t= NULL;\t\t\/\/Default selected value.\r\n\tconst FORMS_VALUE_DEFAULT_NOW\t\t\t\t= -1;\t\t\/\/Default to current time for specific field.\r\n\tconst FORMS_EVENTS_NONE\t\t\t\t\t\t= NULL;\t\t\/\/No events attached to fieldset item.\r\n\tconst FORMS_READ_ONLY_OFF\t\t\t\t\t= FALSE;\r\n\tconst FORMS_READ_ONLY_ON\t\t\t\t\t= TRUE;\r\n\t\t\r\n\tpublic $cItemsList \t\t\t\t\t\t\t= NULL;\t\t\/\/Array of items list for select\/radio\/etc.\r\n\tpublic $cFormElement\t\t\t\t\t\t= NULL;\t\t\/\/Arracy to store completed element markup that will be placed in a fieldset.\r\n\tpublic $cFormElementActions\t\t\t\t\t= NULL;\t\t\/\/Array of actions tied to form element (onchange, onclick, etc.).\r\n\tpublic $cFieldset\t\t\t\t\t\t\t= NULL;\t\t\/\/Array of completed fieldset markups ready to echo into page.\r\n\tpublic $cFieldsetAddsA\t\t\t\t\t\t= NULL;\t\t\/\/Array of additional instructions, links, etc. that may be added to fieldset above items.\r\n\t\t\t\t\r\n\tfunction __construct($oDep)\r\n\t{\r\n\t\t\/*\r\n\t\tConstructor\r\n\t\tDamon Vaughn Caskey\r\n\t\t2013-01-21\r\n\t\t\r\n\t\tClass constructor.\r\n\t\t*\/\r\n\t\t\r\n\t\t\/* Import object dependencies. *\/\r\n\t\t\/\/$this-&gt;oUtl = $oDep&#x5B;'Utl'];\r\n\t\t$this-&gt;oDB\t= $oDep&#x5B;'DB'];\r\n\t\t\/\/$this-&gt;Err\t= $oDep&#x5B;'Err'];\r\n\t\t\t\t\r\n\t\t\/* Verify object dependencies. *\/\r\n\t\t\/\/if(!$this-&gt;oUtl)\ttrigger_error(&quot;Missing object dependency: Utility.&quot;, E_USER_ERROR);\t\t\r\n\t\tif(!$this-&gt;oDB)\t\ttrigger_error(&quot;Missing object dependency: Database.&quot;, E_USER_ERROR);\r\n\t\t\/\/if(!$this-&gt;Err)\t\ttrigger_error(&quot;Missing object dependency: Errors.&quot;, E_USER_ERROR);\r\n\t}\t\r\n\t\r\n\tprivate function forms_events_markup($cEvents=self::FORMS_EVENTS_NONE)\r\n\t{\r\n\t\t\/*\r\n\t\tforms_events_markup\r\n\t\tDamon Vaughn Caskey\r\n\t\t2013-03-26\r\n\t\t\r\n\t\tPrepare HTML markup string for fieldset form item events (onchange, onclick, etc.).\r\n\t\t*\/\r\n\t\t\r\n\t\tif(isset($cEvents))\r\n\t\t{\t\t\r\n\t\t\tforeach ($cEvents as $cKey =&gt; $cValue)\r\n\t\t\t{\r\n\t\t\t\t\r\n\t\t\t\t$cEvent .= $cKey.'=&quot;'.$cValue.'&quot;';\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn $cEvent;\r\n\t}\r\n\t\r\n\tpublic function test()\r\n\t{\r\n\t\techo self::FORMS_LABEL_USE_ITEM_VALUE;\r\n\t}\r\n\t\r\n\tprivate function forms_label_markup($iStyle=self::FORMS_LABEL_NONE, $iType=self::FORMS_LABEL_TYPE_FIELDSET, $cName=NULL, $cID=NULL, $cKey=NULL, $cValue=NULL)\r\n\t{\r\n\t\t\/*\r\n\t\tforms_label_markup\r\n\t\tDamon Vaughn Caskey\r\n\t\t2013-03-26\r\n\t\t\r\n\t\tPrepare HTML markup string for fieldset form item labels.\r\n\t\t\r\n\t\tPreconditions:\r\n\t\t\t$cName: \tName of item.\r\n\t\t\t$cID:\t\tID of item.\r\n\t\t\t$cKey:\t\tArray key of item.\r\n\t\t\t$cValue: \tArray value of item.\r\n\t\t\t$iStyle: \tHow to arrange label markup.\r\n\t\t\t\tself::FORMS_LABEL_USE_ITEM_KEY = The item's Key will be used as a label.\r\n\t\t\t\tself::FORMS_LABEL_USE_ITEM_VALUE = The item's Value will be used as label.\r\n\t\t\t\tself::FORMS_LABEL_BLANK = The label will be left blank.\r\n\t\t\t\tself::FORMS_LABEL_NONE = No label markuop at all.\r\n\t\t\r\n\t\tPostconditions:\r\n\t\t\tReturn finished label markup string.\t\t\r\n\t\t*\/\r\n\t\t\r\n\t\t$cClosing = NULL;\r\n\t\t$cLabel = NULL;\r\n\t\t\r\n\t\tif($iType == self::FORMS_LABEL_TYPE_FIELDSET)\r\n\t\t{\r\n\t\t\t\/* Prepare opening label markup. *\/\r\n\t\t\t$cLabel = '&lt;div class=&quot;'.$cClass&#x5B;'Container_Label'].'&quot;&gt;&lt;label for=&quot;'.$cID.'&quot;&gt;';\r\n\t\t\t$cClosing = '&lt;\/label&gt;&lt;\/div&gt;';\t\r\n\t\t}\t\t\t\t\t\t\t\r\n\t\t\t\r\n\t\tswitch($iStyle)\r\n\t\t{\r\n\t\t\tcase self::FORMS_LABEL_USE_ITEM_KEY:\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t$cLabel .= $cKey.$cClosing;\t\t\t\t\t\t\t\t\t\r\n\t\t\t\tbreak;\r\n\t\t\r\n\t\t\tcase self::FORMS_LABEL_USE_ITEM_NAME:\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t$cLabel .= $cName.$cClosing;\t\t\t\t\t\t\t\t\t\r\n\t\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase self::FORMS_LABEL_USE_ITEM_VALUE:\r\n\t\t\t\t\r\n\t\t\t\t$cLabel .= $cValue.$cClosing;\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\tbreak;\r\n\t\t\t\r\n\t\t\tcase self::FORMS_LABEL_BLANK:\r\n\t\t\t\r\n\t\t\t\t$cLabel .= $cClosing;\r\n\t\t\t\tbreak;\t\t\t\t\r\n\t\t\t\r\n\t\t\tcase self::FORMS_LABEL_NONE:\r\n\t\t\t\r\n\t\t\t\t$cLabel = NULL;\r\n\t\t\t\tbreak;\r\n\t\t\t\t\r\n\t\t\tdefault:\r\n\t\t\t\t\r\n\t\t\t\t$cLabel .= $iStyle.$cClosing;\t\t\t\t\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\t\/* Return label markup string. *\/\r\n\t\treturn $cLabel;\r\n\t}\r\n\t\r\n\tpublic function forms_list_array_from_query($cQuery=NULL, $cParams=array(self::FORMS_QUERY_PARAMETERS_NONE), $cAddsT=self::FORMS_ITEM_ADDITIONS_NONE, $cAddsB=self::FORMS_ITEM_ADDITIONS_NONE){\t\t\r\n\t\t\r\n\t\t\/*\r\n\t\tforms_list_array_from_query\r\n\t\tDamon Vaughn Caskey\r\n\t\t2012-12-19\r\n\t\t\r\n\t\tCreate list array directly from query results.\r\n\t\t\r\n\t\t$iType:\t\tSelect, options, etc.\t\t\r\n\t\t$cQuery:\tSQL query string.\r\n\t\t$cParams:\tParameter array.\r\n\t\t$cDefault:\tDefault selection.\r\n\t\t$cCurrent:\tCurrent selection.\r\n\t\t$bKey:\t\tUse key as item label?\r\n\t\t$cAddsT:\tAdditional items to place at top of generated list.\r\n\t\t$cAddsB:\tAdditional items to place at bottom of generated list.\r\n\t\t*\/\r\n\t\r\n\t\t$i\t\t=\tNULL;\t\t\/\/Counter.\r\n\t\t$cList\t=\tNULL;\t\t\/\/Output string.\r\n\t\t$cKey\t=\tNULL;\r\n\t\t\r\n\t\t$cList\t=\tarray();\r\n\t\t\r\n\t\t\/* Query for list items. *\/\r\n\t\t$this-&gt;oDB-&gt;db_basic_select($cQuery, $cParams);\r\n\t\t\t\t\r\n\t\t\/* Populate list variable. *\/\r\n\t\twhile($this-&gt;oDB-&gt;db_line(SQLSRV_FETCH_NUMERIC))\r\n\t\t{\t\r\n\t\t\t\/* Get key (used for items visible to user). *\/\r\n\t\t\t$cKey = $this-&gt;oDB-&gt;cDBLine&#x5B;1];\r\n\t\t\t\r\n\t\t\t\/* If fields exist beyond first key, append to a single key value. *\/\r\n\t\t\tif($this-&gt;oDB-&gt;iDBFCount &gt; 2)\r\n\t\t\t{\t\r\n\t\t\t\t\/* Start with field #2 (third field) and append to key string until last field is reached. *\/\r\n\t\t\t\tfor($i = 2; $i &lt;= ($this-&gt;oDB-&gt;iDBFCount-1); $i++)\r\n\t\t\t\t{\r\n\t\t\t\t\t$cKey .= &quot;; &quot;. $this-&gt;oDB-&gt;cDBLine&#x5B;$i];\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t\/* Populate list array using visible portion of list values as key. *\/\t\t\t \r\n\t\t\t$cList&#x5B;$cKey] = $this-&gt;oDB-&gt;cDBLine&#x5B;0];\t\t\t\t\t\t\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\t\/* Merge Additions. (As of 5.4 array_merge() will always reorder indexes). *\/\r\n\t\tif($cAddsT &amp;&amp; is_array($cAddsT))\r\n\t\t{\t\r\n\t\t\t$cList = $cAddsT + $cList;\t\r\n\t\t}\r\n\t\t\r\n\t\tif($cAddsB &amp;&amp; is_array($cAddsB))\r\n\t\t{\t\r\n\t\t\t$cList += $cAddsB;\t\r\n\t\t}\t\r\n\t\t\r\n\t\t$this-&gt;cItemsList = $cList;\r\n\t\t\r\n\t\t\/* Output final list value. *\/\r\n\t\treturn $this-&gt;cItemsList;\r\n\t}\r\n\t\r\n\tfunction forms_list_numeric($iType=NULL, $cQuery=NULL, $cParams=NULL, $cDefault=NULL, $cCurrent=NULL, $bKey=self::FORMS_LABEL_USE_ITEM_KEY, $iStart=0, $cAddsT=NULL, $cAddsB=NULL)\r\n\t{\t\t\r\n\t\t\/*\r\n\t\tforms_list_numeric\r\n\t\tDamon V. Caskey\r\n\t\t2012-12-19\t\t\r\n\t\t\r\n\t\tGenerate a simple numeric list with maximum value based number of rows returned by query.\r\n\t\t\r\n\t\t$iType: \t\r\n\t\t$cQuery:\tSQL query string.\r\n\t\t$cParams:\tParameter array.\r\n\t\t$cDefault:\tDefault selection.\r\n\t\t$cCurrent:\tCurrent selection.\r\n\t\t$bKey:\t\tUse key as item label?\r\n\t\t$iStart:\tFirst numeric value of generated list.\r\n\t\t$cAddsT:\tAdditional items to place at top of generated list.\r\n\t\t$cAddsB:\tAdditional items to place at bottom of generated list.\r\n\t\t*\/\r\n\t\t\r\n\t\t$i\t\t= NULL;\t\/\/Counter.\r\n\t\t$cList\t= NULL;\t\/\/Item list array.\t\t\t\t\t\r\n\t\t\r\n\t\t$cList\t= array();\r\n\t\t\t\t\r\n\t\t$this-&gt;oDB-&gt;db_basic_select($cQuery, $cParams);\t\r\n\t\t\t\t\t\t\t\t\r\n\t\tfor($i = $iStart; $i &lt;= $this-&gt;oDB-&gt;iDBRowCount; $i++)\r\n\t\t{\t\t\r\n\t\t\t$cList&#x5B;$i] = $i;\r\n\t\t}\t\t\t\t\r\n\t\t\r\n\t\t\/* Merge Additions. (As of 5.4 array_merge() will always reorder indexes). *\/\r\n\t\tif($cAddsT &amp;&amp; is_array($cAddsT))\r\n\t\t{\t\r\n\t\t\t$cList = $cAddsT + $cList;\t\r\n\t\t}\r\n\t\t\r\n\t\tif($cAddsB &amp;&amp; is_array($cAddsB))\r\n\t\t{\t\r\n\t\t\t$cList += $cAddsB;\t\r\n\t\t}\r\n\t\t\r\n\t\tswitch ($iType)\r\n\t\t{\r\n\t\t\tcase self::FORMS_TYPE_RADIO:\r\n\t\t\t\t\/\/$this-&gt;cDLListCode = $this-&gt;forms_select_options($cList, $cDefault, $cCurrent, $bKey);\r\n\t\t\tdefault:\r\n\t\t\t\t$this-&gt;cDLListCode = $this-&gt;forms_select_options($cList, $cDefault, $cCurrent, $bKey);\r\n\t\t}\r\n\t\t\r\n\t\treturn $this-&gt;cDLListCode;\r\n\t}\r\n\t\t                 \r\n\tpublic function forms_phone($cName=NULL, $cID=self::FORMS_ID_USE_NAME, $cLabel=self::FORMS_LABEL_NONE, $cDefault=array(&quot;cc&quot; =&gt; &quot;1&quot;, &quot;ac&quot; =&gt; &quot;859&quot;, &quot;lc&quot; =&gt; NULL, &quot;pn&quot; =&gt; NULL), $cCurrent=self::FORMS_VALUE_CURRENT_NONE, $cClass=NULL, $cEvents=NULL)\r\n\t{\t\r\n\t\t\/*\r\n\t\tforms_phone\r\n\t\tDamon Vaughn Caskey\r\n\t\t2013-01-21\r\n\t\t\r\n\t\tOutput form phone input markup.\r\n\t\t*\/\r\n\t\r\n\t\t$cMarkup \t=\tNULL;\t\/\/Final markup to echo.\r\n\t\t$cEvent\t\t=\tNULL;\t\/\/Event string.\t\r\n\t\t\r\n\t\t$cMarkup .='&lt;div class=&quot;'.$cClass&#x5B;'Container_All'].'&quot;&gt;';\r\n\t\t\t\t\r\n\t\t\/* Set ID to name? *\/\r\n\t\t$cID = $cID != self::FORMS_ID_USE_NAME ? $cID : $cName;\r\n\t\t\r\n\t\t\/* If current value empty or NULL, set &quot;No current&quot; cosntant *\/\r\n\t\t$cCurrent = $cCurrent ? $cCurrent : self::FORMS_VALUE_CURRENT_NONE;\r\n\t\t\r\n\t\t$cDefault = $cDefault == self::FORMS_VALUE_DEFAULT_NONE ? NULL : $cDefault; \r\n\t\t\r\n\t\t\/* If no current value is available, use default. *\/\r\n\t\tif(!$cCurrent || $cCurrent == self::FORMS_VALUE_CURRENT_NONE)\r\n\t\t{\r\n\t\t\t$cCurrent = $cDefault;\r\n\t\t}\r\n\t\t\t\t\r\n\t\t\/* Parse event actions. *\/\r\n\t\t$cEvent = $this-&gt;forms_events_markup($cEvents);\t\t\t\r\n\t\t\r\n\t\t\/* Prepare label markup. *\/\r\n\t\t$cMarkup .= $this-&gt;forms_label_markup($cLabel, self::FORMS_LABEL_TYPE_FIELDSET, $cName, $cID, $cKey, $cValue);\t\t\r\n\t\t\r\n\t\t$cMarkup .= '&lt;div class=&quot;'.$cClass&#x5B;'Container_Item'].'&quot;&gt;&lt;input type=&quot;text&quot; name=&quot;'.$cName.'_cc&quot; id=&quot;'.$cID.'_cc&quot; class=&quot;'.$cClass.'&quot; value=&quot;'.$cDefault&#x5B;'cc'].'&quot; size=&quot;1&quot; maxlength=&quot;1&quot; \/&gt;\r\n\t\t\t\t\t\t  (\r\n\t\t\t\t\t\t\t&lt;input type=&quot;text&quot; name=&quot;'.$cName.'_ac&quot; id=&quot;'.$cID.'_ac&quot; class=&quot;'.$cClass.'&quot; value=&quot;'.$cDefault&#x5B;'ac'].'&quot; size=&quot;3&quot; maxlength=&quot;3&quot; \/&gt;\r\n\t\t\t\t\t\t\t) \r\n\t\t\t\t\t\t\t&lt;input type=&quot;text&quot; name=&quot;'.$cName.'_lc&quot; id=&quot;'.$cID.'_lc&quot; class=&quot;'.$cClass.'&quot; value=&quot;'.$cDefault&#x5B;'lc'].'&quot; size=&quot;3&quot; maxlength=&quot;3&quot; \/&gt; \r\n\t\t\t\t\t\t  - \r\n\t\t\t\t\t\t  &lt;input type=&quot;text&quot; name=&quot;'.$cName.'_pn&quot; id=&quot;'.$cID.'_pn&quot; class=&quot;'.$cClass.'&quot; value=&quot;'.$cDefault&#x5B;'pn'].'&quot; size=&quot;4&quot; maxlength=&quot;4&quot; \/&gt;\t\t\t\t  \r\n\t\t\t\t\t&lt;\/div&gt;&lt;\/div&gt;';\t\t\r\n\t\t\/*\r\n\t\tReturn end result.\r\n\t\t*\/\r\n\t\treturn $cMarkup;\r\n\t}\t\r\n\t\t\t\t\t\r\n\tpublic function forms_radio($cName=NULL, $cID=self::FORMS_ID_USE_NAME, $iLabelStyle=self::FORMS_LABEL_USE_ITEM_KEY, $cList=array(NULL), $cDefault=NULL, $cCurrent=self::FORMS_VALUE_CURRENT_NONE, $cClass=array(&quot;Item&quot; =&gt; &quot;Standard&quot;), $cEvents=NULL)\r\n\t{\r\n\t\t\/*\r\n\t\tforms_radio\r\n\t\tDamon Vaughn Caskey\r\n\t\t2013-03-24\t\r\n\t\t*\/\r\n\t\t\t\t\t\t\t\t\r\n\t\t$cKey\t\t=\tNULL;\t\/\/Array key.\r\n\t\t$cValue\t\t=\tNULL;\t\/\/Array value.\r\n\t\t$cChecked\t= \tNULL;\t\/\/Checked (default\/current)?\r\n\t\t$cMarkup \t=\tNULL;\t\/\/Final markup to echo.\r\n\t\t$cLabel\t\t=\tNULL;\t\/\/Item label markup.\r\n\t\t$cIDFinal\t= \tNULL;\t\/\/Final ID inserted into markup.\r\n\t\t$cEvent\t\t=\tNULL;\t\r\n\t\t\r\n\t\t$cMarkup .='&lt;div class=&quot;'.$cClass&#x5B;'Container_All'].'&quot;&gt;';\r\n\t\t\r\n\t\t\/* Set ID to name? *\/\r\n\t\t$cID = $cID != self::FORMS_ID_USE_NAME ? $cID : $cName;\r\n\t\t\r\n\t\t\/* If current value empty or NULL, set &quot;No current&quot; cosntant *\/\r\n\t\t$cCurrent = $cCurrent ? $cCurrent : self::FORMS_VALUE_CURRENT_NONE;\r\n\t\t\r\n\t\t\/* Parse event actions. *\/\r\n\t\t$cEvent = $this-&gt;forms_events_markup($cEvents);\t\t\r\n\t\t\r\n\t\tforeach ($cList as $cKey =&gt; $cValue)\r\n\t\t{\t\t\t\t\r\n\t\t\t\/* If $cValue matches $cCurrent, or $cCurrent not provided but $cValue matches $cDefault, add 'checked' to make this the default list item selected. *\/\t\r\n\t\t\tif ($cCurrent == $cValue || ($cCurrent == self::FORMS_VALUE_CURRENT_NONE &amp;&amp; $cValue == $cDefault))\r\n\t\t\t{\r\n\t\t\t\t$cChecked = 'checked=&quot;checked&quot;';\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t$cChecked = NULL;\r\n\t\t\t}\t\t\r\n\t\t\t\t\t\r\n\t\t\t\/* IDs must be unique, so we'll combine ID with value. *\/\r\n\t\t\t$cIDFinal = $cID.&quot;_&quot;.$cValue;\t\t\t\r\n\t\t\t\r\n\t\t\t\/* Prepare label markup. *\/\r\n\t\t\t$cMarkup .= $this-&gt;forms_label_markup($iLabelStyle, self::FORMS_LABEL_TYPE_FIELDSET, $cName, $cIDFinal, $cKey, $cValue);\t\t\t\r\n\t\t\t\r\n\t\t\t$cMarkup .= '&lt;div class=&quot;'.$cClass&#x5B;'Container_Item'].'&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;'.$cName.'&quot; id=&quot;'.$cIDFinal.'&quot; value=&quot;'.$cValue.'&quot; '.$cChecked.' '.$cEvent.' \/&gt;&lt;\/div&gt;';\t\t\t\r\n\t\t}\t\t\t\t\t\r\n\t\t\r\n\t\t$cMarkup .= '&lt;\/div&gt;';\r\n\t\t\r\n\t\t\/*\r\n\t\tReturn end result.\r\n\t\t*\/\r\n\t\treturn $cMarkup;\r\n\t\r\n\t}\r\n\t\r\n\tpublic function forms_select($cName=NULL, $cID=self::FORMS_ID_USE_NAME, $iLabelStyle=self::FORMS_LABEL_USE_ITEM_KEY, $iKeyStyle=self::FORMS_LABEL_USE_ITEM_KEY, $cList=array(NULL =&gt; NULL), $cDefault=NULL, $cCurrent=self::FORMS_VALUE_CURRENT_NONE, $cClass=array(&quot;Item&quot; =&gt; &quot;Standard&quot;, &quot;Container_All&quot; =&gt; &quot;Show Me&quot;), $cEvents=NULL)\r\n\t{\r\n\t\t\/*\r\n\t\tforms_radio\r\n\t\tDamon Vaughn Caskey\r\n\t\t2013-03-24\t\r\n\t\t*\/\r\n\t\t\t\t\t\t\t\t\r\n\t\t$cKey\t\t=\tNULL;\t\/\/Array key.\r\n\t\t$cValue\t\t=\tNULL;\t\/\/Array value.\r\n\t\t$cChecked\t= \tNULL;\t\/\/Checked (default\/current)?\r\n\t\t$cMarkup \t=\tNULL;\t\/\/Final markup to echo.\r\n\t\t$cLabel\t\t=\tNULL;\t\/\/Item label markup.\r\n\t\t$cEvent\t\t=\tNULL;\t\r\n\t\t$cItems\t\t=\tNULL;\t\/\/Select options.\r\n\t\t\r\n\t\t$cMarkup .='&lt;div class=&quot;'.$cClass&#x5B;'Container_All'].'&quot;&gt;';\r\n\t\t\r\n\t\t\/* Set ID to name? *\/\r\n\t\t$cID = $cID != self::FORMS_ID_USE_NAME ? $cID : $cName;\t\t\r\n\t\t\r\n\t\t\/* Parse event actions. *\/\r\n\t\t$cEvent = $this-&gt;forms_events_markup($cEvents);\t\t\r\n\t\t\r\n\t\tif (!is_array($cList))\r\n\t\t{\r\n\t\t\t$cList = array(NULL =&gt; NULL);\r\n\t\t}\r\n\t\t\r\n\t\tforeach ($cList as $cKey =&gt; $cValue)\r\n\t\t{\t\t\t\t\r\n\t\t\t\/* If $cValue matches $cCurrent, or $cCurrent not provided but $cValue matches $cDefault, add 'checked' to make this the default list item selected. *\/\t\r\n\t\t\tif ($cCurrent == $cValue || ($cCurrent == self::FORMS_VALUE_CURRENT_NONE &amp;&amp; $cValue == $cDefault))\r\n\t\t\t{\r\n\t\t\t\t$cChecked = 'selected';\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t$cChecked = NULL;\r\n\t\t\t}\t\t\r\n\t\t\t\t\t\r\n\t\t\t\/* Prepare label markup. *\/\r\n\t\t\t$cLabel = $this-&gt;forms_label_markup(self::FORMS_LABEL_USE_ITEM_KEY, self::FORMS_LABEL_TYPE_INLINE, $cName, $cID, $cKey, $cValue);\t\r\n\t\t\t\r\n\t\t\t$cItems.='&lt;option value=&quot;'.$cValue.'&quot; '.$cChecked.'&gt;' . $cLabel . '&lt;\/option&gt;';\t\t\t\r\n\t\t}\t\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\/* Prepare label markup. *\/\r\n\t\t$cLabel = $this-&gt;forms_label_markup($iLabelStyle, self::FORMS_LABEL_TYPE_FIELDSET, $cName, $cID, $cKey, $cValue);\t\r\n\r\n\t\t$cMarkup .= $cLabel.'&lt;div class=&quot;'.$cClass&#x5B;'Container_Item'].'&quot;&gt;&lt;select type=&quot;select&quot; name=&quot;'.$cName.'&quot; id=&quot;'.$cID.'&quot; class=&quot;'.$cClass&#x5B;'Item'].'&quot; '.$cEvent.'&gt;'.$cItems.'&lt;\/select&gt;&lt;\/div&gt;&lt;\/div&gt;';\r\n\t\t\r\n\t\t\/*\r\n\t\tReturn end result.\r\n\t\t*\/\r\n\t\treturn $cMarkup;\r\n\t\r\n\t}\r\n\t\t\t\t\t\r\n\tpublic function forms_text($cName=NULL, $cID=self::FORMS_ID_USE_NAME, $cLabel=self::FORMS_LABEL_NONE, $cDefault=self::FORMS_VALUE_DEFAULT_NONE, $cCurrent=self::FORMS_VALUE_CURRENT_NONE, $cClass=array(&quot;Item&quot; =&gt; &quot;Standard&quot;), $cEvents=NULL)\r\n\t{\t\r\n\t\t\/*\r\n\t\tforms_text\r\n\t\tDamon Vaughn Caskey\r\n\t\t2013-01-21\r\n\t\t\r\n\t\tOutput form text input markup.\t\t\t\t\r\n\t\t*\/\r\n\t\r\n\t\t$cMarkup \t=\tNULL;\t\/\/Final markup to echo.\r\n\t\t$cEvent\t\t=\tNULL;\t\/\/Event string.\t\r\n\t\t\r\n\t\t$cMarkup .='&lt;div class=&quot;'.$cClass&#x5B;'Container_All'].'&quot;&gt;';\r\n\t\t\t\t\r\n\t\t\/* Set ID to name? *\/\r\n\t\t$cID = $cID != self::FORMS_ID_USE_NAME ? $cID : $cName;\r\n\t\t\r\n\t\t\/* If current value empty or NULL, set &quot;No current&quot; cosntant *\/\r\n\t\t$cCurrent = $cCurrent ? $cCurrent : self::FORMS_VALUE_CURRENT_NONE;\r\n\t\t\r\n\t\t$cDefault = $cDefault == self::FORMS_VALUE_DEFAULT_NONE ? NULL : $cDefault; \r\n\t\t\r\n\t\t\/* If no current value is available, use default. *\/\r\n\t\tif(!$cCurrent || $cCurrent == self::FORMS_VALUE_CURRENT_NONE)\r\n\t\t{\r\n\t\t\t$cCurrent = $cDefault;\r\n\t\t}\r\n\t\t\t\t\r\n\t\t\/* Parse event actions. *\/\r\n\t\t$cEvent = $this-&gt;forms_events_markup($cEvents);\t\t\t\r\n\t\t\r\n\t\t\/* Prepare label markup. *\/\r\n\t\t$cMarkup .= $this-&gt;forms_label_markup($cLabel, self::FORMS_LABEL_TYPE_FIELDSET, $cName, $cID, $cKey, $cValue);\r\n\t\t\t\t\t\r\n\t\t$cMarkup .= '&lt;div class=&quot;'.$cClass&#x5B;'Container_Item'].'&quot;&gt;&lt;input type=&quot;text&quot; name=&quot;'.$cName.'&quot; id=&quot;'.$cID.'&quot; class=&quot;'.$cClass&#x5B;'Item'].'&quot; value=&quot;'.$cCurrent.'&quot; '.$cEvent.' \/&gt;&lt;\/div&gt;&lt;\/div&gt;';\r\n\t\t\r\n\t\t\/*\r\n\t\tReturn end result.\r\n\t\t*\/\r\n\t\treturn $cMarkup;\r\n\t}\r\n\t\r\n\tpublic function forms_time($cName=NULL, $cID=self::FORMS_ID_USE_NAME, $cLabel=self::FORMS_LABEL_NONE, $cDefault=NULL, $cCurrent=NULL, $cOptions=&quot;{dateFormat: 'yy-mm-dd', timeFormat: 'HH:mm:ss', controlType: 'select', changeYear: true, constrainInput: true}&quot;, $cFunction=&quot;datetimepicker&quot;, $bReadOnly=self::FORMS_READ_ONLY_ON, $cClass=NULL, $cEvents=NULL)\r\n\t{\t\r\n\t\t\/*\r\n\t\tforms_time\r\n\t\tDamon Vaughn Caskey\r\n\t\t2013-01-21\r\n\t\t\r\n\t\tOutput form date\/time input markup.\r\n\t\t*\/\r\n\t\r\n\t\t$cMarkup \t=\tNULL;\t\/\/Final markup to echo.\r\n\t\t$cEvent\t\t=\tNULL;\t\/\/Event string.\t\r\n\t\t\t\t\r\n\t\t$cMarkup .='&lt;div class=&quot;'.$cClass&#x5B;'Container_All'].'&quot;&gt;';\r\n\t\t\t\t\r\n\t\t\/* Set ID to name? *\/\r\n\t\t$cID = $cID != self::FORMS_ID_USE_NAME ? $cID : $cName;\r\n\t\t\r\n\t\t\/* If current value empty or NULL, set &quot;No current&quot; cosntant *\/\r\n\t\t$cCurrent = $cCurrent ? $cCurrent : self::FORMS_VALUE_CURRENT_NONE;\r\n\t\t\r\n\t\t$cDefault = $cDefault == self::FORMS_VALUE_DEFAULT_NONE ? NULL : $cDefault; \r\n\t\t\r\n\t\t\/* If no current value is available, use default. *\/\r\n\t\tif(!$cCurrent || $cCurrent == self::FORMS_VALUE_CURRENT_NONE)\r\n\t\t{\r\n\t\t\t$cCurrent = $cDefault;\r\n\t\t}\r\n\t\t \t\t\t\t\t\t\r\n\t\t\/* Parse event actions. *\/\r\n\t\t$cEvent = $this-&gt;forms_events_markup($cEvents);\t\t\t\r\n\t\t\r\n\t\t\/* Prepare label markup. *\/\r\n\t\t$cMarkup .= $this-&gt;forms_label_markup($cLabel, self::FORMS_LABEL_TYPE_FIELDSET, $cName, $cID, $cKey, $cValue);\t\t\r\n\t\t\r\n\t\t$cMarkup .= &quot;&lt;script&gt;$(function(){\r\n\t\t\t\t\t\t$( '#&quot;.$cID.&quot;' ).&quot;.$cFunction.&quot;(&quot;.$cOptions.&quot;);\r\n\t\t\t\t\t});&lt;\/script&gt;&quot;;\r\n\r\n\t\t$cMarkup .= &quot;&lt;input type='text' name='&quot;.$cName.&quot;' id='&quot;.$cID.&quot;' value='&quot;.$cCurrent.&quot;'&quot;;\r\n\t\t\r\n\t\tif ($bReadOnly==TRUE)\r\n\t\t{\r\n\t\t\t$cMarkup .= &quot; readonly='readonly'&quot;;\r\n\t\t}\r\n\t\t\r\n\t\t$cMarkup .= &quot; \/&gt;&lt;\/div&gt;&quot;;\r\n\t\t\r\n\t\t\/*\tReturn end result. *\/\r\n\t\treturn $cMarkup;\r\n\t}\r\n\t\r\n\tpublic function forms_fieldset($cID=NULL, $cLegend=self::FORMS_LEGEND_NONE, $cElements=array(NULL), $cAddOns=array(NULL), $cClass=array(&quot;Div&quot;=&gt;&quot;table_row_0&quot;, &quot;Fieldset&quot;=&gt;&quot;Standard&quot;))\r\n\t{\r\n\t\t\/*\r\n\t\tforms_fieldset\r\n\t\tDamon Vaughn Caskey\r\n\t\t2013-03-25\r\n\t\t\r\n\t\tArrage form input items into a fieldset.\r\n\t\t\r\n\t\t$cID: \t\tFieldset ID.\r\n\t\t$cLegend: \tLegend label, if any.\r\n\t\t$cElements:\tMarkup of field list items (select lists, radio groups, text boxes, etc).\r\n\t\t$cClass:\tStyle classes.\r\n\t\t*\/\r\n\t\t\r\n\t\t$cElementKey\t= NULL;\t\/\/Single element key.\r\n\t\t$cElementVal\t= NULL;\t\/\/Single element value.\r\n\t\t\r\n\t\t$cMarkup = '&lt;div class=&quot;'.$cClass&#x5B;'Div'].'&quot;&gt;&lt;fieldset id=&quot;'.$cID.'&quot; class=&quot;'.$cClass&#x5B;'Fieldset'].'&quot;&gt;';\r\n\t\t\r\n\t\t\r\n\t\tif($cLegend != self::FORMS_LEGEND_NONE)\r\n\t\t{\r\n\t\t\t$cMarkup .= '&lt;legend&gt;'.$cLegend.'&lt;\/legend&gt;';\t \r\n\t\t}\t\t\t\t\r\n\t\t\r\n\t\tforeach($cAddOns as $cElementKey =&gt; $cElementVal)\r\n\t\t{\r\n\t\t\t$cMarkup .= '&lt;div class=&quot;'.$cElementKey.'&quot;&gt;'.$cElementVal.'&lt;\/div&gt;';\r\n\t\t}\t\r\n\t\t\r\n\t\tforeach($cElements as $cElementKey =&gt; $cElementVal)\r\n\t\t{\r\n\t\t\t$cMarkup .= '&lt;div class=&quot;'.$cElementKey.'&quot;&gt;'.$cElementVal.'&lt;\/div&gt;';\r\n\t\t}\t\t\r\n\t\t\r\n\t\t$cMarkup .= '&lt;\/fieldset&gt;&lt;\/div&gt;';\r\n\t\t\r\n\t\t$this-&gt;cFieldset&#x5B;$cID] = $cMarkup;\r\n\t\t\r\n\t\treturn $this-&gt;cFieldset&#x5B;$cID];\r\n\t}\r\n\t\t\r\n}\r\n?&gt;\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Forms class.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[71],"tags":[27,234],"class_list":["post-5275","post","type-post","status-publish","format-standard","hentry","category-technology-temerity","tag-coding","tag-coding-php"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5lNM5-1n5","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/posts\/5275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/comments?post=5275"}],"version-history":[{"count":4,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/posts\/5275\/revisions"}],"predecessor-version":[{"id":6186,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/posts\/5275\/revisions\/6186"}],"wp:attachment":[{"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/media?parent=5275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/categories?post=5275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.caskeys.com\/dc\/wp-json\/wp\/v2\/tags?post=5275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}