├── .gitattributes
├── .htaccess
├── .user.ini
├── Dockerfile
├── LICENSE
├── README.md
├── application
├── cache
│ └── index.html
├── config
│ ├── all
│ │ ├── app.php
│ │ ├── index.html
│ │ └── language.php
│ ├── autoload.php
│ ├── config.php
│ ├── constants.php
│ ├── database.php
│ ├── doctypes.php
│ ├── foreign_chars.php
│ ├── hooks.php
│ ├── index.html
│ ├── migration.php
│ ├── mimes.php
│ ├── profiler.php
│ ├── routes.php
│ ├── smileys.php
│ └── user_agents.php
├── controllers
│ ├── Cron.php
│ ├── Export.php
│ ├── Help.php
│ ├── Import.php
│ ├── Install.php
│ ├── Json.php
│ ├── Labels.php
│ ├── Login.php
│ ├── Logout.php
│ ├── Marks.php
│ ├── Migrations.php
│ ├── Register.php
│ ├── Singletons.php
│ ├── Tags.php
│ ├── Tools.php
│ ├── User.php
│ ├── Welcome.php
│ └── index.html
├── core
│ ├── Plain_CodeIgniter.php
│ ├── Plain_Config.php
│ ├── Plain_Controller.php
│ ├── Plain_Exceptions.php
│ ├── Plain_Hooks.php
│ ├── Plain_Lang.php
│ ├── Plain_Loader.php
│ ├── Plain_Model.php
│ ├── Plain_Router.php
│ └── index.html
├── helpers
│ ├── MY_url_helper.php
│ ├── data_helper.php
│ ├── hash_helper.php
│ ├── hrecipe_helper.php
│ ├── http_build_url_helper.php
│ ├── index.html
│ ├── oembed_helper.php
│ ├── simple_html_dom.php
│ ├── validation_helper.php
│ └── view_helper.php
├── hooks
│ ├── Unmark_Languages.php
│ └── index.html
├── index.html
├── language
│ ├── english.php
│ ├── index.html
│ ├── phrases.php
│ ├── phrases_errors.php
│ └── zh-CN.php
├── libraries
│ ├── CIDatabaseSessionHandler.php
│ ├── Exceptional.php
│ ├── JSONExport.php
│ ├── JSONImport.php
│ ├── JSONImportStateMachine
│ │ ├── JSONImportStateInterface.php
│ │ ├── JSONImportStateMarks.php
│ │ ├── JSONImportStateMetaData.php
│ │ ├── JSONImportStateStart.php
│ │ └── index.html
│ ├── Mark_Import.php
│ ├── Plain_Cache.php
│ ├── Plain_Email.php
│ ├── Plain_Migration.php
│ ├── Plain_Session.php
│ ├── Uuid.php
│ └── index.html
├── logs
│ ├── index.html
│ ├── log-2020-04-30.php
│ ├── log-2020-05-05.php
│ ├── log-2020-05-27.php
│ ├── log-2020-06-23.php
│ ├── log-2020-06-24.php
│ ├── log-2020-06-25.php
│ ├── log-2020-10-05.php
│ ├── log-2020-10-06.php
│ ├── log-2020-11-07.php
│ ├── log-2020-11-08.php
│ └── log-2020-11-09.php
├── migrations
│ ├── 001_create_nilai.php
│ ├── 002_archive_stats.php
│ ├── 003_users_update.php
│ ├── 004_password_update.php
│ ├── 005_users_admin_flag.php
│ ├── 006_plain_sessions.php
│ ├── 007_batshit_crazy.php
│ ├── 008_user_token.php
│ ├── 009_delete_marks.php
│ ├── 010_tokens.php
│ ├── 2014022801_label_sort.php
│ ├── 2014112501_user_titles.php
│ └── index.html
├── models
│ ├── Labels_model.php
│ ├── Marks_model.php
│ ├── Tags_model.php
│ ├── Tokens_model.php
│ ├── User_marks_to_tags_model.php
│ ├── Users_model.php
│ ├── Users_to_marks_model.php
│ └── index.html
├── third_party
│ ├── PHP-Markdown-1.2.5
│ │ ├── License.text
│ │ ├── PHP Markdown Extra Readme.text
│ │ ├── index.html
│ │ └── markdown.php
│ └── index.html
└── views
│ ├── email
│ ├── forgot-password.php
│ ├── index.html
│ └── update-password.php
│ ├── errors
│ ├── cli
│ │ ├── error_404.php
│ │ ├── error_db.php
│ │ ├── error_exception.php
│ │ ├── error_general.php
│ │ ├── error_php.php
│ │ └── index.html
│ ├── html
│ │ ├── error_404.php
│ │ ├── error_db.php
│ │ ├── error_general.php
│ │ ├── error_php.php
│ │ └── index.html
│ └── index.html
│ ├── import
│ ├── index.html
│ └── index.php
│ ├── json
│ ├── index.html
│ └── index.php
│ ├── layouts
│ ├── accountlinks.php
│ ├── footer.php
│ ├── footer_scripts.php
│ ├── footer_unlogged_scripts.php
│ ├── header.php
│ ├── jsvars.php
│ ├── navigation.php
│ ├── navigation
│ │ ├── index.html
│ │ ├── nav_helper.php
│ │ ├── nav_icons.php
│ │ └── nav_panels.php
│ ├── sidebar.php
│ ├── sidebar
│ │ ├── index.html
│ │ └── sidebar_notices.php
│ ├── timeline.php
│ ├── topbar
│ │ ├── index.html
│ │ └── searchform.php
│ └── userforms.php
│ ├── marks
│ ├── error.php
│ ├── index.html
│ ├── index.php
│ └── info.php
│ ├── partials
│ ├── debug.php
│ └── index.html
│ ├── register
│ └── index.php
│ ├── setup.php
│ ├── singletons
│ ├── index.html
│ └── reset.php
│ └── welcome.php
├── assets
├── .htaccess
├── css
│ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7jsDJT9g.woff2
│ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7ksDJT9g.woff2
│ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDI.woff2
│ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7osDJT9g.woff2
│ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7psDJT9g.woff2
│ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7qsDJT9g.woff2
│ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7rsDJT9g.woff2
│ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qN67lqDY.woff2
│ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qNK7lqDY.woff2
│ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qNa7lqDY.woff2
│ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qNq7lqDY.woff2
│ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qO67lqDY.woff2
│ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7l.woff2
│ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qPK7lqDY.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdg18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdh18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdi18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdj18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdo18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCds18Q.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZY4lCdv18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZZMkidg18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZZMkidh18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZZMkidi18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZZMkidj18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZZMkido18Smxg.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZZMkids18Q.woff2
│ ├── 6xKwdSBYKcSV-LCoeQqfX1RYOo3qPZZMkidv18Smxg.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwkxduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlBduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwlxdu.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmBduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmRduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmhduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rwmxduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwkxduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlBduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdu.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmBduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmRduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmhduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwmxduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlBduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmBduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmRduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmhduz8A.woff2
│ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwmxduz8A.woff2
│ ├── fonts.css
│ ├── icons.data.png.css
│ ├── icons.data.svg.css
│ ├── icons.fallback.css
│ ├── selectize.css
│ ├── unmark.css
│ ├── unmark.css.map
│ └── unmark_welcome.css
├── images
│ ├── demo.gif
│ ├── feature_bookmarklet.jpg
│ ├── feature_chrome.jpg
│ ├── feature_git.jpg
│ ├── feature_import.jpg
│ ├── feature_notes.jpg
│ ├── feature_preview.jpg
│ ├── feature_tweet.jpg
│ ├── icons
│ │ ├── archive.png
│ │ ├── bell.png
│ │ ├── big_close.png
│ │ ├── check.png
│ │ ├── check_dark.png
│ │ ├── circle_arrow_down.png
│ │ ├── circle_arrow_up.png
│ │ ├── circle_check.png
│ │ ├── down.png
│ │ ├── edit.png
│ │ ├── ellipsis.png
│ │ ├── github.png
│ │ ├── go.png
│ │ ├── goto_link.png
│ │ ├── goto_title.png
│ │ ├── heading_archive.png
│ │ ├── heading_close.png
│ │ ├── heading_collapse.png
│ │ ├── heading_expand.png
│ │ ├── heading_search.png
│ │ ├── heading_tag.png
│ │ ├── heading_time.png
│ │ ├── index.html
│ │ ├── label.png
│ │ ├── large_check.png
│ │ ├── large_x.png
│ │ ├── links.png
│ │ ├── logo.png
│ │ ├── logo_text_dark.png
│ │ ├── logo_text_light.png
│ │ ├── logo_text_white.png
│ │ ├── menu_close.png
│ │ ├── menu_open.png
│ │ ├── option_down.png
│ │ ├── option_up.png
│ │ ├── search.png
│ │ ├── settings.png
│ │ ├── small_check.png
│ │ ├── small_x.png
│ │ ├── spinner.png
│ │ ├── time.png
│ │ ├── unarchive.png
│ │ ├── up.png
│ │ └── upgrade.png
│ ├── index.html
│ ├── logo.png
│ ├── logo
│ │ ├── android-chrome-150.png
│ │ ├── android-chrome-180.png
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── bookmark.jpg
│ │ ├── bookmark90.jpg
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon.ico
│ │ ├── logo-wide-128-70.png
│ │ ├── logo-wide-big.png
│ │ ├── logo128.png
│ │ └── logo64.png
│ ├── logo_text_light.png
│ └── pwa
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── apple-touch-icon.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── index.html
│ │ ├── mstile-150x150.png
│ │ └── safari-pinned-tab.svg
├── js
│ ├── plugins
│ │ ├── Chart.min.js
│ │ ├── fitvids.js
│ │ ├── hogan.js
│ │ ├── jquery.pjax.js
│ │ ├── modernizr-2.7.1.min.js
│ │ ├── selectize.min.js
│ │ └── unmark-graph.js
│ ├── production
│ │ ├── unmark.bookmarklet.js
│ │ ├── unmark.loggedin.js
│ │ ├── unmark.loggedout.js
│ │ └── unmark.plugins.js
│ └── templates
│ │ └── unmark-templates.js
└── libraries
│ └── jquery
│ └── jquery-2.1.0.min.js
├── bookmarklets
├── unmark_autoclose.js
└── unmark_default.js
├── browserconfig.xml
├── custom_example
└── readme.md
├── docker-compose.yml
├── docker-configs
└── php-custom.ini
├── export-schema.md
├── favicon.ico
├── index.php
├── license.txt
├── manifest.json
├── service-worker.js
└── system
├── core
├── Benchmark.php
├── CodeIgniter.php
├── Common.php
├── Config.php
├── Controller.php
├── Exceptions.php
├── Hooks.php
├── Input.php
├── Lang.php
├── Loader.php
├── Log.php
├── Model.php
├── Output.php
├── Router.php
├── Security.php
├── URI.php
├── Utf8.php
├── compat
│ ├── hash.php
│ ├── index.html
│ ├── mbstring.php
│ ├── password.php
│ └── standard.php
└── index.html
├── database
├── DB.php
├── DB_cache.php
├── DB_driver.php
├── DB_forge.php
├── DB_query_builder.php
├── DB_result.php
├── DB_utility.php
├── drivers
│ ├── cubrid
│ │ ├── cubrid_driver.php
│ │ ├── cubrid_forge.php
│ │ ├── cubrid_result.php
│ │ ├── cubrid_utility.php
│ │ └── index.html
│ ├── ibase
│ │ ├── ibase_driver.php
│ │ ├── ibase_forge.php
│ │ ├── ibase_result.php
│ │ ├── ibase_utility.php
│ │ └── index.html
│ ├── index.html
│ ├── mssql
│ │ ├── index.html
│ │ ├── mssql_driver.php
│ │ ├── mssql_forge.php
│ │ ├── mssql_result.php
│ │ └── mssql_utility.php
│ ├── mysql
│ │ ├── index.html
│ │ ├── mysql_driver.php
│ │ ├── mysql_forge.php
│ │ ├── mysql_result.php
│ │ └── mysql_utility.php
│ ├── mysqli
│ │ ├── index.html
│ │ ├── mysqli_driver.php
│ │ ├── mysqli_forge.php
│ │ ├── mysqli_result.php
│ │ └── mysqli_utility.php
│ ├── oci8
│ │ ├── index.html
│ │ ├── oci8_driver.php
│ │ ├── oci8_forge.php
│ │ ├── oci8_result.php
│ │ └── oci8_utility.php
│ ├── odbc
│ │ ├── index.html
│ │ ├── odbc_driver.php
│ │ ├── odbc_forge.php
│ │ ├── odbc_result.php
│ │ └── odbc_utility.php
│ ├── pdo
│ │ ├── index.html
│ │ ├── pdo_driver.php
│ │ ├── pdo_forge.php
│ │ ├── pdo_result.php
│ │ ├── pdo_utility.php
│ │ └── subdrivers
│ │ │ ├── index.html
│ │ │ ├── pdo_4d_driver.php
│ │ │ ├── pdo_4d_forge.php
│ │ │ ├── pdo_cubrid_driver.php
│ │ │ ├── pdo_cubrid_forge.php
│ │ │ ├── pdo_dblib_driver.php
│ │ │ ├── pdo_dblib_forge.php
│ │ │ ├── pdo_firebird_driver.php
│ │ │ ├── pdo_firebird_forge.php
│ │ │ ├── pdo_ibm_driver.php
│ │ │ ├── pdo_ibm_forge.php
│ │ │ ├── pdo_informix_driver.php
│ │ │ ├── pdo_informix_forge.php
│ │ │ ├── pdo_mysql_driver.php
│ │ │ ├── pdo_mysql_forge.php
│ │ │ ├── pdo_oci_driver.php
│ │ │ ├── pdo_oci_forge.php
│ │ │ ├── pdo_odbc_driver.php
│ │ │ ├── pdo_odbc_forge.php
│ │ │ ├── pdo_pgsql_driver.php
│ │ │ ├── pdo_pgsql_forge.php
│ │ │ ├── pdo_sqlite_driver.php
│ │ │ ├── pdo_sqlite_forge.php
│ │ │ ├── pdo_sqlsrv_driver.php
│ │ │ └── pdo_sqlsrv_forge.php
│ ├── postgre
│ │ ├── index.html
│ │ ├── postgre_driver.php
│ │ ├── postgre_forge.php
│ │ ├── postgre_result.php
│ │ └── postgre_utility.php
│ ├── sqlite
│ │ ├── index.html
│ │ ├── sqlite_driver.php
│ │ ├── sqlite_forge.php
│ │ ├── sqlite_result.php
│ │ └── sqlite_utility.php
│ ├── sqlite3
│ │ ├── index.html
│ │ ├── sqlite3_driver.php
│ │ ├── sqlite3_forge.php
│ │ ├── sqlite3_result.php
│ │ └── sqlite3_utility.php
│ └── sqlsrv
│ │ ├── index.html
│ │ ├── sqlsrv_driver.php
│ │ ├── sqlsrv_forge.php
│ │ ├── sqlsrv_result.php
│ │ └── sqlsrv_utility.php
└── index.html
├── fonts
├── index.html
└── texb.ttf
├── helpers
├── array_helper.php
├── captcha_helper.php
├── cookie_helper.php
├── date_helper.php
├── directory_helper.php
├── download_helper.php
├── email_helper.php
├── file_helper.php
├── form_helper.php
├── html_helper.php
├── index.html
├── inflector_helper.php
├── language_helper.php
├── number_helper.php
├── path_helper.php
├── security_helper.php
├── smiley_helper.php
├── string_helper.php
├── text_helper.php
├── typography_helper.php
├── url_helper.php
└── xml_helper.php
├── index.html
├── language
├── english
│ ├── calendar_lang.php
│ ├── date_lang.php
│ ├── db_lang.php
│ ├── email_lang.php
│ ├── form_validation_lang.php
│ ├── ftp_lang.php
│ ├── imglib_lang.php
│ ├── index.html
│ ├── migration_lang.php
│ ├── number_lang.php
│ ├── pagination_lang.php
│ ├── profiler_lang.php
│ ├── unit_test_lang.php
│ └── upload_lang.php
└── index.html
└── libraries
├── Cache
├── Cache.php
├── drivers
│ ├── Cache_apc.php
│ ├── Cache_dummy.php
│ ├── Cache_file.php
│ ├── Cache_memcached.php
│ ├── Cache_redis.php
│ ├── Cache_wincache.php
│ └── index.html
└── index.html
├── Calendar.php
├── Cart.php
├── Driver.php
├── Email.php
├── Encrypt.php
├── Encryption.php
├── Form_validation.php
├── Ftp.php
├── Image_lib.php
├── Javascript.php
├── Javascript
├── Jquery.php
└── index.html
├── Migration.php
├── Pagination.php
├── Parser.php
├── Profiler.php
├── Session
├── Session.php
├── SessionHandlerInterface.php
├── Session_driver.php
├── drivers
│ ├── Session_database_driver.php
│ ├── Session_files_driver.php
│ ├── Session_memcached_driver.php
│ ├── Session_redis_driver.php
│ └── index.html
└── index.html
├── Table.php
├── Trackback.php
├── Typography.php
├── Unit_test.php
├── Upload.php
├── User_agent.php
├── Xmlrpc.php
├── Xmlrpcs.php
├── Zip.php
└── index.html
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.htaccess:
--------------------------------------------------------------------------------
1 |
Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/config/all/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/config/all/language.php: -------------------------------------------------------------------------------- 1 | 'en_US', 9 | 'polish' => 'pl_PL', 10 | 'simple_chinese' => 'zh_CN' 11 | ); 12 | -------------------------------------------------------------------------------- /application/config/doctypes.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 */ -------------------------------------------------------------------------------- /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 */ -------------------------------------------------------------------------------- /application/config/hooks.php: -------------------------------------------------------------------------------- 1 | 'Unmark_Localization', 17 | 'function' => 'loadLanguage', 18 | 'filename' => 'Unmark_Localization.php', 19 | 'filepath' => 'hooks', 20 | );*/ 21 | 22 | // Loads language translation array 23 | $hook['pre_controller_method'][''] = array( 24 | 'class' => 'Unmark_languages', 25 | 'function' => 'loadLanguage', 26 | 'filename' => 'Unmark_Languages.php', 27 | 'filepath' => 'hooks', 28 | ); 29 | 30 | 31 | /* End of file hooks.php */ 32 | /* Location: ./application/config/hooks.php */ 33 | -------------------------------------------------------------------------------- /application/config/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/config/migration.php: -------------------------------------------------------------------------------- 1 | migration->latest() this is the version that schema will 21 | | be upgraded / downgraded to. 22 | | 23 | | Format for migration (YYYYMMDDXX format where XX is an incremented sequence of changes in selected day) 24 | | 25 | */ 26 | $config['migration_version'] = 2014112501; 27 | 28 | 29 | /* 30 | |-------------------------------------------------------------------------- 31 | | Miscellaneous Migration options 32 | |-------------------------------------------------------------------------- 33 | | 34 | | Unlikely you'll want to update these unless you know what you're doing. 35 | | 36 | | Format for migration (YYYYMMDDXX format where XX is an incremented sequence of changes in selected day) 37 | | 38 | */ 39 | $config['migration_type'] = 'unmark'; // legacy 40 | $config['migration_auto_latest'] = true; // Auto-update to the latest migration 41 | $config['migration_table'] = 'migrations'; // Table where the migration version number is stored 42 | 43 | 44 | /* 45 | |-------------------------------------------------------------------------- 46 | | Migrations Path 47 | |-------------------------------------------------------------------------- 48 | | 49 | | Path to your migrations folder. 50 | | Typically, it will be within your application path. 51 | | Also, writing permission is required within the migrations path. 52 | | 53 | */ 54 | $config['migration_path'] = APPPATH . 'migrations/'; 55 | 56 | /* 57 | * Due to switch from timestamp to unmark numbering (to support 32-bit systems), we need to add mappings 58 | * for already created migration files, to port on 64-bit systems properly 59 | * If you've created custom migrations, please add entries to this config in form of 60 | * old number (timestamp) => new number (YYYYMMDDXX format where XX is an incremented sequence of changes in selected day) 61 | * This too is legacy. 62 | */ 63 | $config['migration_mappings'] = array( 64 | '20140228091723' => '2014022801', 65 | '20141125010000' => '2014112501' 66 | ); 67 | 68 | 69 | /* End of file migration.php */ 70 | /* Location: ./application/config/migration.php */ 71 | -------------------------------------------------------------------------------- /application/config/profiler.php: -------------------------------------------------------------------------------- 1 | _<' . PHP_EOL; 21 | } 22 | 23 | public function processEmbeds() 24 | { 25 | $embedly_key = $this->config->item('embedly_api_key'); 26 | 27 | if (empty($embedly_key)) { 28 | print 'ERROR: Please add an embedly API key in order to process embeds.' . PHP_EOL; 29 | 30 | // Send exception 31 | $this->exceptional->createTrace(E_ERROR, 'No embedly API key configured. Cannot run process to find embeds.', __FILE__, __LINE__); 32 | exit; 33 | } 34 | 35 | set_time_limit(0); 36 | 37 | // Get any marks that haven't been run for embeds 38 | $this->load->model('marks_model', 'mark'); 39 | $marks = $this->mark->read("embed_processed = '0'", self::MAX_EMBEDS_TO_PROCESS, 1, 'mark_id, url'); 40 | 41 | if (isset($marks[0]->mark_id)) { 42 | $this->load->helper('oembed'); 43 | foreach($marks as $k => $mark) { 44 | 45 | // OEmbed check 46 | // If no embed, check recipes 47 | $embed = oembed($mark->url, $embedly_key); 48 | 49 | // Set options 50 | // Set embed processed = 1 51 | $options = array(); 52 | $options['embed_processed'] = 1; 53 | 54 | // If embed is found 55 | // Set it in options 56 | if (! empty($embed)) { 57 | $options['embed'] = $embed; 58 | } 59 | 60 | $res = $this->mark->update($mark->mark_id, $options); 61 | 62 | } 63 | } 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /application/controllers/Export.php: -------------------------------------------------------------------------------- 1 | user_id) || ! is_numeric($this->user_id)) { 25 | header('Location: /'); 26 | exit; 27 | } 28 | 29 | // Set default success to false 30 | $this->data['success'] = false; 31 | 32 | } 33 | 34 | /** 35 | * Generate JSON export file for current user 36 | */ 37 | public function index() 38 | { 39 | // Enable export library 40 | $this->load->library('JSONExport'); 41 | // Add import version info 42 | $this->jsonexport->addMeta('export_version', self::EXPORT_FILE_VERSION); 43 | $this->jsonexport->addMeta('export_date', date('Y-m-d H:i:s')); 44 | // Retrieve user marks 45 | $this->load->model('users_to_marks_model', 'user_marks'); 46 | $where = 'users_to_marks.user_id='. $this->user_id; 47 | $marksCount = $this->user_marks->count($where); 48 | // Number of marks 49 | $this->jsonexport->addMeta('marks_count', $marksCount); 50 | $pages = ceil((double) $marksCount / (double) self::PAGE_SIZE); 51 | // Get page of data 52 | for($curPage=1;$curPage<=$pages;$curPage++){ 53 | $pageResults = $this->user_marks->readComplete($where, self::PAGE_SIZE, $curPage); 54 | // Add all retrieved marks 55 | if(is_array($pageResults)){ 56 | foreach($pageResults as $key=>$singleMark){ 57 | $this->jsonexport->addMark($singleMark); 58 | } 59 | // Add single mark 60 | } else if(!empty($pageResults)){ 61 | $this->jsonexport->addMark($pageResults); 62 | } 63 | } 64 | // Write the file as attachment 65 | $file = $this->jsonexport->getFileForOutput(); 66 | $this->output->set_content_type('application/json'); 67 | $this->output->set_header('Content-Disposition: attachment; filename=' . 'export.json'); 68 | while (!$file->eof()) { 69 | $this->output->append_output($file->fgets()); 70 | } 71 | } 72 | 73 | } -------------------------------------------------------------------------------- /application/controllers/Help.php: -------------------------------------------------------------------------------- 1 | load->library('session'); 13 | $user = $this->session->userdata('user'); 14 | 15 | if (! isset($user['admin']) || empty($user['admin'])) { 16 | header('Location: /'); 17 | exit; 18 | } 19 | } 20 | 21 | public function index() 22 | { 23 | 24 | // See if there is a users table 25 | // Also, be sure there _are_ users. 26 | if ( !$this->db->table_exists('users') ) { // No user table 27 | 28 | // There is no users table, run migrations to make 29 | // sure that database is up-to-date. 30 | $this->load->library('migration'); 31 | 32 | if ( ! $this->migration->current() ) 33 | { 34 | show_error($this->migration->error_string()); 35 | exit; 36 | } 37 | 38 | } 39 | 40 | // Make sure there is at least one user 41 | $this->db->from('users'); 42 | $number_of_users = $this->db->count_all_results(); 43 | 44 | // if users exist, redirect to homepage, else register 45 | $redirect = ($number_of_users > 0) ? '/' : '/register'; 46 | header('Location: ' . $redirect); 47 | exit; 48 | } 49 | 50 | public function setup() 51 | { 52 | if ($this->db->table_exists('users') === true) { 53 | header('Location: /'); 54 | exit; 55 | } 56 | 57 | $this->load->view('setup'); 58 | } 59 | 60 | // Used to update from one version to another. 61 | public function upgrade() 62 | { 63 | //$this->check_admin(); // Removed in 1.7.1. This is only applicable on unmark.it 64 | $this->load->library('migration'); 65 | 66 | if ( ! $this->migration->current() ) 67 | { 68 | show_error($this->migration->error_string()); 69 | exit; 70 | } 71 | exit(sprintf(unmark_phrase('Upgraded. Please return home.'), '/')); 72 | 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /application/controllers/Json.php: -------------------------------------------------------------------------------- 1 | data['errors'] = formatErrors(403); 15 | $this->renderJSON(); 16 | } 17 | 18 | // Check if user is logged in and using chrome extension 19 | public function chromePing() 20 | { 21 | if ($this->logged_in !== true || parent::isChromeExtension() === false) { 22 | $this->data['errors'] = formatErrors(403); 23 | } 24 | else { 25 | $this->data['success'] = true; 26 | } 27 | $this->renderJSON(); 28 | } 29 | 30 | // Catch all 31 | public function index() 32 | { 33 | $this->data['errors'] = formatErrors(404); 34 | $this->renderJSON(); 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /application/controllers/Login.php: -------------------------------------------------------------------------------- 1 | redirectIfInvalidCSRF(); 15 | 16 | $this->data['success'] = false; 17 | 18 | // Find user 19 | $this->load->model('users_model', 'user'); 20 | $user = $this->user->read("email = '" . $this->db_clean->email . "'", 1, 1); 21 | 22 | if (! isset($user->user_id)) { 23 | $this->data['message'] = sprintf(unmark_phrase('The email address `%s` was not found.'), $this->clean->email); 24 | } 25 | elseif (! isset($user->active) || empty($user->active)) { 26 | $this->data['message'] = unmark_phrase('Your account is no longer active. Please contact support.'); 27 | } 28 | else { 29 | // Check proper password 30 | if (strlen($user->password) == 32) { 31 | $match = (md5($this->clean->password) == $user->password) ? true : false; 32 | 33 | // Try to update to new password security since they are on old MD5 34 | $hash = generateHash($this->clean->password); 35 | 36 | // If hash is valid and match is valid 37 | // Upgrade users to new encryption routine 38 | if ($hash !== false && $match === true) { 39 | $res = $this->user->update("user_id = '" . $user->user_id . "'", array('password' => $hash)); 40 | } 41 | } 42 | else { 43 | $match = (verifyHash($this->clean->password, $user->password) == $user->password) ? true : false; 44 | } 45 | 46 | // Check if passwords match 47 | if ($match === false) { 48 | 49 | $this->data['message'] = unmark_phrase('Your password is incorrect. Please try again.'); 50 | } 51 | else { 52 | // At this point we are clear for takeoff 53 | // Regenerate session 54 | // Set session variables and send user on their way 55 | $add_redirect = $this->session->userdata('add_redirect'); 56 | $redirect = (empty($add_redirect)) ? '/marks' : $add_redirect; 57 | 58 | $this->session->unset_userdata('add_redirect'); 59 | $user->email = $this->clean->email; 60 | //$this->session->sess_update(); 61 | $this->sessionAddUser($user); 62 | $this->data['success'] = true; 63 | $this->data['redirect_url'] = $redirect; 64 | } 65 | } 66 | 67 | $this->renderJSON(); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /application/controllers/Logout.php: -------------------------------------------------------------------------------- 1 | sessionClear(); 15 | header('Location: /'); 16 | exit; 17 | } 18 | } -------------------------------------------------------------------------------- /application/controllers/Migrations.php: -------------------------------------------------------------------------------- 1 | load->library('migration'); 26 | 27 | if ( ! $this->migration->current() ) 28 | { 29 | show_error($this->migration->error_string()); 30 | exit(-1); 31 | } else{ 32 | echo "Migrations run successfully\n"; 33 | exit(0); 34 | } 35 | } 36 | 37 | /** 38 | * Update DB to specified version 39 | */ 40 | public function version($version) 41 | { 42 | if(!empty($version) && is_numeric($version)){ 43 | // Run migrations to make 44 | // sure that database is up-to-date. 45 | $this->load->library('migration'); 46 | 47 | if ( ! $this->migration->version($version) ) 48 | { 49 | show_error($this->migration->error_string()); 50 | exit(-1); 51 | } else{ 52 | echo "Migrations run successfully for version $version\n"; 53 | exit(0); 54 | } 55 | } 56 | } 57 | 58 | } -------------------------------------------------------------------------------- /application/controllers/Register.php: -------------------------------------------------------------------------------- 1 | config->item('plain_enable_registrations')===false) { 11 | show_error('Public registrations have been disabled.'); 12 | } 13 | } 14 | 15 | public function index() 16 | { 17 | $this->data['no_header'] = true; 18 | $this->data['no_footer'] = true; 19 | $this->view('register/index'); 20 | } 21 | 22 | public function user() 23 | { 24 | 25 | $email = (isset($this->db_clean->email)) ? $this->db_clean->email : null; 26 | $password = (isset($this->clean->password)) ? $this->clean->password : null; 27 | 28 | $this->data['success'] = false; 29 | $this->load->model('users_model', 'user'); 30 | $user = $this->user->create(array('email' => $email, 'password' => $password, 'active' => '1')); 31 | // print_r($user); 32 | // exit; 33 | // If good 34 | // Add user data to session 35 | // Set user id 36 | // Add defualt marks 37 | // Set redirect to /marks 38 | // Set default marks (can't really do this) 39 | if (isset($user->user_id)) { 40 | $this->sessionAddUser($user); 41 | 42 | // Set user id 43 | $this->user_id = $user->user_id; 44 | 45 | // Now add default marks to user account 46 | $default_marks = $this->config->item('new_account_links'); 47 | if (! empty($default_marks)) { 48 | foreach ($default_marks as $title => $arr) { 49 | $title = $this->db->escape_str($title); 50 | $url = $this->db->escape_str($arr['url']); 51 | $label_id = $this->db->escape_str($arr['label_id']); 52 | $res = parent::addMark(array('url' => $url, 'title' => $title, 'label_id' => $label_id)); 53 | } 54 | } 55 | 56 | // set redirect path 57 | $redirect = '/marks'; 58 | $this->data['success'] = true; 59 | $this->data['email'] = $email; 60 | 61 | } 62 | // If failure, get messages 63 | // Set to flash message 64 | // set redirect to root 65 | else { 66 | $redirect = '/register'; 67 | $this->setFlashMessage($user); 68 | foreach ($user as $error_code => $message) { 69 | $this->data['message'] = $message; 70 | } 71 | } 72 | 73 | // Redirect for web view or print for ajax call 74 | $this->figureView(null, $redirect); 75 | } 76 | 77 | } -------------------------------------------------------------------------------- /application/controllers/Singletons.php: -------------------------------------------------------------------------------- 1 | view('singletons/changelog', $data); 18 | } 19 | 20 | // Redirect folks awayz 21 | public function index() 22 | { 23 | header('Location: /'); 24 | exit; 25 | } 26 | 27 | // TOS 28 | public function terms() 29 | { 30 | $this->view('singletons/terms'); 31 | } 32 | 33 | // Reset password View 34 | public function reset($token=null) 35 | { 36 | $this->data['token'] = $token; 37 | $this->data['no_header'] = true; 38 | $this->data['no_footer'] = true; 39 | $this->view('singletons/reset'); 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /application/controllers/Tags.php: -------------------------------------------------------------------------------- 1 | load->model('tags_model', 'tags'); 14 | } 15 | 16 | public function index($page=1) 17 | { 18 | 19 | // Figure the correct starting page 20 | $page = (! is_numeric($page) || $page < 0) ? 1 : $page; 21 | 22 | // Where 23 | $where = "tags.tag_id > 0"; 24 | 25 | // Read the complete user marks records 26 | $tags = $this->tags->read($where, $this->limit, $page); 27 | 28 | // If no tags, return error 29 | // Else return tags 30 | if ($tags === false) { 31 | $this->data['errors'] = formatErrors(60); 32 | } 33 | else { 34 | $this->data['tags'] = $tags; 35 | $this->data = $this->tags->getTotals($where, $page, $this->limit, $this->data); 36 | } 37 | 38 | // Figure if web or API view 39 | $this->figureView(); 40 | } 41 | 42 | // Used to get a list of popular and recent tags 43 | // Primarily used for tag autocompletion. 44 | public function getAutocomplete() 45 | { 46 | 47 | $this->load->model('user_marks_to_tags_model', 'user_tags'); 48 | $this->data['tags'] = array(); 49 | $tags_popular = array(); 50 | $tags_recent = array(); 51 | 52 | $tags_popular = $this->user_tags->getPopular($this->user_id); 53 | $tags_recent = $this->user_tags->getMostRecent($this->user_id); 54 | 55 | if (is_array($tags_recent)) { 56 | $this->data['tags'] = array_merge( $tags_popular, $tags_recent); 57 | } 58 | 59 | // Figure if web or API view 60 | $this->figureView(); 61 | } 62 | 63 | public function add() 64 | { 65 | 66 | if (! isset($this->db_clean->name) || empty($this->db_clean->name)) { 67 | $this->data['errors'] = formatErrors(61); 68 | } 69 | else { 70 | $tag = $this->tags->create(array('name' => $this->db_clean->name)); 71 | 72 | if (isset($tag->tag_id)) { 73 | $this->data['tag'] = $tag; 74 | } 75 | elseif ($tag === false) { 76 | $this->data['errors'] = formatErrors(62); 77 | } 78 | else { 79 | $this->data['errors'] = $tag; 80 | } 81 | } 82 | 83 | // Figure view 84 | $this->figureView(); 85 | } 86 | 87 | } -------------------------------------------------------------------------------- /application/controllers/Welcome.php: -------------------------------------------------------------------------------- 1 | redirectIfLoggedIn('/marks'); 14 | $this->view('welcome', array('no_header' => true, 'no_footer' => true)); 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /application/controllers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/core/Plain_Config.php: -------------------------------------------------------------------------------- 1 | $v) { 53 | if (is_array($v)) { 54 | foreach ($v as $kk => $vv) { 55 | $this->config[$k][$kk] = $vv; 56 | } 57 | } 58 | else { 59 | $this->config[$k] = $v; 60 | } 61 | } 62 | unset($config); 63 | } 64 | break; 65 | } 66 | } 67 | 68 | // Return load 69 | return $load; 70 | } 71 | 72 | } -------------------------------------------------------------------------------- /application/core/Plain_Exceptions.php: -------------------------------------------------------------------------------- 1 | load->library('exceptional'); 24 | $CI->exceptional->createTrace($severity, $message, $filepath, $line); 25 | } 26 | } 27 | 28 | // Only show php errors on development 29 | public function show_php_error($severity, $message, $filepath, $line) 30 | { 31 | self::log_exception($severity, $message, $filepath, $line); 32 | parent::show_php_error($severity, $message, $filepath, $line); 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /application/core/Plain_Lang.php: -------------------------------------------------------------------------------- 1 | is_loaded, TRUE)) 30 | { 31 | return; 32 | } 33 | 34 | $config =& get_config(); 35 | 36 | if ($idiom == '') 37 | { 38 | $deft_lang = ( ! isset($config['language'])) ? 'english' : $config['language']; 39 | $idiom = ($deft_lang == '') ? 'english' : $deft_lang; 40 | } 41 | 42 | // Determine where the language file is and load it 43 | if ($alt_path != '' && file_exists($alt_path.'language/'.$idiom.'/'.$langfile)) 44 | { 45 | include($alt_path.'language/'.$idiom.'/'.$langfile); 46 | } 47 | else 48 | { 49 | $found = FALSE; 50 | // Places to search for language files - system, application and custom folders in that order 51 | // This way custom entries override application ones which override system ones 52 | $lookupPaths = array(); 53 | array_push($lookupPaths, BASEPATH); 54 | array_push($lookupPaths, APPPATH); 55 | array_push($lookupPaths, CUSTOMPATH); 56 | foreach ($lookupPaths as $package_path) 57 | { 58 | if (file_exists($package_path.'language/'.$idiom.'/'.$langfile)) 59 | { 60 | include($package_path.'language/'.$idiom.'/'.$langfile); 61 | $found = TRUE; 62 | } 63 | } 64 | 65 | if ($found !== TRUE) 66 | { 67 | show_error('Unable to load the requested language file: language/'.$idiom.'/'.$langfile); 68 | } 69 | } 70 | 71 | 72 | if ( ! isset($lang)) 73 | { 74 | log_message('error', 'Language file contains no data: language/'.$idiom.'/'.$langfile); 75 | return; 76 | } 77 | 78 | if ($return == TRUE) 79 | { 80 | return $lang; 81 | } 82 | 83 | $this->is_loaded[] = $langfile; 84 | $this->language = array_merge($this->language, $lang); 85 | unset($lang); 86 | 87 | log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile); 88 | return TRUE; 89 | } 90 | 91 | } -------------------------------------------------------------------------------- /application/core/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/helpers/MY_url_helper.php: -------------------------------------------------------------------------------- 1 | config->site_url($CI->uri->uri_string()); 9 | return $_SERVER['QUERY_STRING'] ? $url.'?'.$_SERVER['QUERY_STRING'] : $url; 10 | } 11 | 12 | ?> -------------------------------------------------------------------------------- /application/helpers/hash_helper.php: -------------------------------------------------------------------------------- 1 | = 48 && $ord <= 57) ? true : $numeric; 83 | $lower = ($ord >= 65 && $ord <= 90) ? true : $lower; 84 | $upper = ($ord >= 97 && $ord <= 122) ? true : $upper; 85 | } 86 | 87 | return ($numeric === true && $lower === true && $upper === true) ? true : false; 88 | } 89 | 90 | function verifyHash($str, $hash) 91 | { 92 | return (crypt($str, $hash) == $hash) ? true : false; 93 | } -------------------------------------------------------------------------------- /application/helpers/hrecipe_helper.php: -------------------------------------------------------------------------------- 1 | find('.hrecipe'); 23 | 24 | if (isset($hrecipe) && is_array($hrecipe)) { 25 | $recipe = array(); 26 | 27 | // Parse recipe 28 | foreach($html->find('.fn') as $e) 29 | $recipe['title'] = $e->plaintext; 30 | 31 | foreach($html->find('.ingredient') as $e) 32 | $recipe['ingredients'][] = $e->plaintext; 33 | 34 | foreach($html->find('.yield') as $e) 35 | $recipe['yield'] = $e->plaintext; 36 | 37 | foreach($html->find('.instructions') as $e) 38 | $recipe['instructions'] = $e->plaintext; 39 | 40 | foreach($html->find('.duration') as $e) 41 | $recipe['duration'] = $e->plaintext; 42 | 43 | if (!isset($recipe['title']) || !isset($recipe['ingredients'])) { return false; } // Could be hCard 44 | 45 | $recipeHTML = 'Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/helpers/view_helper.php: -------------------------------------------------------------------------------- 1 | 0) { 7 | return $num; 8 | } else { 9 | return '0'; 10 | } 11 | } 12 | 13 | // Checks current date with passed date and responsds with proper verbiage. 14 | function formatExpires($date) 15 | { 16 | $timestamp = strtotime($date); 17 | if (time() > $timestamp) { 18 | return "per Year"; // Expired 19 | } else { 20 | return "on " . date('m/d/Y', $timestamp); // Not Yet Expired 21 | } 22 | } 23 | 24 | // Takes a URL and returns a pretty looking version for view 25 | function niceUrl($url) 26 | { 27 | return rtrim(preg_replace('/https?:\/\/(www.)?/', '', $url), '/'); 28 | } 29 | 30 | 31 | // Get URL For Bookmarklet 32 | function getFullUrl() 33 | { 34 | return @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] : 'https://'.$_SERVER["SERVER_NAME"]; 35 | } 36 | -------------------------------------------------------------------------------- /application/hooks/Unmark_Languages.php: -------------------------------------------------------------------------------- 1 | CI =& get_instance(); 15 | } 16 | 17 | /** 18 | * Loads language array 19 | * Returns all phrases 20 | */ 21 | public function loadLanguage() 22 | { 23 | $language_to_load = $this->CI->config->item('language'); 24 | $language_to_load = ( !isset($language_to_load) || empty($language_to_load) ) ? 'english' : $language_to_load; 25 | $language_file_to_load = APPPATH . 'language/' . $language_to_load . '.php'; 26 | 27 | if ( file_exists($language_file_to_load) ) : 28 | include( APPPATH . 'language/' . $language_to_load . '.php' ); 29 | $this->CI->config->set_item( 'phrases', $unmark_language ); // Load phrases into global config 30 | log_message('DEBUG', 'The "' . $language_to_load . '" language file has been loaded.'); 31 | else : 32 | log_message('ERROR', 'The "' . $language_to_load . '" language file could not be found.'); 33 | endif; 34 | 35 | } 36 | } 37 | 38 | /** 39 | * Loads a phrase 40 | * Accepts: Phrase (string), Phrase Plural (for backwards compatibilty) and number (0,1,2) 41 | * Returns: Prints singular or plural phrase if found 42 | * Error: If phrase not found it will log a message and respond with "Phrase not found." 43 | */ 44 | function unmark_phrase( $phrase, $phrase_plural='', $number=1 ) 45 | { 46 | // Load instance 47 | $CI =& get_instance(); 48 | 49 | // Load phrases from config 50 | $phrases = $CI->config->item('phrases'); 51 | 52 | //print_r($phrases); 53 | //exit; 54 | 55 | if ( !is_array($phrases) ) : 56 | return $phrase; 57 | endif; 58 | 59 | // Determine whether or not to use the plural phrase 60 | if ( $number == 0 || $number > 1 ) : 61 | $plural = 1; 62 | else : 63 | $plural = 0; 64 | endif; 65 | 66 | // Be sure language file contains phrase 67 | if ( array_key_exists( strtolower($phrase), $phrases ) ) : 68 | // See if language file has the singular or plural phrase, if not, default to singular 69 | if ( isset($phrases[strtolower($phrase)][$plural]) ) : 70 | return $phrases[strtolower($phrase)][$plural]; 71 | else : 72 | return $phrases[strtolower($phrase)][0]; 73 | endif; 74 | else : // Language file does not contain phrase, put something in Debug 75 | log_message('DEBUG', 'The phrase "' . $phrase . '" could not be found in the language file.'); 76 | return $phrase; 77 | endif; 78 | } 79 | -------------------------------------------------------------------------------- /application/hooks/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/language/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/language/phrases.php: -------------------------------------------------------------------------------- 1 | value entries describing 8 | * exported file. 9 | * @author kip9 10 | * 11 | */ 12 | class JSONImportStateMetaData implements JSONImportStateInterface{ 13 | 14 | private $importData; 15 | 16 | public function __construct($importData){ 17 | $this->importData = $importData; 18 | } 19 | 20 | /** 21 | * (non-PHPdoc) 22 | * @see JSONImportStateInterface::processLine() 23 | */ 24 | public function processLine($line){ 25 | // Change state 26 | if(mb_ereg_match("\"marks\"\:[ ]*\[.*", $line)){ 27 | return new JSONImportStateMarks($this->importData); 28 | } else{ 29 | // Strip trailing comma and simulate JSON 30 | $jsonLine = '{' . mb_ereg_replace("\\,[ ]*$", '', $line) . '}'; 31 | $decodedObject = json_decode($jsonLine); 32 | foreach($decodedObject as $key => $value){ 33 | if(!isset($this->importData['meta'])){ 34 | $this->importData['meta'] = array(); 35 | } 36 | $this->importData['meta'][$key] = $value; 37 | } 38 | return $this; 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /application/libraries/JSONImportStateMachine/JSONImportStateStart.php: -------------------------------------------------------------------------------- 1 | importData = $importData; 17 | } 18 | 19 | /** 20 | * (non-PHPdoc) 21 | * @see JSONImportStateInterface::processLine() 22 | */ 23 | public function processLine($line){ 24 | // Change state 25 | if(mb_ereg_match("\"export\"\:[ ]*\{.*", $line)){ 26 | return new JSONImportStateMetaData($this->importData); 27 | } else{ 28 | return $this; 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /application/libraries/JSONImportStateMachine/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/libraries/Plain_Cache.php: -------------------------------------------------------------------------------- 1 | $method(); 17 | } 18 | } 19 | else { 20 | return false; 21 | } 22 | } 23 | return false; 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /application/libraries/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/logs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/migrations/002_archive_stats.php: -------------------------------------------------------------------------------- 1 | dbforge->add_column('users_marks', array('datearchived timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP')); 15 | } 16 | 17 | public function down() 18 | { 19 | parent::checkForColumns('datearchived', 'users_marks'); 20 | $this->dbforge->drop_column('users_marks','datearchived'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /application/migrations/003_users_update.php: -------------------------------------------------------------------------------- 1 | db->query('ALTER TABLE `users` CHANGE COLUMN `id` `user_id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT'); 15 | $this->db->query('ALTER TABLE `users` DROP PRIMARY KEY, ADD PRIMARY KEY (`user_id`)'); 16 | $this->db->query('ALTER TABLE `users` CHANGE COLUMN `emailaddress` `email` varchar(255) NOT NULL'); 17 | $this->db->query('ALTER TABLE `users` CHANGE COLUMN `password` `password` varchar(150) NOT NULL'); 18 | $this->db->query('ALTER TABLE `users` CHANGE COLUMN `datejoined` `date_joined` datetime NOT NULL'); 19 | $this->db->query('ALTER TABLE `users` CHANGE COLUMN `status` `status` varchar(25) NOT NULL DEFAULT \'inactive\''); 20 | $this->db->query('ALTER TABLE `users` ADD COLUMN `last_updated` timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP AFTER `status`'); 21 | $this->db->query('ALTER TABLE `users` DROP INDEX `emailaddress`'); 22 | $this->db->query('ALTER TABLE `users` ADD UNIQUE `email`(email)'); 23 | } 24 | 25 | public function down() 26 | { 27 | 28 | parent::checkForColumns(array('user_id', 'email', 'password', 'date_joined', 'status', 'last_updated'), 'users'); 29 | $this->db->query('ALTER TABLE `users` CHANGE COLUMN `user_id` `id` bigint(11) NOT NULL AUTO_INCREMENT'); 30 | $this->db->query('ALTER TABLE `users` DROP PRIMARY KEY, ADD PRIMARY KEY (`id`)'); 31 | $this->db->query('ALTER TABLE `users` DROP COLUMN `last_updated`'); 32 | $this->db->query('ALTER TABLE `users` CHANGE COLUMN `email` `emailaddress` varchar(255) NOT NULL'); 33 | $this->db->query('ALTER TABLE `users` CHANGE COLUMN `password` `password` varchar(255) NOT NULL'); 34 | $this->db->query('ALTER TABLE `users` CHANGE COLUMN `date_joined` `datejoined` timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP'); 35 | $this->db->query('ALTER TABLE `users` CHANGE COLUMN `status` `status` varchar(255) NOT NULL'); 36 | $this->db->query('ALTER TABLE `users` DROP INDEX `email`'); 37 | $this->db->query('ALTER TABLE `users` ADD UNIQUE `emailaddress`(emailaddress)'); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /application/migrations/004_password_update.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `users` ADD COLUMN `salt` varchar(50) DEFAULT NULL COMMENT 'The salt used to generate password.' AFTER `password`"); 15 | } 16 | 17 | public function down() 18 | { 19 | parent::checkForColumns('salt', 'users'); 20 | $this->db->query("ALTER TABLE `users` DROP COLUMN `salt`"); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /application/migrations/005_users_admin_flag.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `users` ADD COLUMN `admin` tinyint(1) NOT NULL DEFAULT 0 AFTER `last_updated`"); 15 | } 16 | 17 | public function down() 18 | { 19 | parent::checkForColumns('admin', 'users'); 20 | $this->db->query("ALTER TABLE `users` DROP COLUMN `admin`"); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /application/migrations/006_plain_sessions.php: -------------------------------------------------------------------------------- 1 | db->query("CREATE TABLE IF NOT EXISTS `plain_sessions` ( 14 | session_id varchar(40) NOT NULL COMMENT 'Unique session identifier', 15 | session_data text NOT NULL COMMENT 'Serialized session data', 16 | last_updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Last updated at', 17 | PRIMARY KEY (session_id) 18 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"); 19 | } 20 | 21 | public function down() 22 | { 23 | // Drop tables 24 | $this->dbforge->drop_table('plain_sessions'); 25 | } 26 | } -------------------------------------------------------------------------------- /application/migrations/008_user_token.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `users` CHANGE COLUMN `user_token` `user_token` varchar(62) NOT NULL COMMENT 'Unique user token.'"); 17 | 18 | // Update all users 19 | $users = $this->db->query("SELECT user_id, user_token, created_on FROM `users`"); 20 | if ($users->num_rows() > 0) { 21 | foreach ($users->result() as $user) { 22 | $res = $this->db->query("UPDATE `users` SET user_token = '" . $user->user_token . md5($user->created_on) . "' WHERE user_id = '" . $user->user_id . "'"); 23 | } 24 | } 25 | } 26 | 27 | public function down() 28 | { 29 | // Back to original 30 | $this->db->query("ALTER TABLE `users` CHANGE COLUMN `user_token` `user_token` varchar(30) NOT NULL COMMENT 'Unique user token.'"); 31 | } 32 | } -------------------------------------------------------------------------------- /application/migrations/009_delete_marks.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `users_to_marks` ADD COLUMN `active` tinyint(1) UNSIGNED NOT NULL DEFAULT '1' COMMENT 'Set to 1 for active, 0 for inactive.' AFTER `notes`"); 16 | 17 | } 18 | 19 | public function down() 20 | { 21 | parent::checkForColumns('active', 'users_to_marks'); 22 | $this->db->query("ALTER TABLE `users_to_marks` DROP COLUMN `active`"); 23 | } 24 | } -------------------------------------------------------------------------------- /application/migrations/010_tokens.php: -------------------------------------------------------------------------------- 1 | db->query(" 16 | CREATE TABLE IF NOT EXISTS `tokens` ( 17 | `token_id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Token ID auto generated', 18 | `user_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL COMMENT 'User ID that token belongs to', 19 | `token_type` ENUM('FORGOT_PASSWORD') NOT NULL COMMENT 'Token type enum', 20 | `token_value` VARCHAR(64) NOT NULL COMMENT 'Generated token', 21 | `created_on` DATETIME NOT NULL COMMENT 'Creation date', 22 | `valid_until` DATETIME NOT NULL COMMENT 'Expiration date', 23 | `active` TINYINT(1) NOT NULL DEFAULT 1 COMMENT 'Active flag', 24 | `used_on` DATETIME NULL DEFAULT NULL COMMENT 'Date when token was successfully used', 25 | PRIMARY KEY (`token_id`), 26 | UNIQUE INDEX `token_value_UNIQUE` (`token_value` ASC), 27 | INDEX `token_type_user_id_active_IDX` (`token_type` ASC, `user_id` ASC, `active` ASC), 28 | CONSTRAINT `tokens_user_id_FK` 29 | FOREIGN KEY (`user_id`) 30 | REFERENCES `users` (`user_id`) 31 | ON DELETE CASCADE 32 | ON UPDATE CASCADE) ENGINE InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 33 | "); 34 | } 35 | 36 | public function down() 37 | { 38 | // Drop tables 39 | $this->dbforge->drop_table('tokens'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /application/migrations/2014022801_label_sort.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `labels` ADD COLUMN `order` tinyint(3) UNSIGNED DEFAULT NULL COMMENT 'The order to sort static system level labels.' AFTER `slug`"); 16 | 17 | // Now update all current system level labels to add correct order 18 | $slugs = array('read', 'watch', 'listen', 'buy', 'eat-drink', 'do', 'unlabeled'); 19 | foreach ($slugs as $k => $slug) { 20 | $order = $k + 1; 21 | $this->db->query("UPDATE `labels` SET labels.order = '" . $order . "' WHERE labels.slug = '" . $slug . "'"); 22 | } 23 | 24 | } 25 | 26 | public function down() 27 | { 28 | parent::checkForColumns('order', 'labels'); 29 | $this->db->query("ALTER TABLE `labels` DROP COLUMN `order`"); 30 | } 31 | } -------------------------------------------------------------------------------- /application/migrations/2014112501_user_titles.php: -------------------------------------------------------------------------------- 1 | db->query("ALTER TABLE `users_to_marks` ADD COLUMN `mark_title` text DEFAULT NULL COMMENT 'An optional user-specific mark title.' AFTER `mark_id`"); 19 | 20 | } 21 | 22 | public function down() 23 | { 24 | parent::checkForColumns('mark_title', 'users_to_marks'); 25 | $this->db->query("ALTER TABLE `users_to_marks` DROP COLUMN `mark_title`"); 26 | } 27 | } -------------------------------------------------------------------------------- /application/migrations/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/models/Marks_model.php: -------------------------------------------------------------------------------- 1 | data_types = array( 16 | 'title' => 'string', 17 | 'url' => 'url', 18 | 'url_key' => 'md5', 19 | 'embed' => 'string', 20 | 'created_on' => 'datetime' 21 | ); 22 | 23 | } 24 | 25 | public function create($options=array()) 26 | { 27 | return $this->validateAndSave($options, true); 28 | } 29 | 30 | private function validateAndSave($options, $overwriteCreatedOn){ 31 | $valid = validate($options, $this->data_types, array('title', 'url')); 32 | 33 | // Make sure all the options are valid 34 | if ($valid === true) { 35 | 36 | // Make sure url doesn't already exist 37 | $md5 = md5($options['url']); 38 | $mark = $this->read("url_key = '" . $md5 . "'", 1, 1); 39 | 40 | // If not found, add it 41 | if (! isset($mark->mark_id)) { 42 | if($overwriteCreatedOn || empty($options['created_on'])){ 43 | $options['created_on'] = date('Y-m-d H:i:s'); 44 | } 45 | $options['url_key'] = $md5; 46 | $q = $this->db->insert_string('marks', $options); 47 | $res = $this->db->query($q); 48 | 49 | // Check for errors 50 | $this->sendException(); 51 | 52 | // Return mark_id 53 | if ($res === true) { 54 | $mark_id = $this->db->insert_id(); 55 | return $this->read($mark_id); 56 | } 57 | 58 | return false; 59 | } 60 | 61 | // If already exists, just return it 62 | return $mark; 63 | } 64 | 65 | return formatErrors($valid); 66 | } 67 | 68 | /** 69 | * Import existing object and save to DB 70 | * @param array $options 71 | */ 72 | public function import($options){ 73 | return $this->validateAndSave($options, false); 74 | } 75 | 76 | } -------------------------------------------------------------------------------- /application/models/Tags_model.php: -------------------------------------------------------------------------------- 1 | data_types = array( 16 | 'name' => 'string', 17 | 'slug' => 'string' 18 | ); 19 | 20 | } 21 | 22 | public function create($options=array()) 23 | { 24 | 25 | $valid = validate($options, $this->data_types, array('name')); 26 | 27 | // Make sure all the options are valid 28 | if ($valid === true) { 29 | 30 | 31 | // See if this record already exists 32 | $options['slug'] = generateSlug($options['name']); 33 | $tag = $this->read("tags.slug = '" . $options['slug'] . "'", 1, 1); 34 | 35 | // If not, add it 36 | if (! isset($tag->tag_id)) { 37 | $q = $this->db->insert_string($this->table, $options); 38 | $res = $this->db->query($q); 39 | 40 | // Check for errors 41 | $this->sendException(); 42 | 43 | // If good, return full label 44 | if ($res === true) { 45 | $tag_id = $this->db->insert_id(); 46 | return $this->read($tag_id); 47 | } 48 | 49 | // Else return error 50 | return false; 51 | } 52 | 53 | // If already exists, just return it 54 | return $tag; 55 | 56 | } 57 | 58 | return formatErrors($valid); 59 | } 60 | 61 | } -------------------------------------------------------------------------------- /application/models/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/third_party/PHP-Markdown-1.2.5/License.text: -------------------------------------------------------------------------------- 1 | PHP Markdown & Extra 2 | Copyright (c) 2004-2009 Michel Fortin 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/third_party/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/email/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/errors/cli/error_404.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | An uncaught Exception was encountered 4 | 5 | Type: 6 | Message: 7 | Filename: getFile(), "\n"; ?> 8 | Line Number: getLine(); ?> 9 | 10 | 11 | 12 | Backtrace: 13 | getTrace() as $error): ?> 14 | 15 | File: 16 | Line: 17 | Function: 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /application/views/errors/cli/error_general.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | A PHP Error was encountered 4 | 5 | Severity: 6 | Message: 7 | Filename: 8 | Line Number: 9 | 10 | 11 | 12 | Backtrace: 13 | 14 | 15 | File: 16 | Line: 17 | Function: 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /application/views/errors/cli/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/views/errors/html/error_404.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Sorry, the page you are looking for is no where to be found. Try restarting your journey here.
14 |The issue has been logged and will be taken care of shortly.
6 | 7 |Severity:
9 |Message:
10 |Filename:
11 |Line Number:
12 | 13 |Directory access is forbidden.
9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /application/views/errors/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/import/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/import/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |' . unmark_phrase('Please make sure you have a valid export.json file.') . '
'; 16 | print unmark_phrase(' Go back & try again'); 17 | if (isset($errors) ) { 18 | foreach($errors as $prop) { 19 | $first = $prop; 20 | break; 21 | } 22 | print ''. sprintf(unmark_phrase('ERROR: %s'), $first) . '
'; 23 | } 24 | } else { 25 | print '' . sprintf(unmark_phrase('%s marks added', '%s marks added', $result['added']), $result['added']) . '
'; 27 | print '' . sprintf(unmark_phrase('%s marks skipped', '%s marks skipped', $result['skipped']), $result['skipped']) . '
'; 28 | print '' . sprintf(unmark_phrase('%s marks failed', '%s marks failed', $result['failed']), $result['failed']) . '
'; 29 | print '' . sprintf(unmark_phrase('%s marks total', '%s marks total', $result['total']), $result['total']) . '
'; 30 | print unmark_phrase(' Go back & see them'); 31 | } 32 | ?> 33 |Directory access is forbidden.
8 | 9 | 10 | -------------------------------------------------------------------------------- /application/views/json/index.php: -------------------------------------------------------------------------------- 1 | 2 | ' . ((isset($user)) ? $user['email'] : '') . ''); ?> 3 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /application/views/layouts/footer.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | load->view('layouts/footer_scripts')?> 13 | 14 |