├── .bowerrc
├── .gitignore
├── .htaccess.example
├── application
├── .htaccess
├── cache
│ ├── .htaccess
│ └── index.html
├── config
│ ├── asset.php
│ ├── autoload.php
│ ├── config.php
│ ├── constants.php
│ ├── database.php
│ ├── doctypes.php
│ ├── foreign_chars.php
│ ├── hooks.php
│ ├── index.html
│ ├── memcached.php
│ ├── migration.php
│ ├── mimes.php
│ ├── profiler.php
│ ├── routes.php
│ ├── smileys.php
│ └── user_agents.php
├── controllers
│ ├── Flower_Pots.php
│ ├── Home.php
│ ├── Notifier.php
│ ├── Settings.php
│ └── index.html
├── core
│ ├── MY_Model.php
│ └── index.html
├── helpers
│ ├── asset_helper.php
│ ├── general_helper.php
│ └── index.html
├── hooks
│ └── index.html
├── index.html
├── language
│ ├── english
│ │ ├── index.html
│ │ └── strings_lang.php
│ └── index.html
├── libraries
│ └── index.html
├── logs
│ └── index.html
├── models
│ ├── Flag_Model.php
│ ├── Flower_Pot_Model.php
│ ├── Setting_Model.php
│ └── index.html
├── third_party
│ └── index.html
└── views
│ ├── email
│ └── water_notification.php
│ ├── errors
│ ├── cli
│ │ ├── error_404.php
│ │ ├── error_db.php
│ │ ├── error_exception.php
│ │ ├── error_general.php
│ │ ├── error_php.php
│ │ └── index.html
│ ├── html
│ │ ├── error_404.php
│ │ ├── error_db.php
│ │ ├── error_exception.php
│ │ ├── error_general.php
│ │ ├── error_php.php
│ │ └── index.html
│ └── index.html
│ ├── home.php
│ └── index.html
├── assets
├── css
│ ├── bootstrap-theme.css
│ ├── bootstrap-theme.css.map
│ └── main.css
├── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ └── glyphicons-halflings-regular.woff
├── js
│ └── app.js
└── vendor
│ └── modernizr
│ └── modernizr-2.8.3-respond-1.4.2.min.js
├── bower.json
├── composer.json
├── contributing.md
├── database_dump.sql
├── index.php
├── license.txt
├── readme.md
├── system
├── .htaccess
├── core
│ ├── Benchmark.php
│ ├── CodeIgniter.php
│ ├── Common.php
│ ├── Config.php
│ ├── Controller.php
│ ├── Exceptions.php
│ ├── Hooks.php
│ ├── Input.php
│ ├── Lang.php
│ ├── Loader.php
│ ├── Log.php
│ ├── Model.php
│ ├── Output.php
│ ├── Router.php
│ ├── Security.php
│ ├── URI.php
│ ├── Utf8.php
│ ├── compat
│ │ ├── hash.php
│ │ ├── index.html
│ │ ├── mbstring.php
│ │ ├── password.php
│ │ └── standard.php
│ └── index.html
├── database
│ ├── DB.php
│ ├── DB_cache.php
│ ├── DB_driver.php
│ ├── DB_forge.php
│ ├── DB_query_builder.php
│ ├── DB_result.php
│ ├── DB_utility.php
│ ├── drivers
│ │ ├── cubrid
│ │ │ ├── cubrid_driver.php
│ │ │ ├── cubrid_forge.php
│ │ │ ├── cubrid_result.php
│ │ │ ├── cubrid_utility.php
│ │ │ └── index.html
│ │ ├── ibase
│ │ │ ├── ibase_driver.php
│ │ │ ├── ibase_forge.php
│ │ │ ├── ibase_result.php
│ │ │ ├── ibase_utility.php
│ │ │ └── index.html
│ │ ├── index.html
│ │ ├── mssql
│ │ │ ├── index.html
│ │ │ ├── mssql_driver.php
│ │ │ ├── mssql_forge.php
│ │ │ ├── mssql_result.php
│ │ │ └── mssql_utility.php
│ │ ├── mysql
│ │ │ ├── index.html
│ │ │ ├── mysql_driver.php
│ │ │ ├── mysql_forge.php
│ │ │ ├── mysql_result.php
│ │ │ └── mysql_utility.php
│ │ ├── mysqli
│ │ │ ├── index.html
│ │ │ ├── mysqli_driver.php
│ │ │ ├── mysqli_forge.php
│ │ │ ├── mysqli_result.php
│ │ │ └── mysqli_utility.php
│ │ ├── oci8
│ │ │ ├── index.html
│ │ │ ├── oci8_driver.php
│ │ │ ├── oci8_forge.php
│ │ │ ├── oci8_result.php
│ │ │ └── oci8_utility.php
│ │ ├── odbc
│ │ │ ├── index.html
│ │ │ ├── odbc_driver.php
│ │ │ ├── odbc_forge.php
│ │ │ ├── odbc_result.php
│ │ │ └── odbc_utility.php
│ │ ├── pdo
│ │ │ ├── index.html
│ │ │ ├── pdo_driver.php
│ │ │ ├── pdo_forge.php
│ │ │ ├── pdo_result.php
│ │ │ ├── pdo_utility.php
│ │ │ └── subdrivers
│ │ │ │ ├── index.html
│ │ │ │ ├── pdo_4d_driver.php
│ │ │ │ ├── pdo_4d_forge.php
│ │ │ │ ├── pdo_cubrid_driver.php
│ │ │ │ ├── pdo_cubrid_forge.php
│ │ │ │ ├── pdo_dblib_driver.php
│ │ │ │ ├── pdo_dblib_forge.php
│ │ │ │ ├── pdo_firebird_driver.php
│ │ │ │ ├── pdo_firebird_forge.php
│ │ │ │ ├── pdo_ibm_driver.php
│ │ │ │ ├── pdo_ibm_forge.php
│ │ │ │ ├── pdo_informix_driver.php
│ │ │ │ ├── pdo_informix_forge.php
│ │ │ │ ├── pdo_mysql_driver.php
│ │ │ │ ├── pdo_mysql_forge.php
│ │ │ │ ├── pdo_oci_driver.php
│ │ │ │ ├── pdo_oci_forge.php
│ │ │ │ ├── pdo_odbc_driver.php
│ │ │ │ ├── pdo_odbc_forge.php
│ │ │ │ ├── pdo_pgsql_driver.php
│ │ │ │ ├── pdo_pgsql_forge.php
│ │ │ │ ├── pdo_sqlite_driver.php
│ │ │ │ ├── pdo_sqlite_forge.php
│ │ │ │ ├── pdo_sqlsrv_driver.php
│ │ │ │ └── pdo_sqlsrv_forge.php
│ │ ├── postgre
│ │ │ ├── index.html
│ │ │ ├── postgre_driver.php
│ │ │ ├── postgre_forge.php
│ │ │ ├── postgre_result.php
│ │ │ └── postgre_utility.php
│ │ ├── sqlite
│ │ │ ├── index.html
│ │ │ ├── sqlite_driver.php
│ │ │ ├── sqlite_forge.php
│ │ │ ├── sqlite_result.php
│ │ │ └── sqlite_utility.php
│ │ ├── sqlite3
│ │ │ ├── index.html
│ │ │ ├── sqlite3_driver.php
│ │ │ ├── sqlite3_forge.php
│ │ │ ├── sqlite3_result.php
│ │ │ └── sqlite3_utility.php
│ │ └── sqlsrv
│ │ │ ├── index.html
│ │ │ ├── sqlsrv_driver.php
│ │ │ ├── sqlsrv_forge.php
│ │ │ ├── sqlsrv_result.php
│ │ │ └── sqlsrv_utility.php
│ └── index.html
├── fonts
│ ├── index.html
│ └── texb.ttf
├── helpers
│ ├── array_helper.php
│ ├── captcha_helper.php
│ ├── cookie_helper.php
│ ├── date_helper.php
│ ├── directory_helper.php
│ ├── download_helper.php
│ ├── email_helper.php
│ ├── file_helper.php
│ ├── form_helper.php
│ ├── html_helper.php
│ ├── index.html
│ ├── inflector_helper.php
│ ├── language_helper.php
│ ├── number_helper.php
│ ├── path_helper.php
│ ├── security_helper.php
│ ├── smiley_helper.php
│ ├── string_helper.php
│ ├── text_helper.php
│ ├── typography_helper.php
│ ├── url_helper.php
│ └── xml_helper.php
├── index.html
├── language
│ ├── english
│ │ ├── calendar_lang.php
│ │ ├── date_lang.php
│ │ ├── db_lang.php
│ │ ├── email_lang.php
│ │ ├── form_validation_lang.php
│ │ ├── ftp_lang.php
│ │ ├── imglib_lang.php
│ │ ├── index.html
│ │ ├── migration_lang.php
│ │ ├── number_lang.php
│ │ ├── pagination_lang.php
│ │ ├── profiler_lang.php
│ │ ├── unit_test_lang.php
│ │ └── upload_lang.php
│ └── index.html
└── libraries
│ ├── Cache
│ ├── Cache.php
│ ├── drivers
│ │ ├── Cache_apc.php
│ │ ├── Cache_dummy.php
│ │ ├── Cache_file.php
│ │ ├── Cache_memcached.php
│ │ ├── Cache_redis.php
│ │ ├── Cache_wincache.php
│ │ └── index.html
│ └── index.html
│ ├── Calendar.php
│ ├── Cart.php
│ ├── Driver.php
│ ├── Email.php
│ ├── Encrypt.php
│ ├── Encryption.php
│ ├── Form_validation.php
│ ├── Ftp.php
│ ├── Image_lib.php
│ ├── Javascript.php
│ ├── Javascript
│ ├── Jquery.php
│ └── index.html
│ ├── Migration.php
│ ├── Pagination.php
│ ├── Parser.php
│ ├── Profiler.php
│ ├── Session
│ ├── Session.php
│ ├── SessionHandlerInterface.php
│ ├── Session_driver.php
│ ├── drivers
│ │ ├── Session_database_driver.php
│ │ ├── Session_files_driver.php
│ │ ├── Session_memcached_driver.php
│ │ ├── Session_redis_driver.php
│ │ └── index.html
│ └── index.html
│ ├── Table.php
│ ├── Trackback.php
│ ├── Typography.php
│ ├── Unit_test.php
│ ├── Upload.php
│ ├── User_agent.php
│ ├── Xmlrpc.php
│ ├── Xmlrpcs.php
│ ├── Zip.php
│ └── index.html
└── todo
/.bowerrc:
--------------------------------------------------------------------------------
1 | {
2 | "directory" : "assets/bower_components"
3 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
3 | application/cache/*
4 | !application/cache/index.html
5 | !application/cache/.htaccess
6 |
7 | application/logs/*
8 | !application/logs/index.html
9 | !application/logs/.htaccess
10 |
11 | user_guide_src/build/*
12 | user_guide_src/cilexer/build/*
13 | user_guide_src/cilexer/dist/*
14 | user_guide_src/cilexer/pycilexer.egg-info/*
15 | /vendor/
16 | bower_components
17 |
18 | # IDE Files
19 | #-------------------------
20 | /nbproject/
21 | .idea/*
22 |
23 | ## Sublime Text cache files
24 | *.tmlanguage.cache
25 | *.tmPreferences.cache
26 | *.stTheme.cache
27 | *.sublime-workspace
28 | *.sublime-project
29 | .htaccess
30 |
--------------------------------------------------------------------------------
/.htaccess.example:
--------------------------------------------------------------------------------
1 | RewriteEngine On
2 | RewriteCond %{REQUEST_FILENAME} !-f
3 | RewriteCond %{REQUEST_FILENAME} !-d
4 | RewriteRule ^(.*)$ index.php/$1 [L]
5 |
6 | # Environment
7 | SetEnv CI_ENV development
8 | SetEnv BASE_URL http://localhost/
9 |
10 | # Database Configurations
11 | SetEnv DB_USERNAME dbuser
12 | SetEnv DB_PASSWORD dbpass
13 | SetEnv DB_DATABASE mydbname
14 |
15 |
--------------------------------------------------------------------------------
/application/.htaccess:
--------------------------------------------------------------------------------
1 |
Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/config/asset.php: -------------------------------------------------------------------------------- 1 | imgs/photo.jpg" /> 17 | * @example =img('photo.jpg')?> 18 | * 19 | * @install Copy config/asset.php to your CI application/config directory 20 | * & helpers/asset_helper.php to your application/helpers/ directory. 21 | * Then add both files as autoloads in application/autoload.php: 22 | * 23 | * $autoload['config'] = array('asset'); 24 | * $autoload['helper'] = array('asset'); 25 | * 26 | * Autoload CodeIgniter's url_helper in `application/config/autoload.php`: 27 | * $autoload['helper'] = array('url'); 28 | * 29 | * @notes Organized assets in the top level of your CodeIgniter 2.x app: 30 | * - assets/ 31 | * -- css/ 32 | * -- download/ 33 | * -- img/ 34 | * -- js/ 35 | * -- less/ 36 | * -- swf/ 37 | * -- upload/ 38 | * -- xml/ 39 | * - application/ 40 | * -- config/asset.php 41 | * -- helpers/asset_helper.php 42 | */ 43 | 44 | /* 45 | |-------------------------------------------------------------------------- 46 | | Custom Asset Paths for asset_helper.php 47 | |-------------------------------------------------------------------------- 48 | | 49 | | URL Paths to static assets library 50 | | 51 | */ 52 | 53 | $config['asset_path'] = 'assets/'; 54 | $config['css_path'] = 'assets/css/'; 55 | $config['download_path'] = 'assets/download/'; 56 | $config['less_path'] = 'assets/less/'; 57 | $config['js_path'] = 'assets/js/'; 58 | $config['img_path'] = 'assets/img/'; 59 | $config['swf_path'] = 'assets/swf/'; 60 | $config['upload_path'] = 'assets/upload/'; 61 | $config['xml_path'] = 'assets/xml/'; 62 | 63 | 64 | /* End of file asset.php */ -------------------------------------------------------------------------------- /application/config/autoload.php: -------------------------------------------------------------------------------- 1 | 'ua'); 60 | */ 61 | $autoload['libraries'] = array('database'); 62 | 63 | /* 64 | | ------------------------------------------------------------------- 65 | | Auto-load Drivers 66 | | ------------------------------------------------------------------- 67 | | These classes are located in system/libraries/ or in your 68 | | application/libraries/ directory, but are also placed inside their 69 | | own subdirectory and they extend the CI_Driver_Library class. They 70 | | offer multiple interchangeable driver options. 71 | | 72 | | Prototype: 73 | | 74 | | $autoload['drivers'] = array('cache'); 75 | */ 76 | $autoload['drivers'] = array(); 77 | 78 | /* 79 | | ------------------------------------------------------------------- 80 | | Auto-load Helper Files 81 | | ------------------------------------------------------------------- 82 | | Prototype: 83 | | 84 | | $autoload['helper'] = array('url', 'file'); 85 | */ 86 | $autoload['helper'] = array('url', 'asset', 'string', 'html', 'language'); 87 | 88 | /* 89 | | ------------------------------------------------------------------- 90 | | Auto-load Config files 91 | | ------------------------------------------------------------------- 92 | | Prototype: 93 | | 94 | | $autoload['config'] = array('config1', 'config2'); 95 | | 96 | | NOTE: This item is intended for use ONLY if you have created custom 97 | | config files. Otherwise, leave it blank. 98 | | 99 | */ 100 | $autoload['config'] = array('asset'); 101 | 102 | /* 103 | | ------------------------------------------------------------------- 104 | | Auto-load Language files 105 | | ------------------------------------------------------------------- 106 | | Prototype: 107 | | 108 | | $autoload['language'] = array('lang1', 'lang2'); 109 | | 110 | | NOTE: Do not include the "_lang" part of your file. For example 111 | | "codeigniter_lang.php" would be referenced as array('codeigniter'); 112 | | 113 | */ 114 | $autoload['language'] = array('strings'); 115 | 116 | /* 117 | | ------------------------------------------------------------------- 118 | | Auto-load Models 119 | | ------------------------------------------------------------------- 120 | | Prototype: 121 | | 122 | | $autoload['model'] = array('first_model', 'second_model'); 123 | | 124 | | You can also supply an alternative model name to be assigned 125 | | in the controller: 126 | | 127 | | $autoload['model'] = array('first_model' => 'first'); 128 | */ 129 | $autoload['model'] = array(); 130 | -------------------------------------------------------------------------------- /application/config/constants.php: -------------------------------------------------------------------------------- 1 | db->last_query() and profiling of DB queries. 62 | | When you run a query, with this setting set to TRUE (default), 63 | | CodeIgniter will store the SQL statement for debugging purposes. 64 | | However, this may cause high memory usage, especially if you run 65 | | a lot of SQL queries ... disable this to avoid that problem. 66 | | 67 | | The $active_group variable lets you choose which connection group to 68 | | make active. By default there is only one group (the 'default' group). 69 | | 70 | | The $query_builder variables lets you determine whether or not to load 71 | | the query builder class. 72 | */ 73 | $active_group = 'default'; 74 | $query_builder = TRUE; 75 | 76 | $db['default'] = array( 77 | 'dsn' => '', 78 | 'hostname' => 'localhost', 79 | 'username' => $_SERVER['DB_USERNAME'], 80 | 'password' => $_SERVER['DB_PASSWORD'], 81 | 'database' => $_SERVER['DB_DATABASE'], 82 | 'dbdriver' => 'mysqli', 83 | 'dbprefix' => '', 84 | 'pconnect' => FALSE, 85 | 'db_debug' => (ENVIRONMENT !== 'production'), 86 | 'cache_on' => FALSE, 87 | 'cachedir' => '', 88 | 'char_set' => 'utf8', 89 | 'dbcollat' => 'utf8_general_ci', 90 | 'swap_pre' => '', 91 | 'encrypt' => FALSE, 92 | 'compress' => FALSE, 93 | 'stricton' => FALSE, 94 | 'failover' => array(), 95 | 'save_queries' => TRUE 96 | ); 97 | -------------------------------------------------------------------------------- /application/config/doctypes.php: -------------------------------------------------------------------------------- 1 | '', 6 | 'xhtml1-strict' => '', 7 | 'xhtml1-trans' => '', 8 | 'xhtml1-frame' => '', 9 | 'xhtml-basic11' => '', 10 | 'html5' => '', 11 | 'html4-strict' => '', 12 | 'html4-trans' => '', 13 | 'html4-frame' => '', 14 | 'mathml1' => '', 15 | 'mathml2' => '', 16 | 'svg10' => '', 17 | 'svg11' => '', 18 | 'svg11-basic' => '', 19 | 'svg11-tiny' => '', 20 | 'xhtml-math-svg-xh' => '', 21 | 'xhtml-math-svg-sh' => '', 22 | 'xhtml-rdfa-1' => '', 23 | 'xhtml-rdfa-2' => '' 24 | ); 25 | -------------------------------------------------------------------------------- /application/config/foreign_chars.php: -------------------------------------------------------------------------------- 1 | 'ae', 14 | '/ö|œ/' => 'oe', 15 | '/ü/' => 'ue', 16 | '/Ä/' => 'Ae', 17 | '/Ü/' => 'Ue', 18 | '/Ö/' => 'Oe', 19 | '/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ|Α|Ά|Ả|Ạ|Ầ|Ẫ|Ẩ|Ậ|Ằ|Ắ|Ẵ|Ẳ|Ặ|А/' => 'A', 20 | '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª|α|ά|ả|ạ|ầ|ấ|ẫ|ẩ|ậ|ằ|ắ|ẵ|ẳ|ặ|а/' => 'a', 21 | '/Б/' => 'B', 22 | '/б/' => 'b', 23 | '/Ç|Ć|Ĉ|Ċ|Č/' => 'C', 24 | '/ç|ć|ĉ|ċ|č/' => 'c', 25 | '/Д/' => 'D', 26 | '/д/' => 'd', 27 | '/Ð|Ď|Đ|Δ/' => 'Dj', 28 | '/ð|ď|đ|δ/' => 'dj', 29 | '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě|Ε|Έ|Ẽ|Ẻ|Ẹ|Ề|Ế|Ễ|Ể|Ệ|Е|Э/' => 'E', 30 | '/è|é|ê|ë|ē|ĕ|ė|ę|ě|έ|ε|ẽ|ẻ|ẹ|ề|ế|ễ|ể|ệ|е|э/' => 'e', 31 | '/Ф/' => 'F', 32 | '/ф/' => 'f', 33 | '/Ĝ|Ğ|Ġ|Ģ|Γ|Г|Ґ/' => 'G', 34 | '/ĝ|ğ|ġ|ģ|γ|г|ґ/' => 'g', 35 | '/Ĥ|Ħ/' => 'H', 36 | '/ĥ|ħ/' => 'h', 37 | '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ|Η|Ή|Ί|Ι|Ϊ|Ỉ|Ị|И|Ы/' => 'I', 38 | '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı|η|ή|ί|ι|ϊ|ỉ|ị|и|ы|ї/' => 'i', 39 | '/Ĵ/' => 'J', 40 | '/ĵ/' => 'j', 41 | '/Ķ|Κ|К/' => 'K', 42 | '/ķ|κ|к/' => 'k', 43 | '/Ĺ|Ļ|Ľ|Ŀ|Ł|Λ|Л/' => 'L', 44 | '/ĺ|ļ|ľ|ŀ|ł|λ|л/' => 'l', 45 | '/М/' => 'M', 46 | '/м/' => 'm', 47 | '/Ñ|Ń|Ņ|Ň|Ν|Н/' => 'N', 48 | '/ñ|ń|ņ|ň|ʼn|ν|н/' => 'n', 49 | '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ|Ο|Ό|Ω|Ώ|Ỏ|Ọ|Ồ|Ố|Ỗ|Ổ|Ộ|Ờ|Ớ|Ỡ|Ở|Ợ|О/' => 'O', 50 | '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º|ο|ό|ω|ώ|ỏ|ọ|ồ|ố|ỗ|ổ|ộ|ờ|ớ|ỡ|ở|ợ|о/' => 'o', 51 | '/П/' => 'P', 52 | '/п/' => 'p', 53 | '/Ŕ|Ŗ|Ř|Ρ|Р/' => 'R', 54 | '/ŕ|ŗ|ř|ρ|р/' => 'r', 55 | '/Ś|Ŝ|Ş|Ș|Š|Σ|С/' => 'S', 56 | '/ś|ŝ|ş|ș|š|ſ|σ|ς|с/' => 's', 57 | '/Ț|Ţ|Ť|Ŧ|τ|Т/' => 'T', 58 | '/ț|ţ|ť|ŧ|т/' => 't', 59 | '/Þ|þ/' => 'th', 60 | '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ|Ũ|Ủ|Ụ|Ừ|Ứ|Ữ|Ử|Ự|У/' => 'U', 61 | '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ|υ|ύ|ϋ|ủ|ụ|ừ|ứ|ữ|ử|ự|у/' => 'u', 62 | '/Ý|Ÿ|Ŷ|Υ|Ύ|Ϋ|Ỳ|Ỹ|Ỷ|Ỵ|Й/' => 'Y', 63 | '/ý|ÿ|ŷ|ỳ|ỹ|ỷ|ỵ|й/' => 'y', 64 | '/В/' => 'V', 65 | '/в/' => 'v', 66 | '/Ŵ/' => 'W', 67 | '/ŵ/' => 'w', 68 | '/Ź|Ż|Ž|Ζ|З/' => 'Z', 69 | '/ź|ż|ž|ζ|з/' => 'z', 70 | '/Æ|Ǽ/' => 'AE', 71 | '/ß/' => 'ss', 72 | '/IJ/' => 'IJ', 73 | '/ij/' => 'ij', 74 | '/Œ/' => 'OE', 75 | '/ƒ/' => 'f', 76 | '/ξ/' => 'ks', 77 | '/π/' => 'p', 78 | '/β/' => 'v', 79 | '/μ/' => 'm', 80 | '/ψ/' => 'ps', 81 | '/Ё/' => 'Yo', 82 | '/ё/' => 'yo', 83 | '/Є/' => 'Ye', 84 | '/є/' => 'ye', 85 | '/Ї/' => 'Yi', 86 | '/Ж/' => 'Zh', 87 | '/ж/' => 'zh', 88 | '/Х/' => 'Kh', 89 | '/х/' => 'kh', 90 | '/Ц/' => 'Ts', 91 | '/ц/' => 'ts', 92 | '/Ч/' => 'Ch', 93 | '/ч/' => 'ch', 94 | '/Ш/' => 'Sh', 95 | '/ш/' => 'sh', 96 | '/Щ/' => 'Shch', 97 | '/щ/' => 'shch', 98 | '/Ъ|ъ|Ь|ь/' => '', 99 | '/Ю/' => 'Yu', 100 | '/ю/' => 'yu', 101 | '/Я/' => 'Ya', 102 | '/я/' => 'ya' 103 | ); 104 | -------------------------------------------------------------------------------- /application/config/hooks.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/config/memcached.php: -------------------------------------------------------------------------------- 1 | array( 15 | 'hostname' => '127.0.0.1', 16 | 'port' => '11211', 17 | 'weight' => '1', 18 | ), 19 | ); 20 | -------------------------------------------------------------------------------- /application/config/migration.php: -------------------------------------------------------------------------------- 1 | migration->current() this is the version that schema will 69 | | be upgraded / downgraded to. 70 | | 71 | */ 72 | $config['migration_version'] = 0; 73 | 74 | /* 75 | |-------------------------------------------------------------------------- 76 | | Migrations Path 77 | |-------------------------------------------------------------------------- 78 | | 79 | | Path to your migrations folder. 80 | | Typically, it will be within your application path. 81 | | Also, writing permission is required within the migrations path. 82 | | 83 | */ 84 | $config['migration_path'] = APPPATH.'migrations/'; 85 | -------------------------------------------------------------------------------- /application/config/profiler.php: -------------------------------------------------------------------------------- 1 | my_controller/index 50 | | my-controller/my-method -> my_controller/my_method 51 | */ 52 | $route['default_controller'] = 'home'; 53 | $route['404_override'] = ''; 54 | $route['translate_uri_dashes'] = TRUE; 55 | -------------------------------------------------------------------------------- /application/config/smileys.php: -------------------------------------------------------------------------------- 1 | array('grin.gif', '19', '19', 'grin'), 21 | ':lol:' => array('lol.gif', '19', '19', 'LOL'), 22 | ':cheese:' => array('cheese.gif', '19', '19', 'cheese'), 23 | ':)' => array('smile.gif', '19', '19', 'smile'), 24 | ';-)' => array('wink.gif', '19', '19', 'wink'), 25 | ';)' => array('wink.gif', '19', '19', 'wink'), 26 | ':smirk:' => array('smirk.gif', '19', '19', 'smirk'), 27 | ':roll:' => array('rolleyes.gif', '19', '19', 'rolleyes'), 28 | ':-S' => array('confused.gif', '19', '19', 'confused'), 29 | ':wow:' => array('surprise.gif', '19', '19', 'surprised'), 30 | ':bug:' => array('bigsurprise.gif', '19', '19', 'big surprise'), 31 | ':-P' => array('tongue_laugh.gif', '19', '19', 'tongue laugh'), 32 | '%-P' => array('tongue_rolleye.gif', '19', '19', 'tongue rolleye'), 33 | ';-P' => array('tongue_wink.gif', '19', '19', 'tongue wink'), 34 | ':P' => array('raspberry.gif', '19', '19', 'raspberry'), 35 | ':blank:' => array('blank.gif', '19', '19', 'blank stare'), 36 | ':long:' => array('longface.gif', '19', '19', 'long face'), 37 | ':ohh:' => array('ohh.gif', '19', '19', 'ohh'), 38 | ':grrr:' => array('grrr.gif', '19', '19', 'grrr'), 39 | ':gulp:' => array('gulp.gif', '19', '19', 'gulp'), 40 | '8-/' => array('ohoh.gif', '19', '19', 'oh oh'), 41 | ':down:' => array('downer.gif', '19', '19', 'downer'), 42 | ':red:' => array('embarrassed.gif', '19', '19', 'red face'), 43 | ':sick:' => array('sick.gif', '19', '19', 'sick'), 44 | ':shut:' => array('shuteye.gif', '19', '19', 'shut eye'), 45 | ':-/' => array('hmm.gif', '19', '19', 'hmmm'), 46 | '>:(' => array('mad.gif', '19', '19', 'mad'), 47 | ':mad:' => array('mad.gif', '19', '19', 'mad'), 48 | '>:-(' => array('angry.gif', '19', '19', 'angry'), 49 | ':angry:' => array('angry.gif', '19', '19', 'angry'), 50 | ':zip:' => array('zip.gif', '19', '19', 'zipper'), 51 | ':kiss:' => array('kiss.gif', '19', '19', 'kiss'), 52 | ':ahhh:' => array('shock.gif', '19', '19', 'shock'), 53 | ':coolsmile:' => array('shade_smile.gif', '19', '19', 'cool smile'), 54 | ':coolsmirk:' => array('shade_smirk.gif', '19', '19', 'cool smirk'), 55 | ':coolgrin:' => array('shade_grin.gif', '19', '19', 'cool grin'), 56 | ':coolhmm:' => array('shade_hmm.gif', '19', '19', 'cool hmm'), 57 | ':coolmad:' => array('shade_mad.gif', '19', '19', 'cool mad'), 58 | ':coolcheese:' => array('shade_cheese.gif', '19', '19', 'cool cheese'), 59 | ':vampire:' => array('vampire.gif', '19', '19', 'vampire'), 60 | ':snake:' => array('snake.gif', '19', '19', 'snake'), 61 | ':exclaim:' => array('exclaim.gif', '19', '19', 'exclaim'), 62 | ':question:' => array('question.gif', '19', '19', 'question') 63 | 64 | ); 65 | -------------------------------------------------------------------------------- /application/controllers/Home.php: -------------------------------------------------------------------------------- 1 | load->view('home'); 9 | } 10 | } 11 | // End of file Home.php 12 | // Location: ./application/controllers/Home.php 13 | -------------------------------------------------------------------------------- /application/controllers/Settings.php: -------------------------------------------------------------------------------- 1 | load->model('Setting_Model', 'setting'); 14 | } 15 | 16 | /** 17 | * Default controller page 18 | */ 19 | public function index() 20 | { 21 | redirect('settings/get-all'); 22 | } 23 | 24 | /** 25 | * Retrieves and displays all records 26 | * (AJAX Endpoint) 27 | */ 28 | public function get_all() 29 | { 30 | $items = $this->setting->get_all(); 31 | $f_items = array(); 32 | 33 | // restructure data 34 | foreach ($items as $item) { 35 | $f_items[$item->name] = $item->value; 36 | } 37 | 38 | $response = $f_items; 39 | 40 | http_response_code(200); 41 | $this->output->set_output(json_encode($response)); 42 | } 43 | 44 | /** 45 | * Updates a record based on $_POST data 46 | * (AJAX Endpoint) 47 | */ 48 | public function update() 49 | { 50 | $this->load->library('form_validation'); 51 | $this->form_validation->set_rules('user_email', 'User Email', 'required|valid_email'); 52 | 53 | if ($this->form_validation->run() == FALSE) 54 | { 55 | http_response_code(400); 56 | $response = array('message' => validation_errors()); 57 | 58 | $this->output->set_output(json_encode($response)); 59 | return; 60 | } 61 | 62 | $settings = array( 63 | 'user_email' => $this->input->post('user_email'), 64 | 'morning_water_time' => $this->input->post('morning_water_time'), 65 | 'noon_water_time' => $this->input->post('noon_water_time'), 66 | 'afternoon_water_time' => $this->input->post('afternoon_water_time'), 67 | 'alert_advance_minutes' => $this->input->post('alert_advance_minutes') 68 | ); 69 | 70 | foreach ($settings as $key => $value) { 71 | // get record to extract id 72 | $item = $this->setting->get_by('name', $key); 73 | 74 | // update record 75 | $this->setting->update($item->id, array('value' => $value)); 76 | } 77 | 78 | http_response_code(200); 79 | $response = array('message' => lang('settings_update_success')); 80 | 81 | $this->output->set_output(json_encode($response)); 82 | } 83 | } 84 | 85 | // End of file Settings.php 86 | // Location: ./application/controllers/Settings.php -------------------------------------------------------------------------------- /application/controllers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/core/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/helpers/general_helper.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/hooks/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/language/english/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/language/english/strings_lang.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/libraries/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/logs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/models/Flag_Model.php: -------------------------------------------------------------------------------- 1 | _table = 'flags'; 11 | } 12 | } 13 | // End of file Flag_Model.php 14 | // Location: ./application/models/Flag_Model.php -------------------------------------------------------------------------------- /application/models/Flower_Pot_Model.php: -------------------------------------------------------------------------------- 1 | _table = 'flower_pots'; 11 | $this->after_get = array('convert_timeformat'); 12 | $this->before_create = array('created_at'); 13 | $this->before_update = array('updated_at'); 14 | } 15 | 16 | public function convert_timeformat($item) 17 | { 18 | $item->created_at = (new DateTime($item->created_at))->format(DateTime::ISO8601); 19 | $item->updated_at = (new DateTime($item->updated_at))->format(DateTime::ISO8601); 20 | 21 | return $item; 22 | } 23 | } 24 | // End of file Flower_Pot_Model.php 25 | // Location: ./application/models/Flower_Pot_Model.php -------------------------------------------------------------------------------- /application/models/Setting_Model.php: -------------------------------------------------------------------------------- 1 | _table = 'settings'; 11 | } 12 | } 13 | // End of file Setting_Model.php 14 | // Location: ./application/models/Setting_Model.php -------------------------------------------------------------------------------- /application/models/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/third_party/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/views/email/water_notification.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |Hi, these are the flower pots that need to be watered at :
13 | 14 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/views/errors/html/error_404.php: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 |Type:
10 |Message:
11 |Filename: getFile(); ?>
12 |Line Number: getLine(); ?>
13 | 14 | 15 | 16 |Backtrace:
17 | getTrace() as $error): ?> 18 | 19 | 20 | 21 |
22 | File:
23 | Line:
24 | Function:
25 |
Severity:
10 |Message:
11 |Filename:
12 |Line Number:
13 | 14 | 15 | 16 |Backtrace:
17 | 18 | 19 | 20 | 21 |
22 | File:
23 | Line:
24 | Function:
25 |
Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/views/errors/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /assets/css/main.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* ========================================================================== 4 | Author's custom styles 5 | ========================================================================== */ 6 | 7 | #flower-pots-table { 8 | width: 100%; 9 | } 10 | 11 | .modal.fade .modal-dialog { 12 | z-index: 1041 !important; 13 | } 14 | 15 | /* Add/Edit Modal */ 16 | div#add-edit div.modal-footer button.update { 17 | margin-left: 0; 18 | } 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgabuya/codeigniter-ajax-crud/a4032697ec56e3407501ff2d387bafcbbbe80e29/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgabuya/codeigniter-ajax-crud/a4032697ec56e3407501ff2d387bafcbbbe80e29/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgabuya/codeigniter-ajax-crud/a4032697ec56e3407501ff2d387bafcbbbe80e29/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codeigniter_ajax_crud", 3 | "homepage": "https://github.com/jgabuya/codeigniter-ajax-crud", 4 | "description": "This app contains a CRUD interface for flower pots as well a notifier on when to water the flowers.", 5 | "main": "", 6 | "authors": [ 7 | "Jirffey Gabuya" 8 | ], 9 | "license": "MIT", 10 | "private": true, 11 | "ignore": [ 12 | "**/.*", 13 | "node_modules", 14 | "bower_components", 15 | "test", 16 | "tests" 17 | ], 18 | "dependencies": { 19 | "bootstrap": "^3.3.7", 20 | "datatables": "datatable#^1.10.13", 21 | "toastr": "^2.1.3", 22 | "bootstrap-switch": "^3.3.4", 23 | "eonasdan-bootstrap-datetimepicker": "bootstrap3-datetimepicker#^4.17.47", 24 | "jquery-timeago": "timeago#^1.5.4", 25 | "jquery": "^3.2.1" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "The CodeIgniter framework", 3 | "name": "codeigniter/framework", 4 | "type": "project", 5 | "homepage": "http://codeigniter.com", 6 | "license": "MIT", 7 | "support": { 8 | "forum": "http://forum.codeigniter.com/", 9 | "wiki": "https://github.com/bcit-ci/CodeIgniter/wiki", 10 | "irc": "irc://irc.freenode.net/codeigniter", 11 | "source": "https://github.com/bcit-ci/CodeIgniter" 12 | }, 13 | "require": { 14 | "php": ">=5.2.4" 15 | }, 16 | "require-dev": { 17 | "mikey179/vfsStream": "1.1.*" 18 | } 19 | } -------------------------------------------------------------------------------- /database_dump.sql: -------------------------------------------------------------------------------- 1 | -- phpMyAdmin SQL Dump 2 | -- version 4.0.10deb1 3 | -- http://www.phpmyadmin.net 4 | -- 5 | -- Host: localhost 6 | -- Generation Time: Oct 03, 2015 at 04:48 AM 7 | -- Server version: 5.5.44-0ubuntu0.14.04.1 8 | -- PHP Version: 5.5.9-1ubuntu4.11 9 | 10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 11 | SET time_zone = "+00:00"; 12 | 13 | 14 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 15 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 16 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 17 | /*!40101 SET NAMES utf8 */; 18 | 19 | -- 20 | -- Database: `epam_test` 21 | -- 22 | 23 | -- -------------------------------------------------------- 24 | 25 | -- 26 | -- Table structure for table `flags` 27 | -- 28 | 29 | CREATE TABLE IF NOT EXISTS `flags` ( 30 | `id` int(11) NOT NULL AUTO_INCREMENT, 31 | `name` varchar(255) NOT NULL, 32 | `value` text NOT NULL, 33 | PRIMARY KEY (`id`), 34 | UNIQUE KEY `name` (`name`) 35 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; 36 | 37 | -- 38 | -- Dumping data for table `flags` 39 | -- 40 | 41 | INSERT INTO `flags` (`id`, `name`, `value`) VALUES 42 | (1, 'morning_water_last_notification', ''), 43 | (2, 'noon_water_last_notification', ''), 44 | (3, 'afternoon_water_last_notification', ''); 45 | 46 | -- -------------------------------------------------------- 47 | 48 | -- 49 | -- Table structure for table `flower_pots` 50 | -- 51 | 52 | CREATE TABLE IF NOT EXISTS `flower_pots` ( 53 | `id` int(11) NOT NULL AUTO_INCREMENT, 54 | `name` varchar(255) NOT NULL, 55 | `water_morning` smallint(6) DEFAULT '0', 56 | `water_noon` smallint(6) NOT NULL DEFAULT '0', 57 | `water_afternoon` smallint(6) NOT NULL DEFAULT '0', 58 | `created_at` datetime NOT NULL, 59 | `updated_at` datetime NOT NULL, 60 | PRIMARY KEY (`id`), 61 | KEY `name` (`name`,`water_morning`,`created_at`,`updated_at`), 62 | KEY `water_morning` (`water_morning`), 63 | KEY `water_noon` (`water_noon`), 64 | KEY `water_afternoon` (`water_afternoon`) 65 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ; 66 | 67 | -- 68 | -- Dumping data for table `flower_pots` 69 | -- 70 | 71 | INSERT INTO `flower_pots` (`id`, `name`, `water_morning`, `water_noon`, `water_afternoon`, `created_at`, `updated_at`) VALUES 72 | (2, 'Aster', 1, 0, 0, '2015-10-03 02:49:43', '0000-00-00 00:00:00'), 73 | (3, 'Bird of Paradise', 0, 0, 1, '2015-10-03 02:49:54', '0000-00-00 00:00:00'), 74 | (4, 'Blazing Star', 0, 0, 1, '2015-10-03 02:50:04', '0000-00-00 00:00:00'), 75 | (5, 'Christmas Bells', 0, 1, 0, '2015-10-03 02:51:34', '0000-00-00 00:00:00'), 76 | (6, 'Contra Costa Goldfields', 0, 0, 1, '2015-10-03 02:51:42', '0000-00-00 00:00:00'), 77 | (7, 'Chilean Jasmine', 1, 1, 1, '2015-10-03 02:51:52', '0000-00-00 00:00:00'), 78 | (8, 'Delphinium', 1, 0, 1, '2015-10-03 02:52:01', '0000-00-00 00:00:00'), 79 | (9, 'Sunflowers', 0, 1, 0, '2015-10-03 02:57:49', '0000-00-00 00:00:00'); 80 | 81 | -- -------------------------------------------------------- 82 | 83 | -- 84 | -- Table structure for table `settings` 85 | -- 86 | 87 | CREATE TABLE IF NOT EXISTS `settings` ( 88 | `id` int(11) NOT NULL AUTO_INCREMENT, 89 | `name` varchar(255) NOT NULL, 90 | `value` text NOT NULL, 91 | PRIMARY KEY (`id`), 92 | KEY `name` (`name`) 93 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ; 94 | 95 | -- 96 | -- Dumping data for table `settings` 97 | -- 98 | 99 | INSERT INTO `settings` (`id`, `name`, `value`) VALUES 100 | (1, 'user_email', 'test@mail.com'), 101 | (2, 'morning_water_time', '6:10 AM'), 102 | (3, 'noon_water_time', '12:00 PM'), 103 | (4, 'afternoon_water_time', '4:30 PM'), 104 | (5, 'alert_advance_minutes', '30'); 105 | 106 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 107 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 108 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 109 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 - 2015, British Columbia Institute of Technology 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | This app contains a CRUD interface for flower pots as well a notifier on when to water the flowers. 4 | 5 | Technologies used: 6 | * Javascript 7 | * jQuery 8 | * Twitter Bootstrap 9 | * PHP (with Codeigniter framework v3.1.4) 10 | 11 | ## Installation 12 | 13 | 1. Create a database using the sqldump file *database_dump.sql*. 14 | 2. Have Apache ```mod_rewrite``` enabled 15 | 3. Copy *.htaccess.example* to *.htaccess* and modify environment and database settings 16 | 4. Run ```bower install``` from the command line. This assumes that you have [bower](https://bower.io/) installed. 17 | 18 | ## Running scheduler as Cron 19 | 20 | Create a cron entry that runs every 5 minutes using this command: 21 | ``` 22 | */5 * * * * /usr/local/bin/php /path/to/epam/index.php notifier cron 23 | ``` 24 | 25 | Note: Make sure email server is configured correctly. You may use this [link](https://codeigniter.com/user_guide/libraries/email.html) for reference. -------------------------------------------------------------------------------- /system/.htaccess: -------------------------------------------------------------------------------- 1 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/core/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/cubrid/cubrid_utility.php: -------------------------------------------------------------------------------- 1 | db->data_cache['db_names'])) 57 | { 58 | return $this->db->data_cache['db_names']; 59 | } 60 | 61 | return $this->db->data_cache['db_names'] = cubrid_list_dbs($this->db->conn_id); 62 | } 63 | 64 | // -------------------------------------------------------------------- 65 | 66 | /** 67 | * CUBRID Export 68 | * 69 | * @param array Preferences 70 | * @return mixed 71 | */ 72 | protected function _backup($params = array()) 73 | { 74 | // No SQL based support in CUBRID as of version 8.4.0. Database or 75 | // table backup can be performed using CUBRID Manager 76 | // database administration tool. 77 | return $this->db->display_error('db_unsupported_feature'); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /system/database/drivers/cubrid/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/ibase/ibase_result.php: -------------------------------------------------------------------------------- 1 | result_id); 59 | } 60 | 61 | // -------------------------------------------------------------------- 62 | 63 | /** 64 | * Fetch Field Names 65 | * 66 | * Generates an array of column names 67 | * 68 | * @return array 69 | */ 70 | public function list_fields() 71 | { 72 | $field_names = array(); 73 | for ($i = 0, $num_fields = $this->num_fields(); $i < $num_fields; $i++) 74 | { 75 | $info = ibase_field_info($this->result_id, $i); 76 | $field_names[] = $info['name']; 77 | } 78 | 79 | return $field_names; 80 | } 81 | 82 | // -------------------------------------------------------------------- 83 | 84 | /** 85 | * Field data 86 | * 87 | * Generates an array of objects containing field meta-data 88 | * 89 | * @return array 90 | */ 91 | public function field_data() 92 | { 93 | $retval = array(); 94 | for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) 95 | { 96 | $info = ibase_field_info($this->result_id, $i); 97 | 98 | $retval[$i] = new stdClass(); 99 | $retval[$i]->name = $info['name']; 100 | $retval[$i]->type = $info['type']; 101 | $retval[$i]->max_length = $info['length']; 102 | } 103 | 104 | return $retval; 105 | } 106 | 107 | // -------------------------------------------------------------------- 108 | 109 | /** 110 | * Free the result 111 | * 112 | * @return void 113 | */ 114 | public function free_result() 115 | { 116 | ibase_free_result($this->result_id); 117 | } 118 | 119 | // -------------------------------------------------------------------- 120 | 121 | /** 122 | * Result - associative array 123 | * 124 | * Returns the result set as an array 125 | * 126 | * @return array 127 | */ 128 | protected function _fetch_assoc() 129 | { 130 | return ibase_fetch_assoc($this->result_id, IBASE_FETCH_BLOBS); 131 | } 132 | 133 | // -------------------------------------------------------------------- 134 | 135 | /** 136 | * Result - object 137 | * 138 | * Returns the result set as an object 139 | * 140 | * @param string $class_name 141 | * @return object 142 | */ 143 | protected function _fetch_object($class_name = 'stdClass') 144 | { 145 | $row = ibase_fetch_object($this->result_id, IBASE_FETCH_BLOBS); 146 | 147 | if ($class_name === 'stdClass' OR ! $row) 148 | { 149 | return $row; 150 | } 151 | 152 | $class_name = new $class_name(); 153 | foreach ($row as $key => $value) 154 | { 155 | $class_name->$key = $value; 156 | } 157 | 158 | return $class_name; 159 | } 160 | 161 | } 162 | -------------------------------------------------------------------------------- /system/database/drivers/ibase/ibase_utility.php: -------------------------------------------------------------------------------- 1 | db->hostname, $this->db->username, $this->db->password)) 58 | { 59 | $res = ibase_backup($service, $this->db->database, $filename.'.fbk'); 60 | 61 | // Close the service connection 62 | ibase_service_detach($service); 63 | return $res; 64 | } 65 | 66 | return FALSE; 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /system/database/drivers/ibase/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/mssql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/mssql/mssql_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /system/database/drivers/mysql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/mysqli/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/oci8/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/oci8/oci8_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /system/database/drivers/odbc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/odbc/odbc_forge.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /system/database/drivers/pdo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/pdo/pdo_forge.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /system/database/drivers/pdo/subdrivers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/pdo/subdrivers/pdo_dblib_forge.php: -------------------------------------------------------------------------------- 1 | 'SMALLINT', 70 | 'SMALLINT' => 'INT', 71 | 'INT' => 'BIGINT', 72 | 'REAL' => 'FLOAT' 73 | ); 74 | 75 | // -------------------------------------------------------------------- 76 | 77 | /** 78 | * ALTER TABLE 79 | * 80 | * @param string $alter_type ALTER type 81 | * @param string $table Table name 82 | * @param mixed $field Column definition 83 | * @return string|string[] 84 | */ 85 | protected function _alter_table($alter_type, $table, $field) 86 | { 87 | if (in_array($alter_type, array('ADD', 'DROP'), TRUE)) 88 | { 89 | return parent::_alter_table($alter_type, $table, $field); 90 | } 91 | 92 | $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table).' ALTER COLUMN '; 93 | $sqls = array(); 94 | for ($i = 0, $c = count($field); $i < $c; $i++) 95 | { 96 | $sqls[] = $sql.$this->_process_column($field[$i]); 97 | } 98 | 99 | return $sqls; 100 | } 101 | 102 | // -------------------------------------------------------------------- 103 | 104 | /** 105 | * Field attribute TYPE 106 | * 107 | * Performs a data type mapping between different databases. 108 | * 109 | * @param array &$attributes 110 | * @return void 111 | */ 112 | protected function _attr_type(&$attributes) 113 | { 114 | if (isset($attributes['CONSTRAINT']) && strpos($attributes['TYPE'], 'INT') !== FALSE) 115 | { 116 | unset($attributes['CONSTRAINT']); 117 | } 118 | 119 | switch (strtoupper($attributes['TYPE'])) 120 | { 121 | case 'MEDIUMINT': 122 | $attributes['TYPE'] = 'INTEGER'; 123 | $attributes['UNSIGNED'] = FALSE; 124 | return; 125 | case 'INTEGER': 126 | $attributes['TYPE'] = 'INT'; 127 | return; 128 | default: return; 129 | } 130 | } 131 | 132 | // -------------------------------------------------------------------- 133 | 134 | /** 135 | * Field attribute AUTO_INCREMENT 136 | * 137 | * @param array &$attributes 138 | * @param array &$field 139 | * @return void 140 | */ 141 | protected function _attr_auto_increment(&$attributes, &$field) 142 | { 143 | if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) 144 | { 145 | $field['auto_increment'] = ' IDENTITY(1,1)'; 146 | } 147 | } 148 | 149 | } 150 | -------------------------------------------------------------------------------- /system/database/drivers/pdo/subdrivers/pdo_ibm_forge.php: -------------------------------------------------------------------------------- 1 | 'INTEGER', 63 | 'INT' => 'BIGINT', 64 | 'INTEGER' => 'BIGINT' 65 | ); 66 | 67 | /** 68 | * DEFAULT value representation in CREATE/ALTER TABLE statements 69 | * 70 | * @var string 71 | */ 72 | protected $_default = FALSE; 73 | 74 | // -------------------------------------------------------------------- 75 | 76 | /** 77 | * ALTER TABLE 78 | * 79 | * @param string $alter_type ALTER type 80 | * @param string $table Table name 81 | * @param mixed $field Column definition 82 | * @return string|string[] 83 | */ 84 | protected function _alter_table($alter_type, $table, $field) 85 | { 86 | if ($alter_type === 'CHANGE') 87 | { 88 | $alter_type = 'MODIFY'; 89 | } 90 | 91 | return parent::_alter_table($alter_type, $table, $field); 92 | } 93 | 94 | // -------------------------------------------------------------------- 95 | 96 | /** 97 | * Field attribute TYPE 98 | * 99 | * Performs a data type mapping between different databases. 100 | * 101 | * @param array &$attributes 102 | * @return void 103 | */ 104 | protected function _attr_type(&$attributes) 105 | { 106 | switch (strtoupper($attributes['TYPE'])) 107 | { 108 | case 'TINYINT': 109 | $attributes['TYPE'] = 'SMALLINT'; 110 | $attributes['UNSIGNED'] = FALSE; 111 | return; 112 | case 'MEDIUMINT': 113 | $attributes['TYPE'] = 'INTEGER'; 114 | $attributes['UNSIGNED'] = FALSE; 115 | return; 116 | default: return; 117 | } 118 | } 119 | 120 | // -------------------------------------------------------------------- 121 | 122 | /** 123 | * Field attribute UNIQUE 124 | * 125 | * @param array &$attributes 126 | * @param array &$field 127 | * @return void 128 | */ 129 | protected function _attr_unique(&$attributes, &$field) 130 | { 131 | if ( ! empty($attributes['UNIQUE']) && $attributes['UNIQUE'] === TRUE) 132 | { 133 | $field['unique'] = ' UNIQUE'; 134 | 135 | // UNIQUE must be used with NOT NULL 136 | $field['null'] = ' NOT NULL'; 137 | } 138 | } 139 | 140 | // -------------------------------------------------------------------- 141 | 142 | /** 143 | * Field attribute AUTO_INCREMENT 144 | * 145 | * @param array &$attributes 146 | * @param array &$field 147 | * @return void 148 | */ 149 | protected function _attr_auto_increment(&$attributes, &$field) 150 | { 151 | // Not supported 152 | } 153 | 154 | } 155 | -------------------------------------------------------------------------------- /system/database/drivers/pdo/subdrivers/pdo_odbc_forge.php: -------------------------------------------------------------------------------- 1 | 'SMALLINT', 70 | 'SMALLINT' => 'INT', 71 | 'INT' => 'BIGINT', 72 | 'REAL' => 'FLOAT' 73 | ); 74 | 75 | // -------------------------------------------------------------------- 76 | 77 | /** 78 | * ALTER TABLE 79 | * 80 | * @param string $alter_type ALTER type 81 | * @param string $table Table name 82 | * @param mixed $field Column definition 83 | * @return string|string[] 84 | */ 85 | protected function _alter_table($alter_type, $table, $field) 86 | { 87 | if (in_array($alter_type, array('ADD', 'DROP'), TRUE)) 88 | { 89 | return parent::_alter_table($alter_type, $table, $field); 90 | } 91 | 92 | $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table).' ALTER COLUMN '; 93 | $sqls = array(); 94 | for ($i = 0, $c = count($field); $i < $c; $i++) 95 | { 96 | $sqls[] = $sql.$this->_process_column($field[$i]); 97 | } 98 | 99 | return $sqls; 100 | } 101 | 102 | // -------------------------------------------------------------------- 103 | 104 | /** 105 | * Field attribute TYPE 106 | * 107 | * Performs a data type mapping between different databases. 108 | * 109 | * @param array &$attributes 110 | * @return void 111 | */ 112 | protected function _attr_type(&$attributes) 113 | { 114 | if (isset($attributes['CONSTRAINT']) && strpos($attributes['TYPE'], 'INT') !== FALSE) 115 | { 116 | unset($attributes['CONSTRAINT']); 117 | } 118 | 119 | switch (strtoupper($attributes['TYPE'])) 120 | { 121 | case 'MEDIUMINT': 122 | $attributes['TYPE'] = 'INTEGER'; 123 | $attributes['UNSIGNED'] = FALSE; 124 | return; 125 | case 'INTEGER': 126 | $attributes['TYPE'] = 'INT'; 127 | return; 128 | default: return; 129 | } 130 | } 131 | 132 | // -------------------------------------------------------------------- 133 | 134 | /** 135 | * Field attribute AUTO_INCREMENT 136 | * 137 | * @param array &$attributes 138 | * @param array &$field 139 | * @return void 140 | */ 141 | protected function _attr_auto_increment(&$attributes, &$field) 142 | { 143 | if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) 144 | { 145 | $field['auto_increment'] = ' IDENTITY(1,1)'; 146 | } 147 | } 148 | 149 | } 150 | -------------------------------------------------------------------------------- /system/database/drivers/postgre/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/postgre/postgre_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /system/database/drivers/sqlite/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/sqlite/sqlite_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /system/database/drivers/sqlite3/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/sqlite3/sqlite3_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /system/database/drivers/sqlsrv/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/database/drivers/sqlsrv/sqlsrv_forge.php: -------------------------------------------------------------------------------- 1 | 'SMALLINT', 70 | 'SMALLINT' => 'INT', 71 | 'INT' => 'BIGINT', 72 | 'REAL' => 'FLOAT' 73 | ); 74 | 75 | // -------------------------------------------------------------------- 76 | 77 | /** 78 | * ALTER TABLE 79 | * 80 | * @param string $alter_type ALTER type 81 | * @param string $table Table name 82 | * @param mixed $field Column definition 83 | * @return string|string[] 84 | */ 85 | protected function _alter_table($alter_type, $table, $field) 86 | { 87 | if (in_array($alter_type, array('ADD', 'DROP'), TRUE)) 88 | { 89 | return parent::_alter_table($alter_type, $table, $field); 90 | } 91 | 92 | $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table).' ALTER COLUMN '; 93 | $sqls = array(); 94 | for ($i = 0, $c = count($field); $i < $c; $i++) 95 | { 96 | $sqls[] = $sql.$this->_process_column($field[$i]); 97 | } 98 | 99 | return $sqls; 100 | } 101 | 102 | // -------------------------------------------------------------------- 103 | 104 | /** 105 | * Field attribute TYPE 106 | * 107 | * Performs a data type mapping between different databases. 108 | * 109 | * @param array &$attributes 110 | * @return void 111 | */ 112 | protected function _attr_type(&$attributes) 113 | { 114 | if (isset($attributes['CONSTRAINT']) && strpos($attributes['TYPE'], 'INT') !== FALSE) 115 | { 116 | unset($attributes['CONSTRAINT']); 117 | } 118 | 119 | switch (strtoupper($attributes['TYPE'])) 120 | { 121 | case 'MEDIUMINT': 122 | $attributes['TYPE'] = 'INTEGER'; 123 | $attributes['UNSIGNED'] = FALSE; 124 | return; 125 | case 'INTEGER': 126 | $attributes['TYPE'] = 'INT'; 127 | return; 128 | default: return; 129 | } 130 | } 131 | 132 | // -------------------------------------------------------------------- 133 | 134 | /** 135 | * Field attribute AUTO_INCREMENT 136 | * 137 | * @param array &$attributes 138 | * @param array &$field 139 | * @return void 140 | */ 141 | protected function _attr_auto_increment(&$attributes, &$field) 142 | { 143 | if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) 144 | { 145 | $field['auto_increment'] = ' IDENTITY(1,1)'; 146 | } 147 | } 148 | 149 | } 150 | -------------------------------------------------------------------------------- /system/database/drivers/sqlsrv/sqlsrv_utility.php: -------------------------------------------------------------------------------- 1 | db->display_error('db_unsupported_feature'); 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /system/database/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/fonts/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/fonts/texb.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jgabuya/codeigniter-ajax-crud/a4032697ec56e3407501ff2d387bafcbbbe80e29/system/fonts/texb.ttf -------------------------------------------------------------------------------- /system/helpers/array_helper.php: -------------------------------------------------------------------------------- 1 | input->set_cookie($name, $value, $expire, $domain, $path, $prefix, $secure, $httponly); 74 | } 75 | } 76 | 77 | // -------------------------------------------------------------------- 78 | 79 | if ( ! function_exists('get_cookie')) 80 | { 81 | /** 82 | * Fetch an item from the COOKIE array 83 | * 84 | * @param string 85 | * @param bool 86 | * @return mixed 87 | */ 88 | function get_cookie($index, $xss_clean = NULL) 89 | { 90 | is_bool($xss_clean) OR $xss_clean = (config_item('global_xss_filtering') === TRUE); 91 | $prefix = isset($_COOKIE[$index]) ? '' : config_item('cookie_prefix'); 92 | return get_instance()->input->cookie($prefix.$index, $xss_clean); 93 | } 94 | } 95 | 96 | // -------------------------------------------------------------------- 97 | 98 | if ( ! function_exists('delete_cookie')) 99 | { 100 | /** 101 | * Delete a COOKIE 102 | * 103 | * @param mixed 104 | * @param string the cookie domain. Usually: .yourdomain.com 105 | * @param string the cookie path 106 | * @param string the cookie prefix 107 | * @return void 108 | */ 109 | function delete_cookie($name, $domain = '', $path = '/', $prefix = '') 110 | { 111 | set_cookie($name, '', '', $domain, $path, $prefix); 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /system/helpers/directory_helper.php: -------------------------------------------------------------------------------- 1 | 0) && is_dir($source_dir.$file)) 86 | { 87 | $filedata[$file] = directory_map($source_dir.$file, $new_depth, $hidden); 88 | } 89 | else 90 | { 91 | $filedata[] = $file; 92 | } 93 | } 94 | 95 | closedir($fp); 96 | return $filedata; 97 | } 98 | 99 | return FALSE; 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /system/helpers/email_helper.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/helpers/language_helper.php: -------------------------------------------------------------------------------- 1 | lang->line($line); 67 | 68 | if ($for !== '') 69 | { 70 | $line = ''; 71 | } 72 | 73 | return $line; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /system/helpers/number_helper.php: -------------------------------------------------------------------------------- 1 | lang->load('number'); 65 | 66 | if ($num >= 1000000000000) 67 | { 68 | $num = round($num / 1099511627776, $precision); 69 | $unit = $CI->lang->line('terabyte_abbr'); 70 | } 71 | elseif ($num >= 1000000000) 72 | { 73 | $num = round($num / 1073741824, $precision); 74 | $unit = $CI->lang->line('gigabyte_abbr'); 75 | } 76 | elseif ($num >= 1000000) 77 | { 78 | $num = round($num / 1048576, $precision); 79 | $unit = $CI->lang->line('megabyte_abbr'); 80 | } 81 | elseif ($num >= 1000) 82 | { 83 | $num = round($num / 1024, $precision); 84 | $unit = $CI->lang->line('kilobyte_abbr'); 85 | } 86 | else 87 | { 88 | $unit = $CI->lang->line('bytes'); 89 | return number_format($num).' '.$unit; 90 | } 91 | 92 | return number_format($num, $precision).' '.$unit; 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /system/helpers/path_helper.php: -------------------------------------------------------------------------------- 1 | security->xss_clean($str, $is_image); 64 | } 65 | } 66 | 67 | // ------------------------------------------------------------------------ 68 | 69 | if ( ! function_exists('sanitize_filename')) 70 | { 71 | /** 72 | * Sanitize Filename 73 | * 74 | * @param string 75 | * @return string 76 | */ 77 | function sanitize_filename($filename) 78 | { 79 | return get_instance()->security->sanitize_filename($filename); 80 | } 81 | } 82 | 83 | // -------------------------------------------------------------------- 84 | 85 | if ( ! function_exists('do_hash')) 86 | { 87 | /** 88 | * Hash encode a string 89 | * 90 | * @todo Remove in version 3.1+. 91 | * @deprecated 3.0.0 Use PHP's native hash() instead. 92 | * @param string $str 93 | * @param string $type = 'sha1' 94 | * @return string 95 | */ 96 | function do_hash($str, $type = 'sha1') 97 | { 98 | if ( ! in_array(strtolower($type), hash_algos())) 99 | { 100 | $type = 'md5'; 101 | } 102 | 103 | return hash($type, $str); 104 | } 105 | } 106 | 107 | // ------------------------------------------------------------------------ 108 | 109 | if ( ! function_exists('strip_image_tags')) 110 | { 111 | /** 112 | * Strip Image Tags 113 | * 114 | * @param string 115 | * @return string 116 | */ 117 | function strip_image_tags($str) 118 | { 119 | return get_instance()->security->strip_image_tags($str); 120 | } 121 | } 122 | 123 | // ------------------------------------------------------------------------ 124 | 125 | if ( ! function_exists('encode_php_tags')) 126 | { 127 | /** 128 | * Convert PHP tags to entities 129 | * 130 | * @param string 131 | * @return string 132 | */ 133 | function encode_php_tags($str) 134 | { 135 | return str_replace(array('', '?>'), array('<?', '?>'), $str); 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /system/helpers/typography_helper.php: -------------------------------------------------------------------------------- 1 | load->library('typography'); 64 | return $CI->typography->nl2br_except_pre($str); 65 | } 66 | } 67 | 68 | // ------------------------------------------------------------------------ 69 | 70 | if ( ! function_exists('auto_typography')) 71 | { 72 | /** 73 | * Auto Typography Wrapper Function 74 | * 75 | * @param string $str 76 | * @param bool $reduce_linebreaks = FALSE whether to reduce multiple instances of double newlines to two 77 | * @return string 78 | */ 79 | function auto_typography($str, $reduce_linebreaks = FALSE) 80 | { 81 | $CI =& get_instance(); 82 | $CI->load->library('typography'); 83 | return $CI->typography->auto_typography($str, $reduce_linebreaks); 84 | } 85 | } 86 | 87 | // -------------------------------------------------------------------- 88 | 89 | if ( ! function_exists('entity_decode')) 90 | { 91 | /** 92 | * HTML Entities Decode 93 | * 94 | * This function is a replacement for html_entity_decode() 95 | * 96 | * @param string 97 | * @param string 98 | * @return string 99 | */ 100 | function entity_decode($str, $charset = NULL) 101 | { 102 | return get_instance()->security->entity_decode($str, $charset); 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /system/helpers/xml_helper.php: -------------------------------------------------------------------------------- 1 | ', '"', "'", '-'), 76 | array('&', '<', '>', '"', ''', '-'), 77 | $str 78 | ); 79 | 80 | // Decode the temp markers back to entities 81 | $str = preg_replace('/'.$temp.'(\d+);/', '\\1;', $str); 82 | 83 | if ($protect_all === TRUE) 84 | { 85 | return preg_replace('/'.$temp.'(\w+);/', '&\\1;', $str); 86 | } 87 | 88 | return $str; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /system/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/language/english/calendar_lang.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/language/english/migration_lang.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/Cache/drivers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/Cache/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/Javascript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/Session/SessionHandlerInterface.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/Session/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /system/libraries/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /todo: -------------------------------------------------------------------------------- 1 | 1. Toast notification 2 | 2. Email notification (watering) 3 | 3. Change bootstrap theme --------------------------------------------------------------------------------