codeigniter_vender 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (350) hide show
  1. data/.gitignore +2 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README +40 -0
  4. data/Rakefile +18 -0
  5. data/VERSION +1 -0
  6. data/codeigniter_vender.gemspec +389 -0
  7. data/generators/ci_app/USAGE +8 -0
  8. data/generators/ci_app/ci_app_generator.rb +12 -0
  9. data/generators/ci_app/templates/CodeIgniter_1.7.2/index.php +118 -0
  10. data/generators/ci_app/templates/CodeIgniter_1.7.2/license.txt +52 -0
  11. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/autoload.php +116 -0
  12. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/config.php +329 -0
  13. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/constants.php +41 -0
  14. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/database.php +55 -0
  15. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/doctypes.php +15 -0
  16. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/hooks.php +16 -0
  17. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/index.html +10 -0
  18. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/mimes.php +105 -0
  19. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/routes.php +48 -0
  20. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/smileys.php +66 -0
  21. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/config/user_agents.php +175 -0
  22. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/controllers/index.html +10 -0
  23. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/controllers/welcome.php +17 -0
  24. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/errors/error_404.php +34 -0
  25. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/errors/error_db.php +34 -0
  26. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/errors/error_general.php +34 -0
  27. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/errors/error_php.php +10 -0
  28. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/errors/index.html +10 -0
  29. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/helpers/index.html +10 -0
  30. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/hooks/index.html +10 -0
  31. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/index.html +10 -0
  32. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/language/english/index.html +10 -0
  33. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/libraries/index.html +10 -0
  34. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/models/index.html +10 -0
  35. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/views/index.html +10 -0
  36. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/application/views/welcome_message.php +62 -0
  37. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/cache/index.html +10 -0
  38. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/codeigniter/Base4.php +69 -0
  39. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/codeigniter/Base5.php +56 -0
  40. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/codeigniter/CodeIgniter.php +280 -0
  41. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/codeigniter/Common.php +421 -0
  42. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/codeigniter/Compat.php +93 -0
  43. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/codeigniter/index.html +10 -0
  44. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/DB.php +146 -0
  45. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/DB_active_rec.php +1820 -0
  46. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/DB_cache.php +195 -0
  47. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/DB_driver.php +1366 -0
  48. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/DB_forge.php +375 -0
  49. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/DB_result.php +342 -0
  50. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/DB_utility.php +389 -0
  51. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/index.html +10 -0
  52. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mssql/index.html +10 -0
  53. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mssql/mssql_driver.php +667 -0
  54. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mssql/mssql_forge.php +248 -0
  55. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mssql/mssql_result.php +169 -0
  56. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mssql/mssql_utility.php +123 -0
  57. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mysql/index.html +10 -0
  58. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mysql/mysql_driver.php +670 -0
  59. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mysql/mysql_forge.php +254 -0
  60. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mysql/mysql_result.php +169 -0
  61. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mysql/mysql_utility.php +245 -0
  62. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mysqli/index.html +10 -0
  63. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mysqli/mysqli_driver.php +671 -0
  64. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mysqli/mysqli_forge.php +254 -0
  65. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mysqli/mysqli_result.php +169 -0
  66. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/mysqli/mysqli_utility.php +123 -0
  67. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/oci8/index.html +10 -0
  68. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/oci8/oci8_driver.php +780 -0
  69. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/oci8/oci8_forge.php +248 -0
  70. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/oci8/oci8_result.php +249 -0
  71. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/oci8/oci8_utility.php +122 -0
  72. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/odbc/index.html +10 -0
  73. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/odbc/odbc_driver.php +639 -0
  74. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/odbc/odbc_forge.php +266 -0
  75. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/odbc/odbc_result.php +228 -0
  76. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/odbc/odbc_utility.php +148 -0
  77. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/postgre/index.html +10 -0
  78. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/postgre/postgre_driver.php +684 -0
  79. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/postgre/postgre_forge.php +248 -0
  80. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/postgre/postgre_result.php +169 -0
  81. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/postgre/postgre_utility.php +124 -0
  82. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/sqlite/index.html +10 -0
  83. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/sqlite/sqlite_driver.php +657 -0
  84. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/sqlite/sqlite_forge.php +265 -0
  85. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/sqlite/sqlite_result.php +179 -0
  86. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/drivers/sqlite/sqlite_utility.php +141 -0
  87. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/database/index.html +10 -0
  88. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/fonts/index.html +10 -0
  89. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/fonts/texb.ttf +0 -0
  90. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/array_helper.php +78 -0
  91. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/compatibility_helper.php +498 -0
  92. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/cookie_helper.php +144 -0
  93. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/date_helper.php +611 -0
  94. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/directory_helper.php +84 -0
  95. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/download_helper.php +100 -0
  96. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/email_helper.php +62 -0
  97. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/file_helper.php +464 -0
  98. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/form_helper.php +1025 -0
  99. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/html_helper.php +416 -0
  100. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/index.html +10 -0
  101. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/inflector_helper.php +171 -0
  102. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/language_helper.php +58 -0
  103. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/number_helper.php +75 -0
  104. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/path_helper.php +72 -0
  105. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/security_helper.php +126 -0
  106. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/smiley_helper.php +273 -0
  107. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/string_helper.php +273 -0
  108. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/text_helper.php +462 -0
  109. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/typography_helper.php +71 -0
  110. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/url_helper.php +593 -0
  111. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/helpers/xml_helper.php +62 -0
  112. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/index.html +10 -0
  113. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/calendar_lang.php +51 -0
  114. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/date_lang.php +60 -0
  115. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/db_lang.php +28 -0
  116. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/email_lang.php +24 -0
  117. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/form_validation_lang.php +24 -0
  118. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/ftp_lang.php +17 -0
  119. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/imglib_lang.php +24 -0
  120. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/index.html +10 -0
  121. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/number_lang.php +10 -0
  122. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/profiler_lang.php +19 -0
  123. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/scaffolding_lang.php +17 -0
  124. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/unit_test_lang.php +24 -0
  125. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/upload_lang.php +22 -0
  126. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/english/validation_lang.php +24 -0
  127. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/language/index.html +10 -0
  128. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Benchmark.php +113 -0
  129. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Calendar.php +477 -0
  130. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Cart.php +550 -0
  131. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Config.php +244 -0
  132. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Controller.php +127 -0
  133. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Email.php +2041 -0
  134. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Encrypt.php +484 -0
  135. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Exceptions.php +174 -0
  136. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Form_validation.php +1278 -0
  137. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Ftp.php +618 -0
  138. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Hooks.php +226 -0
  139. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Image_lib.php +1544 -0
  140. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Input.php +1067 -0
  141. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Language.php +123 -0
  142. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Loader.php +1085 -0
  143. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Log.php +117 -0
  144. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Model.php +83 -0
  145. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Output.php +409 -0
  146. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Pagination.php +244 -0
  147. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Parser.php +173 -0
  148. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Profiler.php +392 -0
  149. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Router.php +389 -0
  150. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Session.php +758 -0
  151. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Sha1.php +251 -0
  152. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Table.php +440 -0
  153. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Trackback.php +547 -0
  154. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Typography.php +406 -0
  155. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/URI.php +586 -0
  156. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Unit_test.php +347 -0
  157. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Upload.php +970 -0
  158. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/User_agent.php +502 -0
  159. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Validation.php +875 -0
  160. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Xmlrpc.php +1421 -0
  161. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Xmlrpcs.php +536 -0
  162. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/Zip.php +359 -0
  163. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/libraries/index.html +10 -0
  164. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/logs/index.html +10 -0
  165. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/plugins/captcha_pi.php +356 -0
  166. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/plugins/index.html +10 -0
  167. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/plugins/js_calendar_pi.php +629 -0
  168. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/Scaffolding.php +291 -0
  169. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/images/background.jpg +0 -0
  170. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/images/index.html +10 -0
  171. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/images/logo.jpg +0 -0
  172. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/index.html +10 -0
  173. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/views/add.php +32 -0
  174. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/views/delete.php +9 -0
  175. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/views/edit.php +33 -0
  176. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/views/footer.php +10 -0
  177. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/views/header.php +29 -0
  178. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/views/index.html +10 -0
  179. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/views/no_data.php +8 -0
  180. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/views/stylesheet.css +143 -0
  181. data/generators/ci_app/templates/CodeIgniter_1.7.2/system/scaffolding/views/view.php +27 -0
  182. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/changelog.html +1080 -0
  183. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/active_record.html +757 -0
  184. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/caching.html +220 -0
  185. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/call_function.html +118 -0
  186. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/configuration.html +157 -0
  187. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/connecting.html +186 -0
  188. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/examples.html +217 -0
  189. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/fields.html +163 -0
  190. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/forge.html +234 -0
  191. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/helpers.html +151 -0
  192. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/index.html +99 -0
  193. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/queries.html +153 -0
  194. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/results.html +238 -0
  195. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/table_data.html +113 -0
  196. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/transactions.html +200 -0
  197. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/database/utilities.html +295 -0
  198. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/doc_style/index.html +86 -0
  199. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/doc_style/template.html +128 -0
  200. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/alternative_php.html +147 -0
  201. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/ancillary_classes.html +117 -0
  202. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/autoloader.html +101 -0
  203. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/caching.html +115 -0
  204. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/common_functions.html +119 -0
  205. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/controllers.html +385 -0
  206. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/core_classes.html +185 -0
  207. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/creating_libraries.html +298 -0
  208. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/credits.html +86 -0
  209. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/errors.html +138 -0
  210. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/helpers.html +185 -0
  211. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/hooks.html +167 -0
  212. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/libraries.html +94 -0
  213. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/managing_apps.html +133 -0
  214. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/models.html +251 -0
  215. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/plugins.html +127 -0
  216. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/profiling.html +104 -0
  217. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/quick_reference.html +77 -0
  218. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/requirements.html +82 -0
  219. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/reserved_names.html +156 -0
  220. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/routing.html +176 -0
  221. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/scaffolding.html +147 -0
  222. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/security.html +153 -0
  223. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/styleguide.html +687 -0
  224. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/urls.html +151 -0
  225. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/general/views.html +274 -0
  226. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/array_helper.html +119 -0
  227. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/compatibility_helper.html +118 -0
  228. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/cookie_helper.html +147 -0
  229. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/date_helper.html +408 -0
  230. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/directory_helper.html +143 -0
  231. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/download_helper.html +112 -0
  232. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/email_helper.html +102 -0
  233. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/file_helper.html +178 -0
  234. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/form_helper.html +484 -0
  235. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/html_helper.html +385 -0
  236. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/inflector_helper.html +151 -0
  237. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/language_helper.html +98 -0
  238. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/number_helper.html +107 -0
  239. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/path_helper.html +106 -0
  240. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/security_helper.html +125 -0
  241. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/smiley_helper.html +215 -0
  242. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/string_helper.html +176 -0
  243. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/text_helper.html +192 -0
  244. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/typography_helper.html +112 -0
  245. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/url_helper.html +289 -0
  246. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/helpers/xml_helper.html +105 -0
  247. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/appflowchart.gif +0 -0
  248. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/arrow.gif +0 -0
  249. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/ci_logo.jpg +0 -0
  250. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/ci_logo_flame.jpg +0 -0
  251. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/ci_quick_ref.png +0 -0
  252. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/codeigniter_1.7.1_helper_reference.pdf +0 -0
  253. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/codeigniter_1.7.1_helper_reference.png +0 -0
  254. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/codeigniter_1.7.1_library_reference.pdf +0 -0
  255. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/codeigniter_1.7.1_library_reference.png +0 -0
  256. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/file.gif +0 -0
  257. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/folder.gif +0 -0
  258. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/nav_bg_darker.jpg +0 -0
  259. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/nav_separator_darker.jpg +0 -0
  260. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/nav_toggle_darker.jpg +0 -0
  261. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/smile.gif +0 -0
  262. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/images/transparent.gif +0 -0
  263. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/index.html +99 -0
  264. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/downloads.html +105 -0
  265. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/index.html +97 -0
  266. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/troubleshooting.html +90 -0
  267. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_120.html +92 -0
  268. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_130.html +203 -0
  269. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_131.html +102 -0
  270. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_132.html +100 -0
  271. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_133.html +112 -0
  272. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_140.html +145 -0
  273. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_141.html +148 -0
  274. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_150.html +178 -0
  275. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_152.html +111 -0
  276. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_153.html +100 -0
  277. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_154.html +116 -0
  278. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_160.html +125 -0
  279. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_161.html +98 -0
  280. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_162.html +106 -0
  281. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_163.html +99 -0
  282. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_170.html +121 -0
  283. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_171.html +98 -0
  284. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_172.html +105 -0
  285. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrade_b11.html +144 -0
  286. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/installation/upgrading.html +101 -0
  287. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/benchmark.html +198 -0
  288. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/calendar.html +249 -0
  289. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/cart.html +346 -0
  290. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/config.html +181 -0
  291. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/email.html +307 -0
  292. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/encryption.html +182 -0
  293. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/file_uploading.html +451 -0
  294. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/form_validation.html +1221 -0
  295. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/ftp.html +303 -0
  296. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/image_lib.html +666 -0
  297. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/input.html +231 -0
  298. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/language.html +137 -0
  299. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/loader.html +214 -0
  300. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/output.html +145 -0
  301. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/pagination.html +218 -0
  302. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/parser.html +208 -0
  303. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/sessions.html +311 -0
  304. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/table.html +292 -0
  305. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/trackback.html +246 -0
  306. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/typography.html +160 -0
  307. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/unit_testing.html +205 -0
  308. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/uri.html +252 -0
  309. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/user_agent.html +201 -0
  310. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/validation.html +740 -0
  311. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/xmlrpc.html +517 -0
  312. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/libraries/zip.html +278 -0
  313. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/license.html +107 -0
  314. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/nav/hacks.txt +9 -0
  315. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/nav/moo.fx.js +119 -0
  316. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/nav/moo.fx.pack.js +241 -0
  317. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/nav/nav.js +139 -0
  318. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/nav/prototype.lite.js +127 -0
  319. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/nav/user_guide_menu.js +4 -0
  320. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/overview/appflow.html +95 -0
  321. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/overview/at_a_glance.html +172 -0
  322. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/overview/cheatsheets.html +83 -0
  323. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/overview/features.html +120 -0
  324. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/overview/getting_started.html +92 -0
  325. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/overview/goals.html +98 -0
  326. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/overview/index.html +84 -0
  327. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/overview/mvc.html +100 -0
  328. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/toc.html +209 -0
  329. data/generators/ci_app/templates/CodeIgniter_1.7.2/user_guide/userguide.css +406 -0
  330. data/generators/ci_app/templates/README +1 -0
  331. data/generators/ci_controller/USAGE +2 -0
  332. data/generators/ci_controller/ci_controller_generator.rb +11 -0
  333. data/generators/ci_controller/templates/ci_controller.php.erb +15 -0
  334. data/generators/ci_controller/templates/ci_view.php.erb +8 -0
  335. data/generators/ci_layout/USAGE +2 -0
  336. data/generators/ci_layout/ci_layout_generator.rb +24 -0
  337. data/generators/ci_layout/templates/application_layout.php.erb +19 -0
  338. data/generators/ci_model/USAGE +2 -0
  339. data/generators/ci_model/ci_model_generator.rb +42 -0
  340. data/generators/ci_model/templates/ci_model.php.erb +15 -0
  341. data/generators/ci_model/templates/model.rb +5 -0
  342. data/generators/ci_model/templates/model_migration.rb.erb +16 -0
  343. data/init.rb +1 -0
  344. data/install.rb +1 -0
  345. data/lib/codeigniter_vender.rb +1 -0
  346. data/lib/tasks/app.rake +8 -0
  347. data/test/codeigniter_vender_test.rb +8 -0
  348. data/test/test_helper.rb +3 -0
  349. data/uninstall.rb +1 -0
  350. metadata +411 -0
