Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Initial commit

  • Loading branch information...
commit 160cd5871961c5ee8105f962da5dafc00e2d3cc4 0 parents
Derek Allard authored
Showing with 32,126 additions and 0 deletions.
  1. BIN  BambooInvoice_system_guide.pdf
  2. +113 −0 bamboo_system_files/application/config/autoload.php
  3. +363 −0 bamboo_system_files/application/config/config.php
  4. +41 −0 bamboo_system_files/application/config/constants.php
  5. +50 −0 bamboo_system_files/application/config/database.php
  6. +15 −0 bamboo_system_files/application/config/doctypes.php
  7. +22 −0 bamboo_system_files/application/config/email.php
  8. +25 −0 bamboo_system_files/application/config/hooks.php
  9. +10 −0 bamboo_system_files/application/config/index.html
  10. +104 −0 bamboo_system_files/application/config/mimes.php
  11. +12 −0 bamboo_system_files/application/config/pagination.php
  12. +47 −0 bamboo_system_files/application/config/routes.php
  13. +66 −0 bamboo_system_files/application/config/smileys.php
  14. +105 −0 bamboo_system_files/application/config/user_agents.php
  15. +149 −0 bamboo_system_files/application/controllers/accounts.php
  16. +17 −0 bamboo_system_files/application/controllers/changelog.php
  17. +151 −0 bamboo_system_files/application/controllers/clientcontacts.php
  18. +266 −0 bamboo_system_files/application/controllers/clients.php
  19. +17 −0 bamboo_system_files/application/controllers/credits.php
  20. +19 −0 bamboo_system_files/application/controllers/donate.php
  21. +70 −0 bamboo_system_files/application/controllers/front.php
  22. +18 −0 bamboo_system_files/application/controllers/help.php
  23. +10 −0 bamboo_system_files/application/controllers/index.html
  24. +552 −0 bamboo_system_files/application/controllers/install.php
  25. +1,028 −0 bamboo_system_files/application/controllers/invoices.php
  26. +182 −0 bamboo_system_files/application/controllers/login.php
  27. +35 −0 bamboo_system_files/application/controllers/logout.php
  28. +202 −0 bamboo_system_files/application/controllers/reports.php
  29. +192 −0 bamboo_system_files/application/controllers/settings.php
  30. +175 −0 bamboo_system_files/application/controllers/utilities.php
  31. +35 −0 bamboo_system_files/application/errors/error_404.php
  32. +34 −0 bamboo_system_files/application/errors/error_db.php
  33. +34 −0 bamboo_system_files/application/errors/error_general.php
  34. +10 −0 bamboo_system_files/application/errors/error_php.php
  35. +10 −0 bamboo_system_files/application/errors/index.html
  36. +8 −0 bamboo_system_files/application/helpers/ajax_helper.php
  37. +228 −0 bamboo_system_files/application/helpers/date_helper.php
  38. +23 −0 bamboo_system_files/application/helpers/logo_helper.php
  39. +271 −0 bamboo_system_files/application/language/bulgarian/bamboo_lang.php
  40. +275 −0 bamboo_system_files/application/language/danish/bamboo_lang.php
  41. +267 −0 bamboo_system_files/application/language/dutch/bamboo_lang.php
  42. +274 −0 bamboo_system_files/application/language/english/bamboo_lang.php
  43. +277 −0 bamboo_system_files/application/language/estonian/bamboo_lang.php
  44. +265 −0 bamboo_system_files/application/language/french/bamboo_lang.php
  45. +272 −0 bamboo_system_files/application/language/german/bamboo_lang.php
  46. +272 −0 bamboo_system_files/application/language/italian/bamboo_lang.php
  47. +273 −0 bamboo_system_files/application/language/portuguese/bamboo_lang.php
  48. +259 −0 bamboo_system_files/application/language/romanian/bamboo_lang.php
  49. +273 −0 bamboo_system_files/application/language/spanish/bamboo_lang.php
  50. +271 −0 bamboo_system_files/application/language/swedish/bamboo_lang.php
  51. +29 −0 bamboo_system_files/application/libraries/MY_Controller.php
  52. +79 −0 bamboo_system_files/application/libraries/Site_sentry.php
  53. +193 −0 bamboo_system_files/application/models/clientcontacts_model.php
  54. +118 −0 bamboo_system_files/application/models/clients_model.php
  55. +10 −0 bamboo_system_files/application/models/index.html
  56. +36 −0 bamboo_system_files/application/models/invoice_histories_model.php
  57. +302 −0 bamboo_system_files/application/models/invoices_model.php
  58. +51 −0 bamboo_system_files/application/models/reports_model.php
  59. +40 −0 bamboo_system_files/application/models/settings_model.php
  60. +58 −0 bamboo_system_files/application/models/utilities_model.php
  61. +61 −0 bamboo_system_files/application/views/accounts/index.php
  62. +333 −0 bamboo_system_files/application/views/changelog/index.php
  63. +18 −0 bamboo_system_files/application/views/clientcontacts/add.php
  64. +67 −0 bamboo_system_files/application/views/clientcontacts/client_contact_add_form.php
  65. +23 −0 bamboo_system_files/application/views/clientcontacts/edit.php
  66. +6 −0 bamboo_system_files/application/views/clients/delete.php
  67. +37 −0 bamboo_system_files/application/views/clients/edit.php
  68. +113 −0 bamboo_system_files/application/views/clients/index.php
  69. +48 −0 bamboo_system_files/application/views/clients/newclient.php
  70. +27 −0 bamboo_system_files/application/views/clients/notes.php
  71. +47 −0 bamboo_system_files/application/views/credits/index.php
  72. +23 −0 bamboo_system_files/application/views/donate/index.php
  73. +23 −0 bamboo_system_files/application/views/footer.php
  74. +157 −0 bamboo_system_files/application/views/header.php
  75. +41 −0 bamboo_system_files/application/views/help/index.php
  76. +10 −0 bamboo_system_files/application/views/index.html
  77. +27 −0 bamboo_system_files/application/views/index/index_logged_in.php
  78. +50 −0 bamboo_system_files/application/views/index/index_logged_out.php
  79. +43 −0 bamboo_system_files/application/views/install_update/index.php
  80. +4 −0 bamboo_system_files/application/views/install_update/install_footer.php
  81. +40 −0 bamboo_system_files/application/views/install_update/install_header.php
  82. +8 −0 bamboo_system_files/application/views/invoices/create_fail.php
  83. +6 −0 bamboo_system_files/application/views/invoices/delete.php
  84. +105 −0 bamboo_system_files/application/views/invoices/edit.php
  85. +60 −0 bamboo_system_files/application/views/invoices/index.php
  86. +43 −0 bamboo_system_files/application/views/invoices/invoice_new.php
  87. +79 −0 bamboo_system_files/application/views/invoices/invoice_table.php
  88. +90 −0 bamboo_system_files/application/views/invoices/newinvoice.php
  89. +7 −0 bamboo_system_files/application/views/invoices/newinvoice_first.php
  90. +193 −0 bamboo_system_files/application/views/invoices/pdf.php
  91. +9 −0 bamboo_system_files/application/views/invoices/reminder.php
  92. +11 −0 bamboo_system_files/application/views/invoices/status_view.php
  93. +252 −0 bamboo_system_files/application/views/invoices/view.php
  94. +8 −0 bamboo_system_files/application/views/login/index.php
  95. +13 −0 bamboo_system_files/application/views/login/login_fail.php
  96. +34 −0 bamboo_system_files/application/views/login/login_forgotpassword.php
  97. +10 −0 bamboo_system_files/application/views/login/login_password_message.php
  98. +27 −0 bamboo_system_files/application/views/login/loginform.php
  99. +8 −0 bamboo_system_files/application/views/logout/index.php
  100. +6 −0 bamboo_system_files/application/views/logout/logout_confirm.php
  101. +81 −0 bamboo_system_files/application/views/reports/dates.php
  102. +127 −0 bamboo_system_files/application/views/reports/index.php
  103. +317 −0 bamboo_system_files/application/views/settings/index.php
  104. +15 −0 bamboo_system_files/application/views/utilities/index.php
  105. +10 −0 bamboo_system_files/application/views/utilities/phpinfo.php
  106. +10 −0 bamboo_system_files/application/views/utilities/version_check.php
  107. +10 −0 bamboo_system_files/cache/index.html
  108. +69 −0 bamboo_system_files/codeigniter/Base4.php
  109. +56 −0 bamboo_system_files/codeigniter/Base5.php
  110. +280 −0 bamboo_system_files/codeigniter/CodeIgniter.php
  111. +421 −0 bamboo_system_files/codeigniter/Common.php
  112. +93 −0 bamboo_system_files/codeigniter/Compat.php
  113. +10 −0 bamboo_system_files/codeigniter/index.html
  114. +146 −0 bamboo_system_files/database/DB.php
  115. +1,820 −0 bamboo_system_files/database/DB_active_rec.php
  116. +195 −0 bamboo_system_files/database/DB_cache.php
  117. +1,366 −0 bamboo_system_files/database/DB_driver.php
  118. +375 −0 bamboo_system_files/database/DB_forge.php
  119. +342 −0 bamboo_system_files/database/DB_result.php
  120. +389 −0 bamboo_system_files/database/DB_utility.php
  121. +10 −0 bamboo_system_files/database/drivers/index.html
  122. +10 −0 bamboo_system_files/database/drivers/mssql/index.html
  123. +667 −0 bamboo_system_files/database/drivers/mssql/mssql_driver.php
  124. +248 −0 bamboo_system_files/database/drivers/mssql/mssql_forge.php
  125. +169 −0 bamboo_system_files/database/drivers/mssql/mssql_result.php
  126. +123 −0 bamboo_system_files/database/drivers/mssql/mssql_utility.php
  127. +10 −0 bamboo_system_files/database/drivers/mysql/index.html
  128. +670 −0 bamboo_system_files/database/drivers/mysql/mysql_driver.php
  129. +254 −0 bamboo_system_files/database/drivers/mysql/mysql_forge.php
  130. +169 −0 bamboo_system_files/database/drivers/mysql/mysql_result.php
  131. +245 −0 bamboo_system_files/database/drivers/mysql/mysql_utility.php
  132. +10 −0 bamboo_system_files/database/drivers/mysqli/index.html
  133. +671 −0 bamboo_system_files/database/drivers/mysqli/mysqli_driver.php
  134. +254 −0 bamboo_system_files/database/drivers/mysqli/mysqli_forge.php
  135. +169 −0 bamboo_system_files/database/drivers/mysqli/mysqli_result.php
  136. +123 −0 bamboo_system_files/database/drivers/mysqli/mysqli_utility.php
  137. +10 −0 bamboo_system_files/database/drivers/oci8/index.html
  138. +780 −0 bamboo_system_files/database/drivers/oci8/oci8_driver.php
  139. +248 −0 bamboo_system_files/database/drivers/oci8/oci8_forge.php
  140. +249 −0 bamboo_system_files/database/drivers/oci8/oci8_result.php
  141. +122 −0 bamboo_system_files/database/drivers/oci8/oci8_utility.php
  142. +10 −0 bamboo_system_files/database/drivers/odbc/index.html
  143. +639 −0 bamboo_system_files/database/drivers/odbc/odbc_driver.php
  144. +266 −0 bamboo_system_files/database/drivers/odbc/odbc_forge.php
  145. +228 −0 bamboo_system_files/database/drivers/odbc/odbc_result.php
  146. +148 −0 bamboo_system_files/database/drivers/odbc/odbc_utility.php
  147. +10 −0 bamboo_system_files/database/drivers/postgre/index.html
  148. +684 −0 bamboo_system_files/database/drivers/postgre/postgre_driver.php
  149. +248 −0 bamboo_system_files/database/drivers/postgre/postgre_forge.php
  150. +169 −0 bamboo_system_files/database/drivers/postgre/postgre_result.php
  151. +124 −0 bamboo_system_files/database/drivers/postgre/postgre_utility.php
  152. +10 −0 bamboo_system_files/database/drivers/sqlite/index.html
  153. +657 −0 bamboo_system_files/database/drivers/sqlite/sqlite_driver.php
  154. +265 −0 bamboo_system_files/database/drivers/sqlite/sqlite_forge.php
  155. +179 −0 bamboo_system_files/database/drivers/sqlite/sqlite_result.php
  156. +141 −0 bamboo_system_files/database/drivers/sqlite/sqlite_utility.php
  157. +10 −0 bamboo_system_files/database/index.html
  158. +10 −0 bamboo_system_files/fonts/index.html
  159. BIN  bamboo_system_files/fonts/texb.ttf
  160. +78 −0 bamboo_system_files/helpers/array_helper.php
  161. +498 −0 bamboo_system_files/helpers/compatibility_helper.php
  162. +144 −0 bamboo_system_files/helpers/cookie_helper.php
  163. +611 −0 bamboo_system_files/helpers/date_helper.php
  164. +84 −0 bamboo_system_files/helpers/directory_helper.php
  165. +100 −0 bamboo_system_files/helpers/download_helper.php
  166. +62 −0 bamboo_system_files/helpers/email_helper.php
  167. +464 −0 bamboo_system_files/helpers/file_helper.php
  168. +1,025 −0 bamboo_system_files/helpers/form_helper.php
  169. +416 −0 bamboo_system_files/helpers/html_helper.php
  170. +10 −0 bamboo_system_files/helpers/index.html
  171. +171 −0 bamboo_system_files/helpers/inflector_helper.php
  172. +58 −0 bamboo_system_files/helpers/language_helper.php
  173. +75 −0 bamboo_system_files/helpers/number_helper.php
  174. +72 −0 bamboo_system_files/helpers/path_helper.php
  175. +126 −0 bamboo_system_files/helpers/security_helper.php
  176. +273 −0 bamboo_system_files/helpers/smiley_helper.php
  177. +273 −0 bamboo_system_files/helpers/string_helper.php
  178. +462 −0 bamboo_system_files/helpers/text_helper.php
  179. +71 −0 bamboo_system_files/helpers/typography_helper.php
  180. +593 −0 bamboo_system_files/helpers/url_helper.php
  181. +62 −0 bamboo_system_files/helpers/xml_helper.php
  182. +10 −0 bamboo_system_files/index.html
  183. +51 −0 bamboo_system_files/language/english/calendar_lang.php
  184. +60 −0 bamboo_system_files/language/english/date_lang.php
  185. +28 −0 bamboo_system_files/language/english/db_lang.php
  186. +24 −0 bamboo_system_files/language/english/email_lang.php
  187. +24 −0 bamboo_system_files/language/english/form_validation_lang.php
  188. +17 −0 bamboo_system_files/language/english/ftp_lang.php
  189. +24 −0 bamboo_system_files/language/english/imglib_lang.php
  190. +10 −0 bamboo_system_files/language/english/index.html
  191. +10 −0 bamboo_system_files/language/english/number_lang.php
  192. +19 −0 bamboo_system_files/language/english/profiler_lang.php
  193. +17 −0 bamboo_system_files/language/english/scaffolding_lang.php
  194. +24 −0 bamboo_system_files/language/english/unit_test_lang.php
  195. +22 −0 bamboo_system_files/language/english/upload_lang.php
  196. +24 −0 bamboo_system_files/language/english/validation_lang.php
  197. +10 −0 bamboo_system_files/language/index.html
  198. +113 −0 bamboo_system_files/libraries/Benchmark.php
