PageRenderTime 45ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/plugins/dataTypes/Date/Date.class.php

http://github.com/benkeen/generatedata
PHP | 228 lines | 190 code | 32 blank | 6 comment | 3 complexity | 7b4dc1b18dd505398027ad799cd2ed39 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.1
  1. <?php
  2. /**
  3. * @package DataTypes
  4. */
  5. class DataType_Date extends DataTypePlugin {
  6. protected $isEnabled = true;
  7. protected $dataTypeName = "Date";
  8. protected $dataTypeFieldGroup = "human_data";
  9. protected $dataTypeFieldGroupOrder = 40;
  10. protected $jsModules = array("Date.js");
  11. public function generate($generator, $generationContextData) {
  12. $options = $generationContextData["generationOptions"];
  13. // convert the From and To dates to datetimes
  14. list($month, $day, $year) = split("/", $options["from"]);
  15. $fromDate = mktime(0, 0, 0, $month, $day, $year);
  16. list($month, $day, $year) = split("/", $options["to"]);
  17. $toDate = mktime(0, 0, 0, $month, $day, $year);
  18. // randomly pick a date between those dates
  19. $randDate = mt_rand($fromDate, $toDate);
  20. // display the new date in the value specified
  21. $date = date($options["formatCode"], $randDate);
  22. return array(
  23. "display" => $date
  24. );
  25. }
  26. public function getRowGenerationOptions($generator, $postdata, $colNum, $numCols) {
  27. if (empty($postdata["dtFromDate_$colNum"]) || empty($postdata["dtToDate_$colNum"]) || empty($postdata["dtOption_$colNum"])) {
  28. return false;
  29. }
  30. $options = array(
  31. "formatCode" => $postdata["dtOption_$colNum"],
  32. "from" => $postdata["dtFromDate_$colNum"],
  33. "to" => $postdata["dtToDate_$colNum"]
  34. );
  35. return $options;
  36. }
  37. public function getDataTypeMetadata() {
  38. return array(
  39. "SQLField" => "varchar(255)",
  40. "SQLField_Oracle" => "varchar2(255)",
  41. "SQLField_MSSQL" => "DATETIME NULL"
  42. );
  43. }
  44. public function getExampleColumnHTML() {
  45. $L = Core::$language->getCurrentLanguageStrings();
  46. $html =<<<EOF
  47. <select id="dtExample_%ROW%">
  48. <option value="">{$L["please_select"]}</option>
  49. <option value="M j, Y">Jan 1, 2012</option>
  50. <option value="F jS, Y">January 1st, 2012</option>
  51. <option value="D, M d">Mon, Jan 01</option>
  52. <option value="D, jS, Y">Mon, Jan 1st, 2012</option>
  53. <option value="m.d.y">03.25.06</option>
  54. <option value="m-d-y">03-25-06</option>
  55. <option value="m/d/y">03/25/06</option>
  56. <option value="m/d/Y">03/25/2012</option>
  57. <option value="d.m.y">25.03.06</option>
  58. <option value="d-m-y">25-03-06</option>
  59. <option value="d/m/y">25/03/06</option>
  60. <option value="d/m/Y">25/03/2012</option>
  61. <option value="Y-m-d H:i:s">MySQL datetime</option>
  62. <option value="U">UNIX timestamp</option>
  63. <option value="c">ISO 8601 date</option>
  64. <option value="r">RFC 2822 formatted date</option>
  65. <option value="T">A timezone</option>
  66. </select>
  67. EOF;
  68. return $html;
  69. }
  70. public function getOptionsColumnHTML() {
  71. $L = Core::$language->getCurrentLanguageStrings();
  72. $nextYear = date("m/d/Y", mktime(0, 0, 0, date("m"), date("d"), date("Y")+1));
  73. $lastYear = date("m/d/Y", mktime(0, 0, 0, date("m"), date("d"), date("Y")-1));
  74. $html =<<< END
  75. {$this->L["from"]} <input type="text" name="dtFromDate_%ROW%" id="dtFromDate_%ROW%" size="10" value="$lastYear" readonly="readonly" />
  76. {$this->L["to"]} <input type="text" name="dtToDate_%ROW%" id="dtToDate_%ROW%" size="10" value="$nextYear" readonly="readonly" />
  77. <div>
  78. {$this->L["format_code"]}&nbsp;<input type="text" name="dtOption_%ROW%" id="dtOption_%ROW%" style="width: 160px" />
  79. </div>
  80. END;
  81. return $html;
  82. }
  83. public function getHelpHTML() {
  84. $html =<<<END
  85. <p>
  86. {$this->L["help_intro"]}
  87. </p>
  88. <table cellpadding="0" cellspacing="1">
  89. <tr>
  90. <td width="50"><h2>{$this->L["char"]}</h2></td>
  91. <td width="300"><h2>{$this->L["description"]}</h2></td>
  92. <td><h2>{$this->L["example"]}</h2></td>
  93. </tr>
  94. </table>
  95. <hr size="1" />
  96. <h3 class="gdSubtitle">{$this->L["day"]}</h3>
  97. <hr size="1" />
  98. <table cellpadding="0" cellspacing="1">
  99. <tr>
  100. <td width="50"><h4>d</h4></td>
  101. <td width="300">{$this->L["help_d"]}</td>
  102. <td>{$this->L["help_d_example"]}</td>
  103. </tr>
  104. <tr>
  105. <td><h4>D</h4></td>
  106. <td>{$this->L["help_D"]}</td>
  107. <td>{$this->L["help_D_example"]}</td>
  108. </tr>
  109. <tr>
  110. <td><h4>j</h4></td>
  111. <td>{$this->L["help_j"]}</td>
  112. <td>{$this->L["help_j_example"]}</td>
  113. </tr>
  114. <tr>
  115. <td><h4>l</h4></td>
  116. <td>{$this->L["help_l"]}</td>
  117. <td>{$this->L["help_l_example"]}</td>
  118. </tr>
  119. <tr>
  120. <td valign="top"><h4>S</h4></td>
  121. <td>{$this->L["help_S"]}</td>
  122. <td valign="top">{$this->L["help_S_example"]}</td>
  123. </tr>
  124. <tr>
  125. <td valign="top"><h4>w</h4></td>
  126. <td valign="top">{$this->L["help_w"]}</td>
  127. <td valign="top">{$this->L["help_w_example"]}</td>
  128. </tr>
  129. <tr>
  130. <td><h4>z</h4></td>
  131. <td>{$this->L["help_z"]}</td>
  132. <td>{$this->L["help_z_example"]}</td>
  133. </tr>
  134. </table>
  135. <h3 class="gdSubtitle">{$this->L["week"]}</h3>
  136. <hr size="1" />
  137. <table cellpadding="0" cellspacing="1">
  138. <tr>
  139. <td width="50" valign="top"><h4>W</h4></td>
  140. <td width="300" valign="top">{$this->L["help_W"]}</td>
  141. <td valign="top">{$this->L["help_W_example"]}</td>
  142. </tr>
  143. </table>
  144. <h3 class="gdSubtitle">{$this->L["month"]}</h3>
  145. <hr size="1" />
  146. <table cellpadding="0" cellspacing="1">
  147. <tr>
  148. <td width="50" valign="top"><h4>F</h4></td>
  149. <td width="300">{$this->L["help_F"]}</td>
  150. <td valign="top">{$this->L["help_F_example"]}</td>
  151. </tr>
  152. <tr>
  153. <td><h4>m</h4></td>
  154. <td>{$this->L["help_m"]}</td>
  155. <td>{$this->L["help_m_example"]}</td>
  156. </tr>
  157. <tr>
  158. <td><h4>M</h4></td>
  159. <td>{$this->L["help_M"]}</td>
  160. <td>{$this->L["help_M_example"]}</td>
  161. </tr>
  162. <tr>
  163. <td valign="top"><h4>n</h4></td>
  164. <td>{$this->L["help_n"]}</td>
  165. <td valign="top">{$this->L["help_n_example"]}</td>
  166. </tr>
  167. <tr>
  168. <td><h4>t</h4></td>
  169. <td>{$this->L["help_t"]}</td>
  170. <td>{$this->L["help_t_example"]}</td>
  171. </tr>
  172. </table>
  173. <h3 class="gdSubtitle">{$this->L["year"]}</h3>
  174. <hr size="1" />
  175. <table cellpadding="0" cellspacing="1">
  176. <tr>
  177. <td width="50"><h4>L</h4></td>
  178. <td width="300">{$this->L["help_L"]}</td>
  179. <td>{$this->L["help_L_example"]}</td>
  180. </tr>
  181. <tr>
  182. <td><h4>Y</h4></td>
  183. <td>{$this->L["help_Y"]}</td>
  184. <td>{$this->L["help_Y_example"]}</td>
  185. </tr>
  186. <tr>
  187. <td><h4>y</h4></td>
  188. <td>{$this->L["help_y"]}</td>
  189. <td>{$this->L["help_y_example"]}</td>
  190. </tr>
  191. </table>
  192. <br />
  193. END;
  194. return $html;
  195. }
  196. }