@@ -0,0 +1,1421 @@
1
+ <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2
+ /**
3
+ * CodeIgniter
4
+ *
5
+ * An open source application development framework for PHP 4.3.2 or newer
6
+ *
7
+ * @package CodeIgniter
8
+ * @author ExpressionEngine Dev Team
9
+ * @copyright Copyright (c) 2008 - 2010, EllisLab, Inc.
10
+ * @license http://codeigniter.com/user_guide/license.html
11
+ * @link http://codeigniter.com
12
+ * @since Version 1.0
13
+ * @filesource
14
+ */
15
+
16
+ if ( ! function_exists('xml_parser_create'))
17
+ {
18
+ show_error('Your PHP installation does not support XML');
19
+ }
20
+
21
+
22
+ // ------------------------------------------------------------------------
23
+
24
+ /**
25
+ * XML-RPC request handler class
26
+ *
27
+ * @package CodeIgniter
28
+ * @subpackage Libraries
29
+ * @category XML-RPC
30
+ * @author ExpressionEngine Dev Team
31
+ * @link http://codeigniter.com/user_guide/libraries/xmlrpc.html
32
+ */
33
+ class CI_Xmlrpc {
34
+
35
+ var $debug = FALSE; // Debugging on or off
36
+ var $xmlrpcI4 = 'i4';
37
+ var $xmlrpcInt = 'int';
38
+ var $xmlrpcBoolean = 'boolean';
39
+ var $xmlrpcDouble = 'double';
40
+ var $xmlrpcString = 'string';
41
+ var $xmlrpcDateTime = 'dateTime.iso8601';
42
+ var $xmlrpcBase64 = 'base64';
43
+ var $xmlrpcArray = 'array';
44
+ var $xmlrpcStruct = 'struct';
45
+
46
+ var $xmlrpcTypes = array();
47
+ var $valid_parents = array();
48
+ var $xmlrpcerr = array(); // Response numbers
49
+ var $xmlrpcstr = array(); // Response strings
50
+
51
+ var $xmlrpc_defencoding = 'UTF-8';
52
+ var $xmlrpcName = 'XML-RPC for CodeIgniter';
53
+ var $xmlrpcVersion = '1.1';
54
+ var $xmlrpcerruser = 800; // Start of user errors
55
+ var $xmlrpcerrxml = 100; // Start of XML Parse errors
56
+ var $xmlrpc_backslash = ''; // formulate backslashes for escaping regexp
57
+
58
+ var $client;
59
+ var $method;
60
+ var $data;
61
+ var $message = '';
62
+ var $error = ''; // Error string for request
63
+ var $result;
64
+ var $response = array(); // Response from remote server
65
+
66
+
67
+ //-------------------------------------
68
+ // VALUES THAT MULTIPLE CLASSES NEED
69
+ //-------------------------------------
70
+
71
+ function CI_Xmlrpc ($config = array())
72
+ {
73
+ $this->xmlrpcName = $this->xmlrpcName;
74
+ $this->xmlrpc_backslash = chr(92).chr(92);
75
+
76
+ // Types for info sent back and forth
77
+ $this->xmlrpcTypes = array(
78
+ $this->xmlrpcI4 => '1',
79
+ $this->xmlrpcInt => '1',
80
+ $this->xmlrpcBoolean => '1',
81
+ $this->xmlrpcString => '1',
82
+ $this->xmlrpcDouble => '1',
83
+ $this->xmlrpcDateTime => '1',
84
+ $this->xmlrpcBase64 => '1',
85
+ $this->xmlrpcArray => '2',
86
+ $this->xmlrpcStruct => '3'
87
+ );
88
+
89
+ // Array of Valid Parents for Various XML-RPC elements
90
+ $this->valid_parents = array('BOOLEAN' => array('VALUE'),
91
+ 'I4' => array('VALUE'),
92
+ 'INT' => array('VALUE'),
93
+ 'STRING' => array('VALUE'),
94
+ 'DOUBLE' => array('VALUE'),
95
+ 'DATETIME.ISO8601' => array('VALUE'),
96
+ 'BASE64' => array('VALUE'),
97
+ 'ARRAY' => array('VALUE'),
98
+ 'STRUCT' => array('VALUE'),
99
+ 'PARAM' => array('PARAMS'),
100
+ 'METHODNAME' => array('METHODCALL'),
101
+ 'PARAMS' => array('METHODCALL', 'METHODRESPONSE'),
102
+ 'MEMBER' => array('STRUCT'),
103
+ 'NAME' => array('MEMBER'),
104
+ 'DATA' => array('ARRAY'),
105
+ 'FAULT' => array('METHODRESPONSE'),
106
+ 'VALUE' => array('MEMBER', 'DATA', 'PARAM', 'FAULT')
107
+ );
108
+
109
+
110
+ // XML-RPC Responses
111
+ $this->xmlrpcerr['unknown_method'] = '1';
112
+ $this->xmlrpcstr['unknown_method'] = 'This is not a known method for this XML-RPC Server';
113
+ $this->xmlrpcerr['invalid_return'] = '2';
114
+ $this->xmlrpcstr['invalid_return'] = 'The XML data receieved was either invalid or not in the correct form for XML-RPC. Turn on debugging to examine the XML data further.';
115
+ $this->xmlrpcerr['incorrect_params'] = '3';
116
+ $this->xmlrpcstr['incorrect_params'] = 'Incorrect parameters were passed to method';
117
+ $this->xmlrpcerr['introspect_unknown'] = '4';
118
+ $this->xmlrpcstr['introspect_unknown'] = "Cannot inspect signature for request: method unknown";
119
+ $this->xmlrpcerr['http_error'] = '5';
120
+ $this->xmlrpcstr['http_error'] = "Did not receive a '200 OK' response from remote server.";
121
+ $this->xmlrpcerr['no_data'] = '6';
122
+ $this->xmlrpcstr['no_data'] ='No data received from server.';
123
+
124
+ $this->initialize($config);
125
+
126
+ log_message('debug', "XML-RPC Class Initialized");
127
+ }
128
+
129
+
130
+ //-------------------------------------
131
+ // Initialize Prefs
132
+ //-------------------------------------
133
+
134
+ function initialize($config = array())
135
+ {
136
+ if (count($config) > 0)
137
+ {
138
+ foreach ($config as $key => $val)
139
+ {
140
+ if (isset($this->$key))
141
+ {
142
+ $this->$key = $val;
143
+ }
144
+ }
145
+ }
146
+ }
147
+ // END
148
+
149
+ //-------------------------------------
150
+ // Take URL and parse it
151
+ //-------------------------------------
152
+
153
+ function server($url, $port=80)
154
+ {
155
+ if (substr($url, 0, 4) != "http")
156
+ {
157
+ $url = "http://".$url;
158
+ }
159
+
160
+ $parts = parse_url($url);
161
+
162
+ $path = ( ! isset($parts['path'])) ? '/' : $parts['path'];
163
+
164
+ if (isset($parts['query']) && $parts['query'] != '')
165
+ {
166
+ $path .= '?'.$parts['query'];
167
+ }
168
+
169
+ $this->client = new XML_RPC_Client($path, $parts['host'], $port);
170
+ }
171
+ // END
172
+
173
+ //-------------------------------------
174
+ // Set Timeout
175
+ //-------------------------------------
176
+
177
+ function timeout($seconds=5)
178
+ {
179
+ if ( ! is_null($this->client) && is_int($seconds))
180
+ {
181
+ $this->client->timeout = $seconds;
182
+ }
183
+ }
184
+ // END
185
+
186
+ //-------------------------------------
187
+ // Set Methods
188
+ //-------------------------------------
189
+
190
+ function method($function)
191
+ {
192
+ $this->method = $function;
193
+ }
194
+ // END
195
+
196
+ //-------------------------------------
197
+ // Take Array of Data and Create Objects
198
+ //-------------------------------------
199
+
200
+ function request($incoming)
201
+ {
202
+ if ( ! is_array($incoming))
203
+ {
204
+ // Send Error
205
+ }
206
+
207
+ $this->data = array();
208
+
209
+ foreach($incoming as $key => $value)
210
+ {
211
+ $this->data[$key] = $this->values_parsing($value);
212
+ }
213
+ }
214
+ // END
215
+
216
+
217
+ //-------------------------------------
218
+ // Set Debug
219
+ //-------------------------------------
220
+
221
+ function set_debug($flag = TRUE)
222
+ {
223
+ $this->debug = ($flag == TRUE) ? TRUE : FALSE;
224
+ }
225
+
226
+ //-------------------------------------
227
+ // Values Parsing
228
+ //-------------------------------------
229
+
230
+ function values_parsing($value, $return = FALSE)
231
+ {
232
+ if (is_array($value) && isset($value['0']))
233
+ {
234
+ if ( ! isset($value['1']) OR (! isset($this->xmlrpcTypes[$value['1']])))
235
+ {
236
+ if (is_array($value[0]))
237
+ {
238
+ $temp = new XML_RPC_Values($value['0'], 'array');
239
+ }
240
+ else
241
+ {
242
+ $temp = new XML_RPC_Values($value['0'], 'string');
243
+ }
244
+ }
245
+ elseif(is_array($value['0']) && ($value['1'] == 'struct' OR $value['1'] == 'array'))
246
+ {
247
+ while (list($k) = each($value['0']))
248
+ {
249
+ $value['0'][$k] = $this->values_parsing($value['0'][$k], TRUE);
250
+ }
251
+
252
+ $temp = new XML_RPC_Values($value['0'], $value['1']);
253
+ }
254
+ else
255
+ {
256
+ $temp = new XML_RPC_Values($value['0'], $value['1']);
257
+ }
258
+ }
259
+ else
260
+ {
261
+ $temp = new XML_RPC_Values($value, 'string');
262
+ }
263
+
264
+ return $temp;
265
+ }
266
+ // END
267
+
268
+
269
+ //-------------------------------------
270
+ // Sends XML-RPC Request
271
+ //-------------------------------------
272
+
273
+ function send_request()
274
+ {
275
+ $this->message = new XML_RPC_Message($this->method,$this->data);
276
+ $this->message->debug = $this->debug;
277
+
278
+ if ( ! $this->result = $this->client->send($this->message))
279
+ {
280
+ $this->error = $this->result->errstr;
281
+ return FALSE;
282
+ }
283
+ elseif( ! is_object($this->result->val))
284
+ {
285
+ $this->error = $this->result->errstr;
286
+ return FALSE;
287
+ }
288
+
289
+ $this->response = $this->result->decode();
290
+
291
+ return TRUE;
292
+ }
293
+ // END
294
+
295
+ //-------------------------------------
296
+ // Returns Error
297
+ //-------------------------------------
298
+
299
+ function display_error()
300
+ {
301
+ return $this->error;
302
+ }
303
+ // END
304
+
305
+ //-------------------------------------
306
+ // Returns Remote Server Response
307
+ //-------------------------------------
308
+
309
+ function display_response()
310
+ {
311
+ return $this->response;
312
+ }
313
+ // END
314
+
315
+ //-------------------------------------
316
+ // Sends an Error Message for Server Request
317
+ //-------------------------------------
318
+
319
+ function send_error_message($number, $message)
320
+ {
321
+ return new XML_RPC_Response('0',$number, $message);
322
+ }
323
+ // END
324
+
325
+
326
+ //-------------------------------------
327
+ // Send Response for Server Request
328
+ //-------------------------------------
329
+
330
+ function send_response($response)
331
+ {
332
+ // $response should be array of values, which will be parsed
333
+ // based on their data and type into a valid group of XML-RPC values
334
+
335
+ $response = $this->values_parsing($response);
336
+
337
+ return new XML_RPC_Response($response);
338
+ }
339
+ // END
340
+
341
+ } // END XML_RPC Class
342
+
343
+
344
+
345
+ /**
346
+ * XML-RPC Client class
347
+ *
348
+ * @category XML-RPC
349
+ * @author ExpressionEngine Dev Team
350
+ * @link http://codeigniter.com/user_guide/libraries/xmlrpc.html
351
+ */
352
+ class XML_RPC_Client extends CI_Xmlrpc
353
+ {
354
+ var $path = '';
355
+ var $server = '';
356
+ var $port = 80;
357
+ var $errno = '';
358
+ var $errstring = '';
359
+ var $timeout = 5;
360
+ var $no_multicall = false;
361
+
362
+ function XML_RPC_Client($path, $server, $port=80)
363
+ {
364
+ parent::CI_Xmlrpc();
365
+
366
+ $this->port = $port;
367
+ $this->server = $server;
368
+ $this->path = $path;
369
+ }
370
+
371
+ function send($msg)
372
+ {
373
+ if (is_array($msg))
374
+ {
375
+ // Multi-call disabled
376
+ $r = new XML_RPC_Response(0, $this->xmlrpcerr['multicall_recursion'],$this->xmlrpcstr['multicall_recursion']);
377
+ return $r;
378
+ }
379
+
380
+ return $this->sendPayload($msg);
381
+ }
382
+
383
+ function sendPayload($msg)
384
+ {
385
+ $fp = @fsockopen($this->server, $this->port,$this->errno, $this->errstr, $this->timeout);
386
+
387
+ if ( ! is_resource($fp))
388
+ {
389
+ error_log($this->xmlrpcstr['http_error']);
390
+ $r = new XML_RPC_Response(0, $this->xmlrpcerr['http_error'],$this->xmlrpcstr['http_error']);
391
+ return $r;
392
+ }
393
+
394
+ if(empty($msg->payload))
395
+ {
396
+ // $msg = XML_RPC_Messages
397
+ $msg->createPayload();
398
+ }
399
+
400
+ $r = "\r\n";
401
+ $op = "POST {$this->path} HTTP/1.0$r";
402
+ $op .= "Host: {$this->server}$r";
403
+ $op .= "Content-Type: text/xml$r";
404
+ $op .= "User-Agent: {$this->xmlrpcName}$r";
405
+ $op .= "Content-Length: ".strlen($msg->payload). "$r$r";
406
+ $op .= $msg->payload;
407
+
408
+
409
+ if ( ! fputs($fp, $op, strlen($op)))
410
+ {
411
+ error_log($this->xmlrpcstr['http_error']);
412
+ $r = new XML_RPC_Response(0, $this->xmlrpcerr['http_error'], $this->xmlrpcstr['http_error']);
413
+ return $r;
414
+ }
415
+ $resp = $msg->parseResponse($fp);
416
+ fclose($fp);
417
+ return $resp;
418
+ }
419
+
420
+ } // end class XML_RPC_Client
421
+
422
+
423
+ /**
424
+ * XML-RPC Response class
425
+ *
426
+ * @category XML-RPC
427
+ * @author ExpressionEngine Dev Team
428
+ * @link http://codeigniter.com/user_guide/libraries/xmlrpc.html
429
+ */
430
+ class XML_RPC_Response
431
+ {
432
+ var $val = 0;
433
+ var $errno = 0;
434
+ var $errstr = '';
435
+ var $headers = array();
436
+
437
+ function XML_RPC_Response($val, $code = 0, $fstr = '')
438
+ {
439
+ if ($code != 0)
440
+ {
441
+ // error
442
+ $this->errno = $code;
443
+ $this->errstr = htmlentities($fstr);
444
+ }
445
+ else if ( ! is_object($val))
446
+ {
447
+ // programmer error, not an object
448
+ error_log("Invalid type '" . gettype($val) . "' (value: $val) passed to XML_RPC_Response. Defaulting to empty value.");
449
+ $this->val = new XML_RPC_Values();
450
+ }
451
+ else
452
+ {
453
+ $this->val = $val;
454
+ }
455
+ }
456
+
457
+ function faultCode()
458
+ {
459
+ return $this->errno;
460
+ }
461
+
462
+ function faultString()
463
+ {
464
+ return $this->errstr;
465
+ }
466
+
467
+ function value()
468
+ {
469
+ return $this->val;
470
+ }
471
+
472
+ function prepare_response()
473
+ {
474
+ $result = "<methodResponse>\n";
475
+ if ($this->errno)
476
+ {
477
+ $result .= '<fault>
478
+ <value>
479
+ <struct>
480
+ <member>
481
+ <name>faultCode</name>
482
+ <value><int>' . $this->errno . '</int></value>
483
+ </member>
484
+ <member>
485
+ <name>faultString</name>
486
+ <value><string>' . $this->errstr . '</string></value>
487
+ </member>
488
+ </struct>
489
+ </value>
490
+ </fault>';
491
+ }
492
+ else
493
+ {
494
+ $result .= "<params>\n<param>\n" .
495
+ $this->val->serialize_class() .
496
+ "</param>\n</params>";
497
+ }
498
+ $result .= "\n</methodResponse>";
499
+ return $result;
500
+ }
501
+
502
+ function decode($array=FALSE)
503
+ {
504
+ $CI =& get_instance();
505
+
506
+ if ($array !== FALSE && is_array($array))
507
+ {
508
+ while (list($key) = each($array))
509
+ {
510
+ if (is_array($array[$key]))
511
+ {
512
+ $array[$key] = $this->decode($array[$key]);
513
+ }
514
+ else
515
+ {
516
+ $array[$key] = $CI->input->xss_clean($array[$key]);
517
+ }
518
+ }
519
+
520
+ $result = $array;
521
+ }
522
+ else
523
+ {
524
+ $result = $this->xmlrpc_decoder($this->val);
525
+
526
+ if (is_array($result))
527
+ {
528
+ $result = $this->decode($result);
529
+ }
530
+ else
531
+ {
532
+ $result = $CI->input->xss_clean($result);
533
+ }
534
+ }
535
+
536
+ return $result;
537
+ }
538
+
539
+
540
+
541
+ //-------------------------------------
542
+ // XML-RPC Object to PHP Types
543
+ //-------------------------------------
544
+
545
+ function xmlrpc_decoder($xmlrpc_val)
546
+ {
547
+ $kind = $xmlrpc_val->kindOf();
548
+
549
+ if($kind == 'scalar')
550
+ {
551
+ return $xmlrpc_val->scalarval();
552
+ }
553
+ elseif($kind == 'array')
554
+ {
555
+ reset($xmlrpc_val->me);
556
+ list($a,$b) = each($xmlrpc_val->me);
557
+ $size = count($b);
558
+
559
+ $arr = array();
560
+
561
+ for($i = 0; $i < $size; $i++)
562
+ {
563
+ $arr[] = $this->xmlrpc_decoder($xmlrpc_val->me['array'][$i]);
564
+ }
565
+ return $arr;
566
+ }
567
+ elseif($kind == 'struct')
568
+ {
569
+ reset($xmlrpc_val->me['struct']);
570
+ $arr = array();
571
+
572
+ while(list($key,$value) = each($xmlrpc_val->me['struct']))
573
+ {
574
+ $arr[$key] = $this->xmlrpc_decoder($value);
575
+ }
576
+ return $arr;
577
+ }
578
+ }
579
+
580
+
581
+ //-------------------------------------
582
+ // ISO-8601 time to server or UTC time
583
+ //-------------------------------------
584
+
585
+ function iso8601_decode($time, $utc=0)
586
+ {
587
+ // return a timet in the localtime, or UTC
588
+ $t = 0;
589
+ if (preg_match('/([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})/', $time, $regs))
590
+ {
591
+ if ($utc == 1)
592
+ $t = gmmktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
593
+ else
594
+ $t = mktime($regs[4], $regs[5], $regs[6], $regs[2], $regs[3], $regs[1]);
595
+ }
596
+ return $t;
597
+ }
598
+
599
+ } // End Response Class
600
+
601
+
602
+
603
+ /**
604
+ * XML-RPC Message class
605
+ *
606
+ * @category XML-RPC
607
+ * @author ExpressionEngine Dev Team
608
+ * @link http://codeigniter.com/user_guide/libraries/xmlrpc.html
609
+ */
610
+ class XML_RPC_Message extends CI_Xmlrpc
611
+ {
612
+ var $payload;
613
+ var $method_name;
614
+ var $params = array();
615
+ var $xh = array();
616
+
617
+ function XML_RPC_Message($method, $pars=0)
618
+ {
619
+ parent::CI_Xmlrpc();
620
+
621
+ $this->method_name = $method;
622
+ if (is_array($pars) && count($pars) > 0)
623
+ {
624
+ for($i=0; $i<count($pars); $i++)
625
+ {
626
+ // $pars[$i] = XML_RPC_Values
627
+ $this->params[] = $pars[$i];
628
+ }
629
+ }
630
+ }
631
+
632
+ //-------------------------------------
633
+ // Create Payload to Send
634
+ //-------------------------------------
635
+
636
+ function createPayload()
637
+ {
638
+ $this->payload = "<?xml version=\"1.0\"?".">\r\n<methodCall>\r\n";
639
+ $this->payload .= '<methodName>' . $this->method_name . "</methodName>\r\n";
640
+ $this->payload .= "<params>\r\n";
641
+
642
+ for($i=0; $i<count($this->params); $i++)
643
+ {
644
+ // $p = XML_RPC_Values
645
+ $p = $this->params[$i];
646
+ $this->payload .= "<param>\r\n".$p->serialize_class()."</param>\r\n";
647
+ }
648
+
649
+ $this->payload .= "</params>\r\n</methodCall>\r\n";
650
+ }
651
+
652
+ //-------------------------------------
653
+ // Parse External XML-RPC Server's Response
654
+ //-------------------------------------
655
+
656
+ function parseResponse($fp)
657
+ {
658
+ $data = '';
659
+
660
+ while($datum = fread($fp, 4096))
661
+ {
662
+ $data .= $datum;
663
+ }
664
+
665
+ //-------------------------------------
666
+ // DISPLAY HTTP CONTENT for DEBUGGING
667
+ //-------------------------------------
668
+
669
+ if ($this->debug === TRUE)
670
+ {
671
+ echo "<pre>";
672
+ echo "---DATA---\n" . htmlspecialchars($data) . "\n---END DATA---\n\n";
673
+ echo "</pre>";
674
+ }
675
+
676
+ //-------------------------------------
677
+ // Check for data
678
+ //-------------------------------------
679
+
680
+ if($data == "")
681
+ {
682
+ error_log($this->xmlrpcstr['no_data']);
683
+ $r = new XML_RPC_Response(0, $this->xmlrpcerr['no_data'], $this->xmlrpcstr['no_data']);
684
+ return $r;
685
+ }
686
+
687
+
688
+ //-------------------------------------
689
+ // Check for HTTP 200 Response
690
+ //-------------------------------------
691
+
692
+ if (strncmp($data, 'HTTP', 4) == 0 && ! preg_match('/^HTTP\/[0-9\.]+ 200 /', $data))
693
+ {
694
+ $errstr= substr($data, 0, strpos($data, "\n")-1);
695
+ $r = new XML_RPC_Response(0, $this->xmlrpcerr['http_error'], $this->xmlrpcstr['http_error']. ' (' . $errstr . ')');
696
+ return $r;
697
+ }
698
+
699
+ //-------------------------------------
700
+ // Create and Set Up XML Parser
701
+ //-------------------------------------
702
+
703
+ $parser = xml_parser_create($this->xmlrpc_defencoding);
704
+
705
+ $this->xh[$parser] = array();
706
+ $this->xh[$parser]['isf'] = 0;
707
+ $this->xh[$parser]['ac'] = '';
708
+ $this->xh[$parser]['headers'] = array();
709
+ $this->xh[$parser]['stack'] = array();
710
+ $this->xh[$parser]['valuestack'] = array();
711
+ $this->xh[$parser]['isf_reason'] = 0;
712
+
713
+ xml_set_object($parser, $this);
714
+ xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true);
715
+ xml_set_element_handler($parser, 'open_tag', 'closing_tag');
716
+ xml_set_character_data_handler($parser, 'character_data');
717
+ //xml_set_default_handler($parser, 'default_handler');
718
+
719
+
720
+ //-------------------------------------
721
+ // GET HEADERS
722
+ //-------------------------------------
723
+
724
+ $lines = explode("\r\n", $data);
725
+ while (($line = array_shift($lines)))
726
+ {
727
+ if (strlen($line) < 1)
728
+ {
729
+ break;
730
+ }
731
+ $this->xh[$parser]['headers'][] = $line;
732
+ }
733
+ $data = implode("\r\n", $lines);
734
+
735
+
736
+ //-------------------------------------
737
+ // PARSE XML DATA
738
+ //-------------------------------------
739
+
740
+ if ( ! xml_parse($parser, $data, count($data)))
741
+ {
742
+ $errstr = sprintf('XML error: %s at line %d',
743
+ xml_error_string(xml_get_error_code($parser)),
744
+ xml_get_current_line_number($parser));
745
+ //error_log($errstr);
746
+ $r = new XML_RPC_Response(0, $this->xmlrpcerr['invalid_return'], $this->xmlrpcstr['invalid_return']);
747
+ xml_parser_free($parser);
748
+ return $r;
749
+ }
750
+ xml_parser_free($parser);
751
+
752
+ // ---------------------------------------
753
+ // Got Ourselves Some Badness, It Seems
754
+ // ---------------------------------------
755
+
756
+ if ($this->xh[$parser]['isf'] > 1)
757
+ {
758
+ if ($this->debug === TRUE)
759
+ {
760
+ echo "---Invalid Return---\n";
761
+ echo $this->xh[$parser]['isf_reason'];
762
+ echo "---Invalid Return---\n\n";
763
+ }
764
+
765
+ $r = new XML_RPC_Response(0, $this->xmlrpcerr['invalid_return'],$this->xmlrpcstr['invalid_return'].' '.$this->xh[$parser]['isf_reason']);
766
+ return $r;
767
+ }
768
+ elseif ( ! is_object($this->xh[$parser]['value']))
769
+ {
770
+ $r = new XML_RPC_Response(0, $this->xmlrpcerr['invalid_return'],$this->xmlrpcstr['invalid_return'].' '.$this->xh[$parser]['isf_reason']);
771
+ return $r;
772
+ }
773
+
774
+ //-------------------------------------
775
+ // DISPLAY XML CONTENT for DEBUGGING
776
+ //-------------------------------------
777
+
778
+ if ($this->debug === TRUE)
779
+ {
780
+ echo "<pre>";
781
+
782
+ if (count($this->xh[$parser]['headers'] > 0))
783
+ {
784
+ echo "---HEADERS---\n";
785
+ foreach ($this->xh[$parser]['headers'] as $header)
786
+ {
787
+ echo "$header\n";
788
+ }
789
+ echo "---END HEADERS---\n\n";
790
+ }
791
+
792
+ echo "---DATA---\n" . htmlspecialchars($data) . "\n---END DATA---\n\n";
793
+
794
+ echo "---PARSED---\n" ;
795
+ var_dump($this->xh[$parser]['value']);
796
+ echo "\n---END PARSED---</pre>";
797
+ }
798
+
799
+ //-------------------------------------
800
+ // SEND RESPONSE
801
+ //-------------------------------------
802
+
803
+ $v = $this->xh[$parser]['value'];
804
+
805
+ if ($this->xh[$parser]['isf'])
806
+ {
807
+ $errno_v = $v->me['struct']['faultCode'];
808
+ $errstr_v = $v->me['struct']['faultString'];
809
+ $errno = $errno_v->scalarval();
810
+
811
+ if ($errno == 0)
812
+ {
813
+ // FAULT returned, errno needs to reflect that
814
+ $errno = -1;
815
+ }
816
+
817
+ $r = new XML_RPC_Response($v, $errno, $errstr_v->scalarval());
818
+ }
819
+ else
820
+ {
821
+ $r = new XML_RPC_Response($v);
822
+ }
823
+
824
+ $r->headers = $this->xh[$parser]['headers'];
825
+ return $r;
826
+ }
827
+
828
+ // ------------------------------------
829
+ // Begin Return Message Parsing section
830
+ // ------------------------------------
831
+
832
+ // quick explanation of components:
833
+ // ac - used to accumulate values
834
+ // isf - used to indicate a fault
835
+ // lv - used to indicate "looking for a value": implements
836
+ // the logic to allow values with no types to be strings
837
+ // params - used to store parameters in method calls
838
+ // method - used to store method name
839
+ // stack - array with parent tree of the xml element,
840
+ // used to validate the nesting of elements
841
+
842
+ //-------------------------------------
843
+ // Start Element Handler
844
+ //-------------------------------------
845
+
846
+ function open_tag($the_parser, $name, $attrs)
847
+ {
848
+ // If invalid nesting, then return
849
+ if ($this->xh[$the_parser]['isf'] > 1) return;
850
+
851
+ // Evaluate and check for correct nesting of XML elements
852
+
853
+ if (count($this->xh[$the_parser]['stack']) == 0)
854
+ {
855
+ if ($name != 'METHODRESPONSE' && $name != 'METHODCALL')
856
+ {
857
+ $this->xh[$the_parser]['isf'] = 2;
858
+ $this->xh[$the_parser]['isf_reason'] = 'Top level XML-RPC element is missing';
859
+ return;
860
+ }
861
+ }
862
+ else
863
+ {
864
+ // not top level element: see if parent is OK
865
+ if ( ! in_array($this->xh[$the_parser]['stack'][0], $this->valid_parents[$name], TRUE))
866
+ {
867
+ $this->xh[$the_parser]['isf'] = 2;
868
+ $this->xh[$the_parser]['isf_reason'] = "XML-RPC element $name cannot be child of ".$this->xh[$the_parser]['stack'][0];
869
+ return;
870
+ }
871
+ }
872
+
873
+ switch($name)
874
+ {
875
+ case 'STRUCT':
876
+ case 'ARRAY':
877
+ // Creates array for child elements
878
+
879
+ $cur_val = array('value' => array(),
880
+ 'type' => $name);
881
+
882
+ array_unshift($this->xh[$the_parser]['valuestack'], $cur_val);
883
+ break;
884
+ case 'METHODNAME':
885
+ case 'NAME':
886
+ $this->xh[$the_parser]['ac'] = '';
887
+ break;
888
+ case 'FAULT':
889
+ $this->xh[$the_parser]['isf'] = 1;
890
+ break;
891
+ case 'PARAM':
892
+ $this->xh[$the_parser]['value'] = null;
893
+ break;
894
+ case 'VALUE':
895
+ $this->xh[$the_parser]['vt'] = 'value';
896
+ $this->xh[$the_parser]['ac'] = '';
897
+ $this->xh[$the_parser]['lv'] = 1;
898
+ break;
899
+ case 'I4':
900
+ case 'INT':
901
+ case 'STRING':
902
+ case 'BOOLEAN':
903
+ case 'DOUBLE':
904
+ case 'DATETIME.ISO8601':
905
+ case 'BASE64':
906
+ if ($this->xh[$the_parser]['vt'] != 'value')
907
+ {
908
+ //two data elements inside a value: an error occurred!
909
+ $this->xh[$the_parser]['isf'] = 2;
910
+ $this->xh[$the_parser]['isf_reason'] = "'Twas a $name element following a ".$this->xh[$the_parser]['vt']." element inside a single value";
911
+ return;
912
+ }
913
+
914
+ $this->xh[$the_parser]['ac'] = '';
915
+ break;
916
+ case 'MEMBER':
917
+ // Set name of <member> to nothing to prevent errors later if no <name> is found
918
+ $this->xh[$the_parser]['valuestack'][0]['name'] = '';
919
+
920
+ // Set NULL value to check to see if value passed for this param/member
921
+ $this->xh[$the_parser]['value'] = null;
922
+ break;
923
+ case 'DATA':
924
+ case 'METHODCALL':
925
+ case 'METHODRESPONSE':
926
+ case 'PARAMS':
927
+ // valid elements that add little to processing
928
+ break;
929
+ default:
930
+ /// An Invalid Element is Found, so we have trouble
931
+ $this->xh[$the_parser]['isf'] = 2;
932
+ $this->xh[$the_parser]['isf_reason'] = "Invalid XML-RPC element found: $name";
933
+ break;
934
+ }
935
+
936
+ // Add current element name to stack, to allow validation of nesting
937
+ array_unshift($this->xh[$the_parser]['stack'], $name);
938
+
939
+ if ($name != 'VALUE') $this->xh[$the_parser]['lv'] = 0;
940
+ }
941
+ // END
942
+
943
+
944
+ //-------------------------------------
945
+ // End Element Handler
946
+ //-------------------------------------
947
+
948
+ function closing_tag($the_parser, $name)
949
+ {
950
+ if ($this->xh[$the_parser]['isf'] > 1) return;
951
+
952
+ // Remove current element from stack and set variable
953
+ // NOTE: If the XML validates, then we do not have to worry about
954
+ // the opening and closing of elements. Nesting is checked on the opening
955
+ // tag so we be safe there as well.
956
+
957
+ $curr_elem = array_shift($this->xh[$the_parser]['stack']);
958
+
959
+ switch($name)
960
+ {
961
+ case 'STRUCT':
962
+ case 'ARRAY':
963
+ $cur_val = array_shift($this->xh[$the_parser]['valuestack']);
964
+ $this->xh[$the_parser]['value'] = ( ! isset($cur_val['values'])) ? array() : $cur_val['values'];
965
+ $this->xh[$the_parser]['vt'] = strtolower($name);
966
+ break;
967
+ case 'NAME':
968
+ $this->xh[$the_parser]['valuestack'][0]['name'] = $this->xh[$the_parser]['ac'];
969
+ break;
970
+ case 'BOOLEAN':
971
+ case 'I4':
972
+ case 'INT':
973
+ case 'STRING':
974
+ case 'DOUBLE':
975
+ case 'DATETIME.ISO8601':
976
+ case 'BASE64':
977
+ $this->xh[$the_parser]['vt'] = strtolower($name);
978
+
979
+ if ($name == 'STRING')
980
+ {
981
+ $this->xh[$the_parser]['value'] = $this->xh[$the_parser]['ac'];
982
+ }
983
+ elseif ($name=='DATETIME.ISO8601')
984
+ {
985
+ $this->xh[$the_parser]['vt'] = $this->xmlrpcDateTime;
986
+ $this->xh[$the_parser]['value'] = $this->xh[$the_parser]['ac'];
987
+ }
988
+ elseif ($name=='BASE64')
989
+ {
990
+ $this->xh[$the_parser]['value'] = base64_decode($this->xh[$the_parser]['ac']);
991
+ }
992
+ elseif ($name=='BOOLEAN')
993
+ {
994
+ // Translated BOOLEAN values to TRUE AND FALSE
995
+ if ($this->xh[$the_parser]['ac'] == '1')
996
+ {
997
+ $this->xh[$the_parser]['value'] = TRUE;
998
+ }
999
+ else
1000
+ {
1001
+ $this->xh[$the_parser]['value'] = FALSE;
1002
+ }
1003
+ }
1004
+ elseif ($name=='DOUBLE')
1005
+ {
1006
+ // we have a DOUBLE
1007
+ // we must check that only 0123456789-.<space> are characters here
1008
+ if ( ! preg_match('/^[+-]?[eE0-9\t \.]+$/', $this->xh[$the_parser]['ac']))
1009
+ {
1010
+ $this->xh[$the_parser]['value'] = 'ERROR_NON_NUMERIC_FOUND';
1011
+ }
1012
+ else
1013
+ {
1014
+ $this->xh[$the_parser]['value'] = (double)$this->xh[$the_parser]['ac'];
1015
+ }
1016
+ }
1017
+ else
1018
+ {
1019
+ // we have an I4/INT
1020
+ // we must check that only 0123456789-<space> are characters here
1021
+ if ( ! preg_match('/^[+-]?[0-9\t ]+$/', $this->xh[$the_parser]['ac']))
1022
+ {
1023
+ $this->xh[$the_parser]['value'] = 'ERROR_NON_NUMERIC_FOUND';
1024
+ }
1025
+ else
1026
+ {
1027
+ $this->xh[$the_parser]['value'] = (int)$this->xh[$the_parser]['ac'];
1028
+ }
1029
+ }
1030
+ $this->xh[$the_parser]['ac'] = '';
1031
+ $this->xh[$the_parser]['lv'] = 3; // indicate we've found a value
1032
+ break;
1033
+ case 'VALUE':
1034
+ // This if() detects if no scalar was inside <VALUE></VALUE>
1035
+ if ($this->xh[$the_parser]['vt']=='value')
1036
+ {
1037
+ $this->xh[$the_parser]['value'] = $this->xh[$the_parser]['ac'];
1038
+ $this->xh[$the_parser]['vt'] = $this->xmlrpcString;
1039
+ }
1040
+
1041
+ // build the XML-RPC value out of the data received, and substitute it
1042
+ $temp = new XML_RPC_Values($this->xh[$the_parser]['value'], $this->xh[$the_parser]['vt']);
1043
+
1044
+ if (count($this->xh[$the_parser]['valuestack']) && $this->xh[$the_parser]['valuestack'][0]['type'] == 'ARRAY')
1045
+ {
1046
+ // Array
1047
+ $this->xh[$the_parser]['valuestack'][0]['values'][] = $temp;
1048
+ }
1049
+ else
1050
+ {
1051
+ // Struct
1052
+ $this->xh[$the_parser]['value'] = $temp;
1053
+ }
1054
+ break;
1055
+ case 'MEMBER':
1056
+ $this->xh[$the_parser]['ac']='';
1057
+
1058
+ // If value add to array in the stack for the last element built
1059
+ if ($this->xh[$the_parser]['value'])
1060
+ {
1061
+ $this->xh[$the_parser]['valuestack'][0]['values'][$this->xh[$the_parser]['valuestack'][0]['name']] = $this->xh[$the_parser]['value'];
1062
+ }
1063
+ break;
1064
+ case 'DATA':
1065
+ $this->xh[$the_parser]['ac']='';
1066
+ break;
1067
+ case 'PARAM':
1068
+ if ($this->xh[$the_parser]['value'])
1069
+ {
1070
+ $this->xh[$the_parser]['params'][] = $this->xh[$the_parser]['value'];
1071
+ }
1072
+ break;
1073
+ case 'METHODNAME':
1074
+ $this->xh[$the_parser]['method'] = ltrim($this->xh[$the_parser]['ac']);
1075
+ break;
1076
+ case 'PARAMS':
1077
+ case 'FAULT':
1078
+ case 'METHODCALL':
1079
+ case 'METHORESPONSE':
1080
+ // We're all good kids with nuthin' to do
1081
+ break;
1082
+ default:
1083
+ // End of an Invalid Element. Taken care of during the opening tag though
1084
+ break;
1085
+ }
1086
+ }
1087
+
1088
+ //-------------------------------------
1089
+ // Parses Character Data
1090
+ //-------------------------------------
1091
+
1092
+ function character_data($the_parser, $data)
1093
+ {
1094
+ if ($this->xh[$the_parser]['isf'] > 1) return; // XML Fault found already
1095
+
1096
+ // If a value has not been found
1097
+ if ($this->xh[$the_parser]['lv'] != 3)
1098
+ {
1099
+ if ($this->xh[$the_parser]['lv'] == 1)
1100
+ {
1101
+ $this->xh[$the_parser]['lv'] = 2; // Found a value
1102
+ }
1103
+
1104
+ if( ! @isset($this->xh[$the_parser]['ac']))
1105
+ {
1106
+ $this->xh[$the_parser]['ac'] = '';
1107
+ }
1108
+
1109
+ $this->xh[$the_parser]['ac'] .= $data;
1110
+ }
1111
+ }
1112
+
1113
+
1114
+ function addParam($par) { $this->params[]=$par; }
1115
+
1116
+ function output_parameters($array=FALSE)
1117
+ {
1118
+ $CI =& get_instance();
1119
+
1120
+ if ($array !== FALSE && is_array($array))
1121
+ {
1122
+ while (list($key) = each($array))
1123
+ {
1124
+ if (is_array($array[$key]))
1125
+ {
1126
+ $array[$key] = $this->output_parameters($array[$key]);
1127
+ }
1128
+ else
1129
+ {
1130
+ $array[$key] = $CI->input->xss_clean($array[$key]);
1131
+ }
1132
+ }
1133
+
1134
+ $parameters = $array;
1135
+ }
1136
+ else
1137
+ {
1138
+ $parameters = array();
1139
+
1140
+ for ($i = 0; $i < count($this->params); $i++)
1141
+ {
1142
+ $a_param = $this->decode_message($this->params[$i]);
1143
+
1144
+ if (is_array($a_param))
1145
+ {
1146
+ $parameters[] = $this->output_parameters($a_param);
1147
+ }
1148
+ else
1149
+ {
1150
+ $parameters[] = $CI->input->xss_clean($a_param);
1151
+ }
1152
+ }
1153
+ }
1154
+
1155
+ return $parameters;
1156
+ }
1157
+
1158
+
1159
+ function decode_message($param)
1160
+ {
1161
+ $kind = $param->kindOf();
1162
+
1163
+ if($kind == 'scalar')
1164
+ {
1165
+ return $param->scalarval();
1166
+ }
1167
+ elseif($kind == 'array')
1168
+ {
1169
+ reset($param->me);
1170
+ list($a,$b) = each($param->me);
1171
+
1172
+ $arr = array();
1173
+
1174
+ for($i = 0; $i < count($b); $i++)
1175
+ {
1176
+ $arr[] = $this->decode_message($param->me['array'][$i]);
1177
+ }
1178
+
1179
+ return $arr;
1180
+ }
1181
+ elseif($kind == 'struct')
1182
+ {
1183
+ reset($param->me['struct']);
1184
+
1185
+ $arr = array();
1186
+
1187
+ while(list($key,$value) = each($param->me['struct']))
1188
+ {
1189
+ $arr[$key] = $this->decode_message($value);
1190
+ }
1191
+
1192
+ return $arr;
1193
+ }
1194
+ }
1195
+
1196
+ } // End XML_RPC_Messages class
1197
+
1198
+
1199
+
1200
+ /**
1201
+ * XML-RPC Values class
1202
+ *
1203
+ * @category XML-RPC
1204
+ * @author ExpressionEngine Dev Team
1205
+ * @link http://codeigniter.com/user_guide/libraries/xmlrpc.html
1206
+ */
1207
+ class XML_RPC_Values extends CI_Xmlrpc
1208
+ {
1209
+ var $me = array();
1210
+ var $mytype = 0;
1211
+
1212
+ function XML_RPC_Values($val=-1, $type='')
1213
+ {
1214
+ parent::CI_Xmlrpc();
1215
+
1216
+ if ($val != -1 OR $type != '')
1217
+ {
1218
+ $type = $type == '' ? 'string' : $type;
1219
+
1220
+ if ($this->xmlrpcTypes[$type] == 1)
1221
+ {
1222
+ $this->addScalar($val,$type);
1223
+ }
1224
+ elseif ($this->xmlrpcTypes[$type] == 2)
1225
+ {
1226
+ $this->addArray($val);
1227
+ }
1228
+ elseif ($this->xmlrpcTypes[$type] == 3)
1229
+ {
1230
+ $this->addStruct($val);
1231
+ }
1232
+ }
1233
+ }
1234
+
1235
+ function addScalar($val, $type='string')
1236
+ {
1237
+ $typeof = $this->xmlrpcTypes[$type];
1238
+
1239
+ if ($this->mytype==1)
1240
+ {
1241
+ echo '<strong>XML_RPC_Values</strong>: scalar can have only one value<br />';
1242
+ return 0;
1243
+ }
1244
+
1245
+ if ($typeof != 1)
1246
+ {
1247
+ echo '<strong>XML_RPC_Values</strong>: not a scalar type (${typeof})<br />';
1248
+ return 0;
1249
+ }
1250
+
1251
+ if ($type == $this->xmlrpcBoolean)
1252
+ {
1253
+ if (strcasecmp($val,'true')==0 OR $val==1 OR ($val==true && strcasecmp($val,'false')))
1254
+ {
1255
+ $val = 1;
1256
+ }
1257
+ else
1258
+ {
1259
+ $val=0;
1260
+ }
1261
+ }
1262
+
1263
+ if ($this->mytype == 2)
1264
+ {
1265
+ // adding to an array here
1266
+ $ar = $this->me['array'];
1267
+ $ar[] = new XML_RPC_Values($val, $type);
1268
+ $this->me['array'] = $ar;
1269
+ }
1270
+ else
1271
+ {
1272
+ // a scalar, so set the value and remember we're scalar
1273
+ $this->me[$type] = $val;
1274
+ $this->mytype = $typeof;
1275
+ }
1276
+ return 1;
1277
+ }
1278
+
1279
+ function addArray($vals)
1280
+ {
1281
+ if ($this->mytype != 0)
1282
+ {
1283
+ echo '<strong>XML_RPC_Values</strong>: already initialized as a [' . $this->kindOf() . ']<br />';
1284
+ return 0;
1285
+ }
1286
+
1287
+ $this->mytype = $this->xmlrpcTypes['array'];
1288
+ $this->me['array'] = $vals;
1289
+ return 1;
1290
+ }
1291
+
1292
+ function addStruct($vals)
1293
+ {
1294
+ if ($this->mytype != 0)
1295
+ {
1296
+ echo '<strong>XML_RPC_Values</strong>: already initialized as a [' . $this->kindOf() . ']<br />';
1297
+ return 0;
1298
+ }
1299
+ $this->mytype = $this->xmlrpcTypes['struct'];
1300
+ $this->me['struct'] = $vals;
1301
+ return 1;
1302
+ }
1303
+
1304
+ function kindOf()
1305
+ {
1306
+ switch($this->mytype)
1307
+ {
1308
+ case 3:
1309
+ return 'struct';
1310
+ break;
1311
+ case 2:
1312
+ return 'array';
1313
+ break;
1314
+ case 1:
1315
+ return 'scalar';
1316
+ break;
1317
+ default:
1318
+ return 'undef';
1319
+ }
1320
+ }
1321
+
1322
+ function serializedata($typ, $val)
1323
+ {
1324
+ $rs = '';
1325
+
1326
+ switch($this->xmlrpcTypes[$typ])
1327
+ {
1328
+ case 3:
1329
+ // struct
1330
+ $rs .= "<struct>\n";
1331
+ reset($val);
1332
+ while(list($key2, $val2) = each($val))
1333
+ {
1334
+ $rs .= "<member>\n<name>{$key2}</name>\n";
1335
+ $rs .= $this->serializeval($val2);
1336
+ $rs .= "</member>\n";
1337
+ }
1338
+ $rs .= '</struct>';
1339
+ break;
1340
+ case 2:
1341
+ // array
1342
+ $rs .= "<array>\n<data>\n";
1343
+ for($i=0; $i < count($val); $i++)
1344
+ {
1345
+ $rs .= $this->serializeval($val[$i]);
1346
+ }
1347
+ $rs.="</data>\n</array>\n";
1348
+ break;
1349
+ case 1:
1350
+ // others
1351
+ switch ($typ)
1352
+ {
1353
+ case $this->xmlrpcBase64:
1354
+ $rs .= "<{$typ}>" . base64_encode((string)$val) . "</{$typ}>\n";
1355
+ break;
1356
+ case $this->xmlrpcBoolean:
1357
+ $rs .= "<{$typ}>" . ((bool)$val ? '1' : '0') . "</{$typ}>\n";
1358
+ break;
1359
+ case $this->xmlrpcString:
1360
+ $rs .= "<{$typ}>" . htmlspecialchars((string)$val). "</{$typ}>\n";
1361
+ break;
1362
+ default:
1363
+ $rs .= "<{$typ}>{$val}</{$typ}>\n";
1364
+ break;
1365
+ }
1366
+ default:
1367
+ break;
1368
+ }
1369
+ return $rs;
1370
+ }
1371
+
1372
+ function serialize_class()
1373
+ {
1374
+ return $this->serializeval($this);
1375
+ }
1376
+
1377
+ function serializeval($o)
1378
+ {
1379
+ $ar = $o->me;
1380
+ reset($ar);
1381
+
1382
+ list($typ, $val) = each($ar);
1383
+ $rs = "<value>\n".$this->serializedata($typ, $val)."</value>\n";
1384
+ return $rs;
1385
+ }
1386
+
1387
+ function scalarval()
1388
+ {
1389
+ reset($this->me);
1390
+ list($a,$b) = each($this->me);
1391
+ return $b;
1392
+ }
1393
+
1394
+
1395
+ //-------------------------------------
1396
+ // Encode time in ISO-8601 form.
1397
+ //-------------------------------------
1398
+
1399
+ // Useful for sending time in XML-RPC
1400
+
1401
+ function iso8601_encode($time, $utc=0)
1402
+ {
1403
+ if ($utc == 1)
1404
+ {
1405
+ $t = strftime("%Y%m%dT%H:%M:%S", $time);
1406
+ }
1407
+ else
1408
+ {
1409
+ if (function_exists('gmstrftime'))
1410
+ $t = gmstrftime("%Y%m%dT%H:%M:%S", $time);
1411
+ else
1412
+ $t = strftime("%Y%m%dT%H:%M:%S", $time - date('Z'));
1413
+ }
1414
+ return $t;
1415
+ }
1416
+
1417
+ }
1418
+ // END XML_RPC_Values Class
1419
+
1420
+ /* End of file Xmlrpc.php */
1421
+ /* Location: ./system/libraries/Xmlrpc.php */