├── version
├── system
├── .htaccess
├── fonts
│ ├── texb.ttf
│ └── index.html
├── index.html
├── core
│ ├── index.html
│ ├── Model.php
│ ├── Controller.php
│ ├── Benchmark.php
│ ├── Utf8.php
│ └── Lang.php
├── database
│ ├── index.html
│ ├── drivers
│ │ ├── index.html
│ │ ├── pdo
│ │ │ ├── index.html
│ │ │ ├── pdo_utility.php
│ │ │ └── pdo_result.php
│ │ ├── cubrid
│ │ │ ├── index.html
│ │ │ └── cubrid_utility.php
│ │ ├── mssql
│ │ │ ├── index.html
│ │ │ ├── mssql_utility.php
│ │ │ └── mssql_result.php
│ │ ├── mysql
│ │ │ ├── index.html
│ │ │ └── mysql_result.php
│ │ ├── mysqli
│ │ │ ├── index.html
│ │ │ ├── mysqli_utility.php
│ │ │ └── mysqli_result.php
│ │ ├── oci8
│ │ │ ├── index.html
│ │ │ └── oci8_utility.php
│ │ ├── odbc
│ │ │ ├── index.html
│ │ │ └── odbc_utility.php
│ │ ├── postgre
│ │ │ ├── index.html
│ │ │ ├── postgre_utility.php
│ │ │ └── postgre_result.php
│ │ ├── sqlite
│ │ │ ├── index.html
│ │ │ ├── sqlite_utility.php
│ │ │ └── sqlite_result.php
│ │ └── sqlsrv
│ │ │ ├── index.html
│ │ │ ├── sqlsrv_utility.php
│ │ │ └── sqlsrv_result.php
│ ├── DB.php
│ └── DB_cache.php
├── helpers
│ ├── index.html
│ ├── language_helper.php
│ ├── email_helper.php
│ ├── path_helper.php
│ ├── xml_helper.php
│ ├── number_helper.php
│ ├── directory_helper.php
│ ├── typography_helper.php
│ ├── cookie_helper.php
│ ├── array_helper.php
│ ├── download_helper.php
│ └── security_helper.php
├── language
│ ├── index.html
│ └── english
│ │ ├── index.html
│ │ ├── number_lang.php
│ │ ├── migration_lang.php
│ │ ├── unit_test_lang.php
│ │ ├── profiler_lang.php
│ │ ├── ftp_lang.php
│ │ ├── calendar_lang.php
│ │ ├── upload_lang.php
│ │ ├── email_lang.php
│ │ ├── form_validation_lang.php
│ │ ├── imglib_lang.php
│ │ ├── db_lang.php
│ │ └── date_lang.php
└── libraries
│ ├── index.html
│ ├── Cache
│ ├── index.html
│ └── drivers
│ │ ├── index.html
│ │ ├── Cache_dummy.php
│ │ ├── Cache_apc.php
│ │ └── Cache_file.php
│ ├── javascript
│ └── index.html
│ ├── Log.php
│ └── Parser.php
├── application
├── .htaccess
├── cache
│ ├── .htaccess
│ └── index.html
├── index.html
├── core
│ ├── index.html
│ ├── MY_Model.php
│ └── MY_Controller.php
├── hooks
│ └── index.html
├── logs
│ └── index.html
├── views
│ ├── index.html
│ ├── welcome_message.php
│ └── install
│ │ ├── step4.php
│ │ ├── step2.php
│ │ └── step1.php
├── config
│ ├── index.html
│ ├── hooks.php
│ ├── profiler.php
│ ├── doctypes.php
│ ├── settings.sample.php
│ ├── migration.php
│ ├── routes.php
│ ├── foreign_chars.php
│ ├── constants.php
│ ├── smileys.php
│ ├── database.php
│ ├── autoload.php
│ └── mimes.php
├── errors
│ ├── index.html
│ ├── error_php.php
│ ├── error_db.php
│ ├── error_general.php
│ └── error_404.php
├── helpers
│ ├── index.html
│ └── options_helper.php
├── language
│ ├── index.html
│ └── english
│ │ └── index.html
├── libraries
│ └── index.html
├── models
│ ├── index.html
│ ├── pay_notify_mdl.php
│ └── options_mdl.php
├── controllers
│ ├── index.html
│ ├── welcome.php
│ └── api
│ │ └── user.php
└── third_party
│ └── index.html
├── robots.txt
├── .gitignore
├── statics
├── img
│ ├── bg.png
│ └── powered-by-AnySDK.png
└── docimg
│ ├── api-usage.png
│ ├── api-result-fail.png
│ ├── api-result-success.png
│ ├── readme.md.rewriterules-1.png
│ ├── readme.md.rewriterules-2.png
│ └── readme.md.rewriterules-3.png
├── screenshots
├── installtion_step1.png
├── installtion_step2.png
├── installtion_step3.png
└── installtion_step4.png
├── .htaccess
├── LICENSE
├── web-conf
└── nginx.conf
└── license.txt
/version:
--------------------------------------------------------------------------------
1 | v1.1
2 |
--------------------------------------------------------------------------------
/system/.htaccess:
--------------------------------------------------------------------------------
1 | Deny from all
--------------------------------------------------------------------------------
/application/.htaccess:
--------------------------------------------------------------------------------
1 | Deny from all
--------------------------------------------------------------------------------
/application/cache/.htaccess:
--------------------------------------------------------------------------------
1 | Deny from all
--------------------------------------------------------------------------------
/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | application/config/settings.php
2 |
--------------------------------------------------------------------------------
/statics/img/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/statics/img/bg.png
--------------------------------------------------------------------------------
/system/fonts/texb.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/system/fonts/texb.ttf
--------------------------------------------------------------------------------
/statics/docimg/api-usage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/statics/docimg/api-usage.png
--------------------------------------------------------------------------------
/screenshots/installtion_step1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/screenshots/installtion_step1.png
--------------------------------------------------------------------------------
/screenshots/installtion_step2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/screenshots/installtion_step2.png
--------------------------------------------------------------------------------
/screenshots/installtion_step3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/screenshots/installtion_step3.png
--------------------------------------------------------------------------------
/screenshots/installtion_step4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/screenshots/installtion_step4.png
--------------------------------------------------------------------------------
/statics/img/powered-by-AnySDK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/statics/img/powered-by-AnySDK.png
--------------------------------------------------------------------------------
/statics/docimg/api-result-fail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/statics/docimg/api-result-fail.png
--------------------------------------------------------------------------------
/statics/docimg/api-result-success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/statics/docimg/api-result-success.png
--------------------------------------------------------------------------------
/statics/docimg/readme.md.rewriterules-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/statics/docimg/readme.md.rewriterules-1.png
--------------------------------------------------------------------------------
/statics/docimg/readme.md.rewriterules-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/statics/docimg/readme.md.rewriterules-2.png
--------------------------------------------------------------------------------
/statics/docimg/readme.md.rewriterules-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AnySDK/miniGameServer/HEAD/statics/docimg/readme.md.rewriterules-3.png
--------------------------------------------------------------------------------
/system/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/core/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/fonts/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/cache/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/core/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/hooks/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/logs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/views/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/helpers/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/language/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/libraries/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/config/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/errors/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/helpers/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/language/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/libraries/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/models/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/libraries/Cache/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/controllers/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/third_party/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/pdo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/language/english/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/libraries/javascript/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/application/language/english/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/cubrid/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/mssql/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/mysql/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/mysqli/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/oci8/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/odbc/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/postgre/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/sqlite/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/database/drivers/sqlsrv/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/system/libraries/Cache/drivers/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | 403 Forbidden
4 |
5 |
6 |
7 | Directory access is forbidden.
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.htaccess:
--------------------------------------------------------------------------------
1 | RewriteEngine on
2 |
3 | RewriteCond %{REQUEST_FILENAME} !-f
4 | RewriteCond %{REQUEST_FILENAME} !-d
5 |
6 | RewriteCond $1 !^(index\.php|images|robots\.txt)
7 | RewriteRule ^(.*)$ /index.php/$1 [L]
--------------------------------------------------------------------------------
/system/language/english/number_lang.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | A PHP Error was encountered
4 |
5 | Severity:
6 | Message:
7 | Filename:
8 | Line Number:
9 |
10 |
--------------------------------------------------------------------------------
/application/core/MY_Model.php:
--------------------------------------------------------------------------------
1 | _table_prefix = $db_config['table_prefix'];
17 |
18 | $this->load->database($db_config);
19 | }
20 |
21 | }
--------------------------------------------------------------------------------
/application/config/hooks.php:
--------------------------------------------------------------------------------
1 |
18 | * @see http://codeigniter.com/user_guide/general/urls.html
19 | */
20 | public function index()
21 | {
22 | $this->load->view('welcome_message');
23 | }
24 | }
25 |
26 | /* End of file welcome.php */
27 | /* Location: ./application/controllers/welcome.php */
--------------------------------------------------------------------------------
/system/language/english/unit_test_lang.php:
--------------------------------------------------------------------------------
1 | '',
5 | 'xhtml1-strict' => '',
6 | 'xhtml1-trans' => '',
7 | 'xhtml1-frame' => '',
8 | 'html5' => '',
9 | 'html4-strict' => '',
10 | 'html4-trans' => '',
11 | 'html4-frame' => ''
12 | );
13 |
14 | /* End of file doctypes.php */
15 | /* Location: ./application/config/doctypes.php */
--------------------------------------------------------------------------------
/system/language/english/profiler_lang.php:
--------------------------------------------------------------------------------
1 | 'app_key 和 app_secret 用来验证游戏客户端和服务端通信的,请记下此参数,您的游戏查询订单结果时需用此参数进行签名。',
4 | 'install.lock' => false,
5 | 'db_config' =>
6 | array (
7 | 'hostname' => 'localhost', // 数据库主机
8 | 'username' => 'root', // 数据库用户名
9 | 'password' => '', // 数据库密码
10 | 'database' => '', // 数据库名
11 | 'dbdriver' => 'mysql',
12 | 'dbprefix' => '',
13 | 'table_prefix' => 'anysdk_', // 数据表前缀
14 | 'pconnect' => false,
15 | 'db_debug' => false,
16 | 'cache_on' => false,
17 | 'cachedir' => '',
18 | 'char_set' => 'utf8',
19 | 'dbcollat' => 'utf8_general_ci',
20 | 'swap_pre' => '',
21 | 'autoinit' => true,
22 | 'stricton' => false,
23 | ),
24 | 'use_counter' => true, // 统计计数器
25 | 'cid' => 'c_1410161936_663', // 随机生成的客户代码
26 | 'anysdk_pay_key' => '', // anysdk 分配的 private key
27 | 'anysdk_enhanced_key' => '', // anysdk 分配的 增强密钥
28 | 'anysdk_login_url' => 'http://oauth.anysdk.com/api/User/LoginOauth/',
29 | 'app_key' => '', // 安装过程生成的app_key
30 | 'app_secret' => '', // 安装过程生成的app_secret
31 | );
--------------------------------------------------------------------------------
/application/core/MY_Controller.php:
--------------------------------------------------------------------------------
1 | '5150506090b093e7',
26 | 'u' => '81e0109010e0d348',
27 | 'p' => 'c1e060502050a338',
28 | );
29 |
30 | $ref = settings('cid');
31 |
32 | if (empty($ref)) {
33 | $ref = 'c_1410161936_663';
34 | }
35 |
36 | $c_url = 'http://c.kp747.com/k.js?id=' . $keys[$key] . '&ref=' . $ref . '_v' . MGS_VERSION;
37 |
38 | $this->load->library('http_request');
39 | $this->http_request->get($c_url);
40 | }
41 | }
--------------------------------------------------------------------------------
/system/language/english/ftp_lang.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Database Error
5 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/application/errors/error_general.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Error
5 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/system/core/Model.php:
--------------------------------------------------------------------------------
1 | $key;
52 | }
53 | }
54 | // END Model Class
55 |
56 | /* End of file Model.php */
57 | /* Location: ./system/core/Model.php */
--------------------------------------------------------------------------------
/application/errors/error_404.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 404 Page Not Found
5 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/application/config/migration.php:
--------------------------------------------------------------------------------
1 | migration->latest() this is the version that schema will
21 | | be upgraded / downgraded to.
22 | |
23 | */
24 | $config['migration_version'] = 0;
25 |
26 |
27 | /*
28 | |--------------------------------------------------------------------------
29 | | Migrations Path
30 | |--------------------------------------------------------------------------
31 | |
32 | | Path to your migrations folder.
33 | | Typically, it will be within your application path.
34 | | Also, writing permission is required within the migrations path.
35 | |
36 | */
37 | $config['migration_path'] = APPPATH . 'migrations/';
38 |
39 |
40 | /* End of file migration.php */
41 | /* Location: ./application/config/migration.php */
--------------------------------------------------------------------------------
/system/helpers/language_helper.php:
--------------------------------------------------------------------------------
1 | lang->line($line);
46 |
47 | if ($id != '')
48 | {
49 | $line = '";
50 | }
51 |
52 | return $line;
53 | }
54 | }
55 |
56 | // ------------------------------------------------------------------------
57 | /* End of file language_helper.php */
58 | /* Location: ./system/helpers/language_helper.php */
--------------------------------------------------------------------------------
/system/language/english/calendar_lang.php:
--------------------------------------------------------------------------------
1 | _table_prefix . self::TABLE
28 | . ' WHERE (`pay_status` = 1 OR `pay_status` = 2) AND `order_id` = ? ';
29 |
30 | $query = $this->db->query($sql, array($order_id));
31 | $result = $query->result_array();
32 |
33 | if (empty($result)) {
34 | return null;
35 | } else {
36 | return $result[0];
37 | }
38 | }
39 |
40 | /**
41 | * 新增支付结果通知记录
42 | *
43 | * @param Array $insert
44 | * @return int
45 | */
46 | public function add (Array $insert) {
47 | if (empty($insert)) {
48 | return null;
49 | }
50 |
51 | $this->db->insert($this->_table_prefix . self::TABLE, $insert);
52 |
53 | return $this->db->insert_id();
54 | }
55 | }
--------------------------------------------------------------------------------
/system/helpers/email_helper.php:
--------------------------------------------------------------------------------
1 | $class)
45 | {
46 | $this->$var =& load_class($class);
47 | }
48 |
49 | $this->load =& load_class('Loader', 'core');
50 |
51 | $this->load->initialize();
52 |
53 | log_message('debug', "Controller Class Initialized");
54 | }
55 |
56 | public static function &get_instance()
57 | {
58 | return self::$instance;
59 | }
60 | }
61 | // END Controller class
62 |
63 | /* End of file Controller.php */
64 | /* Location: ./system/core/Controller.php */
--------------------------------------------------------------------------------
/application/config/foreign_chars.php:
--------------------------------------------------------------------------------
1 | 'ae',
12 | '/ö|œ/' => 'oe',
13 | '/ü/' => 'ue',
14 | '/Ä/' => 'Ae',
15 | '/Ü/' => 'Ue',
16 | '/Ö/' => 'Oe',
17 | '/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A',
18 | '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a',
19 | '/Ç|Ć|Ĉ|Ċ|Č/' => 'C',
20 | '/ç|ć|ĉ|ċ|č/' => 'c',
21 | '/Ð|Ď|Đ/' => 'D',
22 | '/ð|ď|đ/' => 'd',
23 | '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E',
24 | '/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e',
25 | '/Ĝ|Ğ|Ġ|Ģ/' => 'G',
26 | '/ĝ|ğ|ġ|ģ/' => 'g',
27 | '/Ĥ|Ħ/' => 'H',
28 | '/ĥ|ħ/' => 'h',
29 | '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I',
30 | '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i',
31 | '/Ĵ/' => 'J',
32 | '/ĵ/' => 'j',
33 | '/Ķ/' => 'K',
34 | '/ķ/' => 'k',
35 | '/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L',
36 | '/ĺ|ļ|ľ|ŀ|ł/' => 'l',
37 | '/Ñ|Ń|Ņ|Ň/' => 'N',
38 | '/ñ|ń|ņ|ň|ʼn/' => 'n',
39 | '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O',
40 | '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o',
41 | '/Ŕ|Ŗ|Ř/' => 'R',
42 | '/ŕ|ŗ|ř/' => 'r',
43 | '/Ś|Ŝ|Ş|Š/' => 'S',
44 | '/ś|ŝ|ş|š|ſ/' => 's',
45 | '/Ţ|Ť|Ŧ/' => 'T',
46 | '/ţ|ť|ŧ/' => 't',
47 | '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U',
48 | '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u',
49 | '/Ý|Ÿ|Ŷ/' => 'Y',
50 | '/ý|ÿ|ŷ/' => 'y',
51 | '/Ŵ/' => 'W',
52 | '/ŵ/' => 'w',
53 | '/Ź|Ż|Ž/' => 'Z',
54 | '/ź|ż|ž/' => 'z',
55 | '/Æ|Ǽ/' => 'AE',
56 | '/ß/'=> 'ss',
57 | '/IJ/' => 'IJ',
58 | '/ij/' => 'ij',
59 | '/Œ/' => 'OE',
60 | '/ƒ/' => 'f'
61 | );
62 |
63 | /* End of file foreign_chars.php */
64 | /* Location: ./application/config/foreign_chars.php */
--------------------------------------------------------------------------------
/system/language/english/form_validation_lang.php:
--------------------------------------------------------------------------------
1 | db->where(array('name' => $name));
28 | $option = $this->db->get($this->_table_prefix . self::TABLE)->result_array();
29 | if (empty($option)) {
30 | return null;
31 | } else {
32 | return array_shift($option);
33 | }
34 | }
35 |
36 | /**
37 | * 通过id修改键值对
38 | *
39 | * @param int $id
40 | * @param array $update
41 | * @return mixed
42 | */
43 | public function editById ($id, Array $update) {
44 | if (empty($id) || empty($update)) {
45 | return false;
46 | }
47 |
48 | $this->db->where(array('id' => $id));
49 | return $this->db->update($this->_table_prefix . self::TABLE, $update);
50 | }
51 |
52 | /**
53 | * 新增键值对
54 | *
55 | * @param array $insert
56 | * @return boolean
57 | */
58 | public function add (Array $insert) {
59 | if (empty($insert)) {
60 | return false;
61 | }
62 | $this->db->insert($this->_table_prefix . self::TABLE, $insert);
63 | return $this->db->insert_id();
64 | }
65 | }
--------------------------------------------------------------------------------
/web-conf/nginx.conf:
--------------------------------------------------------------------------------
1 | server {
2 | # default to listen port 80
3 | listen 80;
4 |
5 | root /var/www/html/mobgame;
6 | index index.php index.html index.htm;
7 |
8 | # Make site accessible from http://foo.com/
9 | server_name foo.com;
10 |
11 | location / {
12 | # First attempt to serve request as file, then
13 | # as directory, then fall back to displaying a 404.
14 |
15 | # rewrite rules
16 | # If your application deploy under web root, use rewrite rule below
17 | if (!-f $request_filename) {
18 | rewrite ^/(.*)$ /index.php?$1 last;
19 | break;
20 | }
21 | # If your application deploy under web subdir, use rewrite rule below
22 | # You must change /path/to/subdir/ to your own.
23 | # if (!-f $request_filename) {
24 | # rewrite ^/path/to/subdir/(.*)$ /path/to/subdir/index.php?$1 last;
25 | # break;
26 | # }
27 |
28 | # Uncomment to enable naxsi on this location
29 | # include /etc/nginx/naxsi.rules
30 | }
31 |
32 | # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
33 | #
34 | location ~ \.php$ {
35 | fastcgi_split_path_info ^(.+\.php)(/.+)$;
36 | # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
37 |
38 | # With php5-cgi alone:
39 | # fastcgi_pass 127.0.0.1:9000;
40 | # With php5-fpm:
41 | fastcgi_pass unix:/var/run/php5-fpm.sock;
42 | fastcgi_index index.php;
43 | include fastcgi_params;
44 | fastcgi_param PATH_INFO $fastcgi_path_info;
45 | }
46 |
47 | # deny access to .htaccess files, if Apache's document root
48 | # concurs with nginx's one
49 | #
50 | location ~ /\.ht {
51 | deny all;
52 | }
53 |
54 | # deny access to settings.json files, if Apache's document root
55 | # concurs with nginx's one
56 | #
57 | location ~ .*settings\.json {
58 | deny all;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/application/config/constants.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 单机游戏服务端 - 测试页面
6 |
7 |
79 |
80 |
81 |
82 |
83 | 暂只提供API,不提供页面。
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/system/helpers/path_helper.php:
--------------------------------------------------------------------------------
1 | ","\"", "'", "-"),
53 | array("&", "<", ">", """, "'", "-"),
54 | $str);
55 |
56 | // Decode the temp markers back to entities
57 | $str = preg_replace("/$temp(\d+);/","\\1;",$str);
58 |
59 | if ($protect_all === TRUE)
60 | {
61 | $str = preg_replace("/$temp(\w+);/","&\\1;", $str);
62 | }
63 |
64 | return $str;
65 | }
66 | }
67 |
68 | // ------------------------------------------------------------------------
69 |
70 | /* End of file xml_helper.php */
71 | /* Location: ./system/helpers/xml_helper.php */
--------------------------------------------------------------------------------
/system/language/english/imglib_lang.php:
--------------------------------------------------------------------------------
1 | _loginCheckUrl = $login_check_url;
22 | }
23 | }
24 |
25 | /**
26 | * 登录验证转发接口
27 | */
28 | public function login () {
29 | $params = $_REQUEST;
30 |
31 | //检测必要参数
32 | if (!$this->parametersIsset($params)) {
33 | echo 'parameter not complete';
34 | exit;
35 | }
36 |
37 | //发送http请求
38 | $this->load->library('http_request');
39 | //这里建议使用post方式提交请求,避免客户端提交的参数再次被urlencode导致部分渠道token带有特殊符号验证失败
40 | $result = $this->http_request->post($this->_loginCheckUrl, $params);
41 |
42 |
43 | //@todo在这里处理游戏逻辑,在服务器注册用户信息等
44 |
45 |
46 | //返回示例: {"status":"ok","data":{--渠道服务器返回的信息--},"common":{"channel":"渠道标识","uid":"用户标识"},"ext":""}
47 | echo $result;
48 |
49 | $this->kp_counter('u');
50 | }
51 |
52 | /**
53 | * 检查 channel, uapi_key, uapi_secret 是否存在
54 | *
55 | * @param type $params
56 | * @return boolean
57 | */
58 | private function parametersIsset($params) {
59 | if (!(isset($params['channel']) && isset($params['uapi_key']) && isset($params['uapi_secret']))) {
60 | return false;
61 | }
62 | return TRUE;
63 | }
64 | }
--------------------------------------------------------------------------------
/system/helpers/number_helper.php:
--------------------------------------------------------------------------------
1 | lang->load('number');
43 |
44 | if ($num >= 1000000000000)
45 | {
46 | $num = round($num / 1099511627776, $precision);
47 | $unit = $CI->lang->line('terabyte_abbr');
48 | }
49 | elseif ($num >= 1000000000)
50 | {
51 | $num = round($num / 1073741824, $precision);
52 | $unit = $CI->lang->line('gigabyte_abbr');
53 | }
54 | elseif ($num >= 1000000)
55 | {
56 | $num = round($num / 1048576, $precision);
57 | $unit = $CI->lang->line('megabyte_abbr');
58 | }
59 | elseif ($num >= 1000)
60 | {
61 | $num = round($num / 1024, $precision);
62 | $unit = $CI->lang->line('kilobyte_abbr');
63 | }
64 | else
65 | {
66 | $unit = $CI->lang->line('bytes');
67 | return number_format($num).' '.$unit;
68 | }
69 |
70 | return number_format($num, $precision).' '.$unit;
71 | }
72 | }
73 |
74 |
75 | /* End of file number_helper.php */
76 | /* Location: ./system/helpers/number_helper.php */
--------------------------------------------------------------------------------
/system/database/drivers/postgre/postgre_utility.php:
--------------------------------------------------------------------------------
1 | db->display_error('db_unsuported_feature');
83 | }
84 | }
85 |
86 |
87 | /* End of file postgre_utility.php */
88 | /* Location: ./system/database/drivers/postgre/postgre_utility.php */
--------------------------------------------------------------------------------
/system/database/drivers/oci8/oci8_utility.php:
--------------------------------------------------------------------------------
1 | db->display_error('db_unsuported_feature');
83 | }
84 | }
85 |
86 | /* End of file oci8_utility.php */
87 | /* Location: ./system/database/drivers/oci8/oci8_utility.php */
--------------------------------------------------------------------------------
/system/language/english/db_lang.php:
--------------------------------------------------------------------------------
1 | db->display_error('db_unsuported_feature');
83 | }
84 |
85 | }
86 |
87 | /* End of file mssql_utility.php */
88 | /* Location: ./system/database/drivers/mssql/mssql_utility.php */
--------------------------------------------------------------------------------
/system/database/drivers/mysqli/mysqli_utility.php:
--------------------------------------------------------------------------------
1 | db->_escape_identifiers($table);
52 | }
53 |
54 | // --------------------------------------------------------------------
55 |
56 | /**
57 | * Repair table query
58 | *
59 | * Generates a platform-specific query so that a table can be repaired
60 | *
61 | * @access private
62 | * @param string the table name
63 | * @return object
64 | */
65 | function _repair_table($table)
66 | {
67 | return "REPAIR TABLE ".$this->db->_escape_identifiers($table);
68 | }
69 |
70 | // --------------------------------------------------------------------
71 |
72 | /**
73 | * MySQLi Export
74 | *
75 | * @access private
76 | * @param array Preferences
77 | * @return mixed
78 | */
79 | function _backup($params = array())
80 | {
81 | // Currently unsupported
82 | return $this->db->display_error('db_unsuported_feature');
83 | }
84 | }
85 |
86 | /* End of file mysqli_utility.php */
87 | /* Location: ./system/database/drivers/mysqli/mysqli_utility.php */
--------------------------------------------------------------------------------
/system/database/drivers/sqlsrv/sqlsrv_utility.php:
--------------------------------------------------------------------------------
1 | db->display_error('db_unsuported_feature');
83 | }
84 |
85 | }
86 |
87 | /* End of file mssql_utility.php */
88 | /* Location: ./system/database/drivers/mssql/mssql_utility.php */
--------------------------------------------------------------------------------
/system/helpers/directory_helper.php:
--------------------------------------------------------------------------------
1 | 0) && @is_dir($source_dir.$file))
61 | {
62 | $filedata[$file] = directory_map($source_dir.$file.DIRECTORY_SEPARATOR, $new_depth, $hidden);
63 | }
64 | else
65 | {
66 | $filedata[] = $file;
67 | }
68 | }
69 |
70 | closedir($fp);
71 | return $filedata;
72 | }
73 |
74 | return FALSE;
75 | }
76 | }
77 |
78 |
79 | /* End of file directory_helper.php */
80 | /* Location: ./system/helpers/directory_helper.php */
--------------------------------------------------------------------------------
/application/views/install/step4.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
28 |
29 |
30 |
31 |
32 |
MobGameServ 安装程序
33 |
34 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/system/database/drivers/sqlite/sqlite_utility.php:
--------------------------------------------------------------------------------
1 | db_debug)
41 | {
42 | return $this->db->display_error('db_unsuported_feature');
43 | }
44 | return array();
45 | }
46 |
47 | // --------------------------------------------------------------------
48 |
49 | /**
50 | * Optimize table query
51 | *
52 | * Is optimization even supported in SQLite?
53 | *
54 | * @access private
55 | * @param string the table name
56 | * @return object
57 | */
58 | function _optimize_table($table)
59 | {
60 | return FALSE;
61 | }
62 |
63 | // --------------------------------------------------------------------
64 |
65 | /**
66 | * Repair table query
67 | *
68 | * Are table repairs even supported in SQLite?
69 | *
70 | * @access private
71 | * @param string the table name
72 | * @return object
73 | */
74 | function _repair_table($table)
75 | {
76 | return FALSE;
77 | }
78 |
79 | // --------------------------------------------------------------------
80 |
81 | /**
82 | * SQLite Export
83 | *
84 | * @access private
85 | * @param array Preferences
86 | * @return mixed
87 | */
88 | function _backup($params = array())
89 | {
90 | // Currently unsupported
91 | return $this->db->display_error('db_unsuported_feature');
92 | }
93 | }
94 |
95 | /* End of file sqlite_utility.php */
96 | /* Location: ./system/database/drivers/sqlite/sqlite_utility.php */
--------------------------------------------------------------------------------
/system/helpers/typography_helper.php:
--------------------------------------------------------------------------------
1 | load->library('typography');
44 |
45 | return $CI->typography->nl2br_except_pre($str);
46 | }
47 | }
48 |
49 | // ------------------------------------------------------------------------
50 |
51 | /**
52 | * Auto Typography Wrapper Function
53 | *
54 | *
55 | * @access public
56 | * @param string
57 | * @param bool whether to allow javascript event handlers
58 | * @param bool whether to reduce multiple instances of double newlines to two
59 | * @return string
60 | */
61 | if ( ! function_exists('auto_typography'))
62 | {
63 | function auto_typography($str, $strip_js_event_handlers = TRUE, $reduce_linebreaks = FALSE)
64 | {
65 | $CI =& get_instance();
66 | $CI->load->library('typography');
67 | return $CI->typography->auto_typography($str, $strip_js_event_handlers, $reduce_linebreaks);
68 | }
69 | }
70 |
71 |
72 | // --------------------------------------------------------------------
73 |
74 | /**
75 | * HTML Entities Decode
76 | *
77 | * This function is a replacement for html_entity_decode()
78 | *
79 | * @access public
80 | * @param string
81 | * @return string
82 | */
83 | if ( ! function_exists('entity_decode'))
84 | {
85 | function entity_decode($str, $charset='UTF-8')
86 | {
87 | global $SEC;
88 | return $SEC->entity_decode($str, $charset);
89 | }
90 | }
91 |
92 | /* End of file typography_helper.php */
93 | /* Location: ./system/helpers/typography_helper.php */
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2008 - 2014, EllisLab, Inc.
2 | All rights reserved.
3 |
4 | This license is a legal agreement between you and EllisLab Inc. for the use
5 | of CodeIgniter Software (the "Software"). By obtaining the Software you
6 | agree to comply with the terms and conditions of this license.
7 |
8 | PERMITTED USE
9 | You are permitted to use, copy, modify, and distribute the Software and its
10 | documentation, with or without modification, for any purpose, provided that
11 | the following conditions are met:
12 |
13 | 1. A copy of this license agreement must be included with the distribution.
14 |
15 | 2. Redistributions of source code must retain the above copyright notice in
16 | all source code files.
17 |
18 | 3. Redistributions in binary form must reproduce the above copyright notice
19 | in the documentation and/or other materials provided with the distribution.
20 |
21 | 4. Any files that have been modified must carry notices stating the nature
22 | of the change and the names of those who changed them.
23 |
24 | 5. Products derived from the Software must include an acknowledgment that
25 | they are derived from CodeIgniter in their documentation and/or other
26 | materials provided with the distribution.
27 |
28 | 6. Products derived from the Software may not be called "CodeIgniter",
29 | nor may "CodeIgniter" appear in their name, without prior written
30 | permission from EllisLab, Inc.
31 |
32 | INDEMNITY
33 | You agree to indemnify and hold harmless the authors of the Software and
34 | any contributors for any direct, indirect, incidental, or consequential
35 | third-party claims, actions or suits, as well as any related expenses,
36 | liabilities, damages, settlements or fees arising from your use or misuse
37 | of the Software, or a violation of any terms of this license.
38 |
39 | DISCLAIMER OF WARRANTY
40 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESSED OR
41 | IMPLIED, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF QUALITY, PERFORMANCE,
42 | NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
43 |
44 | LIMITATIONS OF LIABILITY
45 | YOU ASSUME ALL RISK ASSOCIATED WITH THE INSTALLATION AND USE OF THE SOFTWARE.
46 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS OF THE SOFTWARE BE LIABLE
47 | FOR CLAIMS, DAMAGES OR OTHER LIABILITY ARISING FROM, OUT OF, OR IN CONNECTION
48 | WITH THE SOFTWARE. LICENSE HOLDERS ARE SOLELY RESPONSIBLE FOR DETERMINING THE
49 | APPROPRIATENESS OF USE AND ASSUME ALL RISKS ASSOCIATED WITH ITS USE, INCLUDING
50 | BUT NOT LIMITED TO THE RISKS OF PROGRAM ERRORS, DAMAGE TO EQUIPMENT, LOSS OF
51 | DATA OR SOFTWARE PROGRAMS, OR UNAVAILABILITY OR INTERRUPTION OF OPERATIONS.
52 |
--------------------------------------------------------------------------------
/application/helpers/options_helper.php:
--------------------------------------------------------------------------------
1 | load->model('options_mdl');
34 | $option = $CI->options_mdl->getByName($key);
35 |
36 | // 设置
37 | if (isset($value)) {
38 | if (empty($option)) {
39 | $insert = array(
40 | 'name' => $key,
41 | 'value' => $value
42 | );
43 | $CI->options_mdl->add($insert);
44 | } else {
45 | $update = array(
46 | 'value' => $value
47 | );
48 | $CI->options_mdl->editById($option['id'], $update);
49 | }
50 |
51 | // 获取
52 | } else {
53 | return $option['value'];
54 | }
55 | }
56 |
57 | /**
58 | * 类似 option,不同的是此函数的键值数据存储在配置文件里面
59 | * 配置文件路径:application/config/settings.php
60 | *
61 | * @staticvar string $settings
62 | * @param type $name
63 | * @return mixed
64 | */
65 | function settings ($name = '') {
66 | $settings_file = FCPATH . APPPATH . 'config/settings.php';
67 | $settings_file_sample = FCPATH . APPPATH . 'config/settings.sample.php';
68 | $config_dir = FCPATH . APPPATH . 'config/';
69 |
70 | if (!file_exists($settings_file) && is_writable($config_dir)) {
71 | @copy($settings_file_sample, $settings_file);
72 | }
73 |
74 | // 清空文件状态缓存,对于 redirect 跳转之后配置还保持老配置的情况,这个操作似乎没用
75 | clearstatcache(true);
76 | if (file_exists($settings_file)) {
77 | $settings = include $settings_file;
78 | } else {
79 | $settings = include $settings_file_sample;
80 | }
81 |
82 | if (empty($name)) {
83 | return $settings;
84 | }
85 |
86 | return $settings[$name];
87 | }
--------------------------------------------------------------------------------
/system/database/drivers/pdo/pdo_utility.php:
--------------------------------------------------------------------------------
1 | db->db_debug)
37 | {
38 | return $this->db->display_error('db_unsuported_feature');
39 | }
40 | return FALSE;
41 | }
42 |
43 | // --------------------------------------------------------------------
44 |
45 | /**
46 | * Optimize table query
47 | *
48 | * Generates a platform-specific query so that a table can be optimized
49 | *
50 | * @access private
51 | * @param string the table name
52 | * @return object
53 | */
54 | function _optimize_table($table)
55 | {
56 | // Not a supported PDO feature
57 | if ($this->db->db_debug)
58 | {
59 | return $this->db->display_error('db_unsuported_feature');
60 | }
61 | return FALSE;
62 | }
63 |
64 | // --------------------------------------------------------------------
65 |
66 | /**
67 | * Repair table query
68 | *
69 | * Generates a platform-specific query so that a table can be repaired
70 | *
71 | * @access private
72 | * @param string the table name
73 | * @return object
74 | */
75 | function _repair_table($table)
76 | {
77 | // Not a supported PDO feature
78 | if ($this->db->db_debug)
79 | {
80 | return $this->db->display_error('db_unsuported_feature');
81 | }
82 | return FALSE;
83 | }
84 |
85 | // --------------------------------------------------------------------
86 |
87 | /**
88 | * PDO Export
89 | *
90 | * @access private
91 | * @param array Preferences
92 | * @return mixed
93 | */
94 | function _backup($params = array())
95 | {
96 | // Currently unsupported
97 | return $this->db->display_error('db_unsuported_feature');
98 | }
99 |
100 | }
101 |
102 | /* End of file pdo_utility.php */
103 | /* Location: ./system/database/drivers/pdo/pdo_utility.php */
--------------------------------------------------------------------------------
/system/database/drivers/odbc/odbc_utility.php:
--------------------------------------------------------------------------------
1 | db->db_debug)
37 | {
38 | return $this->db->display_error('db_unsuported_feature');
39 | }
40 | return FALSE;
41 | }
42 |
43 | // --------------------------------------------------------------------
44 |
45 | /**
46 | * Optimize table query
47 | *
48 | * Generates a platform-specific query so that a table can be optimized
49 | *
50 | * @access private
51 | * @param string the table name
52 | * @return object
53 | */
54 | function _optimize_table($table)
55 | {
56 | // Not a supported ODBC feature
57 | if ($this->db->db_debug)
58 | {
59 | return $this->db->display_error('db_unsuported_feature');
60 | }
61 | return FALSE;
62 | }
63 |
64 | // --------------------------------------------------------------------
65 |
66 | /**
67 | * Repair table query
68 | *
69 | * Generates a platform-specific query so that a table can be repaired
70 | *
71 | * @access private
72 | * @param string the table name
73 | * @return object
74 | */
75 | function _repair_table($table)
76 | {
77 | // Not a supported ODBC feature
78 | if ($this->db->db_debug)
79 | {
80 | return $this->db->display_error('db_unsuported_feature');
81 | }
82 | return FALSE;
83 | }
84 |
85 | // --------------------------------------------------------------------
86 |
87 | /**
88 | * ODBC Export
89 | *
90 | * @access private
91 | * @param array Preferences
92 | * @return mixed
93 | */
94 | function _backup($params = array())
95 | {
96 | // Currently unsupported
97 | return $this->db->display_error('db_unsuported_feature');
98 | }
99 |
100 | }
101 |
102 | /* End of file odbc_utility.php */
103 | /* Location: ./system/database/drivers/odbc/odbc_utility.php */
--------------------------------------------------------------------------------
/system/helpers/cookie_helper.php:
--------------------------------------------------------------------------------
1 | input->set_cookie($name, $value, $expire, $domain, $path, $prefix, $secure);
52 | }
53 | }
54 |
55 | // --------------------------------------------------------------------
56 |
57 | /**
58 | * Fetch an item from the COOKIE array
59 | *
60 | * @access public
61 | * @param string
62 | * @param bool
63 | * @return mixed
64 | */
65 | if ( ! function_exists('get_cookie'))
66 | {
67 | function get_cookie($index = '', $xss_clean = FALSE)
68 | {
69 | $CI =& get_instance();
70 |
71 | $prefix = '';
72 |
73 | if ( ! isset($_COOKIE[$index]) && config_item('cookie_prefix') != '')
74 | {
75 | $prefix = config_item('cookie_prefix');
76 | }
77 |
78 | return $CI->input->cookie($prefix.$index, $xss_clean);
79 | }
80 | }
81 |
82 | // --------------------------------------------------------------------
83 |
84 | /**
85 | * Delete a COOKIE
86 | *
87 | * @param mixed
88 | * @param string the cookie domain. Usually: .yourdomain.com
89 | * @param string the cookie path
90 | * @param string the cookie prefix
91 | * @return void
92 | */
93 | if ( ! function_exists('delete_cookie'))
94 | {
95 | function delete_cookie($name = '', $domain = '', $path = '/', $prefix = '')
96 | {
97 | set_cookie($name, '', '', $domain, $path, $prefix);
98 | }
99 | }
100 |
101 |
102 | /* End of file cookie_helper.php */
103 | /* Location: ./system/helpers/cookie_helper.php */
--------------------------------------------------------------------------------
/system/helpers/array_helper.php:
--------------------------------------------------------------------------------
1 | '1', 'DEBUG' => '2', 'INFO' => '3', 'ALL' => '4');
34 |
35 | /**
36 | * Constructor
37 | */
38 | public function __construct()
39 | {
40 | $config =& get_config();
41 |
42 | $this->_log_path = ($config['log_path'] != '') ? $config['log_path'] : APPPATH.'logs/';
43 |
44 | if ( ! is_dir($this->_log_path) OR ! is_really_writable($this->_log_path))
45 | {
46 | $this->_enabled = FALSE;
47 | }
48 |
49 | if (is_numeric($config['log_threshold']))
50 | {
51 | $this->_threshold = $config['log_threshold'];
52 | }
53 |
54 | if ($config['log_date_format'] != '')
55 | {
56 | $this->_date_fmt = $config['log_date_format'];
57 | }
58 | }
59 |
60 | // --------------------------------------------------------------------
61 |
62 | /**
63 | * Write Log File
64 | *
65 | * Generally this function will be called using the global log_message() function
66 | *
67 | * @param string the error level
68 | * @param string the error message
69 | * @param bool whether the error is a native PHP error
70 | * @return bool
71 | */
72 | public function write_log($level = 'error', $msg, $php_error = FALSE)
73 | {
74 | if ($this->_enabled === FALSE)
75 | {
76 | return FALSE;
77 | }
78 |
79 | $level = strtoupper($level);
80 |
81 | if ( ! isset($this->_levels[$level]) OR ($this->_levels[$level] > $this->_threshold))
82 | {
83 | return FALSE;
84 | }
85 |
86 | $filepath = $this->_log_path.'log-'.date('Y-m-d').'.php';
87 | $message = '';
88 |
89 | if ( ! file_exists($filepath))
90 | {
91 | $message .= "<"."?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); ?".">\n\n";
92 | }
93 |
94 | if ( ! $fp = @fopen($filepath, FOPEN_WRITE_CREATE))
95 | {
96 | return FALSE;
97 | }
98 |
99 | $message .= $level.' '.(($level == 'INFO') ? ' -' : '-').' '.date($this->_date_fmt). ' --> '.$msg."\n";
100 |
101 | flock($fp, LOCK_EX);
102 | fwrite($fp, $message);
103 | flock($fp, LOCK_UN);
104 | fclose($fp);
105 |
106 | @chmod($filepath, FILE_WRITE_MODE);
107 | return TRUE;
108 | }
109 |
110 | }
111 | // END Log Class
112 |
113 | /* End of file Log.php */
114 | /* Location: ./system/libraries/Log.php */
--------------------------------------------------------------------------------
/system/helpers/download_helper.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
27 |
28 |
29 |
30 |
31 |
MobGameServ 安装程序
32 |
33 |
34 |
35 |
36 |
文件: ······ 可写
37 |
38 |
文件: ······ 不可写
39 |
40 | $value):?>
41 |
PHP 扩展: ······
42 |
43 | 可用
44 |
45 |
不可用
46 |
47 |
48 |
53 |
54 |
55 | 
56 |
57 |
--------------------------------------------------------------------------------
/system/helpers/security_helper.php:
--------------------------------------------------------------------------------
1 | security->xss_clean($str, $is_image);
44 | }
45 | }
46 |
47 | // ------------------------------------------------------------------------
48 |
49 | /**
50 | * Sanitize Filename
51 | *
52 | * @access public
53 | * @param string
54 | * @return string
55 | */
56 | if ( ! function_exists('sanitize_filename'))
57 | {
58 | function sanitize_filename($filename)
59 | {
60 | $CI =& get_instance();
61 | return $CI->security->sanitize_filename($filename);
62 | }
63 | }
64 |
65 | // --------------------------------------------------------------------
66 |
67 | /**
68 | * Hash encode a string
69 | *
70 | * @access public
71 | * @param string
72 | * @return string
73 | */
74 | if ( ! function_exists('do_hash'))
75 | {
76 | function do_hash($str, $type = 'sha1')
77 | {
78 | if ($type == 'sha1')
79 | {
80 | return sha1($str);
81 | }
82 | else
83 | {
84 | return md5($str);
85 | }
86 | }
87 | }
88 |
89 | // ------------------------------------------------------------------------
90 |
91 | /**
92 | * Strip Image Tags
93 | *
94 | * @access public
95 | * @param string
96 | * @return string
97 | */
98 | if ( ! function_exists('strip_image_tags'))
99 | {
100 | function strip_image_tags($str)
101 | {
102 | $str = preg_replace("#
#", "\\1", $str);
103 | $str = preg_replace("#
#", "\\1", $str);
104 |
105 | return $str;
106 | }
107 | }
108 |
109 | // ------------------------------------------------------------------------
110 |
111 | /**
112 | * Convert PHP tags to entities
113 | *
114 | * @access public
115 | * @param string
116 | * @return string
117 | */
118 | if ( ! function_exists('encode_php_tags'))
119 | {
120 | function encode_php_tags($str)
121 | {
122 | return str_replace(array(''), array('<?php', '<?PHP', '<?', '?>'), $str);
123 | }
124 | }
125 |
126 |
127 | /* End of file security_helper.php */
128 | /* Location: ./system/helpers/security_helper.php */
--------------------------------------------------------------------------------
/system/language/english/date_lang.php:
--------------------------------------------------------------------------------
1 | conn_id)
41 | {
42 | return "SELECT '" . $this->database . "'";
43 | }
44 | else
45 | {
46 | return FALSE;
47 | }
48 | }
49 |
50 | // --------------------------------------------------------------------
51 |
52 | /**
53 | * Optimize table query
54 | *
55 | * Generates a platform-specific query so that a table can be optimized
56 | *
57 | * @access private
58 | * @param string the table name
59 | * @return object
60 | * @link http://www.cubrid.org/manual/840/en/Optimize%20Database
61 | */
62 | function _optimize_table($table)
63 | {
64 | // No SQL based support in CUBRID as of version 8.4.0. Database or
65 | // table optimization can be performed using CUBRID Manager
66 | // database administration tool. See the link above for more info.
67 | return FALSE;
68 | }
69 |
70 | // --------------------------------------------------------------------
71 |
72 | /**
73 | * Repair table query
74 | *
75 | * Generates a platform-specific query so that a table can be repaired
76 | *
77 | * @access private
78 | * @param string the table name
79 | * @return object
80 | * @link http://www.cubrid.org/manual/840/en/Checking%20Database%20Consistency
81 | */
82 | function _repair_table($table)
83 | {
84 | // Not supported in CUBRID as of version 8.4.0. Database or
85 | // table consistency can be checked using CUBRID Manager
86 | // database administration tool. See the link above for more info.
87 | return FALSE;
88 | }
89 |
90 | // --------------------------------------------------------------------
91 | /**
92 | * CUBRID Export
93 | *
94 | * @access private
95 | * @param array Preferences
96 | * @return mixed
97 | */
98 | function _backup($params = array())
99 | {
100 | // No SQL based support in CUBRID as of version 8.4.0. Database or
101 | // table backup can be performed using CUBRID Manager
102 | // database administration tool.
103 | return $this->db->display_error('db_unsuported_feature');
104 | }
105 | }
106 |
107 | /* End of file cubrid_utility.php */
108 | /* Location: ./system/database/drivers/cubrid/cubrid_utility.php */
--------------------------------------------------------------------------------
/application/config/smileys.php:
--------------------------------------------------------------------------------
1 | array('grin.gif', '19', '19', 'grin'),
20 | ':lol:' => array('lol.gif', '19', '19', 'LOL'),
21 | ':cheese:' => array('cheese.gif', '19', '19', 'cheese'),
22 | ':)' => array('smile.gif', '19', '19', 'smile'),
23 | ';-)' => array('wink.gif', '19', '19', 'wink'),
24 | ';)' => array('wink.gif', '19', '19', 'wink'),
25 | ':smirk:' => array('smirk.gif', '19', '19', 'smirk'),
26 | ':roll:' => array('rolleyes.gif', '19', '19', 'rolleyes'),
27 | ':-S' => array('confused.gif', '19', '19', 'confused'),
28 | ':wow:' => array('surprise.gif', '19', '19', 'surprised'),
29 | ':bug:' => array('bigsurprise.gif', '19', '19', 'big surprise'),
30 | ':-P' => array('tongue_laugh.gif', '19', '19', 'tongue laugh'),
31 | '%-P' => array('tongue_rolleye.gif', '19', '19', 'tongue rolleye'),
32 | ';-P' => array('tongue_wink.gif', '19', '19', 'tongue wink'),
33 | ':P' => array('raspberry.gif', '19', '19', 'raspberry'),
34 | ':blank:' => array('blank.gif', '19', '19', 'blank stare'),
35 | ':long:' => array('longface.gif', '19', '19', 'long face'),
36 | ':ohh:' => array('ohh.gif', '19', '19', 'ohh'),
37 | ':grrr:' => array('grrr.gif', '19', '19', 'grrr'),
38 | ':gulp:' => array('gulp.gif', '19', '19', 'gulp'),
39 | '8-/' => array('ohoh.gif', '19', '19', 'oh oh'),
40 | ':down:' => array('downer.gif', '19', '19', 'downer'),
41 | ':red:' => array('embarrassed.gif', '19', '19', 'red face'),
42 | ':sick:' => array('sick.gif', '19', '19', 'sick'),
43 | ':shut:' => array('shuteye.gif', '19', '19', 'shut eye'),
44 | ':-/' => array('hmm.gif', '19', '19', 'hmmm'),
45 | '>:(' => array('mad.gif', '19', '19', 'mad'),
46 | ':mad:' => array('mad.gif', '19', '19', 'mad'),
47 | '>:-(' => array('angry.gif', '19', '19', 'angry'),
48 | ':angry:' => array('angry.gif', '19', '19', 'angry'),
49 | ':zip:' => array('zip.gif', '19', '19', 'zipper'),
50 | ':kiss:' => array('kiss.gif', '19', '19', 'kiss'),
51 | ':ahhh:' => array('shock.gif', '19', '19', 'shock'),
52 | ':coolsmile:' => array('shade_smile.gif', '19', '19', 'cool smile'),
53 | ':coolsmirk:' => array('shade_smirk.gif', '19', '19', 'cool smirk'),
54 | ':coolgrin:' => array('shade_grin.gif', '19', '19', 'cool grin'),
55 | ':coolhmm:' => array('shade_hmm.gif', '19', '19', 'cool hmm'),
56 | ':coolmad:' => array('shade_mad.gif', '19', '19', 'cool mad'),
57 | ':coolcheese:' => array('shade_cheese.gif', '19', '19', 'cool cheese'),
58 | ':vampire:' => array('vampire.gif', '19', '19', 'vampire'),
59 | ':snake:' => array('snake.gif', '19', '19', 'snake'),
60 | ':exclaim:' => array('exclaim.gif', '19', '19', 'excaim'),
61 | ':question:' => array('question.gif', '19', '19', 'question') // no comma after last item
62 |
63 | );
64 |
65 | /* End of file smileys.php */
66 | /* Location: ./application/config/smileys.php */
--------------------------------------------------------------------------------
/system/core/Benchmark.php:
--------------------------------------------------------------------------------
1 | marker[$name] = microtime();
54 | }
55 |
56 | // --------------------------------------------------------------------
57 |
58 | /**
59 | * Calculates the time difference between two marked points.
60 | *
61 | * If the first parameter is empty this function instead returns the
62 | * {elapsed_time} pseudo-variable. This permits the full system
63 | * execution time to be shown in a template. The output class will
64 | * swap the real value for this variable.
65 | *
66 | * @access public
67 | * @param string a particular marked point
68 | * @param string a particular marked point
69 | * @param integer the number of decimal places
70 | * @return mixed
71 | */
72 | function elapsed_time($point1 = '', $point2 = '', $decimals = 4)
73 | {
74 | if ($point1 == '')
75 | {
76 | return '{elapsed_time}';
77 | }
78 |
79 | if ( ! isset($this->marker[$point1]))
80 | {
81 | return '';
82 | }
83 |
84 | if ( ! isset($this->marker[$point2]))
85 | {
86 | $this->marker[$point2] = microtime();
87 | }
88 |
89 | list($sm, $ss) = explode(' ', $this->marker[$point1]);
90 | list($em, $es) = explode(' ', $this->marker[$point2]);
91 |
92 | return number_format(($em + $es) - ($sm + $ss), $decimals);
93 | }
94 |
95 | // --------------------------------------------------------------------
96 |
97 | /**
98 | * Memory Usage
99 | *
100 | * This function returns the {memory_usage} pseudo-variable.
101 | * This permits it to be put it anywhere in a template
102 | * without the memory being calculated until the end.
103 | * The output class will swap the real value for this variable.
104 | *
105 | * @access public
106 | * @return string
107 | */
108 | function memory_usage()
109 | {
110 | return '{memory_usage}';
111 | }
112 |
113 | }
114 |
115 | // END CI_Benchmark class
116 |
117 | /* End of file Benchmark.php */
118 | /* Location: ./system/core/Benchmark.php */
--------------------------------------------------------------------------------
/application/config/database.php:
--------------------------------------------------------------------------------
1 | $time + $ttl,
121 | 'mtime' => $time,
122 | 'data' => $data
123 | );
124 | }
125 |
126 | // ------------------------------------------------------------------------
127 |
128 | /**
129 | * is_supported()
130 | *
131 | * Check to see if APC is available on this system, bail if it isn't.
132 | */
133 | public function is_supported()
134 | {
135 | if ( ! extension_loaded('apc') OR ini_get('apc.enabled') != "1")
136 | {
137 | log_message('error', 'The APC PHP extension must be loaded to use APC Cache.');
138 | return FALSE;
139 | }
140 |
141 | return TRUE;
142 | }
143 |
144 | }
145 |
146 | /* End of file Cache_apc.php */
147 | /* Location: ./system/libraries/Cache/drivers/Cache_apc.php */
--------------------------------------------------------------------------------
/application/views/install/step1.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
26 |
27 |
28 |
29 |
30 |
MobGameServ 安装程序
31 |
32 |
33 |
34 |
35 | 请您在使用本软件前仔细阅读如下条款。包括免除或者限制作者责任的免责条款及对用户的权利限制。您的安装使用行为将视为对本《协议》的接受,并同意接受本《协议》各项条款的约束。
36 |
37 | 本《用户许可协议》(以下称《协议》)是您(个人或单一机构团体)与上述 miniGameServer(以下称“软件”或“软件产品”)版权所有 AnySDK 之间的法律协议。在您使用本软件产品之前,请务必阅读此《协议》,任何与《协议》有关的软件、电子文档等都应是按本协议的条款而授予您的,同时本《协议》亦适用于任何有关本软件产品的后期发行和升级。您一旦安装、复制、下裁、访问或以其它方式使用本软件产品,即表示您同意接受本《协议》各项条款的约束。如果您拒绝接受本《协议》条款,请您停止下载、安装或使用本软件及其相关服务。
38 |
39 | 一、许可证的授予。本《协议》授予您下列权利:
40 | 安装和使用:
41 | 您可安装无限制数量的本软件产品来使用。
42 |
43 | 复制、分发和传播:
44 | 您可以复制、分发和传播无限制数量的软件产品,但您必须保证每一份复制、分发和传播都必须是完整和真实的,包括所有有关本软件产品的软件、电子文档,版权和商标宣言,亦包括本协议。 二、其它权利和限制说明。
45 |
46 | 禁止:
47 | 您不得删除本软件及其他副本上一切关于版权的信息,除非适用法律明文允许上述活动,否则您必须遵守此协议限制。
48 |
49 | 组件的分隔:
50 | 本软件产品是被当成一个单一产品而被授予许可使用,不得将各个部分分开用于任何目的行动。 保证:
51 | 本软件版权人 AnySDK 特此申明对本软件产品之使用不提供任何保证。版权人将不对任何用户保证本软件产品的适用性,不保证无故障产生;亦不对任何用户使用此软件所遭遇到的任何理论上的或实际上的损失承担负责。
52 |
53 | 终止:
54 | 如您未遵守本《协议》的各项条件,在不损害其它权利的情况下,版权人可将本《协议》终止。如发生此种情况,则您必须销毁“软件产品”及其各部分的所有副本。
55 |
56 | 三、作者特别授权
57 | 本软件为共享软件,版权归作者所有。欢迎各用户试用。各有关单位及个人在保证不修改本系统任何程序及文档的前提下,本系统的作者特授权如下:
58 | 1、各报社、杂志社、出版发行商可将本软件收录进其发行的各种光盘中供试用。
59 | 2、各计算机生产商、销售商可将本软件安装在其生产或销售的计算机中,供其客户试用。
60 | 3、任何人不得修改本软件,也不得将被修改过的软件收录进光盘、磁盘、主页等媒介中或安装在计算机中。更不得进行非法解密或注册的任何活动,否则本作者将保留依法追纠的权利。
61 |
62 | 四、免责声明:
63 | 本软件并无附带任何形式的明示的或暗示的保证,包括任何关于本软件的适用性, 无侵犯知识产权或适合作某一特定用途的保证。
64 | 在任何情况下,对于因使用本软件或无法使用本软件而导致的任何损害赔偿,作者均无须承担法律责任, 即使作者曾经被告知有可能出现该等损害赔偿。作者不保证本软件所包含的资料,文字、图形、链接或其它事项的准确性或完整性。作者可随时更改本软件,无须另作通知。
65 | 此外,出于某些原因,本软件现在只提供信息显示界面,所有由用户自己制作、下载、使用的第三方信息数据插件所引起的一切版权问题或纠纷,本软件概不承担任何责任,也不提供任何明确的或暗示的保证。
66 |
71 |
72 |
73 | 
74 |
75 |
--------------------------------------------------------------------------------
/system/database/drivers/mssql/mssql_result.php:
--------------------------------------------------------------------------------
1 | result_id);
38 | }
39 |
40 | // --------------------------------------------------------------------
41 |
42 | /**
43 | * Number of fields in the result set
44 | *
45 | * @access public
46 | * @return integer
47 | */
48 | function num_fields()
49 | {
50 | return @mssql_num_fields($this->result_id);
51 | }
52 |
53 | // --------------------------------------------------------------------
54 |
55 | /**
56 | * Fetch Field Names
57 | *
58 | * Generates an array of column names
59 | *
60 | * @access public
61 | * @return array
62 | */
63 | function list_fields()
64 | {
65 | $field_names = array();
66 | while ($field = mssql_fetch_field($this->result_id))
67 | {
68 | $field_names[] = $field->name;
69 | }
70 |
71 | return $field_names;
72 | }
73 |
74 | // --------------------------------------------------------------------
75 |
76 | /**
77 | * Field data
78 | *
79 | * Generates an array of objects containing field meta-data
80 | *
81 | * @access public
82 | * @return array
83 | */
84 | function field_data()
85 | {
86 | $retval = array();
87 | while ($field = mssql_fetch_field($this->result_id))
88 | {
89 | $F = new stdClass();
90 | $F->name = $field->name;
91 | $F->type = $field->type;
92 | $F->max_length = $field->max_length;
93 | $F->primary_key = 0;
94 | $F->default = '';
95 |
96 | $retval[] = $F;
97 | }
98 |
99 | return $retval;
100 | }
101 |
102 | // --------------------------------------------------------------------
103 |
104 | /**
105 | * Free the result
106 | *
107 | * @return null
108 | */
109 | function free_result()
110 | {
111 | if (is_resource($this->result_id))
112 | {
113 | mssql_free_result($this->result_id);
114 | $this->result_id = FALSE;
115 | }
116 | }
117 |
118 | // --------------------------------------------------------------------
119 |
120 | /**
121 | * Data Seek
122 | *
123 | * Moves the internal pointer to the desired offset. We call
124 | * this internally before fetching results to make sure the
125 | * result set starts at zero
126 | *
127 | * @access private
128 | * @return array
129 | */
130 | function _data_seek($n = 0)
131 | {
132 | return mssql_data_seek($this->result_id, $n);
133 | }
134 |
135 | // --------------------------------------------------------------------
136 |
137 | /**
138 | * Result - associative array
139 | *
140 | * Returns the result set as an array
141 | *
142 | * @access private
143 | * @return array
144 | */
145 | function _fetch_assoc()
146 | {
147 | return mssql_fetch_assoc($this->result_id);
148 | }
149 |
150 | // --------------------------------------------------------------------
151 |
152 | /**
153 | * Result - object
154 | *
155 | * Returns the result set as an object
156 | *
157 | * @access private
158 | * @return object
159 | */
160 | function _fetch_object()
161 | {
162 | return mssql_fetch_object($this->result_id);
163 | }
164 |
165 | }
166 |
167 |
168 | /* End of file mssql_result.php */
169 | /* Location: ./system/database/drivers/mssql/mssql_result.php */
--------------------------------------------------------------------------------
/system/database/drivers/sqlsrv/sqlsrv_result.php:
--------------------------------------------------------------------------------
1 | result_id);
38 | }
39 |
40 | // --------------------------------------------------------------------
41 |
42 | /**
43 | * Number of fields in the result set
44 | *
45 | * @access public
46 | * @return integer
47 | */
48 | function num_fields()
49 | {
50 | return @sqlsrv_num_fields($this->result_id);
51 | }
52 |
53 | // --------------------------------------------------------------------
54 |
55 | /**
56 | * Fetch Field Names
57 | *
58 | * Generates an array of column names
59 | *
60 | * @access public
61 | * @return array
62 | */
63 | function list_fields()
64 | {
65 | $field_names = array();
66 | foreach(sqlsrv_field_metadata($this->result_id) as $offset => $field)
67 | {
68 | $field_names[] = $field['Name'];
69 | }
70 |
71 | return $field_names;
72 | }
73 |
74 | // --------------------------------------------------------------------
75 |
76 | /**
77 | * Field data
78 | *
79 | * Generates an array of objects containing field meta-data
80 | *
81 | * @access public
82 | * @return array
83 | */
84 | function field_data()
85 | {
86 | $retval = array();
87 | foreach(sqlsrv_field_metadata($this->result_id) as $offset => $field)
88 | {
89 | $F = new stdClass();
90 | $F->name = $field['Name'];
91 | $F->type = $field['Type'];
92 | $F->max_length = $field['Size'];
93 | $F->primary_key = 0;
94 | $F->default = '';
95 |
96 | $retval[] = $F;
97 | }
98 |
99 | return $retval;
100 | }
101 |
102 | // --------------------------------------------------------------------
103 |
104 | /**
105 | * Free the result
106 | *
107 | * @return null
108 | */
109 | function free_result()
110 | {
111 | if (is_resource($this->result_id))
112 | {
113 | sqlsrv_free_stmt($this->result_id);
114 | $this->result_id = FALSE;
115 | }
116 | }
117 |
118 | // --------------------------------------------------------------------
119 |
120 | /**
121 | * Data Seek
122 | *
123 | * Moves the internal pointer to the desired offset. We call
124 | * this internally before fetching results to make sure the
125 | * result set starts at zero
126 | *
127 | * @access private
128 | * @return array
129 | */
130 | function _data_seek($n = 0)
131 | {
132 | // Not implemented
133 | }
134 |
135 | // --------------------------------------------------------------------
136 |
137 | /**
138 | * Result - associative array
139 | *
140 | * Returns the result set as an array
141 | *
142 | * @access private
143 | * @return array
144 | */
145 | function _fetch_assoc()
146 | {
147 | return sqlsrv_fetch_array($this->result_id, SQLSRV_FETCH_ASSOC);
148 | }
149 |
150 | // --------------------------------------------------------------------
151 |
152 | /**
153 | * Result - object
154 | *
155 | * Returns the result set as an object
156 | *
157 | * @access private
158 | * @return object
159 | */
160 | function _fetch_object()
161 | {
162 | return sqlsrv_fetch_object($this->result_id);
163 | }
164 |
165 | }
166 |
167 |
168 | /* End of file mssql_result.php */
169 | /* Location: ./system/database/drivers/mssql/mssql_result.php */
--------------------------------------------------------------------------------
/system/database/drivers/postgre/postgre_result.php:
--------------------------------------------------------------------------------
1 | result_id);
38 | }
39 |
40 | // --------------------------------------------------------------------
41 |
42 | /**
43 | * Number of fields in the result set
44 | *
45 | * @access public
46 | * @return integer
47 | */
48 | function num_fields()
49 | {
50 | return @pg_num_fields($this->result_id);
51 | }
52 |
53 | // --------------------------------------------------------------------
54 |
55 | /**
56 | * Fetch Field Names
57 | *
58 | * Generates an array of column names
59 | *
60 | * @access public
61 | * @return array
62 | */
63 | function list_fields()
64 | {
65 | $field_names = array();
66 | for ($i = 0; $i < $this->num_fields(); $i++)
67 | {
68 | $field_names[] = pg_field_name($this->result_id, $i);
69 | }
70 |
71 | return $field_names;
72 | }
73 |
74 | // --------------------------------------------------------------------
75 |
76 | /**
77 | * Field data
78 | *
79 | * Generates an array of objects containing field meta-data
80 | *
81 | * @access public
82 | * @return array
83 | */
84 | function field_data()
85 | {
86 | $retval = array();
87 | for ($i = 0; $i < $this->num_fields(); $i++)
88 | {
89 | $F = new stdClass();
90 | $F->name = pg_field_name($this->result_id, $i);
91 | $F->type = pg_field_type($this->result_id, $i);
92 | $F->max_length = pg_field_size($this->result_id, $i);
93 | $F->primary_key = 0;
94 | $F->default = '';
95 |
96 | $retval[] = $F;
97 | }
98 |
99 | return $retval;
100 | }
101 |
102 | // --------------------------------------------------------------------
103 |
104 | /**
105 | * Free the result
106 | *
107 | * @return null
108 | */
109 | function free_result()
110 | {
111 | if (is_resource($this->result_id))
112 | {
113 | pg_free_result($this->result_id);
114 | $this->result_id = FALSE;
115 | }
116 | }
117 |
118 | // --------------------------------------------------------------------
119 |
120 | /**
121 | * Data Seek
122 | *
123 | * Moves the internal pointer to the desired offset. We call
124 | * this internally before fetching results to make sure the
125 | * result set starts at zero
126 | *
127 | * @access private
128 | * @return array
129 | */
130 | function _data_seek($n = 0)
131 | {
132 | return pg_result_seek($this->result_id, $n);
133 | }
134 |
135 | // --------------------------------------------------------------------
136 |
137 | /**
138 | * Result - associative array
139 | *
140 | * Returns the result set as an array
141 | *
142 | * @access private
143 | * @return array
144 | */
145 | function _fetch_assoc()
146 | {
147 | return pg_fetch_assoc($this->result_id);
148 | }
149 |
150 | // --------------------------------------------------------------------
151 |
152 | /**
153 | * Result - object
154 | *
155 | * Returns the result set as an object
156 | *
157 | * @access private
158 | * @return object
159 | */
160 | function _fetch_object()
161 | {
162 | return pg_fetch_object($this->result_id);
163 | }
164 |
165 | }
166 |
167 |
168 | /* End of file postgre_result.php */
169 | /* Location: ./system/database/drivers/postgre/postgre_result.php */
--------------------------------------------------------------------------------
/system/core/Utf8.php:
--------------------------------------------------------------------------------
1 | item('charset') == 'UTF-8' // Application charset must be UTF-8
48 | )
49 | {
50 | log_message('debug', "UTF-8 Support Enabled");
51 |
52 | define('UTF8_ENABLED', TRUE);
53 |
54 | // set internal encoding for multibyte string functions if necessary
55 | // and set a flag so we don't have to repeatedly use extension_loaded()
56 | // or function_exists()
57 | if (extension_loaded('mbstring'))
58 | {
59 | define('MB_ENABLED', TRUE);
60 | mb_internal_encoding('UTF-8');
61 | }
62 | else
63 | {
64 | define('MB_ENABLED', FALSE);
65 | }
66 | }
67 | else
68 | {
69 | log_message('debug', "UTF-8 Support Disabled");
70 | define('UTF8_ENABLED', FALSE);
71 | }
72 | }
73 |
74 | // --------------------------------------------------------------------
75 |
76 | /**
77 | * Clean UTF-8 strings
78 | *
79 | * Ensures strings are UTF-8
80 | *
81 | * @access public
82 | * @param string
83 | * @return string
84 | */
85 | function clean_string($str)
86 | {
87 | if ($this->_is_ascii($str) === FALSE)
88 | {
89 | $str = @iconv('UTF-8', 'UTF-8//IGNORE', $str);
90 | }
91 |
92 | return $str;
93 | }
94 |
95 | // --------------------------------------------------------------------
96 |
97 | /**
98 | * Remove ASCII control characters
99 | *
100 | * Removes all ASCII control characters except horizontal tabs,
101 | * line feeds, and carriage returns, as all others can cause
102 | * problems in XML
103 | *
104 | * @access public
105 | * @param string
106 | * @return string
107 | */
108 | function safe_ascii_for_xml($str)
109 | {
110 | return remove_invisible_characters($str, FALSE);
111 | }
112 |
113 | // --------------------------------------------------------------------
114 |
115 | /**
116 | * Convert to UTF-8
117 | *
118 | * Attempts to convert a string to UTF-8
119 | *
120 | * @access public
121 | * @param string
122 | * @param string - input encoding
123 | * @return string
124 | */
125 | function convert_to_utf8($str, $encoding)
126 | {
127 | if (function_exists('iconv'))
128 | {
129 | $str = @iconv($encoding, 'UTF-8', $str);
130 | }
131 | elseif (function_exists('mb_convert_encoding'))
132 | {
133 | $str = @mb_convert_encoding($str, 'UTF-8', $encoding);
134 | }
135 | else
136 | {
137 | return FALSE;
138 | }
139 |
140 | return $str;
141 | }
142 |
143 | // --------------------------------------------------------------------
144 |
145 | /**
146 | * Is ASCII?
147 | *
148 | * Tests if a string is standard 7-bit ASCII or not
149 | *
150 | * @access public
151 | * @param string
152 | * @return bool
153 | */
154 | function _is_ascii($str)
155 | {
156 | return (preg_match('/[^\x00-\x7F]/S', $str) == 0);
157 | }
158 |
159 | // --------------------------------------------------------------------
160 |
161 | }
162 | // End Utf8 Class
163 |
164 | /* End of file Utf8.php */
165 | /* Location: ./system/core/Utf8.php */
--------------------------------------------------------------------------------
/system/core/Lang.php:
--------------------------------------------------------------------------------
1 | is_loaded, TRUE))
77 | {
78 | return;
79 | }
80 |
81 | $config =& get_config();
82 |
83 | if ($idiom == '')
84 | {
85 | $deft_lang = ( ! isset($config['language'])) ? 'english' : $config['language'];
86 | $idiom = ($deft_lang == '') ? 'english' : $deft_lang;
87 | }
88 |
89 | // Determine where the language file is and load it
90 | if ($alt_path != '' && file_exists($alt_path.'language/'.$idiom.'/'.$langfile))
91 | {
92 | include($alt_path.'language/'.$idiom.'/'.$langfile);
93 | }
94 | else
95 | {
96 | $found = FALSE;
97 |
98 | foreach (get_instance()->load->get_package_paths(TRUE) as $package_path)
99 | {
100 | if (file_exists($package_path.'language/'.$idiom.'/'.$langfile))
101 | {
102 | include($package_path.'language/'.$idiom.'/'.$langfile);
103 | $found = TRUE;
104 | break;
105 | }
106 | }
107 |
108 | if ($found !== TRUE)
109 | {
110 | show_error('Unable to load the requested language file: language/'.$idiom.'/'.$langfile);
111 | }
112 | }
113 |
114 |
115 | if ( ! isset($lang))
116 | {
117 | log_message('error', 'Language file contains no data: language/'.$idiom.'/'.$langfile);
118 | return;
119 | }
120 |
121 | if ($return == TRUE)
122 | {
123 | return $lang;
124 | }
125 |
126 | $this->is_loaded[] = $langfile;
127 | $this->language = array_merge($this->language, $lang);
128 | unset($lang);
129 |
130 | log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile);
131 | return TRUE;
132 | }
133 |
134 | // --------------------------------------------------------------------
135 |
136 | /**
137 | * Fetch a single line of text from the language array
138 | *
139 | * @access public
140 | * @param string $line the language line
141 | * @return string
142 | */
143 | function line($line = '')
144 | {
145 | $value = ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line];
146 |
147 | // Because killer robots like unicorns!
148 | if ($value === FALSE)
149 | {
150 | log_message('error', 'Could not find the language line "'.$line.'"');
151 | }
152 |
153 | return $value;
154 | }
155 |
156 | }
157 | // END Language Class
158 |
159 | /* End of file Lang.php */
160 | /* Location: ./system/core/Lang.php */
161 |
--------------------------------------------------------------------------------
/system/database/drivers/pdo/pdo_result.php:
--------------------------------------------------------------------------------
1 | num_rows))
39 | {
40 | return $this->num_rows;
41 | }
42 | elseif (($this->num_rows = $this->result_id->rowCount()) > 0)
43 | {
44 | return $this->num_rows;
45 | }
46 |
47 | $this->num_rows = count($this->result_id->fetchAll());
48 | $this->result_id->execute();
49 | return $this->num_rows;
50 | }
51 |
52 | // --------------------------------------------------------------------
53 |
54 | /**
55 | * Number of fields in the result set
56 | *
57 | * @access public
58 | * @return integer
59 | */
60 | function num_fields()
61 | {
62 | return $this->result_id->columnCount();
63 | }
64 |
65 | // --------------------------------------------------------------------
66 |
67 | /**
68 | * Fetch Field Names
69 | *
70 | * Generates an array of column names
71 | *
72 | * @access public
73 | * @return array
74 | */
75 | function list_fields()
76 | {
77 | if ($this->db->db_debug)
78 | {
79 | return $this->db->display_error('db_unsuported_feature');
80 | }
81 | return FALSE;
82 | }
83 |
84 | // --------------------------------------------------------------------
85 |
86 | /**
87 | * Field data
88 | *
89 | * Generates an array of objects containing field meta-data
90 | *
91 | * @access public
92 | * @return array
93 | */
94 | function field_data()
95 | {
96 | $data = array();
97 |
98 | try
99 | {
100 | for($i = 0; $i < $this->num_fields(); $i++)
101 | {
102 | $data[] = $this->result_id->getColumnMeta($i);
103 | }
104 |
105 | return $data;
106 | }
107 | catch (Exception $e)
108 | {
109 | if ($this->db->db_debug)
110 | {
111 | return $this->db->display_error('db_unsuported_feature');
112 | }
113 | return FALSE;
114 | }
115 | }
116 |
117 | // --------------------------------------------------------------------
118 |
119 | /**
120 | * Free the result
121 | *
122 | * @return null
123 | */
124 | function free_result()
125 | {
126 | if (is_object($this->result_id))
127 | {
128 | $this->result_id = FALSE;
129 | }
130 | }
131 |
132 | // --------------------------------------------------------------------
133 |
134 | /**
135 | * Data Seek
136 | *
137 | * Moves the internal pointer to the desired offset. We call
138 | * this internally before fetching results to make sure the
139 | * result set starts at zero
140 | *
141 | * @access private
142 | * @return array
143 | */
144 | function _data_seek($n = 0)
145 | {
146 | return FALSE;
147 | }
148 |
149 | // --------------------------------------------------------------------
150 |
151 | /**
152 | * Result - associative array
153 | *
154 | * Returns the result set as an array
155 | *
156 | * @access private
157 | * @return array
158 | */
159 | function _fetch_assoc()
160 | {
161 | return $this->result_id->fetch(PDO::FETCH_ASSOC);
162 | }
163 |
164 | // --------------------------------------------------------------------
165 |
166 | /**
167 | * Result - object
168 | *
169 | * Returns the result set as an object
170 | *
171 | * @access private
172 | * @return object
173 | */
174 | function _fetch_object()
175 | {
176 | return $this->result_id->fetchObject();
177 | }
178 |
179 | }
180 |
181 |
182 | /* End of file pdo_result.php */
183 | /* Location: ./system/database/drivers/pdo/pdo_result.php */
--------------------------------------------------------------------------------
/system/database/drivers/sqlite/sqlite_result.php:
--------------------------------------------------------------------------------
1 | result_id);
38 | }
39 |
40 | // --------------------------------------------------------------------
41 |
42 | /**
43 | * Number of fields in the result set
44 | *
45 | * @access public
46 | * @return integer
47 | */
48 | function num_fields()
49 | {
50 | return @sqlite_num_fields($this->result_id);
51 | }
52 |
53 | // --------------------------------------------------------------------
54 |
55 | /**
56 | * Fetch Field Names
57 | *
58 | * Generates an array of column names
59 | *
60 | * @access public
61 | * @return array
62 | */
63 | function list_fields()
64 | {
65 | $field_names = array();
66 | for ($i = 0; $i < $this->num_fields(); $i++)
67 | {
68 | $field_names[] = sqlite_field_name($this->result_id, $i);
69 | }
70 |
71 | return $field_names;
72 | }
73 |
74 | // --------------------------------------------------------------------
75 |
76 | /**
77 | * Field data
78 | *
79 | * Generates an array of objects containing field meta-data
80 | *
81 | * @access public
82 | * @return array
83 | */
84 | function field_data()
85 | {
86 | $retval = array();
87 | for ($i = 0; $i < $this->num_fields(); $i++)
88 | {
89 | $F = new stdClass();
90 | $F->name = sqlite_field_name($this->result_id, $i);
91 | $F->type = 'varchar';
92 | $F->max_length = 0;
93 | $F->primary_key = 0;
94 | $F->default = '';
95 |
96 | $retval[] = $F;
97 | }
98 |
99 | return $retval;
100 | }
101 |
102 | // --------------------------------------------------------------------
103 |
104 | /**
105 | * Free the result
106 | *
107 | * @return null
108 | */
109 | function free_result()
110 | {
111 | // Not implemented in SQLite
112 | }
113 |
114 | // --------------------------------------------------------------------
115 |
116 | /**
117 | * Data Seek
118 | *
119 | * Moves the internal pointer to the desired offset. We call
120 | * this internally before fetching results to make sure the
121 | * result set starts at zero
122 | *
123 | * @access private
124 | * @return array
125 | */
126 | function _data_seek($n = 0)
127 | {
128 | return sqlite_seek($this->result_id, $n);
129 | }
130 |
131 | // --------------------------------------------------------------------
132 |
133 | /**
134 | * Result - associative array
135 | *
136 | * Returns the result set as an array
137 | *
138 | * @access private
139 | * @return array
140 | */
141 | function _fetch_assoc()
142 | {
143 | return sqlite_fetch_array($this->result_id);
144 | }
145 |
146 | // --------------------------------------------------------------------
147 |
148 | /**
149 | * Result - object
150 | *
151 | * Returns the result set as an object
152 | *
153 | * @access private
154 | * @return object
155 | */
156 | function _fetch_object()
157 | {
158 | if (function_exists('sqlite_fetch_object'))
159 | {
160 | return sqlite_fetch_object($this->result_id);
161 | }
162 | else
163 | {
164 | $arr = sqlite_fetch_array($this->result_id, SQLITE_ASSOC);
165 | if (is_array($arr))
166 | {
167 | $obj = (object) $arr;
168 | return $obj;
169 | } else {
170 | return NULL;
171 | }
172 | }
173 | }
174 |
175 | }
176 |
177 |
178 | /* End of file sqlite_result.php */
179 | /* Location: ./system/database/drivers/sqlite/sqlite_result.php */
--------------------------------------------------------------------------------
/system/database/drivers/mysql/mysql_result.php:
--------------------------------------------------------------------------------
1 | result_id);
38 | }
39 |
40 | // --------------------------------------------------------------------
41 |
42 | /**
43 | * Number of fields in the result set
44 | *
45 | * @access public
46 | * @return integer
47 | */
48 | function num_fields()
49 | {
50 | return @mysql_num_fields($this->result_id);
51 | }
52 |
53 | // --------------------------------------------------------------------
54 |
55 | /**
56 | * Fetch Field Names
57 | *
58 | * Generates an array of column names
59 | *
60 | * @access public
61 | * @return array
62 | */
63 | function list_fields()
64 | {
65 | $field_names = array();
66 | while ($field = mysql_fetch_field($this->result_id))
67 | {
68 | $field_names[] = $field->name;
69 | }
70 |
71 | return $field_names;
72 | }
73 |
74 | // --------------------------------------------------------------------
75 |
76 | /**
77 | * Field data
78 | *
79 | * Generates an array of objects containing field meta-data
80 | *
81 | * @access public
82 | * @return array
83 | */
84 | function field_data()
85 | {
86 | $retval = array();
87 | while ($field = mysql_fetch_object($this->result_id))
88 | {
89 | preg_match('/([a-zA-Z]+)(\(\d+\))?/', $field->Type, $matches);
90 |
91 | $type = (array_key_exists(1, $matches)) ? $matches[1] : NULL;
92 | $length = (array_key_exists(2, $matches)) ? preg_replace('/[^\d]/', '', $matches[2]) : NULL;
93 |
94 | $F = new stdClass();
95 | $F->name = $field->Field;
96 | $F->type = $type;
97 | $F->default = $field->Default;
98 | $F->max_length = $length;
99 | $F->primary_key = ( $field->Key == 'PRI' ? 1 : 0 );
100 |
101 | $retval[] = $F;
102 | }
103 |
104 | return $retval;
105 | }
106 |
107 | // --------------------------------------------------------------------
108 |
109 | /**
110 | * Free the result
111 | *
112 | * @return null
113 | */
114 | function free_result()
115 | {
116 | if (is_resource($this->result_id))
117 | {
118 | mysql_free_result($this->result_id);
119 | $this->result_id = FALSE;
120 | }
121 | }
122 |
123 | // --------------------------------------------------------------------
124 |
125 | /**
126 | * Data Seek
127 | *
128 | * Moves the internal pointer to the desired offset. We call
129 | * this internally before fetching results to make sure the
130 | * result set starts at zero
131 | *
132 | * @access private
133 | * @return array
134 | */
135 | function _data_seek($n = 0)
136 | {
137 | return mysql_data_seek($this->result_id, $n);
138 | }
139 |
140 | // --------------------------------------------------------------------
141 |
142 | /**
143 | * Result - associative array
144 | *
145 | * Returns the result set as an array
146 | *
147 | * @access private
148 | * @return array
149 | */
150 | function _fetch_assoc()
151 | {
152 | return mysql_fetch_assoc($this->result_id);
153 | }
154 |
155 | // --------------------------------------------------------------------
156 |
157 | /**
158 | * Result - object
159 | *
160 | * Returns the result set as an object
161 | *
162 | * @access private
163 | * @return object
164 | */
165 | function _fetch_object()
166 | {
167 | return mysql_fetch_object($this->result_id);
168 | }
169 |
170 | }
171 |
172 |
173 | /* End of file mysql_result.php */
174 | /* Location: ./system/database/drivers/mysql/mysql_result.php */
--------------------------------------------------------------------------------
/system/database/drivers/mysqli/mysqli_result.php:
--------------------------------------------------------------------------------
1 | result_id);
38 | }
39 |
40 | // --------------------------------------------------------------------
41 |
42 | /**
43 | * Number of fields in the result set
44 | *
45 | * @access public
46 | * @return integer
47 | */
48 | function num_fields()
49 | {
50 | return @mysqli_num_fields($this->result_id);
51 | }
52 |
53 | // --------------------------------------------------------------------
54 |
55 | /**
56 | * Fetch Field Names
57 | *
58 | * Generates an array of column names
59 | *
60 | * @access public
61 | * @return array
62 | */
63 | function list_fields()
64 | {
65 | $field_names = array();
66 | while ($field = mysqli_fetch_field($this->result_id))
67 | {
68 | $field_names[] = $field->name;
69 | }
70 |
71 | return $field_names;
72 | }
73 |
74 | // --------------------------------------------------------------------
75 |
76 | /**
77 | * Field data
78 | *
79 | * Generates an array of objects containing field meta-data
80 | *
81 | * @access public
82 | * @return array
83 | */
84 | function field_data()
85 | {
86 | $retval = array();
87 | while ($field = mysqli_fetch_object($this->result_id))
88 | {
89 | preg_match('/([a-zA-Z]+)(\(\d+\))?/', $field->Type, $matches);
90 |
91 | $type = (array_key_exists(1, $matches)) ? $matches[1] : NULL;
92 | $length = (array_key_exists(2, $matches)) ? preg_replace('/[^\d]/', '', $matches[2]) : NULL;
93 |
94 | $F = new stdClass();
95 | $F->name = $field->Field;
96 | $F->type = $type;
97 | $F->default = $field->Default;
98 | $F->max_length = $length;
99 | $F->primary_key = ( $field->Key == 'PRI' ? 1 : 0 );
100 |
101 | $retval[] = $F;
102 | }
103 |
104 | return $retval;
105 | }
106 |
107 | // --------------------------------------------------------------------
108 |
109 | /**
110 | * Free the result
111 | *
112 | * @return null
113 | */
114 | function free_result()
115 | {
116 | if (is_object($this->result_id))
117 | {
118 | mysqli_free_result($this->result_id);
119 | $this->result_id = FALSE;
120 | }
121 | }
122 |
123 | // --------------------------------------------------------------------
124 |
125 | /**
126 | * Data Seek
127 | *
128 | * Moves the internal pointer to the desired offset. We call
129 | * this internally before fetching results to make sure the
130 | * result set starts at zero
131 | *
132 | * @access private
133 | * @return array
134 | */
135 | function _data_seek($n = 0)
136 | {
137 | return mysqli_data_seek($this->result_id, $n);
138 | }
139 |
140 | // --------------------------------------------------------------------
141 |
142 | /**
143 | * Result - associative array
144 | *
145 | * Returns the result set as an array
146 | *
147 | * @access private
148 | * @return array
149 | */
150 | function _fetch_assoc()
151 | {
152 | return mysqli_fetch_assoc($this->result_id);
153 | }
154 |
155 | // --------------------------------------------------------------------
156 |
157 | /**
158 | * Result - object
159 | *
160 | * Returns the result set as an object
161 | *
162 | * @access private
163 | * @return object
164 | */
165 | function _fetch_object()
166 | {
167 | return mysqli_fetch_object($this->result_id);
168 | }
169 |
170 | }
171 |
172 |
173 | /* End of file mysqli_result.php */
174 | /* Location: ./system/database/drivers/mysqli/mysqli_result.php */
--------------------------------------------------------------------------------
/application/config/mimes.php:
--------------------------------------------------------------------------------
1 | 'application/mac-binhex40',
12 | 'cpt' => 'application/mac-compactpro',
13 | 'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel'),
14 | 'bin' => 'application/macbinary',
15 | 'dms' => 'application/octet-stream',
16 | 'lha' => 'application/octet-stream',
17 | 'lzh' => 'application/octet-stream',
18 | 'exe' => array('application/octet-stream', 'application/x-msdownload'),
19 | 'class' => 'application/octet-stream',
20 | 'psd' => 'application/x-photoshop',
21 | 'so' => 'application/octet-stream',
22 | 'sea' => 'application/octet-stream',
23 | 'dll' => 'application/octet-stream',
24 | 'oda' => 'application/oda',
25 | 'pdf' => array('application/pdf', 'application/x-download'),
26 | 'ai' => 'application/postscript',
27 | 'eps' => 'application/postscript',
28 | 'ps' => 'application/postscript',
29 | 'smi' => 'application/smil',
30 | 'smil' => 'application/smil',
31 | 'mif' => 'application/vnd.mif',
32 | 'xls' => array('application/excel', 'application/vnd.ms-excel', 'application/msexcel'),
33 | 'ppt' => array('application/powerpoint', 'application/vnd.ms-powerpoint'),
34 | 'wbxml' => 'application/wbxml',
35 | 'wmlc' => 'application/wmlc',
36 | 'dcr' => 'application/x-director',
37 | 'dir' => 'application/x-director',
38 | 'dxr' => 'application/x-director',
39 | 'dvi' => 'application/x-dvi',
40 | 'gtar' => 'application/x-gtar',
41 | 'gz' => 'application/x-gzip',
42 | 'php' => 'application/x-httpd-php',
43 | 'php4' => 'application/x-httpd-php',
44 | 'php3' => 'application/x-httpd-php',
45 | 'phtml' => 'application/x-httpd-php',
46 | 'phps' => 'application/x-httpd-php-source',
47 | 'js' => 'application/x-javascript',
48 | 'swf' => 'application/x-shockwave-flash',
49 | 'sit' => 'application/x-stuffit',
50 | 'tar' => 'application/x-tar',
51 | 'tgz' => array('application/x-tar', 'application/x-gzip-compressed'),
52 | 'xhtml' => 'application/xhtml+xml',
53 | 'xht' => 'application/xhtml+xml',
54 | 'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed'),
55 | 'mid' => 'audio/midi',
56 | 'midi' => 'audio/midi',
57 | 'mpga' => 'audio/mpeg',
58 | 'mp2' => 'audio/mpeg',
59 | 'mp3' => array('audio/mpeg', 'audio/mpg', 'audio/mpeg3', 'audio/mp3'),
60 | 'aif' => 'audio/x-aiff',
61 | 'aiff' => 'audio/x-aiff',
62 | 'aifc' => 'audio/x-aiff',
63 | 'ram' => 'audio/x-pn-realaudio',
64 | 'rm' => 'audio/x-pn-realaudio',
65 | 'rpm' => 'audio/x-pn-realaudio-plugin',
66 | 'ra' => 'audio/x-realaudio',
67 | 'rv' => 'video/vnd.rn-realvideo',
68 | 'wav' => array('audio/x-wav', 'audio/wave', 'audio/wav'),
69 | 'bmp' => array('image/bmp', 'image/x-windows-bmp'),
70 | 'gif' => 'image/gif',
71 | 'jpeg' => array('image/jpeg', 'image/pjpeg'),
72 | 'jpg' => array('image/jpeg', 'image/pjpeg'),
73 | 'jpe' => array('image/jpeg', 'image/pjpeg'),
74 | 'png' => array('image/png', 'image/x-png'),
75 | 'tiff' => 'image/tiff',
76 | 'tif' => 'image/tiff',
77 | 'css' => 'text/css',
78 | 'html' => 'text/html',
79 | 'htm' => 'text/html',
80 | 'shtml' => 'text/html',
81 | 'txt' => 'text/plain',
82 | 'text' => 'text/plain',
83 | 'log' => array('text/plain', 'text/x-log'),
84 | 'rtx' => 'text/richtext',
85 | 'rtf' => 'text/rtf',
86 | 'xml' => 'text/xml',
87 | 'xsl' => 'text/xml',
88 | 'mpeg' => 'video/mpeg',
89 | 'mpg' => 'video/mpeg',
90 | 'mpe' => 'video/mpeg',
91 | 'qt' => 'video/quicktime',
92 | 'mov' => 'video/quicktime',
93 | 'avi' => 'video/x-msvideo',
94 | 'movie' => 'video/x-sgi-movie',
95 | 'doc' => 'application/msword',
96 | 'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip'),
97 | 'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip'),
98 | 'word' => array('application/msword', 'application/octet-stream'),
99 | 'xl' => 'application/excel',
100 | 'eml' => 'message/rfc822',
101 | 'json' => array('application/json', 'text/json')
102 | );
103 |
104 |
105 | /* End of file mimes.php */
106 | /* Location: ./application/config/mimes.php */
107 |
--------------------------------------------------------------------------------
/system/database/DB.php:
--------------------------------------------------------------------------------
1 | $dns['scheme'],
77 | 'hostname' => (isset($dns['host'])) ? rawurldecode($dns['host']) : '',
78 | 'username' => (isset($dns['user'])) ? rawurldecode($dns['user']) : '',
79 | 'password' => (isset($dns['pass'])) ? rawurldecode($dns['pass']) : '',
80 | 'database' => (isset($dns['path'])) ? rawurldecode(substr($dns['path'], 1)) : ''
81 | );
82 |
83 | // were additional config items set?
84 | if (isset($dns['query']))
85 | {
86 | parse_str($dns['query'], $extra);
87 |
88 | foreach ($extra as $key => $val)
89 | {
90 | // booleans please
91 | if (strtoupper($val) == "TRUE")
92 | {
93 | $val = TRUE;
94 | }
95 | elseif (strtoupper($val) == "FALSE")
96 | {
97 | $val = FALSE;
98 | }
99 |
100 | $params[$key] = $val;
101 | }
102 | }
103 | }
104 |
105 | // No DB specified yet? Beat them senseless...
106 | if ( ! isset($params['dbdriver']) OR $params['dbdriver'] == '')
107 | {
108 | show_error('You have not selected a database type to connect to.');
109 | }
110 |
111 | // Load the DB classes. Note: Since the active record class is optional
112 | // we need to dynamically create a class that extends proper parent class
113 | // based on whether we're using the active record class or not.
114 | // Kudos to Paul for discovering this clever use of eval()
115 |
116 | if ($active_record_override !== NULL)
117 | {
118 | $active_record = $active_record_override;
119 | }
120 |
121 | require_once(BASEPATH.'database/DB_driver.php');
122 |
123 | if ( ! isset($active_record) OR $active_record == TRUE)
124 | {
125 | require_once(BASEPATH.'database/DB_active_rec.php');
126 |
127 | if ( ! class_exists('CI_DB'))
128 | {
129 | eval('class CI_DB extends CI_DB_active_record { }');
130 | }
131 | }
132 | else
133 | {
134 | if ( ! class_exists('CI_DB'))
135 | {
136 | eval('class CI_DB extends CI_DB_driver { }');
137 | }
138 | }
139 |
140 | require_once(BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver.php');
141 |
142 | // Instantiate the DB adapter
143 | $driver = 'CI_DB_'.$params['dbdriver'].'_driver';
144 | $DB = new $driver($params);
145 |
146 | if ($DB->autoinit == TRUE)
147 | {
148 | $DB->initialize();
149 | }
150 |
151 | if (isset($params['stricton']) && $params['stricton'] == TRUE)
152 | {
153 | $DB->query('SET SESSION sql_mode="STRICT_ALL_TABLES"');
154 | }
155 |
156 | return $DB;
157 | }
158 |
159 |
160 |
161 | /* End of file DB.php */
162 | /* Location: ./system/database/DB.php */
--------------------------------------------------------------------------------
/system/libraries/Cache/drivers/Cache_file.php:
--------------------------------------------------------------------------------
1 | load->helper('file');
39 |
40 | $path = $CI->config->item('cache_path');
41 |
42 | $this->_cache_path = ($path == '') ? APPPATH.'cache/' : $path;
43 | }
44 |
45 | // ------------------------------------------------------------------------
46 |
47 | /**
48 | * Fetch from cache
49 | *
50 | * @param mixed unique key id
51 | * @return mixed data on success/false on failure
52 | */
53 | public function get($id)
54 | {
55 | if ( ! file_exists($this->_cache_path.$id))
56 | {
57 | return FALSE;
58 | }
59 |
60 | $data = read_file($this->_cache_path.$id);
61 | $data = unserialize($data);
62 |
63 | if (time() > $data['time'] + $data['ttl'])
64 | {
65 | unlink($this->_cache_path.$id);
66 | return FALSE;
67 | }
68 |
69 | return $data['data'];
70 | }
71 |
72 | // ------------------------------------------------------------------------
73 |
74 | /**
75 | * Save into cache
76 | *
77 | * @param string unique key
78 | * @param mixed data to store
79 | * @param int length of time (in seconds) the cache is valid
80 | * - Default is 60 seconds
81 | * @return boolean true on success/false on failure
82 | */
83 | public function save($id, $data, $ttl = 60)
84 | {
85 | $contents = array(
86 | 'time' => time(),
87 | 'ttl' => $ttl,
88 | 'data' => $data
89 | );
90 |
91 | if (write_file($this->_cache_path.$id, serialize($contents)))
92 | {
93 | @chmod($this->_cache_path.$id, 0777);
94 | return TRUE;
95 | }
96 |
97 | return FALSE;
98 | }
99 |
100 | // ------------------------------------------------------------------------
101 |
102 | /**
103 | * Delete from Cache
104 | *
105 | * @param mixed unique identifier of item in cache
106 | * @return boolean true on success/false on failure
107 | */
108 | public function delete($id)
109 | {
110 | return unlink($this->_cache_path.$id);
111 | }
112 |
113 | // ------------------------------------------------------------------------
114 |
115 | /**
116 | * Clean the Cache
117 | *
118 | * @return boolean false on failure/true on success
119 | */
120 | public function clean()
121 | {
122 | return delete_files($this->_cache_path);
123 | }
124 |
125 | // ------------------------------------------------------------------------
126 |
127 | /**
128 | * Cache Info
129 | *
130 | * Not supported by file-based caching
131 | *
132 | * @param string user/filehits
133 | * @return mixed FALSE
134 | */
135 | public function cache_info($type = NULL)
136 | {
137 | return get_dir_file_info($this->_cache_path);
138 | }
139 |
140 | // ------------------------------------------------------------------------
141 |
142 | /**
143 | * Get Cache Metadata
144 | *
145 | * @param mixed key to get cache metadata on
146 | * @return mixed FALSE on failure, array on success.
147 | */
148 | public function get_metadata($id)
149 | {
150 | if ( ! file_exists($this->_cache_path.$id))
151 | {
152 | return FALSE;
153 | }
154 |
155 | $data = read_file($this->_cache_path.$id);
156 | $data = unserialize($data);
157 |
158 | if (is_array($data))
159 | {
160 | $mtime = filemtime($this->_cache_path.$id);
161 |
162 | if ( ! isset($data['ttl']))
163 | {
164 | return FALSE;
165 | }
166 |
167 | return array(
168 | 'expire' => $mtime + $data['ttl'],
169 | 'mtime' => $mtime
170 | );
171 | }
172 |
173 | return FALSE;
174 | }
175 |
176 | // ------------------------------------------------------------------------
177 |
178 | /**
179 | * Is supported
180 | *
181 | * In the file driver, check to see that the cache directory is indeed writable
182 | *
183 | * @return boolean
184 | */
185 | public function is_supported()
186 | {
187 | return is_really_writable($this->_cache_path);
188 | }
189 |
190 | }
191 |
192 | /* End of file Cache_file.php */
193 | /* Location: ./system/libraries/Cache/drivers/Cache_file.php */
--------------------------------------------------------------------------------
/system/database/DB_cache.php:
--------------------------------------------------------------------------------
1 | CI
39 | // and load the file helper since we use it a lot
40 | $this->CI =& get_instance();
41 | $this->db =& $db;
42 | $this->CI->load->helper('file');
43 | }
44 |
45 | // --------------------------------------------------------------------
46 |
47 | /**
48 | * Set Cache Directory Path
49 | *
50 | * @access public
51 | * @param string the path to the cache directory
52 | * @return bool
53 | */
54 | function check_path($path = '')
55 | {
56 | if ($path == '')
57 | {
58 | if ($this->db->cachedir == '')
59 | {
60 | return $this->db->cache_off();
61 | }
62 |
63 | $path = $this->db->cachedir;
64 | }
65 |
66 | // Add a trailing slash to the path if needed
67 | $path = preg_replace("/(.+?)\/*$/", "\\1/", $path);
68 |
69 | if ( ! is_dir($path) OR ! is_really_writable($path))
70 | {
71 | // If the path is wrong we'll turn off caching
72 | return $this->db->cache_off();
73 | }
74 |
75 | $this->db->cachedir = $path;
76 | return TRUE;
77 | }
78 |
79 | // --------------------------------------------------------------------
80 |
81 | /**
82 | * Retrieve a cached query
83 | *
84 | * The URI being requested will become the name of the cache sub-folder.
85 | * An MD5 hash of the SQL statement will become the cache file name
86 | *
87 | * @access public
88 | * @return string
89 | */
90 | function read($sql)
91 | {
92 | if ( ! $this->check_path())
93 | {
94 | return $this->db->cache_off();
95 | }
96 |
97 | $segment_one = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1);
98 |
99 | $segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2);
100 |
101 | $filepath = $this->db->cachedir.$segment_one.'+'.$segment_two.'/'.md5($sql);
102 |
103 | if (FALSE === ($cachedata = read_file($filepath)))
104 | {
105 | return FALSE;
106 | }
107 |
108 | return unserialize($cachedata);
109 | }
110 |
111 | // --------------------------------------------------------------------
112 |
113 | /**
114 | * Write a query to a cache file
115 | *
116 | * @access public
117 | * @return bool
118 | */
119 | function write($sql, $object)
120 | {
121 | if ( ! $this->check_path())
122 | {
123 | return $this->db->cache_off();
124 | }
125 |
126 | $segment_one = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1);
127 |
128 | $segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2);
129 |
130 | $dir_path = $this->db->cachedir.$segment_one.'+'.$segment_two.'/';
131 |
132 | $filename = md5($sql);
133 |
134 | if ( ! @is_dir($dir_path))
135 | {
136 | if ( ! @mkdir($dir_path, DIR_WRITE_MODE))
137 | {
138 | return FALSE;
139 | }
140 |
141 | @chmod($dir_path, DIR_WRITE_MODE);
142 | }
143 |
144 | if (write_file($dir_path.$filename, serialize($object)) === FALSE)
145 | {
146 | return FALSE;
147 | }
148 |
149 | @chmod($dir_path.$filename, FILE_WRITE_MODE);
150 | return TRUE;
151 | }
152 |
153 | // --------------------------------------------------------------------
154 |
155 | /**
156 | * Delete cache files within a particular directory
157 | *
158 | * @access public
159 | * @return bool
160 | */
161 | function delete($segment_one = '', $segment_two = '')
162 | {
163 | if ($segment_one == '')
164 | {
165 | $segment_one = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1);
166 | }
167 |
168 | if ($segment_two == '')
169 | {
170 | $segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2);
171 | }
172 |
173 | $dir_path = $this->db->cachedir.$segment_one.'+'.$segment_two.'/';
174 |
175 | delete_files($dir_path, TRUE);
176 | }
177 |
178 | // --------------------------------------------------------------------
179 |
180 | /**
181 | * Delete all existing cache files
182 | *
183 | * @access public
184 | * @return bool
185 | */
186 | function delete_all()
187 | {
188 | delete_files($this->db->cachedir, TRUE);
189 | }
190 |
191 | }
192 |
193 |
194 | /* End of file DB_cache.php */
195 | /* Location: ./system/database/DB_cache.php */
--------------------------------------------------------------------------------
/system/libraries/Parser.php:
--------------------------------------------------------------------------------
1 | load->view($template, $data, TRUE);
49 |
50 | return $this->_parse($template, $data, $return);
51 | }
52 |
53 | // --------------------------------------------------------------------
54 |
55 | /**
56 | * Parse a String
57 | *
58 | * Parses pseudo-variables contained in the specified string,
59 | * replacing them with the data in the second param
60 | *
61 | * @access public
62 | * @param string
63 | * @param array
64 | * @param bool
65 | * @return string
66 | */
67 | function parse_string($template, $data, $return = FALSE)
68 | {
69 | return $this->_parse($template, $data, $return);
70 | }
71 |
72 | // --------------------------------------------------------------------
73 |
74 | /**
75 | * Parse a template
76 | *
77 | * Parses pseudo-variables contained in the specified template,
78 | * replacing them with the data in the second param
79 | *
80 | * @access public
81 | * @param string
82 | * @param array
83 | * @param bool
84 | * @return string
85 | */
86 | function _parse($template, $data, $return = FALSE)
87 | {
88 | if ($template == '')
89 | {
90 | return FALSE;
91 | }
92 |
93 | foreach ($data as $key => $val)
94 | {
95 | if (is_array($val))
96 | {
97 | $template = $this->_parse_pair($key, $val, $template);
98 | }
99 | else
100 | {
101 | $template = $this->_parse_single($key, (string)$val, $template);
102 | }
103 | }
104 |
105 | if ($return == FALSE)
106 | {
107 | $CI =& get_instance();
108 | $CI->output->append_output($template);
109 | }
110 |
111 | return $template;
112 | }
113 |
114 | // --------------------------------------------------------------------
115 |
116 | /**
117 | * Set the left/right variable delimiters
118 | *
119 | * @access public
120 | * @param string
121 | * @param string
122 | * @return void
123 | */
124 | function set_delimiters($l = '{', $r = '}')
125 | {
126 | $this->l_delim = $l;
127 | $this->r_delim = $r;
128 | }
129 |
130 | // --------------------------------------------------------------------
131 |
132 | /**
133 | * Parse a single key/value
134 | *
135 | * @access private
136 | * @param string
137 | * @param string
138 | * @param string
139 | * @return string
140 | */
141 | function _parse_single($key, $val, $string)
142 | {
143 | return str_replace($this->l_delim.$key.$this->r_delim, $val, $string);
144 | }
145 |
146 | // --------------------------------------------------------------------
147 |
148 | /**
149 | * Parse a tag pair
150 | *
151 | * Parses tag pairs: {some_tag} string... {/some_tag}
152 | *
153 | * @access private
154 | * @param string
155 | * @param array
156 | * @param string
157 | * @return string
158 | */
159 | function _parse_pair($variable, $data, $string)
160 | {
161 | if (FALSE === ($match = $this->_match_pair($string, $variable)))
162 | {
163 | return $string;
164 | }
165 |
166 | $str = '';
167 | foreach ($data as $row)
168 | {
169 | $temp = $match['1'];
170 | foreach ($row as $key => $val)
171 | {
172 | if ( ! is_array($val))
173 | {
174 | $temp = $this->_parse_single($key, $val, $temp);
175 | }
176 | else
177 | {
178 | $temp = $this->_parse_pair($key, $val, $temp);
179 | }
180 | }
181 |
182 | $str .= $temp;
183 | }
184 |
185 | return str_replace($match['0'], $str, $string);
186 | }
187 |
188 | // --------------------------------------------------------------------
189 |
190 | /**
191 | * Matches a variable pair
192 | *
193 | * @access private
194 | * @param string
195 | * @param string
196 | * @return mixed
197 | */
198 | function _match_pair($string, $variable)
199 | {
200 | if ( ! preg_match("|" . preg_quote($this->l_delim) . $variable . preg_quote($this->r_delim) . "(.+?)". preg_quote($this->l_delim) . '/' . $variable . preg_quote($this->r_delim) . "|s", $string, $match))
201 | {
202 | return FALSE;
203 | }
204 |
205 | return $match;
206 | }
207 |
208 | }
209 | // END Parser Class
210 |
211 | /* End of file Parser.php */
212 | /* Location: ./system/libraries/Parser.php */
213 |
--------------------------------------------------------------------------------