codeigniter_vender 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,970 @@
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
+ // ------------------------------------------------------------------------
17
+
18
+ /**
19
+ * File Uploading Class
20
+ *
21
+ * @package CodeIgniter
22
+ * @subpackage Libraries
23
+ * @category Uploads
24
+ * @author ExpressionEngine Dev Team
25
+ * @link http://codeigniter.com/user_guide/libraries/file_uploading.html
26
+ */
27
+ class CI_Upload {
28
+
29
+ var $max_size = 0;
30
+ var $max_width = 0;
31
+ var $max_height = 0;
32
+ var $max_filename = 0;
33
+ var $allowed_types = "";
34
+ var $file_temp = "";
35
+ var $file_name = "";
36
+ var $orig_name = "";
37
+ var $file_type = "";
38
+ var $file_size = "";
39
+ var $file_ext = "";
40
+ var $upload_path = "";
41
+ var $overwrite = FALSE;
42
+ var $encrypt_name = FALSE;
43
+ var $is_image = FALSE;
44
+ var $image_width = '';
45
+ var $image_height = '';
46
+ var $image_type = '';
47
+ var $image_size_str = '';
48
+ var $error_msg = array();
49
+ var $mimes = array();
50
+ var $remove_spaces = TRUE;
51
+ var $xss_clean = FALSE;
52
+ var $temp_prefix = "temp_file_";
53
+ var $client_name = '';
54
+
55
+ var $_file_name_override = '';
56
+ /**
57
+ * Constructor
58
+ *
59
+ * @access public
60
+ */
61
+ function CI_Upload($props = array())
62
+ {
63
+ if (count($props) > 0)
64
+ {
65
+ $this->initialize($props);
66
+ }
67
+
68
+ log_message('debug', "Upload Class Initialized");
69
+ }
70
+
71
+ // --------------------------------------------------------------------
72
+
73
+ /**
74
+ * Initialize preferences
75
+ *
76
+ * @access public
77
+ * @param array
78
+ * @return void
79
+ */
80
+ function initialize($config = array())
81
+ {
82
+ $defaults = array(
83
+ 'max_size' => 0,
84
+ 'max_width' => 0,
85
+ 'max_height' => 0,
86
+ 'max_filename' => 0,
87
+ 'allowed_types' => "",
88
+ 'file_temp' => "",
89
+ 'file_name' => "",
90
+ 'orig_name' => "",
91
+ 'file_type' => "",
92
+ 'file_size' => "",
93
+ 'file_ext' => "",
94
+ 'upload_path' => "",
95
+ 'overwrite' => FALSE,
96
+ 'encrypt_name' => FALSE,
97
+ 'is_image' => FALSE,
98
+ 'image_width' => '',
99
+ 'image_height' => '',
100
+ 'image_type' => '',
101
+ 'image_size_str' => '',
102
+ 'error_msg' => array(),
103
+ 'mimes' => array(),
104
+ 'remove_spaces' => TRUE,
105
+ 'xss_clean' => FALSE,
106
+ 'temp_prefix' => "temp_file_",
107
+ 'client_name' => ''
108
+ );
109
+
110
+
111
+ foreach ($defaults as $key => $val)
112
+ {
113
+ if (isset($config[$key]))
114
+ {
115
+ $method = 'set_'.$key;
116
+ if (method_exists($this, $method))
117
+ {
118
+ $this->$method($config[$key]);
119
+ }
120
+ else
121
+ {
122
+ $this->$key = $config[$key];
123
+ }
124
+ }
125
+ else
126
+ {
127
+ $this->$key = $val;
128
+ }
129
+ }
130
+
131
+ // if a file_name was provided in the config, use it instead of the user input
132
+ // supplied file name for all uploads until initialized again
133
+ $this->_file_name_override = $this->file_name;
134
+ }
135
+
136
+ // --------------------------------------------------------------------
137
+
138
+ /**
139
+ * Perform the file upload
140
+ *
141
+ * @access public
142
+ * @return bool
143
+ */
144
+ function do_upload($field = 'userfile')
145
+ {
146
+ // Is $_FILES[$field] set? If not, no reason to continue.
147
+ if ( ! isset($_FILES[$field]))
148
+ {
149
+ $this->set_error('upload_no_file_selected');
150
+ return FALSE;
151
+ }
152
+
153
+ // Is the upload path valid?
154
+ if ( ! $this->validate_upload_path())
155
+ {
156
+ // errors will already be set by validate_upload_path() so just return FALSE
157
+ return FALSE;
158
+ }
159
+
160
+ // Was the file able to be uploaded? If not, determine the reason why.
161
+ if ( ! is_uploaded_file($_FILES[$field]['tmp_name']))
162
+ {
163
+ $error = ( ! isset($_FILES[$field]['error'])) ? 4 : $_FILES[$field]['error'];
164
+
165
+ switch($error)
166
+ {
167
+ case 1: // UPLOAD_ERR_INI_SIZE
168
+ $this->set_error('upload_file_exceeds_limit');
169
+ break;
170
+ case 2: // UPLOAD_ERR_FORM_SIZE
171
+ $this->set_error('upload_file_exceeds_form_limit');
172
+ break;
173
+ case 3: // UPLOAD_ERR_PARTIAL
174
+ $this->set_error('upload_file_partial');
175
+ break;
176
+ case 4: // UPLOAD_ERR_NO_FILE
177
+ $this->set_error('upload_no_file_selected');
178
+ break;
179
+ case 6: // UPLOAD_ERR_NO_TMP_DIR
180
+ $this->set_error('upload_no_temp_directory');
181
+ break;
182
+ case 7: // UPLOAD_ERR_CANT_WRITE
183
+ $this->set_error('upload_unable_to_write_file');
184
+ break;
185
+ case 8: // UPLOAD_ERR_EXTENSION
186
+ $this->set_error('upload_stopped_by_extension');
187
+ break;
188
+ default : $this->set_error('upload_no_file_selected');
189
+ break;
190
+ }
191
+
192
+ return FALSE;
193
+ }
194
+
195
+ // Set the uploaded data as class variables
196
+ $this->file_temp = $_FILES[$field]['tmp_name'];
197
+ $this->file_size = $_FILES[$field]['size'];
198
+ $this->file_type = preg_replace("/^(.+?);.*$/", "\\1", $_FILES[$field]['type']);
199
+ $this->file_type = strtolower(trim(stripslashes($this->file_type), '"'));
200
+ $this->file_name = $this->_prep_filename($_FILES[$field]['name']);
201
+ $this->file_ext = $this->get_extension($this->file_name);
202
+ $this->client_name = $this->file_name;
203
+
204
+ // Is the file type allowed to be uploaded?
205
+ if ( ! $this->is_allowed_filetype())
206
+ {
207
+ $this->set_error('upload_invalid_filetype');
208
+ return FALSE;
209
+ }
210
+
211
+ // if we're overriding, let's now make sure the new name and type is allowed
212
+ if ($this->_file_name_override != '')
213
+ {
214
+ $this->file_name = $this->_prep_filename($this->_file_name_override);
215
+ $this->file_ext = $this->get_extension($this->file_name);
216
+
217
+ if ( ! $this->is_allowed_filetype(TRUE))
218
+ {
219
+ $this->set_error('upload_invalid_filetype');
220
+ return FALSE;
221
+ }
222
+ }
223
+
224
+ // Convert the file size to kilobytes
225
+ if ($this->file_size > 0)
226
+ {
227
+ $this->file_size = round($this->file_size/1024, 2);
228
+ }
229
+
230
+ // Is the file size within the allowed maximum?
231
+ if ( ! $this->is_allowed_filesize())
232
+ {
233
+ $this->set_error('upload_invalid_filesize');
234
+ return FALSE;
235
+ }
236
+
237
+ // Are the image dimensions within the allowed size?
238
+ // Note: This can fail if the server has an open_basdir restriction.
239
+ if ( ! $this->is_allowed_dimensions())
240
+ {
241
+ $this->set_error('upload_invalid_dimensions');
242
+ return FALSE;
243
+ }
244
+
245
+ // Sanitize the file name for security
246
+ $this->file_name = $this->clean_file_name($this->file_name);
247
+
248
+ // Truncate the file name if it's too long
249
+ if ($this->max_filename > 0)
250
+ {
251
+ $this->file_name = $this->limit_filename_length($this->file_name, $this->max_filename);
252
+ }
253
+
254
+ // Remove white spaces in the name
255
+ if ($this->remove_spaces == TRUE)
256
+ {
257
+ $this->file_name = preg_replace("/\s+/", "_", $this->file_name);
258
+ }
259
+
260
+ /*
261
+ * Validate the file name
262
+ * This function appends an number onto the end of
263
+ * the file if one with the same name already exists.
264
+ * If it returns false there was a problem.
265
+ */
266
+ $this->orig_name = $this->file_name;
267
+
268
+ if ($this->overwrite == FALSE)
269
+ {
270
+ $this->file_name = $this->set_filename($this->upload_path, $this->file_name);
271
+
272
+ if ($this->file_name === FALSE)
273
+ {
274
+ return FALSE;
275
+ }
276
+ }
277
+
278
+ /*
279
+ * Move the file to the final destination
280
+ * To deal with different server configurations
281
+ * we'll attempt to use copy() first. If that fails
282
+ * we'll use move_uploaded_file(). One of the two should
283
+ * reliably work in most environments
284
+ */
285
+ if ( ! @copy($this->file_temp, $this->upload_path.$this->file_name))
286
+ {
287
+ if ( ! @move_uploaded_file($this->file_temp, $this->upload_path.$this->file_name))
288
+ {
289
+ $this->set_error('upload_destination_error');
290
+ return FALSE;
291
+ }
292
+ }
293
+
294
+ /*
295
+ * Run the file through the XSS hacking filter
296
+ * This helps prevent malicious code from being
297
+ * embedded within a file. Scripts can easily
298
+ * be disguised as images or other file types.
299
+ */
300
+ if ($this->xss_clean == TRUE)
301
+ {
302
+ $this->do_xss_clean();
303
+ }
304
+
305
+ /*
306
+ * Set the finalized image dimensions
307
+ * This sets the image width/height (assuming the
308
+ * file was an image). We use this information
309
+ * in the "data" function.
310
+ */
311
+ $this->set_image_properties($this->upload_path.$this->file_name);
312
+
313
+ return TRUE;
314
+ }
315
+
316
+ // --------------------------------------------------------------------
317
+
318
+ /**
319
+ * Finalized Data Array
320
+ *
321
+ * Returns an associative array containing all of the information
322
+ * related to the upload, allowing the developer easy access in one array.
323
+ *
324
+ * @access public
325
+ * @return array
326
+ */
327
+ function data()
328
+ {
329
+ return array (
330
+ 'file_name' => $this->file_name,
331
+ 'file_type' => $this->file_type,
332
+ 'file_path' => $this->upload_path,
333
+ 'full_path' => $this->upload_path.$this->file_name,
334
+ 'raw_name' => str_replace($this->file_ext, '', $this->file_name),
335
+ 'orig_name' => $this->orig_name,
336
+ 'client_name' => $this->client_name,
337
+ 'file_ext' => $this->file_ext,
338
+ 'file_size' => $this->file_size,
339
+ 'is_image' => $this->is_image(),
340
+ 'image_width' => $this->image_width,
341
+ 'image_height' => $this->image_height,
342
+ 'image_type' => $this->image_type,
343
+ 'image_size_str' => $this->image_size_str,
344
+ );
345
+ }
346
+
347
+ // --------------------------------------------------------------------
348
+
349
+ /**
350
+ * Set Upload Path
351
+ *
352
+ * @access public
353
+ * @param string
354
+ * @return void
355
+ */
356
+ function set_upload_path($path)
357
+ {
358
+ // Make sure it has a trailing slash
359
+ $this->upload_path = rtrim($path, '/').'/';
360
+ }
361
+
362
+ // --------------------------------------------------------------------
363
+
364
+ /**
365
+ * Set the file name
366
+ *
367
+ * This function takes a filename/path as input and looks for the
368
+ * existence of a file with the same name. If found, it will append a
369
+ * number to the end of the filename to avoid overwriting a pre-existing file.
370
+ *
371
+ * @access public
372
+ * @param string
373
+ * @param string
374
+ * @return string
375
+ */
376
+ function set_filename($path, $filename)
377
+ {
378
+ if ($this->encrypt_name == TRUE)
379
+ {
380
+ mt_srand();
381
+ $filename = md5(uniqid(mt_rand())).$this->file_ext;
382
+ }
383
+
384
+ if ( ! file_exists($path.$filename))
385
+ {
386
+ return $filename;
387
+ }
388
+
389
+ $filename = str_replace($this->file_ext, '', $filename);
390
+
391
+ $new_filename = '';
392
+ for ($i = 1; $i < 100; $i++)
393
+ {
394
+ if ( ! file_exists($path.$filename.$i.$this->file_ext))
395
+ {
396
+ $new_filename = $filename.$i.$this->file_ext;
397
+ break;
398
+ }
399
+ }
400
+
401
+ if ($new_filename == '')
402
+ {
403
+ $this->set_error('upload_bad_filename');
404
+ return FALSE;
405
+ }
406
+ else
407
+ {
408
+ return $new_filename;
409
+ }
410
+ }
411
+
412
+ // --------------------------------------------------------------------
413
+
414
+ /**
415
+ * Set Maximum File Size
416
+ *
417
+ * @access public
418
+ * @param integer
419
+ * @return void
420
+ */
421
+ function set_max_filesize($n)
422
+ {
423
+ $this->max_size = ((int) $n < 0) ? 0: (int) $n;
424
+ }
425
+
426
+ // --------------------------------------------------------------------
427
+
428
+ /**
429
+ * Set Maximum File Name Length
430
+ *
431
+ * @access public
432
+ * @param integer
433
+ * @return void
434
+ */
435
+ function set_max_filename($n)
436
+ {
437
+ $this->max_filename = ((int) $n < 0) ? 0: (int) $n;
438
+ }
439
+
440
+ // --------------------------------------------------------------------
441
+
442
+ /**
443
+ * Set Maximum Image Width
444
+ *
445
+ * @access public
446
+ * @param integer
447
+ * @return void
448
+ */
449
+ function set_max_width($n)
450
+ {
451
+ $this->max_width = ((int) $n < 0) ? 0: (int) $n;
452
+ }
453
+
454
+ // --------------------------------------------------------------------
455
+
456
+ /**
457
+ * Set Maximum Image Height
458
+ *
459
+ * @access public
460
+ * @param integer
461
+ * @return void
462
+ */
463
+ function set_max_height($n)
464
+ {
465
+ $this->max_height = ((int) $n < 0) ? 0: (int) $n;
466
+ }
467
+
468
+ // --------------------------------------------------------------------
469
+
470
+ /**
471
+ * Set Allowed File Types
472
+ *
473
+ * @access public
474
+ * @param string
475
+ * @return void
476
+ */
477
+ function set_allowed_types($types)
478
+ {
479
+ $this->allowed_types = explode('|', $types);
480
+ }
481
+
482
+ // --------------------------------------------------------------------
483
+
484
+ /**
485
+ * Set Image Properties
486
+ *
487
+ * Uses GD to determine the width/height/type of image
488
+ *
489
+ * @access public
490
+ * @param string
491
+ * @return void
492
+ */
493
+ function set_image_properties($path = '')
494
+ {
495
+ if ( ! $this->is_image())
496
+ {
497
+ return;
498
+ }
499
+
500
+ if (function_exists('getimagesize'))
501
+ {
502
+ if (FALSE !== ($D = @getimagesize($path)))
503
+ {
504
+ $types = array(1 => 'gif', 2 => 'jpeg', 3 => 'png');
505
+
506
+ $this->image_width = $D['0'];
507
+ $this->image_height = $D['1'];
508
+ $this->image_type = ( ! isset($types[$D['2']])) ? 'unknown' : $types[$D['2']];
509
+ $this->image_size_str = $D['3']; // string containing height and width
510
+ }
511
+ }
512
+ }
513
+
514
+ // --------------------------------------------------------------------
515
+
516
+ /**
517
+ * Set XSS Clean
518
+ *
519
+ * Enables the XSS flag so that the file that was uploaded
520
+ * will be run through the XSS filter.
521
+ *
522
+ * @access public
523
+ * @param bool
524
+ * @return void
525
+ */
526
+ function set_xss_clean($flag = FALSE)
527
+ {
528
+ $this->xss_clean = ($flag == TRUE) ? TRUE : FALSE;
529
+ }
530
+
531
+ // --------------------------------------------------------------------
532
+
533
+ /**
534
+ * Validate the image
535
+ *
536
+ * @access public
537
+ * @return bool
538
+ */
539
+ function is_image()
540
+ {
541
+ // IE will sometimes return odd mime-types during upload, so here we just standardize all
542
+ // jpegs or pngs to the same file type.
543
+
544
+ $png_mimes = array('image/x-png');
545
+ $jpeg_mimes = array('image/jpg', 'image/jpe', 'image/jpeg', 'image/pjpeg');
546
+
547
+ if (in_array($this->file_type, $png_mimes))
548
+ {
549
+ $this->file_type = 'image/png';
550
+ }
551
+
552
+ if (in_array($this->file_type, $jpeg_mimes))
553
+ {
554
+ $this->file_type = 'image/jpeg';
555
+ }
556
+
557
+ $img_mimes = array(
558
+ 'image/gif',
559
+ 'image/jpeg',
560
+ 'image/png',
561
+ );
562
+
563
+ return (in_array($this->file_type, $img_mimes, TRUE)) ? TRUE : FALSE;
564
+ }
565
+
566
+ // --------------------------------------------------------------------
567
+
568
+ /**
569
+ * Verify that the filetype is allowed
570
+ *
571
+ * @access public
572
+ * @return bool
573
+ */
574
+ function is_allowed_filetype($ignore_mime = FALSE)
575
+ {
576
+ if (count($this->allowed_types) == 0 OR ! is_array($this->allowed_types))
577
+ {
578
+ $this->set_error('upload_no_file_types');
579
+ return FALSE;
580
+ }
581
+
582
+ $ext = strtolower(ltrim($this->file_ext, '.'));
583
+
584
+ if ( ! in_array($ext, $this->allowed_types))
585
+ {
586
+ return FALSE;
587
+ }
588
+
589
+ // Images get some additional checks
590
+ $image_types = array('gif', 'jpg', 'jpeg', 'png', 'jpe');
591
+
592
+ if (in_array($ext, $image_types))
593
+ {
594
+ if (getimagesize($this->file_temp) === FALSE)
595
+ {
596
+ return FALSE;
597
+ }
598
+ }
599
+
600
+ if ($ignore_mime === TRUE)
601
+ {
602
+ return TRUE;
603
+ }
604
+
605
+ $mime = $this->mimes_types($ext);
606
+
607
+ if (is_array($mime))
608
+ {
609
+ if (in_array($this->file_type, $mime, TRUE))
610
+ {
611
+ return TRUE;
612
+ }
613
+ }
614
+ elseif ($mime == $this->file_type)
615
+ {
616
+ return TRUE;
617
+ }
618
+
619
+ return FALSE;
620
+ }
621
+
622
+ // --------------------------------------------------------------------
623
+
624
+ /**
625
+ * Verify that the file is within the allowed size
626
+ *
627
+ * @access public
628
+ * @return bool
629
+ */
630
+ function is_allowed_filesize()
631
+ {
632
+ if ($this->max_size != 0 AND $this->file_size > $this->max_size)
633
+ {
634
+ return FALSE;
635
+ }
636
+ else
637
+ {
638
+ return TRUE;
639
+ }
640
+ }
641
+
642
+ // --------------------------------------------------------------------
643
+
644
+ /**
645
+ * Verify that the image is within the allowed width/height
646
+ *
647
+ * @access public
648
+ * @return bool
649
+ */
650
+ function is_allowed_dimensions()
651
+ {
652
+ if ( ! $this->is_image())
653
+ {
654
+ return TRUE;
655
+ }
656
+
657
+ if (function_exists('getimagesize'))
658
+ {
659
+ $D = @getimagesize($this->file_temp);
660
+
661
+ if ($this->max_width > 0 AND $D['0'] > $this->max_width)
662
+ {
663
+ return FALSE;
664
+ }
665
+
666
+ if ($this->max_height > 0 AND $D['1'] > $this->max_height)
667
+ {
668
+ return FALSE;
669
+ }
670
+
671
+ return TRUE;
672
+ }
673
+
674
+ return TRUE;
675
+ }
676
+
677
+ // --------------------------------------------------------------------
678
+
679
+ /**
680
+ * Validate Upload Path
681
+ *
682
+ * Verifies that it is a valid upload path with proper permissions.
683
+ *
684
+ *
685
+ * @access public
686
+ * @return bool
687
+ */
688
+ function validate_upload_path()
689
+ {
690
+ if ($this->upload_path == '')
691
+ {
692
+ $this->set_error('upload_no_filepath');
693
+ return FALSE;
694
+ }
695
+
696
+ if (function_exists('realpath') AND @realpath($this->upload_path) !== FALSE)
697
+ {
698
+ $this->upload_path = str_replace("\\", "/", realpath($this->upload_path));
699
+ }
700
+
701
+ if ( ! @is_dir($this->upload_path))
702
+ {
703
+ $this->set_error('upload_no_filepath');
704
+ return FALSE;
705
+ }
706
+
707
+ if ( ! is_really_writable($this->upload_path))
708
+ {
709
+ $this->set_error('upload_not_writable');
710
+ return FALSE;
711
+ }
712
+
713
+ $this->upload_path = preg_replace("/(.+?)\/*$/", "\\1/", $this->upload_path);
714
+ return TRUE;
715
+ }
716
+
717
+ // --------------------------------------------------------------------
718
+
719
+ /**
720
+ * Extract the file extension
721
+ *
722
+ * @access public
723
+ * @param string
724
+ * @return string
725
+ */
726
+ function get_extension($filename)
727
+ {
728
+ $x = explode('.', $filename);
729
+ return '.'.end($x);
730
+ }
731
+
732
+ // --------------------------------------------------------------------
733
+
734
+ /**
735
+ * Clean the file name for security
736
+ *
737
+ * @access public
738
+ * @param string
739
+ * @return string
740
+ */
741
+ function clean_file_name($filename)
742
+ {
743
+ $bad = array(
744
+ "<!--",
745
+ "-->",
746
+ "'",
747
+ "<",
748
+ ">",
749
+ '"',
750
+ '&',
751
+ '$',
752
+ '=',
753
+ ';',
754
+ '?',
755
+ '/',
756
+ "%20",
757
+ "%22",
758
+ "%3c", // <
759
+ "%253c", // <
760
+ "%3e", // >
761
+ "%0e", // >
762
+ "%28", // (
763
+ "%29", // )
764
+ "%2528", // (
765
+ "%26", // &
766
+ "%24", // $
767
+ "%3f", // ?
768
+ "%3b", // ;
769
+ "%3d" // =
770
+ );
771
+
772
+ $filename = str_replace($bad, '', $filename);
773
+
774
+ return stripslashes($filename);
775
+ }
776
+
777
+ // --------------------------------------------------------------------
778
+
779
+ /**
780
+ * Limit the File Name Length
781
+ *
782
+ * @access public
783
+ * @param string
784
+ * @return string
785
+ */
786
+ function limit_filename_length($filename, $length)
787
+ {
788
+ if (strlen($filename) < $length)
789
+ {
790
+ return $filename;
791
+ }
792
+
793
+ $ext = '';
794
+ if (strpos($filename, '.') !== FALSE)
795
+ {
796
+ $parts = explode('.', $filename);
797
+ $ext = '.'.array_pop($parts);
798
+ $filename = implode('.', $parts);
799
+ }
800
+
801
+ return substr($filename, 0, ($length - strlen($ext))).$ext;
802
+ }
803
+
804
+ // --------------------------------------------------------------------
805
+
806
+ /**
807
+ * Runs the file through the XSS clean function
808
+ *
809
+ * This prevents people from embedding malicious code in their files.
810
+ * I'm not sure that it won't negatively affect certain files in unexpected ways,
811
+ * but so far I haven't found that it causes trouble.
812
+ *
813
+ * @access public
814
+ * @return void
815
+ */
816
+ function do_xss_clean()
817
+ {
818
+ $file = $this->upload_path.$this->file_name;
819
+
820
+ if (filesize($file) == 0)
821
+ {
822
+ return FALSE;
823
+ }
824
+
825
+ if (($data = @file_get_contents($file)) === FALSE)
826
+ {
827
+ return FALSE;
828
+ }
829
+
830
+ if ( ! $fp = @fopen($file, FOPEN_READ_WRITE))
831
+ {
832
+ return FALSE;
833
+ }
834
+
835
+ $CI =& get_instance();
836
+ $data = $CI->input->xss_clean($data);
837
+
838
+ flock($fp, LOCK_EX);
839
+ fwrite($fp, $data);
840
+ flock($fp, LOCK_UN);
841
+ fclose($fp);
842
+ }
843
+
844
+ // --------------------------------------------------------------------
845
+
846
+ /**
847
+ * Set an error message
848
+ *
849
+ * @access public
850
+ * @param string
851
+ * @return void
852
+ */
853
+ function set_error($msg)
854
+ {
855
+ $CI =& get_instance();
856
+ $CI->lang->load('upload');
857
+
858
+ if (is_array($msg))
859
+ {
860
+ foreach ($msg as $val)
861
+ {
862
+ $msg = ($CI->lang->line($val) == FALSE) ? $val : $CI->lang->line($val);
863
+ $this->error_msg[] = $msg;
864
+ log_message('error', $msg);
865
+ }
866
+ }
867
+ else
868
+ {
869
+ $msg = ($CI->lang->line($msg) == FALSE) ? $msg : $CI->lang->line($msg);
870
+ $this->error_msg[] = $msg;
871
+ log_message('error', $msg);
872
+ }
873
+ }
874
+
875
+ // --------------------------------------------------------------------
876
+
877
+ /**
878
+ * Display the error message
879
+ *
880
+ * @access public
881
+ * @param string
882
+ * @param string
883
+ * @return string
884
+ */
885
+ function display_errors($open = '<p>', $close = '</p>')
886
+ {
887
+ $str = '';
888
+ foreach ($this->error_msg as $val)
889
+ {
890
+ $str .= $open.$val.$close;
891
+ }
892
+
893
+ return $str;
894
+ }
895
+
896
+ // --------------------------------------------------------------------
897
+
898
+ /**
899
+ * List of Mime Types
900
+ *
901
+ * This is a list of mime types. We use it to validate
902
+ * the "allowed types" set by the developer
903
+ *
904
+ * @access public
905
+ * @param string
906
+ * @return string
907
+ */
908
+ function mimes_types($mime)
909
+ {
910
+ global $mimes;
911
+
912
+ if (count($this->mimes) == 0)
913
+ {
914
+ if (@require_once(APPPATH.'config/mimes'.EXT))
915
+ {
916
+ $this->mimes = $mimes;
917
+ unset($mimes);
918
+ }
919
+ }
920
+
921
+ return ( ! isset($this->mimes[$mime])) ? FALSE : $this->mimes[$mime];
922
+ }
923
+
924
+ // --------------------------------------------------------------------
925
+
926
+ /**
927
+ * Prep Filename
928
+ *
929
+ * Prevents possible script execution from Apache's handling of files multiple extensions
930
+ * http://httpd.apache.org/docs/1.3/mod/mod_mime.html#multipleext
931
+ *
932
+ * @access private
933
+ * @param string
934
+ * @return string
935
+ */
936
+ function _prep_filename($filename)
937
+ {
938
+ if (strpos($filename, '.') === FALSE)
939
+ {
940
+ return $filename;
941
+ }
942
+
943
+ $parts = explode('.', $filename);
944
+ $ext = array_pop($parts);
945
+ $filename = array_shift($parts);
946
+
947
+ foreach ($parts as $part)
948
+ {
949
+ if ( ! in_array(strtolower($part), $this->allowed_types) OR $this->mimes_types(strtolower($part)) === FALSE)
950
+ {
951
+ $filename .= '.'.$part.'_';
952
+ }
953
+ else
954
+ {
955
+ $filename .= '.'.$part;
956
+ }
957
+ }
958
+
959
+ $filename .= '.'.$ext;
960
+
961
+ return $filename;
962
+ }
963
+
964
+ // --------------------------------------------------------------------
965
+
966
+ }
967
+ // END Upload Class
968
+
969
+ /* End of file Upload.php */
970
+ /* Location: ./system/libraries/Upload.php */