Sorry, we could not display the entire diff because too many files (439) changed.
BIN  BambooInvoice_system_guide.pdf
Binary file not shown
113 bamboo_system_files/application/config/autoload.php
@@ -0,0 +1,113 @@
+<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------
+| AUTO-LOADER
+| -------------------------------------------------------------------
+| This file specifies which systems should be loaded by default.
+|
+| In order to keep the framework as light-weight as possible only the
+| absolute minimal resources are loaded by default. For example,
+| the database is not connected to automatically since no assumption
+| is made regarding whether you intend to use it. This file lets
+| you globally define which systems you would like loaded with every
+| request.
+|
+| -------------------------------------------------------------------
+| Instructions
+| -------------------------------------------------------------------
+|
+| These are the things you can load automatically:
+|
+| 1. Libraries
+| 2. Helper files
+| 3. Plugins
+| 5. Custom config files
+|
+*/
+
+/*
+| -------------------------------------------------------------------
+| Auto-load Libraries
+| -------------------------------------------------------------------
+| These are the classes located in the system/libraries folder
+| or in your system/application/libraries folder.
+|
+| Prototype:
+|
+| $autoload['libraries'] = array('database', 'session', 'xmlrpc');
+*/
+
+$autoload['libraries'] = array('database', 'site_sentry', 'session');
+
+/*
+| -------------------------------------------------------------------
+| Auto-load Helper Files
+| -------------------------------------------------------------------
+| Prototype:
+|
+| $autoload['helper'] = array('url', 'file');
+*/
+
+$autoload['helper'] = array('url', 'form');
+
+
+/*
+| -------------------------------------------------------------------
+| Auto-load Plugins
+| -------------------------------------------------------------------
+| Prototype:
+|
+| $autoload['plugin'] = array('captcha', 'js_calendar');
+*/
+
+$autoload['plugin'] = array();
+
+
+/*
+| -------------------------------------------------------------------
+| Auto-load Config files
+| -------------------------------------------------------------------
+| Prototype:
+|
+| $autoload['config'] = array('config1', 'config2');
+|
+| NOTE: This item is intended for use ONLY if you have created custom
+| config files. Otherwise, leave it blank.
+|
+*/
+
+$autoload['config'] = array();
+
+
+/*
+| -------------------------------------------------------------------
+| Auto-load Language files
+| -------------------------------------------------------------------
+| Prototype:
+|
+| $autoload['language'] = array('lang1', 'lang2');
+|
+| NOTE: Do not include the "_lang" part of your file. For example
+| "codeigniter_lang.php" would be referenced as array('codeigniter');
+|
+*/
+
+$autoload['language'] = array('bamboo');
+//$autoload['language'] = array();
+
+/*
+| -------------------------------------------------------------------
+| Auto-load Core Libraries
+| -------------------------------------------------------------------
+|
+| DEPRECATED: Use $autoload['libraries'] above instead.
+|
+*/
+// $autoload['core'] = array();
+
+$autoload['model'] = array('settings_model');
+
+
+
+/* End of file autoload.php */
+/* Location: ./system/application/config/autoload.php */
363 bamboo_system_files/application/config/config.php
@@ -0,0 +1,363 @@
+<?php
+if (!defined('BASEPATH')) exit('No direct script access allowed');
+
+/*
+|--------------------------------------------------------------------------
+| Base Site URL
+|--------------------------------------------------------------------------
+|
+| URL to your Code Igniter root. Typically this will be your base URL,
+| WITH a trailing slash:
+|
+| http://www.your-site.com/
+|
+*/
+$config['base_url'] = 'http://localhost/bambooinvoice/';
+// This should be a full address, with a slash. For example, here's what
+// I use on bambooinvoice.org:
+//$config['base_url'] = 'http://bambooinvoice.org/';
+
+/*
+|--------------------------------------------------------------------------
+| Index File
+|--------------------------------------------------------------------------
+|
+| Typically this will be your index.php file, unless you've renamed it to
+| something else. If you are using mod_rewrite to remove the page set this
+| variable so that it is blank.
+|
+*/
+$config['index_page'] = 'index.php';
+
+/*
+|--------------------------------------------------------------------------
+| URI PROTOCOL
+|--------------------------------------------------------------------------
+|
+| This item determines which server global should be used to retrieve the
+| URI string. The default setting of 'AUTO' works for most servers.
+| If your links do not seem to work, try one of the other delicious flavors:
+|
+| 'AUTO' Default - auto detects
+| 'PATH_INFO' Uses the PATH_INFO
+| 'QUERY_STRING' Uses the QUERY_STRING
+| 'REQUEST_URI' Uses the REQUEST_URI
+| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
+|
+*/
+$config['uri_protocol'] = 'AUTO';
+
+/*
+|--------------------------------------------------------------------------
+| URL suffix
+|--------------------------------------------------------------------------
+|
+| This option allows you to add a suffix to all URLs generated by Code Igniter.
+| For more information please see the user guide:
+|
+| http://www.codeigniter.com/user_guide/general/urls.html
+*/
+
+$config['url_suffix'] = '';
+
+/*
+|--------------------------------------------------------------------------
+| Default Language
+|--------------------------------------------------------------------------
+|
+| This determines which set of language files should be used. Make sure
+| there is an available translation if you intend to use something other
+| than english.
+|
+*/
+$config['language'] = 'english';
+
+/*
+|--------------------------------------------------------------------------
+| Default Character Set
+|--------------------------------------------------------------------------
+|
+| This determines which character set is used by default in various methods
+| that require a character set to be provided.
+|
+*/
+$config['charset'] = 'UTF-8';
+
+/*
+|--------------------------------------------------------------------------
+| Enable/Disable System Hooks
+|--------------------------------------------------------------------------
+|
+| If you would like to use the 'hooks' feature you must enable it by
+| setting this variable to TRUE (boolean). See the user guide for details.
+|
+*/
+$config['enable_hooks'] = FALSE;
+
+
+/*
+|--------------------------------------------------------------------------
+| Class Extension Prefix
+|--------------------------------------------------------------------------
+|
+| This item allows you to set the filename/classname prefix when extending
+| native libraries. For more information please see the user guide:
+|
+| http://www.codeigniter.com/user_guide/general/core_classes.html
+| http://www.codeigniter.com/user_guide/general/creating_libraries.html
+|
+*/
+$config['subclass_prefix'] = 'MY_';
+
+
+/*
+|--------------------------------------------------------------------------
+| Allowed URL Characters
+|--------------------------------------------------------------------------
+|
+| This lets you specify which characters are permitted within your URLs.
+| When someone tries to submit a URL with disallowed characters they will
+| get a warning message.
+|
+| As a security measure you are STRONGLY encouraged to restrict URLs to
+| as few characters as possible. By default only these are allowed: a-z 0-9~%.:_-
+|
+| Leave blank to allow all characters -- but only if you are insane.
+|
+| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
+|
+*/
+$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';
+
+
+/*
+|--------------------------------------------------------------------------
+| Enable Query Strings
+|--------------------------------------------------------------------------
+|
+| By default Code Igniter uses search-engine friendly segment based URLs:
+| www.your-site.com/who/what/where/
+|
+| You can optionally enable standard query string based URLs:
+| www.your-site.com?who=me&what=something&where=here
+|
+| Options are: TRUE or FALSE (boolean)
+|
+| The two other items let you set the query string 'words' that will
+| invoke your controllers and its functions:
+| www.your-site.com/index.php?c=controller&m=function
+|
+| Please note that some of the helpers won't work as expected when
+| this feature is enabled, since Code Igniter is designed primarily to
+| use segment based URLs.
+|
+*/
+$config['enable_query_strings'] = FALSE;
+$config['controller_trigger'] = 'c';
+$config['function_trigger'] = 'm';
+
+/*
+|--------------------------------------------------------------------------
+| Error Logging Threshold
+|--------------------------------------------------------------------------
+|
+| If you have enabled error logging, you can set an error threshold to
+| determine what gets logged. Threshold options are:
+| You can enable error logging by setting a threshold over zero. The
+| threshold determines what gets logged. Threshold options are:
+|
+| 0 = Disables logging
+| 0 = Error logging TURNED OFF
+| 1 = Error Messages (including PHP errors)
+| 2 = Debug Messages
+| 3 = Informational Messages
+| 4 = All Messages
+|
+| For a live site you'll usually only enable Errors (1) to be logged otherwise
+| your log files will fill up very fast.
+|
+*/
+$config['log_threshold'] = 1;
+
+/*
+|--------------------------------------------------------------------------
+| Error Logging Directory Path
+|--------------------------------------------------------------------------
+|
+| Leave this BLANK unless you would like to set something other than the default
+| system/logs/ folder. Use a full server path with trailing slash.
+|
+*/
+$config['log_path'] = '';
+
+/*
+|--------------------------------------------------------------------------
+| Date Format for Logs
+|--------------------------------------------------------------------------
+|
+| Each item that is logged has an associated date. You can use PHP date
+| codes to set your own date formatting
+|
+*/
+$config['log_date_format'] = 'Y-m-d H:i:s';
+
+/*
+|--------------------------------------------------------------------------
+| Cache Directory Path
+|--------------------------------------------------------------------------
+|
+| Leave this BLANK unless you would like to set something other than the default
+| system/cache/ folder. Use a full server path with trailing slash.
+|
+*/
+$config['cache_path'] = '';
+
+/*
+|--------------------------------------------------------------------------
+| Encryption Key
+|--------------------------------------------------------------------------
+|
+| If you use the Encryption class or the Sessions class with encryption
+| enabled you MUST set an encryption key. See the user guide for info.
+|
+*/
+$config['encryption_key'] = 'bamboo_encryption_key_Gg2F5';
+
+/*
+|--------------------------------------------------------------------------
+| Session Variables
+|--------------------------------------------------------------------------
+|
+| 'session_cookie_name' = the name you want for the cookie
+| 'encrypt_sess_cookie' = TRUE/FALSE (boolean). Whether to encrypt the cookie
+| 'session_expiration' = the number of SECONDS you want the session to last.
+| by default sessions last 7200 seconds (two hours). Set to zero for no expiration.
+| 'time_to_update' = how many seconds between CI refreshing Session Information
+|
+*/
+$config['sess_cookie_name'] = 'bamboo_sessions';
+$config['sess_expiration'] = 3600;
+$config['sess_encrypt_cookie'] = TRUE;
+$config['sess_use_database'] = FALSE;
+$config['sess_table_name'] = 'sessions';
+$config['sess_match_ip'] = FALSE;
+$config['sess_match_useragent'] = TRUE;
+$config['sess_time_to_update'] = 300;
+
+/*
+|--------------------------------------------------------------------------
+| Cookie Related Variables
+|--------------------------------------------------------------------------
+|
+| 'cookie_prefix' = Set a prefix if you need to avoid collisions
+| 'cookie_domain' = Set to .your-domain.com for site-wide cookies
+| 'cookie_path' = Typically will be a forward slash
+|
+*/
+$config['cookie_prefix'] = 'bamboo';
+$config['cookie_domain'] = '';
+$config['cookie_path'] = '/';
+
+/*
+|--------------------------------------------------------------------------
+| Global XSS Filtering
+|--------------------------------------------------------------------------
+|
+| Determines whether the XSS filter is always active when GET, POST or
+| COOKIE data is encountered
+|
+*/
+$config['global_xss_filtering'] = TRUE;
+
+/*
+|--------------------------------------------------------------------------
+| Output Compression
+|--------------------------------------------------------------------------
+|
+| Enables Gzip output compression for faster page loads. When enabled,
+| the output class will test whether your server supports Gzip.
+| Even if it does, however, not all browsers support compression
+| so enable only if you are reasonably sure your visitors can handle it.
+|
+| VERY IMPORTANT: If you are getting a blank page when compression is enabled it
+| means you are prematurely outputting something to your browser. It could
+| even be a line of whitespace at the end of one of your scripts. For
+| compression to work, nothing can be sent before the output buffer is called
+| by the output class. Do not 'echo' any values with compression enabled.
+|
+*/
+$config['compress_output'] = FALSE;
+
+/*
+|--------------------------------------------------------------------------
+| Master Time Reference
+|--------------------------------------------------------------------------
+|
+| Options are 'local' or 'gmt'. This pref tells the system whether to use
+| your server's local time as the master 'now' reference, or convert it to
+| GMT. See the 'date helper' page of the user guide for information
+| regarding date handling.
+|
+*/
+$config['time_reference'] = 'local';
+
+
+/*
+|--------------------------------------------------------------------------
+| Rewrite PHP Short Tags
+|--------------------------------------------------------------------------
+|
+| If your PHP installation does not have short tag support enabled CI
+| can rewrite the tags on-the-fly, enabling you to utilize that syntax
+| in your view files. Options are TRUE or FALSE (boolean)
+|
+*/
+$config['rewrite_short_tags'] = FALSE;
+
+
+/*
+|--------------------------------------------------------------------------
+| Hidden Bamboo Settings
+|--------------------------------------------------------------------------
+|
+| These are settings that Bamboo uses in its day to day operations that are
+| not worth their own 'setting' per se, but that some users may want to change
+| in their individual setups
+|
+*/
+// setting 'unique_invoice_per_client' to TRUE will cause last-used invoice
+// numbers to be controlled by the individual client, rather then globally
+$config['unique_invoice_per_client'] = FALSE;
+
+// setting 'currency_decimal' will use this character instead of a '.' to separate
+// the cents. For example: $24.67 vs $24,67 vs $24_67... or whatever
+$config['currency_decimal'] = '.';
+
+// setting 'show_profiler' to TRUE will cause profiler information to automatically
+// load on the bottom of every page (except the installer)
+$config['show_profiler'] = FALSE;
+
+// setting 'logo_base_url' to TRUE will BambooInvoice to force the path to your logo
+// with 'http://yoursite.com/' as opposed to '/site/www/bamboo/' or a similar path
+$config['logo_base_url'] = FALSE;
+
+// setting 'download_filename_prefix' will allow you to customize the filename used in
+// utitlies > Download backup
+$config['download_filename_prefix'] = 'bambooinvoice';
+
+// setting 'show_client_notes' to TRUE will make any client notes written on ALL invoices print
+// into the PDF versions of those invoices also. This includes invoices that were first
+// printed without those notes visible; on a reprint they will be included.
+$config['show_client_notes'] = FALSE;
+
+// this controls how many characters (approximately) of the first item on the invoice appear
+// in the invoices summary table. Set it to 0 if you do not want this to appear at all.
+$config['short_description_characters'] = 50;
+
+// this controls how dates display throughout BambooInvoice
+// 'day_month_year' gives 1 January 2009
+// 'default' gives January 1, 2009
+$config['invoice_date_format'] = 'default';
+
+/* End of file config.php */
+/* Location: ./system/application/config/config.php */
41 bamboo_system_files/application/config/constants.php
@@ -0,0 +1,41 @@
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+
+/*
+|--------------------------------------------------------------------------
+| File and Directory Modes
+|--------------------------------------------------------------------------
+|
+| These prefs are used when checking and setting modes when working
+| with the file system. The defaults are fine on servers with proper
+| security, but you may wish (or even need) to change the values in
+| certain environments (Apache running a separate process for each
+| user, PHP under CGI with Apache suEXEC, etc.). Octal values should
+| always be used to set the mode correctly.
+|
+*/
+define('FILE_READ_MODE', 0644);
+define('FILE_WRITE_MODE', 0666);
+define('DIR_READ_MODE', 0755);
+define('DIR_WRITE_MODE', 0777);
+
+/*
+|--------------------------------------------------------------------------
+| File Stream Modes
+|--------------------------------------------------------------------------
+|
+| These modes are used when working with fopen()/popen()
+|
+*/
+
+define('FOPEN_READ', 'rb');
+define('FOPEN_READ_WRITE', 'r+b');
+define('FOPEN_WRITE_CREATE_DESTRUCTIVE', 'wb'); // truncates existing file data, use with care
+define('FOPEN_READ_WRITE_CREATE_DESTRUCTIVE', 'w+b'); // truncates existing file data, use with care
+define('FOPEN_WRITE_CREATE', 'ab');
+define('FOPEN_READ_WRITE_CREATE', 'a+b');
+define('FOPEN_WRITE_CREATE_STRICT', 'xb');
+define('FOPEN_READ_WRITE_CREATE_STRICT', 'x+b');
+
+
+/* End of file constants.php */
+/* Location: ./system/application/config/constants.php */
50 bamboo_system_files/application/config/database.php
@@ -0,0 +1,50 @@
+<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------
+| DATABASE CONNECTIVITY SETTINGS
+| -------------------------------------------------------------------
+| This file will contain the settings needed to access your database.
+|
+| For complete instructions please consult the 'Database Connection'
+| page of the User Guide.
+|
+| -------------------------------------------------------------------
+| EXPLANATION OF VARIABLES
+| -------------------------------------------------------------------
+|
+| ['hostname'] The hostname of your database server.
+| ['username'] The username used to connect to the database
+| ['password'] The password used to connect to the database
+| ['database'] The name of the database you want to connect to
+| ['dbdriver'] The database type. ie: mysql. Currently supported:
+ mysql, mysqli, postgre, odbc, mssql
+| ['dbprefix'] You can add an optional prefix, which will be added
+| to the table name when using the Active Record class
+| ['pconnect'] TRUE/FALSE - Whether to use a persistent connection
+| ['db_debug'] TRUE/FALSE - Whether database errors should be displayed.
+| ['active_r'] TRUE/FALSE - Whether to load the active record class
+| ['cache_on'] TRUE/FALSE - Enables/disables query caching
+| ['cachedir'] The path to the folder where cache files should be stored
+|
+| The $active_group variable lets you choose which connection group to
+| make active. By default there is only one group (the 'default' group).
+|
+*/
+
+$active_group = 'default';
+
+$db['default']['hostname'] = 'localhost';
+$db['default']['username'] = 'root';
+$db['default']['password'] = 'root';
+$db['default']['database'] = 'bambooinvoice';
+$db['default']['dbdriver'] = 'mysql';
+$db['default']['dbprefix'] = 'bamboo_';
+$db['default']['active_r'] = TRUE;
+$db['default']['pconnect'] = FALSE;
+$db['default']['db_debug'] = TRUE;
+$db['default']['cache_on'] = FALSE;
+$db['default']['cachedir'] = '';
+$db['default']['char_set'] = 'utf8';
+$db['default']['dbcollat'] = 'utf8_general_ci';
+
+?>
15 bamboo_system_files/application/config/doctypes.php
@@ -0,0 +1,15 @@
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+
+$_doctypes = array(
+ 'xhtml11' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">',
+ 'xhtml1-strict' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
+ 'xhtml1-trans' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
+ 'xhtml1-frame' => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">',
+ 'html5' => '<!DOCTYPE html>',
+ 'html4-strict' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">',
+ 'html4-trans' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">',
+ 'html4-frame' => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'
+ );
+
+/* End of file doctypes.php */
+/* Location: application/config/doctypes.php */
22 bamboo_system_files/application/config/email.php
@@ -0,0 +1,22 @@
+<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
+
+/*
+* If you are using BambooInvoice in a professionally hosted environment, you probably don't need
+* to do anything to this file. If you are running it from your home server, or have setup
+* BambooInvoice on a pre-configured server setup, such as WinLAMP or XXAMP, then you'll likely
+* need to uncomment the configuration information below.
+*
+* Check with your ISP for this information. It is usually given in the welcome information
+* when you sign up for the service, or can likely be retrieved from your email package of choice.
+*/
+
+/*
+$config['protocol'] = 'smtp';
+$config['smtp_host'] = 'smtp1.mailserver.ca';
+$config['smtp_user'] = 'username';
+$config['smtp_pass'] = 'password';
+$config['smtp_port'] = '25';
+*/
+
+/* End of file email.php */
+/* Location: ./system/application/config/email.php */
25 bamboo_system_files/application/config/hooks.php
@@ -0,0 +1,25 @@
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------------
+| Hooks
+| -------------------------------------------------------------------------
+| This file lets you define "hooks" to extend CI without hacking the core
+| files. Please see the user guide for info:
+|
+| http://codeigniter.com/user_guide/general/hooks.html
+|
+*/
+
+/*
+
+$hook['post_controller_constructor'] = array(
+ 'class' => 'Site_sentry',
+ 'function' => 'is_logged_in',
+ 'filename' => 'Site_sentry.php',
+ 'filepath' => 'libraries'
+ );
+
+*/
+
+/* End of file hooks.php */
+/* Location: ./system/application/config/hooks.php */
10 bamboo_system_files/application/config/index.html
@@ -0,0 +1,10 @@
+<html>
+<head>
+ <title>403 Forbidden</title>
+</head>
+<body>
+
+<p>Directory access is forbidden.</p>
+
+</body>
+</html>
104 bamboo_system_files/application/config/mimes.php
@@ -0,0 +1,104 @@
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------
+| MIME TYPES
+| -------------------------------------------------------------------
+| This file contains an array of mime types. It is used by the
+| Upload class to help identify allowed file types.
+|
+*/
+
+$mimes = array( 'hqx' => 'application/mac-binhex40',
+ 'cpt' => 'application/mac-compactpro',
+ 'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel'),
+ 'bin' => 'application/macbinary',
+ 'dms' => 'application/octet-stream',
+ 'lha' => 'application/octet-stream',
+ 'lzh' => 'application/octet-stream',
+ 'exe' => 'application/octet-stream',
+ 'class' => 'application/octet-stream',
+ 'psd' => 'application/x-photoshop',
+ 'so' => 'application/octet-stream',
+ 'sea' => 'application/octet-stream',
+ 'dll' => 'application/octet-stream',
+ 'oda' => 'application/oda',
+ 'pdf' => array('application/pdf', 'application/x-download'),
+ 'ai' => 'application/postscript',
+ 'eps' => 'application/postscript',
+ 'ps' => 'application/postscript',
+ 'smi' => 'application/smil',
+ 'smil' => 'application/smil',
+ 'mif' => 'application/vnd.mif',
+ 'xls' => array('application/excel', 'application/vnd.ms-excel'),
+ 'ppt' => array('application/powerpoint', 'application/vnd.ms-powerpoint'),
+ 'wbxml' => 'application/wbxml',
+ 'wmlc' => 'application/wmlc',
+ 'dcr' => 'application/x-director',
+ 'dir' => 'application/x-director',
+ 'dxr' => 'application/x-director',
+ 'dvi' => 'application/x-dvi',
+ 'gtar' => 'application/x-gtar',
+ 'gz' => 'application/x-gzip',
+ 'php' => 'application/x-httpd-php',
+ 'php4' => 'application/x-httpd-php',
+ 'php3' => 'application/x-httpd-php',
+ 'phtml' => 'application/x-httpd-php',
+ 'phps' => 'application/x-httpd-php-source',
+ 'js' => 'application/x-javascript',
+ 'swf' => 'application/x-shockwave-flash',
+ 'sit' => 'application/x-stuffit',
+ 'tar' => 'application/x-tar',
+ 'tgz' => 'application/x-tar',
+ 'xhtml' => 'application/xhtml+xml',
+ 'xht' => 'application/xhtml+xml',
+ 'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
+ 'mid' => 'audio/midi',
+ 'midi' => 'audio/midi',
+ 'mpga' => 'audio/mpeg',
+ 'mp2' => 'audio/mpeg',
+ 'mp3' => array('audio/mpeg', 'audio/mpg'),
+ 'aif' => 'audio/x-aiff',
+ 'aiff' => 'audio/x-aiff',
+ 'aifc' => 'audio/x-aiff',
+ 'ram' => 'audio/x-pn-realaudio',
+ 'rm' => 'audio/x-pn-realaudio',
+ 'rpm' => 'audio/x-pn-realaudio-plugin',
+ 'ra' => 'audio/x-realaudio',
+ 'rv' => 'video/vnd.rn-realvideo',
+ 'wav' => 'audio/x-wav',
+ 'bmp' => 'image/bmp',
+ 'gif' => 'image/gif',
+ 'jpeg' => array('image/jpeg', 'image/pjpeg'),
+ 'jpg' => array('image/jpeg', 'image/pjpeg'),
+ 'jpe' => array('image/jpeg', 'image/pjpeg'),
+ 'png' => array('image/png', 'image/x-png'),
+ 'tiff' => 'image/tiff',
+ 'tif' => 'image/tiff',
+ 'css' => 'text/css',
+ 'html' => 'text/html',
+ 'htm' => 'text/html',
+ 'shtml' => 'text/html',
+ 'txt' => 'text/plain',
+ 'text' => 'text/plain',
+ 'log' => array('text/plain', 'text/x-log'),
+ 'rtx' => 'text/richtext',
+ 'rtf' => 'text/rtf',
+ 'xml' => 'text/xml',
+ 'xsl' => 'text/xml',
+ 'mpeg' => 'video/mpeg',
+ 'mpg' => 'video/mpeg',
+ 'mpe' => 'video/mpeg',
+ 'qt' => 'video/quicktime',
+ 'mov' => 'video/quicktime',
+ 'avi' => 'video/x-msvideo',
+ 'movie' => 'video/x-sgi-movie',
+ 'doc' => 'application/msword',
+ 'word' => array('application/msword', 'application/octet-stream'),
+ 'xl' => 'application/excel',
+ 'eml' => 'message/rfc822'
+ );
+
+
+
+/* End of file mimes.php */
+/* Location: ./system/application/config/mimes.php */
12 bamboo_system_files/application/config/pagination.php
@@ -0,0 +1,12 @@
+<?php
+$config['per_page'] = 20;
+$config['first_link'] = '';
+$config['last_link'] = '';
+$config['next_link'] = 'next &gt;';
+$config['prev_link'] = 'prev &lt;';
+$config['full_tag_open'] = '<p id="pagination">';
+$config['full_tag_close'] = '</p>';
+$config['cur_tag_open'] = ' <strong>';
+$config['cur_tag_close'] = '</strong>';
+$config['num_links'] = 2;
+?>
47 bamboo_system_files/application/config/routes.php
@@ -0,0 +1,47 @@
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------------
+| URI ROUTING
+| -------------------------------------------------------------------------
+| This file lets you re-map URI requests to specific controller functions.
+|
+| Typically there is a one-to-one relationship between a URL string
+| and its corresponding controller class/method. The segments in a
+| URL normally follow this pattern:
+|
+| www.your-site.com/class/method/id/
+|
+| In some instances, however, you may want to remap this relationship
+| so that a different class/function is called than the one
+| corresponding to the URL.
+|
+| Please see the user guide for complete details:
+|
+| http://codeigniter.com/user_guide/general/routing.html
+|
+| -------------------------------------------------------------------------
+| RESERVED ROUTES
+| -------------------------------------------------------------------------
+|
+| There are two reserved routes:
+|
+| $route['default_controller'] = 'welcome';
+|
+| This route indicates which controller class should be loaded if the
+| URI contains no data. In the above example, the "welcome" class
+| would be loaded.
+|
+| $route['scaffolding_trigger'] = 'scaffolding';
+|
+| This route lets you set a "secret" word that will trigger the
+| scaffolding feature for added security. Note: Scaffolding must be
+| enabled in the controller in which you intend to use it. The reserved
+| routes must come before any wildcard or regular expression routes.
+|
+*/
+
+$route['default_controller'] = "front";
+$route['scaffolding_trigger'] = "";
+
+/* End of file routes.php */
+/* Location: ./system/application/config/routes.php */
66 bamboo_system_files/application/config/smileys.php
@@ -0,0 +1,66 @@
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------
+| SMILEYS
+| -------------------------------------------------------------------
+| This file contains an array of smileys for use with the emoticon helper.
+| Individual images can be used to replace multiple simileys. For example:
+| :-) and :) use the same image replacement.
+|
+| Please see user guide for more info:
+| http://codeigniter.com/user_guide/helpers/smiley_helper.html
+|
+*/
+
+$smileys = array(
+
+// smiley image name width height alt
+
+ ':-)' => array('grin.gif', '19', '19', 'grin'),
+ ':lol:' => array('lol.gif', '19', '19', 'LOL'),
+ ':cheese:' => array('cheese.gif', '19', '19', 'cheese'),
+ ':)' => array('smile.gif', '19', '19', 'smile'),
+ ';-)' => array('wink.gif', '19', '19', 'wink'),
+ ';)' => array('wink.gif', '19', '19', 'wink'),
+ ':smirk:' => array('smirk.gif', '19', '19', 'smirk'),
+ ':roll:' => array('rolleyes.gif', '19', '19', 'rolleyes'),
+ ':-S' => array('confused.gif', '19', '19', 'confused'),
+ ':wow:' => array('surprise.gif', '19', '19', 'surprised'),
+ ':bug:' => array('bigsurprise.gif', '19', '19', 'big surprise'),
+ ':-P' => array('tongue_laugh.gif', '19', '19', 'tongue laugh'),
+ '%-P' => array('tongue_rolleye.gif', '19', '19', 'tongue rolleye'),
+ ';-P' => array('tongue_wink.gif', '19', '19', 'tongue wink'),
+ ':P' => array('rasberry.gif', '19', '19', 'rasberry'),
+ ':blank:' => array('blank.gif', '19', '19', 'blank stare'),
+ ':long:' => array('longface.gif', '19', '19', 'long face'),
+ ':ohh:' => array('ohh.gif', '19', '19', 'ohh'),
+ ':grrr:' => array('grrr.gif', '19', '19', 'grrr'),
+ ':gulp:' => array('gulp.gif', '19', '19', 'gulp'),
+ '8-/' => array('ohoh.gif', '19', '19', 'oh oh'),
+ ':down:' => array('downer.gif', '19', '19', 'downer'),
+ ':red:' => array('embarrassed.gif', '19', '19', 'red face'),
+ ':sick:' => array('sick.gif', '19', '19', 'sick'),
+ ':shut:' => array('shuteye.gif', '19', '19', 'shut eye'),
+ ':-/' => array('hmm.gif', '19', '19', 'hmmm'),
+ '>:(' => array('mad.gif', '19', '19', 'mad'),
+ ':mad:' => array('mad.gif', '19', '19', 'mad'),
+ '>:-(' => array('angry.gif', '19', '19', 'angry'),
+ ':angry:' => array('angry.gif', '19', '19', 'angry'),
+ ':zip:' => array('zip.gif', '19', '19', 'zipper'),
+ ':kiss:' => array('kiss.gif', '19', '19', 'kiss'),
+ ':ahhh:' => array('shock.gif', '19', '19', 'shock'),
+ ':coolsmile:' => array('shade_smile.gif', '19', '19', 'cool smile'),
+ ':coolsmirk:' => array('shade_smirk.gif', '19', '19', 'cool smirk'),
+ ':coolgrin:' => array('shade_grin.gif', '19', '19', 'cool grin'),
+ ':coolhmm:' => array('shade_hmm.gif', '19', '19', 'cool hmm'),
+ ':coolmad:' => array('shade_mad.gif', '19', '19', 'cool mad'),
+ ':coolcheese:' => array('shade_cheese.gif', '19', '19', 'cool cheese'),
+ ':vampire:' => array('vampire.gif', '19', '19', 'vampire'),
+ ':snake:' => array('snake.gif', '19', '19', 'snake'),
+ ':exclaim:' => array('exclaim.gif', '19', '19', 'excaim'),
+ ':question:' => array('question.gif', '19', '19', 'question') // no comma after last item
+
+ );
+
+/* End of file smileys.php */
+/* Location: ./system/application/config/smileys.php */
105 bamboo_system_files/application/config/user_agents.php
@@ -0,0 +1,105 @@
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------
+| USER AGENT TYPES
+| -------------------------------------------------------------------
+| This file contains four arrays of user agent data. It is used by the
+| User Agent Class to help identify browser, platform, robot, and
+| mobile device data. The array keys are used to identify the device
+| and the array values are used to set the actual name of the item.
+|
+*/
+
+$platforms = array (
+ 'windows nt 6.0' => 'Windows Longhorn',
+ 'windows nt 5.2' => 'Windows 2003',
+ 'windows nt 5.0' => 'Windows 2000',
+ 'windows nt 5.1' => 'Windows XP',
+ 'windows nt 4.0' => 'Windows NT 4.0',
+ 'winnt4.0' => 'Windows NT 4.0',
+ 'winnt 4.0' => 'Windows NT',
+ 'winnt' => 'Windows NT',
+ 'windows 98' => 'Windows 98',
+ 'win98' => 'Windows 98',
+ 'windows 95' => 'Windows 95',
+ 'win95' => 'Windows 95',
+ 'windows' => 'Unknown Windows OS',
+ 'os x' => 'Mac OS X',
+ 'ppc mac' => 'Power PC Mac',
+ 'freebsd' => 'FreeBSD',
+ 'ppc' => 'Macintosh',
+ 'linux' => 'Linux',
+ 'debian' => 'Debian',
+ 'sunos' => 'Sun Solaris',
+ 'beos' => 'BeOS',
+ 'apachebench' => 'ApacheBench',
+ 'aix' => 'AIX',
+ 'irix' => 'Irix',
+ 'osf' => 'DEC OSF',
+ 'hp-ux' => 'HP-UX',
+ 'netbsd' => 'NetBSD',
+ 'bsdi' => 'BSDi',
+ 'openbsd' => 'OpenBSD',
+ 'gnu' => 'GNU/Linux',
+ 'unix' => 'Unknown Unix OS'
+ );
+
+
+// The order of this array should NOT be changed. Many browsers return
+// multiple browser types so we want to identify the sub-type first.
+$browsers = array(
+ 'Opera' => 'Opera',
+ 'MSIE' => 'Internet Explorer',
+ 'Internet Explorer' => 'Internet Explorer',
+ 'Shiira' => 'Shiira',
+ 'Firefox' => 'Firefox',
+ 'Chimera' => 'Chimera',
+ 'Phoenix' => 'Phoenix',
+ 'Firebird' => 'Firebird',
+ 'Camino' => 'Camino',
+ 'Netscape' => 'Netscape',
+ 'OmniWeb' => 'OmniWeb',
+ 'Safari' => 'Safari',
+ 'Mozilla' => 'Mozilla',
+ 'Konqueror' => 'Konqueror',
+ 'icab' => 'iCab',
+ 'Lynx' => 'Lynx',
+ 'Links' => 'Links',
+ 'hotjava' => 'HotJava',
+ 'amaya' => 'Amaya',
+ 'IBrowse' => 'IBrowse'
+ );
+
+$mobiles = array(
+ 'mobileexplorer' => 'Mobile Explorer',
+ 'openwave' => 'Open Wave',
+ 'opera mini' => 'Opera Mini',
+ 'operamini' => 'Opera Mini',
+ 'elaine' => 'Palm',
+ 'palmsource' => 'Palm',
+ 'digital paths' => 'Palm',
+ 'avantgo' => 'Avantgo',
+ 'xiino' => 'Xiino',
+ 'palmscape' => 'Palmscape',
+ 'nokia' => 'Nokia',
+ 'ericsson' => 'Ericsson',
+ 'blackberry' => 'BlackBerry',
+ 'motorola' => 'Motorola'
+ );
+
+// There are hundreds of bots but these are the most common.
+$robots = array(
+ 'googlebot' => 'Googlebot',
+ 'msnbot' => 'MSNBot',
+ 'slurp' => 'Inktomi Slurp',
+ 'yahoo' => 'Yahoo',
+ 'askjeeves' => 'AskJeeves',
+ 'fastcrawler' => 'FastCrawler',
+ 'infoseek' => 'InfoSeek Robot 1.0',
+ 'lycos' => 'Lycos'
+ );
+
+
+
+/* End of file user_agents.php */
+/* Location: ./system/application/config/user_agents.php */
149 bamboo_system_files/application/controllers/accounts.php
@@ -0,0 +1,149 @@
+<?php
+
+class Accounts extends MY_Controller {
+
+ function Accounts()
+ {
+ parent::MY_Controller();
+ $this->load->model('clientcontacts_model');
+ }
+
+ // --------------------------------------------------------------------
+
+ function index($message = '')
+ {
+ $this->load->library('form_validation');
+
+ $data['accounts'] = $this->clientcontacts_model->get_admin_contacts();
+
+ $data['page_title'] = $this->lang->line('menu_accounts');
+ $data['message'] = $message;
+
+ $this->form_validation->set_rules('username', 'lang:login_username', 'required');
+ $this->form_validation->set_rules('first_name', 'lang:login_password', 'required');
+ $this->form_validation->set_rules('last_name', 'lang:login_password', 'required');
+ $this->form_validation->set_rules('login_password', 'lang:login_password', 'required');
+ $this->form_validation->set_rules('login_password_confirm', 'lang:login_password_confirm', 'required');
+
+ $client_contact_validation = array(
+ array(
+ 'field' => 'username',
+ 'label' => 'lang:login_username',
+ 'rules' => 'required|max_length[127]|valid_email'
+ ),
+ array(
+ 'field' => 'first_name',
+ 'label' => 'lang:clients_first_name',
+ 'rules' => 'trim|htmlspecialchars|required|max_length[25]'
+ ),
+ array(
+ 'field' => 'last_name',
+ 'label' => 'lang:clients_last_name',
+ 'rules' => 'trim|htmlspecialchars|required|max_length[25]'
+ ),
+ array(
+ 'field' => 'login_password',
+ 'label' => 'lang:login_password',
+ 'rules' => 'required|max_length[25]'
+ ),
+ array(
+ 'field' => 'login_password_confirm',
+ 'label' => 'lang:login_password_confirm',
+ 'rules' => 'matches[login_password]'
+ ),
+ );
+
+ $this->form_validation->set_rules($client_contact_validation);
+
+ if ($this->form_validation->run() == FALSE)
+ {
+ $this->load->view('accounts/index', $data);
+ }
+ else
+ {
+ $client_id = $this->clientcontacts_model->addClientContact(
+ 0,
+ $this->input->post('first_name'),
+ $this->input->post('last_name'),
+ $this->input->post('username'),
+ $this->input->post('phone'),
+ $this->input->post('title'),
+ 1 // turn on login access
+ );
+
+ // normally clients don't get passwords, so we need to manually set it now
+ $this->clientcontacts_model->password_change($client_id, $this->input->post('login_password'));
+
+ redirect('accounts');
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ function delete()
+ {
+ $id = ($this->input->get_post('id')) ? (int) $this->input->get_post('id') : $this->uri->segment(3);
+
+ if ($this->clientcontacts_model->deleteClientContact($id))
+ {
+ $this->index($this->lang->line('accounts_admin_account_delete_success'));
+ }
+ else
+ {
+ $this->index($this->lang->line('accounts_admin_account_delete_fail'));
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ function _validation()
+ {
+ $rules['clientName'] = 'trim|required|max_length[75]|htmlspecialchars';
+ $rules['website'] = 'trim|htmlspecialchars|max_length[150]';
+ $rules['address1'] = 'trim|htmlspecialchars|max_length[100]';
+ $rules['address2'] = 'trim|htmlspecialchars|max_length[100]';
+ $rules['city'] = 'trim|htmlspecialchars|max_length[50]';
+ $rules['province'] = 'trim|htmlspecialchars|max_length[25]';
+ $rules['country'] = 'trim|htmlspecialchars|max_length[25]';
+ $rules['postal_code'] = 'trim|htmlspecialchars|max_length[10]';
+ $rules['tax_status'] = 'trim|htmlspecialchars|exact_length[1]|numeric|required';
+ $this->validation->set_rules($rules);
+
+ $fields['clientName'] = $this->lang->line('clients_name');
+ $fields['website'] = $this->lang->line('clients_website');
+ $fields['address1'] = $this->lang->line('clients_address1');
+ $fields['address2'] = $this->lang->line('clients_address2');
+ $fields['city'] = $this->lang->line('clients_cityt');
+ $fields['province'] = $this->lang->line('clients_province');
+ $fields['country'] = $this->lang->line('clients_country');
+ $fields['postal_code'] = $this->lang->line('clients_postal');
+ $fields['tax_status'] = $this->lang->line('invoice_tax_status');
+ $this->validation->set_fields($fields);
+
+ $this->validation->set_error_delimiters('<span class="error">', '</span>');
+ }
+
+ // --------------------------------------------------------------------
+
+ function _validation_client_contact()
+ {
+ $rules['client_id'] = 'trim|required|htmlspecialchars|numeric';
+ $rules['first_name'] = 'trim|required|htmlspecialchars|max_length[25]';
+ $rules['last_name'] = 'trim|required|htmlspecialchars|max_length[25]';
+ $rules['email'] = 'trim|required|htmlspecialchars|max_length[127]|valid_email';
+ $rules['phone'] = 'trim|htmlspecialchars|max_length[20]';
+ $rules['title'] = 'trim|htmlspecialchars';
+ $this->validation->set_rules($rules);
+
+ $fields['client_id'] = $this->lang->line('clients_id');
+ $fields['first_name'] = $this->lang->line('clients_first_name');
+ $fields['last_name'] = $this->lang->line('clients_last_name');
+ $fields['email'] = $this->lang->line('clients_email');
+ $fields['phone'] = $this->lang->line('clients_phone');
+ $fields['title'] = $this->lang->line('clients_title');
+ $this->validation->set_fields($fields);
+
+ $this->validation->set_error_delimiters('<span class="error">', '</span>');
+ }
+}
+?>
17 bamboo_system_files/application/controllers/changelog.php
@@ -0,0 +1,17 @@
+<?php
+
+class Changelog extends MY_Controller {
+
+ function Changelog()
+ {
+ parent::MY_Controller();
+ }
+
+ function index()
+ {
+ $data['page_title'] = $this->lang->line('menu_changelog');
+ $this->load->view('changelog/index', $data);
+ }
+
+}
+?>
151 bamboo_system_files/application/controllers/clientcontacts.php
@@ -0,0 +1,151 @@
+<?php
+
+class Clientcontacts extends MY_Controller {
+
+ function Clientcontacts()
+ {
+ parent::MY_Controller();
+ $this->load->library('validation');
+ $this->load->helper('ajax');
+ $this->load->model('clientcontacts_model');
+ }
+
+ // --------------------------------------------------------------------
+
+ function index()
+ {
+ /**
+ * This controller is only used from the clients controller, and so is called directly.
+ * If anyone access it directly, let's just move them over to clients.
+ */
+ redirect('clients/');
+ }
+
+ // --------------------------------------------------------------------
+
+ function add()
+ {
+ $this->_validation_client_contact(); // validation info for id, first_name, last_name, email, phone
+
+ if ($this->validation->run() == FALSE)
+ {
+ if (isAjax())
+ {
+ echo $this->lang->line('clients_new_contact_fail');
+ }
+ else
+ {
+ $cid = (int) $this->input->post('client_id');
+ $data['client_id'] = ($cid) ? $cid : $this->uri->segment(3);
+ $data['page_title'] = $this->lang->line('clients_add_contact');
+ $this->load->view('clientcontacts/add', $data);
+ }
+ }
+ else
+ {
+ $client_id = $this->clientcontacts_model->addClientContact(
+ $this->input->post('client_id'),
+ $this->input->post('first_name'),
+ $this->input->post('last_name'),
+ $this->input->post('email'),
+ $this->input->post('phone'),
+ $this->input->post('title')
+ );
+
+ if (isAjax())
+ {
+ echo $client_id;
+ }
+ else
+ {
+ $this->session->set_flashdata('clientContact', (int) $this->input->post('client_id'));
+ redirect('clients/');
+ }
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ function edit()
+ {
+ $rules['id'] = 'trim|required|numeric';
+ $fields['id'] = 'id';
+
+ $this->_validation_client_contact(); // validation info for first_name, last_name, email, phone
+
+ $data['id'] = (int) $this->uri->segment(3, $this->input->post('id'));
+
+ if ($this->validation->run() == FALSE)
+ {
+ $data['clientContactData'] = $this->clientcontacts_model->getContactInfo($data['id']);
+ $data['page_title'] = $this->lang->line('clients_edit_contact');
+ $this->load->view('clientcontacts/edit', $data);
+ }
+ else
+ {
+ $this->clientcontacts_model->editClientContact(
+ $this->input->post('id'),
+ $this->input->post('client_id'),
+ $this->input->post('first_name'),
+ $this->input->post('last_name'),
+ $this->input->post('email'),
+ $this->input->post('phone'),
+ $this->input->post('title')
+ );
+
+ $this->session->set_flashdata('message', $this->lang->line('clients_edited_contact_info'));
+ $this->session->set_flashdata('clientEdit', $this->input->post('client_id'));
+ redirect('clients/');
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ function delete()
+ {
+ $id = ($this->input->post('id')) ? (int) $this->input->post('id') : $this->uri->segment(3);
+
+ if ($this->clientcontacts_model->deleteClientContact($id))
+ {
+ if (isAjax())
+ {
+ return $id;
+ }
+ else
+ {
+ $this->session->set_flashdata('clientContact', $id);
+ redirect('clients/');
+ }
+ }
+ else
+ {
+ $this->session->set_flashdata('message', $this->lang->line('clients_contact_delete_fail'));
+ redirect('clients/');
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ function _validation_client_contact()
+ {
+ $rules['client_id'] = 'trim|required|numeric';
+ $rules['first_name'] = 'trim|required|max_length[25]';
+ $rules['last_name'] = 'trim|required|max_length[25]';
+ $rules['email'] = 'trim|required|max_length[127]|valid_email';
+ $rules['phone'] = 'trim|max_length[20]';
+ $rules['title'] = 'trim';
+ $this->validation->set_rules($rules);
+
+ $fields['client_id'] = $this->lang->line('clients_id');
+ $fields['first_name'] = $this->lang->line('clients_first_name');
+ $fields['last_name'] = $this->lang->line('clients_last_name');
+ $fields['email'] = $this->lang->line('clients_email');
+ $fields['phone'] = $this->lang->line('clients_phone');
+ $fields['title'] = $this->lang->line('clients_title');
+ $this->validation->set_fields($fields);
+
+ $this->validation->set_error_delimiters('<span class="error">', '</span>');
+ }
+
+}
+?>
266 bamboo_system_files/application/controllers/clients.php
@@ -0,0 +1,266 @@
+<?php
+
+class Clients extends MY_Controller {
+
+ function Clients()
+ {
+ parent::MY_Controller();
+ $this->load->helper('date');
+ $this->load->library('validation');
+ $this->load->model('clients_model');
+ }
+
+ // --------------------------------------------------------------------
+
+ function index()
+ {
+ $data['clientList'] = $this->clients_model->getAllClients(); // activate the option
+ $data['extraHeadContent'] = "<link type=\"text/css\" rel=\"stylesheet\" href=\"" . base_url()."css/clients.css\" />\n";
+ $data['extraHeadContent'] .= "<script type=\"text/javascript\" src=\"" . base_url()."js/newinvoice.js\"></script>\n";
+ $data['extraHeadContent'] .= "<script type=\"text/javascript\" src=\"" . base_url()."js/clients.js\"></script>\n";
+
+ if ($this->session->flashdata('clientEdit'))
+ {
+ $data['message'] = $this->lang->line('clients_edited');
+ $data['extraHeadContent'] .= "<script type=\"text/javascript\">\nfunction openCurrent() {\n\tEffect.toggle ('clientInfo".$this->session->flashdata('clientEdit')."', 'Blind', {duration:'0.4'});\n}\naddEvent (window, 'load', openCurrent);\n</script>";
+ }
+ else
+ {
+ $data['message'] = $this->session->flashdata('message');
+ }
+
+ $data['total_rows'] = $this->clients_model->countAllClients();
+
+ // Run the limited version of the query
+ $data['all_clients'] = $this->clients_model->getAllClients();
+
+ $this->_validation_client_contact(); // validation info for id, first_name, last_name, email, phone
+
+ $data['page_title'] = $this->lang->line('menu_clients');
+ $this->load->view('clients/index', $data);
+ }
+
+ // --------------------------------------------------------------------
+
+ function newclient()
+ {
+ // if the client already exists, then the post var client_id will come through
+ if ($this->input->post('client_id'))
+ {
+ $this->session->set_flashdata('clientId', $this->input->post('client_id'));
+ redirect('invoices/newinvoice/');
+ }
+ elseif ($this->input->post('newClient'))
+ {
+ $this->session->set_flashdata('clientName', $this->input->post('newClient'));
+ }
+
+ $data['clientName'] = $this->input->post('newClient'); // store the name provided in a var
+
+ /**
+ * There is a bug on this page where it is passing validation when the user first loads
+ * it. As a quick workaround, I'm detecting if they came from the new invoice form with
+ * the hidden form variable "newInvoice"
+ */
+ $newinv = $this->input->post('newInvoice');
+ /**
+ * ugh... sorry
+ */
+
+ $this->_validation(); // Load the validation rules and fields
+
+ if ($this->validation->run() == FALSE || $newinv != '')
+ {
+ $data['page_title'] = $this->lang->line('clients_create_new_client');
+ $this->load->view('clients/newclient', $data);
+ }
+ else
+ {
+ // capture information for inserting a new client
+ $clientInfo = array(
+ 'name' => $this->input->post('clientName'),
+ 'address1' => $this->input->post('address1'),
+ 'address2' => $this->input->post('address2'),
+ 'city' => $this->input->post('city'),
+ 'province' => $this->input->post('province'),
+ 'country' => $this->input->post('country'),
+ 'postal_code' => $this->input->post('postal_code'),
+ 'website' => $this->input->post('website'),
+ 'tax_status' => $this->input->post('tax_status'),
+ 'tax_code' => $this->input->post('tax_code')
+ );
+
+ // make insertion, grab insert_id
+ if ($this->clients_model->addClient($clientInfo))
+ {
+ $this->session->set_flashdata('clientId', $this->db->insert_id());
+ $this->session->set_flashdata('clientContact', TRUE);
+ }
+ else
+ {
+ show_error($this->lang->line('error_problem_inserting'));
+ }
+
+ if ($this->session->flashdata('clientName'))
+ {
+ redirect('invoices/newinvoice/');
+ }
+ else
+ {
+ // return to clients page
+ $this->session->set_flashdata('message', $this->lang->line('clients_created'));
+ redirect('clients/');
+ }
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ function notes($client_id)
+ {
+ $notes = $this->input->post('client_notes');
+ $notes_submit = $this->input->post('notes_submit') ? TRUE : FALSE;
+
+ $data['row'] = $this->clients_model->get_client_info($client_id);
+
+ // new notes? Update, move them on, and tell them its good
+ if ($notes_submit)
+ {
+ $this->clients_model->updateClient($client_id, array('client_notes'=>$notes));
+
+ $this->session->set_flashdata('clientEdit', $client_id);
+ $this->session->set_flashdata('message', $this->lang->line('clients_edited'));
+ redirect('clients/');
+ }
+ else
+ {
+ $data['page_title'] = $this->lang->line('clients_notes').' : '.$data['row']->name;
+ $this->load->view('clients/notes', $data);
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ function edit()
+ {
+ $this->_validation(); // Load the validation rules and fields
+
+ if ($this->validation->run() == FALSE)
+ {
+ $cid = (int) $this->input->post('id');
+ $data['id'] = ($cid) ? $cid : $this->uri->segment(3);
+
+ $data['row'] = $this->clients_model->get_client_info($data['id']);
+
+ $data['page_title'] = $this->lang->line('clients_edit_client');
+ $this->load->view('clients/edit', $data);
+ }
+ else
+ {
+ $clientInfo = array(
+ 'id' => (int) $this->input->post('id'),
+ 'name' => $this->input->post('clientName'),
+ 'address1' => $this->input->post('address1'),
+ 'address2' => $this->input->post('address2'),
+ 'city' => $this->input->post('city'),
+ 'province' => $this->input->post('province'),
+ 'country' => $this->input->post('country'),
+ 'postal_code' => $this->input->post('postal_code'),
+ 'website' => $this->input->post('website'),
+ 'tax_status' => $this->input->post('tax_status'),
+ 'tax_code' => $this->input->post('tax_code')
+ );
+
+ $this->clients_model->updateClient($clientInfo['id'], $clientInfo);
+ $this->session->set_flashdata('clientEdit', $clientInfo['id']);
+ redirect('clients/');
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ function delete($client_id)
+ {
+ // get number of invoices for when we ask if they are sure they want to remove this client
+ $data['numInvoices'] = $this->clients_model->countClientInvoices($client_id);
+
+ $this->session->set_flashdata('deleteClient', $client_id);
+ $data['deleteClient'] = $client_id;
+
+ $data['page_title'] = $this->lang->line('clients_delete_client');
+ $this->load->view('clients/delete', $data);
+ }
+
+ // --------------------------------------------------------------------
+
+ function delete_confirmed()
+ {
+ $client_id = (int) $this->session->flashdata('deleteClient');
+
+ if ($this->clients_model->deleteClient($client_id))
+ {
+ $this->session->set_flashdata('message', $this->lang->line('clients_deleted'));
+ redirect('clients/');
+ }
+ else
+ {
+ $this->session->set_flashdata('message', $this->lang->line('clients_deleted_error'));
+ redirect('clients/');
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ function _validation()
+ {
+ $rules['clientName'] = 'trim|required|max_length[75]|htmlspecialchars';
+ $rules['website'] = 'trim|htmlspecialchars|max_length[150]';
+ $rules['address1'] = 'trim|htmlspecialchars|max_length[100]';
+ $rules['address2'] = 'trim|htmlspecialchars|max_length[100]';
+ $rules['city'] = 'trim|htmlspecialchars|max_length[50]';
+ $rules['province'] = 'trim|htmlspecialchars|max_length[25]';
+ $rules['country'] = 'trim|htmlspecialchars|max_length[25]';
+ $rules['postal_code'] = 'trim|htmlspecialchars|max_length[10]';
+ $rules['tax_status'] = 'trim|htmlspecialchars|exact_length[1]|numeric|required';
+ $rules['tax_code'] = 'max_length[75]';
+ $this->validation->set_rules($rules);
+
+ $fields['clientName'] = $this->lang->line('clients_name');
+ $fields['website'] = $this->lang->line('clients_website');
+ $fields['address1'] = $this->lang->line('clients_address1');
+ $fields['address2'] = $this->lang->line('clients_address2');
+ $fields['city'] = $this->lang->line('clients_cityt');
+ $fields['province'] = $this->lang->line('clients_province');
+ $fields['country'] = $this->lang->line('clients_country');
+ $fields['postal_code'] = $this->lang->line('clients_postal');
+ $fields['tax_status'] = $this->lang->line('invoice_tax_status');
+ $fields['tax_code'] = $this->lang->line('settings_tax_code');
+ $this->validation->set_fields($fields);
+
+ $this->validation->set_error_delimiters('<span class="error">', '</span>');
+ }
+
+ // --------------------------------------------------------------------
+
+ function _validation_client_contact()
+ {
+ $rules['client_id'] = 'trim|required|htmlspecialchars|numeric';
+ $rules['first_name'] = 'trim|required|htmlspecialchars|max_length[25]';
+ $rules['last_name'] = 'trim|required|htmlspecialchars|max_length[25]';
+ $rules['email'] = 'trim|required|htmlspecialchars|max_length[127]|valid_email';
+ $rules['phone'] = 'trim|htmlspecialchars|max_length[20]';
+ $rules['title'] = 'trim|htmlspecialchars';
+ $this->validation->set_rules($rules);
+
+ $fields['client_id'] = $this->lang->line('clients_id');
+ $fields['first_name'] = $this->lang->line('clients_first_name');
+ $fields['last_name'] = $this->lang->line('clients_last_name');
+ $fields['email'] = $this->lang->line('clients_email');
+ $fields['phone'] = $this->lang->line('clients_phone');
+ $fields['title'] = $this->lang->line('clients_title');
+ $this->validation->set_fields($fields);
+
+ $this->validation->set_error_delimiters('<span class="error">', '</span>');
+ }
+}
+?>
17 bamboo_system_files/application/controllers/credits.php
@@ -0,0 +1,17 @@
+<?php
+
+class Credits extends MY_Controller {
+
+ function Credits()
+ {
+ parent::MY_Controller();
+ }
+
+ function index()
+ {
+ $data['page_title'] = $this->lang->line('menu_credits');
+ $this->load->view('credits/index', $data);
+ }
+
+}
+?>
19 bamboo_system_files/application/controllers/donate.php
@@ -0,0 +1,19 @@
+<?php
+
+class Donate extends MY_Controller {
+
+ // Most controllers use "my_controller" for auth and such, but front, changelog, credits
+ // donate and help are publicly visible, and aren't extended.
+ function Donate()
+ {
+ parent::MY_Controller();
+ }
+
+ function index()
+ {
+ $data['page_title'] = 'Thanks for the donation';
+ $this->load->view('donate/index', $data);
+ }
+
+}
+?>
70 bamboo_system_files/application/controllers/front.php
@@ -0,0 +1,70 @@
+<?php
+
+class Front extends MY_Controller {
+
+ function Front()
+ {
+ parent::MY_Controller();
+ }
+
+ // --------------------------------------------------------------------
+
+ function index()
+ {
+ $this->load->model('clients_model');
+
+ if ($this->db->conn_id == "")
+ {
+ show_error("BambooInvoice could not connect to your database with the information provided in bamboo_system_files/application/config/database.php");
+ }
+
+ if ( ! $this->db->table_exists('settings'))
+ {
+ // The system isn't installed yet. If it isn't then this will kick in, and ask the user to install
+ // location redirecting would be faster... but isn't 100% reliable across all servers
+ redirect('/install/not_installed', 'refresh');
+ exit;
+ }
+
+ if ($this->site_sentry->is_logged_in())
+ {
+ $data['page_title'] = $this->lang->line('menu_root_system');
+ $data['extraHeadContent'] = "<script type=\"text/javascript\" src=\"" . base_url()."js/newinvoice.js\"></script>\n";
+
+ // for the new invoice generation dropdown
+ $data['clientList'] = $this->clients_model->getAllClients();
+
+ // is there a new version available?
+ $this->load->model('utilities_model');
+ $status = $this->utilities_model->_version_check();
+
+ if ($status == 'new')
+ {
+ $this->load->helper('url');
+ $data['message'] = $this->lang->line('utilities_new_version_available') . anchor('http://bambooinvoice.org', 'http://bambooinvoice.org');
+ }
+ else
+ {
+ $data['message'] = '';
+ }
+
+ $this->load->view('index/index_logged_in', $data);
+ }
+ else
+ {
+ if ($this->settings_model->get_setting('demo_flag') == 'y')
+ {
+ // for the demo, load the page that describes BambooInvoice, but if
+ // this isn't the demo, then move the user to the login page
+ $data['page_title'] = $this->lang->line('menu_catchphrase_nobreak');
+