Copy disabled (too large)
Download .txt
Showing preview only (24,116K chars total). Download the full file to get everything.
Repository: rhymix/rhymix
Branch: master
Commit: a92016cf4f52
Files: 4732
Total size: 21.4 MB
Directory structure:
gitextract_2yj37nij/
├── .editorconfig
├── .gitattributes
├── .github/
│ └── workflows/
│ ├── ci.yml
│ ├── setup-mysql.sh
│ └── setup-php.sh
├── .gitignore
├── .htaccess
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── addons/
│ ├── adminlogging/
│ │ ├── adminlogging.addon.php
│ │ └── conf/
│ │ └── info.xml
│ ├── autolink/
│ │ ├── autolink.addon.php
│ │ ├── autolink.js
│ │ ├── autolink.spec.html
│ │ └── conf/
│ │ └── info.xml
│ ├── counter/
│ │ ├── conf/
│ │ │ └── info.xml
│ │ └── counter.addon.php
│ ├── member_extra_info/
│ │ ├── conf/
│ │ │ └── info.xml
│ │ ├── member_extra_info.addon.php
│ │ └── member_extra_info.lib.php
│ ├── photoswipe/
│ │ ├── PhotoSwipe/
│ │ │ ├── LICENSE
│ │ │ ├── default-skin/
│ │ │ │ └── default-skin.css
│ │ │ ├── photoswipe-ui-default.js
│ │ │ ├── photoswipe.css
│ │ │ ├── photoswipe.js
│ │ │ └── pswp.html
│ │ ├── conf/
│ │ │ └── info.xml
│ │ ├── photoswipe.addon.php
│ │ └── rx_photoswipe.js
│ └── point_level_icon/
│ ├── conf/
│ │ └── info.xml
│ ├── point_level_icon.addon.php
│ └── point_level_icon.lib.php
├── classes/
│ ├── cache/
│ │ └── CacheHandler.class.php
│ ├── context/
│ │ └── Context.class.php
│ ├── db/
│ │ └── DB.class.php
│ ├── display/
│ │ ├── DisplayHandler.class.php
│ │ ├── HTMLDisplayHandler.php
│ │ ├── JSCallbackDisplayHandler.php
│ │ ├── JSONDisplayHandler.php
│ │ ├── RawDisplayHandler.php
│ │ ├── VirtualXMLDisplayHandler.php
│ │ └── XMLDisplayHandler.php
│ ├── editor/
│ │ └── EditorHandler.class.php
│ ├── extravar/
│ │ └── Extravar.class.php
│ ├── file/
│ │ ├── FileHandler.class.php
│ │ └── FileObject.class.php
│ ├── frontendfile/
│ │ └── FrontEndFileHandler.class.php
│ ├── handler/
│ │ └── Handler.class.php
│ ├── httprequest/
│ │ └── XEHttpRequest.class.php
│ ├── mail/
│ │ └── Mail.class.php
│ ├── mobile/
│ │ └── Mobile.class.php
│ ├── module/
│ │ ├── ModuleHandler.class.php
│ │ └── ModuleObject.class.php
│ ├── object/
│ │ └── Object.class.php
│ ├── page/
│ │ └── PageHandler.class.php
│ ├── security/
│ │ ├── EmbedFilter.class.php
│ │ ├── IpFilter.class.php
│ │ ├── Password.class.php
│ │ ├── Purifier.class.php
│ │ ├── Security.class.php
│ │ └── UploadFileFilter.class.php
│ ├── template/
│ │ └── TemplateHandler.class.php
│ ├── validator/
│ │ └── Validator.class.php
│ ├── widget/
│ │ └── WidgetHandler.class.php
│ └── xml/
│ ├── GeneralXmlParser.class.php
│ ├── XmlGenerator.class.php
│ ├── XmlJsFilter.class.php
│ ├── XmlLangParser.class.php
│ └── XmlParser.class.php
├── codeception.dist.yml
├── common/
│ ├── autoload.php
│ ├── composer.json
│ ├── constants.php
│ ├── css/
│ │ ├── bootstrap-responsive.css
│ │ ├── bootstrap.css
│ │ ├── rhymix.scss
│ │ └── xeicon/
│ │ ├── README.md
│ │ └── xeicon.css
│ ├── defaults/
│ │ ├── blacklist.php
│ │ ├── cloudflare.php
│ │ ├── config.php
│ │ ├── countries.php
│ │ ├── korea.ipv4.php
│ │ ├── korea.ipv6.php
│ │ ├── korea_ip_ranges/
│ │ │ ├── korea.ipv4.parser.php
│ │ │ └── korea.ipv6.parser.php
│ │ ├── locales.php
│ │ ├── plugins.php
│ │ ├── reserved.php
│ │ └── whitelist.php
│ ├── framework/
│ │ ├── Cache.php
│ │ ├── Calendar.php
│ │ ├── Config.php
│ │ ├── Cookie.php
│ │ ├── DB.php
│ │ ├── DateTime.php
│ │ ├── Debug.php
│ │ ├── Exception.php
│ │ ├── Formatter.php
│ │ ├── HTTP.php
│ │ ├── Image.php
│ │ ├── Korea.php
│ │ ├── Lang.php
│ │ ├── MIME.php
│ │ ├── Mail.php
│ │ ├── Pagination.php
│ │ ├── Password.php
│ │ ├── Push.php
│ │ ├── Queue.php
│ │ ├── Request.php
│ │ ├── Router.php
│ │ ├── SMS.php
│ │ ├── Security.php
│ │ ├── Session.php
│ │ ├── Storage.php
│ │ ├── Template.php
│ │ ├── Timer.php
│ │ ├── UA.php
│ │ ├── URL.php
│ │ ├── drivers/
│ │ │ ├── CacheInterface.php
│ │ │ ├── MailInterface.php
│ │ │ ├── PushInterface.php
│ │ │ ├── QueueInterface.php
│ │ │ ├── SMSInterface.php
│ │ │ ├── cache/
│ │ │ │ ├── apc.php
│ │ │ │ ├── dummy.php
│ │ │ │ ├── file.php
│ │ │ │ ├── memcached.php
│ │ │ │ ├── redis.php
│ │ │ │ └── sqlite.php
│ │ │ ├── mail/
│ │ │ │ ├── base.php
│ │ │ │ ├── brevo.php
│ │ │ │ ├── dummy.php
│ │ │ │ ├── mailfunction.php
│ │ │ │ ├── mailgun.php
│ │ │ │ ├── mandrill.php
│ │ │ │ ├── ncloud_mailer.php
│ │ │ │ ├── postmark.php
│ │ │ │ ├── sendgrid.php
│ │ │ │ ├── ses.php
│ │ │ │ ├── smtp.php
│ │ │ │ ├── sparkpost.php
│ │ │ │ └── woorimail.php
│ │ │ ├── push/
│ │ │ │ ├── apns.php
│ │ │ │ ├── base.php
│ │ │ │ ├── fcm.php
│ │ │ │ └── fcmv1.php
│ │ │ ├── queue/
│ │ │ │ ├── db.php
│ │ │ │ ├── dummy.php
│ │ │ │ └── redis.php
│ │ │ └── sms/
│ │ │ ├── base.php
│ │ │ ├── coolsms.php
│ │ │ ├── dummy.php
│ │ │ ├── iwinv.php
│ │ │ ├── ncloud_sens.php
│ │ │ ├── ppurio.php
│ │ │ ├── solapi.php
│ │ │ └── twilio.php
│ │ ├── exceptions/
│ │ │ ├── DBError.php
│ │ │ ├── FeatureDisabled.php
│ │ │ ├── InvalidRequest.php
│ │ │ ├── MustLogin.php
│ │ │ ├── NotPermitted.php
│ │ │ ├── QueryError.php
│ │ │ ├── SecurityViolation.php
│ │ │ └── TargetNotFound.php
│ │ ├── filters/
│ │ │ ├── FileContentFilter.php
│ │ │ ├── FilenameFilter.php
│ │ │ ├── HTMLFilter.php
│ │ │ ├── IpFilter.php
│ │ │ └── MediaFilter.php
│ │ ├── helpers/
│ │ │ ├── CacheItemHelper.php
│ │ │ ├── CacheItemPoolHelper.php
│ │ │ ├── ConfigHelper.php
│ │ │ ├── DBHelper.php
│ │ │ ├── DBResultHelper.php
│ │ │ ├── DBStmtHelper.php
│ │ │ ├── HTTPHelper.php
│ │ │ └── SessionHelper.php
│ │ ├── i18n.php
│ │ └── parsers/
│ │ ├── AddonInfoParser.php
│ │ ├── BaseParser.php
│ │ ├── ConfigParser.php
│ │ ├── DBQueryParser.php
│ │ ├── DBTableParser.php
│ │ ├── EditorComponentParser.php
│ │ ├── LangParser.php
│ │ ├── LayoutInfoParser.php
│ │ ├── ModuleActionParser.php
│ │ ├── ModuleInfoParser.php
│ │ ├── RulesetParser.php
│ │ ├── SkinInfoParser.php
│ │ ├── WidgetInfoParser.php
│ │ ├── WidgetStyleInfoParser.php
│ │ ├── XEXMLParser.php
│ │ ├── XMLRPCParser.php
│ │ ├── dbquery/
│ │ │ ├── ColumnRead.php
│ │ │ ├── ColumnWrite.php
│ │ │ ├── Condition.php
│ │ │ ├── ConditionGroup.php
│ │ │ ├── EmptyString.php
│ │ │ ├── GroupBy.php
│ │ │ ├── IndexHint.php
│ │ │ ├── Navigation.php
│ │ │ ├── NullValue.php
│ │ │ ├── OrderBy.php
│ │ │ ├── Query.php
│ │ │ ├── Table.php
│ │ │ └── VariableBase.php
│ │ ├── dbtable/
│ │ │ ├── Column.php
│ │ │ ├── Constraint.php
│ │ │ ├── GeneratedColumn.php
│ │ │ ├── Index.php
│ │ │ └── Table.php
│ │ └── template/
│ │ ├── TemplateParser_v1.php
│ │ └── TemplateParser_v2.php
│ ├── functions.php
│ ├── js/
│ │ ├── common.js
│ │ ├── debug.js
│ │ ├── jquery-2.2.4.js
│ │ ├── jquery-3.7.1.js
│ │ ├── js_app.js
│ │ ├── modernizr.js
│ │ ├── plugins/
│ │ │ ├── blankshield/
│ │ │ │ └── plugin.load
│ │ │ ├── ckeditor/
│ │ │ │ ├── ckeditor/
│ │ │ │ │ ├── CHANGES.md
│ │ │ │ │ ├── LICENSE.md
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── SECURITY.md
│ │ │ │ │ ├── adapters/
│ │ │ │ │ │ └── jquery.js
│ │ │ │ │ ├── bender-runner.config.json
│ │ │ │ │ ├── build-config.js
│ │ │ │ │ ├── ckeditor.js
│ │ │ │ │ ├── contents.css
│ │ │ │ │ ├── lang/
│ │ │ │ │ │ ├── af.js
│ │ │ │ │ │ ├── ar.js
│ │ │ │ │ │ ├── az.js
│ │ │ │ │ │ ├── bg.js
│ │ │ │ │ │ ├── bn.js
│ │ │ │ │ │ ├── bs.js
│ │ │ │ │ │ ├── ca.js
│ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ ├── cy.js
│ │ │ │ │ │ ├── da.js
│ │ │ │ │ │ ├── de-ch.js
│ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ ├── el.js
│ │ │ │ │ │ ├── en-au.js
│ │ │ │ │ │ ├── en-ca.js
│ │ │ │ │ │ ├── en-gb.js
│ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ ├── eo.js
│ │ │ │ │ │ ├── es-mx.js
│ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ ├── et.js
│ │ │ │ │ │ ├── eu.js
│ │ │ │ │ │ ├── fa.js
│ │ │ │ │ │ ├── fi.js
│ │ │ │ │ │ ├── fo.js
│ │ │ │ │ │ ├── fr-ca.js
│ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ ├── gl.js
│ │ │ │ │ │ ├── gu.js
│ │ │ │ │ │ ├── he.js
│ │ │ │ │ │ ├── hi.js
│ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ ├── hu.js
│ │ │ │ │ │ ├── id.js
│ │ │ │ │ │ ├── is.js
│ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ ├── ja.js
│ │ │ │ │ │ ├── ka.js
│ │ │ │ │ │ ├── km.js
│ │ │ │ │ │ ├── ko.js
│ │ │ │ │ │ ├── ku.js
│ │ │ │ │ │ ├── lt.js
│ │ │ │ │ │ ├── lv.js
│ │ │ │ │ │ ├── mk.js
│ │ │ │ │ │ ├── mn.js
│ │ │ │ │ │ ├── ms.js
│ │ │ │ │ │ ├── nb.js
│ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ ├── no.js
│ │ │ │ │ │ ├── oc.js
│ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ ├── pt-br.js
│ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ ├── ro.js
│ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ ├── si.js
│ │ │ │ │ │ ├── sk.js
│ │ │ │ │ │ ├── sl.js
│ │ │ │ │ │ ├── sq.js
│ │ │ │ │ │ ├── sr-latn.js
│ │ │ │ │ │ ├── sr.js
│ │ │ │ │ │ ├── sv.js
│ │ │ │ │ │ ├── th.js
│ │ │ │ │ │ ├── tr.js
│ │ │ │ │ │ ├── tt.js
│ │ │ │ │ │ ├── ug.js
│ │ │ │ │ │ ├── uk.js
│ │ │ │ │ │ ├── vi.js
│ │ │ │ │ │ ├── zh-cn.js
│ │ │ │ │ │ └── zh.js
│ │ │ │ │ ├── plugins/
│ │ │ │ │ │ ├── a11yhelp/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ ├── a11yhelp.js
│ │ │ │ │ │ │ └── lang/
│ │ │ │ │ │ │ ├── _translationstatus.txt
│ │ │ │ │ │ │ ├── af.js
│ │ │ │ │ │ │ ├── ar.js
│ │ │ │ │ │ │ ├── az.js
│ │ │ │ │ │ │ ├── bg.js
│ │ │ │ │ │ │ ├── ca.js
│ │ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ │ ├── cy.js
│ │ │ │ │ │ │ ├── da.js
│ │ │ │ │ │ │ ├── de-ch.js
│ │ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ │ ├── el.js
│ │ │ │ │ │ │ ├── en-au.js
│ │ │ │ │ │ │ ├── en-gb.js
│ │ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ │ ├── eo.js
│ │ │ │ │ │ │ ├── es-mx.js
│ │ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ │ ├── et.js
│ │ │ │ │ │ │ ├── eu.js
│ │ │ │ │ │ │ ├── fa.js
│ │ │ │ │ │ │ ├── fi.js
│ │ │ │ │ │ │ ├── fo.js
│ │ │ │ │ │ │ ├── fr-ca.js
│ │ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ │ ├── gl.js
│ │ │ │ │ │ │ ├── gu.js
│ │ │ │ │ │ │ ├── he.js
│ │ │ │ │ │ │ ├── hi.js
│ │ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ │ ├── hu.js
│ │ │ │ │ │ │ ├── id.js
│ │ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ │ ├── ja.js
│ │ │ │ │ │ │ ├── km.js
│ │ │ │ │ │ │ ├── ko.js
│ │ │ │ │ │ │ ├── ku.js
│ │ │ │ │ │ │ ├── lt.js
│ │ │ │ │ │ │ ├── lv.js
│ │ │ │ │ │ │ ├── mk.js
│ │ │ │ │ │ │ ├── mn.js
│ │ │ │ │ │ │ ├── nb.js
│ │ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ │ ├── no.js
│ │ │ │ │ │ │ ├── oc.js
│ │ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ │ ├── pt-br.js
│ │ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ │ ├── ro.js
│ │ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ │ ├── si.js
│ │ │ │ │ │ │ ├── sk.js
│ │ │ │ │ │ │ ├── sl.js
│ │ │ │ │ │ │ ├── sq.js
│ │ │ │ │ │ │ ├── sr-latn.js
│ │ │ │ │ │ │ ├── sr.js
│ │ │ │ │ │ │ ├── sv.js
│ │ │ │ │ │ │ ├── th.js
│ │ │ │ │ │ │ ├── tr.js
│ │ │ │ │ │ │ ├── tt.js
│ │ │ │ │ │ │ ├── ug.js
│ │ │ │ │ │ │ ├── uk.js
│ │ │ │ │ │ │ ├── vi.js
│ │ │ │ │ │ │ ├── zh-cn.js
│ │ │ │ │ │ │ └── zh.js
│ │ │ │ │ │ ├── about/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── about.js
│ │ │ │ │ │ ├── clipboard/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── paste.js
│ │ │ │ │ │ ├── colordialog/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ ├── colordialog.css
│ │ │ │ │ │ │ └── colordialog.js
│ │ │ │ │ │ ├── copyformatting/
│ │ │ │ │ │ │ └── styles/
│ │ │ │ │ │ │ └── copyformatting.css
│ │ │ │ │ │ ├── dialog/
│ │ │ │ │ │ │ ├── dialogDefinition.js
│ │ │ │ │ │ │ └── styles/
│ │ │ │ │ │ │ └── dialog.css
│ │ │ │ │ │ ├── div/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── div.js
│ │ │ │ │ │ ├── divarea/
│ │ │ │ │ │ │ └── plugin.js
│ │ │ │ │ │ ├── exportpdf/
│ │ │ │ │ │ │ ├── CHANGELOG.md
│ │ │ │ │ │ │ ├── LICENSE.md
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── plugindefinition.js
│ │ │ │ │ │ │ └── tests/
│ │ │ │ │ │ │ ├── _helpers/
│ │ │ │ │ │ │ │ └── tools.js
│ │ │ │ │ │ │ ├── authentication.js
│ │ │ │ │ │ │ ├── exportpdf.js
│ │ │ │ │ │ │ ├── manual/
│ │ │ │ │ │ │ │ ├── configfilename.html
│ │ │ │ │ │ │ │ ├── configfilename.md
│ │ │ │ │ │ │ │ ├── emptyeditor.html
│ │ │ │ │ │ │ │ ├── emptyeditor.md
│ │ │ │ │ │ │ │ ├── integration.html
│ │ │ │ │ │ │ │ ├── integration.md
│ │ │ │ │ │ │ │ ├── integrations/
│ │ │ │ │ │ │ │ │ ├── easyimage.html
│ │ │ │ │ │ │ │ │ └── easyimage.md
│ │ │ │ │ │ │ │ ├── notifications.html
│ │ │ │ │ │ │ │ ├── notifications.md
│ │ │ │ │ │ │ │ ├── notificationsasync.html
│ │ │ │ │ │ │ │ ├── notificationsasync.md
│ │ │ │ │ │ │ │ ├── paperformat.html
│ │ │ │ │ │ │ │ ├── paperformat.md
│ │ │ │ │ │ │ │ ├── readonly.html
│ │ │ │ │ │ │ │ ├── readonly.md
│ │ │ │ │ │ │ │ ├── stylesheets.html
│ │ │ │ │ │ │ │ ├── stylesheets.md
│ │ │ │ │ │ │ │ ├── tokenfetching.html
│ │ │ │ │ │ │ │ ├── tokenfetching.md
│ │ │ │ │ │ │ │ ├── tokentwoeditorscorrect.html
│ │ │ │ │ │ │ │ ├── tokentwoeditorscorrect.md
│ │ │ │ │ │ │ │ ├── tokentwoeditorswrong.html
│ │ │ │ │ │ │ │ ├── tokentwoeditorswrong.md
│ │ │ │ │ │ │ │ ├── tokenwithouturl.html
│ │ │ │ │ │ │ │ ├── tokenwithouturl.md
│ │ │ │ │ │ │ │ ├── wrongendpoint.html
│ │ │ │ │ │ │ │ └── wrongendpoint.md
│ │ │ │ │ │ │ ├── notification.js
│ │ │ │ │ │ │ ├── resourcespaths.js
│ │ │ │ │ │ │ ├── statistics.js
│ │ │ │ │ │ │ └── stylesheets.js
│ │ │ │ │ │ ├── find/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── find.js
│ │ │ │ │ │ ├── flash/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── flash.js
│ │ │ │ │ │ ├── forms/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ ├── button.js
│ │ │ │ │ │ │ ├── checkbox.js
│ │ │ │ │ │ │ ├── form.js
│ │ │ │ │ │ │ ├── hiddenfield.js
│ │ │ │ │ │ │ ├── radio.js
│ │ │ │ │ │ │ ├── select.js
│ │ │ │ │ │ │ ├── textarea.js
│ │ │ │ │ │ │ └── textfield.js
│ │ │ │ │ │ ├── iframe/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── iframe.js
│ │ │ │ │ │ ├── image/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── image.js
│ │ │ │ │ │ ├── imageresize/
│ │ │ │ │ │ │ ├── LICENSE.md
│ │ │ │ │ │ │ └── README.md
│ │ │ │ │ │ ├── ios_enterkey/
│ │ │ │ │ │ │ └── plugin.js
│ │ │ │ │ │ ├── link/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ ├── anchor.js
│ │ │ │ │ │ │ └── link.js
│ │ │ │ │ │ ├── liststyle/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── liststyle.js
│ │ │ │ │ │ ├── onchange/
│ │ │ │ │ │ │ └── docs/
│ │ │ │ │ │ │ ├── install.html
│ │ │ │ │ │ │ └── styles.css
│ │ │ │ │ │ ├── pastefromgdocs/
│ │ │ │ │ │ │ └── filter/
│ │ │ │ │ │ │ └── default.js
│ │ │ │ │ │ ├── pastefromlibreoffice/
│ │ │ │ │ │ │ └── filter/
│ │ │ │ │ │ │ └── default.js
│ │ │ │ │ │ ├── pastefromword/
│ │ │ │ │ │ │ └── filter/
│ │ │ │ │ │ │ └── default.js
│ │ │ │ │ │ ├── pastetools/
│ │ │ │ │ │ │ └── filter/
│ │ │ │ │ │ │ ├── common.js
│ │ │ │ │ │ │ └── image.js
│ │ │ │ │ │ ├── preview/
│ │ │ │ │ │ │ ├── preview.html
│ │ │ │ │ │ │ └── styles/
│ │ │ │ │ │ │ └── screen.css
│ │ │ │ │ │ ├── rx_paste/
│ │ │ │ │ │ │ └── plugin.js
│ │ │ │ │ │ ├── scayt/
│ │ │ │ │ │ │ ├── CHANGELOG.md
│ │ │ │ │ │ │ ├── LICENSE.md
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── dialogs/
│ │ │ │ │ │ │ │ ├── dialog.css
│ │ │ │ │ │ │ │ ├── options.js
│ │ │ │ │ │ │ │ └── toolbar.css
│ │ │ │ │ │ │ └── skins/
│ │ │ │ │ │ │ └── moono-lisa/
│ │ │ │ │ │ │ └── scayt.css
│ │ │ │ │ │ ├── smiley/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── smiley.js
│ │ │ │ │ │ ├── specialchar/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ ├── lang/
│ │ │ │ │ │ │ │ ├── _translationstatus.txt
│ │ │ │ │ │ │ │ ├── af.js
│ │ │ │ │ │ │ │ ├── ar.js
│ │ │ │ │ │ │ │ ├── az.js
│ │ │ │ │ │ │ │ ├── bg.js
│ │ │ │ │ │ │ │ ├── ca.js
│ │ │ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ │ │ ├── cy.js
│ │ │ │ │ │ │ │ ├── da.js
│ │ │ │ │ │ │ │ ├── de-ch.js
│ │ │ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ │ │ ├── el.js
│ │ │ │ │ │ │ │ ├── en-au.js
│ │ │ │ │ │ │ │ ├── en-ca.js
│ │ │ │ │ │ │ │ ├── en-gb.js
│ │ │ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ │ │ ├── eo.js
│ │ │ │ │ │ │ │ ├── es-mx.js
│ │ │ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ │ │ ├── et.js
│ │ │ │ │ │ │ │ ├── eu.js
│ │ │ │ │ │ │ │ ├── fa.js
│ │ │ │ │ │ │ │ ├── fi.js
│ │ │ │ │ │ │ │ ├── fr-ca.js
│ │ │ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ │ │ ├── gl.js
│ │ │ │ │ │ │ │ ├── he.js
│ │ │ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ │ │ ├── hu.js
│ │ │ │ │ │ │ │ ├── id.js
│ │ │ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ │ │ ├── ja.js
│ │ │ │ │ │ │ │ ├── km.js
│ │ │ │ │ │ │ │ ├── ko.js
│ │ │ │ │ │ │ │ ├── ku.js
│ │ │ │ │ │ │ │ ├── lt.js
│ │ │ │ │ │ │ │ ├── lv.js
│ │ │ │ │ │ │ │ ├── nb.js
│ │ │ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ │ │ ├── no.js
│ │ │ │ │ │ │ │ ├── oc.js
│ │ │ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ │ │ ├── pt-br.js
│ │ │ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ │ │ ├── ro.js
│ │ │ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ │ │ ├── si.js
│ │ │ │ │ │ │ │ ├── sk.js
│ │ │ │ │ │ │ │ ├── sl.js
│ │ │ │ │ │ │ │ ├── sq.js
│ │ │ │ │ │ │ │ ├── sr-latn.js
│ │ │ │ │ │ │ │ ├── sr.js
│ │ │ │ │ │ │ │ ├── sv.js
│ │ │ │ │ │ │ │ ├── th.js
│ │ │ │ │ │ │ │ ├── tr.js
│ │ │ │ │ │ │ │ ├── tt.js
│ │ │ │ │ │ │ │ ├── ug.js
│ │ │ │ │ │ │ │ ├── uk.js
│ │ │ │ │ │ │ │ ├── vi.js
│ │ │ │ │ │ │ │ ├── zh-cn.js
│ │ │ │ │ │ │ │ └── zh.js
│ │ │ │ │ │ │ └── specialchar.js
│ │ │ │ │ │ ├── table/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── table.js
│ │ │ │ │ │ ├── tableselection/
│ │ │ │ │ │ │ └── styles/
│ │ │ │ │ │ │ └── tableselection.css
│ │ │ │ │ │ ├── tabletools/
│ │ │ │ │ │ │ └── dialogs/
│ │ │ │ │ │ │ └── tableCell.js
│ │ │ │ │ │ ├── templates/
│ │ │ │ │ │ │ ├── dialogs/
│ │ │ │ │ │ │ │ ├── templates.css
│ │ │ │ │ │ │ │ └── templates.js
│ │ │ │ │ │ │ ├── templatedefinition.js
│ │ │ │ │ │ │ └── templates/
│ │ │ │ │ │ │ └── default.js
│ │ │ │ │ │ ├── wsc/
│ │ │ │ │ │ │ ├── LICENSE.md
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── dialogs/
│ │ │ │ │ │ │ │ ├── ciframe.html
│ │ │ │ │ │ │ │ ├── tmpFrameset.html
│ │ │ │ │ │ │ │ ├── wsc.css
│ │ │ │ │ │ │ │ ├── wsc.js
│ │ │ │ │ │ │ │ └── wsc_ie.js
│ │ │ │ │ │ │ └── skins/
│ │ │ │ │ │ │ └── moono-lisa/
│ │ │ │ │ │ │ └── wsc.css
│ │ │ │ │ │ └── xe_component/
│ │ │ │ │ │ └── plugin.js
│ │ │ │ │ ├── skins/
│ │ │ │ │ │ ├── moono/
│ │ │ │ │ │ │ ├── dialog.css
│ │ │ │ │ │ │ ├── dialog_ie.css
│ │ │ │ │ │ │ ├── dialog_ie7.css
│ │ │ │ │ │ │ ├── dialog_ie8.css
│ │ │ │ │ │ │ ├── dialog_iequirks.css
│ │ │ │ │ │ │ ├── editor.css
│ │ │ │ │ │ │ ├── editor_gecko.css
│ │ │ │ │ │ │ ├── editor_ie.css
│ │ │ │ │ │ │ ├── editor_ie7.css
│ │ │ │ │ │ │ ├── editor_ie8.css
│ │ │ │ │ │ │ ├── editor_iequirks.css
│ │ │ │ │ │ │ ├── readme.md
│ │ │ │ │ │ │ └── skin.js
│ │ │ │ │ │ ├── moono-dark/
│ │ │ │ │ │ │ ├── dialog.css
│ │ │ │ │ │ │ ├── dialog_ie.css
│ │ │ │ │ │ │ ├── dialog_ie7.css
│ │ │ │ │ │ │ ├── dialog_ie8.css
│ │ │ │ │ │ │ ├── dialog_iequirks.css
│ │ │ │ │ │ │ ├── editor.css
│ │ │ │ │ │ │ ├── editor_gecko.css
│ │ │ │ │ │ │ ├── editor_ie.css
│ │ │ │ │ │ │ ├── editor_ie7.css
│ │ │ │ │ │ │ ├── editor_ie8.css
│ │ │ │ │ │ │ ├── editor_iequirks.css
│ │ │ │ │ │ │ ├── readme.md
│ │ │ │ │ │ │ └── skin.js
│ │ │ │ │ │ └── moono-lisa/
│ │ │ │ │ │ ├── dialog.css
│ │ │ │ │ │ ├── dialog_ie.css
│ │ │ │ │ │ ├── dialog_ie8.css
│ │ │ │ │ │ ├── dialog_iequirks.css
│ │ │ │ │ │ ├── editor.css
│ │ │ │ │ │ ├── editor_gecko.css
│ │ │ │ │ │ ├── editor_ie.css
│ │ │ │ │ │ ├── editor_ie8.css
│ │ │ │ │ │ ├── editor_iequirks.css
│ │ │ │ │ │ └── readme.md
│ │ │ │ │ ├── styles.js
│ │ │ │ │ └── vendor/
│ │ │ │ │ └── promise.js
│ │ │ │ └── plugin.load
│ │ │ ├── cookie/
│ │ │ │ ├── js.cookie.js
│ │ │ │ └── plugin.load
│ │ │ ├── filebox/
│ │ │ │ ├── filebox.js
│ │ │ │ └── plugin.load
│ │ │ ├── foggyLayer/
│ │ │ │ ├── foggyLayer.js
│ │ │ │ └── plugin.load
│ │ │ ├── handlebars/
│ │ │ │ ├── handlebars.js
│ │ │ │ └── plugin.load
│ │ │ ├── handlebars.runtime/
│ │ │ │ ├── handlebars.runtime.js
│ │ │ │ └── plugin.load
│ │ │ ├── hotkeys/
│ │ │ │ ├── jquery.hotkeys-packed.js
│ │ │ │ └── plugin.load
│ │ │ ├── jquery.fileupload/
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── css/
│ │ │ │ │ ├── demo-ie8.css
│ │ │ │ │ ├── demo.css
│ │ │ │ │ ├── jquery.fileupload-noscript.css
│ │ │ │ │ ├── jquery.fileupload-ui-noscript.css
│ │ │ │ │ ├── jquery.fileupload-ui.css
│ │ │ │ │ ├── jquery.fileupload.css
│ │ │ │ │ └── style.css
│ │ │ │ ├── js/
│ │ │ │ │ ├── app.js
│ │ │ │ │ ├── cors/
│ │ │ │ │ │ ├── jquery.postmessage-transport.js
│ │ │ │ │ │ └── jquery.xdr-transport.js
│ │ │ │ │ ├── jquery.fileupload-angular.js
│ │ │ │ │ ├── jquery.fileupload-audio.js
│ │ │ │ │ ├── jquery.fileupload-image.js
│ │ │ │ │ ├── jquery.fileupload-jquery-ui.js
│ │ │ │ │ ├── jquery.fileupload-process.js
│ │ │ │ │ ├── jquery.fileupload-ui.js
│ │ │ │ │ ├── jquery.fileupload-validate.js
│ │ │ │ │ ├── jquery.fileupload-video.js
│ │ │ │ │ ├── jquery.fileupload.js
│ │ │ │ │ ├── jquery.iframe-transport.js
│ │ │ │ │ ├── main.js
│ │ │ │ │ └── vendor/
│ │ │ │ │ └── jquery.ui.widget.js
│ │ │ │ └── plugin.load
│ │ │ ├── jquery.finderSelect/
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── README.md
│ │ │ │ └── plugin.load
│ │ │ ├── qtip/
│ │ │ │ ├── jquery.qtip.js
│ │ │ │ └── plugin.load
│ │ │ ├── spectrum/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── i18n/
│ │ │ │ │ ├── jquery.spectrum-ar.js
│ │ │ │ │ ├── jquery.spectrum-de.js
│ │ │ │ │ ├── jquery.spectrum-dk.js
│ │ │ │ │ ├── jquery.spectrum-en.js
│ │ │ │ │ ├── jquery.spectrum-es.js
│ │ │ │ │ ├── jquery.spectrum-fa.js
│ │ │ │ │ ├── jquery.spectrum-fi.js
│ │ │ │ │ ├── jquery.spectrum-fr.js
│ │ │ │ │ ├── jquery.spectrum-gr.js
│ │ │ │ │ ├── jquery.spectrum-he.js
│ │ │ │ │ ├── jquery.spectrum-hr.js
│ │ │ │ │ ├── jquery.spectrum-id.js
│ │ │ │ │ ├── jquery.spectrum-it.js
│ │ │ │ │ ├── jquery.spectrum-ja.js
│ │ │ │ │ ├── jquery.spectrum-ko.js
│ │ │ │ │ ├── jquery.spectrum-lt.js
│ │ │ │ │ ├── jquery.spectrum-nl.js
│ │ │ │ │ ├── jquery.spectrum-pl.js
│ │ │ │ │ ├── jquery.spectrum-pt-br.js
│ │ │ │ │ ├── jquery.spectrum-ru.js
│ │ │ │ │ ├── jquery.spectrum-sv.js
│ │ │ │ │ ├── jquery.spectrum-tr.js
│ │ │ │ │ ├── jquery.spectrum-zh-cn.js
│ │ │ │ │ └── jquery.spectrum-zh-tw.js
│ │ │ │ ├── plugin.load
│ │ │ │ ├── rx_spectrum.js
│ │ │ │ ├── spectrum.css
│ │ │ │ ├── spectrum.js
│ │ │ │ └── themes/
│ │ │ │ ├── index.html
│ │ │ │ └── sp-dark.css
│ │ │ ├── ui/
│ │ │ │ ├── i18n/
│ │ │ │ │ ├── datepicker-af.js
│ │ │ │ │ ├── datepicker-ar-DZ.js
│ │ │ │ │ ├── datepicker-ar.js
│ │ │ │ │ ├── datepicker-az.js
│ │ │ │ │ ├── datepicker-be.js
│ │ │ │ │ ├── datepicker-bg.js
│ │ │ │ │ ├── datepicker-bs.js
│ │ │ │ │ ├── datepicker-ca.js
│ │ │ │ │ ├── datepicker-cs.js
│ │ │ │ │ ├── datepicker-cy-GB.js
│ │ │ │ │ ├── datepicker-da.js
│ │ │ │ │ ├── datepicker-de.js
│ │ │ │ │ ├── datepicker-el.js
│ │ │ │ │ ├── datepicker-en-AU.js
│ │ │ │ │ ├── datepicker-en-GB.js
│ │ │ │ │ ├── datepicker-en-NZ.js
│ │ │ │ │ ├── datepicker-en.js
│ │ │ │ │ ├── datepicker-eo.js
│ │ │ │ │ ├── datepicker-es.js
│ │ │ │ │ ├── datepicker-et.js
│ │ │ │ │ ├── datepicker-eu.js
│ │ │ │ │ ├── datepicker-fa.js
│ │ │ │ │ ├── datepicker-fi.js
│ │ │ │ │ ├── datepicker-fo.js
│ │ │ │ │ ├── datepicker-fr-CA.js
│ │ │ │ │ ├── datepicker-fr-CH.js
│ │ │ │ │ ├── datepicker-fr.js
│ │ │ │ │ ├── datepicker-gl.js
│ │ │ │ │ ├── datepicker-he.js
│ │ │ │ │ ├── datepicker-hi.js
│ │ │ │ │ ├── datepicker-hr.js
│ │ │ │ │ ├── datepicker-hu.js
│ │ │ │ │ ├── datepicker-hy.js
│ │ │ │ │ ├── datepicker-id.js
│ │ │ │ │ ├── datepicker-is.js
│ │ │ │ │ ├── datepicker-it-CH.js
│ │ │ │ │ ├── datepicker-it.js
│ │ │ │ │ ├── datepicker-ja.js
│ │ │ │ │ ├── datepicker-ka.js
│ │ │ │ │ ├── datepicker-kk.js
│ │ │ │ │ ├── datepicker-km.js
│ │ │ │ │ ├── datepicker-ko.js
│ │ │ │ │ ├── datepicker-ky.js
│ │ │ │ │ ├── datepicker-lb.js
│ │ │ │ │ ├── datepicker-lt.js
│ │ │ │ │ ├── datepicker-lv.js
│ │ │ │ │ ├── datepicker-mk.js
│ │ │ │ │ ├── datepicker-ml.js
│ │ │ │ │ ├── datepicker-ms.js
│ │ │ │ │ ├── datepicker-nb.js
│ │ │ │ │ ├── datepicker-nl-BE.js
│ │ │ │ │ ├── datepicker-nl.js
│ │ │ │ │ ├── datepicker-nn.js
│ │ │ │ │ ├── datepicker-no.js
│ │ │ │ │ ├── datepicker-pl.js
│ │ │ │ │ ├── datepicker-pt-BR.js
│ │ │ │ │ ├── datepicker-pt.js
│ │ │ │ │ ├── datepicker-rm.js
│ │ │ │ │ ├── datepicker-ro.js
│ │ │ │ │ ├── datepicker-ru.js
│ │ │ │ │ ├── datepicker-sk.js
│ │ │ │ │ ├── datepicker-sl.js
│ │ │ │ │ ├── datepicker-sq.js
│ │ │ │ │ ├── datepicker-sr-SR.js
│ │ │ │ │ ├── datepicker-sr.js
│ │ │ │ │ ├── datepicker-sv.js
│ │ │ │ │ ├── datepicker-ta.js
│ │ │ │ │ ├── datepicker-th.js
│ │ │ │ │ ├── datepicker-tj.js
│ │ │ │ │ ├── datepicker-tr.js
│ │ │ │ │ ├── datepicker-uk.js
│ │ │ │ │ ├── datepicker-vi.js
│ │ │ │ │ ├── datepicker-zh-CN.js
│ │ │ │ │ ├── datepicker-zh-HK.js
│ │ │ │ │ └── datepicker-zh-TW.js
│ │ │ │ ├── jquery-ui.css
│ │ │ │ ├── jquery-ui.js
│ │ │ │ ├── jquery-ui.structure.css
│ │ │ │ ├── jquery-ui.theme.css
│ │ │ │ ├── jquery.ui.datepicker-ko.js
│ │ │ │ ├── plugin.load
│ │ │ │ └── rx_datepicker.js
│ │ │ ├── ui.calendar/
│ │ │ │ ├── plugin.load
│ │ │ │ ├── ui.calendar.css
│ │ │ │ └── ui.calendar.js
│ │ │ ├── ui.colorpicker/
│ │ │ │ ├── ChangeLog.txt
│ │ │ │ ├── ReadMe.txt
│ │ │ │ ├── css/
│ │ │ │ │ └── jPicker-1.1.6.css
│ │ │ │ ├── jpicker-1.1.6.js
│ │ │ │ ├── minify.ini
│ │ │ │ ├── plugin.load
│ │ │ │ └── xe_colorpicker.js
│ │ │ ├── ui.krzip/
│ │ │ │ ├── krzip_search.js
│ │ │ │ └── plugin.load
│ │ │ ├── ui.tree/
│ │ │ │ ├── jquery.simple.tree.css
│ │ │ │ ├── jquery.simple.tree.js
│ │ │ │ └── plugin.load
│ │ │ ├── uri/
│ │ │ │ └── plugin.load
│ │ │ └── watchinput/
│ │ │ ├── jquery.watchinput.js
│ │ │ └── plugin.load
│ │ ├── x.js
│ │ ├── xml2json.js
│ │ ├── xml_handler.js
│ │ └── xml_js_filter.js
│ ├── lang/
│ │ ├── de.php
│ │ ├── en.php
│ │ ├── es.php
│ │ ├── fr.php
│ │ ├── ja.php
│ │ ├── ko.php
│ │ ├── mn.php
│ │ ├── ru.php
│ │ ├── tr.php
│ │ ├── vi.php
│ │ ├── zh-CN.php
│ │ └── zh-TW.php
│ ├── legacy.php
│ ├── libraries/
│ │ ├── cryptocompat.php
│ │ ├── ftp.php
│ │ ├── swift_mail.php
│ │ ├── tar.php
│ │ └── vendorpass.php
│ ├── manual/
│ │ └── server_config/
│ │ ├── rhymix-nginx-subdir.conf
│ │ └── rhymix-nginx.conf
│ ├── scripts/
│ │ ├── clean_empty_dirs.php
│ │ ├── clean_garbage_files.php
│ │ ├── clean_message_files.php
│ │ ├── clean_old_logs.php
│ │ ├── clean_old_notifications.php
│ │ ├── clean_old_thumbnails.php
│ │ ├── common.php
│ │ ├── cron.php
│ │ └── update_all_modules.php
│ ├── tpl/
│ │ ├── common_layout.html
│ │ ├── debug_comment.html
│ │ ├── default_layout.html
│ │ ├── popup_layout.html
│ │ └── refresh.html
│ └── vendor/
│ ├── autoload.php
│ ├── bin/
│ │ ├── html-to-markdown
│ │ ├── lessify
│ │ ├── minifycss
│ │ ├── minifyjs
│ │ ├── plessc
│ │ └── pscss
│ ├── composer/
│ │ ├── ClassLoader.php
│ │ ├── InstalledVersions.php
│ │ ├── LICENSE
│ │ ├── autoload_classmap.php
│ │ ├── autoload_files.php
│ │ ├── autoload_namespaces.php
│ │ ├── autoload_psr4.php
│ │ ├── autoload_real.php
│ │ ├── autoload_static.php
│ │ ├── ca-bundle/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── composer.json
│ │ │ ├── res/
│ │ │ │ └── cacert.pem
│ │ │ └── src/
│ │ │ └── CaBundle.php
│ │ ├── installed.json
│ │ └── installed.php
│ ├── coolsms/
│ │ └── php-sdk/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app/
│ │ │ └── Nurigo/
│ │ │ ├── Api/
│ │ │ │ ├── GroupMessage.php
│ │ │ │ ├── Image.php
│ │ │ │ ├── Message.php
│ │ │ │ └── SenderID.php
│ │ │ ├── Coolsms.php
│ │ │ └── Exceptions/
│ │ │ ├── CoolsmsException.php
│ │ │ ├── CoolsmsSDKException.php
│ │ │ ├── CoolsmsServerException.php
│ │ │ └── CoolsmsSystemException.php
│ │ ├── bootstrap.php
│ │ ├── composer.json
│ │ └── examples/
│ │ ├── GroupMessage/
│ │ │ ├── example_add_messages.php
│ │ │ ├── example_add_messages_json.php
│ │ │ ├── example_create_group.php
│ │ │ ├── example_delete_groups.php
│ │ │ ├── example_delete_messages.php
│ │ │ ├── example_get_group_info.php
│ │ │ ├── example_get_group_list.php
│ │ │ ├── example_get_message_list.php
│ │ │ ├── example_send.php
│ │ │ └── example_send_process.php
│ │ ├── Message/
│ │ │ ├── example_cancel.php
│ │ │ ├── example_get_balance.php
│ │ │ ├── example_get_status.php
│ │ │ ├── example_send.php
│ │ │ └── example_sent.php
│ │ ├── image/
│ │ │ ├── example_delete_images.php
│ │ │ ├── example_get_image_info.php
│ │ │ ├── example_get_image_list.php
│ │ │ └── example_upload_image.php
│ │ └── senderid/
│ │ ├── example_delete.php
│ │ ├── example_get_default.php
│ │ ├── example_get_sender_id_list.php
│ │ ├── example_register.php
│ │ ├── example_set_default.php
│ │ └── example_verify.php
│ ├── doctrine/
│ │ └── lexer/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── composer.json
│ │ ├── lib/
│ │ │ └── Doctrine/
│ │ │ └── Common/
│ │ │ └── Lexer/
│ │ │ └── AbstractLexer.php
│ │ └── psalm.xml
│ ├── egulias/
│ │ └── email-validator/
│ │ ├── CHANGELOG.md
│ │ ├── CONTRIBUTING.md
│ │ ├── LICENSE
│ │ ├── composer.json
│ │ └── src/
│ │ ├── EmailLexer.php
│ │ ├── EmailParser.php
│ │ ├── EmailValidator.php
│ │ ├── MessageIDParser.php
│ │ ├── Parser/
│ │ │ ├── Comment.php
│ │ │ ├── CommentStrategy/
│ │ │ │ ├── CommentStrategy.php
│ │ │ │ ├── DomainComment.php
│ │ │ │ └── LocalComment.php
│ │ │ ├── DomainLiteral.php
│ │ │ ├── DomainPart.php
│ │ │ ├── DoubleQuote.php
│ │ │ ├── FoldingWhiteSpace.php
│ │ │ ├── IDLeftPart.php
│ │ │ ├── IDRightPart.php
│ │ │ ├── LocalPart.php
│ │ │ └── PartParser.php
│ │ ├── Parser.php
│ │ ├── Result/
│ │ │ ├── InvalidEmail.php
│ │ │ ├── MultipleErrors.php
│ │ │ ├── Reason/
│ │ │ │ ├── AtextAfterCFWS.php
│ │ │ │ ├── CRLFAtTheEnd.php
│ │ │ │ ├── CRLFX2.php
│ │ │ │ ├── CRNoLF.php
│ │ │ │ ├── CharNotAllowed.php
│ │ │ │ ├── CommaInDomain.php
│ │ │ │ ├── CommentsInIDRight.php
│ │ │ │ ├── ConsecutiveAt.php
│ │ │ │ ├── ConsecutiveDot.php
│ │ │ │ ├── DetailedReason.php
│ │ │ │ ├── DomainAcceptsNoMail.php
│ │ │ │ ├── DomainHyphened.php
│ │ │ │ ├── DomainTooLong.php
│ │ │ │ ├── DotAtEnd.php
│ │ │ │ ├── DotAtStart.php
│ │ │ │ ├── EmptyReason.php
│ │ │ │ ├── ExceptionFound.php
│ │ │ │ ├── ExpectingATEXT.php
│ │ │ │ ├── ExpectingCTEXT.php
│ │ │ │ ├── ExpectingDTEXT.php
│ │ │ │ ├── ExpectingDomainLiteralClose.php
│ │ │ │ ├── LabelTooLong.php
│ │ │ │ ├── LocalOrReservedDomain.php
│ │ │ │ ├── NoDNSRecord.php
│ │ │ │ ├── NoDomainPart.php
│ │ │ │ ├── NoLocalPart.php
│ │ │ │ ├── RFCWarnings.php
│ │ │ │ ├── Reason.php
│ │ │ │ ├── SpoofEmail.php
│ │ │ │ ├── UnOpenedComment.php
│ │ │ │ ├── UnableToGetDNSRecord.php
│ │ │ │ ├── UnclosedComment.php
│ │ │ │ ├── UnclosedQuotedString.php
│ │ │ │ └── UnusualElements.php
│ │ │ ├── Result.php
│ │ │ ├── SpoofEmail.php
│ │ │ └── ValidEmail.php
│ │ ├── Validation/
│ │ │ ├── DNSCheckValidation.php
│ │ │ ├── DNSGetRecordWrapper.php
│ │ │ ├── DNSRecords.php
│ │ │ ├── EmailValidation.php
│ │ │ ├── Exception/
│ │ │ │ └── EmptyValidationList.php
│ │ │ ├── Extra/
│ │ │ │ └── SpoofCheckValidation.php
│ │ │ ├── MessageIDValidation.php
│ │ │ ├── MultipleValidationWithAnd.php
│ │ │ ├── NoRFCWarningsValidation.php
│ │ │ └── RFCValidation.php
│ │ └── Warning/
│ │ ├── AddressLiteral.php
│ │ ├── CFWSNearAt.php
│ │ ├── CFWSWithFWS.php
│ │ ├── Comment.php
│ │ ├── DeprecatedComment.php
│ │ ├── DomainLiteral.php
│ │ ├── EmailTooLong.php
│ │ ├── IPV6BadChar.php
│ │ ├── IPV6ColonEnd.php
│ │ ├── IPV6ColonStart.php
│ │ ├── IPV6Deprecated.php
│ │ ├── IPV6DoubleColon.php
│ │ ├── IPV6GroupCount.php
│ │ ├── IPV6MaxGroups.php
│ │ ├── LocalTooLong.php
│ │ ├── NoDNSMXRecord.php
│ │ ├── ObsoleteDTEXT.php
│ │ ├── QuotedPart.php
│ │ ├── QuotedString.php
│ │ ├── TLD.php
│ │ └── Warning.php
│ ├── enshrined/
│ │ └── svg-sanitize/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── composer.json
│ │ └── src/
│ │ ├── ElementReference/
│ │ │ ├── Resolver.php
│ │ │ ├── Subject.php
│ │ │ └── Usage.php
│ │ ├── Exceptions/
│ │ │ └── NestingException.php
│ │ ├── Helper.php
│ │ ├── Sanitizer.php
│ │ ├── data/
│ │ │ ├── AllowedAttributes.php
│ │ │ ├── AllowedTags.php
│ │ │ ├── AttributeInterface.php
│ │ │ ├── TagInterface.php
│ │ │ └── XPath.php
│ │ └── svg-scanner.php
│ ├── ezyang/
│ │ └── htmlpurifier/
│ │ ├── CREDITS
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── VERSION
│ │ ├── composer.json
│ │ └── library/
│ │ ├── HTMLPurifier/
│ │ │ ├── Arborize.php
│ │ │ ├── AttrCollections.php
│ │ │ ├── AttrDef/
│ │ │ │ ├── CSS/
│ │ │ │ │ ├── AlphaValue.php
│ │ │ │ │ ├── Background.php
│ │ │ │ │ ├── BackgroundPosition.php
│ │ │ │ │ ├── Border.php
│ │ │ │ │ ├── Color.php
│ │ │ │ │ ├── Composite.php
│ │ │ │ │ ├── DenyElementDecorator.php
│ │ │ │ │ ├── Filter.php
│ │ │ │ │ ├── Font.php
│ │ │ │ │ ├── FontFamily.php
│ │ │ │ │ ├── Ident.php
│ │ │ │ │ ├── ImportantDecorator.php
│ │ │ │ │ ├── Length.php
│ │ │ │ │ ├── ListStyle.php
│ │ │ │ │ ├── Multiple.php
│ │ │ │ │ ├── Number.php
│ │ │ │ │ ├── Percentage.php
│ │ │ │ │ ├── Ratio.php
│ │ │ │ │ ├── TextDecoration.php
│ │ │ │ │ └── URI.php
│ │ │ │ ├── CSS.php
│ │ │ │ ├── Clone.php
│ │ │ │ ├── Enum.php
│ │ │ │ ├── HTML/
│ │ │ │ │ ├── Bool.php
│ │ │ │ │ ├── Class.php
│ │ │ │ │ ├── Color.php
│ │ │ │ │ ├── ContentEditable.php
│ │ │ │ │ ├── FrameTarget.php
│ │ │ │ │ ├── ID.php
│ │ │ │ │ ├── Length.php
│ │ │ │ │ ├── LinkTypes.php
│ │ │ │ │ ├── MultiLength.php
│ │ │ │ │ ├── Nmtokens.php
│ │ │ │ │ └── Pixels.php
│ │ │ │ ├── Integer.php
│ │ │ │ ├── Lang.php
│ │ │ │ ├── Switch.php
│ │ │ │ ├── Text.php
│ │ │ │ ├── URI/
│ │ │ │ │ ├── Email/
│ │ │ │ │ │ └── SimpleCheck.php
│ │ │ │ │ ├── Email.php
│ │ │ │ │ ├── Host.php
│ │ │ │ │ ├── IPv4.php
│ │ │ │ │ └── IPv6.php
│ │ │ │ └── URI.php
│ │ │ ├── AttrDef.php
│ │ │ ├── AttrTransform/
│ │ │ │ ├── Background.php
│ │ │ │ ├── BdoDir.php
│ │ │ │ ├── BgColor.php
│ │ │ │ ├── BoolToCSS.php
│ │ │ │ ├── Border.php
│ │ │ │ ├── EnumToCSS.php
│ │ │ │ ├── ImgRequired.php
│ │ │ │ ├── ImgSpace.php
│ │ │ │ ├── Input.php
│ │ │ │ ├── Lang.php
│ │ │ │ ├── Length.php
│ │ │ │ ├── Name.php
│ │ │ │ ├── NameSync.php
│ │ │ │ ├── Nofollow.php
│ │ │ │ ├── SafeEmbed.php
│ │ │ │ ├── SafeObject.php
│ │ │ │ ├── SafeParam.php
│ │ │ │ ├── ScriptRequired.php
│ │ │ │ ├── TargetBlank.php
│ │ │ │ ├── TargetNoopener.php
│ │ │ │ ├── TargetNoreferrer.php
│ │ │ │ └── Textarea.php
│ │ │ ├── AttrTransform.php
│ │ │ ├── AttrTypes.php
│ │ │ ├── AttrValidator.php
│ │ │ ├── Bootstrap.php
│ │ │ ├── CSSDefinition.php
│ │ │ ├── ChildDef/
│ │ │ │ ├── Chameleon.php
│ │ │ │ ├── Custom.php
│ │ │ │ ├── Empty.php
│ │ │ │ ├── List.php
│ │ │ │ ├── Optional.php
│ │ │ │ ├── Required.php
│ │ │ │ ├── StrictBlockquote.php
│ │ │ │ └── Table.php
│ │ │ ├── ChildDef.php
│ │ │ ├── Config.php
│ │ │ ├── ConfigSchema/
│ │ │ │ ├── Builder/
│ │ │ │ │ ├── ConfigSchema.php
│ │ │ │ │ └── Xml.php
│ │ │ │ ├── Exception.php
│ │ │ │ ├── Interchange/
│ │ │ │ │ ├── Directive.php
│ │ │ │ │ └── Id.php
│ │ │ │ ├── Interchange.php
│ │ │ │ ├── InterchangeBuilder.php
│ │ │ │ ├── Validator.php
│ │ │ │ ├── ValidatorAtom.php
│ │ │ │ ├── schema/
│ │ │ │ │ ├── Attr.AllowedClasses.txt
│ │ │ │ │ ├── Attr.AllowedFrameTargets.txt
│ │ │ │ │ ├── Attr.AllowedRel.txt
│ │ │ │ │ ├── Attr.AllowedRev.txt
│ │ │ │ │ ├── Attr.ClassUseCDATA.txt
│ │ │ │ │ ├── Attr.DefaultImageAlt.txt
│ │ │ │ │ ├── Attr.DefaultInvalidImage.txt
│ │ │ │ │ ├── Attr.DefaultInvalidImageAlt.txt
│ │ │ │ │ ├── Attr.DefaultTextDir.txt
│ │ │ │ │ ├── Attr.EnableID.txt
│ │ │ │ │ ├── Attr.ForbiddenClasses.txt
│ │ │ │ │ ├── Attr.ID.HTML5.txt
│ │ │ │ │ ├── Attr.IDBlacklist.txt
│ │ │ │ │ ├── Attr.IDBlacklistRegexp.txt
│ │ │ │ │ ├── Attr.IDPrefix.txt
│ │ │ │ │ ├── Attr.IDPrefixLocal.txt
│ │ │ │ │ ├── AutoFormat.AutoParagraph.txt
│ │ │ │ │ ├── AutoFormat.Custom.txt
│ │ │ │ │ ├── AutoFormat.DisplayLinkURI.txt
│ │ │ │ │ ├── AutoFormat.Linkify.txt
│ │ │ │ │ ├── AutoFormat.PurifierLinkify.DocURL.txt
│ │ │ │ │ ├── AutoFormat.PurifierLinkify.txt
│ │ │ │ │ ├── AutoFormat.RemoveEmpty.Predicate.txt
│ │ │ │ │ ├── AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.txt
│ │ │ │ │ ├── AutoFormat.RemoveEmpty.RemoveNbsp.txt
│ │ │ │ │ ├── AutoFormat.RemoveEmpty.txt
│ │ │ │ │ ├── AutoFormat.RemoveSpansWithoutAttributes.txt
│ │ │ │ │ ├── CSS.AllowDuplicates.txt
│ │ │ │ │ ├── CSS.AllowImportant.txt
│ │ │ │ │ ├── CSS.AllowTricky.txt
│ │ │ │ │ ├── CSS.AllowedFonts.txt
│ │ │ │ │ ├── CSS.AllowedProperties.txt
│ │ │ │ │ ├── CSS.DefinitionRev.txt
│ │ │ │ │ ├── CSS.ForbiddenProperties.txt
│ │ │ │ │ ├── CSS.MaxImgLength.txt
│ │ │ │ │ ├── CSS.Proprietary.txt
│ │ │ │ │ ├── CSS.Trusted.txt
│ │ │ │ │ ├── Cache.DefinitionImpl.txt
│ │ │ │ │ ├── Cache.SerializerPath.txt
│ │ │ │ │ ├── Cache.SerializerPermissions.txt
│ │ │ │ │ ├── Core.AggressivelyFixLt.txt
│ │ │ │ │ ├── Core.AggressivelyRemoveScript.txt
│ │ │ │ │ ├── Core.AllowHostnameUnderscore.txt
│ │ │ │ │ ├── Core.AllowParseManyTags.txt
│ │ │ │ │ ├── Core.CollectErrors.txt
│ │ │ │ │ ├── Core.ColorKeywords.txt
│ │ │ │ │ ├── Core.ConvertDocumentToFragment.txt
│ │ │ │ │ ├── Core.DirectLexLineNumberSyncInterval.txt
│ │ │ │ │ ├── Core.DisableExcludes.txt
│ │ │ │ │ ├── Core.EnableIDNA.txt
│ │ │ │ │ ├── Core.Encoding.txt
│ │ │ │ │ ├── Core.EscapeInvalidChildren.txt
│ │ │ │ │ ├── Core.EscapeInvalidTags.txt
│ │ │ │ │ ├── Core.EscapeNonASCIICharacters.txt
│ │ │ │ │ ├── Core.HiddenElements.txt
│ │ │ │ │ ├── Core.Language.txt
│ │ │ │ │ ├── Core.LegacyEntityDecoder.txt
│ │ │ │ │ ├── Core.LexerImpl.txt
│ │ │ │ │ ├── Core.MaintainLineNumbers.txt
│ │ │ │ │ ├── Core.NormalizeNewlines.txt
│ │ │ │ │ ├── Core.RemoveBlanks.txt
│ │ │ │ │ ├── Core.RemoveInvalidImg.txt
│ │ │ │ │ ├── Core.RemoveProcessingInstructions.txt
│ │ │ │ │ ├── Core.RemoveScriptContents.txt
│ │ │ │ │ ├── Filter.Custom.txt
│ │ │ │ │ ├── Filter.ExtractStyleBlocks.Escaping.txt
│ │ │ │ │ ├── Filter.ExtractStyleBlocks.Scope.txt
│ │ │ │ │ ├── Filter.ExtractStyleBlocks.TidyImpl.txt
│ │ │ │ │ ├── Filter.ExtractStyleBlocks.txt
│ │ │ │ │ ├── Filter.YouTube.txt
│ │ │ │ │ ├── HTML.Allowed.txt
│ │ │ │ │ ├── HTML.AllowedAttributes.txt
│ │ │ │ │ ├── HTML.AllowedComments.txt
│ │ │ │ │ ├── HTML.AllowedCommentsRegexp.txt
│ │ │ │ │ ├── HTML.AllowedElements.txt
│ │ │ │ │ ├── HTML.AllowedModules.txt
│ │ │ │ │ ├── HTML.Attr.Name.UseCDATA.txt
│ │ │ │ │ ├── HTML.BlockWrapper.txt
│ │ │ │ │ ├── HTML.CoreModules.txt
│ │ │ │ │ ├── HTML.CustomDoctype.txt
│ │ │ │ │ ├── HTML.DefinitionID.txt
│ │ │ │ │ ├── HTML.DefinitionRev.txt
│ │ │ │ │ ├── HTML.Doctype.txt
│ │ │ │ │ ├── HTML.FlashAllowFullScreen.txt
│ │ │ │ │ ├── HTML.ForbiddenAttributes.txt
│ │ │ │ │ ├── HTML.ForbiddenElements.txt
│ │ │ │ │ ├── HTML.Forms.txt
│ │ │ │ │ ├── HTML.MaxImgLength.txt
│ │ │ │ │ ├── HTML.Nofollow.txt
│ │ │ │ │ ├── HTML.Parent.txt
│ │ │ │ │ ├── HTML.Proprietary.txt
│ │ │ │ │ ├── HTML.SafeEmbed.txt
│ │ │ │ │ ├── HTML.SafeIframe.txt
│ │ │ │ │ ├── HTML.SafeObject.txt
│ │ │ │ │ ├── HTML.SafeScripting.txt
│ │ │ │ │ ├── HTML.Strict.txt
│ │ │ │ │ ├── HTML.TargetBlank.txt
│ │ │ │ │ ├── HTML.TargetNoopener.txt
│ │ │ │ │ ├── HTML.TargetNoreferrer.txt
│ │ │ │ │ ├── HTML.TidyAdd.txt
│ │ │ │ │ ├── HTML.TidyLevel.txt
│ │ │ │ │ ├── HTML.TidyRemove.txt
│ │ │ │ │ ├── HTML.Trusted.txt
│ │ │ │ │ ├── HTML.XHTML.txt
│ │ │ │ │ ├── Output.CommentScriptContents.txt
│ │ │ │ │ ├── Output.FixInnerHTML.txt
│ │ │ │ │ ├── Output.FlashCompat.txt
│ │ │ │ │ ├── Output.Newline.txt
│ │ │ │ │ ├── Output.SortAttr.txt
│ │ │ │ │ ├── Output.TidyFormat.txt
│ │ │ │ │ ├── Test.ForceNoIconv.txt
│ │ │ │ │ ├── URI.AllowedSchemes.txt
│ │ │ │ │ ├── URI.Base.txt
│ │ │ │ │ ├── URI.DefaultScheme.txt
│ │ │ │ │ ├── URI.DefinitionID.txt
│ │ │ │ │ ├── URI.DefinitionRev.txt
│ │ │ │ │ ├── URI.Disable.txt
│ │ │ │ │ ├── URI.DisableExternal.txt
│ │ │ │ │ ├── URI.DisableExternalResources.txt
│ │ │ │ │ ├── URI.DisableResources.txt
│ │ │ │ │ ├── URI.Host.txt
│ │ │ │ │ ├── URI.HostBlacklist.txt
│ │ │ │ │ ├── URI.MakeAbsolute.txt
│ │ │ │ │ ├── URI.Munge.txt
│ │ │ │ │ ├── URI.MungeResources.txt
│ │ │ │ │ ├── URI.MungeSecretKey.txt
│ │ │ │ │ ├── URI.OverrideAllowedSchemes.txt
│ │ │ │ │ ├── URI.SafeIframeRegexp.txt
│ │ │ │ │ └── info.ini
│ │ │ │ └── schema.ser
│ │ │ ├── ConfigSchema.php
│ │ │ ├── ContentSets.php
│ │ │ ├── Context.php
│ │ │ ├── Definition.php
│ │ │ ├── DefinitionCache/
│ │ │ │ ├── Decorator/
│ │ │ │ │ ├── Cleanup.php
│ │ │ │ │ ├── Memory.php
│ │ │ │ │ └── Template.php.in
│ │ │ │ ├── Decorator.php
│ │ │ │ ├── Null.php
│ │ │ │ ├── Serializer/
│ │ │ │ │ └── README
│ │ │ │ └── Serializer.php
│ │ │ ├── DefinitionCache.php
│ │ │ ├── DefinitionCacheFactory.php
│ │ │ ├── Doctype.php
│ │ │ ├── DoctypeRegistry.php
│ │ │ ├── ElementDef.php
│ │ │ ├── Encoder.php
│ │ │ ├── EntityLookup/
│ │ │ │ └── entities.ser
│ │ │ ├── EntityLookup.php
│ │ │ ├── EntityParser.php
│ │ │ ├── ErrorCollector.php
│ │ │ ├── ErrorStruct.php
│ │ │ ├── Exception.php
│ │ │ ├── Filter/
│ │ │ │ ├── ExtractStyleBlocks.php
│ │ │ │ └── YouTube.php
│ │ │ ├── Filter.php
│ │ │ ├── Generator.php
│ │ │ ├── HTMLDefinition.php
│ │ │ ├── HTMLModule/
│ │ │ │ ├── Bdo.php
│ │ │ │ ├── CommonAttributes.php
│ │ │ │ ├── Edit.php
│ │ │ │ ├── Forms.php
│ │ │ │ ├── Hypertext.php
│ │ │ │ ├── Iframe.php
│ │ │ │ ├── Image.php
│ │ │ │ ├── Legacy.php
│ │ │ │ ├── List.php
│ │ │ │ ├── Name.php
│ │ │ │ ├── Nofollow.php
│ │ │ │ ├── NonXMLCommonAttributes.php
│ │ │ │ ├── Object.php
│ │ │ │ ├── Presentation.php
│ │ │ │ ├── Proprietary.php
│ │ │ │ ├── Ruby.php
│ │ │ │ ├── SafeEmbed.php
│ │ │ │ ├── SafeObject.php
│ │ │ │ ├── SafeScripting.php
│ │ │ │ ├── Scripting.php
│ │ │ │ ├── StyleAttribute.php
│ │ │ │ ├── Tables.php
│ │ │ │ ├── Target.php
│ │ │ │ ├── TargetBlank.php
│ │ │ │ ├── TargetNoopener.php
│ │ │ │ ├── TargetNoreferrer.php
│ │ │ │ ├── Text.php
│ │ │ │ ├── Tidy/
│ │ │ │ │ ├── Name.php
│ │ │ │ │ ├── Proprietary.php
│ │ │ │ │ ├── Strict.php
│ │ │ │ │ ├── Transitional.php
│ │ │ │ │ ├── XHTML.php
│ │ │ │ │ └── XHTMLAndHTML4.php
│ │ │ │ ├── Tidy.php
│ │ │ │ └── XMLCommonAttributes.php
│ │ │ ├── HTMLModule.php
│ │ │ ├── HTMLModuleManager.php
│ │ │ ├── IDAccumulator.php
│ │ │ ├── Injector/
│ │ │ │ ├── AutoParagraph.php
│ │ │ │ ├── DisplayLinkURI.php
│ │ │ │ ├── Linkify.php
│ │ │ │ ├── PurifierLinkify.php
│ │ │ │ ├── RemoveEmpty.php
│ │ │ │ ├── RemoveSpansWithoutAttributes.php
│ │ │ │ └── SafeObject.php
│ │ │ ├── Injector.php
│ │ │ ├── Language/
│ │ │ │ └── messages/
│ │ │ │ └── en.php
│ │ │ ├── Language.php
│ │ │ ├── LanguageFactory.php
│ │ │ ├── Length.php
│ │ │ ├── Lexer/
│ │ │ │ ├── DOMLex.php
│ │ │ │ ├── DirectLex.php
│ │ │ │ └── PH5P.php
│ │ │ ├── Lexer.php
│ │ │ ├── Node/
│ │ │ │ ├── Comment.php
│ │ │ │ ├── Element.php
│ │ │ │ └── Text.php
│ │ │ ├── Node.php
│ │ │ ├── PercentEncoder.php
│ │ │ ├── Printer/
│ │ │ │ ├── CSSDefinition.php
│ │ │ │ ├── ConfigForm.css
│ │ │ │ ├── ConfigForm.js
│ │ │ │ ├── ConfigForm.php
│ │ │ │ └── HTMLDefinition.php
│ │ │ ├── Printer.php
│ │ │ ├── PropertyList.php
│ │ │ ├── PropertyListIterator.php
│ │ │ ├── Queue.php
│ │ │ ├── Strategy/
│ │ │ │ ├── Composite.php
│ │ │ │ ├── Core.php
│ │ │ │ ├── FixNesting.php
│ │ │ │ ├── MakeWellFormed.php
│ │ │ │ ├── RemoveForeignElements.php
│ │ │ │ └── ValidateAttributes.php
│ │ │ ├── Strategy.php
│ │ │ ├── StringHash.php
│ │ │ ├── StringHashParser.php
│ │ │ ├── TagTransform/
│ │ │ │ ├── Font.php
│ │ │ │ └── Simple.php
│ │ │ ├── TagTransform.php
│ │ │ ├── Token/
│ │ │ │ ├── Comment.php
│ │ │ │ ├── Empty.php
│ │ │ │ ├── End.php
│ │ │ │ ├── Start.php
│ │ │ │ ├── Tag.php
│ │ │ │ └── Text.php
│ │ │ ├── Token.php
│ │ │ ├── TokenFactory.php
│ │ │ ├── URI.php
│ │ │ ├── URIDefinition.php
│ │ │ ├── URIFilter/
│ │ │ │ ├── DisableExternal.php
│ │ │ │ ├── DisableExternalResources.php
│ │ │ │ ├── DisableResources.php
│ │ │ │ ├── HostBlacklist.php
│ │ │ │ ├── MakeAbsolute.php
│ │ │ │ ├── Munge.php
│ │ │ │ └── SafeIframe.php
│ │ │ ├── URIFilter.php
│ │ │ ├── URIParser.php
│ │ │ ├── URIScheme/
│ │ │ │ ├── data.php
│ │ │ │ ├── file.php
│ │ │ │ ├── ftp.php
│ │ │ │ ├── http.php
│ │ │ │ ├── https.php
│ │ │ │ ├── mailto.php
│ │ │ │ ├── news.php
│ │ │ │ ├── nntp.php
│ │ │ │ └── tel.php
│ │ │ ├── URIScheme.php
│ │ │ ├── URISchemeRegistry.php
│ │ │ ├── UnitConverter.php
│ │ │ ├── VarParser/
│ │ │ │ ├── Flexible.php
│ │ │ │ └── Native.php
│ │ │ ├── VarParser.php
│ │ │ ├── VarParserException.php
│ │ │ └── Zipper.php
│ │ ├── HTMLPurifier.auto.php
│ │ ├── HTMLPurifier.autoload-legacy.php
│ │ ├── HTMLPurifier.autoload.php
│ │ ├── HTMLPurifier.composer.php
│ │ ├── HTMLPurifier.func.php
│ │ ├── HTMLPurifier.includes.php
│ │ ├── HTMLPurifier.kses.php
│ │ ├── HTMLPurifier.path.php
│ │ ├── HTMLPurifier.php
│ │ └── HTMLPurifier.safe-includes.php
│ ├── firebase/
│ │ └── php-jwt/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── composer.json
│ │ └── src/
│ │ ├── BeforeValidException.php
│ │ ├── CachedKeySet.php
│ │ ├── ExpiredException.php
│ │ ├── JWK.php
│ │ ├── JWT.php
│ │ ├── Key.php
│ │ └── SignatureInvalidException.php
│ ├── google/
│ │ └── auth/
│ │ ├── COPYING
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── SECURITY.md
│ │ ├── autoload.php
│ │ ├── composer.json
│ │ └── src/
│ │ ├── AccessToken.php
│ │ ├── ApplicationDefaultCredentials.php
│ │ ├── Cache/
│ │ │ ├── InvalidArgumentException.php
│ │ │ ├── Item.php
│ │ │ ├── MemoryCacheItemPool.php
│ │ │ ├── SysVCacheItemPool.php
│ │ │ └── TypedItem.php
│ │ ├── CacheTrait.php
│ │ ├── Credentials/
│ │ │ ├── AppIdentityCredentials.php
│ │ │ ├── GCECredentials.php
│ │ │ ├── IAMCredentials.php
│ │ │ ├── ImpersonatedServiceAccountCredentials.php
│ │ │ ├── InsecureCredentials.php
│ │ │ ├── ServiceAccountCredentials.php
│ │ │ ├── ServiceAccountJwtAccessCredentials.php
│ │ │ └── UserRefreshCredentials.php
│ │ ├── CredentialsLoader.php
│ │ ├── FetchAuthTokenCache.php
│ │ ├── FetchAuthTokenInterface.php
│ │ ├── GCECache.php
│ │ ├── GetQuotaProjectInterface.php
│ │ ├── HttpHandler/
│ │ │ ├── Guzzle5HttpHandler.php
│ │ │ ├── Guzzle6HttpHandler.php
│ │ │ ├── Guzzle7HttpHandler.php
│ │ │ ├── HttpClientCache.php
│ │ │ └── HttpHandlerFactory.php
│ │ ├── Iam.php
│ │ ├── IamSignerTrait.php
│ │ ├── Middleware/
│ │ │ ├── AuthTokenMiddleware.php
│ │ │ ├── ProxyAuthTokenMiddleware.php
│ │ │ ├── ScopedAccessTokenMiddleware.php
│ │ │ └── SimpleMiddleware.php
│ │ ├── OAuth2.php
│ │ ├── ProjectIdProviderInterface.php
│ │ ├── ServiceAccountSignerTrait.php
│ │ ├── SignBlobInterface.php
│ │ └── UpdateMetadataInterface.php
│ ├── guzzlehttp/
│ │ ├── guzzle/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── UPGRADING.md
│ │ │ ├── composer.json
│ │ │ └── src/
│ │ │ ├── BodySummarizer.php
│ │ │ ├── BodySummarizerInterface.php
│ │ │ ├── Client.php
│ │ │ ├── ClientInterface.php
│ │ │ ├── ClientTrait.php
│ │ │ ├── Cookie/
│ │ │ │ ├── CookieJar.php
│ │ │ │ ├── CookieJarInterface.php
│ │ │ │ ├── FileCookieJar.php
│ │ │ │ ├── SessionCookieJar.php
│ │ │ │ └── SetCookie.php
│ │ │ ├── Exception/
│ │ │ │ ├── BadResponseException.php
│ │ │ │ ├── ClientException.php
│ │ │ │ ├── ConnectException.php
│ │ │ │ ├── GuzzleException.php
│ │ │ │ ├── InvalidArgumentException.php
│ │ │ │ ├── RequestException.php
│ │ │ │ ├── ServerException.php
│ │ │ │ ├── TooManyRedirectsException.php
│ │ │ │ └── TransferException.php
│ │ │ ├── Handler/
│ │ │ │ ├── CurlFactory.php
│ │ │ │ ├── CurlFactoryInterface.php
│ │ │ │ ├── CurlHandler.php
│ │ │ │ ├── CurlMultiHandler.php
│ │ │ │ ├── EasyHandle.php
│ │ │ │ ├── HeaderProcessor.php
│ │ │ │ ├── MockHandler.php
│ │ │ │ ├── Proxy.php
│ │ │ │ └── StreamHandler.php
│ │ │ ├── HandlerStack.php
│ │ │ ├── MessageFormatter.php
│ │ │ ├── MessageFormatterInterface.php
│ │ │ ├── Middleware.php
│ │ │ ├── Pool.php
│ │ │ ├── PrepareBodyMiddleware.php
│ │ │ ├── RedirectMiddleware.php
│ │ │ ├── RequestOptions.php
│ │ │ ├── RetryMiddleware.php
│ │ │ ├── TransferStats.php
│ │ │ ├── Utils.php
│ │ │ ├── functions.php
│ │ │ └── functions_include.php
│ │ ├── promises/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── composer.json
│ │ │ └── src/
│ │ │ ├── AggregateException.php
│ │ │ ├── CancellationException.php
│ │ │ ├── Coroutine.php
│ │ │ ├── Create.php
│ │ │ ├── Each.php
│ │ │ ├── EachPromise.php
│ │ │ ├── FulfilledPromise.php
│ │ │ ├── Is.php
│ │ │ ├── Promise.php
│ │ │ ├── PromiseInterface.php
│ │ │ ├── PromisorInterface.php
│ │ │ ├── RejectedPromise.php
│ │ │ ├── RejectionException.php
│ │ │ ├── TaskQueue.php
│ │ │ ├── TaskQueueInterface.php
│ │ │ └── Utils.php
│ │ └── psr7/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── composer.json
│ │ └── src/
│ │ ├── AppendStream.php
│ │ ├── BufferStream.php
│ │ ├── CachingStream.php
│ │ ├── DroppingStream.php
│ │ ├── Exception/
│ │ │ └── MalformedUriException.php
│ │ ├── FnStream.php
│ │ ├── Header.php
│ │ ├── HttpFactory.php
│ │ ├── InflateStream.php
│ │ ├── LazyOpenStream.php
│ │ ├── LimitStream.php
│ │ ├── Message.php
│ │ ├── MessageTrait.php
│ │ ├── MimeType.php
│ │ ├── MultipartStream.php
│ │ ├── NoSeekStream.php
│ │ ├── PumpStream.php
│ │ ├── Query.php
│ │ ├── Request.php
│ │ ├── Response.php
│ │ ├── Rfc7230.php
│ │ ├── ServerRequest.php
│ │ ├── Stream.php
│ │ ├── StreamDecoratorTrait.php
│ │ ├── StreamWrapper.php
│ │ ├── UploadedFile.php
│ │ ├── Uri.php
│ │ ├── UriComparator.php
│ │ ├── UriNormalizer.php
│ │ ├── UriResolver.php
│ │ └── Utils.php
│ ├── league/
│ │ └── html-to-markdown/
│ │ ├── .github/
│ │ │ ├── FUNDING.yml
│ │ │ ├── ISSUE_TEMPLATE/
│ │ │ │ ├── 1_Conversion_error.yaml
│ │ │ │ ├── 2_Bug_report.yaml
│ │ │ │ └── 3_Feature_request.yaml
│ │ │ ├── SECURITY.md
│ │ │ ├── renovate.json
│ │ │ ├── stale.yml
│ │ │ └── workflows/
│ │ │ └── tests.yml
│ │ ├── CHANGELOG.md
│ │ ├── CONDUCT.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── bin/
│ │ │ └── html-to-markdown
│ │ ├── composer.json
│ │ ├── phpcs.xml.dist
│ │ ├── phpstan.neon.dist
│ │ ├── psalm.xml
│ │ └── src/
│ │ ├── Coerce.php
│ │ ├── Configuration.php
│ │ ├── ConfigurationAwareInterface.php
│ │ ├── Converter/
│ │ │ ├── BlockquoteConverter.php
│ │ │ ├── CodeConverter.php
│ │ │ ├── CommentConverter.php
│ │ │ ├── ConverterInterface.php
│ │ │ ├── DefaultConverter.php
│ │ │ ├── DivConverter.php
│ │ │ ├── EmphasisConverter.php
│ │ │ ├── HardBreakConverter.php
│ │ │ ├── HeaderConverter.php
│ │ │ ├── HorizontalRuleConverter.php
│ │ │ ├── ImageConverter.php
│ │ │ ├── LinkConverter.php
│ │ │ ├── ListBlockConverter.php
│ │ │ ├── ListItemConverter.php
│ │ │ ├── ParagraphConverter.php
│ │ │ ├── PreformattedConverter.php
│ │ │ ├── TableConverter.php
│ │ │ └── TextConverter.php
│ │ ├── Element.php
│ │ ├── ElementInterface.php
│ │ ├── Environment.php
│ │ ├── HtmlConverter.php
│ │ ├── HtmlConverterInterface.php
│ │ └── PreConverterInterface.php
│ ├── matthiasmullie/
│ │ ├── minify/
│ │ │ ├── LICENSE
│ │ │ ├── bin/
│ │ │ │ ├── minifycss
│ │ │ │ └── minifyjs
│ │ │ ├── composer.json
│ │ │ ├── data/
│ │ │ │ └── js/
│ │ │ │ ├── keywords_after.txt
│ │ │ │ ├── keywords_before.txt
│ │ │ │ ├── keywords_reserved.txt
│ │ │ │ ├── operators.txt
│ │ │ │ ├── operators_after.txt
│ │ │ │ └── operators_before.txt
│ │ │ └── src/
│ │ │ ├── CSS.php
│ │ │ ├── Exception.php
│ │ │ ├── Exceptions/
│ │ │ │ ├── BasicException.php
│ │ │ │ ├── FileImportException.php
│ │ │ │ ├── IOException.php
│ │ │ │ └── PatternMatchException.php
│ │ │ ├── JS.php
│ │ │ └── Minify.php
│ │ └── path-converter/
│ │ ├── LICENSE
│ │ ├── composer.json
│ │ └── src/
│ │ ├── Converter.php
│ │ ├── ConverterInterface.php
│ │ └── NoConverter.php
│ ├── michelf/
│ │ ├── php-markdown/
│ │ │ ├── .editorconfig
│ │ │ ├── .gitignore
│ │ │ ├── .scrutinizer.yml
│ │ │ ├── .travis.yml
│ │ │ ├── License.md
│ │ │ ├── Michelf/
│ │ │ │ ├── Markdown.inc.php
│ │ │ │ ├── Markdown.php
│ │ │ │ ├── MarkdownExtra.inc.php
│ │ │ │ ├── MarkdownExtra.php
│ │ │ │ ├── MarkdownInterface.inc.php
│ │ │ │ └── MarkdownInterface.php
│ │ │ ├── Readme.md
│ │ │ ├── Readme.php
│ │ │ ├── composer.json
│ │ │ ├── phpunit.xml.dist
│ │ │ └── test/
│ │ │ ├── bootstrap.php
│ │ │ ├── helpers/
│ │ │ │ └── MarkdownTestHelper.php
│ │ │ ├── integration/
│ │ │ │ └── PhpMarkdownTest.php
│ │ │ ├── resources/
│ │ │ │ ├── markdown.mdtest/
│ │ │ │ │ ├── Amps and angle encoding.text
│ │ │ │ │ ├── Amps and angle encoding.xhtml
│ │ │ │ │ ├── Auto links.text
│ │ │ │ │ ├── Auto links.xhtml
│ │ │ │ │ ├── Backslash escapes.text
│ │ │ │ │ ├── Backslash escapes.xhtml
│ │ │ │ │ ├── Blockquotes with code blocks.text
│ │ │ │ │ ├── Blockquotes with code blocks.xhtml
│ │ │ │ │ ├── Code Blocks.text
│ │ │ │ │ ├── Code Blocks.xhtml
│ │ │ │ │ ├── Code Spans.text
│ │ │ │ │ ├── Code Spans.xhtml
│ │ │ │ │ ├── Hard-wrapped paragraphs with list-like lines.text
│ │ │ │ │ ├── Hard-wrapped paragraphs with list-like lines.xhtml
│ │ │ │ │ ├── Horizontal rules.text
│ │ │ │ │ ├── Horizontal rules.xhtml
│ │ │ │ │ ├── Images.text
│ │ │ │ │ ├── Images.xhtml
│ │ │ │ │ ├── Inline HTML (Advanced).text
│ │ │ │ │ ├── Inline HTML (Advanced).xhtml
│ │ │ │ │ ├── Inline HTML (Simple).html
│ │ │ │ │ ├── Inline HTML (Simple).text
│ │ │ │ │ ├── Inline HTML comments.html
│ │ │ │ │ ├── Inline HTML comments.text
│ │ │ │ │ ├── Links, inline style.text
│ │ │ │ │ ├── Links, inline style.xhtml
│ │ │ │ │ ├── Links, reference style.text
│ │ │ │ │ ├── Links, reference style.xhtml
│ │ │ │ │ ├── Links, shortcut references.text
│ │ │ │ │ ├── Links, shortcut references.xhtml
│ │ │ │ │ ├── Literal quotes in titles.text
│ │ │ │ │ ├── Literal quotes in titles.xhtml
│ │ │ │ │ ├── Markdown Documentation - Basics.text
│ │ │ │ │ ├── Markdown Documentation - Basics.xhtml
│ │ │ │ │ ├── Markdown Documentation - Syntax.text
│ │ │ │ │ ├── Markdown Documentation - Syntax.xhtml
│ │ │ │ │ ├── Nested blockquotes.text
│ │ │ │ │ ├── Nested blockquotes.xhtml
│ │ │ │ │ ├── Ordered and unordered lists.text
│ │ │ │ │ ├── Ordered and unordered lists.xhtml
│ │ │ │ │ ├── Strong and em together.text
│ │ │ │ │ ├── Strong and em together.xhtml
│ │ │ │ │ ├── Tabs.text
│ │ │ │ │ ├── Tabs.xhtml
│ │ │ │ │ ├── Tidyness.text
│ │ │ │ │ └── Tidyness.xhtml
│ │ │ │ ├── php-markdown-extra.mdtest/
│ │ │ │ │ ├── Abbr.text
│ │ │ │ │ ├── Abbr.xhtml
│ │ │ │ │ ├── Backtick Fenced Code Blocks Special Cases.text
│ │ │ │ │ ├── Backtick Fenced Code Blocks Special Cases.xhtml
│ │ │ │ │ ├── Backtick Fenced Code Blocks.text
│ │ │ │ │ ├── Backtick Fenced Code Blocks.xhtml
│ │ │ │ │ ├── Definition Lists.text
│ │ │ │ │ ├── Definition Lists.xhtml
│ │ │ │ │ ├── Emphasis.text
│ │ │ │ │ ├── Emphasis.xhtml
│ │ │ │ │ ├── Footnotes.text
│ │ │ │ │ ├── Footnotes.xhtml
│ │ │ │ │ ├── Headers with attributes.text
│ │ │ │ │ ├── Headers with attributes.xhtml
│ │ │ │ │ ├── Inline HTML with Markdown content.text
│ │ │ │ │ ├── Inline HTML with Markdown content.xhtml
│ │ │ │ │ ├── Link & Image Attributes.text
│ │ │ │ │ ├── Link & Image Attributes.xhtml
│ │ │ │ │ ├── Tables.text
│ │ │ │ │ ├── Tables.xhtml
│ │ │ │ │ ├── Tilde Fenced Code Blocks Special Cases.text
│ │ │ │ │ ├── Tilde Fenced Code Blocks Special Cases.xhtml
│ │ │ │ │ ├── Tilde Fenced Code Blocks.text
│ │ │ │ │ └── Tilde Fenced Code Blocks.xhtml
│ │ │ │ └── php-markdown.mdtest/
│ │ │ │ ├── Adjacent Lists.text
│ │ │ │ ├── Adjacent Lists.xhtml
│ │ │ │ ├── Auto Links.text
│ │ │ │ ├── Auto Links.xhtml
│ │ │ │ ├── Backslash escapes.text
│ │ │ │ ├── Backslash escapes.xhtml
│ │ │ │ ├── Code Spans.text
│ │ │ │ ├── Code Spans.xhtml
│ │ │ │ ├── Code block in a list item.text
│ │ │ │ ├── Code block in a list item.xhtml
│ │ │ │ ├── Code block on second line.text
│ │ │ │ ├── Code block on second line.xhtml
│ │ │ │ ├── Code block regressions.text
│ │ │ │ ├── Code block regressions.xhtml
│ │ │ │ ├── Email auto links.text
│ │ │ │ ├── Email auto links.xhtml
│ │ │ │ ├── Emphasis.text
│ │ │ │ ├── Emphasis.xhtml
│ │ │ │ ├── Empty List Item.text
│ │ │ │ ├── Empty List Item.xhtml
│ │ │ │ ├── Headers.text
│ │ │ │ ├── Headers.xhtml
│ │ │ │ ├── Horizontal Rules.text
│ │ │ │ ├── Horizontal Rules.xhtml
│ │ │ │ ├── Inline HTML (Simple).html
│ │ │ │ ├── Inline HTML (Simple).text
│ │ │ │ ├── Inline HTML (Span).text
│ │ │ │ ├── Inline HTML (Span).xhtml
│ │ │ │ ├── Inline HTML comments.html
│ │ │ │ ├── Inline HTML comments.text
│ │ │ │ ├── Ins & del.text
│ │ │ │ ├── Ins & del.xhtml
│ │ │ │ ├── Links, inline style.text
│ │ │ │ ├── Links, inline style.xhtml
│ │ │ │ ├── MD5 Hashes.text
│ │ │ │ ├── MD5 Hashes.xhtml
│ │ │ │ ├── Mixed OLs and ULs.text
│ │ │ │ ├── Mixed OLs and ULs.xhtml
│ │ │ │ ├── Nesting.text
│ │ │ │ ├── Nesting.xhtml
│ │ │ │ ├── PHP-Specific Bugs.text
│ │ │ │ ├── PHP-Specific Bugs.xhtml
│ │ │ │ ├── Parens in URL.text
│ │ │ │ ├── Parens in URL.xhtml
│ │ │ │ ├── Quotes in attributes.text
│ │ │ │ ├── Quotes in attributes.xhtml
│ │ │ │ ├── Tight blocks.text
│ │ │ │ ├── Tight blocks.xhtml
│ │ │ │ ├── XML empty tag.text
│ │ │ │ └── XML empty tag.xhtml
│ │ │ └── unit/
│ │ │ └── MarkdownExtraTest.php
│ │ └── php-smartypants/
│ │ ├── License.md
│ │ ├── Michelf/
│ │ │ ├── SmartyPants.inc.php
│ │ │ ├── SmartyPants.php
│ │ │ ├── SmartyPantsTypographer.inc.php
│ │ │ └── SmartyPantsTypographer.php
│ │ ├── Readme.md
│ │ ├── Readme.php
│ │ └── composer.json
│ ├── psr/
│ │ ├── cache/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.md
│ │ │ ├── composer.json
│ │ │ └── src/
│ │ │ ├── CacheException.php
│ │ │ ├── CacheItemInterface.php
│ │ │ ├── CacheItemPoolInterface.php
│ │ │ └── InvalidArgumentException.php
│ │ ├── http-client/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── composer.json
│ │ │ └── src/
│ │ │ ├── ClientExceptionInterface.php
│ │ │ ├── ClientInterface.php
│ │ │ ├── NetworkExceptionInterface.php
│ │ │ └── RequestExceptionInterface.php
│ │ ├── http-factory/
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── composer.json
│ │ │ └── src/
│ │ │ ├── RequestFactoryInterface.php
│ │ │ ├── ResponseFactoryInterface.php
│ │ │ ├── ServerRequestFactoryInterface.php
│ │ │ ├── StreamFactoryInterface.php
│ │ │ ├── UploadedFileFactoryInterface.php
│ │ │ └── UriFactoryInterface.php
│ │ └── http-message/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── composer.json
│ │ ├── docs/
│ │ │ ├── PSR7-Interfaces.md
│ │ │ └── PSR7-Usage.md
│ │ └── src/
│ │ ├── MessageInterface.php
│ │ ├── RequestInterface.php
│ │ ├── ResponseInterface.php
│ │ ├── ServerRequestInterface.php
│ │ ├── StreamInterface.php
│ │ ├── UploadedFileInterface.php
│ │ └── UriInterface.php
│ ├── ralouphie/
│ │ └── getallheaders/
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── composer.json
│ │ └── src/
│ │ └── getallheaders.php
│ ├── rmccue/
│ │ └── requests/
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── composer.json
│ │ └── library/
│ │ ├── Requests/
│ │ │ ├── Auth/
│ │ │ │ └── Basic.php
│ │ │ ├── Auth.php
│ │ │ ├── Cookie/
│ │ │ │ └── Jar.php
│ │ │ ├── Cookie.php
│ │ │ ├── Exception/
│ │ │ │ ├── HTTP/
│ │ │ │ │ ├── 304.php
│ │ │ │ │ ├── 305.php
│ │ │ │ │ ├── 306.php
│ │ │ │ │ ├── 400.php
│ │ │ │ │ ├── 401.php
│ │ │ │ │ ├── 402.php
│ │ │ │ │ ├── 403.php
│ │ │ │ │ ├── 404.php
│ │ │ │ │ ├── 405.php
│ │ │ │ │ ├── 406.php
│ │ │ │ │ ├── 407.php
│ │ │ │ │ ├── 408.php
│ │ │ │ │ ├── 409.php
│ │ │ │ │ ├── 410.php
│ │ │ │ │ ├── 411.php
│ │ │ │ │ ├── 412.php
│ │ │ │ │ ├── 413.php
│ │ │ │ │ ├── 414.php
│ │ │ │ │ ├── 415.php
│ │ │ │ │ ├── 416.php
│ │ │ │ │ ├── 417.php
│ │ │ │ │ ├── 418.php
│ │ │ │ │ ├── 428.php
│ │ │ │ │ ├── 429.php
│ │ │ │ │ ├── 431.php
│ │ │ │ │ ├── 500.php
│ │ │ │ │ ├── 501.php
│ │ │ │ │ ├── 502.php
│ │ │ │ │ ├── 503.php
│ │ │ │ │ ├── 504.php
│ │ │ │ │ ├── 505.php
│ │ │ │ │ ├── 511.php
│ │ │ │ │ └── Unknown.php
│ │ │ │ ├── HTTP.php
│ │ │ │ ├── Transport/
│ │ │ │ │ └── cURL.php
│ │ │ │ └── Transport.php
│ │ │ ├── Exception.php
│ │ │ ├── Hooker.php
│ │ │ ├── Hooks.php
│ │ │ ├── IDNAEncoder.php
│ │ │ ├── IPv6.php
│ │ │ ├── IRI.php
│ │ │ ├── Proxy/
│ │ │ │ └── HTTP.php
│ │ │ ├── Proxy.php
│ │ │ ├── Response/
│ │ │ │ └── Headers.php
│ │ │ ├── Response.php
│ │ │ ├── SSL.php
│ │ │ ├── Session.php
│ │ │ ├── Transport/
│ │ │ │ ├── cURL.php
│ │ │ │ ├── cacert.pem
│ │ │ │ └── fsockopen.php
│ │ │ ├── Transport.php
│ │ │ └── Utility/
│ │ │ ├── CaseInsensitiveDictionary.php
│ │ │ └── FilteredIterator.php
│ │ └── Requests.php
│ ├── scssphp/
│ │ └── scssphp/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── bin/
│ │ │ └── pscss
│ │ ├── composer.json
│ │ ├── scss.inc.php
│ │ └── src/
│ │ ├── Base/
│ │ │ └── Range.php
│ │ ├── Block/
│ │ │ ├── AtRootBlock.php
│ │ │ ├── CallableBlock.php
│ │ │ ├── ContentBlock.php
│ │ │ ├── DirectiveBlock.php
│ │ │ ├── EachBlock.php
│ │ │ ├── ElseBlock.php
│ │ │ ├── ElseifBlock.php
│ │ │ ├── ForBlock.php
│ │ │ ├── IfBlock.php
│ │ │ ├── MediaBlock.php
│ │ │ ├── NestedPropertyBlock.php
│ │ │ └── WhileBlock.php
│ │ ├── Block.php
│ │ ├── Cache.php
│ │ ├── Colors.php
│ │ ├── CompilationResult.php
│ │ ├── Compiler/
│ │ │ ├── CachedResult.php
│ │ │ └── Environment.php
│ │ ├── Compiler.php
│ │ ├── Exception/
│ │ │ ├── CompilerException.php
│ │ │ ├── ParserException.php
│ │ │ ├── RangeException.php
│ │ │ ├── SassException.php
│ │ │ ├── SassScriptException.php
│ │ │ └── ServerException.php
│ │ ├── Formatter/
│ │ │ ├── Compact.php
│ │ │ ├── Compressed.php
│ │ │ ├── Crunched.php
│ │ │ ├── Debug.php
│ │ │ ├── Expanded.php
│ │ │ ├── Nested.php
│ │ │ └── OutputBlock.php
│ │ ├── Formatter.php
│ │ ├── Logger/
│ │ │ ├── LoggerInterface.php
│ │ │ ├── QuietLogger.php
│ │ │ └── StreamLogger.php
│ │ ├── Node/
│ │ │ └── Number.php
│ │ ├── Node.php
│ │ ├── OutputStyle.php
│ │ ├── Parser.php
│ │ ├── SourceMap/
│ │ │ ├── Base64.php
│ │ │ ├── Base64VLQ.php
│ │ │ └── SourceMapGenerator.php
│ │ ├── Type.php
│ │ ├── Util/
│ │ │ └── Path.php
│ │ ├── Util.php
│ │ ├── ValueConverter.php
│ │ ├── Version.php
│ │ └── Warn.php
│ ├── swiftmailer/
│ │ └── swiftmailer/
│ │ ├── .gitattributes
│ │ ├── .github/
│ │ │ ├── ISSUE_TEMPLATE.md
│ │ │ ├── PULL_REQUEST_TEMPLATE.md
│ │ │ └── workflows/
│ │ │ └── tests.yml
│ │ ├── .gitignore
│ │ ├── .php_cs.dist
│ │ ├── CHANGES
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── composer.json
│ │ ├── doc/
│ │ │ ├── headers.rst
│ │ │ ├── index.rst
│ │ │ ├── introduction.rst
│ │ │ ├── japanese.rst
│ │ │ ├── messages.rst
│ │ │ ├── plugins.rst
│ │ │ └── sending.rst
│ │ └── lib/
│ │ ├── classes/
│ │ │ ├── Swift/
│ │ │ │ ├── AddressEncoder/
│ │ │ │ │ ├── IdnAddressEncoder.php
│ │ │ │ │ └── Utf8AddressEncoder.php
│ │ │ │ ├── AddressEncoder.php
│ │ │ │ ├── AddressEncoderException.php
│ │ │ │ ├── Attachment.php
│ │ │ │ ├── ByteStream/
│ │ │ │ │ ├── AbstractFilterableInputStream.php
│ │ │ │ │ ├── ArrayByteStream.php
│ │ │ │ │ ├── FileByteStream.php
│ │ │ │ │ └── TemporaryFileByteStream.php
│ │ │ │ ├── CharacterReader/
│ │ │ │ │ ├── GenericFixedWidthReader.php
│ │ │ │ │ ├── UsAsciiReader.php
│ │ │ │ │ └── Utf8Reader.php
│ │ │ │ ├── CharacterReader.php
│ │ │ │ ├── CharacterReaderFactory/
│ │ │ │ │ └── SimpleCharacterReaderFactory.php
│ │ │ │ ├── CharacterReaderFactory.php
│ │ │ │ ├── CharacterStream/
│ │ │ │ │ ├── ArrayCharacterStream.php
│ │ │ │ │ └── NgCharacterStream.php
│ │ │ │ ├── CharacterStream.php
│ │ │ │ ├── ConfigurableSpool.php
│ │ │ │ ├── DependencyContainer.php
│ │ │ │ ├── DependencyException.php
│ │ │ │ ├── EmbeddedFile.php
│ │ │ │ ├── Encoder/
│ │ │ │ │ ├── Base64Encoder.php
│ │ │ │ │ ├── QpEncoder.php
│ │ │ │ │ └── Rfc2231Encoder.php
│ │ │ │ ├── Encoder.php
│ │ │ │ ├── Events/
│ │ │ │ │ ├── CommandEvent.php
│ │ │ │ │ ├── CommandListener.php
│ │ │ │ │ ├── Event.php
│ │ │ │ │ ├── EventDispatcher.php
│ │ │ │ │ ├── EventListener.php
│ │ │ │ │ ├── EventObject.php
│ │ │ │ │ ├── ResponseEvent.php
│ │ │ │ │ ├── ResponseListener.php
│ │ │ │ │ ├── SendEvent.php
│ │ │ │ │ ├── SendListener.php
│ │ │ │ │ ├── SimpleEventDispatcher.php
│ │ │ │ │ ├── TransportChangeEvent.php
│ │ │ │ │ ├── TransportChangeListener.php
│ │ │ │ │ ├── TransportExceptionEvent.php
│ │ │ │ │ └── TransportExceptionListener.php
│ │ │ │ ├── FailoverTransport.php
│ │ │ │ ├── FileSpool.php
│ │ │ │ ├── FileStream.php
│ │ │ │ ├── Filterable.php
│ │ │ │ ├── IdGenerator.php
│ │ │ │ ├── Image.php
│ │ │ │ ├── InputByteStream.php
│ │ │ │ ├── IoException.php
│ │ │ │ ├── KeyCache/
│ │ │ │ │ ├── ArrayKeyCache.php
│ │ │ │ │ ├── DiskKeyCache.php
│ │ │ │ │ ├── KeyCacheInputStream.php
│ │ │ │ │ ├── NullKeyCache.php
│ │ │ │ │ └── SimpleKeyCacheInputStream.php
│ │ │ │ ├── KeyCache.php
│ │ │ │ ├── LoadBalancedTransport.php
│ │ │ │ ├── Mailer/
│ │ │ │ │ ├── ArrayRecipientIterator.php
│ │ │ │ │ └── RecipientIterator.php
│ │ │ │ ├── Mailer.php
│ │ │ │ ├── MemorySpool.php
│ │ │ │ ├── Message.php
│ │ │ │ ├── Mime/
│ │ │ │ │ ├── Attachment.php
│ │ │ │ │ ├── CharsetObserver.php
│ │ │ │ │ ├── ContentEncoder/
│ │ │ │ │ │ ├── Base64ContentEncoder.php
│ │ │ │ │ │ ├── NativeQpContentEncoder.php
│ │ │ │ │ │ ├── NullContentEncoder.php
│ │ │ │ │ │ ├── PlainContentEncoder.php
│ │ │ │ │ │ ├── QpContentEncoder.php
│ │ │ │ │ │ ├── QpContentEncoderProxy.php
│ │ │ │ │ │ └── RawContentEncoder.php
│ │ │ │ │ ├── ContentEncoder.php
│ │ │ │ │ ├── EmbeddedFile.php
│ │ │ │ │ ├── EncodingObserver.php
│ │ │ │ │ ├── Header.php
│ │ │ │ │ ├── HeaderEncoder/
│ │ │ │ │ │ ├── Base64HeaderEncoder.php
│ │ │ │ │ │ └── QpHeaderEncoder.php
│ │ │ │ │ ├── HeaderEncoder.php
│ │ │ │ │ ├── Headers/
│ │ │ │ │ │ ├── AbstractHeader.php
│ │ │ │ │ │ ├── DateHeader.php
│ │ │ │ │ │ ├── IdentificationHeader.php
│ │ │ │ │ │ ├── MailboxHeader.php
│ │ │ │ │ │ ├── OpenDKIMHeader.php
│ │ │ │ │ │ ├── ParameterizedHeader.php
│ │ │ │ │ │ ├── PathHeader.php
│ │ │ │ │ │ └── UnstructuredHeader.php
│ │ │ │ │ ├── IdGenerator.php
│ │ │ │ │ ├── MimePart.php
│ │ │ │ │ ├── SimpleHeaderFactory.php
│ │ │ │ │ ├── SimpleHeaderSet.php
│ │ │ │ │ ├── SimpleMessage.php
│ │ │ │ │ └── SimpleMimeEntity.php
│ │ │ │ ├── MimePart.php
│ │ │ │ ├── NullTransport.php
│ │ │ │ ├── OutputByteStream.php
│ │ │ │ ├── Plugins/
│ │ │ │ │ ├── AntiFloodPlugin.php
│ │ │ │ │ ├── BandwidthMonitorPlugin.php
│ │ │ │ │ ├── Decorator/
│ │ │ │ │ │ └── Replacements.php
│ │ │ │ │ ├── DecoratorPlugin.php
│ │ │ │ │ ├── ImpersonatePlugin.php
│ │ │ │ │ ├── Logger.php
│ │ │ │ │ ├── LoggerPlugin.php
│ │ │ │ │ ├── Loggers/
│ │ │ │ │ │ ├── ArrayLogger.php
│ │ │ │ │ │ └── EchoLogger.php
│ │ │ │ │ ├── MessageLogger.php
│ │ │ │ │ ├── Pop/
│ │ │ │ │ │ ├── Pop3Connection.php
│ │ │ │ │ │ └── Pop3Exception.php
│ │ │ │ │ ├── PopBeforeSmtpPlugin.php
│ │ │ │ │ ├── RedirectingPlugin.php
│ │ │ │ │ ├── Reporter.php
│ │ │ │ │ ├── ReporterPlugin.php
│ │ │ │ │ ├── Reporters/
│ │ │ │ │ │ ├── HitReporter.php
│ │ │ │ │ │ └── HtmlReporter.php
│ │ │ │ │ ├── Sleeper.php
│ │ │ │ │ ├── ThrottlerPlugin.php
│ │ │ │ │ └── Timer.php
│ │ │ │ ├── Preferences.php
│ │ │ │ ├── ReplacementFilterFactory.php
│ │ │ │ ├── RfcComplianceException.php
│ │ │ │ ├── SendmailTransport.php
│ │ │ │ ├── Signer.php
│ │ │ │ ├── Signers/
│ │ │ │ │ ├── BodySigner.php
│ │ │ │ │ ├── DKIMSigner.php
│ │ │ │ │ ├── DomainKeySigner.php
│ │ │ │ │ ├── HeaderSigner.php
│ │ │ │ │ ├── OpenDKIMSigner.php
│ │ │ │ │ └── SMimeSigner.php
│ │ │ │ ├── SmtpTransport.php
│ │ │ │ ├── Spool.php
│ │ │ │ ├── SpoolTransport.php
│ │ │ │ ├── StreamFilter.php
│ │ │ │ ├── StreamFilters/
│ │ │ │ │ ├── ByteArrayReplacementFilter.php
│ │ │ │ │ ├── StringReplacementFilter.php
│ │ │ │ │ └── StringReplacementFilterFactory.php
│ │ │ │ ├── SwiftException.php
│ │ │ │ ├── Transport/
│ │ │ │ │ ├── AbstractSmtpTransport.php
│ │ │ │ │ ├── Esmtp/
│ │ │ │ │ │ ├── Auth/
│ │ │ │ │ │ │ ├── CramMd5Authenticator.php
│ │ │ │ │ │ │ ├── LoginAuthenticator.php
│ │ │ │ │ │ │ ├── NTLMAuthenticator.php
│ │ │ │ │ │ │ ├── PlainAuthenticator.php
│ │ │ │ │ │ │ └── XOAuth2Authenticator.php
│ │ │ │ │ │ ├── AuthHandler.php
│ │ │ │ │ │ ├── Authenticator.php
│ │ │ │ │ │ ├── EightBitMimeHandler.php
│ │ │ │ │ │ └── SmtpUtf8Handler.php
│ │ │ │ │ ├── EsmtpHandler.php
│ │ │ │ │ ├── EsmtpTransport.php
│ │ │ │ │ ├── FailoverTransport.php
│ │ │ │ │ ├── IoBuffer.php
│ │ │ │ │ ├── LoadBalancedTransport.php
│ │ │ │ │ ├── NullTransport.php
│ │ │ │ │ ├── SendmailTransport.php
│ │ │ │ │ ├── SmtpAgent.php
│ │ │ │ │ ├── SpoolTransport.php
│ │ │ │ │ └── StreamBuffer.php
│ │ │ │ ├── Transport.php
│ │ │ │ └── TransportException.php
│ │ │ └── Swift.php
│ │ ├── dependency_maps/
│ │ │ ├── cache_deps.php
│ │ │ ├── message_deps.php
│ │ │ ├── mime_deps.php
│ │ │ └── transport_deps.php
│ │ ├── mime_types.php
│ │ ├── preferences.php
│ │ ├── swift_required.php
│ │ └── swiftmailer_generate_mimes_config.php
│ ├── symfony/
│ │ ├── deprecation-contracts/
│ │ │ ├── CHANGELOG.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── composer.json
│ │ │ └── function.php
│ │ ├── polyfill-iconv/
│ │ │ ├── Iconv.php
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── Resources/
│ │ │ │ └── charset/
│ │ │ │ ├── from.big5.php
│ │ │ │ ├── from.cp037.php
│ │ │ │ ├── from.cp1006.php
│ │ │ │ ├── from.cp1026.php
│ │ │ │ ├── from.cp424.php
│ │ │ │ ├── from.cp437.php
│ │ │ │ ├── from.cp500.php
│ │ │ │ ├── from.cp737.php
│ │ │ │ ├── from.cp775.php
│ │ │ │ ├── from.cp850.php
│ │ │ │ ├── from.cp852.php
│ │ │ │ ├── from.cp855.php
│ │ │ │ ├── from.cp856.php
│ │ │ │ ├── from.cp857.php
│ │ │ │ ├── from.cp860.php
│ │ │ │ ├── from.cp861.php
│ │ │ │ ├── from.cp862.php
│ │ │ │ ├── from.cp863.php
│ │ │ │ ├── from.cp864.php
│ │ │ │ ├── from.cp865.php
│ │ │ │ ├── from.cp866.php
│ │ │ │ ├── from.cp869.php
│ │ │ │ ├── from.cp874.php
│ │ │ │ ├── from.cp875.php
│ │ │ │ ├── from.cp932.php
│ │ │ │ ├── from.cp936.php
│ │ │ │ ├── from.cp949.php
│ │ │ │ ├── from.cp950.php
│ │ │ │ ├── from.iso-8859-1.php
│ │ │ │ ├── from.iso-8859-10.php
│ │ │ │ ├── from.iso-8859-11.php
│ │ │ │ ├── from.iso-8859-13.php
│ │ │ │ ├── from.iso-8859-14.php
│ │ │ │ ├── from.iso-8859-15.php
│ │ │ │ ├── from.iso-8859-16.php
│ │ │ │ ├── from.iso-8859-2.php
│ │ │ │ ├── from.iso-8859-3.php
│ │ │ │ ├── from.iso-8859-4.php
│ │ │ │ ├── from.iso-8859-5.php
│ │ │ │ ├── from.iso-8859-6.php
│ │ │ │ ├── from.iso-8859-7.php
│ │ │ │ ├── from.iso-8859-8.php
│ │ │ │ ├── from.iso-8859-9.php
│ │ │ │ ├── from.koi8-r.php
│ │ │ │ ├── from.koi8-u.php
│ │ │ │ ├── from.us-ascii.php
│ │ │ │ ├── from.windows-1250.php
│ │ │ │ ├── from.windows-1251.php
│ │ │ │ ├── from.windows-1252.php
│ │ │ │ ├── from.windows-1253.php
│ │ │ │ ├── from.windows-1254.php
│ │ │ │ ├── from.windows-1255.php
│ │ │ │ ├── from.windows-1256.php
│ │ │ │ ├── from.windows-1257.php
│ │ │ │ ├── from.windows-1258.php
│ │ │ │ └── translit.php
│ │ │ ├── bootstrap.php
│ │ │ ├── bootstrap80.php
│ │ │ └── composer.json
│ │ ├── polyfill-intl-idn/
│ │ │ ├── Idn.php
│ │ │ ├── Info.php
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── Resources/
│ │ │ │ └── unidata/
│ │ │ │ ├── DisallowedRanges.php
│ │ │ │ ├── Regex.php
│ │ │ │ ├── deviation.php
│ │ │ │ ├── disallowed.php
│ │ │ │ ├── disallowed_STD3_mapped.php
│ │ │ │ ├── disallowed_STD3_valid.php
│ │ │ │ ├── ignored.php
│ │ │ │ ├── mapped.php
│ │ │ │ └── virama.php
│ │ │ ├── bootstrap.php
│ │ │ ├── bootstrap80.php
│ │ │ └── composer.json
│ │ ├── polyfill-intl-normalizer/
│ │ │ ├── LICENSE
│ │ │ ├── Normalizer.php
│ │ │ ├── README.md
│ │ │ ├── Resources/
│ │ │ │ ├── stubs/
│ │ │ │ │ └── Normalizer.php
│ │ │ │ └── unidata/
│ │ │ │ ├── canonicalComposition.php
│ │ │ │ ├── canonicalDecomposition.php
│ │ │ │ ├── combiningClass.php
│ │ │ │ └── compatibilityDecomposition.php
│ │ │ ├── bootstrap.php
│ │ │ ├── bootstrap80.php
│ │ │ └── composer.json
│ │ └── polyfill-mbstring/
│ │ ├── LICENSE
│ │ ├── Mbstring.php
│ │ ├── README.md
│ │ ├── Resources/
│ │ │ └── unidata/
│ │ │ ├── caseFolding.php
│ │ │ ├── lowerCase.php
│ │ │ ├── titleCaseRegexp.php
│ │ │ └── upperCase.php
│ │ ├── bootstrap.php
│ │ ├── bootstrap80.php
│ │ └── composer.json
│ └── true/
│ └── punycode/
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── composer.json
│ └── src/
│ ├── Exception/
│ │ ├── DomainOutOfBoundsException.php
│ │ ├── LabelOutOfBoundsException.php
│ │ └── OutOfBoundsException.php
│ └── Punycode.php
├── config/
│ └── config.inc.php
├── index.php
├── layouts/
│ ├── default/
│ │ ├── conf/
│ │ │ └── info.xml
│ │ ├── default.layout.css
│ │ ├── default.layout.js
│ │ ├── default.layout.webfont.css
│ │ └── layout.html
│ ├── user_layout/
│ │ ├── conf/
│ │ │ └── info.xml
│ │ ├── layout.html
│ │ ├── user_layout.css
│ │ └── user_layout.js
│ └── xedition/
│ ├── conf/
│ │ └── info.xml
│ ├── css/
│ │ ├── idangerous.swiper.css
│ │ ├── layout.css
│ │ ├── webfont.css
│ │ ├── welcome.css
│ │ ├── widget.login.css
│ │ └── xeicon.css
│ ├── demo/
│ │ ├── copyright.html
│ │ ├── footer.html
│ │ ├── slide.html
│ │ ├── welcome_main.html
│ │ ├── welcome_sub1.html
│ │ ├── welcome_sub2.html
│ │ └── welcome_sub3.html
│ ├── js/
│ │ ├── idangerous.swiper.js
│ │ ├── jquery.parallax-scroll.js
│ │ ├── layout.js
│ │ └── welcome.js
│ ├── lang/
│ │ └── ko.php
│ └── layout.html
├── m.layouts/
│ ├── colorCode/
│ │ ├── conf/
│ │ │ └── info.xml
│ │ ├── css/
│ │ │ ├── Blue/
│ │ │ │ └── layout.css
│ │ │ ├── Gray/
│ │ │ │ └── layout.css
│ │ │ ├── Orange/
│ │ │ │ └── layout.css
│ │ │ ├── Red/
│ │ │ │ └── layout.css
│ │ │ ├── nGreenA/
│ │ │ │ └── layout.css
│ │ │ └── nGreenB/
│ │ │ └── layout.css
│ │ ├── js/
│ │ │ └── layout.js
│ │ └── layout.html
│ ├── default/
│ │ ├── conf/
│ │ │ └── info.xml
│ │ ├── layout.html
│ │ └── mx.css
│ └── simpleGray/
│ ├── conf/
│ │ └── info.xml
│ ├── layout.html
│ └── mx.css
├── modules/
│ ├── addon/
│ │ ├── addon.admin.controller.php
│ │ ├── addon.admin.model.php
│ │ ├── addon.admin.view.php
│ │ ├── addon.class.php
│ │ ├── addon.controller.php
│ │ ├── addon.model.php
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── queries/
│ │ │ ├── deleteAddon.xml
│ │ │ ├── deleteSiteAddon.xml
│ │ │ ├── deleteSiteAddons.xml
│ │ │ ├── getAddonInfo.xml
│ │ │ ├── getAddonIsActivated.xml
│ │ │ ├── getAddons.xml
│ │ │ ├── getMAddonIsActivated.xml
│ │ │ ├── getSiteAddonInfo.xml
│ │ │ ├── getSiteAddonIsActivated.xml
│ │ │ ├── getSiteAddons.xml
│ │ │ ├── getSiteMAddonIsActivated.xml
│ │ │ ├── insertAddon.xml
│ │ │ ├── insertSiteAddon.xml
│ │ │ ├── updateAddon.xml
│ │ │ └── updateSiteAddon.xml
│ │ ├── ruleset/
│ │ │ └── updateAddonSetup.xml
│ │ ├── schemas/
│ │ │ ├── addons.xml
│ │ │ └── addons_site.xml
│ │ └── tpl/
│ │ ├── addon_info.html
│ │ ├── addon_list.html
│ │ ├── css/
│ │ │ └── addon.css
│ │ ├── filter/
│ │ │ ├── setup_addon.xml
│ │ │ └── toggle_activate_addon.xml
│ │ ├── js/
│ │ │ └── addon.js
│ │ └── setup_addon.html
│ ├── admin/
│ │ ├── admin.admin.controller.php
│ │ ├── admin.admin.model.php
│ │ ├── admin.admin.view.php
│ │ ├── admin.class.php
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── controllers/
│ │ │ ├── AdminMenu.php
│ │ │ ├── Base.php
│ │ │ ├── Dashboard.php
│ │ │ ├── Design.php
│ │ │ ├── Install.php
│ │ │ ├── ServerEnv.php
│ │ │ ├── maintenance/
│ │ │ │ ├── CacheReset.php
│ │ │ │ └── Cleanup.php
│ │ │ └── systemconfig/
│ │ │ ├── Advanced.php
│ │ │ ├── Debug.php
│ │ │ ├── Domains.php
│ │ │ ├── Notification.php
│ │ │ ├── Queue.php
│ │ │ ├── SEO.php
│ │ │ ├── Security.php
│ │ │ └── SiteLock.php
│ │ ├── lang/
│ │ │ ├── de.php
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── mn.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── models/
│ │ │ ├── AdminMenu.php
│ │ │ ├── Favorite.php
│ │ │ ├── Icon.php
│ │ │ └── Utility.php
│ │ ├── queries/
│ │ │ ├── deleteAllFavorite.xml
│ │ │ ├── deleteFavorite.xml
│ │ │ ├── deleteFavorites.xml
│ │ │ ├── getCommentCount.xml
│ │ │ ├── getCommentDeclaredCount.xml
│ │ │ ├── getCommentDeclaredStatus.xml
│ │ │ ├── getCommentStatus.xml
│ │ │ ├── getDocumentCount.xml
│ │ │ ├── getDocumentDeclaredCount.xml
│ │ │ ├── getDocumentDeclaredStatus.xml
│ │ │ ├── getDocumentStatus.xml
│ │ │ ├── getFavorite.xml
│ │ │ ├── getFavoriteList.xml
│ │ │ ├── getFileCount.xml
│ │ │ ├── getFileStatus.xml
│ │ │ ├── getMemberCount.xml
│ │ │ ├── getMemberStatus.xml
│ │ │ ├── getSiteAllList.xml
│ │ │ ├── getSiteCountByDate.xml
│ │ │ ├── getSiteVisitors.xml
│ │ │ ├── getTodayCommentCount.xml
│ │ │ ├── getTodayTrackbackCount.xml
│ │ │ ├── getTotalSiteVisitors.xml
│ │ │ ├── getTotalVisitors.xml
│ │ │ ├── getTrackbackCount.xml
│ │ │ ├── getTrackbackStatus.xml
│ │ │ ├── getVisitors.xml
│ │ │ └── insertFavorite.xml
│ │ ├── ruleset/
│ │ │ ├── insertThemeInfo.xml
│ │ │ └── sitelock.xml
│ │ ├── schemas/
│ │ │ └── admin_favorite.xml
│ │ └── tpl/
│ │ ├── _admin_common.html
│ │ ├── _dashboard_counter.html
│ │ ├── _dashboard_default.html
│ │ ├── _footer.html
│ │ ├── _header.html
│ │ ├── admin_setup.html
│ │ ├── cleanup.html
│ │ ├── config_advanced.html
│ │ ├── config_debug.html
│ │ ├── config_domains.html
│ │ ├── config_domains_edit.html
│ │ ├── config_header.html
│ │ ├── config_notification.html
│ │ ├── config_queue.html
│ │ ├── config_security.html
│ │ ├── config_seo.html
│ │ ├── config_sitelock.html
│ │ ├── css/
│ │ │ ├── admin.bootstrap.css
│ │ │ ├── admin.css
│ │ │ ├── admin.iefix.css
│ │ │ └── queue_config.scss
│ │ ├── favicon_upload.html
│ │ ├── index.html
│ │ ├── js/
│ │ │ ├── admin.js
│ │ │ ├── cleanup.js
│ │ │ ├── config.js
│ │ │ ├── dashboard_counter.js
│ │ │ ├── dashboard_default.js
│ │ │ ├── jquery.jstree.js
│ │ │ ├── jquery.tmpl.js
│ │ │ ├── menu_setup.js
│ │ │ ├── notification_config.js
│ │ │ ├── queue_config.js
│ │ │ └── themes/
│ │ │ ├── apple/
│ │ │ │ └── style.css
│ │ │ ├── classic/
│ │ │ │ └── style.css
│ │ │ ├── default/
│ │ │ │ └── style.css
│ │ │ └── default-rtl/
│ │ │ └── style.css
│ │ ├── layout.html
│ │ ├── popup_layout.html
│ │ └── server_env.html
│ ├── adminlogging/
│ │ ├── adminlogging.class.php
│ │ ├── adminlogging.controller.php
│ │ ├── adminlogging.model.php
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── queries/
│ │ │ └── insertLog.xml
│ │ └── schemas/
│ │ └── admin_log.xml
│ ├── advanced_mailer/
│ │ ├── advanced_mailer.admin.controller.php
│ │ ├── advanced_mailer.admin.view.php
│ │ ├── advanced_mailer.class.php
│ │ ├── advanced_mailer.controller.php
│ │ ├── advanced_mailer.model.php
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ └── ko.php
│ │ ├── queries/
│ │ │ ├── countMailLogByType.xml
│ │ │ ├── countPushLogByType.xml
│ │ │ ├── countSMSLogByType.xml
│ │ │ ├── deleteMailLogs.xml
│ │ │ ├── deletePushLogs.xml
│ │ │ ├── deleteSMSLogs.xml
│ │ │ ├── getMailLogByType.xml
│ │ │ ├── getPushLogByType.xml
│ │ │ ├── getSMSLogByType.xml
│ │ │ ├── insertMailLog.xml
│ │ │ ├── insertPushLog.xml
│ │ │ └── insertSMSLog.xml
│ │ ├── schemas/
│ │ │ ├── advanced_mailer_log.xml
│ │ │ ├── advanced_mailer_push_log.xml
│ │ │ └── advanced_mailer_sms_log.xml
│ │ └── tpl/
│ │ ├── common.html
│ │ ├── config.html
│ │ ├── css/
│ │ │ ├── config.css
│ │ │ ├── spf_dkim.css
│ │ │ └── view_log.css
│ │ ├── exceptions.html
│ │ ├── js/
│ │ │ ├── config.js
│ │ │ ├── spf_dkim.js
│ │ │ └── view_log.js
│ │ ├── mail_log.html
│ │ ├── mail_test.html
│ │ ├── push_log.html
│ │ ├── push_test.html
│ │ ├── sms_log.html
│ │ ├── sms_test.html
│ │ ├── spf_dkim.html
│ │ └── test_email.html
│ ├── autoinstall/
│ │ ├── autoinstall.admin.controller.php
│ │ ├── autoinstall.admin.model.php
│ │ ├── autoinstall.admin.view.php
│ │ ├── autoinstall.class.php
│ │ ├── autoinstall.lib.php
│ │ ├── autoinstall.model.php
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── de.php
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── mn.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── queries/
│ │ │ ├── deleteCategory.xml
│ │ │ ├── deleteInstalledPackage.xml
│ │ │ ├── deletePackage.xml
│ │ │ ├── deletePackages.xml
│ │ │ ├── getCategories.xml
│ │ │ ├── getCategory.xml
│ │ │ ├── getHaveInstance.xml
│ │ │ ├── getInstalledPackage.xml
│ │ │ ├── getInstalledPackageCount.xml
│ │ │ ├── getInstalledPackageList.xml
│ │ │ ├── getInstalledPackages.xml
│ │ │ ├── getLatestPackage.xml
│ │ │ ├── getNeedUpdate.xml
│ │ │ ├── getPackage.xml
│ │ │ ├── getPackageCount.xml
│ │ │ ├── getPackageSrlByPath.xml
│ │ │ ├── getPackages.xml
│ │ │ ├── insertCategory.xml
│ │ │ ├── insertInstalledPackage.xml
│ │ │ ├── insertPackage.xml
│ │ │ ├── updateCategory.xml
│ │ │ ├── updateInstalledPackage.xml
│ │ │ └── updatePackage.xml
│ │ ├── schemas/
│ │ │ ├── ai_installed_packages.xml
│ │ │ ├── ai_remote_categories.xml
│ │ │ └── autoinstall_packages.xml
│ │ └── tpl/
│ │ ├── category.html
│ │ ├── config.html
│ │ ├── css/
│ │ │ └── autoinstall.css
│ │ ├── filter/
│ │ │ └── insert_config.xml
│ │ ├── header.html
│ │ ├── index.html
│ │ ├── install.html
│ │ ├── js/
│ │ │ ├── autoinstall.js
│ │ │ └── waiting.js
│ │ ├── list.html
│ │ └── uninstall.html
│ ├── board/
│ │ ├── board.admin.controller.php
│ │ ├── board.admin.model.php
│ │ ├── board.admin.view.php
│ │ ├── board.api.php
│ │ ├── board.class.php
│ │ ├── board.controller.php
│ │ ├── board.mobile.php
│ │ ├── board.model.php
│ │ ├── board.view.php
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── m.skins/
│ │ │ ├── default/
│ │ │ │ ├── _list.html
│ │ │ │ ├── category.html
│ │ │ │ ├── comment.html
│ │ │ │ ├── comment_form.html
│ │ │ │ ├── css/
│ │ │ │ │ └── mboard.css
│ │ │ │ ├── delete_comment_form.html
│ │ │ │ ├── delete_form.html
│ │ │ │ ├── input_password_form.html
│ │ │ │ ├── js/
│ │ │ │ │ └── mboard.js
│ │ │ │ ├── list.html
│ │ │ │ ├── read.html
│ │ │ │ ├── skin.xml
│ │ │ │ └── write_form.html
│ │ │ └── simpleGray/
│ │ │ ├── _list.html
│ │ │ ├── category.html
│ │ │ ├── comment.html
│ │ │ ├── comment_form.html
│ │ │ ├── css/
│ │ │ │ └── mboard.css
│ │ │ ├── delete_comment_form.html
│ │ │ ├── delete_form.html
│ │ │ ├── input_password_form.html
│ │ │ ├── js/
│ │ │ │ └── mboard.js
│ │ │ ├── list.html
│ │ │ ├── read.html
│ │ │ ├── skin.xml
│ │ │ └── write_form.html
│ │ ├── models/
│ │ │ └── Features.php
│ │ ├── queries/
│ │ │ ├── getAllBoard.xml
│ │ │ └── getBoardList.xml
│ │ ├── ruleset/
│ │ │ ├── insertBoard.xml
│ │ │ └── insertBoardForBasic.xml
│ │ ├── skins/
│ │ │ ├── default/
│ │ │ │ ├── _comment.html
│ │ │ │ ├── _footer.html
│ │ │ │ ├── _header.html
│ │ │ │ ├── _read.html
│ │ │ │ ├── _trackback.html
│ │ │ │ ├── board.default.css
│ │ │ │ ├── board.default.js
│ │ │ │ ├── comment.html
│ │ │ │ ├── comment_form.html
│ │ │ │ ├── delete_comment_form.html
│ │ │ │ ├── delete_form.html
│ │ │ │ ├── delete_trackback_form.html
│ │ │ │ ├── input_password_form.html
│ │ │ │ ├── list.html
│ │ │ │ ├── message.html
│ │ │ │ ├── skin.xml
│ │ │ │ ├── tag_list.html
│ │ │ │ └── write_form.html
│ │ │ └── xedition/
│ │ │ ├── _comment.html
│ │ │ ├── _footer.html
│ │ │ ├── _header.html
│ │ │ ├── _read.html
│ │ │ ├── _trackback.html
│ │ │ ├── board.default.css
│ │ │ ├── board.default.js
│ │ │ ├── comment.html
│ │ │ ├── comment_form.html
│ │ │ ├── delete_comment_form.html
│ │ │ ├── delete_form.html
│ │ │ ├── delete_trackback_form.html
│ │ │ ├── input_password_form.html
│ │ │ ├── list.html
│ │ │ ├── message.html
│ │ │ ├── skin.xml
│ │ │ ├── tag_list.html
│ │ │ ├── update_list.html
│ │ │ ├── update_view.html
│ │ │ ├── vote_log.html
│ │ │ └── write_form.html
│ │ └── tpl/
│ │ ├── addition_setup.html
│ │ ├── board_delete.html
│ │ ├── board_insert.html
│ │ ├── board_setup_basic.html
│ │ ├── category_list.html
│ │ ├── extra_vars.html
│ │ ├── filter/
│ │ │ ├── delete_board.xml
│ │ │ ├── delete_comment.xml
│ │ │ ├── delete_document.xml
│ │ │ ├── delete_trackback.xml
│ │ │ ├── input_password.xml
│ │ │ ├── insert.xml
│ │ │ ├── insert_admin.xml
│ │ │ ├── insert_board.xml
│ │ │ ├── insert_comment.xml
│ │ │ ├── search.xml
│ │ │ ├── update.xml
│ │ │ ├── update_category.xml
│ │ │ └── vote.xml
│ │ ├── grant_list.html
│ │ ├── header.html
│ │ ├── index.html
│ │ ├── js/
│ │ │ ├── board.js
│ │ │ ├── board_admin.js
│ │ │ └── rewrite.js
│ │ ├── skin_info.html
│ │ └── smartphone/
│ │ ├── comment_list.html
│ │ ├── list.html
│ │ └── view_document.html
│ ├── comment/
│ │ ├── comment.admin.controller.php
│ │ ├── comment.admin.view.php
│ │ ├── comment.class.php
│ │ ├── comment.controller.php
│ │ ├── comment.item.php
│ │ ├── comment.model.php
│ │ ├── comment.view.php
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── de.php
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── mn.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── queries/
│ │ │ ├── deleteComment.xml
│ │ │ ├── deleteCommentList.xml
│ │ │ ├── deleteCommentVotedLog.xml
│ │ │ ├── deleteComments.xml
│ │ │ ├── deleteCommentsList.xml
│ │ │ ├── deleteDeclaredCommentLog.xml
│ │ │ ├── deleteDeclaredComments.xml
│ │ │ ├── deleteModuleComments.xml
│ │ │ ├── deleteModuleCommentsList.xml
│ │ │ ├── getAllComments.xml
│ │ │ ├── getChildCommentCount.xml
│ │ │ ├── getChildComments.xml
│ │ │ ├── getComment.xml
│ │ │ ├── getCommentCount.xml
│ │ │ ├── getCommentCountByMemberSrl.xml
│ │ │ ├── getCommentDeclaredLogInfo.xml
│ │ │ ├── getCommentDepth.xml
│ │ │ ├── getCommentList.xml
│ │ │ ├── getCommentListByMemberSrl.xml
│ │ │ ├── getCommentListItem.xml
│ │ │ ├── getCommentPage.xml
│ │ │ ├── getCommentPageItem.xml
│ │ │ ├── getCommentPageList.xml
│ │ │ ├── getCommentParentNextSibling.xml
│ │ │ ├── getCommentVotedLog.xml
│ │ │ ├── getCommentVotedLogInfo.xml
│ │ │ ├── getCommentVotedLogMulti.xml
│ │ │ ├── getComments.xml
│ │ │ ├── getCommentsByDocumentSrls.xml
│ │ │ ├── getDeclaredComment.xml
│ │ │ ├── getDeclaredLatest.xml
│ │ │ ├── getDeclaredList.xml
│ │ │ ├── getDeclaredLogByCommentSrl.xml
│ │ │ ├── getDistinctModules.xml
│ │ │ ├── getModuleList.xml
│ │ │ ├── getNewestCommentList.xml
│ │ │ ├── getTotalCommentCountByGroupStatus.xml
│ │ │ ├── getTotalCommentCountWithinMemberByGroupStatus.xml
│ │ │ ├── getTotalCommentList.xml
│ │ │ ├── getTotalCommentListWithinMember.xml
│ │ │ ├── getTotalCommentListWithoutJoin.xml
│ │ │ ├── getVotedMemberList.xml
│ │ │ ├── insertComment.xml
│ │ │ ├── insertCommentDeclaredLog.xml
│ │ │ ├── insertCommentList.xml
│ │ │ ├── insertCommentVotedLog.xml
│ │ │ ├── insertDeclaredComment.xml
│ │ │ ├── updateBlamedCount.xml
│ │ │ ├── updateComment.xml
│ │ │ ├── updateCommentByDelete.xml
│ │ │ ├── updateCommentByRestore.xml
│ │ │ ├── updateCommentListArrange.xml
│ │ │ ├── updateCommentListModule.xml
│ │ │ ├── updateCommentModule.xml
│ │ │ ├── updateDeclaredComment.xml
│ │ │ ├── updateDeclaredCommentCancel.xml
│ │ │ ├── updatePublishedStatus.xml
│ │ │ ├── updateUploadedCount.xml
│ │ │ └── updateVotedCount.xml
│ │ ├── ruleset/
│ │ │ ├── deleteChecked.xml
│ │ │ ├── insertCommentModuleConfig.xml
│ │ │ └── insertDeclare.xml
│ │ ├── schemas/
│ │ │ ├── comment_declared.xml
│ │ │ ├── comment_declared_log.xml
│ │ │ ├── comment_voted_log.xml
│ │ │ ├── comments.xml
│ │ │ └── comments_list.xml
│ │ └── tpl/
│ │ ├── comment_list.html
│ │ ├── comment_module_config.html
│ │ ├── css/
│ │ │ └── declare_comment.css
│ │ ├── declare_comment.html
│ │ ├── declared_list.html
│ │ ├── declared_log.html
│ │ ├── filter/
│ │ │ ├── delete_checked.xml
│ │ │ └── insert_comment_module_config.xml
│ │ ├── header.html
│ │ └── js/
│ │ └── comment_admin.js
│ ├── communication/
│ │ ├── communication.admin.controller.php
│ │ ├── communication.admin.model.php
│ │ ├── communication.admin.view.php
│ │ ├── communication.class.php
│ │ ├── communication.controller.php
│ │ ├── communication.mobile.php
│ │ ├── communication.model.php
│ │ ├── communication.view.php
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── m.skins/
│ │ │ └── default/
│ │ │ ├── css/
│ │ │ │ └── mcommunication.css
│ │ │ ├── friends.html
│ │ │ ├── js/
│ │ │ │ └── communication.js
│ │ │ ├── message_box.html
│ │ │ ├── messages.html
│ │ │ ├── read_message.html
│ │ │ ├── send_message.html
│ │ │ └── skin.xml
│ │ ├── queries/
│ │ │ ├── addFriend.xml
│ │ │ ├── addFriendGroup.xml
│ │ │ ├── deleteFriend.xml
│ │ │ ├── deleteFriendGroup.xml
│ │ │ ├── deleteMessage.xml
│ │ │ ├── deleteMessages.xml
│ │ │ ├── deleteMessagesMember.xml
│ │ │ ├── getFriendGroup.xml
│ │ │ ├── getFriendGroups.xml
│ │ │ ├── getFriends.xml
│ │ │ ├── getMessage.xml
│ │ │ ├── getMessages.xml
│ │ │ ├── getNewMessage.xml
│ │ │ ├── getNewMessageCount.xml
│ │ │ ├── getReadedMessages.xml
│ │ │ ├── getReceivedMessages.xml
│ │ │ ├── getRelatedMessages.xml
│ │ │ ├── getSendedMessages.xml
│ │ │ ├── getStoredMessages.xml
│ │ │ ├── isAddedFriend.xml
│ │ │ ├── moveFriend.xml
│ │ │ ├── renameFriendGroup.xml
│ │ │ ├── sendMessage.xml
│ │ │ ├── setMessageReaded.xml
│ │ │ ├── setMessageStored.xml
│ │ │ └── updateAllowMessage.xml
│ │ ├── ruleset/
│ │ │ ├── addFriend.xml
│ │ │ ├── addFriendGroup.xml
│ │ │ ├── deleteCheckedFriend.xml
│ │ │ ├── insertConfig.xml
│ │ │ ├── moveCheckedFriend.xml
│ │ │ └── sendMessage.xml
│ │ ├── schemas/
│ │ │ ├── member_friend.xml
│ │ │ ├── member_friend_group.xml
│ │ │ └── member_message.xml
│ │ ├── scripts/
│ │ │ └── cleanMessageFiles.php
│ │ ├── skins/
│ │ │ └── default/
│ │ │ ├── add_friend.html
│ │ │ ├── add_friend_group.html
│ │ │ ├── common_footer.html
│ │ │ ├── common_header.html
│ │ │ ├── css/
│ │ │ │ └── communication.css
│ │ │ ├── filter/
│ │ │ │ ├── add_friend.xml
│ │ │ │ ├── add_friend_group.xml
│ │ │ │ ├── delete_checked_friend.xml
│ │ │ │ ├── delete_checked_message.xml
│ │ │ │ ├── delete_friend_group.xml
│ │ │ │ ├── move_friend.xml
│ │ │ │ ├── send_message.xml
│ │ │ │ └── update_allow_message.xml
│ │ │ ├── friends.html
│ │ │ ├── js/
│ │ │ │ └── communication.js
│ │ │ ├── messages.html
│ │ │ ├── new_message.html
│ │ │ ├── send_message.html
│ │ │ └── skin.xml
│ │ └── tpl/
│ │ ├── colorset_list.html
│ │ ├── filter/
│ │ │ └── insert_config.xml
│ │ ├── index.html
│ │ └── js/
│ │ ├── communication_admin.js
│ │ ├── member_communication.js
│ │ └── window_type.js
│ ├── counter/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── counter.admin.view.php
│ │ ├── counter.class.php
│ │ ├── counter.controller.php
│ │ ├── counter.model.php
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── queries/
│ │ │ ├── getCounterLog.xml
│ │ │ ├── getCounterLogStatus.xml
│ │ │ ├── getCounterStatus.xml
│ │ │ ├── getCounterStatusDays.xml
│ │ │ ├── getSiteCounterLogStatus.xml
│ │ │ ├── getSiteLogDate.xml
│ │ │ ├── getStartLogDate.xml
│ │ │ ├── getTodayStatus.xml
│ │ │ ├── insertCounterLog.xml
│ │ │ ├── insertTodayStatus.xml
│ │ │ ├── updateCounterPageview.xml
│ │ │ ├── updateCounterUnique.xml
│ │ │ ├── updateTotalCounterPageview.xml
│ │ │ └── updateTotalCounterUnique.xml
│ │ ├── schemas/
│ │ │ ├── counter_log.xml
│ │ │ ├── counter_site_status.xml
│ │ │ └── counter_status.xml
│ │ └── tpl/
│ │ ├── counter.css
│ │ ├── index.html
│ │ └── js/
│ │ └── counter_admin.js
│ ├── document/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── document.admin.controller.php
│ │ ├── document.admin.model.php
│ │ ├── document.admin.view.php
│ │ ├── document.class.php
│ │ ├── document.controller.php
│ │ ├── document.item.php
│ │ ├── document.model.php
│ │ ├── document.view.php
│ │ ├── lang/
│ │ │ ├── de.php
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── mn.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── queries/
│ │ │ ├── deleteAlias.xml
│ │ │ ├── deleteCategory.xml
│ │ │ ├── deleteDeclared.xml
│ │ │ ├── deleteDeclaredDocument.xml
│ │ │ ├── deleteDeclaredDocumentLog.xml
│ │ │ ├── deleteDeclaredDocuments.xml
│ │ │ ├── deleteDocument.xml
│ │ │ ├── deleteDocumentDeclaredLog.xml
│ │ │ ├── deleteDocumentExtraKeys.xml
│ │ │ ├── deleteDocumentExtraVars.xml
│ │ │ ├── deleteDocumentReadedLog.xml
│ │ │ ├── deleteDocumentUpdateLog.xml
│ │ │ ├── deleteDocumentVotedLog.xml
│ │ │ ├── deleteHistory.xml
│ │ │ ├── deleteModuleCategory.xml
│ │ │ ├── deleteModuleDocument.xml
│ │ │ ├── deleteTrash.xml
│ │ │ ├── getAliases.xml
│ │ │ ├── getAllModules.xml
│ │ │ ├── getCategory.xml
│ │ │ ├── getCategoryDocumentCount.xml
│ │ │ ├── getCategoryDocumentCounts.xml
│ │ │ ├── getCategoryList.xml
│ │ │ ├── getChildCategoryCount.xml
│ │ │ ├── getChildCategoryMinListOrder.xml
│ │ │ ├── getDailyArchivedList.xml
│ │ │ ├── getDeclaredDocument.xml
│ │ │ ├── getDeclaredLatest.xml
│ │ │ ├── getDeclaredList.xml
│ │ │ ├── getDeclaredLogByDocumentSrl.xml
│ │ │ ├── getDocument.xml
│ │ │ ├── getDocumentCount.xml
│ │ │ ├── getDocumentCountByDate.xml
│ │ │ ├── getDocumentCountByGroupStatus.xml
│ │ │ ├── getDocumentCountByMemberSrl.xml
│ │ │ ├── getDocumentDeclaredLogInfo.xml
│ │ │ ├── getDocumentDivision.xml
│ │ │ ├── getDocumentDivisionCount.xml
│ │ │ ├── getDocumentDivisionUseIndex.xml
│ │ │ ├── getDocumentExtraKeys.xml
│ │ │ ├── getDocumentExtraVars.xml
│ │ │ ├── getDocumentExtraVarsCount.xml
│ │ │ ├── getDocumentList.xml
│ │ │ ├── getDocumentListByMemberSrl.xml
│ │ │ ├── getDocumentListExtraSort.xml
│ │ │ ├── getDocumentListPage.xml
│ │ │ ├── getDocumentListUseIndex.xml
│ │ │ ├── getDocumentListWithExtraVars.xml
│ │ │ ├── getDocumentListWithExtraVarsPage.xml
│ │ │ ├── getDocumentListWithinComment.xml
│ │ │ ├── getDocumentListWithinCommentPage.xml
│ │ │ ├── getDocumentListWithinExtraVars.xml
│ │ │ ├── getDocumentListWithinExtraVarsExtraSort.xml
│ │ │ ├── getDocumentListWithinMember.xml
│ │ │ ├── getDocumentListWithinTag.xml
│ │ │ ├── getDocumentListWithinTagPage.xml
│ │ │ ├── getDocumentMaxExtraKeyIdx.xml
│ │ │ ├── getDocumentNumericExtraKeys.xml
│ │ │ ├── getDocumentReadedLogInfo.xml
│ │ │ ├── getDocumentSrlByAlias.xml
│ │ │ ├── getDocumentSrlByTitle.xml
│ │ │ ├── getDocumentTags.xml
│ │ │ ├── getDocumentTranslationLangCodes.xml
│ │ │ ├── getDocumentUpdateLog.xml
│ │ │ ├── getDocumentVotedLog.xml
│ │ │ ├── getDocumentVotedLogInfo.xml
│ │ │ ├── getDocuments.xml
│ │ │ ├── getDocumentsExtraVars.xml
│ │ │ ├── getGroupsExtraKeys.xml
│ │ │ ├── getGroupsExtraVars.xml
│ │ │ ├── getHistories.xml
│ │ │ ├── getHistory.xml
│ │ │ ├── getModuleList.xml
│ │ │ ├── getMonthlyArchivedList.xml
│ │ │ ├── getNoticeList.xml
│ │ │ ├── getTrash.xml
│ │ │ ├── getTrashByDocumentSrl.xml
│ │ │ ├── getTrashList.xml
│ │ │ ├── getUpdateLog.xml
│ │ │ ├── getUpdateLogAdminisExists.xml
│ │ │ ├── getVotedMemberList.xml
│ │ │ ├── insertAlias.xml
│ │ │ ├── insertCategory.xml
│ │ │ ├── insertDeclaredDocument.xml
│ │ │ ├── insertDocument.xml
│ │ │ ├── insertDocumentDeclaredLog.xml
│ │ │ ├── insertDocumentExtraKey.xml
│ │ │ ├── insertDocumentExtraVar.xml
│ │ │ ├── insertDocumentReadedLog.xml
│ │ │ ├── insertDocumentUpdateLog.xml
│ │ │ ├── insertDocumentVotedLog.xml
│ │ │ ├── insertHistory.xml
│ │ │ ├── insertTrash.xml
│ │ │ ├── isExistsExtraKey.xml
│ │ │ ├── moveDocumentExtraVars.xml
│ │ │ ├── updateBlamedCount.xml
│ │ │ ├── updateCategory.xml
│ │ │ ├── updateCategoryCount.xml
│ │ │ ├── updateCategoryIsDefault.xml
│ │ │ ├── updateCategoryOrder.xml
│ │ │ ├── updateCommentCount.xml
│ │ │ ├── updateDeclaredDocument.xml
│ │ │ ├── updateDeclaredDocumentCancel.xml
│ │ │ ├── updateDocument.xml
│ │ │ ├── updateDocumentCategory.xml
│ │ │ ├── updateDocumentCommentStatus.xml
│ │ │ ├── updateDocumentExtraKey.xml
│ │ │ ├── updateDocumentExtraKeyEid.xml
│ │ │ ├── updateDocumentExtraKeyIdx.xml
│ │ │ ├── updateDocumentExtraKeyIdxOrder.xml
│ │ │ ├── updateDocumentExtraVar.xml
│ │ │ ├── updateDocumentExtraVarEid.xml
│ │ │ ├── updateDocumentExtraVarIdx.xml
│ │ │ ├── updateDocumentExtraVarIdxOrder.xml
│ │ │ ├── updateDocumentExtraVarSortValue.xml
│ │ │ ├── updateDocumentExtraVarsModule.xml
│ │ │ ├── updateDocumentModule.xml
│ │ │ ├── updateDocumentOrder.xml
│ │ │ ├── updateDocumentStatus.xml
│ │ │ ├── updateDocumentTags.xml
│ │ │ ├── updateDocumentsAllowCommentTrackback.xml
│ │ │ ├── updateDocumentsLangCode.xml
│ │ │ ├── updateDocumentsModule.xml
│ │ │ ├── updateDocumentsSecret.xml
│ │ │ ├── updateReadedCount.xml
│ │ │ ├── updateTrackbackCount.xml
│ │ │ ├── updateUploadedCount.xml
│ │ │ └── updateVotedCount.xml
│ │ ├── ruleset/
│ │ │ ├── deleteAlias.xml
│ │ │ ├── insertAlias.xml
│ │ │ ├── insertCategory.xml
│ │ │ ├── insertDeclare.xml
│ │ │ └── insertExtraVar.xml
│ │ ├── schemas/
│ │ │ ├── document_aliases.xml
│ │ │ ├── document_categories.xml
│ │ │ ├── document_declared.xml
│ │ │ ├── document_declared_log.xml
│ │ │ ├── document_extra_keys.xml
│ │ │ ├── document_extra_vars.xml
│ │ │ ├── document_histories.xml
│ │ │ ├── document_readed_log.xml
│ │ │ ├── document_trash.xml
│ │ │ ├── document_update_log.xml
│ │ │ ├── document_voted_log.xml
│ │ │ └── documents.xml
│ │ └── tpl/
│ │ ├── category_list.html
│ │ ├── checked_list.html
│ │ ├── css/
│ │ │ ├── declare_document.css
│ │ │ └── document_admin.css
│ │ ├── declare_document.html
│ │ ├── declared_list.html
│ │ ├── declared_log.html
│ │ ├── document_alias.html
│ │ ├── document_config.html
│ │ ├── document_list.html
│ │ ├── document_module_config.html
│ │ ├── document_trash_list.html
│ │ ├── extra_keys.html
│ │ ├── filter/
│ │ │ ├── delete_alias.xml
│ │ │ ├── delete_category.xml
│ │ │ ├── delete_checked.xml
│ │ │ ├── delete_extra_var.xml
│ │ │ ├── insert_alias.xml
│ │ │ ├── insert_category.xml
│ │ │ ├── insert_config.xml
│ │ │ ├── insert_document_module_config.xml
│ │ │ ├── insert_extra_var.xml
│ │ │ ├── manage_checked_document.xml
│ │ │ ├── move_category.xml
│ │ │ └── restore_trash.xml
│ │ ├── header.html
│ │ ├── js/
│ │ │ ├── document_admin.js
│ │ │ ├── document_category.js
│ │ │ └── document_extra_keys.js
│ │ ├── preview_page.html
│ │ ├── print_page.html
│ │ └── saved_list_popup.html
│ ├── editor/
│ │ ├── components/
│ │ │ ├── emoticon/
│ │ │ │ ├── emoticon.class.php
│ │ │ │ ├── info.xml
│ │ │ │ └── tpl/
│ │ │ │ ├── images/
│ │ │ │ │ └── Twemoji/
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── LICENSE-GRAPHICS
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── skin.xml
│ │ │ │ ├── popup.html
│ │ │ │ ├── popup.js
│ │ │ │ └── popup.scss
│ │ │ ├── image_gallery/
│ │ │ │ ├── image_gallery.class.php
│ │ │ │ ├── info.xml
│ │ │ │ ├── lang/
│ │ │ │ │ └── lang.xml
│ │ │ │ └── tpl/
│ │ │ │ ├── gallery.js
│ │ │ │ ├── list_gallery.html
│ │ │ │ ├── list_gallery.js
│ │ │ │ ├── popup.css
│ │ │ │ ├── popup.html
│ │ │ │ ├── popup.js
│ │ │ │ ├── slide_gallery.css
│ │ │ │ ├── slide_gallery.html
│ │ │ │ └── slide_gallery.js
│ │ │ ├── image_link/
│ │ │ │ ├── image_link.class.php
│ │ │ │ ├── info.xml
│ │ │ │ ├── lang/
│ │ │ │ │ └── lang.xml
│ │ │ │ └── tpl/
│ │ │ │ ├── popup.css
│ │ │ │ ├── popup.html
│ │ │ │ └── popup.js
│ │ │ └── poll_maker/
│ │ │ ├── info.xml
│ │ │ ├── lang/
│ │ │ │ └── lang.xml
│ │ │ ├── poll_maker.class.php
│ │ │ └── tpl/
│ │ │ ├── filter/
│ │ │ │ └── insert_poll.xml
│ │ │ ├── popup.css
│ │ │ ├── popup.html
│ │ │ └── popup.js
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── editor.admin.controller.php
│ │ ├── editor.admin.view.php
│ │ ├── editor.api.php
│ │ ├── editor.class.php
│ │ ├── editor.controller.php
│ │ ├── editor.model.php
│ │ ├── editor.view.php
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── queries/
│ │ │ ├── deleteSavedDoc.xml
│ │ │ ├── deleteSiteComponent.xml
│ │ │ ├── getComponent.xml
│ │ │ ├── getComponentList.xml
│ │ │ ├── getSavedDocument.xml
│ │ │ ├── getSiteComponent.xml
│ │ │ ├── getSiteComponentList.xml
│ │ │ ├── insertComponent.xml
│ │ │ ├── insertSavedDoc.xml
│ │ │ ├── insertSiteComponent.xml
│ │ │ ├── isComponentInserted.xml
│ │ │ ├── isSiteComponentInserted.xml
│ │ │ ├── updateComponent.xml
│ │ │ └── updateSiteComponent.xml
│ │ ├── ruleset/
│ │ │ ├── componentOrderAndUse.xml
│ │ │ ├── generalConfig.xml
│ │ │ └── setupComponent.xml
│ │ ├── schemas/
│ │ │ ├── editor_autosave.xml
│ │ │ ├── editor_components.xml
│ │ │ └── editor_components_site.xml
│ │ ├── skins/
│ │ │ ├── ckeditor/
│ │ │ │ ├── config.blade.php
│ │ │ │ ├── css/
│ │ │ │ │ └── ckeditor.scss
│ │ │ │ ├── editor.html
│ │ │ │ ├── file_upload.html
│ │ │ │ ├── js/
│ │ │ │ │ ├── editor.js
│ │ │ │ │ ├── file_upload.js
│ │ │ │ │ └── xe_textarea.js
│ │ │ │ ├── lang/
│ │ │ │ │ ├── en.php
│ │ │ │ │ └── ko.php
│ │ │ │ └── skin.xml
│ │ │ ├── simpleeditor/
│ │ │ │ ├── css/
│ │ │ │ │ └── simpleeditor.scss
│ │ │ │ ├── editor.html
│ │ │ │ ├── js/
│ │ │ │ │ ├── interface.js
│ │ │ │ │ └── simpleeditor.js
│ │ │ │ └── skin.xml
│ │ │ └── textarea/
│ │ │ ├── css/
│ │ │ │ └── textarea.css
│ │ │ ├── editor.html
│ │ │ ├── js/
│ │ │ │ ├── interface.js
│ │ │ │ └── textarea.js
│ │ │ └── skin.xml
│ │ └── tpl/
│ │ ├── admin_index.html
│ │ ├── component_not_founded.html
│ │ ├── config_preview.html
│ │ ├── css/
│ │ │ ├── editor.css
│ │ │ ├── editor_admin.css
│ │ │ ├── editor_module_config.css
│ │ │ └── view_component.css
│ │ ├── editor_frame.html
│ │ ├── editor_module_config.html
│ │ ├── filter/
│ │ │ ├── insert_editor_module_config.xml
│ │ │ └── setup_component.xml
│ │ ├── images/
│ │ │ └── SWFUpload.swf
│ │ ├── js/
│ │ │ ├── editor.app.js
│ │ │ ├── editor_admin.js
│ │ │ ├── editor_common.js
│ │ │ └── editor_module_config.js
│ │ ├── popup.html
│ │ ├── setup_component.html
│ │ └── view_component.html
│ ├── extravar/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── controllers/
│ │ │ ├── Base.php
│ │ │ ├── Config.php
│ │ │ └── Install.php
│ │ ├── models/
│ │ │ ├── Value.php
│ │ │ └── ValueCollection.php
│ │ ├── skins/
│ │ │ └── default/
│ │ │ ├── assets/
│ │ │ │ ├── file_upload.js
│ │ │ │ └── number.js
│ │ │ ├── form.blade.php
│ │ │ ├── form_types/
│ │ │ │ ├── checkbox.blade.php
│ │ │ │ ├── datetime.blade.php
│ │ │ │ ├── file_upload.blade.php
│ │ │ │ ├── kr_zip.blade.php
│ │ │ │ ├── locale.blade.php
│ │ │ │ ├── password.blade.php
│ │ │ │ ├── select.blade.php
│ │ │ │ ├── tel.blade.php
│ │ │ │ ├── text.blade.php
│ │ │ │ └── textarea.blade.php
│ │ │ └── skin.xml
│ │ └── views/
│ │ ├── config.blade.php
│ │ └── header.blade.php
│ ├── file/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── file.admin.controller.php
│ │ ├── file.admin.model.php
│ │ ├── file.admin.view.php
│ │ ├── file.class.php
│ │ ├── file.controller.php
│ │ ├── file.model.php
│ │ ├── file.view.php
│ │ ├── lang/
│ │ │ ├── de.php
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── mn.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── queries/
│ │ │ ├── deleteFile.xml
│ │ │ ├── deleteFiles.xml
│ │ │ ├── deleteModuleFiles.xml
│ │ │ ├── getAttachedFileSize.xml
│ │ │ ├── getCoverImage.xml
│ │ │ ├── getFile.xml
│ │ │ ├── getFileList.xml
│ │ │ ├── getFileListByTargetStatus.xml
│ │ │ ├── getFiles.xml
│ │ │ ├── getFilesCount.xml
│ │ │ ├── getFilesCountByGroupValid.xml
│ │ │ ├── getModuleFiles.xml
│ │ │ ├── getModuleFilesProper.xml
│ │ │ ├── getModuleList.xml
│ │ │ ├── getOneFileInDocument.xml
│ │ │ ├── insertFile.xml
│ │ │ ├── insertFileChangelog.xml
│ │ │ ├── updateClearCoverImage.xml
│ │ │ ├── updateCoverImage.xml
│ │ │ ├── updateFile.xml
│ │ │ ├── updateFileDownloadCount.xml
│ │ │ ├── updateFileModule.xml
│ │ │ ├── updateFileModuleComment.xml
│ │ │ ├── updateFileName.xml
│ │ │ ├── updateFileTargetType.xml
│ │ │ └── updateFileValid.xml
│ │ ├── ruleset/
│ │ │ ├── deleteChecked.xml
│ │ │ ├── fileModuleConfig.xml
│ │ │ └── insertConfig.xml
│ │ ├── schemas/
│ │ │ ├── files.xml
│ │ │ └── files_changelog.xml
│ │ ├── scripts/
│ │ │ ├── cleanEmptyDirs.php
│ │ │ ├── cleanGarbageFiles.php
│ │ │ └── cleanThumbnails.php
│ │ └── tpl/
│ │ ├── css/
│ │ │ ├── config.css
│ │ │ └── file_list.css
│ │ ├── download_config.html
│ │ ├── file_edit.html
│ │ ├── file_list.html
│ │ ├── file_module_config.html
│ │ ├── filter/
│ │ │ ├── delete_checked.xml
│ │ │ ├── insert_config.xml
│ │ │ └── insert_file_module_config.xml
│ │ ├── header.html
│ │ ├── iframe.html
│ │ ├── js/
│ │ │ ├── config.js
│ │ │ ├── file_admin.js
│ │ │ └── fileupload.app.js
│ │ ├── other_config.html
│ │ ├── print_uploaded_file_list.html
│ │ └── upload_config.html
│ ├── importer/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── extract.class.php
│ │ ├── importer.admin.controller.php
│ │ ├── importer.admin.view.php
│ │ ├── importer.class.php
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── queries/
│ │ │ ├── getCommentMemberSrlWithUserID.xml
│ │ │ ├── getCommentMemberSrlWithUserIDByEmail.xml
│ │ │ ├── getDocumentMemberSrlWithUserID.xml
│ │ │ ├── getDocumentMemberSrlWithUserIDByEmail.xml
│ │ │ ├── updateCommentSync.xml
│ │ │ ├── updateCommentSyncByEmail.xml
│ │ │ ├── updateCommentSyncForCUBRID.xml
│ │ │ ├── updateCommentSyncForCUBRIDByEmail.xml
│ │ │ ├── updateDocumentSync.xml
│ │ │ ├── updateDocumentSyncByEmail.xml
│ │ │ ├── updateDocumentSyncForCUBRID.xml
│ │ │ └── updateDocumentSyncForCUBRIDByEmail.xml
│ │ ├── tpl/
│ │ │ ├── filter/
│ │ │ │ └── step1.xml
│ │ │ ├── header.html
│ │ │ ├── index.html
│ │ │ ├── js/
│ │ │ │ └── importer_admin.js
│ │ │ └── process.html
│ │ └── ttimport.class.php
│ ├── install/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── install.admin.controller.php
│ │ ├── install.class.php
│ │ ├── install.controller.php
│ │ ├── install.model.php
│ │ ├── install.view.php
│ │ ├── lang/
│ │ │ ├── de.php
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── mn.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── ruleset/
│ │ │ └── install.xml
│ │ ├── schemas/
│ │ │ └── sequence.xml
│ │ ├── script/
│ │ │ ├── ko.install.php
│ │ │ ├── welcome_content/
│ │ │ │ ├── welcome.css
│ │ │ │ └── welcome_content.html
│ │ │ └── xeicon_content/
│ │ │ ├── xeicon_content_ko_1.html
│ │ │ ├── xeicon_content_ko_2.html
│ │ │ ├── xeicon_content_ko_3.html
│ │ │ └── xeicon_content_ko_4.html
│ │ └── tpl/
│ │ ├── check_env.html
│ │ ├── css/
│ │ │ └── install.css
│ │ ├── db_config.html
│ │ ├── filter/
│ │ │ ├── admin.xml
│ │ │ ├── config.xml
│ │ │ ├── cubrid.xml
│ │ │ ├── firebird.xml
│ │ │ ├── mssql.xml
│ │ │ ├── mysql.xml
│ │ │ ├── postgresql.xml
│ │ │ └── sqlite2.xml
│ │ ├── footer.html
│ │ ├── header.html
│ │ ├── introduce.html
│ │ ├── js/
│ │ │ └── install.js
│ │ ├── license_agreement.html
│ │ ├── license_text.en.html
│ │ ├── license_text.ko.html
│ │ ├── other_config.html
│ │ └── progress_menu.html
│ ├── integration_search/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── integration_search.admin.controller.php
│ │ ├── integration_search.admin.view.php
│ │ ├── integration_search.class.php
│ │ ├── integration_search.mobile.php
│ │ ├── integration_search.model.php
│ │ ├── integration_search.view.php
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── models/
│ │ │ └── FileSearchResult.php
│ │ ├── ruleset/
│ │ │ └── insertConfig.xml
│ │ ├── skins/
│ │ │ ├── default/
│ │ │ │ ├── comment.html
│ │ │ │ ├── document.html
│ │ │ │ ├── file.html
│ │ │ │ ├── header.html
│ │ │ │ ├── index.html
│ │ │ │ ├── multimedia.html
│ │ │ │ ├── no_keywords.html
│ │ │ │ ├── skin.xml
│ │ │ │ └── white.css
│ │ │ └── misol_town/
│ │ │ ├── LICENSE
│ │ │ ├── _page.html
│ │ │ ├── comment.html
│ │ │ ├── css/
│ │ │ │ ├── blue.css
│ │ │ │ └── crimson.css
│ │ │ ├── document.html
│ │ │ ├── file.html
│ │ │ ├── footer.html
│ │ │ ├── header.html
│ │ │ ├── index.html
│ │ │ ├── multimedia.html
│ │ │ ├── no_keywords.html
│ │ │ ├── skin.xml
│ │ │ └── trackback.html
│ │ └── tpl/
│ │ ├── filter/
│ │ │ └── insert_config.xml
│ │ ├── header.html
│ │ ├── index.html
│ │ ├── js/
│ │ │ └── integration_search_admin.js
│ │ └── skin_info.html
│ ├── krzip/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── krzip.admin.controller.php
│ │ ├── krzip.admin.view.php
│ │ ├── krzip.class.php
│ │ ├── krzip.controller.php
│ │ ├── krzip.model.php
│ │ ├── krzip.view.php
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ └── ko.php
│ │ ├── ruleset/
│ │ │ └── krzipConfig.xml
│ │ └── tpl/
│ │ ├── config.html
│ │ ├── css/
│ │ │ ├── default.css
│ │ │ └── popup.css
│ │ ├── js/
│ │ │ ├── admin.js
│ │ │ ├── daumapi.js
│ │ │ ├── epostapi.js
│ │ │ ├── epostapi.search.js
│ │ │ └── postcodify.js
│ │ ├── searchForm.epostapi.html
│ │ ├── template.daumapi.html
│ │ ├── template.epostapi.html
│ │ └── template.postcodify.html
│ ├── layout/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── faceoff/
│ │ │ ├── conf/
│ │ │ │ └── info.xml
│ │ │ ├── css/
│ │ │ │ └── layout.css
│ │ │ ├── js/
│ │ │ │ └── layout.js
│ │ │ ├── layout.html
│ │ │ └── layout.ini
│ │ ├── lang/
│ │ │ ├── de.php
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── layout.admin.controller.php
│ │ ├── layout.admin.model.php
│ │ ├── layout.admin.view.php
│ │ ├── layout.class.php
│ │ ├── layout.model.php
│ │ ├── layout.view.php
│ │ ├── queries/
│ │ │ ├── deleteLayout.xml
│ │ │ ├── getLayout.xml
│ │ │ ├── getLayoutDotList.xml
│ │ │ ├── getLayoutList.xml
│ │ │ ├── getLayoutModules.xml
│ │ │ ├── getOneModuleInstanceByModuleName.xml
│ │ │ ├── insertLayout.xml
│ │ │ ├── updateAllLayoutInSiteWithTheme.xml
│ │ │ ├── updateLayout.xml
│ │ │ ├── updateModuleLayout.xml
│ │ │ └── updateModuleMLayout.xml
│ │ ├── ruleset/
│ │ │ ├── codeUpdate.xml
│ │ │ ├── deleteLayout.xml
│ │ │ ├── imageUpload.xml
│ │ │ ├── insertLayout.xml
│ │ │ ├── updateLayout.xml
│ │ │ └── userLayoutImport.xml
│ │ ├── schemas/
│ │ │ └── layouts.xml
│ │ └── tpl/
│ │ ├── after_upload_config_image.html
│ │ ├── copy_layout.html
│ │ ├── css/
│ │ │ ├── faceoff_menu.css
│ │ │ └── widget.css
│ │ ├── faceoff_layout_edit.html
│ │ ├── faceoff_layout_menu.html
│ │ ├── filter/
│ │ │ ├── delete_layout.xml
│ │ │ ├── insert_layout.xml
│ │ │ ├── reset_layout_code.xml
│ │ │ ├── update_layout_code.xml
│ │ │ └── update_layout_info.xml
│ │ ├── header.html
│ │ ├── installed_layout_list.html
│ │ ├── js/
│ │ │ ├── adminEdit.js
│ │ │ ├── adminList.js
│ │ │ ├── faceoff.js
│ │ │ ├── layout_admin.js
│ │ │ ├── layout_admin_set_html.js
│ │ │ ├── layout_image_list.js
│ │ │ ├── layout_modify.js
│ │ │ ├── ui.hotkey.js
│ │ │ └── ui.toolbar.js
│ │ ├── layout_all_instance_list.html
│ │ ├── layout_edit.html
│ │ ├── layout_html_css_view.html
│ │ ├── layout_info_view.html
│ │ ├── layout_instance_list.html
│ │ ├── layout_modify.html
│ │ ├── layout_preview.html
│ │ ├── sub_tab.html
│ │ └── top_refresh.html
│ ├── member/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── controllers/
│ │ │ └── Device.php
│ │ ├── lang/
│ │ │ ├── de.php
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── mn.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── m.skins/
│ │ │ └── default/
│ │ │ ├── active_logins.html
│ │ │ ├── comment_list.html
│ │ │ ├── common_footer.html
│ │ │ ├── common_header.html
│ │ │ ├── css/
│ │ │ │ ├── member.css
│ │ │ │ ├── mlogin.css
│ │ │ │ └── msignup.css
│ │ │ ├── document_list.html
│ │ │ ├── find_member_account.html
│ │ │ ├── find_temp_password.html
│ │ │ ├── leave_form.html
│ │ │ ├── login_form.html
│ │ │ ├── member_info.html
│ │ │ ├── member_nick.html
│ │ │ ├── modify_email_address.html
│ │ │ ├── modify_info.html
│ │ │ ├── modify_password.html
│ │ │ ├── rechecked_password.html
│ │ │ ├── saved_list.html
│ │ │ ├── scrapped_list.html
│ │ │ ├── signup_form.html
│ │ │ └── skin.xml
│ │ ├── member.admin.controller.php
│ │ ├── member.admin.model.php
│ │ ├── member.admin.view.php
│ │ ├── member.api.php
│ │ ├── member.class.php
│ │ ├── member.controller.php
│ │ ├── member.mobile.php
│ │ ├── member.model.php
│ │ ├── member.view.php
│ │ ├── queries/
│ │ │ ├── addMemberToGroup.xml
│ │ │ ├── addScrapDocument.xml
│ │ │ ├── changeGroup.xml
│ │ │ ├── chkAuthMail.xml
│ │ │ ├── chkAuthSms.xml
│ │ │ ├── chkDeniedID.xml
│ │ │ ├── chkDeniedNickName.xml
│ │ │ ├── deleteAgreed.xml
│ │ │ ├── deleteAuthChangeEmailAddress.xml
│ │ │ ├── deleteAuthMail.xml
│ │ │ ├── deleteAutologin.xml
│ │ │ ├── deleteDeniedID.xml
│ │ │ ├── deleteDeniedNickName.xml
│ │ │ ├── deleteGroup.xml
│ │ │ ├── deleteJoinForm.xml
│ │ │ ├── deleteLoginCountByIp.xml
│ │ │ ├── deleteLoginCountHistoryByMemberSrl.xml
│ │ │ ├── deleteManagedEmailHost.xml
│ │ │ ├── deleteMember.xml
│ │ │ ├── deleteMemberDevice.xml
│ │ │ ├── deleteMemberGroup.xml
│ │ │ ├── deleteMemberGroupMember.xml
│ │ │ ├── deleteMemberModifyNickNameLog.xml
│ │ │ ├── deleteMembersGroup.xml
│ │ │ ├── deleteScrapDocument.xml
│ │ │ ├── deleteScrapDocumentByDocumentSrl.xml
│ │ │ ├── deleteScrapFolder.xml
│ │ │ ├── deleteSiteGroup.xml
│ │ │ ├── getAdminGroup.xml
│ │ │ ├── getAdmins.xml
│ │ │ ├── getAuthMail.xml
│ │ │ ├── getAuthMailInfo.xml
│ │ │ ├── getAuthMailType.xml
│ │ │ ├── getAutologin.xml
│ │ │ ├── getDefaultGroup.xml
│ │ │ ├── getDeniedAndStatus.xml
│ │ │ ├── getDeniedIDList.xml
│ │ │ ├── getDeniedIDs.xml
│ │ │ ├── getDeniedNickNames.xml
│ │ │ ├── getGroup.xml
│ │ │ ├── getGroups.xml
│ │ │ ├── getJoinForm.xml
│ │ │ ├── getJoinFormList.xml
│ │ │ ├── getLoginCountByIp.xml
│ │ │ ├── getLoginCountHistoryByMemberSrl.xml
│ │ │ ├── getManagedEmailHosts.xml
│ │ │ ├── getMemberCountByDate.xml
│ │ │ ├── getMemberCountByPhoneCountry.xml
│ │ │ ├── getMemberDevice.xml
│ │ │ ├── getMemberDeviceTokensByMemberSrl.xml
│ │ │ ├── getMemberGroupMember.xml
│ │ │ ├── getMemberGroupMemberCountByDate.xml
│ │ │ ├── getMemberGroups.xml
│ │ │ ├── getMemberInfo.xml
│ │ │ ├── getMemberInfoByEmailAddress.xml
│ │ │ ├── getMemberInfoByMemberSrl.xml
│ │ │ ├── getMemberInfoByPhoneNumber.xml
│ │ │ ├── getMemberList.xml
│ │ │ ├── getMemberListWithinGroup.xml
│ │ │ ├── getMemberModifyNickName.xml
│ │ │ ├── getMemberSrl.xml
│ │ │ ├── getMembers.xml
│ │ │ ├── getMembersGroup.xml
│ │ │ ├── getMembersGroups.xml
│ │ │ ├── getScrapDocument.xml
│ │ │ ├── getScrapDocumentList.xml
│ │ │ ├── getScrapFolderList.xml
│ │ │ ├── getSiteAdminMemberSrls.xml
│ │ │ ├── getSiteMemberList.xml
│ │ │ ├── insertAgreed.xml
│ │ │ ├── insertAuthMail.xml
│ │ │ ├── insertAuthSms.xml
│ │ │ ├── insertAutologin.xml
│ │ │ ├── insertDeniedID.xml
│ │ │ ├── insertDeniedNickName.xml
│ │ │ ├── insertGroup.xml
│ │ │ ├── insertJoinForm.xml
│ │ │ ├── insertLoginCountByIp.xml
│ │ │ ├── insertLoginCountHistoryByMemberSrl.xml
│ │ │ ├── insertManagedEmailHost.xml
│ │ │ ├── insertMember.xml
│ │ │ ├── insertMemberDevice.xml
│ │ │ ├── insertMemberModifyNickName.xml
│ │ │ ├── insertScrapFolder.xml
│ │ │ ├── updateAllChangePasswordDate.xml
│ │ │ ├── updateAllMemberGroupListOrder.xml
│ │ │ ├── updateAuthMail.xml
│ │ │ ├── updateAutologin.xml
│ │ │ ├── updateChangePasswordDate.xml
│ │ │ ├── updateFindAccountAnswer.xml
│ │ │ ├── updateGroup.xml
│ │ │ ├── updateGroupDefaultClear.xml
│ │ │ ├── updateJoinForm.xml
│ │ │ ├── updateLastLogin.xml
│ │ │ ├── updateLoginCountByIp.xml
│ │ │ ├── updateLoginCountHistoryByMemberSrl.xml
│ │ │ ├── updateMember.xml
│ │ │ ├── updateMemberDeniedInfo.xml
│ │ │ ├── updateMemberDevice.xml
│ │ │ ├── updateMemberDeviceLastActiveDate.xml
│ │ │ ├── updateMemberEmailAddress.xml
│ │ │ ├── updateMemberExtraVars.xml
│ │ │ ├── updateMemberFindQuestionAnswer.xml
│ │ │ ├── updateMemberGroupListOrder.xml
│ │ │ ├── updateMemberJoinFormListorder.xml
│ │ │ ├── updateMemberListOrderAll.xml
│ │ │ ├── updateMemberPassword.xml
│ │ │ ├── updateMemberPhoneCountry.xml
│ │ │ ├── updateMemberPhoneNumber.xml
│ │ │ ├── updateMemberStatus.xml
│ │ │ ├── updateScrapDocumentFolder.xml
│ │ │ ├── updateScrapFolder.xml
│ │ │ └── updateScrapFolderFromNull.xml
│ │ ├── ruleset/
│ │ │ ├── deleteGroup.xml
│ │ │ ├── findAccount.xml
│ │ │ ├── insert.xml
│ │ │ ├── insertAdminMember.xml
│ │ │ ├── insertDefaultConfig.xml
│ │ │ ├── insertDeniedId.xml
│ │ │ ├── insertGroup.xml
│ │ │ ├── insertJoinForm.xml
│ │ │ ├── insertLoginConfig.xml
│ │ │ ├── leaveMember.xml
│ │ │ ├── login.xml
│ │ │ ├── manageMemberGroup.xml
│ │ │ ├── modifyEmailAddress.xml
│ │ │ ├── modifyInfo.xml
│ │ │ ├── modifyPassword.xml
│ │ │ ├── recheckedPassword.xml
│ │ │ ├── resendAuthMail.xml
│ │ │ ├── resetAuthMail.xml
│ │ │ ├── resetPassword.xml
│ │ │ ├── signup.xml
│ │ │ ├── updateGroup.xml
│ │ │ └── updateSeletedMemberInfo.xml
│ │ ├── schemas/
│ │ │ ├── member.xml
│ │ │ ├── member_agreed.xml
│ │ │ ├── member_auth_mail.xml
│ │ │ ├── member_auth_sms.xml
│ │ │ ├── member_autologin.xml
│ │ │ ├── member_count_history.xml
│ │ │ ├── member_denied_nick_name.xml
│ │ │ ├── member_denied_user_id.xml
│ │ │ ├── member_devices.xml
│ │ │ ├── member_group.xml
│ │ │ ├── member_group_member.xml
│ │ │ ├── member_join_form.xml
│ │ │ ├── member_login_count.xml
│ │ │ ├── member_managed_email_hosts.xml
│ │ │ ├── member_nickname_log.xml
│ │ │ ├── member_scrap.xml
│ │ │ └── member_scrap_folders.xml
│ │ ├── skins/
│ │ │ └── default/
│ │ │ ├── active_logins.html
│ │ │ ├── comment_list.html
│ │ │ ├── common_footer.html
│ │ │ ├── common_header.html
│ │ │ ├── confirm_member_account_mail.html
│ │ │ ├── confirm_member_new_email.html
│ │ │ ├── css/
│ │ │ │ └── member.css
│ │ │ ├── document_list.html
│ │ │ ├── filter/
│ │ │ │ ├── delete_image_mark.xml
│ │ │ │ ├── delete_image_name.xml
│ │ │ │ ├── delete_profile_image.xml
│ │ │ │ ├── find_member_account.xml
│ │ │ │ ├── leave_member.xml
│ │ │ │ ├── login.xml
│ │ │ │ ├── modify_info.xml
│ │ │ │ ├── modify_password.xml
│ │ │ │ ├── resend_auth_mail.xml
│ │ │ │ ├── signup.xml
│ │ │ │ └── update_allow_message.xml
│ │ │ ├── find_member_account.html
│ │ │ ├── find_member_account_mail.html
│ │ │ ├── js/
│ │ │ │ └── member.js
│ │ │ ├── leave_form.html
│ │ │ ├── login_form.html
│ │ │ ├── member_info.html
│ │ │ ├── member_nick.html
│ │ │ ├── modify_email_address.html
│ │ │ ├── modify_info.html
│ │ │ ├── modify_password.html
│ │ │ ├── rechecked_password.html
│ │ │ ├── resend_auth_mail.html
│ │ │ ├── reset_password.html
│ │ │ ├── saved_list.html
│ │ │ ├── scrapped_list.html
│ │ │ ├── signup_form.html
│ │ │ └── skin.xml
│ │ └── tpl/
│ │ ├── agreements_config.html
│ │ ├── colorset_list.html
│ │ ├── css/
│ │ │ ├── member.css
│ │ │ ├── mlogin.css
│ │ │ └── msignup.css
│ │ ├── default_config.html
│ │ ├── design_config.html
│ │ ├── features_config.html
│ │ ├── filter/
│ │ │ ├── delete_image_mark.xml
│ │ │ ├── delete_image_name.xml
│ │ │ ├── delete_member.xml
│ │ │ ├── delete_members.xml
│ │ │ ├── delete_profile_image.xml
│ │ │ ├── insert.xml
│ │ │ ├── insert_config.xml
│ │ │ ├── insert_denied_id.xml
│ │ │ ├── insert_group.xml
│ │ │ ├── insert_join_form.xml
│ │ │ ├── manage_member_group.xml
│ │ │ ├── update_denied_id.xml
│ │ │ ├── update_group.xml
│ │ │ ├── update_join_form.xml
│ │ │ └── update_member.xml
│ │ ├── group_list.html
│ │ ├── header.html
│ │ ├── insert_join_form.html
│ │ ├── insert_member.html
│ │ ├── js/
│ │ │ ├── config.js
│ │ │ ├── default_config.js
│ │ │ ├── design_config.js
│ │ │ ├── member_admin.js
│ │ │ ├── member_admin_group.js
│ │ │ ├── member_admin_list.js
│ │ │ ├── signup_check.js
│ │ │ └── signup_config.js
│ │ ├── login_config.html
│ │ ├── member_info.html
│ │ ├── member_list.html
│ │ ├── new_colorset_list.html
│ │ ├── nick_name_log.html
│ │ ├── signup_config.html
│ │ └── spammer.html
│ ├── menu/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── menu.admin.controller.php
│ │ ├── menu.admin.model.php
│ │ ├── menu.admin.view.php
│ │ ├── menu.class.php
│ │ ├── menu.mobile.php
│ │ ├── queries/
│ │ │ ├── deleteMenu.xml
│ │ │ ├── deleteMenuItem.xml
│ │ │ ├── deleteMenuItems.xml
│ │ │ ├── deleteMenuLayout.xml
│ │ │ ├── getChildMenuCount.xml
│ │ │ ├── getMaxListorder.xml
│ │ │ ├── getMenu.xml
│ │ │ ├── getMenuByTitle.xml
│ │ │ ├── getMenuItem.xml
│ │ │ ├── getMenuItemByUrl.xml
│ │ │ ├── getMenuItems.xml
│ │ │ ├── getMenuLayout.xml
│ │ │ ├── getMenuList.xml
│ │ │ ├── getMenus.xml
│ │ │ ├── getMinListorder.xml
│ │ │ ├── insertMenu.xml
│ │ │ ├── insertMenuItem.xml
│ │ │ ├── insertMenuLayout.xml
│ │ │ ├── updateMenu.xml
│ │ │ ├── updateMenuItem.xml
│ │ │ ├── updateMenuItemListorder.xml
│ │ │ ├── updateMenuItemNode.xml
│ │ │ ├── updateMenuItemParent.xml
│ │ │ └── updateMenuItems.xml
│ │ ├── ruleset/
│ │ │ ├── insertMenu.xml
│ │ │ ├── insertMenuItem.xml
│ │ │ ├── updateMenuDesign.xml
│ │ │ ├── updateMenuItem.xml
│ │ │ └── updateMenuTitle.xml
│ │ ├── schemas/
│ │ │ ├── menu.xml
│ │ │ ├── menu_item.xml
│ │ │ └── menu_layout.xml
│ │ └── tpl/
│ │ ├── css/
│ │ │ ├── mmenu.css
│ │ │ ├── sitemap.css
│ │ │ └── themes/
│ │ │ ├── apple/
│ │ │ │ └── style.css
│ │ │ ├── classic/
│ │ │ │ └── style.css
│ │ │ ├── default/
│ │ │ │ └── style.css
│ │ │ └── default-rtl/
│ │ │ └── style.css
│ │ ├── js/
│ │ │ ├── _lib/
│ │ │ │ └── jquery.cookie.js
│ │ │ ├── jquery.jstree.js
│ │ │ ├── jquery.scrollTo-1.4.2.js
│ │ │ └── jquery.tmpl.js
│ │ ├── menu.html
│ │ └── sitemap.html
│ ├── message/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── m.skins/
│ │ │ └── default/
│ │ │ ├── filter/
│ │ │ │ ├── login.xml
│ │ │ │ ├── logout.xml
│ │ │ │ └── openid_login.xml
│ │ │ ├── http_status_code.html
│ │ │ ├── message.css
│ │ │ └── system_message.html
│ │ ├── message.admin.controller.php
│ │ ├── message.admin.model.php
│ │ ├── message.admin.view.php
│ │ ├── message.class.php
│ │ ├── message.mobile.php
│ │ ├── message.view.php
│ │ ├── skins/
│ │ │ ├── default/
│ │ │ │ ├── filter/
│ │ │ │ │ ├── login.xml
│ │ │ │ │ ├── logout.xml
│ │ │ │ │ └── openid_login.xml
│ │ │ │ ├── http_status_code.html
│ │ │ │ ├── message.css
│ │ │ │ ├── message.js
│ │ │ │ └── system_message.html
│ │ │ └── xedition/
│ │ │ ├── css/
│ │ │ │ └── message.css
│ │ │ ├── http_status_code.html
│ │ │ └── system_message.html
│ │ └── tpl/
│ │ ├── colorset_list.html
│ │ ├── config.html
│ │ └── js/
│ │ └── config.js
│ ├── module/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── models/
│ │ │ └── Permission.php
│ │ ├── module.admin.controller.php
│ │ ├── module.admin.model.php
│ │ ├── module.admin.view.php
│ │ ├── module.class.php
│ │ ├── module.controller.php
│ │ ├── module.mobile.php
│ │ ├── module.model.php
│ │ ├── module.view.php
│ │ ├── queries/
│ │ │ ├── clearDefaultModule.xml
│ │ │ ├── deleteActionForward.xml
│ │ │ ├── deleteAdminId.xml
│ │ │ ├── deleteAdminIds.xml
│ │ │ ├── deleteDomain.xml
│ │ │ ├── deleteLang.xml
│ │ │ ├── deleteLangs.xml
│ │ │ ├── deleteLock.xml
│ │ │ ├── deleteLocksTimeoutPassed.xml
│ │ │ ├── deleteModule.xml
│ │ │ ├── deleteModuleCategory.xml
│ │ │ ├── deleteModuleConfig.xml
│ │ │ ├── deleteModuleExtend.xml
│ │ │ ├── deleteModuleExtraVars.xml
│ │ │ ├── deleteModuleFileBox.xml
│ │ │ ├── deleteModuleGrants.xml
│ │ │ ├── deleteModuleMobileSkinVars.xml
│ │ │ ├── deleteModulePartConfig.xml
│ │ │ ├── deleteModuleSkinVars.xml
│ │ │ ├── deleteModuleTriggers.xml
│ │ │ ├── deleteSite.xml
│ │ │ ├── deleteTrigger.xml
│ │ │ ├── deleteTriggers.xml
│ │ │ ├── getActionForward.xml
│ │ │ ├── getActionForwardWithModule.xml
│ │ │ ├── getAdminID.xml
│ │ │ ├── getAdminSrls.xml
│ │ │ ├── getAllMobileSkinSetModule.xml
│ │ │ ├── getAllSkinSetModule.xml
│ │ │ ├── getDefaultMidInfo.xml
│ │ │ ├── getDefaultModules.xml
│ │ │ ├── getDomainInfo.xml
│ │ │ ├── getDomains.xml
│ │ │ ├── getLang.xml
│ │ │ ├── getLangCount.xml
│ │ │ ├── getLangList.xml
│ │ │ ├── getLangListByLangcode.xml
│ │ │ ├── getLangListByName.xml
│ │ │ ├── getLangNameByValue.xml
│ │ │ ├── getMidInfo.xml
│ │ │ ├── getMidList.xml
│ │ │ ├── getModuleAdmin.xml
│ │ │ ├── getModuleCategories.xml
│ │ │ ├── getModuleCategory.xml
│ │ │ ├── getModuleConfig.xml
│ │ │ ├── getModuleCount.xml
│ │ │ ├── getModuleExtend.xml
│ │ │ ├── getModuleExtraVars.xml
│ │ │ ├── getModuleFileBox.xml
│ │ │ ├── getModuleFileBoxList.xml
│ │ │ ├── getModuleGrants.xml
│ │ │ ├── getModuleInfoByDocument.xml
│ │ │ ├── getModuleInfoByMenuItemSrl.xml
│ │ │ ├── getModuleInfoByModuleSrl.xml
│ │ │ ├── getModuleInfos.xml
│ │ │ ├── getModuleListByInstance.xml
│ │ │ ├── getModuleMidList.xml
│ │ │ ├── getModuleMobileSkinVars.xml
│ │ │ ├── getModulePartConfig.xml
│ │ │ ├── getModulePartConfigs.xml
│ │ │ ├── getModuleSites.xml
│ │ │ ├── getModuleSkinDotList.xml
│ │ │ ├── getModuleSkinVars.xml
│ │ │ ├── getModuleSrlByMid.xml
│ │ │ ├── getModuleUpdateLog.xml
│ │ │ ├── getModulesByLayout.xml
│ │ │ ├── getModulesInfo.xml
│ │ │ ├── getNonuniqueDomains.xml
│ │ │ ├── getNotLinkedModuleBySiteSrl.xml
│ │ │ ├── getPlanetGrants.xml
│ │ │ ├── getSite.xml
│ │ │ ├── getSiteCount.xml
│ │ │ ├── getSiteInfo.xml
│ │ │ ├── getSiteModules.xml
│ │ │ ├── getSites.xml
│ │ │ ├── getTrigger.xml
│ │ │ ├── getTriggers.xml
│ │ │ ├── insertActionForward.xml
│ │ │ ├── insertAdminId.xml
│ │ │ ├── insertDomain.xml
│ │ │ ├── insertLang.xml
│ │ │ ├── insertLock.xml
│ │ │ ├── insertModule.xml
│ │ │ ├── insertModuleCategory.xml
│ │ │ ├── insertModuleConfig.xml
│ │ │ ├── insertModuleExtend.xml
│ │ │ ├── insertModuleExtraVars.xml
│ │ │ ├── insertModuleFileBox.xml
│ │ │ ├── insertModuleGrant.xml
│ │ │ ├── insertModuleMobileSkinVars.xml
│ │ │ ├── insertModulePartConfig.xml
│ │ │ ├── insertModuleSkinVars.xml
│ │ │ ├── insertModuleUpdateLog.xml
│ │ │ ├── insertSite.xml
│ │ │ ├── insertTrigger.xml
│ │ │ ├── isExistsModuleName.xml
│ │ │ ├── updateAllModuleSkinInSiteWithTheme.xml
│ │ │ ├── updateDefaultDomain.xml
│ │ │ ├── updateDomain.xml
│ │ │ ├── updateLangCode.xml
│ │ │ ├── updateMobileSkinFixModules.xml
│ │ │ ├── updateModule.xml
│ │ │ ├── updateModuleCategory.xml
│ │ │ ├── updateModuleFileBox.xml
│ │ │ ├── updateModuleLayout.xml
│ │ │ ├── updateModuleMenu.xml
│ │ │ ├── updateModuleMenuSrl.xml
│ │ │ ├── updateSite.xml
│ │ │ ├── updateSkinAll.xml
│ │ │ └── updateSkinFixModules.xml
│ │ ├── ruleset/
│ │ │ ├── copyModule.xml
│ │ │ ├── deleteCategory.xml
│ │ │ ├── insertCategory.xml
│ │ │ ├── insertModuleSetup.xml
│ │ │ ├── insertModulesGrant.xml
│ │ │ └── updateCategory.xml
│ │ ├── schemas/
│ │ │ ├── action_forward.xml
│ │ │ ├── domains.xml
│ │ │ ├── lang.xml
│ │ │ ├── module_admins.xml
│ │ │ ├── module_categories.xml
│ │ │ ├── module_config.xml
│ │ │ ├── module_extend.xml
│ │ │ ├── module_extra_vars.xml
│ │ │ ├── module_filebox.xml
│ │ │ ├── module_grants.xml
│ │ │ ├── module_locks.xml
│ │ │ ├── module_mobile_skins.xml
│ │ │ ├── module_part_config.xml
│ │ │ ├── module_skins.xml
│ │ │ ├── module_trigger.xml
│ │ │ ├── module_update.xml
│ │ │ ├── modules.xml
│ │ │ ├── sites.xml
│ │ │ ├── task_queue.xml
│ │ │ └── task_schedule.xml
│ │ ├── scripts/
│ │ │ ├── cleanMiscLogs.php
│ │ │ └── updateAllModules.php
│ │ └── tpl/
│ │ ├── adminFileBox.html
│ │ ├── category_list.html
│ │ ├── category_update_form.html
│ │ ├── copy_module.html
│ │ ├── css/
│ │ │ ├── mlang.css
│ │ │ └── module_admin.scss
│ │ ├── filebox_add.html
│ │ ├── filebox_list.html
│ │ ├── filebox_list_html.html
│ │ ├── filter/
│ │ │ ├── copy_module.xml
│ │ │ ├── insert_category.xml
│ │ │ ├── insert_grant.xml
│ │ │ ├── insert_lang.xml
│ │ │ ├── insert_module_setup.xml
│ │ │ ├── insert_modules_grant.xml
│ │ │ ├── insert_shortcut.xml
│ │ │ └── update_category.xml
│ │ ├── header.html
│ │ ├── include.filebox.html
│ │ ├── include.manage_selected.html
│ │ ├── include.module_addition_setup.html
│ │ ├── include.module_grant_setup.html
│ │ ├── include.module_setup.html
│ │ ├── include.multilang.html
│ │ ├── include.multilang.textarea.html
│ │ ├── js/
│ │ │ ├── filebox.js
│ │ │ ├── manage_selected_module.js
│ │ │ ├── mid.js
│ │ │ ├── module_admin.js
│ │ │ ├── module_list.js
│ │ │ ├── multi_order.js
│ │ │ └── multilingual.js
│ │ ├── lang.html
│ │ ├── module_addition_setup.html
│ │ ├── module_grant_setup.html
│ │ ├── module_grants.html
│ │ ├── module_info.html
│ │ ├── module_langcode.html
│ │ ├── module_list.html
│ │ ├── module_searcher_v17.html
│ │ ├── module_selector.html
│ │ ├── module_setup.html
│ │ ├── move_filebox_list.html
│ │ ├── multilingual_v17.html
│ │ ├── multilingual_v17_list.html
│ │ ├── skin_config.html
│ │ ├── skin_info.html
│ │ └── top_refresh.html
│ ├── ncenterlite/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ └── ko.php
│ │ ├── m.skins/
│ │ │ └── default/
│ │ │ ├── NotifyList.html
│ │ │ ├── ncenter.html
│ │ │ ├── ncenterlite.black.css
│ │ │ ├── ncenterlite.blacknoprofile.css
│ │ │ ├── ncenterlite.css
│ │ │ ├── ncenterlite.gray.css
│ │ │ ├── ncenterlite.graynoprofile.css
│ │ │ ├── ncenterlite.html
│ │ │ ├── ncenterlite.mobile.css
│ │ │ ├── ncenterlite.white.css
│ │ │ ├── ncenterlite.whitenoprofile.css
│ │ │ ├── notify.css
│ │ │ ├── skin.xml
│ │ │ └── userconfig.html
│ │ ├── ncenterlite.admin.controller.php
│ │ ├── ncenterlite.admin.model.php
│ │ ├── ncenterlite.admin.view.php
│ │ ├── ncenterlite.class.php
│ │ ├── ncenterlite.controller.php
│ │ ├── ncenterlite.mobile.php
│ │ ├── ncenterlite.model.php
│ │ ├── ncenterlite.view.php
│ │ ├── queries/
│ │ │ ├── deleteNcenterliteUserSettingData.xml
│ │ │ ├── deleteNotifyAll.xml
│ │ │ ├── deleteNotifyByMemberSrl.xml
│ │ │ ├── deleteNotifyBySrl.xml
│ │ │ ├── deleteNotifyByTargetType.xml
│ │ │ ├── deleteNotifyType.xml
│ │ │ ├── deleteUnsubscribe.xml
│ │ │ ├── getAdminNotifyList.xml
│ │ │ ├── getAllUserConfig.xml
│ │ │ ├── getCountNewMessage.xml
│ │ │ ├── getDispNotifyList.xml
│ │ │ ├── getMemberAdmins.xml
│ │ │ ├── getMemberSrlById.xml
│ │ │ ├── getMemberSrlByNickName.xml
│ │ │ ├── getMemberTotals.xml
│ │ │ ├── getNotify.xml
│ │ │ ├── getNotifyList.xml
│ │ │ ├── getNotifyListByCommentSrl.xml
│ │ │ ├── getNotifyListByDocumentSrl.xml
│ │ │ ├── getNotifyMemberSrlBySrl.xml
│ │ │ ├── getNotifyNewCount.xml
│ │ │ ├── getNotifyType.xml
│ │ │ ├── getNotifyTypeAdminList.xml
│ │ │ ├── getNotifyTypeByID.xml
│ │ │ ├── getOtherCommentByMemberSrl.xml
│ │ │ ├── getUnsubscribeList.xml
│ │ │ ├── getUserConfig.xml
│ │ │ ├── getUserUnsubscribeConfigByTargetSrl.xml
│ │ │ ├── getUserUnsubscribeConfigByUnsubscribeSrl.xml
│ │ │ ├── insertNotify.xml
│ │ │ ├── insertNotifyType.xml
│ │ │ ├── insertUnsubscribe.xml
│ │ │ ├── insertUserConfig.xml
│ │ │ ├── updateNotifyReaded.xml
│ │ │ ├── updateNotifyReadedAll.xml
│ │ │ ├── updateNotifyReadedBySrl.xml
│ │ │ ├── updateNotifyReadedByTargetSrl.xml
│ │ │ ├── updateNotifyReadedByType.xml
│ │ │ └── updateUserConfig.xml
│ │ ├── ruleset/
│ │ │ └── insertConfig.xml
│ │ ├── schemas/
│ │ │ ├── ncenterlite_notify.xml
│ │ │ ├── ncenterlite_notify_type.xml
│ │ │ ├── ncenterlite_unsubscribe.xml
│ │ │ └── ncenterlite_user_set.xml
│ │ ├── scripts/
│ │ │ └── cleanNotifications.php
│ │ ├── skins/
│ │ │ ├── default/
│ │ │ │ ├── NotifyList.html
│ │ │ │ ├── ncenterlite.black.css
│ │ │ │ ├── ncenterlite.blacknoprofile.css
│ │ │ │ ├── ncenterlite.css
│ │ │ │ ├── ncenterlite.gray.css
│ │ │ │ ├── ncenterlite.graynoprofile.css
│ │ │ │ ├── ncenterlite.html
│ │ │ │ ├── ncenterlite.mobile.css
│ │ │ │ ├── ncenterlite.white.css
│ │ │ │ ├── ncenterlite.whitenoprofile.css
│ │ │ │ ├── skin.xml
│ │ │ │ ├── unsubscribe.html
│ │ │ │ ├── unsubscribeList.html
│ │ │ │ └── userconfig.html
│ │ │ └── default_bottom/
│ │ │ ├── NotifyList.html
│ │ │ ├── ncenterlite.black.css
│ │ │ ├── ncenterlite.blacknoprofile.css
│ │ │ ├── ncenterlite.css
│ │ │ ├── ncenterlite.gray.css
│ │ │ ├── ncenterlite.graynoprofile.css
│ │ │ ├── ncenterlite.html
│ │ │ ├── ncenterlite.mobile.css
│ │ │ ├── ncenterlite.white.css
│ │ │ ├── ncenterlite.whitenoprofile.css
│ │ │ ├── skin.xml
│ │ │ ├── unsubscribe.html
│ │ │ ├── unsubscribeList.html
│ │ │ └── userconfig.html
│ │ └── tpl/
│ │ ├── advancedconfig.html
│ │ ├── config.html
│ │ ├── css/
│ │ │ └── ncenter_admin.css
│ │ ├── customlist.html
│ │ ├── header.html
│ │ ├── js/
│ │ │ ├── ncenter_admin.js
│ │ │ └── ncenterlite.js
│ │ ├── list.html
│ │ ├── othercomment.html
│ │ ├── seletedmid.html
│ │ ├── skinsetting.html
│ │ └── test.html
│ ├── page/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── m.skins/
│ │ │ └── default/
│ │ │ ├── mobile.html
│ │ │ └── skin.xml
│ │ ├── page.admin.controller.php
│ │ ├── page.admin.view.php
│ │ ├── page.api.php
│ │ ├── page.class.php
│ │ ├── page.controller.php
│ │ ├── page.mobile.php
│ │ ├── page.view.php
│ │ ├── queries/
│ │ │ ├── getArticlePageSrls.xml
│ │ │ ├── getPageList.xml
│ │ │ ├── insertPageType.xml
│ │ │ ├── pageTypeNullCheck.xml
│ │ │ ├── pageTypeOpageCheck.xml
│ │ │ ├── updateAllOpage.xml
│ │ │ └── updateSkinFix.xml
│ │ ├── ruleset/
│ │ │ ├── deletePage.xml
│ │ │ ├── insertPage.xml
│ │ │ └── updatePage.xml
│ │ ├── skins/
│ │ │ └── default/
│ │ │ ├── content.html
│ │ │ └── skin.xml
│ │ └── tpl/
│ │ ├── addition_setup.html
│ │ ├── article_content_footer.html
│ │ ├── article_content_modify.html
│ │ ├── content.html
│ │ ├── css/
│ │ │ └── page.css
│ │ ├── filter/
│ │ │ ├── delete_page.xml
│ │ │ ├── insert_article.xml
│ │ │ ├── insert_config.xml
│ │ │ ├── insert_mpage_content.xml
│ │ │ ├── insert_outside.xml
│ │ │ ├── insert_page.xml
│ │ │ └── insert_page_content.xml
│ │ ├── grant_list.html
│ │ ├── header.html
│ │ ├── index.html
│ │ ├── js/
│ │ │ └── page_admin.js
│ │ ├── mcontent.html
│ │ ├── mobile.html
│ │ ├── page_content_modify.html
│ │ ├── page_delete.html
│ │ ├── page_info.html
│ │ ├── page_mobile_content_modify.html
│ │ └── skin_info.html
│ ├── point/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── de.php
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── mn.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── point.admin.controller.php
│ │ ├── point.admin.view.php
│ │ ├── point.class.php
│ │ ├── point.controller.php
│ │ ├── point.model.php
│ │ ├── point.view.php
│ │ ├── queries/
│ │ │ ├── deleteMemberGroup.xml
│ │ │ ├── getCommentPoint.xml
│ │ │ ├── getCommentUsers.xml
│ │ │ ├── getDocumentPoint.xml
│ │ │ ├── getFilePoint.xml
│ │ │ ├── getMemberCount.xml
│ │ │ ├── getMemberGroupMember.xml
│ │ │ ├── getMemberList.xml
│ │ │ ├── getMemberListWithinGroup.xml
│ │ │ ├── getPoint.xml
│ │ │ ├── getPointCount.xml
│ │ │ ├── initMemberPoint.xml
│ │ │ ├── insertPoint.xml
│ │ │ └── updatePoint.xml
│ │ ├── ruleset/
│ │ │ ├── insertConfig.xml
│ │ │ └── updatePoint.xml
│ │ ├── schemas/
│ │ │ └── point.xml
│ │ └── tpl/
│ │ ├── config.html
│ │ ├── filter/
│ │ │ ├── insert_act_config.xml
│ │ │ ├── insert_config.xml
│ │ │ ├── insert_module_config.xml
│ │ │ ├── insert_point_module_config.xml
│ │ │ └── update_point.xml
│ │ ├── header.html
│ │ ├── js/
│ │ │ └── point_admin.js
│ │ ├── member_list.html
│ │ ├── module_config.html
│ │ └── point_module_config.html
│ ├── poll/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── poll.admin.controller.php
│ │ ├── poll.admin.model.php
│ │ ├── poll.admin.view.php
│ │ ├── poll.class.php
│ │ ├── poll.controller.php
│ │ ├── poll.model.php
│ │ ├── queries/
│ │ │ ├── deletePoll.xml
│ │ │ ├── deletePollItem.xml
│ │ │ ├── deletePollLog.xml
│ │ │ ├── deletePollTitle.xml
│ │ │ ├── getMemberbyPollitem.xml
│ │ │ ├── getPoll.xml
│ │ │ ├── getPollByDeletePollTitle.xml
│ │ │ ├── getPollByTargetSrl.xml
│ │ │ ├── getPollItem.xml
│ │ │ ├── getPollList.xml
│ │ │ ├── getPollListWithMember.xml
│ │ │ ├── getPollLog.xml
│ │ │ ├── getPollTitle.xml
│ │ │ ├── insertPoll.xml
│ │ │ ├── insertPollItem.xml
│ │ │ ├── insertPollLog.xml
│ │ │ ├── insertPollTitle.xml
│ │ │ ├── updatePoll.xml
│ │ │ ├── updatePollItemTarget.xml
│ │ │ ├── updatePollItems.xml
│ │ │ ├── updatePollTarget.xml
│ │ │ ├── updatePollTitle.xml
│ │ │ └── updatePollTitleTarget.xml
│ │ ├── ruleset/
│ │ │ ├── deleteChecked.xml
│ │ │ ├── insertConfig.xml
│ │ │ └── poll.xml
│ │ ├── schemas/
│ │ │ ├── poll.xml
│ │ │ ├── poll_item.xml
│ │ │ ├── poll_log.xml
│ │ │ └── poll_title.xml
│ │ ├── skins/
│ │ │ ├── default/
│ │ │ │ ├── css/
│ │ │ │ │ └── poll.css
│ │ │ │ ├── filter/
│ │ │ │ │ └── poll.xml
│ │ │ │ ├── form.html
│ │ │ │ ├── result.html
│ │ │ │ └── skin.xml
│ │ │ └── simple/
│ │ │ ├── css/
│ │ │ │ └── poll.css
│ │ │ ├── filter/
│ │ │ │ └── poll.xml
│ │ │ ├── form.html
│ │ │ ├── result.html
│ │ │ └── skin.xml
│ │ └── tpl/
│ │ ├── config.html
│ │ ├── css/
│ │ │ └── poll.css
│ │ ├── filter/
│ │ │ ├── delete_checked.xml
│ │ │ └── insert_config.xml
│ │ ├── header.html
│ │ ├── js/
│ │ │ ├── poll.js
│ │ │ └── poll_admin.js
│ │ ├── poll_list.html
│ │ └── result.html
│ ├── rss/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── rss.admin.controller.php
│ │ ├── rss.admin.view.php
│ │ ├── rss.class.php
│ │ ├── rss.controller.php
│ │ ├── rss.model.php
│ │ ├── rss.view.php
│ │ ├── ruleset/
│ │ │ ├── insertRssConfig.xml
│ │ │ └── insertRssModuleConfig.xml
│ │ └── tpl/
│ │ ├── format/
│ │ │ ├── atom10.html
│ │ │ ├── rss10.html
│ │ │ ├── rss20.html
│ │ │ └── xe.html
│ │ ├── rss_admin_index.html
│ │ └── rss_module_config.html
│ ├── session/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── queries/
│ │ │ ├── deleteSession.xml
│ │ │ ├── gcSession.xml
│ │ │ ├── getExpiredSessions.xml
│ │ │ ├── getLoggedMembers.xml
│ │ │ ├── getSession.xml
│ │ │ ├── insertSession.xml
│ │ │ └── updateSession.xml
│ │ ├── schemas/
│ │ │ └── session.xml
│ │ ├── session.admin.controller.php
│ │ ├── session.admin.view.php
│ │ ├── session.class.php
│ │ ├── session.controller.php
│ │ ├── session.model.php
│ │ └── tpl/
│ │ ├── index.html
│ │ └── js/
│ │ └── session.js
│ ├── spamfilter/
│ │ ├── captcha/
│ │ │ ├── recaptcha.php
│ │ │ └── turnstile.php
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── de.php
│ │ │ ├── en.php
│ │ │ ├── es.php
│ │ │ ├── fr.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ ├── mn.php
│ │ │ ├── ru.php
│ │ │ ├── tr.php
│ │ │ ├── vi.php
│ │ │ ├── zh-CN.php
│ │ │ └── zh-TW.php
│ │ ├── queries/
│ │ │ ├── deleteDeniedIP.xml
│ │ │ ├── deleteDeniedWord.xml
│ │ │ ├── deleteLog.xml
│ │ │ ├── getDeniedIPList.xml
│ │ │ ├── getDeniedWordList.xml
│ │ │ ├── getLogCount.xml
│ │ │ ├── insertDeniedIP.xml
│ │ │ ├── insertDeniedWord.xml
│ │ │ ├── insertLog.xml
│ │ │ ├── isDeniedIP.xml
│ │ │ ├── updateDeniedIPAttributes.xml
│ │ │ ├── updateDeniedIPHit.xml
│ │ │ ├── updateDeniedWordAttributes.xml
│ │ │ └── updateDeniedWordHit.xml
│ │ ├── schemas/
│ │ │ ├── spamfilter_denied_ip.xml
│ │ │ ├── spamfilter_denied_word.xml
│ │ │ └── spamfilter_log.xml
│ │ ├── spamfilter.admin.controller.php
│ │ ├── spamfilter.admin.view.php
│ │ ├── spamfilter.class.php
│ │ ├── spamfilter.controller.php
│ │ ├── spamfilter.model.php
│ │ └── tpl/
│ │ ├── captcha_test.html
│ │ ├── config_block.html
│ │ ├── config_captcha.html
│ │ ├── css/
│ │ │ └── spamfilter_admin.css
│ │ ├── denied_ip_list.html
│ │ ├── denied_word_list.html
│ │ ├── filter/
│ │ │ ├── delete_denied_ip.xml
│ │ │ ├── delete_denied_word.xml
│ │ │ ├── insert_config.xml
│ │ │ ├── insert_denied_ip.xml
│ │ │ └── insert_denied_word.xml
│ │ ├── footer.html
│ │ ├── header.html
│ │ └── js/
│ │ ├── recaptcha.js
│ │ ├── spamfilter_admin.js
│ │ └── turnstile.js
│ ├── tag/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ └── ko.php
│ │ ├── queries/
│ │ │ ├── deleteModuleTags.xml
│ │ │ ├── deleteTag.xml
│ │ │ ├── deleteTagByTag.xml
│ │ │ ├── getAllTagList.xml
│ │ │ ├── getDocumentSrlByTag.xml
│ │ │ ├── getDocumentsTagList.xml
│ │ │ ├── getTagList.xml
│ │ │ ├── insertTag.xml
│ │ │ └── updateTagModule.xml
│ │ ├── schemas/
│ │ │ └── tags.xml
│ │ ├── tag.admin.controller.php
│ │ ├── tag.admin.view.php
│ │ ├── tag.class.php
│ │ ├── tag.controller.php
│ │ ├── tag.model.php
│ │ └── tpl/
│ │ └── config.html
│ ├── trash/
│ │ ├── conf/
│ │ │ ├── info.xml
│ │ │ └── module.xml
│ │ ├── lang/
│ │ │ ├── en.php
│ │ │ ├── ja.php
│ │ │ ├── ko.php
│ │ │ └── zh-TW.php
│ │ ├── model/
│ │ │ └── TrashVO.php
│ │ ├── queries/
│ │ │ ├── deleteTrash.xml
│ │ │ ├── getDocumentExtraVars.xml
│ │ │ ├── getTrash.xml
│ │ │ ├── getTrashAllList.xml
│ │ │ ├── getTrashList.xml
│ │ │ └── insertTrash.xml
│ │ ├── ruleset/
│ │ │ └── emptyTrash.xml
│ │ ├── schemas/
│ │ │ └── trash.xml
│ │ ├── tpl/
│ │ │ ├── filter/
│ │ │ │ └── emptyTrash.xml
│ │ │ ├── header.html
│ │ │ ├── js/
│ │ │ │ └── trash_admin.js
│ │ │ ├── trash_list.html
│ │ │ └── trash_view.html
│ │ ├── trash.admin.controller.php
│ │ ├── trash.admin.view.php
│ │ ├── trash.class.php
│ │ ├── trash.controller.php
│ │ ├── trash.model.php
│ │ └── trash.view.php
│ └── widget/
│ ├── conf/
│ │ ├── info.xml
│ │ └── module.xml
│ ├── lang/
│ │ ├── en.php
│ │ ├── es.php
│ │ ├── fr.php
│ │ ├── ja.php
│ │ ├── ko.php
│ │ ├── ru.php
│ │ ├── tr.php
│ │ ├── vi.php
│ │ ├── zh-CN.php
│ │ └── zh-TW.php
│ ├── ruleset/
│ │ └── generateCodeInPage.xml
│ ├── tpl/
│ │ ├── add_content_widget.html
│ │ ├── css/
│ │ │ └── widget.css
│ │ ├── downloaded_widget_list.html
│ │ ├── filter/
│ │ │ ├── add_content.xml
│ │ │ ├── generate_code.xml
│ │ │ ├── generate_code_in_page.xml
│ │ │ └── style_generate_code_in_page.xml
│ │ ├── header.html
│ │ ├── js/
│ │ │ ├── generate_code.js
│ │ │ ├── widget.js
│ │ │ └── widget_admin.js
│ │ ├── skin_info.html
│ │ ├── widget_detail_info.html
│ │ ├── widget_generate_code.html
│ │ ├── widget_generate_code.include.html
│ │ ├── widget_generate_code_in_page.html
│ │ ├── widget_layer.html
│ │ └── widget_style_generate_code_in_page.html
│ ├── widget.admin.view.php
│ ├── widget.class.php
│ ├── widget.controller.php
│ ├── widget.model.php
│ └── widget.view.php
├── tests/
│ ├── _bootstrap.php
│ ├── _data/
│ │ ├── dbquery/
│ │ │ ├── deleteTest.xml
│ │ │ ├── emptyStringTest1.xml
│ │ │ ├── emptyStringTest2.xml
│ │ │ ├── ifVarTest.xml
│ │ │ ├── indexHintTest1.xml
│ │ │ ├── indexHintTest2.xml
│ │ │ ├── insertTest.xml
│ │ │ ├── nullValueTest1.xml
│ │ │ ├── nullValueTest2.xml
│ │ │ ├── selectCountTest1.xml
│ │ │ ├── selectCountTest2.xml
│ │ │ ├── selectJoinTest1.xml
│ │ │ ├── selectJoinTest2.xml
│ │ │ ├── selectSubqueryTest1.xml
│ │ │ ├── selectSubqueryTest2.xml
│ │ │ ├── selectSubqueryTest3.xml
│ │ │ ├── selectTest1.xml
│ │ │ ├── selectTest2.xml
│ │ │ ├── selectTest3.xml
│ │ │ ├── sortIndexTest.xml
│ │ │ └── updateTest.xml
│ │ ├── dbtable/
│ │ │ ├── example.xml
│ │ │ └── generated.xml
│ │ ├── dump.sql
│ │ ├── formatter/
│ │ │ ├── bbcode.source.txt
│ │ │ ├── bbcode.target.html
│ │ │ ├── concat.source1.css
│ │ │ ├── concat.source1.js
│ │ │ ├── concat.source2.css
│ │ │ ├── concat.source2.js
│ │ │ ├── concat.source3.css
│ │ │ ├── concat.target1.css
│ │ │ ├── concat.target1.js
│ │ │ ├── concat.target2.css
│ │ │ ├── concat.target2.js
│ │ │ ├── concat.target3.css
│ │ │ ├── html2markdown.source.html
│ │ │ ├── html2markdown.target.md
│ │ │ ├── html2text.source.html
│ │ │ ├── html2text.target.txt
│ │ │ ├── less.source1.less
│ │ │ ├── less.source2.less
│ │ │ ├── less.target1.css
│ │ │ ├── less.target2.css
│ │ │ ├── markdown2html.source.md
│ │ │ ├── markdown2html.target1.html
│ │ │ ├── markdown2html.target2.html
│ │ │ ├── markdown2html.target3.html
│ │ │ ├── markdown2html.target4.html
│ │ │ ├── markdownextra.source.md
│ │ │ ├── markdownextra.target1.html
│ │ │ ├── markdownextra.target2.html
│ │ │ ├── minify.source.css
│ │ │ ├── minify.source.js
│ │ │ ├── minify.target.css
│ │ │ ├── minify.target.js
│ │ │ ├── scss/
│ │ │ │ ├── _partial1.scss
│ │ │ │ ├── _partial2.scss
│ │ │ │
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
charset = utf-8
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = tab
[*.md]
trim_trailing_whitespace = false
[*.py]
indent_style = space
indent_size = 4
[*.{json,yml,md}]
indent_style = space
indent_size = 2
[*.{jsx,tsx,svelte,vue}]
indent_style = space
indent_size = 2
================================================
FILE: .gitattributes
================================================
.gitattributes export-ignore
.github export-ignore
.gitignore export-ignore
codeception.dist.yml export-ignore
/tests/ export-ignore
/common/vendor/bin/ export-ignore
================================================
FILE: .github/workflows/ci.yml
================================================
name: PHP Lint & Codeception
on: [ push, pull_request ]
jobs:
build:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
php: [ '7.4', '8.0', '8.1', '8.2', '8.3', '8.4', '8.5' ]
name: PHP ${{ matrix.php }}
steps:
- name: Checkout Repository
uses: actions/checkout@v5
- name: Install PHP
run: chmod +x .github/workflows/setup-php.sh && .github/workflows/setup-php.sh ${{ matrix.php }}
- name: Create test database
run: chmod +x .github/workflows/setup-mysql.sh && .github/workflows/setup-mysql.sh
- name: PHP Lint
run: if find . -name "*.php" ! -path "./common/vendor/*" -print0 | xargs -0 -n 1 -P 8 php -l | grep -v "No syntax errors detected"; then exit 1; fi
- name: Download codeception
run: wget https://res.rhymix.org/ci/php${{ matrix.php }}/codecept.phar
- name: Run PHP development server
run: php -S localhost:8000 &
- name: Build and run codeception
run: |
php codecept.phar build
php codecept.phar run --debug --fail-fast
================================================
FILE: .github/workflows/setup-mysql.sh
================================================
#!/bin/bash
AUTH="-uroot -proot"
# Start MySQL
sudo systemctl start mysql.service
# Create default database
sudo mysql $AUTH -e "CREATE DATABASE rhymix CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci"
sudo mysql $AUTH -e "CREATE USER rhymix@localhost IDENTIFIED WITH mysql_native_password BY 'rhymix'"
sudo mysql $AUTH -e "GRANT ALL ON rhymix.* to rhymix@localhost; FLUSH PRIVILEGES"
# Check MySQL version
sudo mysql $AUTH -e "SELECT VERSION()"
================================================
FILE: .github/workflows/setup-php.sh
================================================
#!/bin/bash
# Based on https://github.com/nanasess/setup-php
sudo add-apt-repository -y ppa:ondrej/php
# Install all required packages
sudo apt -y install \
php$1-apcu \
php$1-bcmath \
php$1-cli \
php$1-common \
php$1-curl \
php$1-gd \
php$1-intl \
php$1-mbstring \
php$1-mysql \
php$1-readline \
php$1-sqlite3 \
php$1-xml \
php$1-zip
# Adjust php.ini settings
sudo bash -c "echo 'register_argc_argv = On' >> /etc/php/$1/cli/php.ini"
sudo bash -c "echo 'opcache.enable = 1' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
sudo bash -c "echo 'opcache.enable_cli = 1' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
sudo bash -c "echo 'opcache.jit = tracing' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
sudo bash -c "echo 'opcache.jit_buffer_size = 128M' >> /etc/php/$1/cli/conf.d/10-opcache.ini"
# Enable APCu
if [ -f "/etc/php/$1/cli/conf.d/20-apcu.ini" ]; then
sudo bash -c "echo 'apc.enable_cli = 1' >> /etc/php/$1/cli/conf.d/20-apcu.ini"
fi
# Disable xdebug
sudo phpdismod -v ALL -s ALL xdebug
# Set and check default PHP version
sudo update-alternatives --set php /usr/bin/php$1
php -v
================================================
FILE: .gitignore
================================================
.DS_Store
Thumbs.db
/config/config.user.inc.php
/config/install.config.php
/files/
/build/
/libs/
codeception.yml
/tests/_output/
/tests/*.suite.yml
/tests/_support/InstallTester.php
/tests/_support/UnitTester.php
/tests/_support/_generated/
/node_modules/
/bower_components/
composer.phar
codecept.phar
.idea
*.sublime-workspace
*.sublime-project
.codeintel
.vscode
error_log
================================================
FILE: .htaccess
================================================
RewriteEngine On
# block direct access to templates, XML schema files, config files, dotfiles, environment, etc.
RewriteCond %{REQUEST_URI} !/modules/editor/(skins|styles)/
RewriteRule ^(addons|common/tpl|files/(faceOff|ruleset)|(m\.)?layouts|modules|plugins|themes|widgets|widgetstyles)/.+\.(html|xml|blade\.php)$ - [L,F]
RewriteRule ^files/(attach|config|cache)/.+\.(ph(p|t|ar)?[0-9]?|p?html?|cgi|pl|exe|[aj]spx?|inc|bak)$ - [L,F]
RewriteRule ^files/(env|member_extra_info/(new_message_flags|point))/ - [L,F]
RewriteRule ^(\.git|\.ht|\.travis|codeception\.|composer\.|Gruntfile\.js|package\.json|CONTRIBUTING|COPYRIGHT|LICENSE|README) - [L,F]
# static files
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.+)/(addons|files|layouts|m\.layouts|modules|widgets|widgetstyles)/(.*) ./$2/$3 [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.+)\.min\.(css|js)$ ./$1.$2 [L]
# all other short URLs
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule . index.php [L]
================================================
FILE: CONTRIBUTING.md
================================================
# 개발에 참여하고 싶으신 분들께 드리는 안내문
이 파일의 내용은 공식 매뉴얼로 옮겨졌습니다.
- [이슈 및 PR 작성 방법](https://rhymix.org/manual/contrib/github)
- [코딩 규칙](https://rhymix.org/manual/contrib/coding-standards)
- [GPL: 개발자, 디자이너, 사용자 등의 권리와 의무](https://rhymix.org/manual/contrib/license)
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
================================================
FILE: README.md
================================================
[](https://rhymix.org)

# 한국어
Rhymix(라이믹스)는 누구든지 쉽고 자유롭게 독립적인 홈페이지를 만들어
자신을 표현하고 커뮤니티를 키워나갈 수 있도록 돕기 위한 CMS(content management system)입니다.
[XpressEngine](https://xe1.xpressengine.com) 1.8 버전을 fork(가지치기)하여 진행하는 프로젝트로,
누구나 무료로 사용할 수 있고 개발에 참여할 수도 있는 자유 소프트웨어(free software)입니다.
Rhymix는 "시를 짓다, 운을 맞추다"라는 의미의 "rhyme"과
"조합하다, 변주하다"라는 의미의 "remix"를 합친 이름입니다.
라이믹스는 인터넷 공간에서 자유롭게 창작 활동을 하고
다양한 소프트웨어와 콘텐츠를 조합하여 새로운 것을 만들어내는 모든 사용자들을 응원합니다.
### 개발 방향
Rhymix는 개발자와 사용자가 서로의 권리와 책임을 존중하는 인터넷 생태계,
중앙집중형 SNS 플랫폼에 의존하지 않고도 누구나 내 목소리를 낼 수 있는 세상,
벤처기업이나 스타트업의 개발자들뿐 아니라 평범한 블로거, 동호회, 학생, 장애인 등도
사이버 공간에 당당하게 집을 짓고 서로 소통할 수 있는 미래를 만들어가길 원합니다.
개발자 위주, 서비스 제공자 위주로 나아가는 현대의 IT 동향을 무차별적으로 받아들이기보다는
사용자의 주권과 열린 인터넷 환경을 보호하는 기술을 집중적으로 발굴하며,
우리나라 인터넷 커뮤니티의 성장을 이끌었던 90년대 제로보드와 2000년대 XE의 정신을 이어받아
2020년대 현재 위기에 처한 오픈 웹을 지키고 회복시키는 일에 앞장서고자 합니다.
그러기 위해서는 다른 어떤 CMS보다도 일반 사용자를 위한 편리성이 가장 뛰어나야 합니다.
- 초보자도 쉽게 클릭 몇 번으로 웹사이트를 완성할 수 있을 만큼 편리한 CMS
- 최신 기술을 적극적으로 사용하고 속도가 빠르며 보안이 우수한 CMS
- 커뮤니티를 통해 사용자와 개발자의 건전한 의사소통을 돕는 CMS
- 애드온, 모듈, 위젯 등 기존 XE 서드파티 자료들과의 호환성을 최대한 보장하려고 노력합니다.
### 설치 환경
Rhymix를 사용하려면 PHP 7.4 이상, MySQL 또는 MariaDB가 필요합니다.
자세한 설치 환경은 [매뉴얼](https://rhymix.org/manual/introduction/requirements)을 참고하십시오.
### 개발 참여
Rhymix는 개발자, 디자이너, 번역가 등의 도움과 일반 사용자들의 버그 신고를 환영합니다.
참여를 원하시는 분은 질서있고 효율적인 프로젝트 운영을 위해
[이슈 및 PR 작성 방법](https://rhymix.org/manual/contrib/github)과
[코딩 규칙](https://rhymix.org/manual/contrib/coding-standards)을 먼저 읽어 주시기 바랍니다.
보안 취약점을 발견하셨다면 해커들에게 알려지기 전에 먼저 패치를 작성할 수 있도록
devops@rhymix.org로 알려 주시면 감사하겠습니다.
### 공식 홈페이지
- Rhymix : https://rhymix.org
### 커뮤니티
- XETOWN : https://xetown.com
### 저작권 및 라이선스
Rhymix는 [GNU GPL v2](http://korea.gnu.org/documents/copyleft/gpl.ko.html)
또는 그 이후 버전 라이선스의 적용을 받는 자유 소프트웨어(free software)입니다.
자유 소프트웨어는 "오픈소스" 또는 "개방형"이라는 명칭으로도 알려져 있으며,
개발자와 사용자의 자유와 권리, 참여와 책임을 강조하는 프로그램으로
누구나 무료로 사용할 수 있고 개발에 참여할 수도 있습니다.
Rhymix는 [NAVER](https://www.navercorp.com/)가 일부 저작권을 가진
[XpressEngine](https://xe1.xpressengine.com)의 소스코드에 바탕을 두고 있습니다.
Rhymix 개발자들이 추가 및 변경한 부분의 저작권은 해당 개발자들에게 있습니다.
XpressEngine은 초창기에 GPL을 사용하다가 버전 1.4.0부터 LGPL로 전환했지만,
Rhymix는 사용자의 권리를 더욱 보호하고 자유 소프트웨어 본연의 정신에 충실하기 위해 라이선스를 GPL로 되돌렸습니다.
(라이선스 전환은 [LGPL v2.1 제3조](http://korea.gnu.org/documents/copyleft/lgpl.ko.html#term3)에서 허용하고 있습니다.)
GPL은 WordPress, Drupal, Joomla 등 세계적인 CMS들이 공통으로 채택하고 있는 라이선스이므로
사용자 및 개발자의 권리와 의무도 이러한 CMS들의 경우와 동일합니다.
홈페이지에 Rhymix를 사용하는 것만으로 소스코드를 공개할 의무가 발생하지는 않으며,
Rhymix의 소스코드를 수정하거나 확장 기능을 직접 개발하여 사용하더라도 마찬가지입니다.
그러나 직접 개발한 확장 기능을 제3자에게 배포 또는 판매할 경우에는 반드시 소스코드를 제공해야 하며,
이러한 소스코드는 모두 GPL 라이선스의 적용을 받습니다.
# English
Rhymix is a content management system (CMS) for everyone who wants to create independent homepages to express themselves and build their communities easily and freely.
Rhymix is a fork of [XpressEngine](https://xe1.xpressengine.com) version 1.8 and is free software that anyone can use for free and participate.
Rhymix is a combination of "rhyme" in the sense of "making a poem, adjusting the sound", and "remix" in the sense of "combining, changing".
Rhymix cheers everyone who freely creates and/or assembles new things in the Internet space by combining various software and contents.
### Development Direction
Rhymix developers want an Internet ecosystem where developers and users respect each other's rights and responsibilities,
a world where everyone can speak their voice without relying on a centralized SNS platform,
a future where ordinary bloggers, students, the disabled and others as well as developers of startups can build a home in cyberspace and communicate with each other.
Rather than indiscriminately accepting modern IT trends that are centered on developers and service providers,
we focused on technologies that protect users' sovereignty and open Internet environment. Taking the spirit of ZeroBoard and XpressEngine, which led the growth of the Korean Internet communities in the 1990s and 2000s respectively, Rhymix wants to take the lead in recovering and restoring the open web in the crisis of the 2020s.
This requires the most convenience for the average user over any other CMS.
- CMS that is convenient enough to create the website easily, even for beginners, with a few clicks
- CMS that is actively using the latest technology, fast and secure
- CMS to help users and developers communicate well through community
- We try to ensure maximum compatibility with existing XpressEngine third-party materials such as add-ons, modules and widgets.
### Installation Environment
Rhymix requires PHP 7.4 or higher, and MySQL or MariaDB.
Please see the [online manual](https://rhymix.org/manual/introduction/requirements) for more information on server requirements.
### Participation in Development
Rhymix welcomes developers, designers, translators, and bugs to the public.
If you would like to participate, please read [Issue and PR Submission Guide](https://rhymix.org/manual/contrib/github)
and [Coding Standards](https://rhymix.org/manual/contrib/coding-standards) first to ensure efficient and orderly project management.
If you have found a security vulnerability, please let us know at devops@rhymix.org so that we can make a patch before it is exploited.
### Official Website
- Rhymix : https://rhymix.org
### Community
- XETOWN (Korean) : https://xetown.com
### Copyright and License
Rhymix is a free software licensed under the [GNU GPL v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) or later.
Free software is a program that emphasizes the rights and responsibilities of developers and users to participate or use in freedom.
Rhymix is based on the source code of [XpressEngine](https://xe1.xpressengine.com) ([Github](https://github.com/xpressengine/xe-core/)), which is free software partly owned by [NAVER](https://www.navercorp.com/).
Rhymix developers have copyrights on the added and modified code.
XpressEngine has been licensed under the GPL in its early days and switched to LGPL from version 1.4.0, but Rhymix has reverted its licenses to the GPL for further protection of the rights and spirit of free software.
(License conversion is allowed in [LGPL v2.1 Section 3](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html).)
The GPL is commonly adopted by global CMSes such as WordPress, Drupal, and Joomla. The rights and obligations of users and developers of Rhymix are the same as those CMSes.
The use of Rhymix on homepage does not impose a duty on you to release the source code, even if you modify the source code or develop the extension yourself.
However, distributing and/or selling the source code or extension according to the GPL license, you have to provide the source code.
================================================
FILE: SECURITY.md
================================================
Security Policy
---------------
### Supported Versions
Only the latest version is actively supported.
## Reporting a Vulnerability
Please report possible vulnerabilities by email to devops@rhymix.org.
Please DO NOT use GitHub issues or pull requests for this purpose.
We do not consider it a vulnerability if the superuser (is_admin=Y) account
can insert scripts or delete information. That's what the superuser account is for!
It will, however, be considered a serious vulnerability if someone else can
trick a superuser to perform such actions inadvertently,
for example through a CSRF attack.
================================================
FILE: addons/adminlogging/adminlogging.addon.php
================================================
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
if(!defined('__XE__'))
exit();
/**
* @file adminlogging.addon.php
* @author NAVER (developers@xpressengine.com)
* @brief admin log
*/
$logged_info = Context::get('logged_info');
if ($called_position === 'before_module_proc' && $logged_info->is_admin === 'Y' && stripos(Context::get('act') ?? '', 'admin') !== false)
{
$oAdminloggingController = adminloggingController::getInstance();
$oAdminloggingController->insertLog($this->module, $this->act);
}
/* End of file adminlogging.php */
/* Location: ./addons/adminlogging */
================================================
FILE: addons/adminlogging/conf/info.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">어드민 메뉴 접근 로깅</title>
<title xml:lang="en">Logging Access to the Administrator Menu</title>
<title xml:lang="zh-CN">后台访问日志</title>
<title xml:lang="zh-TW">管理選單訪問日誌</title>
<description xml:lang="ko">
admin menu에 접근한 기록을 로깅하는 애드온입니다.
</description>
<description xml:lang="zh-CN">
后台访问以及登陆日志。
</description>
<description xml:lang="zh-TW">
管理選單訪問紀錄及登入日誌。
</description>
<description xml:lang="en">
This addon will record Rhymix administrators' access to the menu.
</description>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="es">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="ge">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
</author>
</addon>
================================================
FILE: addons/autolink/autolink.addon.php
================================================
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
if(!defined('__XE__'))
exit();
/**
* @file autolink.addon.php
* @author NAVER (developers@xpressengine.com)
* @brief Automatic link add-on
*/
if($called_position == 'after_module_proc' && Context::getResponseMethod() == "HTML")
{
Context::loadFile(array('./addons/autolink/autolink.js', 'body', '', null), true);
}
/* End of file autolink.addon.php */
/* Location: ./addons/autolink/autolink.addon.php */
================================================
FILE: addons/autolink/autolink.js
================================================
/**
* @file autolink.js
* @brief javascript code for autolink addon
* @author NAVER (developers@xpressengine.com)
*/
(function($){
var protocol_re = '(?:(?:https?|ftp|news|telnet|irc|mms)://)';
var domain_re = '(?:[^\\s./)>]+\\.)+[^\\s./)>]+';
var max_255_re = '(?:1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9]?[0-9])';
var ip_re = '(?:'+max_255_re+'\\.){3}'+max_255_re;
var port_re = '(?::([0-9]+))?';
var user_re = '(?:/~\\w+)?';
var path_re = '(?:/[^\\s]*)?';
var hash_re = '(?:#[^\\s]*)?';
var url_regex = new RegExp('('+protocol_re+'('+domain_re+'|'+ip_re+'|localhost'+')'+port_re+user_re+path_re+hash_re+')', 'ig');
var AutoLink = xe.createPlugin("autolink", {
targets : [],
init : function() {
this.targets = [];
},
API_ONREADY : function() {
var thisPlugin = this;
// extract target text nodes
this.extractTargets($('.rhymix_content, .xe_content'));
$(this.targets).each(function(){
thisPlugin.cast('AUTOLINK', [this]);
});
},
API_AUTOLINK : function(oSender, params) {
var textNode = params[0];
if(!$(textNode).parent().length || $(textNode).parent().get(0).nodeName.toLowerCase() == 'a') return;
var content = textNode.nodeValue;
var dummy = $('<span>');
content = content.replace(/</g, '<').replace(/>/g, '>');
content = content.replace(url_regex, function(match, p1, offset, string) {
var match;
var suffix = '';
var attribute = '';
if (p1.indexOf('(') < 0 && p1.match(/\)$/)) {
p1 = p1.replace(/\)$/, '');
suffix = ')';
} else if (p1.indexOf('[') < 0 && p1.match(/\]$/)) {
p1 = p1.replace(/\]$/, '');
suffix = ']';
} else if (p1.indexOf('<') < 0 && p1.match(/>$/)) {
p1 = p1.replace(/>$/, '');
suffix = '>';
} else if (match = /^([\x21-\x7E]+\.[a-z]+)([가-힣]{1,3})$/.exec(p1)) {
p1 = match[1];
suffix = match[2];
}
if(!isSameOrigin(location.href, p1)) {
attribute = ' target="_blank"';
}
return '<a href="' + p1 + '"' + attribute + '>' + p1 + '</a>' + suffix;
});
$(textNode).before(dummy);
$(textNode).replaceWith(content);
params[0] = dummy.next('a');
dummy.remove();
},
extractTargets : function(obj) {
var thisPlugin = this;
var wrap = $('.rhymix_content, .xe_content', obj);
if(wrap.length) {
this.extractTargets(wrap);
return;
}
$(obj).contents().each(function(){
var node_name = this.nodeName.toLowerCase();
if($.inArray(node_name, ['a', 'pre', 'xml', 'textarea', 'input', 'select', 'option', 'code', 'script', 'style', 'iframe', 'button', 'img', 'embed', 'object', 'ins']) != -1) return;
// FIX ME : When this meanless code wasn't executed, url_regex do not run correctly. why?
url_regex.exec('');
if(this.nodeType == 3) { // text node
var content = this.nodeValue;
if(content.length < 5) return;
if(!/(http|https|ftp|news|telnet|irc|mms):\/\//i.test(content)) return;
thisPlugin.targets.push(this);
} else {
thisPlugin.extractTargets(this);
}
});
}
});
xe.registerPlugin(new AutoLink());
$(document).on('click', '.rhymix_content a, .xe_content a', function() {
var $this = $(this);
var href = $this.attr('href');
if(!href || /^(?:javascript|mailto):|#/.test(href)) {
return;
}
if (!$this.attr("target") && !isSameOrigin(location.href, href)) {
$this.attr("target", "_blank");
}
});
})(jQuery);
================================================
FILE: addons/autolink/autolink.spec.html
================================================
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8" />
<title>Autolink Addon Unit Test</title>
<link rel="stylesheet" href="../../common/js/unittest/css/JSSpec.css" />
<script src="../../common/js/jquery.js"></script>
<script src="../../common/js/common.js"></script>
<script src="../../common/js/js_app.js"></script>
<script src="autolink.js"></script>
<script src="../../common/js/unittest/JSSpec/diff_match_patch.js"></script>
<script src="../../common/js/unittest/JSSpec/JSSpec.js"></script>
<script>// <![CDATA[
var testParam = null;
var TestSuite = xe.createPlugin("TestSuite", {
API_BEFORE_AUTOLINK : function(oSender, params) {
return !jQuery(params[0]).parent().is('#test7');
},
API_AFTER_AUTOLINK : function(oSender, params) {
testParam = params[0];
}
});
xe.registerPlugin(new TestSuite);
jQuery(function($){
describe('AutoLink functionality', {
"#test1 - plain text don't have any link text" : function() {
value_of( $('#test1').children().length ).should_be(0);
},
"#test2 - simple link text only" : function() {
value_of( $('#test2 > a').length > 0 ).should_be_true();
value_of( $('#test2 > a').attr('href') ).should_be($('#test2 > a').text());
value_of( $('#test2').children().length ).should_be(1);
},
"#test3 - simple link text and some text" : function() {
value_of( $('#test3 > a').length > 0 ).should_be_true();
value_of( $('#test3 > a').attr('href') ).should_be($('#test3 > a').text());
value_of( $('#test3').contents().length ).should_be(2);
},
"#test4 - complex link text only" : function() {
value_of( $('#test4 > a').length > 0 ).should_be_true();
value_of( $('#test4 > a').attr('href') ).should_be($('#test4 > a').text());
value_of( $('#test4').children().length ).should_be(1);
},
"#test5 - complex link text and some text" : function() {
value_of( $('#test5 > a').length > 0 ).should_be_true();
value_of( $('#test5 > a').attr('href') ).should_be($('#test5 > a').text());
value_of( $('#test5').contents().length ).should_be(3);
},
"#test6 - complex example" : function() {
value_of( $('#test6 a').length ).should_be(8);
value_of( $('#test6 a').eq(0).attr('href') ).should_be($('#test6 a').eq(0).text());
value_of( $('#test6 a').eq(2).parent().is('b') ).should_be_true();
value_of( $('#test6 > textarea > a').length ).should_be(0);
value_of( $('#test6 > div > a').attr("target") ).should_be("_self");
},
"#test9 - don't include parenthesis" : function() {
value_of( $('#test9 a').length ).should_be(1);
value_of( $('#test9 a').attr('href') ).should_be('http://www.naver.com');
},
"#test10 - include tild" : function() {
value_of( $('#test10 a').length ).should_be(1);
value_of( $('#test10 a').attr('href') ).should_be('http://www.xpressengine.com:8000/~user/?mid=def');
}
});
describe('Autolink trigger', {
"#test7 - ignored" : function() {
value_of( $('#test7 > a').length ).should_be(0);
},
"#test8 - parameter on after trigger" : function() {
value_of( $(testParam).is('a') ).should_be_true();
}
});
});
// ]]></script>
</head>
<body>
<div class="xe_content" style="display:none">
<div id="test1">This is autolink test. This text don't have any link text.</div>
<div id="test2">http://mygony.com</div>
<div id="test3">Go to http://mygony.com</div>
<div id="test4">http://www.abc.com/some_program?hello=world&encoded=%ED%C2%C1</div>
<div id="test5">Before text. http://www.abc.com/some_program?hello=world&encoded=%ED%C2%C1 After Text</div>
<div id="test6">
<p>This is text. http://www.abc.com/some_program?hello=world&encoded=%ED%C2%C1 Text Text.
Another URL : http://www.decccccf12312.co.uk/path/to/program?mymy=lovelove. XE!
<b>Bold text and http://mail.abc.com/path/to/one_cgi.cgi?hello=world#hash_text Bold text end</b>
<textarea rows="8" cols="42">this text should be ignored http://mygony.com ignored?</textarea>
<div>
Hello~
<a href="http://mygony.com" target="_self">http://mygony.com</a>
Sayonara~
</div>
IP Test http://119.205.243.46 and MMS Link mms://xpressengine.com/a.wmv
http://localhost/some/path/file.ext
Is it OK?</p>
<p>mms://xpressengine.com/a.wmv</p>
</div>
<div id="test7">http://mygony.com</div>
<div id="test8">Go to http://mygony.com</div>
<div id="test9">Naver(http://www.naver.com)</div>
<div id="test10">User homepage : http://www.xpressengine.com:8000/~user/?mid=def should be a link.</div>
</div>
</body>
</html>
================================================
FILE: addons/autolink/conf/info.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">자동 링크 애드온</title>
<title xml:lang="jp">自動リンクアドオン</title>
<title xml:lang="en">Auto Link Addon</title>
<title xml:lang="vi">Auto Link</title>
<title xml:lang="zh-CN">自动链接插件</title>
<title xml:lang="es">auto vínculo addon</title>
<title xml:lang="ru">Аддон авто-ссылки</title>
<title xml:lang="ge">Auto-Link Addon</title>
<title xml:lang="zh-TW">自動連結</title>
<description xml:lang="ko">
글과 댓글의 내용 중 URL 문자열에 링크를 걸어주는 애드온입니다.
</description>
<description xml:lang="jp">
書き込み本文とコメントに登録された内容の中、httpで始まる一般文字列に自動にリンクを貼り付け、そのリンクにマウスオーバすると、別ウィンドウ、または同一ウィンドウに開くメニュが現れるアドオンです。
</description>
<description xml:lang="en">
This addon automatically transforms text URLs encountered in posts and comments into linkable URLs.
</description>
<description xml:lang="vi">
Addon này sẽ tự động tạo ra một đường Link khi gặp chuỗi kí tự 'http' có trong bài viết.
</description>
<description xml:lang="zh-CN">
主题及评论中以http开始的字符串,自动转换为链接。并且鼠标移到链接上方时,将出现可选(新窗/本页面)提示框。
</description>
<description xml:lang="es">
Los comentarios que comienzan con http naeyongjung tema común de la cadena para vincular automáticamente a colgar el puntero del ratón sobre cada uno de los vínculos y saechang Ciudad y aparecen en el menú de add-on de decoración.
</description>
<description xml:lang="ru">
Этот аддон-дополнение переводит все неактивные ссылки, которые встречаются в статьях и комментариях, в рабочие ссылки.
</description>
<description xml:lang="ge">
Kommentare beginnen mit http naeyongjung Thema der gemeinsamen String automatisch Link zu hängen Sie mit der Maus über die einzelnen Links und saechang Stadt und auf dem Menü des Add-On Dekoration.
</description>
<description xml:lang="zh-TW">
是種可將文章及回覆內容中的 URL 網址字串自動轉換成連結的附加元件。
</description>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="es">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="ge">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
</author>
</addon>
================================================
FILE: addons/counter/conf/info.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">기본 카운터 애드온</title>
<title xml:lang="jp">アクセスカウンターアドオン</title>
<title xml:lang="zh-CN">网站访问统计</title>
<title xml:lang="en">Counter Addon</title>
<title xml:lang="vi">Counter Addon</title>
<title xml:lang="ge">Counter Addon</title>
<title xml:lang="es">Addon contador básico</title>
<title xml:lang="ru">Аддон счетчика</title>
<title xml:lang="zh-TW">網站訪問統計</title>
<description xml:lang="ko">
XE의 기본 카운터를 이용하여 접속 정보를 기록합니다.
이 애드온을 켜야 접속 정보 수집이 됩니다.
</description>
<description xml:lang="jp">
XEのアクセスカウンターモジュールで接続(アクセス)情報を記録します。
このアドオンを「使用」に設定してから、接続(アクセス)情報が記録されます。
</description>
<description xml:lang="zh-CN">
利用XE的网站访问统计模块记录网站访问信息。
把状态设置为"使用"时,才会记录网站访问信息.
</description>
<description xml:lang="en">
This addon logs access information based on the basic counter module within XE.
The access information will be collected only if you enable this addon.
</description>
<description xml:lang="vi">
Addon này sẽ tổng hợp tất cả những lượt truy cập vào Website qua Module Counter có sẵn bên trong XE.
Thông tin truy nhập chỉ được tập hợp khi bạn bật Addon này..
</description>
<description xml:lang="ge">
Dieses Addon-Logs Zugriff auf Informationen basiert auf den grundlegenden Zähler-Modul innerhalb XE.
Der Zugang zu Informationen wird nur erhoben, wenn Sie über dieses Addon.
</description>
<description xml:lang="es">
Este addon contador básico de XE permite llevar la información de acceso a la página web de los visitantes.
Es necesario activar este addon para agregar la información de acceso.
</description>
<description xml:lang="ru">
Этот аддон пишет в лог информацию о доступе к сайту, основанную на базовом модуле счетчика в XE.
Для сбора информации необходимо включить этот аддон.
</description>
<description xml:lang="zh-TW">
使用XE的網站訪問統計模組記錄網站訪問資料。
將狀態設置成"使用"時,才會紀錄網站訪問資料。
</description>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="ge">NAVER</name>
<name xml:lang="es">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
</author>
</addon>
================================================
FILE: addons/counter/counter.addon.php
================================================
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
if(!defined('__XE__'))
exit();
/**
* @file counter.addon.php
* @author NAVER (developers@xpressengine.com)
* @brief Counter add-on
*/
// Execute if called_position is before_display_content
if($called_position == 'before_display_content' && Context::get('module') != 'admin' && Context::getResponseMethod() == 'HTML' && Context::isInstalled() && !isCrawler())
{
$oCounterController = getController('counter');
$oCounterController->counterExecute();
}
/* End of file counter.addon.php */
/* Location: ./addons/counter/counter.addon.php */
================================================
FILE: addons/member_extra_info/conf/info.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">회원 확장 정보 출력</title>
<title xml:lang="jp">会員情報拡張表示</title>
<title xml:lang="zh-CN">用户扩展信息</title>
<title xml:lang="en">Extra Member Info</title>
<title xml:lang="vi">Bổ xung thông tin thành viên</title>
<title xml:lang="ge">회원 확장 정보 출력</title>
<title xml:lang="es">회원 확장 정보 출력</title>
<title xml:lang="ru">Экстраинформация о пользователях</title>
<title xml:lang="zh-TW">用戶延伸資料</title>
<description xml:lang="ko">
회원이 등록한 이미지이름, 이미지마크를 사용하기 위해서는 이 애드온을 활성화 시키세요.
</description>
<description xml:lang="jp">
会員が登録したイメージニックネーム、イメージマークを使うためにはこのアドオンをオンにして下さい。
</description>
<description xml:lang="zh-CN">
此插件将把用户信息中的昵称图片,用户图标,签名等信息显示到页面当中。
</description>
<description xml:lang="en">
This addon displays a member's image name, image mark.
</description>
<description xml:lang="vi">
Addon này sẽ hiển thị hình ảnh thay thế tên và hình đánh dấu của thành viên.
</description>
<description xml:lang="ge">
This addon displays a member's image name, image mark.
</description>
<description xml:lang="es">
This addon displays a member's image name, image mark.
</description>
<description xml:lang="ru">
Аддон изображает имя, марку картинки пользователя.
</description>
<description xml:lang="zh-TW">
可將用戶資料中的暱稱圖片、用戶圖示、簽名檔等資料顯示到頁面當中。
</description>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="developers@xpressengine.com" link="http://xpressengine.com/">
<name xml:lang="ko">NAVER</name>
<name xml:lang="vi">NAVER</name>
<name xml:lang="jp">NAVER</name>
<name xml:lang="zh-CN">NAVER</name>
<name xml:lang="en">NAVER</name>
<name xml:lang="ge">NAVER</name>
<name xml:lang="es">NAVER</name>
<name xml:lang="ru">NAVER</name>
<name xml:lang="zh-TW">NAVER</name>
</author>
</addon>
================================================
FILE: addons/member_extra_info/member_extra_info.addon.php
================================================
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
if(!defined('__XE__'))
{
exit();
}
/**
* @file image_name.addon.php
* @author NAVER (developers@xpressengine.com)
* @brief Display user image name/image mark
*
* Find member_srl in the part with <div class="member_MemberSerialNumber"> .... </div>
* Check if ther is image name and image mark. Then change it.
*/
/**
* Just before displaying, change image name/ image mark
*/
if($called_position != "before_display_content" || Context::get('act') == 'dispPageAdminContentModify' || Context::getResponseMethod() != 'HTML' || isCrawler())
{
return;
}
// Include a file having functions to replace member image name/mark
require_once __DIR__ . '/member_extra_info.lib.php';
// 1. Find a part <div class="member_MemberSerialNumber"> content </div> in the output document, change it to image name/mark by using MemberController::transImageName()
$temp_output = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'memberTransImageName', $output);
if($temp_output)
{
$output = $temp_output;
}
unset($temp_output);
/* End of file member_extra_info.addon.php */
/* Location: ./addons/member_extra_info/member_extra_info.addon.php */
================================================
FILE: addons/member_extra_info/member_extra_info.lib.php
================================================
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @brief If member_srl exists in the div or span, replace to image name or nick image for each member_srl
* */
function memberTransImageName($matches)
{
// If member_srl < 0, then return text only in the body
$member_srl = $matches[3];
if($member_srl < 0)
{
return $matches[5];
}
// If member_srl=o(not a member), return the entire body
if(!$member_srl)
{
return $matches[0];
}
$oMemberModel = getModel('member');
$nick_name = $matches[5];
// Initialize global variable for cache
if(!isset($GLOBALS['_transImageNameList'][$member_srl]))
{
$GLOBALS['_transImageNameList'][$member_srl] = new stdClass();
}
$_tmp = &$GLOBALS['_transImageNameList'][$member_srl];
// If pre-defined data in the global variables, return it
if(!isset($_tmp->cached) || !$_tmp->cached)
{
$_tmp->cached = true;
$image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl);
$image_mark_file = sprintf('files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl);
if(file_exists(RX_BASEDIR . $image_name_file))
{
$_tmp->image_name_file = $image_name_file . '?' . date('YmdHis', filemtime(RX_BASEDIR . $image_name_file));
$image_name_file = $_tmp->image_name_file;
}
else
{
$_tmp->image_name_file = '';
$image_name_file = '';
}
if(file_exists(RX_BASEDIR . $image_mark_file))
{
$_tmp->image_mark_file = $image_mark_file . '?' . date('YmdHis', filemtime(RX_BASEDIR . $image_mark_file));
$image_mark_file = $_tmp->image_mark_file;
}
else
{
$_tmp->image_mark_file = '';
$image_mark_file = '';
}
$site_module_info = Context::get('site_module_info');
$group_image = $oMemberModel->getGroupImageMark($member_srl, $site_module_info->site_srl);
$_tmp->group_image = $group_image;
}
else
{
$group_image = $_tmp->group_image;
$image_name_file = $_tmp->image_name_file;
$image_mark_file = $_tmp->image_mark_file;
}
// If image name and mark doesn't exist, set the original information
if(!$image_name_file && !$image_mark_file && !$group_image)
{
return $matches[0];
}
// check member_config
$config = $oMemberModel->getMemberConfig();
if($config->image_name == 'Y' && $image_name_file)
{
$nick_name = sprintf('<img src="%s%s" alt="id: %s" title="id: %s" style="border:0;vertical-align:middle;margin-right:3px" />', Context::getRequestUri(), $image_name_file, strip_tags($nick_name), strip_tags($nick_name));
}
if($config->image_mark == 'Y' && $image_mark_file)
{
$nick_name = sprintf('<img src="%s%s" alt="id: %s" title="id : %s" style="border:0;vertical-align:middle;margin-right:3px"/>%s', Context::getRequestUri(), $image_mark_file, strip_tags($nick_name), strip_tags($nick_name), $nick_name);
}
if($group_image)
{
$nick_name = sprintf('<img src="%s" style="border:0;max-height:16px;vertical-align:middle;margin-right:3px" alt="%s" title="%s" />%s', $group_image->src, $group_image->title, $group_image->description, $nick_name);
}
return preg_replace('/' . preg_quote($matches[5], '/') . '<\/' . $matches[6] . '>$/', '', $matches[0]) . $nick_name . '</' . $matches[6] . '>';
}
/* End of file member_extra_info.lib.php */
/* Location: ./addons/member_extra_info/member_extra_info.lib.php */
================================================
FILE: addons/photoswipe/PhotoSwipe/LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2014-2015 Dmitry Semenov, http://dimsemenov.com
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: addons/photoswipe/PhotoSwipe/default-skin/default-skin.css
================================================
/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */
/*
Contents:
1. Buttons
2. Share modal and links
3. Index indicator ("1 of X" counter)
4. Caption
5. Loading indicator
6. Additional styles (root element, top bar, idle state, hidden state, etc.)
*/
/*
1. Buttons
*/
/* <button> css reset */
.pswp__button {
width: 44px;
height: 44px;
position: relative;
background: none;
cursor: pointer;
overflow: visible;
-webkit-appearance: none;
display: block;
border: 0;
padding: 0;
margin: 0;
float: right;
opacity: 0.75;
-webkit-transition: opacity 0.2s;
transition: opacity 0.2s;
-webkit-box-shadow: none;
box-shadow: none; }
.pswp__button:focus,
.pswp__button:hover {
opacity: 1; }
.pswp__button:active {
outline: none;
opacity: 0.9; }
.pswp__button::-moz-focus-inner {
padding: 0;
border: 0; }
/* pswp__ui--over-close class it added when mouse is over element that should close gallery */
.pswp__ui--over-close .pswp__button--close {
opacity: 1; }
.pswp__button,
.pswp__button--arrow--left:before,
.pswp__button--arrow--right:before {
background: url(default-skin.png) 0 0 no-repeat;
background-size: 264px 88px;
width: 44px;
height: 44px; }
@media (-webkit-min-device-pixel-ratio: 1.1), (-webkit-min-device-pixel-ratio: 1.09375), (min-resolution: 105dpi), (min-resolution: 1.1dppx) {
/* Serve SVG sprite if browser supports SVG and resolution is more than 105dpi */
.pswp--svg .pswp__button,
.pswp--svg .pswp__button--arrow--left:before,
.pswp--svg .pswp__button--arrow--right:before {
background-image: url(default-skin.svg); }
.pswp--svg .pswp__button--arrow--left,
.pswp--svg .pswp__button--arrow--right {
background: none; } }
.pswp__button--close {
background-position: 0 -44px; }
.pswp__button--share {
background-position: -44px -44px; }
.pswp__button--fs {
display: none; }
.pswp--supports-fs .pswp__button--fs {
display: block; }
.pswp--fs .pswp__button--fs {
background-position: -44px 0; }
.pswp__button--zoom {
display: none;
background-position: -88px 0; }
.pswp--zoom-allowed .pswp__button--zoom {
display: block; }
.pswp--zoomed-in .pswp__button--zoom {
background-position: -132px 0; }
/* no arrows on touch screens */
.pswp--touch .pswp__button--arrow--left,
.pswp--touch .pswp__button--arrow--right {
visibility: hidden; }
/*
Arrow buttons hit area
(icon is added to :before pseudo-element)
*/
.pswp__button--arrow--left,
.pswp__button--arrow--right {
background: none;
top: 50%;
margin-top: -50px;
width: 70px;
height: 100px;
position: absolute; }
.pswp__button--arrow--left {
left: 0; }
.pswp__button--arrow--right {
right: 0; }
.pswp__button--arrow--left:before,
.pswp__button--arrow--right:before {
content: '';
top: 35px;
background-color: rgba(0, 0, 0, 0.3);
height: 30px;
width: 32px;
position: absolute; }
.pswp__button--arrow--left:before {
left: 6px;
background-position: -138px -44px; }
.pswp__button--arrow--right:before {
right: 6px;
background-position: -94px -44px; }
/*
2. Share modal/popup and links
*/
.pswp__counter,
.pswp__share-modal {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none; }
.pswp__share-modal {
display: block;
background: rgba(0, 0, 0, 0.5);
width: 100%;
height: 100%;
top: 0;
left: 0;
padding: 10px;
position: absolute;
z-index: 1600;
opacity: 0;
-webkit-transition: opacity 0.25s ease-out;
transition: opacity 0.25s ease-out;
-webkit-backface-visibility: hidden;
will-change: opacity; }
.pswp__share-modal--hidden {
display: none; }
.pswp__share-tooltip {
z-index: 1620;
position: absolute;
background: #FFF;
top: 56px;
border-radius: 2px;
display: block;
width: auto;
right: 44px;
-webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25);
-webkit-transform: translateY(6px);
-ms-transform: translateY(6px);
transform: translateY(6px);
-webkit-transition: -webkit-transform 0.25s;
transition: transform 0.25s;
-webkit-backface-visibility: hidden;
will-change: transform; }
.pswp__share-tooltip a {
display: block;
padding: 8px 12px;
color: #000;
text-decoration: none;
font-size: 14px;
line-height: 18px; }
.pswp__share-tooltip a:hover {
text-decoration: none;
color: #000; }
.pswp__share-tooltip a:first-child {
/* round corners on the first/last list item */
border-radius: 2px 2px 0 0; }
.pswp__share-tooltip a:last-child {
border-radius: 0 0 2px 2px; }
.pswp__share-modal--fade-in {
opacity: 1; }
.pswp__share-modal--fade-in .pswp__share-tooltip {
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0); }
/* increase size of share links on touch devices */
.pswp--touch .pswp__share-tooltip a {
padding: 16px 12px; }
a.pswp__share--facebook:before {
content: '';
display: block;
width: 0;
height: 0;
position: absolute;
top: -12px;
right: 15px;
border: 6px solid transparent;
border-bottom-color: #FFF;
-webkit-pointer-events: none;
-moz-pointer-events: none;
pointer-events: none; }
a.pswp__share--facebook:hover {
background: #3E5C9A;
color: #FFF; }
a.pswp__share--facebook:hover:before {
border-bottom-color: #3E5C9A; }
a.pswp__share--twitter:hover {
background: #55ACEE;
color: #FFF; }
a.pswp__share--pinterest:hover {
background: #CCC;
color: #CE272D; }
a.pswp__share--download:hover {
background: #DDD; }
/*
3. Index indicator ("1 of X" counter)
*/
.pswp__counter {
position: absolute;
left: 0;
top: 0;
height: 44px;
font-size: 13px;
line-height: 44px;
color: #FFF;
opacity: 0.75;
padding: 0 10px; }
/*
4. Caption
*/
.pswp__caption {
position: absolute;
left: 0;
bottom: 0;
width: 100%;
min-height: 44px; }
.pswp__caption small {
font-size: 11px;
color: #BBB; }
.pswp__caption__center {
text-align: left;
max-width: 420px;
margin: 0 auto;
font-size: 13px;
padding: 10px;
line-height: 20px;
color: #CCC; }
.pswp__caption--empty {
display: none; }
/* Fake caption element, used to calculate height of next/prev image */
.pswp__caption--fake {
visibility: hidden; }
/*
5. Loading indicator (preloader)
You can play with it here - http://codepen.io/dimsemenov/pen/yyBWoR
*/
.pswp__preloader {
width: 44px;
height: 44px;
position: absolute;
top: 0;
left: 50%;
margin-left: -22px;
opacity: 0;
-webkit-transition: opacity 0.25s ease-out;
transition: opacity 0.25s ease-out;
will-change: opacity;
direction: ltr; }
.pswp__preloader__icn {
width: 20px;
height: 20px;
margin: 12px; }
.pswp__preloader--active {
opacity: 1; }
.pswp__preloader--active .pswp__preloader__icn {
/* We use .gif in browsers that don't support CSS animation */
background: url(preloader.gif) 0 0 no-repeat; }
.pswp--css_animation .pswp__preloader--active {
opacity: 1; }
.pswp--css_animation .pswp__preloader--active .pswp__preloader__icn {
-webkit-animation: clockwise 500ms linear infinite;
animation: clockwise 500ms linear infinite; }
.pswp--css_animation .pswp__preloader--active .pswp__preloader__donut {
-webkit-animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite;
animation: donut-rotate 1000ms cubic-bezier(0.4, 0, 0.22, 1) infinite; }
.pswp--css_animation .pswp__preloader__icn {
background: none;
opacity: 0.75;
width: 14px;
height: 14px;
position: absolute;
left: 15px;
top: 15px;
margin: 0; }
.pswp--css_animation .pswp__preloader__cut {
/*
The idea of animating inner circle is based on Polymer ("material") loading indicator
by Keanu Lee https://blog.keanulee.com/2014/10/20/the-tale-of-three-spinners.html
*/
position: relative;
width: 7px;
height: 14px;
overflow: hidden; }
.pswp--css_animation .pswp__preloader__donut {
-webkit-box-sizing: border-box;
box-sizing: border-box;
width: 14px;
height: 14px;
border: 2px solid #FFF;
border-radius: 50%;
border-left-color: transparent;
border-bottom-color: transparent;
position: absolute;
top: 0;
left: 0;
background: none;
margin: 0; }
@media screen and (max-width: 1024px) {
.pswp__preloader {
position: relative;
left: auto;
top: auto;
margin: 0;
float: right; } }
@-webkit-keyframes clockwise {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@keyframes clockwise {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg); } }
@-webkit-keyframes donut-rotate {
0% {
-webkit-transform: rotate(0);
transform: rotate(0); }
50% {
-webkit-transform: rotate(-140deg);
transform: rotate(-140deg); }
100% {
-webkit-transform: rotate(0);
transform: rotate(0); } }
@keyframes donut-rotate {
0% {
-webkit-transform: rotate(0);
transform: rotate(0); }
50% {
-webkit-transform: rotate(-140deg);
transform: rotate(-140deg); }
100% {
-webkit-transform: rotate(0);
transform: rotate(0); } }
/*
6. Additional styles
*/
/* root element of UI */
.pswp__ui {
-webkit-font-smoothing: auto;
visibility: visible;
opacity: 1;
z-index: 1550; }
/* top black bar with buttons and "1 of X" indicator */
.pswp__top-bar {
position: absolute;
left: 0;
top: 0;
height: 44px;
width: 100%; }
.pswp__caption,
.pswp__top-bar,
.pswp--has_mouse .pswp__button--arrow--left,
.pswp--has_mouse .pswp__button--arrow--right {
-webkit-backface-visibility: hidden;
will-change: opacity;
-webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }
/* pswp--has_mouse class is added only when two subsequent mousemove events occur */
.pswp--has_mouse .pswp__button--arrow--left,
.pswp--has_mouse .pswp__button--arrow--right {
visibility: visible; }
.pswp__top-bar,
.pswp__caption {
background-color: rgba(0, 0, 0, 0.5); }
/* pswp__ui--fit class is added when main image "fits" between top bar and bottom bar (caption) */
.pswp__ui--fit .pswp__top-bar,
.pswp__ui--fit .pswp__caption {
background-color: rgba(0, 0, 0, 0.3); }
/* pswp__ui--idle class is added when mouse isn't moving for several seconds (JS option timeToIdle) */
.pswp__ui--idle .pswp__top-bar {
opacity: 0; }
.pswp__ui--idle .pswp__button--arrow--left,
.pswp__ui--idle .pswp__button--arrow--right {
opacity: 0; }
/*
pswp__ui--hidden class is added when controls are hidden
e.g. when user taps to toggle visibility of controls
*/
.pswp__ui--hidden .pswp__top-bar,
.pswp__ui--hidden .pswp__caption,
.pswp__ui--hidden .pswp__button--arrow--left,
.pswp__ui--hidden .pswp__button--arrow--right {
/* Force paint & create composition layer for controls. */
opacity: 0.001; }
/* pswp__ui--one-slide class is added when there is just one item in gallery */
.pswp__ui--one-slide .pswp__button--arrow--left,
.pswp__ui--one-slide .pswp__button--arrow--right,
.pswp__ui--one-slide .pswp__counter {
display: none; }
.pswp__element--disabled {
display: none !important; }
.pswp--minimal--dark .pswp__top-bar {
background: none; }
================================================
FILE: addons/photoswipe/PhotoSwipe/photoswipe-ui-default.js
================================================
/*! PhotoSwipe Default UI - 4.1.1 - 2015-12-24
* http://photoswipe.com
* Copyright (c) 2015 Dmitry Semenov; */
/**
*
* UI on top of main sliding area (caption, arrows, close button, etc.).
* Built just using public methods/properties of PhotoSwipe.
*
*/
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(factory);
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
root.PhotoSwipeUI_Default = factory();
}
})(this, function () {
'use strict';
var PhotoSwipeUI_Default =
function(pswp, framework) {
var ui = this;
var _overlayUIUpdated = false,
_controlsVisible = true,
_fullscrenAPI,
_controls,
_captionContainer,
_fakeCaptionContainer,
_indexIndicator,
_shareButton,
_shareModal,
_shareModalHidden = true,
_initalCloseOnScrollValue,
_isIdle,
_listen,
_loadingIndicator,
_loadingIndicatorHidden,
_loadingIndicatorTimeout,
_galleryHasOneSlide,
_options,
_defaultUIOptions = {
barsSize: {top:44, bottom:'auto'},
closeElClasses: ['item', 'caption', 'zoom-wrap', 'ui', 'top-bar'],
timeToIdle: 4000,
timeToIdleOutside: 1000,
loadingIndicatorDelay: 1000, // 2s
addCaptionHTMLFn: function(item, captionEl /*, isFake */) {
if(!item.title) {
captionEl.children[0].innerHTML = '';
return false;
}
captionEl.children[0].innerHTML = item.title;
return true;
},
closeEl:true,
captionEl: true,
fullscreenEl: true,
zoomEl: true,
shareEl: true,
counterEl: true,
arrowEl: true,
preloaderEl: true,
tapToClose: false,
tapToToggleControls: true,
clickToCloseNonZoomable: true,
shareButtons: [
{id:'facebook', label:'Share on Facebook', url:'https://www.facebook.com/sharer/sharer.php?u={{url}}'},
{id:'twitter', label:'Tweet', url:'https://twitter.com/intent/tweet?text={{text}}&url={{url}}'},
{id:'pinterest', label:'Pin it', url:'http://www.pinterest.com/pin/create/button/'+
'?url={{url}}&media={{image_url}}&description={{text}}'},
{id:'download', label:'Download image', url:'{{raw_image_url}}', download:true}
],
getImageURLForShare: function( /* shareButtonData */ ) {
return pswp.currItem.src || '';
},
getPageURLForShare: function( /* shareButtonData */ ) {
return window.location.href;
},
getTextForShare: function( /* shareButtonData */ ) {
return pswp.currItem.title || '';
},
indexIndicatorSep: ' / ',
fitControlsWidth: 1200
},
_blockControlsTap,
_blockControlsTapTimeout;
var _onControlsTap = function(e) {
if(_blockControlsTap) {
return true;
}
e = e || window.event;
if(_options.timeToIdle && _options.mouseUsed && !_isIdle) {
// reset idle timer
_onIdleMouseMove();
}
var target = e.target || e.srcElement,
uiElement,
clickedClass = target.getAttribute('class') || '',
found;
for(var i = 0; i < _uiElements.length; i++) {
uiElement = _uiElements[i];
if(uiElement.onTap && clickedClass.indexOf('pswp__' + uiElement.name ) > -1 ) {
uiElement.onTap();
found = true;
}
}
if(found) {
if(e.stopPropagation) {
e.stopPropagation();
}
_blockControlsTap = true;
// Some versions of Android don't prevent ghost click event
// when preventDefault() was called on touchstart and/or touchend.
//
// This happens on v4.3, 4.2, 4.1,
// older versions strangely work correctly,
// but just in case we add delay on all of them)
var tapDelay = framework.features.isOldAndroid ? 600 : 30;
_blockControlsTapTimeout = setTimeout(function() {
_blockControlsTap = false;
}, tapDelay);
}
},
_fitControlsInViewport = function() {
return !pswp.likelyTouchDevice || _options.mouseUsed || screen.width > _options.fitControlsWidth;
},
_togglePswpClass = function(el, cName, add) {
framework[ (add ? 'add' : 'remove') + 'Class' ](el, 'pswp__' + cName);
},
// add class when there is just one item in the gallery
// (by default it hides left/right arrows and 1ofX counter)
_countNumItems = function() {
var hasOneSlide = (_options.getNumItemsFn() === 1);
if(hasOneSlide !== _galleryHasOneSlide) {
_togglePswpClass(_controls, 'ui--one-slide', hasOneSlide);
_galleryHasOneSlide = hasOneSlide;
}
},
_toggleShareModalClass = function() {
_togglePswpClass(_shareModal, 'share-modal--hidden', _shareModalHidden);
},
_toggleShareModal = function() {
_shareModalHidden = !_shareModalHidden;
if(!_shareModalHidden) {
_toggleShareModalClass();
setTimeout(function() {
if(!_shareModalHidden) {
framework.addClass(_shareModal, 'pswp__share-modal--fade-in');
}
}, 30);
} else {
framework.removeClass(_shareModal, 'pswp__share-modal--fade-in');
setTimeout(function() {
if(_shareModalHidden) {
_toggleShareModalClass();
}
}, 300);
}
if(!_shareModalHidden) {
_updateShareURLs();
}
return false;
},
_openWindowPopup = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
pswp.shout('shareLinkClick', e, target);
if(!target.href) {
return false;
}
if( target.hasAttribute('download') ) {
return true;
}
window.open(target.href, 'pswp_share', 'scrollbars=yes,resizable=yes,toolbar=no,'+
'location=yes,width=550,height=420,top=100,left=' +
(window.screen ? Math.round(screen.width / 2 - 275) : 100) );
if(!_shareModalHidden) {
_toggleShareModal();
}
return false;
},
_updateShareURLs = function() {
var shareButtonOut = '',
shareButtonData,
shareURL,
image_url,
page_url,
share_text;
for(var i = 0; i < _options.shareButtons.length; i++) {
shareButtonData = _options.shareButtons[i];
image_url = _options.getImageURLForShare(shareButtonData);
page_url = _options.getPageURLForShare(shareButtonData);
share_text = _options.getTextForShare(shareButtonData);
shareURL = shareButtonData.url.replace('{{url}}', encodeURIComponent(page_url) )
.replace('{{image_url}}', encodeURIComponent(image_url) )
.replace('{{raw_image_url}}', image_url )
.replace('{{text}}', encodeURIComponent(share_text) );
shareButtonOut += '<a href="' + shareURL + '" target="_blank" '+
'class="pswp__share--' + shareButtonData.id + '"' +
(shareButtonData.download ? 'download' : '') + '>' +
shareButtonData.label + '</a>';
if(_options.parseShareButtonOut) {
shareButtonOut = _options.parseShareButtonOut(shareButtonData, shareButtonOut);
}
}
_shareModal.children[0].innerHTML = shareButtonOut;
_shareModal.children[0].onclick = _openWindowPopup;
},
_hasCloseClass = function(target) {
for(var i = 0; i < _options.closeElClasses.length; i++) {
if( framework.hasClass(target, 'pswp__' + _options.closeElClasses[i]) ) {
return true;
}
}
},
_idleInterval,
_idleTimer,
_idleIncrement = 0,
_onIdleMouseMove = function() {
clearTimeout(_idleTimer);
_idleIncrement = 0;
if(_isIdle) {
ui.setIdle(false);
}
},
_onMouseLeaveWindow = function(e) {
e = e ? e : window.event;
var from = e.relatedTarget || e.toElement;
if (!from || from.nodeName === 'HTML') {
clearTimeout(_idleTimer);
_idleTimer = setTimeout(function() {
ui.setIdle(true);
}, _options.timeToIdleOutside);
}
},
_setupFullscreenAPI = function() {
if(_options.fullscreenEl && !framework.features.isOldAndroid) {
if(!_fullscrenAPI) {
_fullscrenAPI = ui.getFullscreenAPI();
}
if(_fullscrenAPI) {
framework.bind(document, _fullscrenAPI.eventK, ui.updateFullscreen);
ui.updateFullscreen();
framework.addClass(pswp.template, 'pswp--supports-fs');
} else {
framework.removeClass(pswp.template, 'pswp--supports-fs');
}
}
},
_setupLoadingIndicator = function() {
// Setup loading indicator
if(_options.preloaderEl) {
_toggleLoadingIndicator(true);
_listen('beforeChange', function() {
clearTimeout(_loadingIndicatorTimeout);
// display loading indicator with delay
_loadingIndicatorTimeout = setTimeout(function() {
if(pswp.currItem && pswp.currItem.loading) {
if( !pswp.allowProgressiveImg() || (pswp.currItem.img && !pswp.currItem.img.naturalWidth) ) {
// show preloader if progressive loading is not enabled,
// or image width is not defined yet (because of slow connection)
_toggleLoadingIndicator(false);
// items-controller.js function allowProgressiveImg
}
} else {
_toggleLoadingIndicator(true); // hide preloader
}
}, _options.loadingIndicatorDelay);
});
_listen('imageLoadComplete', function(index, item) {
if(pswp.currItem === item) {
_toggleLoadingIndicator(true);
}
});
}
},
_toggleLoadingIndicator = function(hide) {
if( _loadingIndicatorHidden !== hide ) {
_togglePswpClass(_loadingIndicator, 'preloader--active', !hide);
_loadingIndicatorHidden = hide;
}
},
_applyNavBarGaps = function(item) {
var gap = item.vGap;
if( _fitControlsInViewport() ) {
var bars = _options.barsSize;
if(_options.captionEl && bars.bottom === 'auto') {
if(!_fakeCaptionContainer) {
_fakeCaptionContainer = framework.createEl('pswp__caption pswp__caption--fake');
_fakeCaptionContainer.appendChild( framework.createEl('pswp__caption__center') );
_controls.insertBefore(_fakeCaptionContainer, _captionContainer);
framework.addClass(_controls, 'pswp__ui--fit');
}
if( _options.addCaptionHTMLFn(item, _fakeCaptionContainer, true) ) {
var captionSize = _fakeCaptionContainer.clientHeight;
gap.bottom = parseInt(captionSize,10) || 44;
} else {
gap.bottom = bars.top; // if no caption, set size of bottom gap to size of top
}
} else {
gap.bottom = bars.bottom === 'auto' ? 0 : bars.bottom;
}
// height of top bar is static, no need to calculate it
gap.top = bars.top;
} else {
gap.top = gap.bottom = 0;
}
},
_setupIdle = function() {
// Hide controls when mouse is used
if(_options.timeToIdle) {
_listen('mouseUsed', function() {
framework.bind(document, 'mousemove', _onIdleMouseMove);
framework.bind(document, 'mouseout', _onMouseLeaveWindow);
_idleInterval = setInterval(function() {
_idleIncrement++;
if(_idleIncrement === 2) {
ui.setIdle(true);
}
}, _options.timeToIdle / 2);
});
}
},
_setupHidingControlsDuringGestures = function() {
// Hide controls on vertical drag
_listen('onVerticalDrag', function(now) {
if(_controlsVisible && now < 0.95) {
ui.hideControls();
} else if(!_controlsVisible && now >= 0.95) {
ui.showControls();
}
});
// Hide controls when pinching to close
var pinchControlsHidden;
_listen('onPinchClose' , function(now) {
if(_controlsVisible && now < 0.9) {
ui.hideControls();
pinchControlsHidden = true;
} else if(pinchControlsHidden && !_controlsVisible && now > 0.9) {
ui.showControls();
}
});
_listen('zoomGestureEnded', function() {
pinchControlsHidden = false;
if(pinchControlsHidden && !_controlsVisible) {
ui.showControls();
}
});
};
var _uiElements = [
{
name: 'caption',
option: 'captionEl',
onInit: function(el) {
_captionContainer = el;
}
},
{
name: 'share-modal',
option: 'shareEl',
onInit: function(el) {
_shareModal = el;
},
onTap: function() {
_toggleShareModal();
}
},
{
name: 'button--share',
option: 'shareEl',
onInit: function(el) {
_shareButton = el;
},
onTap: function() {
_toggleShareModal();
}
},
{
name: 'button--zoom',
option: 'zoomEl',
onTap: pswp.toggleDesktopZoom
},
{
name: 'counter',
option: 'counterEl',
onInit: function(el) {
_indexIndicator = el;
}
},
{
name: 'button--close',
option: 'closeEl',
onTap: pswp.close
},
{
name: 'button--arrow--left',
option: 'arrowEl',
onTap: pswp.prev
},
{
name: 'button--arrow--right',
option: 'arrowEl',
onTap: pswp.next
},
{
name: 'button--fs',
option: 'fullscreenEl',
onTap: function() {
if(_fullscrenAPI.isFullscreen()) {
_fullscrenAPI.exit();
} else {
_fullscrenAPI.enter();
}
}
},
{
name: 'preloader',
option: 'preloaderEl',
onInit: function(el) {
_loadingIndicator = el;
}
}
];
var _setupUIElements = function() {
var item,
classAttr,
uiElement;
var loopThroughChildElements = function(sChildren) {
if(!sChildren) {
return;
}
var l = sChildren.length;
for(var i = 0; i < l; i++) {
item = sChildren[i];
classAttr = item.className;
for(var a = 0; a < _uiElements.length; a++) {
uiElement = _uiElements[a];
if(classAttr.indexOf('pswp__' + uiElement.name) > -1 ) {
if( _options[uiElement.option] ) { // if element is not disabled from options
framework.removeClass(item, 'pswp__element--disabled');
if(uiElement.onInit) {
uiElement.onInit(item);
}
//item.style.display = 'block';
} else {
framework.addClass(item, 'pswp__element--disabled');
//item.style.display = 'none';
}
}
}
}
};
loopThroughChildElements(_controls.children);
var topBar = framework.getChildByClass(_controls, 'pswp__top-bar');
if(topBar) {
loopThroughChildElements( topBar.children );
}
};
ui.init = function() {
// extend options
framework.extend(pswp.options, _defaultUIOptions, true);
// create local link for fast access
_options = pswp.options;
// find pswp__ui element
_controls = framework.getChildByClass(pswp.scrollWrap, 'pswp__ui');
// create local link
_listen = pswp.listen;
_setupHidingControlsDuringGestures();
// update controls when slides change
_listen('beforeChange', ui.update);
// toggle zoom on double-tap
_listen('doubleTap', function(point) {
var initialZoomLevel = pswp.currItem.initialZoomLevel;
if(pswp.getZoomLevel() !== initialZoomLevel) {
pswp.zoomTo(initialZoomLevel, point, 333);
} else {
pswp.zoomTo(_options.getDoubleTapZoom(false, pswp.currItem), point, 333);
}
});
// Allow text selection in caption
_listen('preventDragEvent', function(e, isDown, preventObj) {
var t = e.target || e.srcElement;
if(
t &&
t.getAttribute('class') && e.type.indexOf('mouse') > -1 &&
( t.getAttribute('class').indexOf('__caption') > 0 || (/(SMALL|STRONG|EM)/i).test(t.tagName) )
) {
preventObj.prevent = false;
}
});
// bind events for UI
_listen('bindEvents', function() {
framework.bind(_controls, 'pswpTap click', _onControlsTap);
framework.bind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);
if(!pswp.likelyTouchDevice) {
framework.bind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);
}
});
// unbind events for UI
_listen('unbindEvents', function() {
if(!_shareModalHidden) {
_toggleShareModal();
}
if(_idleInterval) {
clearInterval(_idleInterval);
}
framework.unbind(document, 'mouseout', _onMouseLeaveWindow);
framework.unbind(document, 'mousemove', _onIdleMouseMove);
framework.unbind(_controls, 'pswpTap click', _onControlsTap);
framework.unbind(pswp.scrollWrap, 'pswpTap', ui.onGlobalTap);
framework.unbind(pswp.scrollWrap, 'mouseover', ui.onMouseOver);
if(_fullscrenAPI) {
framework.unbind(document, _fullscrenAPI.eventK, ui.updateFullscreen);
if(_fullscrenAPI.isFullscreen()) {
_options.hideAnimationDuration = 0;
_fullscrenAPI.exit();
}
_fullscrenAPI = null;
}
});
// clean up things when gallery is destroyed
_listen('destroy', function() {
if(_options.captionEl) {
if(_fakeCaptionContainer) {
_controls.removeChild(_fakeCaptionContainer);
}
framework.removeClass(_captionContainer, 'pswp__caption--empty');
}
if(_shareModal) {
_shareModal.children[0].onclick = null;
}
framework.removeClass(_controls, 'pswp__ui--over-close');
framework.addClass( _controls, 'pswp__ui--hidden');
ui.setIdle(false);
});
if(!_options.showAnimationDuration) {
framework.removeClass( _controls, 'pswp__ui--hidden');
}
_listen('initialZoomIn', function() {
if(_options.showAnimationDuration) {
framework.removeClass( _controls, 'pswp__ui--hidden');
}
});
_listen('initialZoomOut', function() {
framework.addClass( _controls, 'pswp__ui--hidden');
});
_listen('parseVerticalMargin', _applyNavBarGaps);
_setupUIElements();
if(_options.shareEl && _shareButton && _shareModal) {
_shareModalHidden = true;
}
_countNumItems();
_setupIdle();
_setupFullscreenAPI();
_setupLoadingIndicator();
};
ui.setIdle = function(isIdle) {
_isIdle = isIdle;
_togglePswpClass(_controls, 'ui--idle', isIdle);
};
ui.update = function() {
// Don't update UI if it's hidden
if(_controlsVisible && pswp.currItem) {
ui.updateIndexIndicator();
if(_options.captionEl) {
_options.addCaptionHTMLFn(pswp.currItem, _captionContainer);
_togglePswpClass(_captionContainer, 'caption--empty', !pswp.currItem.title);
}
_overlayUIUpdated = true;
} else {
_overlayUIUpdated = false;
}
if(!_shareModalHidden) {
_toggleShareModal();
}
_countNumItems();
};
ui.updateFullscreen = function(e) {
if(e) {
// some browsers change window scroll position during the fullscreen
// so PhotoSwipe updates it just in case
setTimeout(function() {
pswp.setScrollOffset( 0, framework.getScrollY() );
}, 50);
}
// toogle pswp--fs class on root element
framework[ (_fullscrenAPI.isFullscreen() ? 'add' : 'remove') + 'Class' ](pswp.template, 'pswp--fs');
};
ui.updateIndexIndicator = function() {
if(_options.counterEl) {
_indexIndicator.innerHTML = (pswp.getCurrentIndex()+1) +
_options.indexIndicatorSep +
_options.getNumItemsFn();
}
};
ui.onGlobalTap = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
if(_blockControlsTap) {
return;
}
if(e.detail && e.detail.pointerType === 'mouse') {
// close gallery if clicked outside of the image
if(_hasCloseClass(target)) {
pswp.close();
return;
}
if(framework.hasClass(target, 'pswp__img')) {
if(pswp.getZoomLevel() === 1 && pswp.getZoomLevel() <= pswp.currItem.fitRatio) {
if(_options.clickToCloseNonZoomable) {
pswp.close();
}
} else {
pswp.toggleDesktopZoom(e.detail.releasePoint);
}
}
} else {
// tap anywhere (except buttons) to toggle visibility of controls
if(_options.tapToToggleControls) {
if(_controlsVisible) {
ui.hideControls();
} else {
ui.showControls();
}
}
// tap to close gallery
if(_options.tapToClose && (framework.hasClass(target, 'pswp__img') || _hasCloseClass(target)) ) {
pswp.close();
return;
}
}
};
ui.onMouseOver = function(e) {
e = e || window.event;
var target = e.target || e.srcElement;
// add class when mouse is over an element that should close the gallery
_togglePswpClass(_controls, 'ui--over-close', _hasCloseClass(target));
};
ui.hideControls = function() {
framework.addClass(_controls,'pswp__ui--hidden');
_controlsVisible = false;
};
ui.showControls = function() {
_controlsVisible = true;
if(!_overlayUIUpdated) {
ui.update();
}
framework.removeClass(_controls,'pswp__ui--hidden');
};
ui.supportsFullscreen = function() {
var d = document;
return !!(d.exitFullscreen || d.mozCancelFullScreen || d.webkitExitFullscreen || d.msExitFullscreen);
};
ui.getFullscreenAPI = function() {
var dE = document.documentElement,
api,
tF = 'fullscreenchange';
if (dE.requestFullscreen) {
api = {
enterK: 'requestFullscreen',
exitK: 'exitFullscreen',
elementK: 'fullscreenElement',
eventK: tF
};
} else if(dE.mozRequestFullScreen ) {
api = {
enterK: 'mozRequestFullScreen',
exitK: 'mozCancelFullScreen',
elementK: 'mozFullScreenElement',
eventK: 'moz' + tF
};
} else if(dE.webkitRequestFullscreen) {
api = {
enterK: 'webkitRequestFullscreen',
exitK: 'webkitExitFullscreen',
elementK: 'webkitFullscreenElement',
eventK: 'webkit' + tF
};
} else if(dE.msRequestFullscreen) {
api = {
enterK: 'msRequestFullscreen',
exitK: 'msExitFullscreen',
elementK: 'msFullscreenElement',
eventK: 'MSFullscreenChange'
};
}
if(api) {
api.enter = function() {
// disable close-on-scroll in fullscreen
_initalCloseOnScrollValue = _options.closeOnScroll;
_options.closeOnScroll = false;
if(this.enterK === 'webkitRequestFullscreen') {
pswp.template[this.enterK]( Element.ALLOW_KEYBOARD_INPUT );
} else {
return pswp.template[this.enterK]();
}
};
api.exit = function() {
_options.closeOnScroll = _initalCloseOnScrollValue;
return document[this.exitK]();
};
api.isFullscreen = function() { return document[this.elementK]; };
}
return api;
};
};
return PhotoSwipeUI_Default;
});
================================================
FILE: addons/photoswipe/PhotoSwipe/photoswipe.css
================================================
/*! PhotoSwipe main CSS by Dmitry Semenov | photoswipe.com | MIT license */
/*
Styles for basic PhotoSwipe functionality (sliding area, open/close transitions)
*/
/* pswp = photoswipe */
.pswp {
display: none;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
overflow: hidden;
-ms-touch-action: none;
touch-action: none;
z-index: 1500;
-webkit-text-size-adjust: 100%;
/* create separate layer, to avoid paint on window.onscroll in webkit/blink */
-webkit-backface-visibility: hidden;
outline: none; }
.pswp * {
-webkit-box-sizing: border-box;
box-sizing: border-box; }
.pswp img {
max-width: none; }
/* style is added when JS option showHideOpacity is set to true */
.pswp--animate_opacity {
/* 0.001, because opacity:0 doesn't trigger Paint action, which causes lag at start of transition */
opacity: 0.001;
will-change: opacity;
/* for open/close transition */
-webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }
.pswp--open {
display: block; }
.pswp--zoom-allowed .pswp__img {
/* autoprefixer: off */
cursor: -webkit-zoom-in;
cursor: -moz-zoom-in;
cursor: zoom-in; }
.pswp--zoomed-in .pswp__img {
/* autoprefixer: off */
cursor: -webkit-grab;
cursor: -moz-grab;
cursor: grab; }
.pswp--dragging .pswp__img {
/* autoprefixer: off */
cursor: -webkit-grabbing;
cursor: -moz-grabbing;
cursor: grabbing; }
/*
Background is added as a separate element.
As animating opacity is much faster than animating rgba() background-color.
*/
.pswp__bg {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: #000;
opacity: 0;
transform: translateZ(0);
-webkit-backface-visibility: hidden;
will-change: opacity; }
.pswp__scroll-wrap {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: hidden; }
.pswp__container,
.pswp__zoom-wrap {
-ms-touch-action: none;
touch-action: none;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0; }
/* Prevent selection and tap highlights */
.pswp__container,
.pswp__img {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-tap-highlight-color: transparent;
-webkit-touch-callout: none; }
.pswp__zoom-wrap {
position: absolute;
width: 100%;
-webkit-transform-origin: left top;
-ms-transform-origin: left top;
transform-origin: left top;
/* for open/close transition */
-webkit-transition: -webkit-transform 333ms cubic-bezier(0.4, 0, 0.22, 1);
transition: transform 333ms cubic-bezier(0.4, 0, 0.22, 1); }
.pswp__bg {
will-change: opacity;
/* for open/close transition */
-webkit-transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1);
transition: opacity 333ms cubic-bezier(0.4, 0, 0.22, 1); }
.pswp--animated-in .pswp__bg,
.pswp--animated-in .pswp__zoom-wrap {
-webkit-transition: none;
transition: none; }
.pswp__container,
.pswp__zoom-wrap {
-webkit-backface-visibility: hidden; }
.pswp__item {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
overflow: hidden; }
.pswp__img {
position: absolute;
width: auto;
height: auto;
top: 0;
left: 0; }
/*
stretched thumbnail or div placeholder element (see below)
style is added to avoid flickering in webkit/blink when layers overlap
*/
.pswp__img--placeholder {
-webkit-backface-visibility: hidden; }
/*
div element that matches size of large image
large image loads on top of it
*/
.pswp__img--placeholder--blank {
background: #222; }
.pswp--ie .pswp__img {
width: 100% !important;
height: auto !important;
left: 0;
top: 0; }
/*
Error message appears when image is not loaded
(JS option errorMsg controls markup)
*/
.pswp__error-msg {
position: absolute;
left: 0;
top: 50%;
width: 100%;
text-align: center;
font-size: 14px;
line-height: 16px;
margin-top: -8px;
color: #CCC; }
.pswp__error-msg a {
color: #CCC;
text-decoration: underline; }
================================================
FILE: addons/photoswipe/PhotoSwipe/photoswipe.js
================================================
/*! PhotoSwipe - v4.1.1 - 2015-12-24
* http://photoswipe.com
* Copyright (c) 2015 Dmitry Semenov; */
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(factory);
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
root.PhotoSwipe = factory();
}
})(this, function () {
'use strict';
var PhotoSwipe = function(template, UiClass, items, options){
/*>>framework-bridge*/
/**
*
* Set of generic functions used by gallery.
*
* You're free to modify anything here as long as functionality is kept.
*
*/
var framework = {
features: null,
bind: function(target, type, listener, unbind) {
var methodName = (unbind ? 'remove' : 'add') + 'EventListener';
type = type.split(' ');
for(var i = 0; i < type.length; i++) {
if(type[i]) {
target[methodName]( type[i], listener, false);
}
}
},
isArray: function(obj) {
return (obj instanceof Array);
},
createEl: function(classes, tag) {
var el = document.createElement(tag || 'div');
if(classes) {
el.className = classes;
}
return el;
},
getScrollY: function() {
var yOffset = window.pageYOffset;
return yOffset !== undefined ? yOffset : document.documentElement.scrollTop;
},
unbind: function(target, type, listener) {
framework.bind(target,type,listener,true);
},
removeClass: function(el, className) {
var reg = new RegExp('(\\s|^)' + className + '(\\s|$)');
el.className = el.className.replace(reg, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
},
addClass: function(el, className) {
if( !framework.hasClass(el,className) ) {
el.className += (el.className ? ' ' : '') + className;
}
},
hasClass: function(el, className) {
return el.className && new RegExp('(^|\\s)' + className + '(\\s|$)').test(el.className);
},
getChildByClass: function(parentEl, childClassName) {
var node = parentEl.firstChild;
while(node) {
if( framework.hasClass(node, childClassName) ) {
return node;
}
node = node.nextSibling;
}
},
arraySearch: function(array, value, key) {
var i = array.length;
while(i--) {
if(array[i][key] === value) {
return i;
}
}
return -1;
},
extend: function(o1, o2, preventOverwrite) {
for (var prop in o2) {
if (o2.hasOwnProperty(prop)) {
if(preventOverwrite && o1.hasOwnProperty(prop)) {
continue;
}
o1[prop] = o2[prop];
}
}
},
easing: {
sine: {
out: function(k) {
return Math.sin(k * (Math.PI / 2));
},
inOut: function(k) {
return - (Math.cos(Math.PI * k) - 1) / 2;
}
},
cubic: {
out: function(k) {
return --k * k * k + 1;
}
}
/*
elastic: {
out: function ( k ) {
var s, a = 0.1, p = 0.4;
if ( k === 0 ) return 0;
if ( k === 1 ) return 1;
if ( !a || a < 1 ) { a = 1; s = p / 4; }
else s = p * Math.asin( 1 / a ) / ( 2 * Math.PI );
return ( a * Math.pow( 2, - 10 * k) * Math.sin( ( k - s ) * ( 2 * Math.PI ) / p ) + 1 );
},
},
back: {
out: function ( k ) {
var s = 1.70158;
return --k * k * ( ( s + 1 ) * k + s ) + 1;
}
}
*/
},
/**
*
* @return {object}
*
* {
* raf : request animation frame function
* caf : cancel animation frame function
* transfrom : transform property key (with vendor), or null if not supported
* oldIE : IE8 or below
* }
*
*/
detectFeatures: function() {
if(framework.features) {
return framework.features;
}
var helperEl = framework.createEl(),
helperStyle = helperEl.style,
vendor = '',
features = {};
// IE8 and below
features.oldIE = document.all && !document.addEventListener;
features.touch = 'ontouchstart' in window;
if(window.requestAnimationFrame) {
features.raf = window.requestAnimationFrame;
features.caf = window.cancelAnimationFrame;
}
features.pointerEvent = navigator.pointerEnabled || navigator.msPointerEnabled;
// fix false-positive detection of old Android in new IE
// (IE11 ua string contains "Android 4.0")
if(!features.pointerEvent) {
var ua = navigator.userAgent;
// Detect if device is iPhone or iPod and if it's older than iOS 8
// http://stackoverflow.com/a/14223920
//
// This detection is made because of buggy top/bottom toolbars
// that don't trigger window.resize event.
// For more info refer to _isFixedPosition variable in core.js
if (/iP(hone|od)/.test(navigator.platform)) {
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
if(v && v.length > 0) {
v = parseInt(v[1], 10);
if(v >= 1 && v < 8 ) {
features.isOldIOSPhone = true;
}
}
}
// Detect old Android (before KitKat)
// due to bugs related to position:fixed
// http://stackoverflow.com/questions/7184573/pick-up-the-android-version-in-the-browser-by-javascript
var match = ua.match(/Android\s([0-9\.]*)/);
var androidversion = match ? match[1] : 0;
androidversion = parseFloat(androidversion);
if(androidversion >= 1 ) {
if(androidversion < 4.4) {
features.isOldAndroid = true; // for fixed position bug & performance
}
features.androidVersion = androidversion; // for touchend bug
}
features.isMobileOpera = /opera mini|opera mobi/i.test(ua);
// p.s. yes, yes, UA sniffing is bad, propose your solution for above bugs.
}
var styleChecks = ['transform', 'perspective', 'animationName'],
vendors = ['', 'webkit','Moz','ms','O'],
styleCheckItem,
styleName;
for(var i = 0; i < 4; i++) {
vendor = vendors[i];
for(var a = 0; a < 3; a++) {
styleCheckItem = styleChecks[a];
// uppercase first letter of property name, if vendor is present
styleName = vendor + (vendor ?
styleCheckItem.charAt(0).toUpperCase() + styleCheckItem.slice(1) :
styleCheckItem);
if(!features[styleCheckItem] && styleName in helperStyle ) {
features[styleCheckItem] = styleName;
}
}
if(vendor && !features.raf) {
vendor = vendor.toLowerCase();
features.raf = window[vendor+'RequestAnimationFrame'];
if(features.raf) {
features.caf = window[vendor+'CancelAnimationFrame'] ||
window[vendor+'CancelRequestAnimationFrame'];
}
}
}
if(!features.raf) {
var lastTime = 0;
features.raf = function(fn) {
var currTime = new Date().getTime();
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
var id = window.setTimeout(function() { fn(currTime + timeToCall); }, timeToCall);
lastTime = currTime + timeToCall;
return id;
};
features.caf = function(id) { clearTimeout(id); };
}
// Detect SVG support
features.svg = !!document.createElementNS &&
!!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect;
framework.features = features;
return features;
}
};
framework.detectFeatures();
// Override addEventListener for old versions of IE
if(framework.features.oldIE) {
framework.bind = function(target, type, listener, unbind) {
type = type.split(' ');
var methodName = (unbind ? 'detach' : 'attach') + 'Event',
evName,
_handleEv = function() {
listener.handleEvent.call(listener);
};
for(var i = 0; i < type.length; i++) {
evName = type[i];
if(evName) {
if(typeof listener === 'object' && listener.handleEvent) {
if(!unbind) {
listener['oldIE' + evName] = _handleEv;
} else {
if(!listener['oldIE' + evName]) {
return false;
}
}
target[methodName]( 'on' + evName, listener['oldIE' + evName]);
} else {
target[methodName]( 'on' + evName, listener);
}
}
}
};
}
/*>>framework-bridge*/
/*>>core*/
//function(template, UiClass, items, options)
var self = this;
/**
* Static vars, don't change unless you know what you're doing.
*/
var DOUBLE_TAP_RADIUS = 25,
NUM_HOLDERS = 3;
/**
* Options
*/
var _options = {
allowPanToNext:true,
spacing: 0.12,
bgOpacity: 1,
mouseUsed: false,
loop: true,
pinchToClose: true,
closeOnScroll: true,
closeOnVerticalDrag: true,
verticalDragRange: 0.75,
hideAnimationDuration: 333,
showAnimationDuration: 333,
showHideOpacity: false,
focus: true,
escKey: true,
arrowKeys: true,
mainScrollEndFriction: 0.35,
panEndFriction: 0.35,
isClickableElement: function(el) {
return el.tagName === 'A';
},
getDoubleTapZoom: function(isMouseClick, item) {
if(isMouseClick) {
return 1;
} else {
return item.initialZoomLevel < 0.7 ? 1 : 1.33;
}
},
maxSpreadZoom: 1.33,
modal: true,
// not fully implemented yet
scaleMode: 'fit' // TODO
};
framework.extend(_options, options);
/**
* Private helper variables & functions
*/
var _getEmptyPoint = function() {
return {x:0,y:0};
};
var _isOpen,
_isDestroying,
_closedByScroll,
_currentItemIndex,
_containerStyle,
_containerShiftIndex,
_currPanDist = _getEmptyPoint(),
_startPanOffset = _getEmptyPoint(),
_panOffset = _getEmptyPoint(),
_upMoveEvents, // drag move, drag end & drag cancel events array
_downEvents, // drag start events array
_globalEventHandlers,
_viewportSize = {},
_currZoomLevel,
_startZoomLevel,
_translatePrefix,
_translateSufix,
_updateSizeInterval,
_itemsNeedUpdate,
_currPositionIndex = 0,
_offset = {},
_slideSize = _getEmptyPoint(), // size of slide area, including spacing
_itemHolders,
_prevItemIndex,
_indexDiff = 0, // difference of indexes since last content update
_dragStartEvent,
_dragMoveEvent,
_dragEndEvent,
_dragCancelEvent,
_transformKey,
_pointerEventEnabled,
_isFixedPosition = true,
_likelyTouchDevice,
_modules = [],
_requestAF,
_cancelAF,
_initalClassName,
_initalWindowScrollY,
_oldIE,
_currentWindowScrollY,
_features,
_windowVisibleSize = {},
_renderMaxResolution = false,
// Registers PhotoSWipe module (History, Controller ...)
_registerModule = function(name, module) {
framework.extend(self, module.publicMethods);
_modules.push(name);
},
_getLoopedId = function(index) {
var numSlides = _getNumItems();
if(index > numSlides - 1) {
return index - numSlides;
} else if(index < 0) {
return numSlides + index;
}
return index;
},
// Micro bind/trigger
_listeners = {},
_listen = function(name, fn) {
if(!_listeners[name]) {
_listeners[name] = [];
}
return _listeners[name].push(fn);
},
_shout = function(name) {
var listeners = _listeners[name];
if(listeners) {
var args = Array.prototype.slice.call(arguments);
args.shift();
for(var i = 0; i < listeners.length; i++) {
listeners[i].apply(self, args);
}
}
},
_getCurrentTime = function() {
return new Date().getTime();
},
_applyBgOpacity = function(opacity) {
_bgOpacity = opacity;
self.bg.style.opacity = opacity * _options.bgOpacity;
},
_applyZoomTransform = function(styleObj,x,y,zoom,item) {
if(!_renderMaxResolution || (item && item !== self.currItem) ) {
zoom = zoom / (item ? item.fitRatio : self.currItem.fitRatio);
}
styleObj[_transformKey] = _translatePrefix + x + 'px, ' + y + 'px' + _translateSufix + ' scale(' + zoom + ')';
},
_applyCurrentZoomPan = function( allowRenderResolution ) {
if(_currZoomElementStyle) {
if(allowRenderResolution) {
if(_currZoomLevel > self.currItem.fitRatio) {
if(!_renderMaxResolution) {
_setImageSize(self.currItem, false, true);
_renderMaxResolution = true;
}
} else {
if(_renderMaxResolution) {
_setImageSize(self.currItem);
_renderMaxResolution = false;
}
}
}
_applyZoomTransform(_currZoomElementStyle, _panOffset.x, _panOffset.y, _currZoomLevel);
}
},
_applyZoomPanToItem = function(item) {
if(item.container) {
_applyZoomTransform(item.container.style,
item.initialPosition.x,
item.initialPosition.y,
item.initialZoomLevel,
item);
}
},
_setTranslateX = function(x, elStyle) {
elStyle[_transformKey] = _translatePrefix + x + 'px, 0px' + _translateSufix;
},
_moveMainScroll = function(x, dragging) {
if(!_options.loop && dragging) {
var newSlideIndexOffset = _currentItemIndex + (_slideSize.x * _currPositionIndex - x) / _slideSize.x,
delta = Math.round(x - _mainScrollPos.x);
if( (newSlideIndexOffset < 0 && delta > 0) ||
(newSlideIndexOffset >= _getNumItems() - 1 && delta < 0) ) {
x = _mainScrollPos.x + delta * _options.mainScrollEndFriction;
}
}
_mainScrollPos.x = x;
_setTranslateX(x, _containerStyle);
},
_calculatePanOffset = function(axis, zoomLevel) {
var m = _midZoomPoint[axis] - _offset[axis];
return _startPanOffset[axis] + _currPanDist[axis] + m - m * ( zoomLevel / _startZoomLevel );
},
_equalizePoints = function(p1, p2) {
p1.x = p2.x;
p1.y = p2.y;
if(p2.id) {
p1.id = p2.id;
}
},
_roundPoint = function(p) {
p.x = Math.round(p.x);
p.y = Math.round(p.y);
},
_mouseMoveTimeout = null,
_onFirstMouseMove = function() {
// Wait until mouse move event is fired at least twice during 100ms
// We do this, because some mobile browsers trigger it on touchstart
if(_mouseMoveTimeout ) {
framework.unbind(document, 'mousemove', _onFirstMouseMove);
framework.addClass(template, 'pswp--has_mouse');
_options.mouseUsed = true;
_shout('mouseUsed');
}
_mouseMoveTimeout = setTimeout(function() {
_mouseMoveTimeout = null;
}, 100);
},
_bindEvents = function() {
framework.bind(document, 'keydown', self);
if(_features.transform) {
// don't bind click event in browsers that don't support transform (mostly IE8)
framework.bind(self.scrollWrap, 'click', self);
}
if(!_options.mouseUsed) {
framework.bind(document, 'mousemove', _onFirstMouseMove);
}
framework.bind(window, 'resize scroll', self);
_shout('bindEvents');
},
_unbindEvents = function() {
framework.unbind(window, 'resize', self);
framework.unbind(window, 'scroll', _globalEventHandlers.scroll);
framework.unbind(document, 'keydown', self);
framework.unbind(document, 'mousemove', _onFirstMouseMove);
if(_features.transform) {
framework.unbind(self.scrollWrap, 'click', self);
}
if(_isDragging) {
framework.unbind(window, _upMoveEvents, self);
}
_shout('unbindEvents');
},
_calculatePanBounds = function(zoomLevel, update) {
var bounds = _calculateItemSize( self.currItem, _viewportSize, zoomLevel );
if(update) {
_currPanBounds = bounds;
}
return bounds;
},
_getMinZoomLevel = function(item) {
if(!item) {
item = self.currItem;
}
return item.initialZoomLevel;
},
_getMaxZoomLevel = function(item) {
if(!item) {
item = self.currItem;
}
return item.w > 0 ? _options.maxSpreadZoom : 1;
},
// Return true if offset is out of the bounds
_modifyDestPanOffset = function(axis, destPanBounds, destPanOffset, destZoomLevel) {
if(destZoomLevel === self.currItem.initialZoomLevel) {
destPanOffset[axis] = self.currItem.initialPosition[axis];
return true;
} else {
destPanOffset[axis] = _calculatePanOffset(axis, destZoomLevel);
if(destPanOffset[axis] > destPanBounds.min[axis]) {
destPanOffset[axis] = destPanBounds.min[axis];
return true;
} else if(destPanOffset[axis] < destPanBounds.max[axis] ) {
destPanOffset[axis] = destPanBounds.max[axis];
return true;
}
}
return false;
},
_setupTransforms = function() {
if(_transformKey) {
// setup 3d transforms
var allow3dTransform = _features.perspective && !_likelyTouchDevice;
_translatePrefix = 'translate' + (allow3dTransform ? '3d(' : '(');
_translateSufix = _features.perspective ? ', 0px)' : ')';
return;
}
// Override zoom/pan/move functions in case old browser is used (most likely IE)
// (so they use left/top/width/height, instead of CSS transform)
_transformKey = 'left';
framework.addClass(template, 'pswp--ie');
_setTranslateX = function(x, elStyle) {
elStyle.left = x + 'px';
};
_applyZoomPanToItem = function(item) {
var zoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,
s = item.container.style,
w = zoomRatio * item.w,
h = zoomRatio * item.h;
s.width = w + 'px';
s.height = h + 'px';
s.left = item.initialPosition.x + 'px';
s.top = item.initialPosition.y + 'px';
};
_applyCurrentZoomPan = function() {
if(_currZoomElementStyle) {
var s = _currZoomElementStyle,
item = self.currItem,
zoomRatio = item.fitRatio > 1 ? 1 : item.fitRatio,
w = zoomRatio * item.w,
h = zoomRatio * item.h;
s.width = w + 'px';
s.height = h + 'px';
s.left = _panOffset.x + 'px';
s.top = _panOffset.y + 'px';
}
};
},
_onKeyDown = function(e) {
var keydownAction = '';
if(_options.escKey && e.keyCode === 27) {
keydownAction = 'close';
} else if(_options.arrowKeys) {
if(e.keyCode === 37) {
keydownAction = 'prev';
} else if(e.keyCode === 39) {
keydownAction = 'next';
}
}
if(keydownAction) {
// don't do anything if special key pressed to prevent from overriding default browser actions
// e.g. in Chrome on Mac cmd+arrow-left returns to previous page
if( !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey ) {
if(e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
self[keydownAction]();
}
}
},
_onGlobalClick = function(e) {
if(!e) {
return;
}
// don't allow click event to pass through when triggering after drag or some other gesture
if(_moved || _zoomStarted || _mainScrollAnimating || _verticalDragInitiated) {
e.preventDefault();
e.stopPropagation();
}
},
_updatePageScrollOffset = function() {
self.setScrollOffset(0, framework.getScrollY());
};
// Micro animation engine
var _animations = {},
_numAnimations = 0,
_stopAnimation = function(name) {
if(_animations[name]) {
if(_animations[name].raf) {
_cancelAF( _animations[name].raf );
}
_numAnimations--;
delete _animations[name];
}
},
_registerStartAnimation = function(name) {
if(_animations[name]) {
_stopAnimation(name);
}
if(!_animations[name]) {
_numAnimations++;
_animations[name] = {};
}
},
_stopAllAnimations = function() {
for (var prop in _animations) {
if( _animations.hasOwnProperty( prop ) ) {
_stopAnimation(prop);
}
}
},
_animateProp = function(name, b, endProp, d, easingFn, onUpdate, onComplete) {
var startAnimTime = _getCurrentTime(), t;
_registerStartAnimation(name);
var animloop = function(){
if ( _animations[name] ) {
t = _getCurrentTime() - startAnimTime; // time diff
//b - beginning (start prop)
//d - anim duration
if ( t >= d ) {
_stopAnimation(name);
onUpdate(endProp);
if(onComplete) {
onComplete();
}
return;
}
onUpdate( (endProp - b) * easingFn(t/d) + b );
_animations[name].raf = _requestAF(animloop);
}
};
animloop();
};
var publicMethods = {
// make a few local variables and functions public
shout: _shout,
listen: _listen,
viewportSize: _viewportSize,
options: _options,
isMainScrollAnimating: function() {
return _mainScrollAnimating;
},
getZoomLevel: function() {
return _currZoomLevel;
},
getCurrentIndex: function() {
return _currentItemIndex;
},
isDragging: function() {
return _isDragging;
},
isZooming: function() {
return _isZooming;
},
setScrollOffset: function(x,y) {
_offset.x = x;
_currentWindowScrollY = _offset.y = y;
_shout('updateScrollOffset', _offset);
},
applyZoomPan: function(zoomLevel,panX,panY,allowRenderResolution) {
_panOffset.x = panX;
_panOffset.y = panY;
_currZoomLevel = zoomLevel;
_applyCurrentZoomPan( allowRenderResolution );
},
init: function() {
if(_isOpen || _isDestroying) {
return;
}
var i;
self.framework = framework; // basic functionality
self.template = template; // root DOM element of PhotoSwipe
self.bg = framework.getChildByClass(template, 'pswp__bg');
_initalClassName = template.className;
_isOpen = true;
_features = framework.detectFeatures();
_requestAF = _features.raf;
_cancelAF = _features.caf;
_transformKey = _features.transform;
_oldIE = _features.oldIE;
self.scrollWrap = framework.getChildByClass(template, 'pswp__scroll-wrap');
self.container = framework.getChildByClass(self.scrollWrap, 'pswp__container');
_containerStyle = self.container.style; // for fast access
// Objects that hold slides (there are only 3 in DOM)
self.itemHolders = _itemHolders = [
{el:self.container.children[0] , wrap:0, index: -1},
{el:self.container.children[1] , wrap:0, index: -1},
{el:self.container.children[2] , wrap:0, index: -1}
];
// hide nearby item holders until initial zoom animation finishes (to avoid extra Paints)
_itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'none';
_setupTransforms();
// Setup global events
_globalEventHandlers = {
resize: self.updateSize,
scroll: _updatePageScrollOffset,
keydown: _onKeyDown,
click: _onGlobalClick
};
// disable show/hide effects on old browsers that don't support CSS animations or transforms,
// old IOS, Android and Opera mobile. Blackberry seems to work fine, even older models.
var oldPhone = _features.isOldIOSPhone || _features.isOldAndroid || _features.isMobileOpera;
if(!_features.animationName || !_features.transform || oldPhone) {
_options.showAnimationDuration = _options.hideAnimationDuration = 0;
}
// init modules
for(i = 0; i < _modules.length; i++) {
self['init' + _modules[i]]();
}
// init
if(UiClass) {
var ui = self.ui = new UiClass(self, framework);
ui.init();
}
_shout('firstUpdate');
_currentItemIndex = _currentItemIndex || _options.index || 0;
// validate index
if( isNaN(_currentItemIndex) || _currentItemIndex < 0 || _currentItemIndex >= _getNumItems() ) {
_currentItemIndex = 0;
}
self.currItem = _getItemAt( _currentItemIndex );
if(_features.isOldIOSPhone || _features.isOldAndroid) {
_isFixedPosition = false;
}
template.setAttribute('aria-hidden', 'false');
if(_options.modal) {
if(!_isFixedPosition) {
template.style.position = 'absolute';
template.style.top = framework.getScrollY() + 'px';
} else {
template.style.position = 'fixed';
}
}
if(_currentWindowScrollY === undefined) {
_shout('initialLayout');
_currentWindowScrollY = _initalWindowScrollY = framework.getScrollY();
}
// add classes to root element of PhotoSwipe
var rootClasses = 'pswp--open ';
if(_options.mainClass) {
rootClasses += _options.mainClass + ' ';
}
if(_options.showHideOpacity) {
rootClasses += 'pswp--animate_opacity ';
}
rootClasses += _likelyTouchDevice ? 'pswp--touch' : 'pswp--notouch';
rootClasses += _features.animationName ? ' pswp--css_animation' : '';
rootClasses += _features.svg ? ' pswp--svg' : '';
framework.addClass(template, rootClasses);
self.updateSize();
// initial update
_containerShiftIndex = -1;
_indexDiff = null;
for(i = 0; i < NUM_HOLDERS; i++) {
_setTranslateX( (i+_containerShiftIndex) * _slideSize.x, _itemHolders[i].el.style);
}
if(!_oldIE) {
framework.bind(self.scrollWrap, _downEvents, self); // no dragging for old IE
}
_listen('initialZoomInEnd', function() {
self.setContent(_itemHolders[0], _currentItemIndex-1);
self.setContent(_itemHolders[2], _currentItemIndex+1);
_itemHolders[0].el.style.display = _itemHolders[2].el.style.display = 'block';
if(_options.focus) {
// focus causes layout,
// which causes lag during the animation,
// that's why we delay it untill the initial zoom transition ends
template.focus();
}
_bindEvents();
});
// set content for center slide (first time)
self.setContent(_itemHolders[1], _currentItemIndex);
self.updateCurrItem();
_shout('afterInit');
if(!_isFixedPosition) {
// On all versions of iOS lower than 8.0, we check size of viewport every second.
//
// This is done to detect when Safari top & bottom bars appear,
// as this action doesn't trigger any events (like resize).
//
// On iOS8 they fixed this.
//
// 10 Nov 2014: iOS 7 usage ~40%. iOS 8 usage 56%.
_updateSizeInterval = setInterval(function() {
if(!_numAnimations && !_isDragging && !_isZooming && (_currZoomLevel === self.currItem.initialZoomLevel) ) {
self.updateSize();
}
}, 1000);
}
framework.addClass(template, 'pswp--visible');
},
// Close the gallery, then destroy it
close: function() {
if(!_isOpen) {
return;
}
_isOpen = false;
_isDestroying = true;
_shout('close');
_unbindEvents();
_showOrHide(self.currItem, null, true, self.destroy);
},
// destroys the gallery (unbinds events, cleans up intervals and timeouts to avoid memory leaks)
destroy: function() {
_shout('destroy');
if(_showOrHideTimeout) {
clearTimeout(_showOrHideTimeout);
}
template.setAttribute('aria-hidden', 'true');
template.className = _initalClassName;
if(_updateSizeInterval) {
clearInterval(_updateSizeInterval);
}
framework.unbind(self.scrollWrap, _downEvents, self);
// we unbind scroll event at the end, as closing animation may depend on it
framework.unbind(window, 'scroll', self);
_stopDragUpdateLoop();
_stopAllAnimations();
_listeners = null;
},
/**
* Pan image to position
* @param {Number} x
* @param {Number} y
* @param {Boolean} force Will ignore bounds if set to true.
*/
panTo: function(x,y,force) {
if(!force) {
if(x > _currPanBounds.min.x) {
x = _currPanBounds.min.x;
} else if(x < _currPanBounds.max.x) {
x = _currPanBounds.max.x;
}
if(y > _currPanBounds.min.y) {
y = _currPanBounds.min.y;
} else if(y < _currPanBounds.max.y) {
y = _currPanBounds.max.y;
}
}
_panOffset.x = x;
_panOffset.y = y;
_applyCurrentZoomPan();
},
handleEvent: function (e) {
e = e || window.event;
if(_globalEventHandlers[e.type]) {
_globalEventHandlers[e.type](e);
}
},
goTo: function(index) {
index = _getLoopedId(index);
var diff = index - _currentItemIndex;
_indexDiff = diff;
_currentItemIndex = index;
self.currItem = _getItemAt( _currentItemIndex );
_currPositionIndex -= diff;
_moveMainScroll(_slideSize.x * _currPositionIndex);
_stopAllAnimations();
_mainScrollAnimating = false;
self.updateCurrItem();
},
next: function() {
self.goTo( _currentItemIndex + 1);
},
prev: function() {
self.goTo( _currentItemIndex - 1);
},
// update current zoom/pan objects
updateCurrZoomItem: function(emulateSetContent) {
if(emulateSetContent) {
_shout('beforeChange', 0);
}
// itemHolder[1] is middle (current) item
if(_itemHolders[1].el.children.length) {
var zoomElement = _itemHolders[1].el.children[0];
if( framework.hasClass(zoomElement, 'pswp__zoom-wrap') ) {
_currZoomElementStyle = zoomElement.style;
} else {
_currZoomElementStyle = null;
}
} else {
_currZoomElementStyle = null;
}
_currPanBounds = self.currItem.bounds;
_startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;
_panOffset.x = _currPanBounds.center.x;
_panOffset.y = _currPanBounds.center.y;
if(emulateSetContent) {
_shout('afterChange');
}
},
invalidateCurrItems: function() {
_itemsNeedUpdate = true;
for(var i = 0; i < NUM_HOLDERS; i++) {
if( _itemHolders[i].item ) {
_itemHolders[i].item.needsUpdate = true;
}
}
},
updateCurrItem: function(beforeAnimation) {
if(_indexDiff === 0) {
return;
}
var diffAbs = Math.abs(_indexDiff),
tempHolder;
if(beforeAnimation && diffAbs < 2) {
return;
}
self.currItem = _getItemAt( _currentItemIndex );
_renderMaxResolution = false;
_shout('beforeChange', _indexDiff);
if(diffAbs >= NUM_HOLDERS) {
_containerShiftIndex += _indexDiff + (_indexDiff > 0 ? -NUM_HOLDERS : NUM_HOLDERS);
diffAbs = NUM_HOLDERS;
}
for(var i = 0; i < diffAbs; i++) {
if(_indexDiff > 0) {
tempHolder = _itemHolders.shift();
_itemHolders[NUM_HOLDERS-1] = tempHolder; // move first to last
_containerShiftIndex++;
_setTranslateX( (_containerShiftIndex+2) * _slideSize.x, tempHolder.el.style);
self.setContent(tempHolder, _currentItemIndex - diffAbs + i + 1 + 1);
} else {
tempHolder = _itemHolders.pop();
_itemHolders.unshift( tempHolder ); // move last to first
_containerShiftIndex--;
_setTranslateX( _containerShiftIndex * _slideSize.x, tempHolder.el.style);
self.setContent(tempHolder, _currentItemIndex + diffAbs - i - 1 - 1);
}
}
// reset zoom/pan on previous item
if(_currZoomElementStyle && Math.abs(_indexDiff) === 1) {
var prevItem = _getItemAt(_prevItemIndex);
if(prevItem.initialZoomLevel !== _currZoomLevel) {
_calculateItemSize(prevItem , _viewportSize );
_setImageSize(prevItem);
_applyZoomPanToItem( prevItem );
}
}
// reset diff after update
_indexDiff = 0;
self.updateCurrZoomItem();
_prevItemIndex = _currentItemIndex;
_shout('afterChange');
},
updateSize: function(force) {
if(!_isFixedPosition && _options.modal) {
var windowScrollY = framework.getScrollY();
if(_currentWindowScrollY !== windowScrollY) {
template.style.top = windowScrollY + 'px';
_currentWindowScrollY = windowScrollY;
}
if(!force && _windowVisibleSize.x === window.innerWidth && _windowVisibleSize.y === window.innerHeight) {
return;
}
_windowVisibleSize.x = window.innerWidth;
_windowVisibleSize.y = window.innerHeight;
//template.style.width = _windowVisibleSize.x + 'px';
template.style.height = _windowVisibleSize.y + 'px';
}
_viewportSize.x = self.scrollWrap.clientWidth;
_viewportSize.y = self.scrollWrap.clientHeight;
_updatePageScrollOffset();
_slideSize.x = _viewportSize.x + Math.round(_viewportSize.x * _options.spacing);
_slideSize.y = _viewportSize.y;
_moveMainScroll(_slideSize.x * _currPositionIndex);
_shout('beforeResize'); // even may be used for example to switch image sources
// don't re-calculate size on inital size update
if(_containerShiftIndex !== undefined) {
var holder,
item,
hIndex;
for(var i = 0; i < NUM_HOLDERS; i++) {
holder = _itemHolders[i];
_setTranslateX( (i+_containerShiftIndex) * _slideSize.x, holder.el.style);
hIndex = _currentItemIndex+i-1;
if(_options.loop && _getNumItems() > 2) {
hIndex = _getLoopedId(hIndex);
}
// update zoom level on items and refresh source (if needsUpdate)
item = _getItemAt( hIndex );
// re-render gallery item if `needsUpdate`,
// or doesn't have `bounds` (entirely new slide object)
if( item && (_itemsNeedUpdate || item.needsUpdate || !item.bounds) ) {
self.cleanSlide( item );
self.setContent( holder, hIndex );
// if "center" slide
if(i === 1) {
self.currItem = item;
self.updateCurrZoomItem(true);
}
item.needsUpdate = false;
} else if(holder.index === -1 && hIndex >= 0) {
// add content first time
self.setContent( holder, hIndex );
}
if(item && item.container) {
_calculateItemSize(item, _viewportSize);
_setImageSize(item);
_applyZoomPanToItem( item );
}
}
_itemsNeedUpdate = false;
}
_startZoomLevel = _currZoomLevel = self.currItem.initialZoomLevel;
_currPanBounds = self.currItem.bounds;
if(_currPanBounds) {
_panOffset.x = _currPanBounds.center.x;
_panOffset.y = _currPanBounds.center.y;
_applyCurrentZoomPan( true );
}
_shout('resize');
},
// Zoom current item to
zoomTo: function(destZoomLevel, centerPoint, speed, easingFn, updateFn) {
/*
if(destZoomLevel === 'fit') {
destZoomLevel = self.currItem.fitRatio;
} else if(destZoomLevel === 'fill') {
destZoomLevel = self.currItem.fillRatio;
}
*/
if(centerPoint) {
_startZoomLevel = _currZoomLevel;
_midZoomPoint.x = Math.abs(centerPoint.x) - _panOffset.x ;
_midZoomPoint.y = Math.abs(centerPoint.y) - _panOffset.y ;
_equalizePoints(_startPanOffset, _panOffset);
}
var destPanBounds = _calculatePanBounds(destZoomLevel, false),
destPanOffset = {};
_modifyDestPanOffset('x', destPanBounds, destPanOffset, destZoomLevel);
_modifyDestPanOffset('y', destPanBounds, destPanOffset, destZoomLevel);
var initialZoomLevel = _currZoomLevel;
var initialPanOffset = {
x: _panOffset.x,
y: _panOffset.y
};
_roundPoint(destPanOffset);
var onUpdate = function(now) {
if(now === 1) {
_currZoomLevel = destZoomLevel;
_panOffset.x = destPanOffset.x;
_panOffset.y = destPanOffset.y;
} else {
_currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;
_panOffset.x = (destPanOffset.x - initialPanOffset.x) * now + initialPanOffset.x;
_panOffset.y = (destPanOffset.y - initialPanOffset.y) * now + initialPanOffset.y;
}
if(updateFn) {
updateFn(now);
}
_applyCurrentZoomPan( now === 1 );
};
if(speed) {
_animateProp('customZoomTo', 0, 1, speed, easingFn || framework.easing.sine.inOut, onUpdate);
} else {
onUpdate(1);
}
}
};
/*>>core*/
/*>>gestures*/
/**
* Mouse/touch/pointer event handlers.
*
* separated from @core.js for readability
*/
var MIN_SWIPE_DISTANCE = 30,
DIRECTION_CHECK_OFFSET = 10; // amount of pixels to drag to determine direction of swipe
var _gestureStartTime,
_gestureCheckSpeedTime,
// pool of objects that are used during dragging of zooming
p = {}, // first point
p2 = {}, // second point (for zoom gesture)
delta = {},
_currPoint = {},
_startPoint = {},
_currPointers = [],
_startMainScrollPos = {},
_releaseAnimData,
_posPoints = [], // array of points during dragging, used to determine type of gesture
_tempPoint = {},
_isZoomingIn,
_verticalDragInitiated,
_oldAndroidTouchEndTimeout,
_currZoomedItemIndex = 0,
_centerPoint = _getEmptyPoint(),
_lastReleaseTime = 0,
_isDragging, // at least one pointer is down
_isMultitouch, // at least two _pointers are down
_zoomStarted, // zoom level changed during zoom gesture
_moved,
_dragAnimFrame,
_mainScrollShifted,
_currentPoints, // array of current touch points
_isZooming,
_currPointsDistance,
_startPointsDistance,
_currPanBounds,
_mainScrollPos = _getEmptyPoint(),
_currZoomElementStyle,
_mainScrollAnimating, // true, if animation after swipe gesture is running
_midZoomPoint = _getEmptyPoint(),
_currCenterPoint = _getEmptyPoint(),
_direction,
_isFirstMove,
_opacityChanged,
_bgOpacity,
_wasOverInitialZoom,
_isEqualPoints = function(p1, p2) {
return p1.x === p2.x && p1.y === p2.y;
},
_isNearbyPoints = function(touch0, touch1) {
return Math.abs(touch0.x - touch1.x) < DOUBLE_TAP_RADIUS && Math.abs(touch0.y - touch1.y) < DOUBLE_TAP_RADIUS;
},
_calculatePointsDistance = function(p1, p2) {
_tempPoint.x = Math.abs( p1.x - p2.x );
_tempPoint.y = Math.abs( p1.y - p2.y );
return Math.sqrt(_tempPoint.x * _tempPoint.x + _tempPoint.y * _tempPoint.y);
},
_stopDragUpdateLoop = function() {
if(_dragAnimFrame) {
_cancelAF(_dragAnimFrame);
_dragAnimFrame = null;
}
},
_dragUpdateLoop = function() {
if(_isDragging) {
_dragAnimFrame = _requestAF(_dragUpdateLoop);
_renderMovement();
}
},
_canPan = function() {
return !(_options.scaleMode === 'fit' && _currZoomLevel === self.currItem.initialZoomLevel);
},
// find the closest parent DOM element
_closestElement = function(el, fn) {
if(!el || el === document) {
return false;
}
// don't search elements above pswp__scroll-wrap
if(el.getAttribute('class') && el.getAttribute('class').indexOf('pswp__scroll-wrap') > -1 ) {
return false;
}
if( fn(el) ) {
return el;
}
return _closestElement(el.parentNode, fn);
},
_preventObj = {},
_preventDefaultEventBehaviour = function(e, isDown) {
_preventObj.prevent = !_closestElement(e.target, _options.isClickableElement);
_shout('preventDragEvent', e, isDown, _preventObj);
return _preventObj.prevent;
},
_convertTouchToPoint = function(touch, p) {
p.x = touch.pageX;
p.y = touch.pageY;
p.id = touch.identifier;
return p;
},
_findCenterOfPoints = function(p1, p2, pCenter) {
pCenter.x = (p1.x + p2.x) * 0.5;
pCenter.y = (p1.y + p2.y) * 0.5;
},
_pushPosPoint = function(time, x, y) {
if(time - _gestureCheckSpeedTime > 50) {
var o = _posPoints.length > 2 ? _posPoints.shift() : {};
o.x = x;
o.y = y;
_posPoints.push(o);
_gestureCheckSpeedTime = time;
}
},
_calculateVerticalDragOpacityRatio = function() {
var yOffset = _panOffset.y - self.currItem.initialPosition.y; // difference between initial and current position
return 1 - Math.abs( yOffset / (_viewportSize.y / 2) );
},
// points pool, reused during touch events
_ePoint1 = {},
_ePoint2 = {},
_tempPointsArr = [],
_tempCounter,
_getTouchPoints = function(e) {
// clean up previous points, without recreating array
while(_tempPointsArr.length > 0) {
_tempPointsArr.pop();
}
if(!_pointerEventEnabled) {
if(e.type.indexOf('touch') > -1) {
if(e.touches && e.touches.length > 0) {
_tempPointsArr[0] = _convertTouchToPoint(e.touches[0], _ePoint1);
if(e.touches.length > 1) {
_tempPointsArr[1] = _convertTouchToPoint(e.touches[1], _ePoint2);
}
}
} else {
_ePoint1.x = e.pageX;
_ePoint1.y = e.pageY;
_ePoint1.id = '';
_tempPointsArr[0] = _ePoint1;//_ePoint1;
}
} else {
_tempCounter = 0;
// we can use forEach, as pointer events are supported only in modern browsers
_currPointers.forEach(function(p) {
if(_tempCounter === 0) {
_tempPointsArr[0] = p;
} else if(_tempCounter === 1) {
_tempPointsArr[1] = p;
}
_tempCounter++;
});
}
return _tempPointsArr;
},
_panOrMoveMainScroll = function(axis, delta) {
var panFriction,
overDiff = 0,
newOffset = _panOffset[axis] + delta[axis],
startOverDiff,
dir = delta[axis] > 0,
newMainScrollPosition = _mainScrollPos.x + delta.x,
mainScrollDiff = _mainScrollPos.x - _startMainScrollPos.x,
newPanPos,
newMainScrollPos;
// calculate fdistance over the bounds and friction
if(newOffset > _currPanBounds.min[axis] || newOffset < _currPanBounds.max[axis]) {
panFriction = _options.panEndFriction;
// Linear increasing of friction, so at 1/4 of viewport it's at max value.
// Looks not as nice as was expected. Left for history.
// panFriction = (1 - (_panOffset[axis] + delta[axis] + panBounds.min[axis]) / (_viewportSize[axis] / 4) );
} else {
panFriction = 1;
}
newOffset = _panOffset[axis] + delta[axis] * panFriction;
// move main scroll or start panning
if(_options.allowPanToNext || _currZoomLevel === self.currItem.initialZoomLevel) {
if(!_currZoomElementStyle) {
newMainScrollPos = newMainScrollPosition;
} else if(_direction === 'h' && axis === 'x' && !_zoomStarted ) {
if(dir) {
if(newOffset > _currPanBounds.min[axis]) {
panFriction = _options.panEndFriction;
overDiff = _currPanBounds.min[axis] - newOffset;
startOverDiff = _currPanBounds.min[axis] - _startPanOffset[axis];
}
// drag right
if( (startOverDiff <= 0 || mainScrollDiff < 0) && _getNumItems() > 1 ) {
newMainScrollPos = newMainScrollPosition;
if(mainScrollDiff < 0 && newMainScrollPosition > _startMainScrollPos.x) {
newMainScrollPos = _startMainScrollPos.x;
}
} else {
if(_currPanBounds.min.x !== _currPanBounds.max.x) {
newPanPos = newOffset;
}
}
} else {
if(newOffset < _currPanBounds.max[axis] ) {
panFriction =_options.panEndFriction;
overDiff = newOffset - _currPanBounds.max[axis];
startOverDiff = _startPanOffset[axis] - _currPanBounds.max[axis];
}
if( (startOverDiff <= 0 || mainScrollDiff > 0) && _getNumItems() > 1 ) {
newMainScrollPos = newMainScrollPosition;
if(mainScrollDiff > 0 && newMainScrollPosition < _startMainScrollPos.x) {
newMainScrollPos = _startMainScrollPos.x;
}
} else {
if(_currPanBounds.min.x !== _currPanBounds.max.x) {
newPanPos = newOffset;
}
}
}
//
}
if(axis === 'x') {
if(newMainScrollPos !== undefined) {
_moveMainScroll(newMainScrollPos, true);
if(newMainScrollPos === _startMainScrollPos.x) {
_mainScrollShifted = false;
} else {
_mainScrollShifted = true;
}
}
if(_currPanBounds.min.x !== _currPanBounds.max.x) {
if(newPanPos !== undefined) {
_panOffset.x = newPanPos;
} else if(!_mainScrollShifted) {
_panOffset.x += delta.x * panFriction;
}
}
return newMainScrollPos !== undefined;
}
}
if(!_mainScrollAnimating) {
if(!_mainScrollShifted) {
if(_currZoomLevel > self.currItem.fitRatio) {
_panOffset[axis] += delta[axis] * panFriction;
}
}
}
},
// Pointerdown/touchstart/mousedown handler
_onDragStart = function(e) {
// Allow dragging only via left mouse button.
// As this handler is not added in IE8 - we ignore e.which
//
// http://www.quirksmode.org/js/events_properties.html
// https://developer.mozilla.org/en-US/docs/Web/API/event.button
if(e.type === 'mousedown' && e.button > 0 ) {
return;
}
if(_initialZoomRunning) {
e.preventDefault();
return;
}
if(_oldAndroidTouchEndTimeout && e.type === 'mousedown') {
return;
}
if(_preventDefaultEventBehaviour(e, true)) {
e.preventDefault();
}
_shout('pointerDown');
if(_pointerEventEnabled) {
var pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');
if(pointerIndex < 0) {
pointerIndex = _currPointers.length;
}
_currPointers[pointerIndex] = {x:e.pageX, y:e.pageY, id: e.pointerId};
}
var startPointsList = _getTouchPoints(e),
numPoints = startPointsList.length;
_currentPoints = null;
_stopAllAnimations();
// init drag
if(!_isDragging || numPoints === 1) {
_isDragging = _isFirstMove = true;
framework.bind(window, _upMoveEvents, self);
_isZoomingIn =
_wasOverInitialZoom =
_opacityChanged =
_verticalDragInitiated =
_mainScrollShifted =
_moved =
_isMultitouch =
_zoomStarted = false;
_direction = null;
_shout('firstTouchStart', startPointsList);
_equalizePoints(_startPanOffset, _panOffset);
_currPanDist.x = _currPanDist.y = 0;
_equalizePoints(_currPoint, startPointsList[0]);
_equalizePoints(_startPoint, _currPoint);
//_equalizePoints(_startMainScrollPos, _mainScrollPos);
_startMainScrollPos.x = _slideSize.x * _currPositionIndex;
_posPoints = [{
x: _currPoint.x,
y: _currPoint.y
}];
_gestureCheckSpeedTime = _gestureStartTime = _getCurrentTime();
//_mainScrollAnimationEnd(true);
_calculatePanBounds( _currZoomLevel, true );
// Start rendering
_stopDragUpdateLoop();
_dragUpdateLoop();
}
// init zoom
if(!_isZooming && numPoints > 1 && !_mainScrollAnimating && !_mainScrollShifted) {
_startZoomLevel = _currZoomLevel;
_zoomStarted = false; // true if zoom changed at least once
_isZooming = _isMultitouch = true;
_currPanDist.y = _currPanDist.x = 0;
_equalizePoints(_startPanOffset, _panOffset);
_equalizePoints(p, startPointsList[0]);
_equalizePoints(p2, startPointsList[1]);
_findCenterOfPoints(p, p2, _currCenterPoint);
_midZoomPoint.x = Math.abs(_currCenterPoint.x) - _panOffset.x;
_midZoomPoint.y = Math.abs(_currCenterPoint.y) - _panOffset.y;
_currPointsDistance = _startPointsDistance = _calculatePointsDistance(p, p2);
}
},
// Pointermove/touchmove/mousemove handler
_onDragMove = function(e) {
e.preventDefault();
if(_pointerEventEnabled) {
var pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');
if(pointerIndex > -1) {
var p = _currPointers[pointerIndex];
p.x = e.pageX;
p.y = e.pageY;
}
}
if(_isDragging) {
var touchesList = _getTouchPoints(e);
if(!_direction && !_moved && !_isZooming) {
if(_mainScrollPos.x !== _slideSize.x * _currPositionIndex) {
// if main scroll position is shifted – direction is always horizontal
_direction = 'h';
} else {
var diff = Math.abs(touchesList[0].x - _currPoint.x) - Math.abs(touchesList[0].y - _currPoint.y);
// check the direction of movement
if(Math.abs(diff) >= DIRECTION_CHECK_OFFSET) {
_direction = diff > 0 ? 'h' : 'v';
_currentPoints = touchesList;
}
}
} else {
_currentPoints = touchesList;
}
}
},
//
_renderMovement = function() {
if(!_currentPoints) {
return;
}
var numPoints = _currentPoints.length;
if(numPoints === 0) {
return;
}
_equalizePoints(p, _currentPoints[0]);
delta.x = p.x - _currPoint.x;
delta.y = p.y - _currPoint.y;
if(_isZooming && numPoints > 1) {
// Handle behaviour for more than 1 point
_currPoint.x = p.x;
_currPoint.y = p.y;
// check if one of two points changed
if( !delta.x && !delta.y && _isEqualPoints(_currentPoints[1], p2) ) {
return;
}
_equalizePoints(p2, _currentPoints[1]);
if(!_zoomStarted) {
_zoomStarted = true;
_shout('zoomGestureStarted');
}
// Distance between two points
var pointsDistance = _calculatePointsDistance(p,p2);
var zoomLevel = _calculateZoomLevel(pointsDistance);
// slightly over the of initial zoom level
if(zoomLevel > self.currItem.initialZoomLevel + self.currItem.initialZoomLevel / 15) {
_wasOverInitialZoom = true;
}
// Apply the friction if zoom level is out of the bounds
var zoomFriction = 1,
minZoomLevel = _getMinZoomLevel(),
maxZoomLevel = _getMaxZoomLevel();
if ( zoomLevel < minZoomLevel ) {
if(_options.pinchToClose && !_wasOverInitialZoom && _startZoomLevel <= self.currItem.initialZoomLevel) {
// fade out background if zooming out
var minusDiff = minZoomLevel - zoomLevel;
var percent = 1 - minusDiff / (minZoomLevel / 1.2);
_applyBgOpacity(percent);
_shout('onPinchClose', percent);
_opacityChanged = true;
} else {
zoomFriction = (minZoomLevel - zoomLevel) / minZoomLevel;
if(zoomFriction > 1) {
zoomFriction = 1;
}
zoomLevel = minZoomLevel - zoomFriction * (minZoomLevel / 3);
}
} else if ( zoomLevel > maxZoomLevel ) {
// 1.5 - extra zoom level above the max. E.g. if max is x6, real max 6 + 1.5 = 7.5
zoomFriction = (zoomLevel - maxZoomLevel) / ( minZoomLevel * 6 );
if(zoomFriction > 1) {
zoomFriction = 1;
}
zoomLevel = maxZoomLevel + zoomFriction * minZoomLevel;
}
if(zoomFriction < 0) {
zoomFriction = 0;
}
// distance between touch points after friction is applied
_currPointsDistance = pointsDistance;
// _centerPoint - The point in the middle of two pointers
_findCenterOfPoints(p, p2, _centerPoint);
// paning with two pointers pressed
_currPanDist.x += _centerPoint.x - _currCenterPoint.x;
_currPanDist.y += _centerPoint.y - _currCenterPoint.y;
_equalizePoints(_currCenterPoint, _centerPoint);
_panOffset.x = _calculatePanOffset('x', zoomLevel);
_panOffset.y = _calculatePanOffset('y', zoomLevel);
_isZoomingIn = zoomLevel > _currZoomLevel;
_currZoomLevel = zoomLevel;
_applyCurrentZoomPan();
} else {
// handle behaviour for one point (dragging or panning)
if(!_direction) {
return;
}
if(_isFirstMove) {
_isFirstMove = false;
// subtract drag distance that was used during the detection direction
if( Math.abs(delta.x) >= DIRECTION_CHECK_OFFSET) {
delta.x -= _currentPoints[0].x - _startPoint.x;
}
if( Math.abs(delta.y) >= DIRECTION_CHECK_OFFSET) {
delta.y -= _currentPoints[0].y - _startPoint.y;
}
}
_currPoint.x = p.x;
_currPoint.y = p.y;
// do nothing if pointers position hasn't changed
if(delta.x === 0 && delta.y === 0) {
return;
}
if(_direction === 'v' && _options.closeOnVerticalDrag) {
if(!_canPan()) {
_currPanDist.y += delta.y;
_panOffset.y += delta.y;
var opacityRatio = _calculateVerticalDragOpacityRatio();
_verticalDragInitiated = true;
_shout('onVerticalDrag', opacityRatio);
_applyBgOpacity(opacityRatio);
_applyCurrentZoomPan();
return ;
}
}
_pushPosPoint(_getCurrentTime(), p.x, p.y);
_moved = true;
_currPanBounds = self.currItem.bounds;
var mainScrollChanged = _panOrMoveMainScroll('x', delta);
if(!mainScrollChanged) {
_panOrMoveMainScroll('y', delta);
_roundPoint(_panOffset);
_applyCurrentZoomPan();
}
}
},
// Pointerup/pointercancel/touchend/touchcancel/mouseup event handler
_onDragRelease = function(e) {
if(_features.isOldAndroid ) {
if(_oldAndroidTouchEndTimeout && e.type === 'mouseup') {
return;
}
// on Android (v4.1, 4.2, 4.3 & possibly older)
// ghost mousedown/up event isn't preventable via e.preventDefault,
// which causes fake mousedown event
// so we block mousedown/up for 600ms
if( e.type.indexOf('touch') > -1 ) {
clearTimeout(_oldAndroidTouchEndTimeout);
_oldAndroidTouchEndTimeout = setTimeout(function() {
_oldAndroidTouchEndTimeout = 0;
}, 600);
}
}
_shout('pointerUp');
if(_preventDefaultEventBehaviour(e, false)) {
e.preventDefault();
}
var releasePoint;
if(_pointerEventEnabled) {
var pointerIndex = framework.arraySearch(_currPointers, e.pointerId, 'id');
if(pointerIndex > -1) {
releasePoint = _currPointers.splice(pointerIndex, 1)[0];
if(navigator.pointerEnabled) {
releasePoint.type = e.pointerType || 'mouse';
} else {
var MSPOINTER_TYPES = {
4: 'mouse', // event.MSPOINTER_TYPE_MOUSE
2: 'touch', // event.MSPOINTER_TYPE_TOUCH
3: 'pen' // event.MSPOINTER_TYPE_PEN
};
releasePoint.type = MSPOINTER_TYPES[e.pointerType];
if(!releasePoint.type) {
releasePoint.type = e.pointerType || 'mouse';
}
}
}
}
var touchList = _getTouchPoints(e),
gestureType,
numPoints = touchList.length;
if(e.type === 'mouseup') {
numPoints = 0;
}
// Do nothing if there were 3 touch points or more
if(numPoints === 2) {
_currentPoints = null;
return true;
}
// if second pointer released
if(numPoints === 1) {
_equalizePoints(_startPoint, touchList[0]);
}
// pointer hasn't moved, send "tap release" point
if(numPoints === 0 && !_direction && !_mainScrollAnimating) {
if(!releasePoint) {
if(e.type === 'mouseup') {
releasePoint = {x: e.pageX, y: e.pageY, type:'mouse'};
} else if(e.changedTouches && e.changedTouches[0]) {
releasePoint = {x: e.changedTouches[0].pageX, y: e.changedTouches[0].pageY, type:'touch'};
}
}
_shout('touchRelease', e, releasePoint);
}
// Difference in time between releasing of two last touch points (zoom gesture)
var releaseTimeDiff = -1;
// Gesture completed, no pointers left
if(numPoints === 0) {
_isDragging = false;
framework.unbind(window, _upMoveEvents, self);
_stopDragUpdateLoop();
if(_isZooming) {
// Two points released at the same time
releaseTimeDiff = 0;
} else if(_lastReleaseTime !== -1) {
releaseTimeDiff = _getCurrentTime() - _lastReleaseTime;
}
}
_lastReleaseTime = numPoints === 1 ? _getCurrentTime() : -1;
if(releaseTimeDiff !== -1 && releaseTimeDiff < 150) {
gestureType = 'zoom';
} else {
gestureType = 'swipe';
}
if(_isZooming && numPoints < 2) {
_isZooming = false;
// Only second point released
if(numPoints === 1) {
gestureType = 'zoomPointerUp';
}
_shout('zoomGestureEnded');
}
_currentPoints = null;
if(!_moved && !_zoomStarted && !_mainScrollAnimating && !_verticalDragInitiated) {
// nothing to animate
return;
}
_stopAllAnimations();
if(!_releaseAnimData) {
_releaseAnimData = _initDragReleaseAnimationData();
}
_releaseAnimData.calculateSwipeSpeed('x');
if(_verticalDragInitiated) {
var opacityRatio = _calculateVerticalDragOpacityRatio();
if(opacityRatio < _options.verticalDragRange) {
self.close();
} else {
var initalPanY = _panOffset.y,
initialBgOpacity = _bgOpacity;
_animateProp('verticalDrag', 0, 1, 300, framework.easing.cubic.out, function(now) {
_panOffset.y = (self.currItem.initialPosition.y - initalPanY) * now + initalPanY;
_applyBgOpacity( (1 - initialBgOpacity) * now + initialBgOpacity );
_applyCurrentZoomPan();
});
_shout('onVerticalDrag', 1);
}
return;
}
// main scroll
if( (_mainScrollShifted || _mainScrollAnimating) && numPoints === 0) {
var itemChanged = _finishSwipeMainScrollGesture(gestureType, _releaseAnimData);
if(itemChanged) {
return;
}
gestureType = 'zoomPointerUp';
}
// prevent zoom/pan animation when main scroll animation runs
if(_mainScrollAnimating) {
return;
}
// Complete simple zoom gesture (reset zoom level if it's out of the bounds)
if(gestureType !== 'swipe') {
_completeZoomGesture();
return;
}
// Complete pan gesture if main scroll is not shifted, and it's possible to pan current image
if(!_mainScrollShifted && _currZoomLevel > self.currItem.fitRatio) {
_completePanGesture(_releaseAnimData);
}
},
// Returns object with data about gesture
// It's created only once and then reused
_initDragReleaseAnimationData = function() {
// temp local vars
var lastFlickDuration,
tempReleasePos;
// s = this
var s = {
lastFlickOffset: {},
lastFlickDist: {},
lastFlickSpeed: {},
slowDownRatio: {},
slowDownRatioReverse: {},
speedDecelerationRatio: {},
speedDecelerationRatioAbs: {},
distanceOffset: {},
backAnimDestination: {},
backAnimStarted: {},
calculateSwipeSpeed: function(axis) {
if( _posPoints.length > 1) {
lastFlickDuration = _getCurrentTime() - _gestureCheckSpeedTime + 50;
tempReleasePos = _posPoints[_posPoints.length-2][axis];
} else {
lastFlickDuration = _getCurrentTime() - _gestureStartTime; // total gesture duration
tempReleasePos = _startPoint[axis];
}
s.lastFlickOffset[axis] = _currPoint[axis] - tempReleasePos;
s.lastFlickDist[axis] = Math.abs(s.lastFlickOffset[axis]);
if(s.lastFlickDist[axis] > 20) {
s.lastFlickSpeed[axis] = s.lastFlickOffset[axis] / lastFlickDuration;
} else {
s.lastFlickSpeed[axis] = 0;
}
if( Math.abs(s.lastFlickSpeed[axis]) < 0.1 ) {
s.lastFlickSpeed[axis] = 0;
}
s.slowDownRatio[axis] = 0.95;
s.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];
s.speedDecelerationRatio[axis] = 1;
},
calculateOverBoundsAnimOffset: function(axis, speed) {
if(!s.backAnimStarted[axis]) {
if(_panOffset[axis] > _currPanBounds.min[axis]) {
s.backAnimDestination[axis] = _currPanBounds.min[axis];
} else if(_panOffset[axis] < _currPanBounds.max[axis]) {
s.backAnimDestination[axis] = _currPanBounds.max[axis];
}
if(s.backAnimDestination[axis] !== undefined) {
s.slowDownRatio[axis] = 0.7;
s.slowDownRatioReverse[axis] = 1 - s.slowDownRatio[axis];
if(s.speedDecelerationRatioAbs[axis] < 0.05) {
s.lastFlickSpeed[axis] = 0;
s.backAnimStarted[axis] = true;
_animateProp('bounceZoomPan'+axis,_panOffset[axis],
s.backAnimDestination[axis],
speed || 300,
framework.easing.sine.out,
function(pos) {
_panOffset[axis] = pos;
_applyCurrentZoomPan();
}
);
}
}
}
},
// Reduces the speed by slowDownRatio (per 10ms)
calculateAnimOffset: function(axis) {
if(!s.backAnimStarted[axis]) {
s.speedDecelerationRatio[axis] = s.speedDecelerationRatio[axis] * (s.slowDownRatio[axis] +
s.slowDownRatioReverse[axis] -
s.slowDownRatioReverse[axis] * s.timeDiff / 10);
s.speedDecelerationRatioAbs[axis] = Math.abs(s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis]);
s.distanceOffset[axis] = s.lastFlickSpeed[axis] * s.speedDecelerationRatio[axis] * s.timeDiff;
_panOffset[axis] += s.distanceOffset[axis];
}
},
panAnimLoop: function() {
if ( _animations.zoomPan ) {
_animations.zoomPan.raf = _requestAF(s.panAnimLoop);
s.now = _getCurrentTime();
s.timeDiff = s.now - s.lastNow;
s.lastNow = s.now;
s.calculateAnimOffset('x');
s.calculateAnimOffset('y');
_applyCurrentZoomPan();
s.calculateOverBoundsAnimOffset('x');
s.calculateOverBoundsAnimOffset('y');
if (s.speedDecelerationRatioAbs.x < 0.05 && s.speedDecelerationRatioAbs.y < 0.05) {
// round pan position
_panOffset.x = Math.round(_panOffset.x);
_panOffset.y = Math.round(_panOffset.y);
_applyCurrentZoomPan();
_stopAnimation('zoomPan');
return;
}
}
}
};
return s;
},
_completePanGesture = function(animData) {
// calculate swipe speed for Y axis (paanning)
animData.calculateSwipeSpeed('y');
_currPanBounds = self.currItem.bounds;
animData.backAnimDestination = {};
animData.backAnimStarted = {};
// Avoid acceleration animation if speed is too low
if(Math.abs(animData.lastFlickSpeed.x) <= 0.05 && Math.abs(animData.lastFlickSpeed.y) <= 0.05 ) {
animData.speedDecelerationRatioAbs.x = animData.speedDecelerationRatioAbs.y = 0;
// Run pan drag release animation. E.g. if you drag image and release finger without momentum.
animData.calculateOverBoundsAnimOffset('x');
animData.calculateOverBoundsAnimOffset('y');
return true;
}
// Animation loop that controls the acceleration after pan gesture ends
_registerStartAnimation('zoomPan');
animData.lastNow = _getCurrentTime();
animData.panAnimLoop();
},
_finishSwipeMainScrollGesture = function(gestureType, _releaseAnimData) {
var itemChanged;
if(!_mainScrollAnimating) {
_currZoomedItemIndex = _currentItemIndex;
}
var itemsDiff;
if(gestureType === 'swipe') {
var totalShiftDist = _currPoint.x - _startPoint.x,
isFastLastFlick = _releaseAnimData.lastFlickDist.x < 10;
// if container is shifted for more than MIN_SWIPE_DISTANCE,
// and last flick gesture was in right direction
if(totalShiftDist > MIN_SWIPE_DISTANCE &&
(isFastLastFlick || _releaseAnimData.lastFlickOffset.x > 20) ) {
// go to prev item
itemsDiff = -1;
} else if(totalShiftDist < -MIN_SWIPE_DISTANCE &&
(isFastLastFlick || _releaseAnimData.lastFlickOffset.x < -20) ) {
// go to next item
itemsDiff = 1;
}
}
var nextCircle;
if(itemsDiff) {
_currentItemIndex += itemsDiff;
if(_currentItemIndex < 0) {
_currentItemIndex = _options.loop ? _getNumItems()-1 : 0;
nextCircle = true;
} else if(_currentItemIndex >= _getNumItems()) {
_currentItemIndex = _options.loop ? 0 : _getNumItems()-1;
nextCircle = true;
}
if(!nextCircle || _options.loop) {
_indexDiff += itemsDiff;
_currPositionIndex -= itemsDiff;
itemChanged = true;
}
}
var animateToX = _slideSize.x * _currPositionIndex;
var animateToDist = Math.abs( animateToX - _mainScrollPos.x );
var finishAnimDuration;
if(!itemChanged && animateToX > _mainScrollPos.x !== _releaseAnimData.lastFlickSpeed.x > 0) {
// "return to current" duration, e.g. when dragging from slide 0 to -1
finishAnimDuration = 333;
} else {
finishAnimDuration = Math.abs(_releaseAnimData.lastFlickSpeed.x) > 0 ?
animateToDist / Math.abs(_releaseAnimData.lastFlickSpeed.x) :
333;
finishAnimDuration = Math.min(finishAnimDuration, 400);
finishAnimDuration = Math.max(finishAnimDuration, 250);
}
if(_currZoomedItemIndex === _currentItemIndex) {
itemChanged = false;
}
_mainScrollAnimating = true;
_shout('mainScrollAnimStart');
_animateProp('mainScroll', _mainScrollPos.x, animateToX, finishAnimDuration, framework.easing.cubic.out,
_moveMainScroll,
function() {
_stopAllAnimations();
_mainScrollAnimating = false;
_currZoomedItemIndex = -1;
if(itemChanged || _currZoomedItemIndex !== _currentItemIndex) {
self.updateCurrItem();
}
_shout('mainScrollAnimComplete');
}
);
if(itemChanged) {
self.updateCurrItem(true);
}
return itemChanged;
},
_calculateZoomLevel = function(touchesDistance) {
return 1 / _startPointsDistance * touchesDistance * _startZoomLevel;
},
// Resets zoom if it's out of bounds
_completeZoomGesture = function() {
var destZoomLevel = _currZoomLevel,
minZoomLevel = _getMinZoomLevel(),
maxZoomLevel = _getMaxZoomLevel();
if ( _currZoomLevel < minZoomLevel ) {
destZoomLevel = minZoomLevel;
} else if ( _currZoomLevel > maxZoomLevel ) {
destZoomLevel = maxZoomLevel;
}
var destOpacity = 1,
onUpdate,
initialOpacity = _bgOpacity;
if(_opacityChanged && !_isZoomingIn && !_wasOverInitialZoom && _currZoomLevel < minZoomLevel) {
//_closedByScroll = true;
self.close();
return true;
}
if(_opacityChanged) {
onUpdate = function(now) {
_applyBgOpacity( (destOpacity - initialOpacity) * now + initialOpacity );
};
}
self.zoomTo(destZoomLevel, 0, 200, framework.easing.cubic.out, onUpdate);
return true;
};
_registerModule('Gestures', {
publicMethods: {
initGestures: function() {
// helper function that builds touch/pointer/mouse events
var addEventNames = function(pref, down, move, up, cancel) {
_dragStartEvent = pref + down;
_dragMoveEvent = pref + move;
_dragEndEvent = pref + up;
if(cancel) {
_dragCancelEvent = pref + cancel;
} else {
_dragCancelEvent = '';
}
};
_pointerEventEnabled = _features.pointerEvent;
if(_pointerEventEnabled && _features.touch) {
// we don't need touch events, if browser supports pointer events
_features.touch = false;
}
if(_pointerEventEnabled) {
if(navigator.pointerEnabled) {
addEventNames('pointer', 'down', 'move', 'up', 'cancel');
} else {
// IE10 pointer events are case-sensitive
addEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel');
}
} else if(_features.touch) {
addEventNames('touch', 'start', 'move', 'end', 'cancel');
_likelyTouchDevice = true;
} else {
addEventNames('mouse', 'down', 'move', 'up');
}
_upMoveEvents = _dragMoveEvent + ' ' + _dragEndEvent + ' ' + _dragCancelEvent;
_downEvents = _dragStartEvent;
if(_pointerEventEnabled && !_likelyTouchDevice) {
_likelyTouchDevice = (navigator.maxTouchPoints > 1) || (navigator.msMaxTouchPoints > 1);
}
// make variable public
self.likelyTouchDevice = _likelyTouchDevice;
_globalEventHandlers[_dragStartEvent] = _onDragStart;
_globalEventHandlers[_dragMoveEvent] = _onDragMove;
_globalEventHandlers[_dragEndEvent] = _onDragRelease; // the Kraken
if(_dragCancelEvent) {
_globalEventHandlers[_dragCancelEvent] = _globalEventHandlers[_dragEndEvent];
}
// Bind mouse events on device with detected hardware touch support, in case it supports multiple types of input.
if(_features.touch) {
_downEvents += ' mousedown';
_upMoveEvents += ' mousemove mouseup';
_globalEventHandlers.mousedown = _globalEventHandlers[_dragStartEvent];
_globalEventHandlers.mousemove = _globalEventHandlers[_dragMoveEvent];
_globalEventHandlers.mouseup = _globalEventHandlers[_dragEndEvent];
}
if(!_likelyTouchDevice) {
// don't allow pan to next slide from zoomed state on Desktop
_options.allowPanToNext = false;
}
}
}
});
/*>>gestures*/
/*>>show-hide-transition*/
/**
* show-hide-transition.js:
*
* Manages initial opening or closing transition.
*
* If you're not planning to use transition for gallery at all,
* you may set options hideAnimationDuration and showAnimationDuration to 0,
* and just delete startAnimation function.
*
*/
var _showOrHideTimeout,
_showOrHide = function(item, img, out, completeFn) {
if(_showOrHideTimeout) {
clearTimeout(_showOrHideTimeout);
}
_initialZoomRunning = true;
_initialContentSet = true;
// dimensions of small thumbnail {x:,y:,w:}.
// Height is optional, as calculated based on large image.
var thumbBounds;
if(item.initialLayout) {
thumbBounds = item.initialLayout;
item.initialLayout = null;
} else {
thumbBounds = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);
}
var duration = out ? _options.hideAnimationDuration : _options.showAnimationDuration;
var onComplete = function() {
_stopAnimation('initialZoom');
if(!out) {
_applyBgOpacity(1);
if(img) {
img.style.display = 'block';
}
framework.addClass(template, 'pswp--animated-in');
_shout('initialZoom' + (out ? 'OutEnd' : 'InEnd'));
} else {
self.template.removeAttribute('style');
self.bg.removeAttribute('style');
}
if(completeFn) {
completeFn();
}
_initialZoomRunning = false;
};
// if bounds aren't provided, just open gallery without animation
if(!duration || !thumbBounds || thumbBounds.x === undefined) {
_shout('initialZoom' + (out ? 'Out' : 'In') );
_currZoomLevel = item.initialZoomLevel;
_equalizePoints(_panOffset, item.initialPosition );
_applyCurrentZoomPan();
template.style.opacity = out ? 0 : 1;
_applyBgOpacity(1);
if(duration) {
setTimeout(function() {
onComplete();
}, duration);
} else {
onComplete();
}
return;
}
var startAnimation = function() {
var closeWithRaf = _closedByScroll,
fadeEverything = !self.currItem.src || self.currItem.loadError || _options.showHideOpacity;
// apply hw-acceleration to image
if(item.miniImg) {
item.miniImg.style.webkitBackfaceVisibility = 'hidden';
}
if(!out) {
_currZoomLevel = thumbBounds.w / item.w;
_panOffset.x = thumbBounds.x;
_panOffset.y = thumbBounds.y - _initalWindowScrollY;
self[fadeEverything ? 'template' : 'bg'].style.opacity = 0.001;
_applyCurrentZoomPan();
}
_registerStartAnimation('initialZoom');
if(out && !closeWithRaf) {
framework.removeClass(template, 'pswp--animated-in');
}
if(fadeEverything) {
if(out) {
framework[ (closeWithRaf ? 'remove' : 'add') + 'Class' ](template, 'pswp--animate_opacity');
} else {
setTimeout(function() {
framework.addClass(template, 'pswp--animate_opacity');
}, 30);
}
}
_showOrHideTimeout = setTimeout(function() {
_shout('initialZoom' + (out ? 'Out' : 'In') );
if(!out) {
// "in" animation always uses CSS transitions (instead of rAF).
// CSS transition work faster here,
// as developer may also want to animate other things,
// like ui on top of sliding area, which can be animated just via CSS
_currZoomLevel = item.initialZoomLevel;
_equalizePoints(_panOffset, item.initialPosition );
_applyCurrentZoomPan();
_applyBgOpacity(1);
if(fadeEverything) {
template.style.opacity = 1;
} else {
_applyBgOpacity(1);
}
_showOrHideTimeout = setTimeout(onComplete, duration + 20);
} else {
// "out" animation uses rAF only when PhotoSwipe is closed by browser scroll, to recalculate position
var destZoomLevel = thumbBounds.w / item.w,
initialPanOffset = {
x: _panOffset.x,
y: _panOffset.y
},
initialZoomLevel = _currZoomLevel,
initalBgOpacity = _bgOpacity,
onUpdate = function(now) {
if(now === 1) {
_currZoomLevel = destZoomLevel;
_panOffset.x = thumbBounds.x;
_panOffset.y = thumbBounds.y - _currentWindowScrollY;
} else {
_currZoomLevel = (destZoomLevel - initialZoomLevel) * now + initialZoomLevel;
_panOffset.x = (thumbBounds.x - initialPanOffset.x) * now + initialPanOffset.x;
_panOffset.y = (thumbBounds.y - _currentWindowScrollY - initialPanOffset.y) * now + initialPanOffset.y;
}
_applyCurrentZoomPan();
if(fadeEverything) {
template.style.opacity = 1 - now;
} else {
_applyBgOpacity( initalBgOpacity - now * initalBgOpacity );
}
};
if(closeWithRaf) {
_animateProp('initialZoom', 0, 1, duration, framework.easing.cubic.out, onUpdate, onComplete);
} else {
onUpdate(1);
_showOrHideTimeout = setTimeout(onComplete, duration + 20);
}
}
}, out ? 25 : 90); // Main purpose of this delay is to give browser time to paint and
// create composite layers of PhotoSwipe UI parts (background, controls, caption, arrows).
// Which avoids lag at the beginning of scale transition.
};
startAnimation();
};
/*>>show-hide-transition*/
/*>>items-controller*/
/**
*
* Controller manages gallery items, their dimensions, and their content.
*
*/
var _items,
_tempPanAreaSize = {},
_imagesToAppendPool = [],
_initialContentSet,
_initialZoomRunning,
_controllerDefaultOptions = {
index: 0,
errorMsg: '<div class="pswp__error-msg"><a href="%url%" target="_blank">The image</a> could not be loaded.</div>',
forceProgressiveLoading: false, // TODO
preload: [1,1],
getNumItemsFn: function() {
return _items.length;
}
};
var _getItemAt,
_getNumItems,
_initialIsLoop,
_getZeroBounds = function() {
return {
center:{x:0,y:0},
max:{x:0,y:0},
min:{x:0,y:0}
};
},
_calculateSingleItemPanBounds = function(item, realPanElementW, realPanElementH ) {
var bounds = item.bounds;
// position of element when it's centered
bounds.center.x = Math.round((_tempPanAreaSize.x - realPanElementW) / 2);
bounds.center.y = Math.round((_tempPanAreaSize.y - realPanElementH) / 2) + item.vGap.top;
// maximum pan position
bounds.max.x = (realPanElementW > _tempPanAreaSize.x) ?
Math.round(_tempPanAreaSize.x - realPanElementW) :
bounds.center.x;
bounds.max.y = (realPanElementH > _tempPanAreaSize.y) ?
Math.round(_tempPanAreaSize.y - realPanElementH) + item.vGap.top :
bounds.center.y;
// minimum pan position
bounds.min.x = (realPanElementW > _tempPanAreaSize.x) ? 0 : bounds.center.x;
bounds.min.y = (realPanElementH > _tempPanAreaSize.y) ? item.vGap.top : bounds.center.y;
},
_calculateItemSize = function(item, viewportSize, zoomLevel) {
if (item.src && !item.loadError) {
var isInitial = !zoomLevel;
if(isInitial) {
if(!item.vGap) {
item.vGap = {top:0,bottom:0};
}
// allows overriding vertical margin for individual items
_shout('parseVerticalMargin', item);
}
_tempPanAreaSize.x = viewportSize.x;
_tempPanAreaSize.y = viewportSize.y - item.vGap.top - item.vGap.bottom;
if (isInitial) {
var hRatio = _tempPanAreaSize.x / item.w;
var vRatio = _tempPanAreaSize.y / item.h;
item.fitRatio = hRatio < vRatio ? hRatio : vRatio;
//item.fillRatio = hRatio > vRatio ? hRatio : vRatio;
var scaleMode = _options.scaleMode;
if (scaleMode === 'orig') {
zoomLevel = 1;
} else if (scaleMode === 'fit') {
zoomLevel = item.fitRatio;
}
if (zoomLevel > 1) {
zoomLevel = 1;
}
item.initialZoomLevel = zoomLevel;
if(!item.bounds) {
// reuse bounds object
item.bounds = _getZeroBounds();
}
}
if(!zoomLevel) {
return;
}
_calculateSingleItemPanBounds(item, item.w * zoomLevel, item.h * zoomLevel);
if (isInitial && zoomLevel === item.initialZoomLevel) {
item.initialPosition = item.bounds.center;
}
return item.bounds;
} else {
item.w = item.h = 0;
item.initialZoomLevel = item.fitRatio = 1;
item.bounds = _getZeroBounds();
item.initialPosition = item.bounds.center;
// if it's not image, we return zero bounds (content is not zoomable)
return item.bounds;
}
},
_appendImage = function(index, item, baseDiv, img, preventAnimation, keepPlaceholder) {
if(item.loadError) {
return;
}
if(img) {
item.imageAppended = true;
_setImageSize(item, img, (item === self.currItem && _renderMaxResolution) );
baseDiv.appendChild(img);
if(keepPlaceholder) {
setTimeout(function() {
if(item && item.loaded && item.placeholder) {
item.placeholder.style.display = 'none';
item.placeholder = null;
}
}, 500);
}
}
},
_preloadImage = function(item) {
item.loading = true;
item.loaded = false;
var img = item.img = framework.createEl('pswp__img', 'img');
var onComplete = function() {
item.loading = false;
item.loaded = true;
if(item.loadComplete) {
item.loadComplete(item);
} else {
item.img = null; // no need to store image object
}
img.onload = img.onerror = null;
img = null;
};
img.onload = onComplete;
img.onerror = function() {
item.loadError = true;
onComplete();
};
img.src = item.src;// + '?a=' + Math.random();
return img;
},
_checkForError = function(item, cleanUp) {
if(item.src && item.loadError && item.container) {
if(cleanUp) {
item.container.innerHTML = '';
}
item.container.innerHTML = _options.errorMsg.replace('%url%', item.src );
return true;
}
},
_setImageSize = function(item, img, maxRes) {
if(!item.src) {
return;
}
if(!img) {
img = item.container.lastChild;
}
var w = maxRes ? item.w : Math.round(item.w * item.fitRatio),
h = maxRes ? item.h : Math.round(item.h * item.fitRatio);
if(item.placeholder && !item.loaded) {
item.placeholder.style.width = w + 'px';
item.placeholder.style.height = h + 'px';
}
img.style.width = w + 'px';
img.style.height = h + 'px';
},
_appendImagesPool = function() {
if(_imagesToAppendPool.length) {
var poolItem;
for(var i = 0; i < _imagesToAppendPool.length; i++) {
poolItem = _imagesToAppendPool[i];
if( poolItem.holder.index === poolItem.index ) {
_appendImage(poolItem.index, poolItem.item, poolItem.baseDiv, poolItem.img, false, poolItem.clearPlaceholder);
}
}
_imagesToAppendPool = [];
}
};
_registerModule('Controller', {
publicMethods: {
lazyLoadItem: function(index) {
index = _getLoopedId(index);
var item = _getItemAt(index);
if(!item || ((item.loaded || item.loading) && !_itemsNeedUpdate)) {
return;
}
_shout('gettingData', index, item);
if (!item.src) {
return;
}
_preloadImage(item);
},
initController: function() {
framework.extend(_options, _controllerDefaultOptions, true);
self.items = _items = items;
_getItemAt = self.getItemAt;
_getNumItems = _options.getNumItemsFn; //self.getNumItems;
_initialIsLoop = _options.loop;
if(_getNumItems() < 3) {
_options.loop = false; // disable loop if less then 3 items
}
_listen('beforeChange', function(diff) {
var p = _options.preload,
isNext = diff === null ? true : (diff >= 0),
preloadBefore = Math.min(p[0], _getNumItems() ),
preloadAfter = Math.min(p[1], _getNumItems() ),
i;
for(i = 1; i <= (isNext ? preloadAfter : preloadBefore); i++) {
self.lazyLoadItem(_currentItemIndex+i);
}
for(i = 1; i <= (isNext ? preloadBefore : preloadAfter); i++) {
self.lazyLoadItem(_currentItemIndex-i);
}
});
_listen('initialLayout', function() {
self.currItem.initialLayout = _options.getThumbBoundsFn && _options.getThumbBoundsFn(_currentItemIndex);
});
_listen('mainScrollAnimComplete', _appendImagesPool);
_listen('initialZoomInEnd', _appendImagesPool);
_listen('destroy', function() {
var item;
for(var i = 0; i < _items.length; i++) {
item = _items[i];
// remove reference to DOM elements, for GC
if(item.container) {
item.container = null;
}
if(item.placeholder) {
item.placeholder = null;
}
if(item.img) {
item.img = null;
}
if(item.preloader) {
item.preloader = null;
}
if(item.loadError) {
item.loaded = item.loadError = false;
}
}
_imagesToAppendPool = null;
});
},
getItemAt: function(index) {
if (index >= 0) {
return _items[index] !== undefined ? _items[index] : false;
}
return false;
},
allowProgressiveImg: function() {
// 1. Progressive image loading isn't working on webkit/blink
// when hw-acceleration (e.g. translateZ) is applied to IMG element.
// That's why in PhotoSwipe parent element gets zoom transform, not image itself.
//
// 2. Progressive image loading sometimes blinks in webkit/blink when applying animation to parent element.
// That's why it's disabled on touch devices (mainly because of swipe transition)
//
// 3. Progressive image loading sometimes doesn't work in IE (up to 11).
// Don't allow progressive loading on non-large touch devices
return _options.forceProgressiveLoading || !_likelyTouchDevice || _options.mouseUsed || screen.width > 1200;
// 1200 - to eliminate touch devices with large screen (like Chromebook Pixel)
},
setContent: function(holder, index) {
if(_options.loop) {
index = _getLoopedId(index);
}
var prevItem = self.getItemAt(holder.index);
if(prevItem) {
prevItem.container = null;
}
var item = self.getItemAt(index),
img;
if(!item) {
holder.el.innerHTML = '';
return;
}
// allow to override data
_shout('gettingData', index, item);
holder.index = index;
holder.item = item;
// base container DIV is created only once for each of 3 holders
var baseDiv = item.container = framework.createEl('pswp__zoom-wrap');
if(!item.src && item.html) {
if(item.html.tagName) {
baseDiv.appendChild(item.html);
} else {
baseDiv.innerHTML = item.html;
}
}
_checkForError(item);
_calculateItemSize(item, _viewportSize);
if(item.src && !item.loadError && !item.loaded) {
item.loadComplete = function(item) {
// gallery closed before image finished loading
if(!_isOpen) {
return;
}
// check if holder hasn't changed while image was loading
if(holder && holder.index === index ) {
if( _checkForError(item, true) ) {
item.loadComplete = item.img = null;
_calculateItemSize(item, _viewportSize);
_applyZoomPanToItem(item);
if(holder.index === _currentItemIndex) {
// recalculate dimensions
self.updateCurrZoomItem();
}
return;
}
if( !item.imageAppended ) {
if(_features.transform && (_mainScrollAnimating || _initialZoomRunning) ) {
_imagesToAppendPool.push({
item:item,
baseDiv:baseDiv,
img:item.img,
index:index,
holder:holder,
clearPlaceholder:true
});
} else {
_appendImage(index, item, baseDiv, item.img, _mainScrollAnimating || _initialZoomRunning, true);
}
} else {
// remove preloader & mini-img
if(!_initialZoomRunning && item.placeholder) {
item.placeholder.style.display = 'none';
item.placeholder = null;
}
}
}
item.loadComplete = null;
item.img = null; // no need to store image element after it's added
_shout('imageLoadComplete', index, item);
};
if(framework.features.transform) {
var placeholderClassName = 'pswp__img pswp__img--placeholder';
placeholderClassName += (item.msrc ? '' : ' pswp__img--placeholder--blank');
var placeholder = framework.createEl(placeholderClassName, item.msrc ? 'img' : '');
if(item.msrc) {
placeholder.src = item.msrc;
}
_setImageSize(item, placeholder);
baseDiv.appendChild(placeholder);
item.placeholder = placeholder;
}
if(!item.loading) {
_preloadImage(item);
}
if( self.allowProgressiveImg() ) {
// just append image
if(!_initialContentSet && _features.transform) {
_imagesToAppendPool.push({
item:item,
baseDiv:baseDiv,
img:item.img,
index:index,
holder:holder
});
} else {
_appendImage(index, item, baseDiv, item.img, true, true);
}
}
} else if(item.src && !item.loadError) {
// image object is created every time, due to bugs of image loading & delay when switching images
img = framework.createEl('pswp__img', 'img');
img.style.opacity = 1;
img.src = item.src;
_setImageSize(item, img);
_appendImage(index, item, baseDiv, img, true);
}
if(!_initialContentSet && index === _currentItemIndex) {
_currZoomElementStyle = baseDiv.style;
_showOrHide(item, (img ||item.img) );
} else {
_applyZoomPanToItem(item);
}
holder.el.innerHTML = '';
holder.el.appendChild(baseDiv);
},
cleanSlide: function( item ) {
if(item.img ) {
item.img.onload = item.img.onerror = null;
}
item.loaded = item.loading = item.img = item.imageAppended = false;
}
}
});
/*>>items-controller*/
/*>>tap*/
/**
* tap.js:
*
* Displatches tap and double-tap events.
*
*/
var tapTimer,
tapReleasePoint = {},
_dispatchTapEvent = function(origEvent, releasePoint, pointerType) {
var e = document.createEvent( 'CustomEvent' ),
eDetail = {
origEvent:origEvent,
target:origEvent.target,
releasePoint: releasePoint,
pointerType:pointerType || 'touch'
};
e.initCustomEvent( 'pswpTap', true, true, eDetail );
origEvent.target.dispatchEvent(e);
};
_registerModule('Tap', {
publicMethods: {
initTap: function() {
_listen('firstTouchStart', self.onTapStart);
_listen('touchRelease', self.onTapRelease);
_listen('destroy', function() {
tapReleasePoint = {};
tapTimer = null;
});
},
onTapStart: function(touchList) {
if(touchList.length > 1) {
clearTimeout(tapTimer);
tapTimer = null;
}
},
onTapRelease: function(e, releasePoint) {
if(!releasePoint) {
return;
}
if(!_moved && !_isMultitouch && !_numAnimations) {
var p0 = releasePoint;
if(tapTimer) {
clearTimeout(tapTimer);
tapTimer = null;
// Check if taped on the same place
if ( _isNearbyPoints(p0, tapReleasePoint) ) {
_shout('doubleTap', p0);
return;
}
}
if(releasePoint.type === 'mouse') {
_dispatchTapEvent(e, releasePoint, 'mouse');
return;
}
var clickedTagName = e.target.tagName.toUpperCase();
// avoid double tap delay on buttons and elements that have class pswp__single-tap
if(clickedTagName === 'BUTTON' || framework.hasClass(e.target, 'pswp__single-tap') ) {
_dispatchTapEvent(e, releasePoint);
return;
}
_equalizePoints(tapReleasePoint, p0);
tapTimer = setTimeout(function() {
_dispatchTapEvent(e, releasePoint);
tapTimer = null;
}, 300);
}
}
}
});
/*>>tap*/
/*>>desktop-zoom*/
/**
*
* desktop-zoom.js:
*
* - Binds mousewheel event for paning zoomed image.
* - Manages "dragging", "zoomed-in", "zoom-out" classes.
* (which are used for cursors and zoom icon)
* - Adds toggleDesktopZoom function.
*
*/
var _wheelDelta;
_registerModule('DesktopZoom', {
publicMethods: {
initDesktopZoom: function() {
if(_oldIE) {
// no zoom for old IE (<=8)
return;
}
if(_likelyTouchDevice) {
// if detected hardware touch support, we wait until mouse is used,
// and only then apply desktop-zoom features
_listen('mouseUsed', function() {
self.setupDesktopZoom();
});
} else {
self.setupDesktopZoom(true);
}
},
setupDesktopZoom: function(onInit) {
_wheelDelta = {};
var events = 'wheel mousewheel DOMMouseScroll';
_listen('bindEvents', function() {
framework.bind(template, events, self.handleMouseWheel);
});
_listen('unbindEvents', function() {
if(_wheelDelta) {
framework.unbind(template, events, self.handleMouseWheel);
}
});
self.mouseZoomedIn = false;
var hasDraggingClass,
updateZoomable = function() {
if(self.mouseZoomedIn) {
framework.removeClass(template, 'pswp--zoomed-in');
self.mouseZoomedIn = false;
}
if(_currZoomLevel < 1) {
framework.addClass(template, 'pswp--zoom-allowed');
} else {
framework.removeClass(template, 'pswp--zoom-allowed');
}
removeDraggingClass();
},
removeDraggingClass = function() {
if(hasDraggingClass) {
framework.removeClass(template, 'pswp--dragging');
hasDraggingClass = false;
}
};
_listen('resize' , updateZoomable);
_listen('afterChange' , updateZoomable);
_listen('pointerDown', function() {
if(self.mouseZoomedIn) {
hasDraggingClass = true;
framework.addClass(template, 'pswp--dragging');
}
});
_listen('pointerUp', removeDraggingClass);
if(!onInit) {
updateZoomable();
}
},
handleMouseWheel: function(e) {
if(_currZoomLevel <= self.currItem.fitRatio) {
if( _options.modal ) {
if (!_options.closeOnScroll || _numAnimations || _isDragging) {
e.preventDefault();
} else if(_transformKey && Math.abs(e.deltaY) > 2) {
// close PhotoSwipe
// if browser supports transforms & scroll changed enough
_closedByScroll = true;
self.close();
}
}
return true;
}
// allow just one event to fire
e.stopPropagation();
// https://developer.mozilla.org/en-US/docs/Web/Events/wheel
_wheelDelta.x = 0;
if('deltaX' in e) {
if(e.deltaMode === 1 /* DOM_DELTA_LINE */) {
// 18 - average line height
_wheelDelta.x = e.deltaX * 18;
_wheelDelta.y = e.deltaY * 18;
} else {
_wheelDelta.x = e.deltaX;
_wheelDelta.y = e.deltaY;
}
} else if('wheelDelta' in e) {
if(e.wheelDeltaX) {
_wheelDelta.x = -0.16 * e.wheelDeltaX;
}
if(e.wheelDeltaY) {
_wheelDelta.y = -0.16 * e.wheelDeltaY;
} else {
_wheelDelta.y = -0.16 * e.wheelDelta;
}
} else if('detail' in e) {
_wheelDelta.y = e.detail;
} else {
return;
}
_calculatePanBounds(_currZoomLevel, true);
var newPanX = _panOffset.x - _wheelDelta.x,
newPanY = _panOffset.y - _wheelDelta.y;
// only prevent scrolling in nonmodal mode when not at edges
if (_options.modal ||
(
newPanX <= _currPanBounds.min.x && newPanX >= _currPanBounds.max.x &&
newPanY <= _currPanBounds.min.y && newPanY >= _currPanBounds.max.y
) ) {
e.preventDefault();
}
// TODO: use rAF instead of mousewheel?
self.panTo(newPanX, newPanY);
},
toggleDesktopZoom: function(centerPoint) {
centerPoint = centerPoint || {x:_viewportSize.x/2 + _offset.x, y:_viewportSize.y/2 + _offset.y };
var doubleTapZoomLevel = _options.getDoubleTapZoom(true, self.currItem);
var zoomOut = _currZoomLevel === doubleTapZoomLevel;
self.mouseZoomedIn = !zoomOut;
self.zoomTo(zoomOut ? self.currItem.initialZoomLevel : doubleTapZoomLevel, centerPoint, 333);
framework[ (!zoomOut ? 'add' : 'remove') + 'Class'](template, 'pswp--zoomed-in');
}
}
});
/*>>desktop-zoom*/
/*>>history*/
/**
*
* history.js:
*
* - Back button to close gallery.
*
* - Unique URL for each slide: example.com/&pid=1&gid=3
* (where PID is picture index, and GID and gallery index)
*
* - Switch URL when slides change.
*
*/
var _historyDefaultOptions = {
history: true,
galleryUID: 1
};
var _historyUpdateTimeout,
_hashChangeTimeout,
_hashAnimCheckTimeout,
_hashChangedByScript,
_hashChangedByHistory,
_hashReseted,
_initialHash,
_historyChanged,
_closedFromURL,
_urlChangedOnce,
_windowLoc,
_supportsPushState,
_getHash = function() {
return _windowLoc.hash.substring(1);
},
_cleanHistoryTimeouts = function() {
if(_historyUpdateTimeout) {
clearTimeout(_historyUpdateTimeout);
}
if(_hashAnimCheckTimeout) {
clearTimeout(_hashAnimCheckTimeout);
}
},
// pid - Picture index
// gid - Gallery index
_parseItemIndexFromURL = function() {
var hash = _getHash(),
params = {};
if(hash.length < 5) { // pid=1
return params;
}
var i, vars = hash.split('&');
for (i = 0; i < vars.length; i++) {
if(!vars[i]) {
continue;
}
var pair = vars[i].split('=');
if(pair.length < 2) {
continue;
}
params[pair[0]] = pair[1];
}
if(_options.galleryPIDs) {
// detect custom pid in hash and search for it among the items collection
var searchfor = params.pid;
params.pid = 0; // if custom pid cannot be found, fallback to the first item
for(i = 0; i < _items.length; i++) {
if(_items[i].pid === searchfor) {
params.pid = i;
break;
}
}
} else {
params.pid = parseInt(params.pid,10)-1;
}
if( params.pid < 0 ) {
params.pid = 0;
}
return params;
},
_updateHash = function() {
if(_hashAnimCheckTimeout) {
clearTimeout(_hashAnimCheckTimeout);
}
if(_numAnimations || _isDragging) {
// changing browser URL forces layout/paint in some browsers, which causes noticable lag during animation
// that's why we update hash only when no animations running
_hashAnimCheckTimeout = setTimeout(_updateHash, 500);
return;
}
if(_hashChangedByScript) {
clearTimeout(_hashChangeTimeout);
} else {
_hashChangedByScript = true;
}
var pid = (_currentItemIndex + 1);
var item = _getItemAt( _currentItemIndex );
if(item.hasOwnProperty('pid')) {
// carry forward any custom pid assigned to the item
pid = item.pid;
}
var newHash = _initialHash + '&' + 'gid=' + _options.galleryUID + '&' + 'pid=' + pid;
if(!_historyChanged) {
if(_windowLoc.hash.indexOf(newHash) === -1) {
_urlChangedOnce = true;
}
// first time - add new hisory record, then just replace
}
var newURL = _windowLoc.href.split('#')[0] + '#' + newHash;
if( _supportsPushState ) {
if('#' + newHash !== window.location.hash) {
history[_historyChanged ? 'replaceState' : 'pushState']('', document.title, newURL);
}
} else {
if(_historyChanged) {
_windowLoc.replace( newURL );
} else {
_windowLoc.hash = newHash;
}
}
_historyChanged = true;
_hashChangeTimeout = setTimeout(function() {
_hashChangedByScript = false;
}, 60);
};
_registerModule('History', {
publicMethods: {
initHistory: function() {
framework.extend(_options, _historyDefaultOptions, true);
if( !_options.history ) {
return;
}
_windowLoc = window.location;
_urlChangedOnce = false;
_closedFromURL = false;
_historyChanged = false;
_initialHash = _getHash();
_supportsPushState = ('pushState' in history);
if(_initialHash.indexOf('gid=') > -1) {
_initialHash = _initialHash.split('&gid=')[0];
_initialHash = _initialHash.split('?gid=')[0];
}
_listen('afterChange', self.updateURL);
_listen('unbindEvents', function() {
framework.unbind(window, 'hashchange', self.onHashChange);
});
var returnToOriginal = function() {
_hashReseted = true;
if(!_closedFromURL) {
if(_urlChangedOnce) {
history.back();
} else {
if(_initialHash) {
_windowLoc.hash = _initialHash;
} else {
if (_supportsPushState) {
// remove hash from url without refreshing it or scrolling to top
history.pushState('', document.title, _windowLoc.pathname + _windowLoc.search );
} else {
_windowLoc.hash = '';
}
}
}
}
_cleanHistoryTimeouts();
};
_listen('unbindEvents', function() {
if(_closedByScroll) {
// if PhotoSwipe is closed by scroll, we go "back" before the closing animation starts
// this is done to keep the scroll position
returnToOriginal();
}
});
_listen('destroy', function() {
if(!_hashReseted) {
returnToOriginal();
}
});
_listen('firstUpdate', function() {
_currentItemIndex = _parseItemIndexFromURL().pid;
});
var index = _initialHash.indexOf('pid=');
if(index > -1) {
_initialHash = _initialHash.substring(0, index);
if(_initialHash.slice(-1) === '&') {
_initialHash = _initialHash.slice(0, -1);
}
}
setTimeout(function() {
if(_isOpen) { // hasn't destroyed yet
framework.bind(window, 'hashchange', self.onHashChange);
}
}, 40);
},
onHashChange: function() {
if(_getHash() === _initialHash) {
_closedFromURL = true;
self.close();
return;
}
if(!_hashChangedByScript) {
_hashChangedByHistory = true;
self.goTo( _parseItemIndexFromURL().pid );
_hashChangedByHistory = false;
}
},
updateURL: function() {
// Delay the update of URL, to avoid lag during transition,
// and to not to trigger actions like "refresh page sound" or "blinking favicon" to often
_cleanHistoryTimeouts();
if(_hashChangedByHistory) {
return;
}
if(!_historyChanged) {
_updateHash(); // first time
} else {
_historyUpdateTimeout = setTimeout(_updateHash, 800);
}
}
}
});
/*>>history*/
framework.extend(self, publicMethods); };
return PhotoSwipe;
});
================================================
FILE: addons/photoswipe/PhotoSwipe/pswp.html
================================================
<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
<!-- Background of PhotoSwipe.
It's a separate element as animating opacity is faster than rgba(). -->
<div class="pswp__bg"></div>
<!-- Slides wrapper with overflow:hidden. -->
<div class="pswp__scroll-wrap">
<!-- Container that holds slides.
PhotoSwipe keeps only 3 of them in the DOM to save memory.
Don't modify these 3 pswp__item elements, data is added later on. -->
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
<div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar">
<!-- Controls are self-explanatory. Order can be changed. -->
<div class="pswp__counter"></div>
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
<button class="pswp__button pswp__button--share" title="Share"></button>
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
<!-- element will get class pswp__preloader - active when preloader is running -->
<div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div>
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class="pswp__share-tooltip"></div>
</div>
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
</button>
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
</button>
<div class="pswp__caption">
<div class="pswp__caption__center"></div>
</div>
</div>
</div>
</div>
================================================
FILE: addons/photoswipe/conf/info.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<addon version="0.2">
<title xml:lang="ko">넘겨보는 사진</title>
<title xml:lang="en">PhotoSwipe</title>
<description xml:lang="ko">
본문 이미지를 하나의 갤러리 처럼 볼 수 있도록 하는 애드온입니다.
</description>
<description xml:lang="en">
Swipe your images of a post on your screen.
</description>
<license>MIT License (codes from http://photoswipe.com/), GPLv2 (other codes by Rhymix contributors)</license>
<version>RX_VERSION</version>
<date>RX_CORE</date>
<author email_address="misol.kr@gmail.com" link="https://github.com/misol">
<name xml:lang="ko">misol</name>
<name xml:lang="en">misol</name>
</author>
<author email_address="devops@rhymix.org" link="https://github.com/rhymix">
<name xml:lang="ko">Rhymix contributors</name>
<name xml:lang="en">Rhymix contributors</name>
</author>
<extra_vars>
<var name="display_name" type="select">
<title xml:lang="ko">파일이름 출력 설정</title>
<title xml:lang="en">Display Filenames</title>
<description xml:lang="ko">넘겨보기 실행시 하단에 파일이름을 출력할 것인지 여부를 선택합니다. 기본값은 사용하도록 되어있습니다.</description>
<description xml:lang="en">Whether the PhotoSwipe displays the filenames or not. The default is to display.</description>
<options value="block">
<title xml:lang="ko">사용</title>
<title xml:lang="en">Display</title>
</options>
<options value="none">
<title xml:lang="ko">사용 안함</title>
<title xml:lang="en">Hide</title>
</options>
</var>
</extra_vars>
</addon>
================================================
FILE: addons/photoswipe/photoswipe.addon.php
================================================
<?php
/* Copyright (C) misol and Rhymix contributors */
if(!defined('RX_VERSION'))
{
exit();
}
/**
* @file rx_photoswipe.addon.php
* @author MinSoo Kim <misol.kr@gmail.com>
* @brief Add-on to highlight an activated image.
*/
if($called_position == 'after_module_proc' && Context::getResponseMethod() == "HTML" && Context::get('module') != 'admin' && !isCrawler())
{
Context::loadFile(array('./addons/photoswipe/PhotoSwipe/photoswipe.css', '', '', null), true);
Context::loadFile(array('./addons/photoswipe/PhotoSwipe/default-skin/default-skin.css', '', '', null), true);
Context::loadFile(array('./addons/photoswipe/PhotoSwipe/photoswipe.js', 'body', '', null), true);
Context::loadFile(array('./addons/photoswipe/PhotoSwipe/photoswipe-ui-default.js', 'body', '', null), true);
Context::loadFile(array('./addons/photoswipe/rx_photoswipe.js', 'body', '', null), true);
$footer = FileHandler::readFile('./addons/photoswipe/PhotoSwipe/pswp.html');
$style_display = isset($addon_info->display_name) ? "<style>.pswp__caption__center { display:{$addon_info->display_name} }</style>" : '<style>.pswp__caption__center { display:block }</style>';
Context::addHtmlFooter($style_display . $footer);
}
/* End of file photoswipe.addon.php */
/* Location: ./addons/photoswipe/photoswipe.addon.php */
================================================
FILE: addons/photoswipe/rx_photoswipe.js
================================================
/* Modified version of a http://photoswipe.com/documentation/getting-started.html example. Modified by misol for rhymix */
var getPSImageSize = function(el) {
var size = new Array();
size[0] = el.naturalWidth ? el.naturalWidth : (el.width ? el.width : 0);
size[1] = el.naturalHeight ? el.naturalHeight : (el.height ? el.height : 0);
if (!size[0] || !size[1]) {
var test = new Image();
test.src = el.src;
size[0] = test.naturalWidth ? test.naturalWidth : (test.width ? test.width : 1000);
size[1] = test.naturalHeight ? test.naturalHeight : (test.height ? test.height : 1000);
}
return size;
}
var initPhotoSwipeFromDOM = function(gallerySelector) {
// photoswipe will skip images that have these classes or are children of these elements.
var ps_skip_class = '.rx-escape, .photoswipe-escape',
ps_skip_elements_array = ['a', 'pre', 'xml', 'textarea', 'input', 'select', 'option', 'code', 'script', 'style', 'iframe', 'button', 'img', 'embed', 'object', 'ins'],
ps_skip_elements = '';
ps_skip_elements_array.forEach(function(el, i) { ps_skip_elements += el + ' img,'; });
// Photoswipe will enroll images that have this class, though the image is marked as skip item by criteria above.
var ps_enroll_class = '.photoswipe-images';
// CSS selector for photoswipe items.
var ps_find_selector = 'img:not(' + ps_skip_elements + ps_skip_class + '), img' + ps_enroll_class;
// parse slide data (url, title, size ...) from DOM elements
// (children of gallerySelector)
var parseThumbnailElements = function(el) {
var imgElements = $(el).find(ps_find_selector),
numNodes = imgElements.length,
items = [],
imgEl,
size,
item;
for(var i = 0; i < numNodes; i++) {
imgEl = imgElements.get(i); // <img> element
// include only element nodes
if (imgEl.nodeType !== 1 || !imgEl.src || !$(imgEl).attr('data-pswp-pid')) {
continue;
}
size = getPSImageSize(imgEl);
// create slide object
item = {
src: $(imgEl).attr('src'),
w: parseInt( size[0] , 10),
h: parseInt( size[1] , 10),
pid: $(imgEl).attr('data-pswp-pid')
};
var ps_skip_alt_class = '.photoswipe-no-caption';
if(imgEl.alt && !$(imgEl).is(ps_skip_alt_class)) {
item.title = imgEl.alt;
}
if(imgEl.title && !$(imgEl).is(ps_skip_alt_class)) {
item.title = imgEl.title;
}
item.el = imgEl; // save link to element for getThumbBoundsFn
items.push(item);
}
return items;
};
// find nearest parent element
var closest = function closest(el, fn) {
return el && ( fn(el) ? el : closest(el.parentNode, fn) );
};
// triggers when user clicks on thumbnail
var onThumbnailsClick = function(e) {
var eTarget = e.target || e.srcElement;
// find root element of slide
var clickedListItem = closest(eTarget, function(el) {
return (el.tagName && el.tagName.toUpperCase() === 'IMG' && el.hasAttribute('data-pswp-pid'));
});
if(!clickedListItem) {
return;
}
e = e || window.event;
e.preventDefault ? e.preventDefault() : e.returnValue = false;
// find index of clicked item by looping through all child nodes
// alternatively, you may define index via data- attribute
var clickedGallery = $(clickedListItem).closest(gallerySelector).get(0),
childNodes = $(clickedGallery).find(ps_find_selector),
numChildNodes = childNodes.length,
nodeIndex = 0,
index;
/*for (var i = 0; i < numChildNodes; i++) {
if($(childNodes[i]).attr('data-pswp-pid') === $(clickedListItem).attr('data-pswp-pid')) {
index = nodeIndex;
break;
}
nodeIndex++;
}*/
for (var i = 0; i < numChildNodes; i++) {
if(childNodes[i].nodeType !== 1 || !$(childNodes[i]).attr('data-pswp-pid')) {
continue;
}
if(childNodes[i] === clickedListItem) {
index = nodeIndex;
break;
}
nodeIndex++;
}
if(index >= 0) {
// open PhotoSwipe if valid index found
openPhotoSwipe( index, clickedGallery, false, false);
}
return false;
};
// parse picture index and gallery index from URL (#&pid=1&gid=2)
var photoswipeParseHash = function() {
var hash = window.location.hash.substring(1),
params = {};
if(hash.length < 5) {
return params;
}
var vars = hash.split('&');
for (var i = 0; i < vars.length; i++) {
if(!vars[i]) {
continue;
}
var pair = vars[i].split('=');
if(pair.length < 2) {
continue;
}
params[pair[0]] = pair[1];
}
if(params.gid) {
params.gid = parseInt(params.gid, 10);
}
return params;
};
var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) {
var pswpElement = document.querySelectorAll('.pswp')[0],
gallery,
options,
items;
items = parseThumbnailElements(galleryElement);
// define options (if needed)
options = {
// define gallery index (for URL)
galleryUID: galleryElement.getAttribute('data-pswp-uid'),
getThumbBoundsFn: function(index) {
// See Options -> getThumbBoundsFn section of documentation for more info
var thumbnail = items[index].el,
pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
rect = thumbnail.getBoundingClientRect();
return {x:rect.left, y:rect.top + pageYScroll, w:rect.width};
},
addCaptionHTMLFn: function(item, captionEl, isFake) {
if(!item.title) {
captionEl.children[0].innerText = '';
return false;
}
captionEl.children[0].innerHTML = item.title;
return true;
},
};
// PhotoSwipe opened from URL
if(fromURL) {
if(options.galleryPIDs) {
// parse real index when custom PIDs are used
// http://photoswipe.com/documentation/faq.html#custom-pid-in-url
for(var j = 0; j < items.length; j++) {
if(items[j].pid == index) {
options.index = j;
break;
}
}
} else {
// in URL indexes start from 1
options.index = parseInt(index, 10) - 1;
}
} else {
options.index = parseInt(index, 10);
}
// exit if index not found
if( isNaN(options.index) ) {
return;
}
if(disableAnimation) {
options.showAnimationDuration = 0;
}
// Pass data to PhotoSwipe and initialize it
gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);
gallery.init();
};
// loop through all gallery elements and bind events
var galleryElements = document.querySelectorAll
Showing preview only (278K chars total). Download the full file or copy to clipboard to get everything.
gitextract_2yj37nij/ ├── .editorconfig ├── .gitattributes ├── .github/ │ └── workflows/ │ ├── ci.yml │ ├── setup-mysql.sh │ └── setup-php.sh ├── .gitignore ├── .htaccess ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── addons/ │ ├── adminlogging/ │ │ ├── adminlogging.addon.php │ │ └── conf/ │ │ └── info.xml │ ├── autolink/ │ │ ├── autolink.addon.php │ │ ├── autolink.js │ │ ├── autolink.spec.html │ │ └── conf/ │ │ └── info.xml │ ├── counter/ │ │ ├── conf/ │ │ │ └── info.xml │ │ └── counter.addon.php │ ├── member_extra_info/ │ │ ├── conf/ │ │ │ └── info.xml │ │ ├── member_extra_info.addon.php │ │ └── member_extra_info.lib.php │ ├── photoswipe/ │ │ ├── PhotoSwipe/ │ │ │ ├── LICENSE │ │ │ ├── default-skin/ │ │ │ │ └── default-skin.css │ │ │ ├── photoswipe-ui-default.js │ │ │ ├── photoswipe.css │ │ │ ├── photoswipe.js │ │ │ └── pswp.html │ │ ├── conf/ │ │ │ └── info.xml │ │ ├── photoswipe.addon.php │ │ └── rx_photoswipe.js │ └── point_level_icon/ │ ├── conf/ │ │ └── info.xml │ ├── point_level_icon.addon.php │ └── point_level_icon.lib.php ├── classes/ │ ├── cache/ │ │ └── CacheHandler.class.php │ ├── context/ │ │ └── Context.class.php │ ├── db/ │ │ └── DB.class.php │ ├── display/ │ │ ├── DisplayHandler.class.php │ │ ├── HTMLDisplayHandler.php │ │ ├── JSCallbackDisplayHandler.php │ │ ├── JSONDisplayHandler.php │ │ ├── RawDisplayHandler.php │ │ ├── VirtualXMLDisplayHandler.php │ │ └── XMLDisplayHandler.php │ ├── editor/ │ │ └── EditorHandler.class.php │ ├── extravar/ │ │ └── Extravar.class.php │ ├── file/ │ │ ├── FileHandler.class.php │ │ └── FileObject.class.php │ ├── frontendfile/ │ │ └── FrontEndFileHandler.class.php │ ├── handler/ │ │ └── Handler.class.php │ ├── httprequest/ │ │ └── XEHttpRequest.class.php │ ├── mail/ │ │ └── Mail.class.php │ ├── mobile/ │ │ └── Mobile.class.php │ ├── module/ │ │ ├── ModuleHandler.class.php │ │ └── ModuleObject.class.php │ ├── object/ │ │ └── Object.class.php │ ├── page/ │ │ └── PageHandler.class.php │ ├── security/ │ │ ├── EmbedFilter.class.php │ │ ├── IpFilter.class.php │ │ ├── Password.class.php │ │ ├── Purifier.class.php │ │ ├── Security.class.php │ │ └── UploadFileFilter.class.php │ ├── template/ │ │ └── TemplateHandler.class.php │ ├── validator/ │ │ └── Validator.class.php │ ├── widget/ │ │ └── WidgetHandler.class.php │ └── xml/ │ ├── GeneralXmlParser.class.php │ ├── XmlGenerator.class.php │ ├── XmlJsFilter.class.php │ ├── XmlLangParser.class.php │ └── XmlParser.class.php ├── codeception.dist.yml ├── common/ │ ├── autoload.php │ ├── composer.json │ ├── constants.php │ ├── css/ │ │ ├── bootstrap-responsive.css │ │ ├── bootstrap.css │ │ ├── rhymix.scss │ │ └── xeicon/ │ │ ├── README.md │ │ └── xeicon.css │ ├── defaults/ │ │ ├── blacklist.php │ │ ├── cloudflare.php │ │ ├── config.php │ │ ├── countries.php │ │ ├── korea.ipv4.php │ │ ├── korea.ipv6.php │ │ ├── korea_ip_ranges/ │ │ │ ├── korea.ipv4.parser.php │ │ │ └── korea.ipv6.parser.php │ │ ├── locales.php │ │ ├── plugins.php │ │ ├── reserved.php │ │ └── whitelist.php │ ├── framework/ │ │ ├── Cache.php │ │ ├── Calendar.php │ │ ├── Config.php │ │ ├── Cookie.php │ │ ├── DB.php │ │ ├── DateTime.php │ │ ├── Debug.php │ │ ├── Exception.php │ │ ├── Formatter.php │ │ ├── HTTP.php │ │ ├── Image.php │ │ ├── Korea.php │ │ ├── Lang.php │ │ ├── MIME.php │ │ ├── Mail.php │ │ ├── Pagination.php │ │ ├── Password.php │ │ ├── Push.php │ │ ├── Queue.php │ │ ├── Request.php │ │ ├── Router.php │ │ ├── SMS.php │ │ ├── Security.php │ │ ├── Session.php │ │ ├── Storage.php │ │ ├── Template.php │ │ ├── Timer.php │ │ ├── UA.php │ │ ├── URL.php │ │ ├── drivers/ │ │ │ ├── CacheInterface.php │ │ │ ├── MailInterface.php │ │ │ ├── PushInterface.php │ │ │ ├── QueueInterface.php │ │ │ ├── SMSInterface.php │ │ │ ├── cache/ │ │ │ │ ├── apc.php │ │ │ │ ├── dummy.php │ │ │ │ ├── file.php │ │ │ │ ├── memcached.php │ │ │ │ ├── redis.php │ │ │ │ └── sqlite.php │ │ │ ├── mail/ │ │ │ │ ├── base.php │ │ │ │ ├── brevo.php │ │ │ │ ├── dummy.php │ │ │ │ ├── mailfunction.php │ │ │ │ ├── mailgun.php │ │ │ │ ├── mandrill.php │ │ │ │ ├── ncloud_mailer.php │ │ │ │ ├── postmark.php │ │ │ │ ├── sendgrid.php │ │ │ │ ├── ses.php │ │ │ │ ├── smtp.php │ │ │ │ ├── sparkpost.php │ │ │ │ └── woorimail.php │ │ │ ├── push/ │ │ │ │ ├── apns.php │ │ │ │ ├── base.php │ │ │ │ ├── fcm.php │ │ │ │ └── fcmv1.php │ │ │ ├── queue/ │ │ │ │ ├── db.php │ │ │ │ ├── dummy.php │ │ │ │ └── redis.php │ │ │ └── sms/ │ │ │ ├── base.php │ │ │ ├── coolsms.php │ │ │ ├── dummy.php │ │ │ ├── iwinv.php │ │ │ ├── ncloud_sens.php │ │ │ ├── ppurio.php │ │ │ ├── solapi.php │ │ │ └── twilio.php │ │ ├── exceptions/ │ │ │ ├── DBError.php │ │ │ ├── FeatureDisabled.php │ │ │ ├── InvalidRequest.php │ │ │ ├── MustLogin.php │ │ │ ├── NotPermitted.php │ │ │ ├── QueryError.php │ │ │ ├── SecurityViolation.php │ │ │ └── TargetNotFound.php │ │ ├── filters/ │ │ │ ├── FileContentFilter.php │ │ │ ├── FilenameFilter.php │ │ │ ├── HTMLFilter.php │ │ │ ├── IpFilter.php │ │ │ └── MediaFilter.php │ │ ├── helpers/ │ │ │ ├── CacheItemHelper.php │ │ │ ├── CacheItemPoolHelper.php │ │ │ ├── ConfigHelper.php │ │ │ ├── DBHelper.php │ │ │ ├── DBResultHelper.php │ │ │ ├── DBStmtHelper.php │ │ │ ├── HTTPHelper.php │ │ │ └── SessionHelper.php │ │ ├── i18n.php │ │ └── parsers/ │ │ ├── AddonInfoParser.php │ │ ├── BaseParser.php │ │ ├── ConfigParser.php │ │ ├── DBQueryParser.php │ │ ├── DBTableParser.php │ │ ├── EditorComponentParser.php │ │ ├── LangParser.php │ │ ├── LayoutInfoParser.php │ │ ├── ModuleActionParser.php │ │ ├── ModuleInfoParser.php │ │ ├── RulesetParser.php │ │ ├── SkinInfoParser.php │ │ ├── WidgetInfoParser.php │ │ ├── WidgetStyleInfoParser.php │ │ ├── XEXMLParser.php │ │ ├── XMLRPCParser.php │ │ ├── dbquery/ │ │ │ ├── ColumnRead.php │ │ │ ├── ColumnWrite.php │ │ │ ├── Condition.php │ │ │ ├── ConditionGroup.php │ │ │ ├── EmptyString.php │ │ │ ├── GroupBy.php │ │ │ ├── IndexHint.php │ │ │ ├── Navigation.php │ │ │ ├── NullValue.php │ │ │ ├── OrderBy.php │ │ │ ├── Query.php │ │ │ ├── Table.php │ │ │ └── VariableBase.php │ │ ├── dbtable/ │ │ │ ├── Column.php │ │ │ ├── Constraint.php │ │ │ ├── GeneratedColumn.php │ │ │ ├── Index.php │ │ │ └── Table.php │ │ └── template/ │ │ ├── TemplateParser_v1.php │ │ └── TemplateParser_v2.php │ ├── functions.php │ ├── js/ │ │ ├── common.js │ │ ├── debug.js │ │ ├── jquery-2.2.4.js │ │ ├── jquery-3.7.1.js │ │ ├── js_app.js │ │ ├── modernizr.js │ │ ├── plugins/ │ │ │ ├── blankshield/ │ │ │ │ └── plugin.load │ │ │ ├── ckeditor/ │ │ │ │ ├── ckeditor/ │ │ │ │ │ ├── CHANGES.md │ │ │ │ │ ├── LICENSE.md │ │ │ │ │ ├── README.md │ │ │ │ │ ├── SECURITY.md │ │ │ │ │ ├── adapters/ │ │ │ │ │ │ └── jquery.js │ │ │ │ │ ├── bender-runner.config.json │ │ │ │ │ ├── build-config.js │ │ │ │ │ ├── ckeditor.js │ │ │ │ │ ├── contents.css │ │ │ │ │ ├── lang/ │ │ │ │ │ │ ├── af.js │ │ │ │ │ │ ├── ar.js │ │ │ │ │ │ ├── az.js │ │ │ │ │ │ ├── bg.js │ │ │ │ │ │ ├── bn.js │ │ │ │ │ │ ├── bs.js │ │ │ │ │ │ ├── ca.js │ │ │ │ │ │ ├── cs.js │ │ │ │ │ │ ├── cy.js │ │ │ │ │ │ ├── da.js │ │ │ │ │ │ ├── de-ch.js │ │ │ │ │ │ ├── de.js │ │ │ │ │ │ ├── el.js │ │ │ │ │ │ ├── en-au.js │ │ │ │ │ │ ├── en-ca.js │ │ │ │ │ │ ├── en-gb.js │ │ │ │ │ │ ├── en.js │ │ │ │ │ │ ├── eo.js │ │ │ │ │ │ ├── es-mx.js │ │ │ │ │ │ ├── es.js │ │ │ │ │ │ ├── et.js │ │ │ │ │ │ ├── eu.js │ │ │ │ │ │ ├── fa.js │ │ │ │ │ │ ├── fi.js │ │ │ │ │ │ ├── fo.js │ │ │ │ │ │ ├── fr-ca.js │ │ │ │ │ │ ├── fr.js │ │ │ │ │ │ ├── gl.js │ │ │ │ │ │ ├── gu.js │ │ │ │ │ │ ├── he.js │ │ │ │ │ │ ├── hi.js │ │ │ │ │ │ ├── hr.js │ │ │ │ │ │ ├── hu.js │ │ │ │ │ │ ├── id.js │ │ │ │ │ │ ├── is.js │ │ │ │ │ │ ├── it.js │ │ │ │ │ │ ├── ja.js │ │ │ │ │ │ ├── ka.js │ │ │ │ │ │ ├── km.js │ │ │ │ │ │ ├── ko.js │ │ │ │ │ │ ├── ku.js │ │ │ │ │ │ ├── lt.js │ │ │ │ │ │ ├── lv.js │ │ │ │ │ │ ├── mk.js │ │ │ │ │ │ ├── mn.js │ │ │ │ │ │ ├── ms.js │ │ │ │ │ │ ├── nb.js │ │ │ │ │ │ ├── nl.js │ │ │ │ │ │ ├── no.js │ │ │ │ │ │ ├── oc.js │ │ │ │ │ │ ├── pl.js │ │ │ │ │ │ ├── pt-br.js │ │ │ │ │ │ ├── pt.js │ │ │ │ │ │ ├── ro.js │ │ │ │ │ │ ├── ru.js │ │ │ │ │ │ ├── si.js │ │ │ │ │ │ ├── sk.js │ │ │ │ │ │ ├── sl.js │ │ │ │ │ │ ├── sq.js │ │ │ │ │ │ ├── sr-latn.js │ │ │ │ │ │ ├── sr.js │ │ │ │ │ │ ├── sv.js │ │ │ │ │ │ ├── th.js │ │ │ │ │ │ ├── tr.js │ │ │ │ │ │ ├── tt.js │ │ │ │ │ │ ├── ug.js │ │ │ │ │ │ ├── uk.js │ │ │ │ │ │ ├── vi.js │ │ │ │ │ │ ├── zh-cn.js │ │ │ │ │ │ └── zh.js │ │ │ │ │ ├── plugins/ │ │ │ │ │ │ ├── a11yhelp/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ ├── a11yhelp.js │ │ │ │ │ │ │ └── lang/ │ │ │ │ │ │ │ ├── _translationstatus.txt │ │ │ │ │ │ │ ├── af.js │ │ │ │ │ │ │ ├── ar.js │ │ │ │ │ │ │ ├── az.js │ │ │ │ │ │ │ ├── bg.js │ │ │ │ │ │ │ ├── ca.js │ │ │ │ │ │ │ ├── cs.js │ │ │ │ │ │ │ ├── cy.js │ │ │ │ │ │ │ ├── da.js │ │ │ │ │ │ │ ├── de-ch.js │ │ │ │ │ │ │ ├── de.js │ │ │ │ │ │ │ ├── el.js │ │ │ │ │ │ │ ├── en-au.js │ │ │ │ │ │ │ ├── en-gb.js │ │ │ │ │ │ │ ├── en.js │ │ │ │ │ │ │ ├── eo.js │ │ │ │ │ │ │ ├── es-mx.js │ │ │ │ │ │ │ ├── es.js │ │ │ │ │ │ │ ├── et.js │ │ │ │ │ │ │ ├── eu.js │ │ │ │ │ │ │ ├── fa.js │ │ │ │ │ │ │ ├── fi.js │ │ │ │ │ │ │ ├── fo.js │ │ │ │ │ │ │ ├── fr-ca.js │ │ │ │ │ │ │ ├── fr.js │ │ │ │ │ │ │ ├── gl.js │ │ │ │ │ │ │ ├── gu.js │ │ │ │ │ │ │ ├── he.js │ │ │ │ │ │ │ ├── hi.js │ │ │ │ │ │ │ ├── hr.js │ │ │ │ │ │ │ ├── hu.js │ │ │ │ │ │ │ ├── id.js │ │ │ │ │ │ │ ├── it.js │ │ │ │ │ │ │ ├── ja.js │ │ │ │ │ │ │ ├── km.js │ │ │ │ │ │ │ ├── ko.js │ │ │ │ │ │ │ ├── ku.js │ │ │ │ │ │ │ ├── lt.js │ │ │ │ │ │ │ ├── lv.js │ │ │ │ │ │ │ ├── mk.js │ │ │ │ │ │ │ ├── mn.js │ │ │ │ │ │ │ ├── nb.js │ │ │ │ │ │ │ ├── nl.js │ │ │ │ │ │ │ ├── no.js │ │ │ │ │ │ │ ├── oc.js │ │ │ │ │ │ │ ├── pl.js │ │ │ │ │ │ │ ├── pt-br.js │ │ │ │ │ │ │ ├── pt.js │ │ │ │ │ │ │ ├── ro.js │ │ │ │ │ │ │ ├── ru.js │ │ │ │ │ │ │ ├── si.js │ │ │ │ │ │ │ ├── sk.js │ │ │ │ │ │ │ ├── sl.js │ │ │ │ │ │ │ ├── sq.js │ │ │ │ │ │ │ ├── sr-latn.js │ │ │ │ │ │ │ ├── sr.js │ │ │ │ │ │ │ ├── sv.js │ │ │ │ │ │ │ ├── th.js │ │ │ │ │ │ │ ├── tr.js │ │ │ │ │ │ │ ├── tt.js │ │ │ │ │ │ │ ├── ug.js │ │ │ │ │ │ │ ├── uk.js │ │ │ │ │ │ │ ├── vi.js │ │ │ │ │ │ │ ├── zh-cn.js │ │ │ │ │ │ │ └── zh.js │ │ │ │ │ │ ├── about/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── about.js │ │ │ │ │ │ ├── clipboard/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── paste.js │ │ │ │ │ │ ├── colordialog/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ ├── colordialog.css │ │ │ │ │ │ │ └── colordialog.js │ │ │ │ │ │ ├── copyformatting/ │ │ │ │ │ │ │ └── styles/ │ │ │ │ │ │ │ └── copyformatting.css │ │ │ │ │ │ ├── dialog/ │ │ │ │ │ │ │ ├── dialogDefinition.js │ │ │ │ │ │ │ └── styles/ │ │ │ │ │ │ │ └── dialog.css │ │ │ │ │ │ ├── div/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── div.js │ │ │ │ │ │ ├── divarea/ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── exportpdf/ │ │ │ │ │ │ │ ├── CHANGELOG.md │ │ │ │ │ │ │ ├── LICENSE.md │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── plugindefinition.js │ │ │ │ │ │ │ └── tests/ │ │ │ │ │ │ │ ├── _helpers/ │ │ │ │ │ │ │ │ └── tools.js │ │ │ │ │ │ │ ├── authentication.js │ │ │ │ │ │ │ ├── exportpdf.js │ │ │ │ │ │ │ ├── manual/ │ │ │ │ │ │ │ │ ├── configfilename.html │ │ │ │ │ │ │ │ ├── configfilename.md │ │ │ │ │ │ │ │ ├── emptyeditor.html │ │ │ │ │ │ │ │ ├── emptyeditor.md │ │ │ │ │ │ │ │ ├── integration.html │ │ │ │ │ │ │ │ ├── integration.md │ │ │ │ │ │ │ │ ├── integrations/ │ │ │ │ │ │ │ │ │ ├── easyimage.html │ │ │ │ │ │ │ │ │ └── easyimage.md │ │ │ │ │ │ │ │ ├── notifications.html │ │ │ │ │ │ │ │ ├── notifications.md │ │ │ │ │ │ │ │ ├── notificationsasync.html │ │ │ │ │ │ │ │ ├── notificationsasync.md │ │ │ │ │ │ │ │ ├── paperformat.html │ │ │ │ │ │ │ │ ├── paperformat.md │ │ │ │ │ │ │ │ ├── readonly.html │ │ │ │ │ │ │ │ ├── readonly.md │ │ │ │ │ │ │ │ ├── stylesheets.html │ │ │ │ │ │ │ │ ├── stylesheets.md │ │ │ │ │ │ │ │ ├── tokenfetching.html │ │ │ │ │ │ │ │ ├── tokenfetching.md │ │ │ │ │ │ │ │ ├── tokentwoeditorscorrect.html │ │ │ │ │ │ │ │ ├── tokentwoeditorscorrect.md │ │ │ │ │ │ │ │ ├── tokentwoeditorswrong.html │ │ │ │ │ │ │ │ ├── tokentwoeditorswrong.md │ │ │ │ │ │ │ │ ├── tokenwithouturl.html │ │ │ │ │ │ │ │ ├── tokenwithouturl.md │ │ │ │ │ │ │ │ ├── wrongendpoint.html │ │ │ │ │ │ │ │ └── wrongendpoint.md │ │ │ │ │ │ │ ├── notification.js │ │ │ │ │ │ │ ├── resourcespaths.js │ │ │ │ │ │ │ ├── statistics.js │ │ │ │ │ │ │ └── stylesheets.js │ │ │ │ │ │ ├── find/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── find.js │ │ │ │ │ │ ├── flash/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── flash.js │ │ │ │ │ │ ├── forms/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ ├── button.js │ │ │ │ │ │ │ ├── checkbox.js │ │ │ │ │ │ │ ├── form.js │ │ │ │ │ │ │ ├── hiddenfield.js │ │ │ │ │ │ │ ├── radio.js │ │ │ │ │ │ │ ├── select.js │ │ │ │ │ │ │ ├── textarea.js │ │ │ │ │ │ │ └── textfield.js │ │ │ │ │ │ ├── iframe/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── iframe.js │ │ │ │ │ │ ├── image/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── image.js │ │ │ │ │ │ ├── imageresize/ │ │ │ │ │ │ │ ├── LICENSE.md │ │ │ │ │ │ │ └── README.md │ │ │ │ │ │ ├── ios_enterkey/ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── link/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ ├── anchor.js │ │ │ │ │ │ │ └── link.js │ │ │ │ │ │ ├── liststyle/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── liststyle.js │ │ │ │ │ │ ├── onchange/ │ │ │ │ │ │ │ └── docs/ │ │ │ │ │ │ │ ├── install.html │ │ │ │ │ │ │ └── styles.css │ │ │ │ │ │ ├── pastefromgdocs/ │ │ │ │ │ │ │ └── filter/ │ │ │ │ │ │ │ └── default.js │ │ │ │ │ │ ├── pastefromlibreoffice/ │ │ │ │ │ │ │ └── filter/ │ │ │ │ │ │ │ └── default.js │ │ │ │ │ │ ├── pastefromword/ │ │ │ │ │ │ │ └── filter/ │ │ │ │ │ │ │ └── default.js │ │ │ │ │ │ ├── pastetools/ │ │ │ │ │ │ │ └── filter/ │ │ │ │ │ │ │ ├── common.js │ │ │ │ │ │ │ └── image.js │ │ │ │ │ │ ├── preview/ │ │ │ │ │ │ │ ├── preview.html │ │ │ │ │ │ │ └── styles/ │ │ │ │ │ │ │ └── screen.css │ │ │ │ │ │ ├── rx_paste/ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── scayt/ │ │ │ │ │ │ │ ├── CHANGELOG.md │ │ │ │ │ │ │ ├── LICENSE.md │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── dialogs/ │ │ │ │ │ │ │ │ ├── dialog.css │ │ │ │ │ │ │ │ ├── options.js │ │ │ │ │ │ │ │ └── toolbar.css │ │ │ │ │ │ │ └── skins/ │ │ │ │ │ │ │ └── moono-lisa/ │ │ │ │ │ │ │ └── scayt.css │ │ │ │ │ │ ├── smiley/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── smiley.js │ │ │ │ │ │ ├── specialchar/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ ├── lang/ │ │ │ │ │ │ │ │ ├── _translationstatus.txt │ │ │ │ │ │ │ │ ├── af.js │ │ │ │ │ │ │ │ ├── ar.js │ │ │ │ │ │ │ │ ├── az.js │ │ │ │ │ │ │ │ ├── bg.js │ │ │ │ │ │ │ │ ├── ca.js │ │ │ │ │ │ │ │ ├── cs.js │ │ │ │ │ │ │ │ ├── cy.js │ │ │ │ │ │ │ │ ├── da.js │ │ │ │ │ │ │ │ ├── de-ch.js │ │ │ │ │ │ │ │ ├── de.js │ │ │ │ │ │ │ │ ├── el.js │ │ │ │ │ │ │ │ ├── en-au.js │ │ │ │ │ │ │ │ ├── en-ca.js │ │ │ │ │ │ │ │ ├── en-gb.js │ │ │ │ │ │ │ │ ├── en.js │ │ │ │ │ │ │ │ ├── eo.js │ │ │ │ │ │ │ │ ├── es-mx.js │ │ │ │ │ │ │ │ ├── es.js │ │ │ │ │ │ │ │ ├── et.js │ │ │ │ │ │ │ │ ├── eu.js │ │ │ │ │ │ │ │ ├── fa.js │ │ │ │ │ │ │ │ ├── fi.js │ │ │ │ │ │ │ │ ├── fr-ca.js │ │ │ │ │ │ │ │ ├── fr.js │ │ │ │ │ │ │ │ ├── gl.js │ │ │ │ │ │ │ │ ├── he.js │ │ │ │ │ │ │ │ ├── hr.js │ │ │ │ │ │ │ │ ├── hu.js │ │ │ │ │ │ │ │ ├── id.js │ │ │ │ │ │ │ │ ├── it.js │ │ │ │ │ │ │ │ ├── ja.js │ │ │ │ │ │ │ │ ├── km.js │ │ │ │ │ │ │ │ ├── ko.js │ │ │ │ │ │ │ │ ├── ku.js │ │ │ │ │ │ │ │ ├── lt.js │ │ │ │ │ │ │ │ ├── lv.js │ │ │ │ │ │ │ │ ├── nb.js │ │ │ │ │ │ │ │ ├── nl.js │ │ │ │ │ │ │ │ ├── no.js │ │ │ │ │ │ │ │ ├── oc.js │ │ │ │ │ │ │ │ ├── pl.js │ │ │ │ │ │ │ │ ├── pt-br.js │ │ │ │ │ │ │ │ ├── pt.js │ │ │ │ │ │ │ │ ├── ro.js │ │ │ │ │ │ │ │ ├── ru.js │ │ │ │ │ │ │ │ ├── si.js │ │ │ │ │ │ │ │ ├── sk.js │ │ │ │ │ │ │ │ ├── sl.js │ │ │ │ │ │ │ │ ├── sq.js │ │ │ │ │ │ │ │ ├── sr-latn.js │ │ │ │ │ │ │ │ ├── sr.js │ │ │ │ │ │ │ │ ├── sv.js │ │ │ │ │ │ │ │ ├── th.js │ │ │ │ │ │ │ │ ├── tr.js │ │ │ │ │ │ │ │ ├── tt.js │ │ │ │ │ │ │ │ ├── ug.js │ │ │ │ │ │ │ │ ├── uk.js │ │ │ │ │ │ │ │ ├── vi.js │ │ │ │ │ │ │ │ ├── zh-cn.js │ │ │ │ │ │ │ │ └── zh.js │ │ │ │ │ │ │ └── specialchar.js │ │ │ │ │ │ ├── table/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── table.js │ │ │ │ │ │ ├── tableselection/ │ │ │ │ │ │ │ └── styles/ │ │ │ │ │ │ │ └── tableselection.css │ │ │ │ │ │ ├── tabletools/ │ │ │ │ │ │ │ └── dialogs/ │ │ │ │ │ │ │ └── tableCell.js │ │ │ │ │ │ ├── templates/ │ │ │ │ │ │ │ ├── dialogs/ │ │ │ │ │ │ │ │ ├── templates.css │ │ │ │ │ │ │ │ └── templates.js │ │ │ │ │ │ │ ├── templatedefinition.js │ │ │ │ │ │ │ └── templates/ │ │ │ │ │ │ │ └── default.js │ │ │ │ │ │ ├── wsc/ │ │ │ │ │ │ │ ├── LICENSE.md │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── dialogs/ │ │ │ │ │ │ │ │ ├── ciframe.html │ │ │ │ │ │ │ │ ├── tmpFrameset.html │ │ │ │ │ │ │ │ ├── wsc.css │ │ │ │ │ │ │ │ ├── wsc.js │ │ │ │ │ │ │ │ └── wsc_ie.js │ │ │ │ │ │ │ └── skins/ │ │ │ │ │ │ │ └── moono-lisa/ │ │ │ │ │ │ │ └── wsc.css │ │ │ │ │ │ └── xe_component/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── skins/ │ │ │ │ │ │ ├── moono/ │ │ │ │ │ │ │ ├── dialog.css │ │ │ │ │ │ │ ├── dialog_ie.css │ │ │ │ │ │ │ ├── dialog_ie7.css │ │ │ │ │ │ │ ├── dialog_ie8.css │ │ │ │ │ │ │ ├── dialog_iequirks.css │ │ │ │ │ │ │ ├── editor.css │ │ │ │ │ │ │ ├── editor_gecko.css │ │ │ │ │ │ │ ├── editor_ie.css │ │ │ │ │ │ │ ├── editor_ie7.css │ │ │ │ │ │ │ ├── editor_ie8.css │ │ │ │ │ │ │ ├── editor_iequirks.css │ │ │ │ │ │ │ ├── readme.md │ │ │ │ │ │ │ └── skin.js │ │ │ │ │ │ ├── moono-dark/ │ │ │ │ │ │ │ ├── dialog.css │ │ │ │ │ │ │ ├── dialog_ie.css │ │ │ │ │ │ │ ├── dialog_ie7.css │ │ │ │ │ │ │ ├── dialog_ie8.css │ │ │ │ │ │ │ ├── dialog_iequirks.css │ │ │ │ │ │ │ ├── editor.css │ │ │ │ │ │ │ ├── editor_gecko.css │ │ │ │ │ │ │ ├── editor_ie.css │ │ │ │ │ │ │ ├── editor_ie7.css │ │ │ │ │ │ │ ├── editor_ie8.css │ │ │ │ │ │ │ ├── editor_iequirks.css │ │ │ │ │ │ │ ├── readme.md │ │ │ │ │ │ │ └── skin.js │ │ │ │ │ │ └── moono-lisa/ │ │ │ │ │ │ ├── dialog.css │ │ │ │ │ │ ├── dialog_ie.css │ │ │ │ │ │ ├── dialog_ie8.css │ │ │ │ │ │ ├── dialog_iequirks.css │ │ │ │ │ │ ├── editor.css │ │ │ │ │ │ ├── editor_gecko.css │ │ │ │ │ │ ├── editor_ie.css │ │ │ │ │ │ ├── editor_ie8.css │ │ │ │ │ │ ├── editor_iequirks.css │ │ │ │ │ │ └── readme.md │ │ │ │ │ ├── styles.js │ │ │ │ │ └── vendor/ │ │ │ │ │ └── promise.js │ │ │ │ └── plugin.load │ │ │ ├── cookie/ │ │ │ │ ├── js.cookie.js │ │ │ │ └── plugin.load │ │ │ ├── filebox/ │ │ │ │ ├── filebox.js │ │ │ │ └── plugin.load │ │ │ ├── foggyLayer/ │ │ │ │ ├── foggyLayer.js │ │ │ │ └── plugin.load │ │ │ ├── handlebars/ │ │ │ │ ├── handlebars.js │ │ │ │ └── plugin.load │ │ │ ├── handlebars.runtime/ │ │ │ │ ├── handlebars.runtime.js │ │ │ │ └── plugin.load │ │ │ ├── hotkeys/ │ │ │ │ ├── jquery.hotkeys-packed.js │ │ │ │ └── plugin.load │ │ │ ├── jquery.fileupload/ │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── css/ │ │ │ │ │ ├── demo-ie8.css │ │ │ │ │ ├── demo.css │ │ │ │ │ ├── jquery.fileupload-noscript.css │ │ │ │ │ ├── jquery.fileupload-ui-noscript.css │ │ │ │ │ ├── jquery.fileupload-ui.css │ │ │ │ │ ├── jquery.fileupload.css │ │ │ │ │ └── style.css │ │ │ │ ├── js/ │ │ │ │ │ ├── app.js │ │ │ │ │ ├── cors/ │ │ │ │ │ │ ├── jquery.postmessage-transport.js │ │ │ │ │ │ └── jquery.xdr-transport.js │ │ │ │ │ ├── jquery.fileupload-angular.js │ │ │ │ │ ├── jquery.fileupload-audio.js │ │ │ │ │ ├── jquery.fileupload-image.js │ │ │ │ │ ├── jquery.fileupload-jquery-ui.js │ │ │ │ │ ├── jquery.fileupload-process.js │ │ │ │ │ ├── jquery.fileupload-ui.js │ │ │ │ │ ├── jquery.fileupload-validate.js │ │ │ │ │ ├── jquery.fileupload-video.js │ │ │ │ │ ├── jquery.fileupload.js │ │ │ │ │ ├── jquery.iframe-transport.js │ │ │ │ │ ├── main.js │ │ │ │ │ └── vendor/ │ │ │ │ │ └── jquery.ui.widget.js │ │ │ │ └── plugin.load │ │ │ ├── jquery.finderSelect/ │ │ │ │ ├── LICENSE.txt │ │ │ │ ├── README.md │ │ │ │ └── plugin.load │ │ │ ├── qtip/ │ │ │ │ ├── jquery.qtip.js │ │ │ │ └── plugin.load │ │ │ ├── spectrum/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .travis.yml │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── i18n/ │ │ │ │ │ ├── jquery.spectrum-ar.js │ │ │ │ │ ├── jquery.spectrum-de.js │ │ │ │ │ ├── jquery.spectrum-dk.js │ │ │ │ │ ├── jquery.spectrum-en.js │ │ │ │ │ ├── jquery.spectrum-es.js │ │ │ │ │ ├── jquery.spectrum-fa.js │ │ │ │ │ ├── jquery.spectrum-fi.js │ │ │ │ │ ├── jquery.spectrum-fr.js │ │ │ │ │ ├── jquery.spectrum-gr.js │ │ │ │ │ ├── jquery.spectrum-he.js │ │ │ │ │ ├── jquery.spectrum-hr.js │ │ │ │ │ ├── jquery.spectrum-id.js │ │ │ │ │ ├── jquery.spectrum-it.js │ │ │ │ │ ├── jquery.spectrum-ja.js │ │ │ │ │ ├── jquery.spectrum-ko.js │ │ │ │ │ ├── jquery.spectrum-lt.js │ │ │ │ │ ├── jquery.spectrum-nl.js │ │ │ │ │ ├── jquery.spectrum-pl.js │ │ │ │ │ ├── jquery.spectrum-pt-br.js │ │ │ │ │ ├── jquery.spectrum-ru.js │ │ │ │ │ ├── jquery.spectrum-sv.js │ │ │ │ │ ├── jquery.spectrum-tr.js │ │ │ │ │ ├── jquery.spectrum-zh-cn.js │ │ │ │ │ └── jquery.spectrum-zh-tw.js │ │ │ │ ├── plugin.load │ │ │ │ ├── rx_spectrum.js │ │ │ │ ├── spectrum.css │ │ │ │ ├── spectrum.js │ │ │ │ └── themes/ │ │ │ │ ├── index.html │ │ │ │ └── sp-dark.css │ │ │ ├── ui/ │ │ │ │ ├── i18n/ │ │ │ │ │ ├── datepicker-af.js │ │ │ │ │ ├── datepicker-ar-DZ.js │ │ │ │ │ ├── datepicker-ar.js │ │ │ │ │ ├── datepicker-az.js │ │ │ │ │ ├── datepicker-be.js │ │ │ │ │ ├── datepicker-bg.js │ │ │ │ │ ├── datepicker-bs.js │ │ │ │ │ ├── datepicker-ca.js │ │ │ │ │ ├── datepicker-cs.js │ │ │ │ │ ├── datepicker-cy-GB.js │ │ │ │ │ ├── datepicker-da.js │ │ │ │ │ ├── datepicker-de.js │ │ │ │ │ ├── datepicker-el.js │ │ │ │ │ ├── datepicker-en-AU.js │ │ │ │ │ ├── datepicker-en-GB.js │ │ │ │ │ ├── datepicker-en-NZ.js │ │ │ │ │ ├── datepicker-en.js │ │ │ │ │ ├── datepicker-eo.js │ │ │ │ │ ├── datepicker-es.js │ │ │ │ │ ├── datepicker-et.js │ │ │ │ │ ├── datepicker-eu.js │ │ │ │ │ ├── datepicker-fa.js │ │ │ │ │ ├── datepicker-fi.js │ │ │ │ │ ├── datepicker-fo.js │ │ │ │ │ ├── datepicker-fr-CA.js │ │ │ │ │ ├── datepicker-fr-CH.js │ │ │ │ │ ├── datepicker-fr.js │ │ │ │ │ ├── datepicker-gl.js │ │ │ │ │ ├── datepicker-he.js │ │ │ │ │ ├── datepicker-hi.js │ │ │ │ │ ├── datepicker-hr.js │ │ │ │ │ ├── datepicker-hu.js │ │ │ │ │ ├── datepicker-hy.js │ │ │ │ │ ├── datepicker-id.js │ │ │ │ │ ├── datepicker-is.js │ │ │ │ │ ├── datepicker-it-CH.js │ │ │ │ │ ├── datepicker-it.js │ │ │ │ │ ├── datepicker-ja.js │ │ │ │ │ ├── datepicker-ka.js │ │ │ │ │ ├── datepicker-kk.js │ │ │ │ │ ├── datepicker-km.js │ │ │ │ │ ├── datepicker-ko.js │ │ │ │ │ ├── datepicker-ky.js │ │ │ │ │ ├── datepicker-lb.js │ │ │ │ │ ├── datepicker-lt.js │ │ │ │ │ ├── datepicker-lv.js │ │ │ │ │ ├── datepicker-mk.js │ │ │ │ │ ├── datepicker-ml.js │ │ │ │ │ ├── datepicker-ms.js │ │ │ │ │ ├── datepicker-nb.js │ │ │ │ │ ├── datepicker-nl-BE.js │ │ │ │ │ ├── datepicker-nl.js │ │ │ │ │ ├── datepicker-nn.js │ │ │ │ │ ├── datepicker-no.js │ │ │ │ │ ├── datepicker-pl.js │ │ │ │ │ ├── datepicker-pt-BR.js │ │ │ │ │ ├── datepicker-pt.js │ │ │ │ │ ├── datepicker-rm.js │ │ │ │ │ ├── datepicker-ro.js │ │ │ │ │ ├── datepicker-ru.js │ │ │ │ │ ├── datepicker-sk.js │ │ │ │ │ ├── datepicker-sl.js │ │ │ │ │ ├── datepicker-sq.js │ │ │ │ │ ├── datepicker-sr-SR.js │ │ │ │ │ ├── datepicker-sr.js │ │ │ │ │ ├── datepicker-sv.js │ │ │ │ │ ├── datepicker-ta.js │ │ │ │ │ ├── datepicker-th.js │ │ │ │ │ ├── datepicker-tj.js │ │ │ │ │ ├── datepicker-tr.js │ │ │ │ │ ├── datepicker-uk.js │ │ │ │ │ ├── datepicker-vi.js │ │ │ │ │ ├── datepicker-zh-CN.js │ │ │ │ │ ├── datepicker-zh-HK.js │ │ │ │ │ └── datepicker-zh-TW.js │ │ │ │ ├── jquery-ui.css │ │ │ │ ├── jquery-ui.js │ │ │ │ ├── jquery-ui.structure.css │ │ │ │ ├── jquery-ui.theme.css │ │ │ │ ├── jquery.ui.datepicker-ko.js │ │ │ │ ├── plugin.load │ │ │ │ └── rx_datepicker.js │ │ │ ├── ui.calendar/ │ │ │ │ ├── plugin.load │ │ │ │ ├── ui.calendar.css │ │ │ │ └── ui.calendar.js │ │ │ ├── ui.colorpicker/ │ │ │ │ ├── ChangeLog.txt │ │ │ │ ├── ReadMe.txt │ │ │ │ ├── css/ │ │ │ │ │ └── jPicker-1.1.6.css │ │ │ │ ├── jpicker-1.1.6.js │ │ │ │ ├── minify.ini │ │ │ │ ├── plugin.load │ │ │ │ └── xe_colorpicker.js │ │ │ ├── ui.krzip/ │ │ │ │ ├── krzip_search.js │ │ │ │ └── plugin.load │ │ │ ├── ui.tree/ │ │ │ │ ├── jquery.simple.tree.css │ │ │ │ ├── jquery.simple.tree.js │ │ │ │ └── plugin.load │ │ │ ├── uri/ │ │ │ │ └── plugin.load │ │ │ └── watchinput/ │ │ │ ├── jquery.watchinput.js │ │ │ └── plugin.load │ │ ├── x.js │ │ ├── xml2json.js │ │ ├── xml_handler.js │ │ └── xml_js_filter.js │ ├── lang/ │ │ ├── de.php │ │ ├── en.php │ │ ├── es.php │ │ ├── fr.php │ │ ├── ja.php │ │ ├── ko.php │ │ ├── mn.php │ │ ├── ru.php │ │ ├── tr.php │ │ ├── vi.php │ │ ├── zh-CN.php │ │ └── zh-TW.php │ ├── legacy.php │ ├── libraries/ │ │ ├── cryptocompat.php │ │ ├── ftp.php │ │ ├── swift_mail.php │ │ ├── tar.php │ │ └── vendorpass.php │ ├── manual/ │ │ └── server_config/ │ │ ├── rhymix-nginx-subdir.conf │ │ └── rhymix-nginx.conf │ ├── scripts/ │ │ ├── clean_empty_dirs.php │ │ ├── clean_garbage_files.php │ │ ├── clean_message_files.php │ │ ├── clean_old_logs.php │ │ ├── clean_old_notifications.php │ │ ├── clean_old_thumbnails.php │ │ ├── common.php │ │ ├── cron.php │ │ └── update_all_modules.php │ ├── tpl/ │ │ ├── common_layout.html │ │ ├── debug_comment.html │ │ ├── default_layout.html │ │ ├── popup_layout.html │ │ └── refresh.html │ └── vendor/ │ ├── autoload.php │ ├── bin/ │ │ ├── html-to-markdown │ │ ├── lessify │ │ ├── minifycss │ │ ├── minifyjs │ │ ├── plessc │ │ └── pscss │ ├── composer/ │ │ ├── ClassLoader.php │ │ ├── InstalledVersions.php │ │ ├── LICENSE │ │ ├── autoload_classmap.php │ │ ├── autoload_files.php │ │ ├── autoload_namespaces.php │ │ ├── autoload_psr4.php │ │ ├── autoload_real.php │ │ ├── autoload_static.php │ │ ├── ca-bundle/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── composer.json │ │ │ ├── res/ │ │ │ │ └── cacert.pem │ │ │ └── src/ │ │ │ └── CaBundle.php │ │ ├── installed.json │ │ └── installed.php │ ├── coolsms/ │ │ └── php-sdk/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ └── Nurigo/ │ │ │ ├── Api/ │ │ │ │ ├── GroupMessage.php │ │ │ │ ├── Image.php │ │ │ │ ├── Message.php │ │ │ │ └── SenderID.php │ │ │ ├── Coolsms.php │ │ │ └── Exceptions/ │ │ │ ├── CoolsmsException.php │ │ │ ├── CoolsmsSDKException.php │ │ │ ├── CoolsmsServerException.php │ │ │ └── CoolsmsSystemException.php │ │ ├── bootstrap.php │ │ ├── composer.json │ │ └── examples/ │ │ ├── GroupMessage/ │ │ │ ├── example_add_messages.php │ │ │ ├── example_add_messages_json.php │ │ │ ├── example_create_group.php │ │ │ ├── example_delete_groups.php │ │ │ ├── example_delete_messages.php │ │ │ ├── example_get_group_info.php │ │ │ ├── example_get_group_list.php │ │ │ ├── example_get_message_list.php │ │ │ ├── example_send.php │ │ │ └── example_send_process.php │ │ ├── Message/ │ │ │ ├── example_cancel.php │ │ │ ├── example_get_balance.php │ │ │ ├── example_get_status.php │ │ │ ├── example_send.php │ │ │ └── example_sent.php │ │ ├── image/ │ │ │ ├── example_delete_images.php │ │ │ ├── example_get_image_info.php │ │ │ ├── example_get_image_list.php │ │ │ └── example_upload_image.php │ │ └── senderid/ │ │ ├── example_delete.php │ │ ├── example_get_default.php │ │ ├── example_get_sender_id_list.php │ │ ├── example_register.php │ │ ├── example_set_default.php │ │ └── example_verify.php │ ├── doctrine/ │ │ └── lexer/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── composer.json │ │ ├── lib/ │ │ │ └── Doctrine/ │ │ │ └── Common/ │ │ │ └── Lexer/ │ │ │ └── AbstractLexer.php │ │ └── psalm.xml │ ├── egulias/ │ │ └── email-validator/ │ │ ├── CHANGELOG.md │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── composer.json │ │ └── src/ │ │ ├── EmailLexer.php │ │ ├── EmailParser.php │ │ ├── EmailValidator.php │ │ ├── MessageIDParser.php │ │ ├── Parser/ │ │ │ ├── Comment.php │ │ │ ├── CommentStrategy/ │ │ │ │ ├── CommentStrategy.php │ │ │ │ ├── DomainComment.php │ │ │ │ └── LocalComment.php │ │ │ ├── DomainLiteral.php │ │ │ ├── DomainPart.php │ │ │ ├── DoubleQuote.php │ │ │ ├── FoldingWhiteSpace.php │ │ │ ├── IDLeftPart.php │ │ │ ├── IDRightPart.php │ │ │ ├── LocalPart.php │ │ │ └── PartParser.php │ │ ├── Parser.php │ │ ├── Result/ │ │ │ ├── InvalidEmail.php │ │ │ ├── MultipleErrors.php │ │ │ ├── Reason/ │ │ │ │ ├── AtextAfterCFWS.php │ │ │ │ ├── CRLFAtTheEnd.php │ │ │ │ ├── CRLFX2.php │ │ │ │ ├── CRNoLF.php │ │ │ │ ├── CharNotAllowed.php │ │ │ │ ├── CommaInDomain.php │ │ │ │ ├── CommentsInIDRight.php │ │ │ │ ├── ConsecutiveAt.php │ │ │ │ ├── ConsecutiveDot.php │ │ │ │ ├── DetailedReason.php │ │ │ │ ├── DomainAcceptsNoMail.php │ │ │ │ ├── DomainHyphened.php │ │ │ │ ├── DomainTooLong.php │ │ │ │ ├── DotAtEnd.php │ │ │ │ ├── DotAtStart.php │ │ │ │ ├── EmptyReason.php │ │ │ │ ├── ExceptionFound.php │ │ │ │ ├── ExpectingATEXT.php │ │ │ │ ├── ExpectingCTEXT.php │ │ │ │ ├── ExpectingDTEXT.php │ │ │ │ ├── ExpectingDomainLiteralClose.php │ │ │ │ ├── LabelTooLong.php │ │ │ │ ├── LocalOrReservedDomain.php │ │ │ │ ├── NoDNSRecord.php │ │ │ │ ├── NoDomainPart.php │ │ │ │ ├── NoLocalPart.php │ │ │ │ ├── RFCWarnings.php │ │ │ │ ├── Reason.php │ │ │ │ ├── SpoofEmail.php │ │ │ │ ├── UnOpenedComment.php │ │ │ │ ├── UnableToGetDNSRecord.php │ │ │ │ ├── UnclosedComment.php │ │ │ │ ├── UnclosedQuotedString.php │ │ │ │ └── UnusualElements.php │ │ │ ├── Result.php │ │ │ ├── SpoofEmail.php │ │ │ └── ValidEmail.php │ │ ├── Validation/ │ │ │ ├── DNSCheckValidation.php │ │ │ ├── DNSGetRecordWrapper.php │ │ │ ├── DNSRecords.php │ │ │ ├── EmailValidation.php │ │ │ ├── Exception/ │ │ │ │ └── EmptyValidationList.php │ │ │ ├── Extra/ │ │ │ │ └── SpoofCheckValidation.php │ │ │ ├── MessageIDValidation.php │ │ │ ├── MultipleValidationWithAnd.php │ │ │ ├── NoRFCWarningsValidation.php │ │ │ └── RFCValidation.php │ │ └── Warning/ │ │ ├── AddressLiteral.php │ │ ├── CFWSNearAt.php │ │ ├── CFWSWithFWS.php │ │ ├── Comment.php │ │ ├── DeprecatedComment.php │ │ ├── DomainLiteral.php │ │ ├── EmailTooLong.php │ │ ├── IPV6BadChar.php │ │ ├── IPV6ColonEnd.php │ │ ├── IPV6ColonStart.php │ │ ├── IPV6Deprecated.php │ │ ├── IPV6DoubleColon.php │ │ ├── IPV6GroupCount.php │ │ ├── IPV6MaxGroups.php │ │ ├── LocalTooLong.php │ │ ├── NoDNSMXRecord.php │ │ ├── ObsoleteDTEXT.php │ │ ├── QuotedPart.php │ │ ├── QuotedString.php │ │ ├── TLD.php │ │ └── Warning.php │ ├── enshrined/ │ │ └── svg-sanitize/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── composer.json │ │ └── src/ │ │ ├── ElementReference/ │ │ │ ├── Resolver.php │ │ │ ├── Subject.php │ │ │ └── Usage.php │ │ ├── Exceptions/ │ │ │ └── NestingException.php │ │ ├── Helper.php │ │ ├── Sanitizer.php │ │ ├── data/ │ │ │ ├── AllowedAttributes.php │ │ │ ├── AllowedTags.php │ │ │ ├── AttributeInterface.php │ │ │ ├── TagInterface.php │ │ │ └── XPath.php │ │ └── svg-scanner.php │ ├── ezyang/ │ │ └── htmlpurifier/ │ │ ├── CREDITS │ │ ├── LICENSE │ │ ├── README.md │ │ ├── VERSION │ │ ├── composer.json │ │ └── library/ │ │ ├── HTMLPurifier/ │ │ │ ├── Arborize.php │ │ │ ├── AttrCollections.php │ │ │ ├── AttrDef/ │ │ │ │ ├── CSS/ │ │ │ │ │ ├── AlphaValue.php │ │ │ │ │ ├── Background.php │ │ │ │ │ ├── BackgroundPosition.php │ │ │ │ │ ├── Border.php │ │ │ │ │ ├── Color.php │ │ │ │ │ ├── Composite.php │ │ │ │ │ ├── DenyElementDecorator.php │ │ │ │ │ ├── Filter.php │ │ │ │ │ ├── Font.php │ │ │ │ │ ├── FontFamily.php │ │ │ │ │ ├── Ident.php │ │ │ │ │ ├── ImportantDecorator.php │ │ │ │ │ ├── Length.php │ │ │ │ │ ├── ListStyle.php │ │ │ │ │ ├── Multiple.php │ │ │ │ │ ├── Number.php │ │ │ │ │ ├── Percentage.php │ │ │ │ │ ├── Ratio.php │ │ │ │ │ ├── TextDecoration.php │ │ │ │ │ └── URI.php │ │ │ │ ├── CSS.php │ │ │ │ ├── Clone.php │ │ │ │ ├── Enum.php │ │ │ │ ├── HTML/ │ │ │ │ │ ├── Bool.php │ │ │ │ │ ├── Class.php │ │ │ │ │ ├── Color.php │ │ │ │ │ ├── ContentEditable.php │ │ │ │ │ ├── FrameTarget.php │ │ │ │ │ ├── ID.php │ │ │ │ │ ├── Length.php │ │ │ │ │ ├── LinkTypes.php │ │ │ │ │ ├── MultiLength.php │ │ │ │ │ ├── Nmtokens.php │ │ │ │ │ └── Pixels.php │ │ │ │ ├── Integer.php │ │ │ │ ├── Lang.php │ │ │ │ ├── Switch.php │ │ │ │ ├── Text.php │ │ │ │ ├── URI/ │ │ │ │ │ ├── Email/ │ │ │ │ │ │ └── SimpleCheck.php │ │ │ │ │ ├── Email.php │ │ │ │ │ ├── Host.php │ │ │ │ │ ├── IPv4.php │ │ │ │ │ └── IPv6.php │ │ │ │ └── URI.php │ │ │ ├── AttrDef.php │ │ │ ├── AttrTransform/ │ │ │ │ ├── Background.php │ │ │ │ ├── BdoDir.php │ │ │ │ ├── BgColor.php │ │ │ │ ├── BoolToCSS.php │ │ │ │ ├── Border.php │ │ │ │ ├── EnumToCSS.php │ │ │ │ ├── ImgRequired.php │ │ │ │ ├── ImgSpace.php │ │ │ │ ├── Input.php │ │ │ │ ├── Lang.php │ │ │ │ ├── Length.php │ │ │ │ ├── Name.php │ │ │ │ ├── NameSync.php │ │ │ │ ├── Nofollow.php │ │ │ │ ├── SafeEmbed.php │ │ │ │ ├── SafeObject.php │ │ │ │ ├── SafeParam.php │ │ │ │ ├── ScriptRequired.php │ │ │ │ ├── TargetBlank.php │ │ │ │ ├── TargetNoopener.php │ │ │ │ ├── TargetNoreferrer.php │ │ │ │ └── Textarea.php │ │ │ ├── AttrTransform.php │ │ │ ├── AttrTypes.php │ │ │ ├── AttrValidator.php │ │ │ ├── Bootstrap.php │ │ │ ├── CSSDefinition.php │ │ │ ├── ChildDef/ │ │ │ │ ├── Chameleon.php │ │ │ │ ├── Custom.php │ │ │ │ ├── Empty.php │ │ │ │ ├── List.php │ │ │ │ ├── Optional.php │ │ │ │ ├── Required.php │ │ │ │ ├── StrictBlockquote.php │ │ │ │ └── Table.php │ │ │ ├── ChildDef.php │ │ │ ├── Config.php │ │ │ ├── ConfigSchema/ │ │ │ │ ├── Builder/ │ │ │ │ │ ├── ConfigSchema.php │ │ │ │ │ └── Xml.php │ │ │ │ ├── Exception.php │ │ │ │ ├── Interchange/ │ │ │ │ │ ├── Directive.php │ │ │ │ │ └── Id.php │ │ │ │ ├── Interchange.php │ │ │ │ ├── InterchangeBuilder.php │ │ │ │ ├── Validator.php │ │ │ │ ├── ValidatorAtom.php │ │ │ │ ├── schema/ │ │ │ │ │ ├── Attr.AllowedClasses.txt │ │ │ │ │ ├── Attr.AllowedFrameTargets.txt │ │ │ │ │ ├── Attr.AllowedRel.txt │ │ │ │ │ ├── Attr.AllowedRev.txt │ │ │ │ │ ├── Attr.ClassUseCDATA.txt │ │ │ │ │ ├── Attr.DefaultImageAlt.txt │ │ │ │ │ ├── Attr.DefaultInvalidImage.txt │ │ │ │ │ ├── Attr.DefaultInvalidImageAlt.txt │ │ │ │ │ ├── Attr.DefaultTextDir.txt │ │ │ │ │ ├── Attr.EnableID.txt │ │ │ │ │ ├── Attr.ForbiddenClasses.txt │ │ │ │ │ ├── Attr.ID.HTML5.txt │ │ │ │ │ ├── Attr.IDBlacklist.txt │ │ │ │ │ ├── Attr.IDBlacklistRegexp.txt │ │ │ │ │ ├── Attr.IDPrefix.txt │ │ │ │ │ ├── Attr.IDPrefixLocal.txt │ │ │ │ │ ├── AutoFormat.AutoParagraph.txt │ │ │ │ │ ├── AutoFormat.Custom.txt │ │ │ │ │ ├── AutoFormat.DisplayLinkURI.txt │ │ │ │ │ ├── AutoFormat.Linkify.txt │ │ │ │ │ ├── AutoFormat.PurifierLinkify.DocURL.txt │ │ │ │ │ ├── AutoFormat.PurifierLinkify.txt │ │ │ │ │ ├── AutoFormat.RemoveEmpty.Predicate.txt │ │ │ │ │ ├── AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.txt │ │ │ │ │ ├── AutoFormat.RemoveEmpty.RemoveNbsp.txt │ │ │ │ │ ├── AutoFormat.RemoveEmpty.txt │ │ │ │ │ ├── AutoFormat.RemoveSpansWithoutAttributes.txt │ │ │ │ │ ├── CSS.AllowDuplicates.txt │ │ │ │ │ ├── CSS.AllowImportant.txt │ │ │ │ │ ├── CSS.AllowTricky.txt │ │ │ │ │ ├── CSS.AllowedFonts.txt │ │ │ │ │ ├── CSS.AllowedProperties.txt │ │ │ │ │ ├── CSS.DefinitionRev.txt │ │ │ │ │ ├── CSS.ForbiddenProperties.txt │ │ │ │ │ ├── CSS.MaxImgLength.txt │ │ │ │ │ ├── CSS.Proprietary.txt │ │ │ │ │ ├── CSS.Trusted.txt │ │ │ │ │ ├── Cache.DefinitionImpl.txt │ │ │ │ │ ├── Cache.SerializerPath.txt │ │ │ │ │ ├── Cache.SerializerPermissions.txt │ │ │ │ │ ├── Core.AggressivelyFixLt.txt │ │ │ │ │ ├── Core.AggressivelyRemoveScript.txt │ │ │ │ │ ├── Core.AllowHostnameUnderscore.txt │ │ │ │ │ ├── Core.AllowParseManyTags.txt │ │ │ │ │ ├── Core.CollectErrors.txt │ │ │ │ │ ├── Core.ColorKeywords.txt │ │ │ │ │ ├── Core.ConvertDocumentToFragment.txt │ │ │ │ │ ├── Core.DirectLexLineNumberSyncInterval.txt │ │ │ │ │ ├── Core.DisableExcludes.txt │ │ │ │ │ ├── Core.EnableIDNA.txt │ │ │ │ │ ├── Core.Encoding.txt │ │ │ │ │ ├── Core.EscapeInvalidChildren.txt │ │ │ │ │ ├── Core.EscapeInvalidTags.txt │ │ │ │ │ ├── Core.EscapeNonASCIICharacters.txt │ │ │ │ │ ├── Core.HiddenElements.txt │ │ │ │ │ ├── Core.Language.txt │ │ │ │ │ ├── Core.LegacyEntityDecoder.txt │ │ │ │ │ ├── Core.LexerImpl.txt │ │ │ │ │ ├── Core.MaintainLineNumbers.txt │ │ │ │ │ ├── Core.NormalizeNewlines.txt │ │ │ │ │ ├── Core.RemoveBlanks.txt │ │ │ │ │ ├── Core.RemoveInvalidImg.txt │ │ │ │ │ ├── Core.RemoveProcessingInstructions.txt │ │ │ │ │ ├── Core.RemoveScriptContents.txt │ │ │ │ │ ├── Filter.Custom.txt │ │ │ │ │ ├── Filter.ExtractStyleBlocks.Escaping.txt │ │ │ │ │ ├── Filter.ExtractStyleBlocks.Scope.txt │ │ │ │ │ ├── Filter.ExtractStyleBlocks.TidyImpl.txt │ │ │ │ │ ├── Filter.ExtractStyleBlocks.txt │ │ │ │ │ ├── Filter.YouTube.txt │ │ │ │ │ ├── HTML.Allowed.txt │ │ │ │ │ ├── HTML.AllowedAttributes.txt │ │ │ │ │ ├── HTML.AllowedComments.txt │ │ │ │ │ ├── HTML.AllowedCommentsRegexp.txt │ │ │ │ │ ├── HTML.AllowedElements.txt │ │ │ │ │ ├── HTML.AllowedModules.txt │ │ │ │ │ ├── HTML.Attr.Name.UseCDATA.txt │ │ │ │ │ ├── HTML.BlockWrapper.txt │ │ │ │ │ ├── HTML.CoreModules.txt │ │ │ │ │ ├── HTML.CustomDoctype.txt │ │ │ │ │ ├── HTML.DefinitionID.txt │ │ │ │ │ ├── HTML.DefinitionRev.txt │ │ │ │ │ ├── HTML.Doctype.txt │ │ │ │ │ ├── HTML.FlashAllowFullScreen.txt │ │ │ │ │ ├── HTML.ForbiddenAttributes.txt │ │ │ │ │ ├── HTML.ForbiddenElements.txt │ │ │ │ │ ├── HTML.Forms.txt │ │ │ │ │ ├── HTML.MaxImgLength.txt │ │ │ │ │ ├── HTML.Nofollow.txt │ │ │ │ │ ├── HTML.Parent.txt │ │ │ │ │ ├── HTML.Proprietary.txt │ │ │ │ │ ├── HTML.SafeEmbed.txt │ │ │ │ │ ├── HTML.SafeIframe.txt │ │ │ │ │ ├── HTML.SafeObject.txt │ │ │ │ │ ├── HTML.SafeScripting.txt │ │ │ │ │ ├── HTML.Strict.txt │ │ │ │ │ ├── HTML.TargetBlank.txt │ │ │ │ │ ├── HTML.TargetNoopener.txt │ │ │ │ │ ├── HTML.TargetNoreferrer.txt │ │ │ │ │ ├── HTML.TidyAdd.txt │ │ │ │ │ ├── HTML.TidyLevel.txt │ │ │ │ │ ├── HTML.TidyRemove.txt │ │ │ │ │ ├── HTML.Trusted.txt │ │ │ │ │ ├── HTML.XHTML.txt │ │ │ │ │ ├── Output.CommentScriptContents.txt │ │ │ │ │ ├── Output.FixInnerHTML.txt │ │ │ │ │ ├── Output.FlashCompat.txt │ │ │ │ │ ├── Output.Newline.txt │ │ │ │ │ ├── Output.SortAttr.txt │ │ │ │ │ ├── Output.TidyFormat.txt │ │ │ │ │ ├── Test.ForceNoIconv.txt │ │ │ │ │ ├── URI.AllowedSchemes.txt │ │ │ │ │ ├── URI.Base.txt │ │ │ │ │ ├── URI.DefaultScheme.txt │ │ │ │ │ ├── URI.DefinitionID.txt │ │ │ │ │ ├── URI.DefinitionRev.txt │ │ │ │ │ ├── URI.Disable.txt │ │ │ │ │ ├── URI.DisableExternal.txt │ │ │ │ │ ├── URI.DisableExternalResources.txt │ │ │ │ │ ├── URI.DisableResources.txt │ │ │ │ │ ├── URI.Host.txt │ │ │ │ │ ├── URI.HostBlacklist.txt │ │ │ │ │ ├── URI.MakeAbsolute.txt │ │ │ │ │ ├── URI.Munge.txt │ │ │ │ │ ├── URI.MungeResources.txt │ │ │ │ │ ├── URI.MungeSecretKey.txt │ │ │ │ │ ├── URI.OverrideAllowedSchemes.txt │ │ │ │ │ ├── URI.SafeIframeRegexp.txt │ │ │ │ │ └── info.ini │ │ │ │ └── schema.ser │ │ │ ├── ConfigSchema.php │ │ │ ├── ContentSets.php │ │ │ ├── Context.php │ │ │ ├── Definition.php │ │ │ ├── DefinitionCache/ │ │ │ │ ├── Decorator/ │ │ │ │ │ ├── Cleanup.php │ │ │ │ │ ├── Memory.php │ │ │ │ │ └── Template.php.in │ │ │ │ ├── Decorator.php │ │ │ │ ├── Null.php │ │ │ │ ├── Serializer/ │ │ │ │ │ └── README │ │ │ │ └── Serializer.php │ │ │ ├── DefinitionCache.php │ │ │ ├── DefinitionCacheFactory.php │ │ │ ├── Doctype.php │ │ │ ├── DoctypeRegistry.php │ │ │ ├── ElementDef.php │ │ │ ├── Encoder.php │ │ │ ├── EntityLookup/ │ │ │ │ └── entities.ser │ │ │ ├── EntityLookup.php │ │ │ ├── EntityParser.php │ │ │ ├── ErrorCollector.php │ │ │ ├── ErrorStruct.php │ │ │ ├── Exception.php │ │ │ ├── Filter/ │ │ │ │ ├── ExtractStyleBlocks.php │ │ │ │ └── YouTube.php │ │ │ ├── Filter.php │ │ │ ├── Generator.php │ │ │ ├── HTMLDefinition.php │ │ │ ├── HTMLModule/ │ │ │ │ ├── Bdo.php │ │ │ │ ├── CommonAttributes.php │ │ │ │ ├── Edit.php │ │ │ │ ├── Forms.php │ │ │ │ ├── Hypertext.php │ │ │ │ ├── Iframe.php │ │ │ │ ├── Image.php │ │ │ │ ├── Legacy.php │ │ │ │ ├── List.php │ │ │ │ ├── Name.php │ │ │ │ ├── Nofollow.php │ │ │ │ ├── NonXMLCommonAttributes.php │ │ │ │ ├── Object.php │ │ │ │ ├── Presentation.php │ │ │ │ ├── Proprietary.php │ │ │ │ ├── Ruby.php │ │ │ │ ├── SafeEmbed.php │ │ │ │ ├── SafeObject.php │ │ │ │ ├── SafeScripting.php │ │ │ │ ├── Scripting.php │ │ │ │ ├── StyleAttribute.php │ │ │ │ ├── Tables.php │ │ │ │ ├── Target.php │ │ │ │ ├── TargetBlank.php │ │ │ │ ├── TargetNoopener.php │ │ │ │ ├── TargetNoreferrer.php │ │ │ │ ├── Text.php │ │ │ │ ├── Tidy/ │ │ │ │ │ ├── Name.php │ │ │ │ │ ├── Proprietary.php │ │ │ │ │ ├── Strict.php │ │ │ │ │ ├── Transitional.php │ │ │ │ │ ├── XHTML.php │ │ │ │ │ └── XHTMLAndHTML4.php │ │ │ │ ├── Tidy.php │ │ │ │ └── XMLCommonAttributes.php │ │ │ ├── HTMLModule.php │ │ │ ├── HTMLModuleManager.php │ │ │ ├── IDAccumulator.php │ │ │ ├── Injector/ │ │ │ │ ├── AutoParagraph.php │ │ │ │ ├── DisplayLinkURI.php │ │ │ │ ├── Linkify.php │ │ │ │ ├── PurifierLinkify.php │ │ │ │ ├── RemoveEmpty.php │ │ │ │ ├── RemoveSpansWithoutAttributes.php │ │ │ │ └── SafeObject.php │ │ │ ├── Injector.php │ │ │ ├── Language/ │ │ │ │ └── messages/ │ │ │ │ └── en.php │ │ │ ├── Language.php │ │ │ ├── LanguageFactory.php │ │ │ ├── Length.php │ │ │ ├── Lexer/ │ │ │ │ ├── DOMLex.php │ │ │ │ ├── DirectLex.php │ │ │ │ └── PH5P.php │ │ │ ├── Lexer.php │ │ │ ├── Node/ │ │ │ │ ├── Comment.php │ │ │ │ ├── Element.php │ │ │ │ └── Text.php │ │ │ ├── Node.php │ │ │ ├── PercentEncoder.php │ │ │ ├── Printer/ │ │ │ │ ├── CSSDefinition.php │ │ │ │ ├── ConfigForm.css │ │ │ │ ├── ConfigForm.js │ │ │ │ ├── ConfigForm.php │ │ │ │ └── HTMLDefinition.php │ │ │ ├── Printer.php │ │ │ ├── PropertyList.php │ │ │ ├── PropertyListIterator.php │ │ │ ├── Queue.php │ │ │ ├── Strategy/ │ │ │ │ ├── Composite.php │ │ │ │ ├── Core.php │ │ │ │ ├── FixNesting.php │ │ │ │ ├── MakeWellFormed.php │ │ │ │ ├── RemoveForeignElements.php │ │ │ │ └── ValidateAttributes.php │ │ │ ├── Strategy.php │ │ │ ├── StringHash.php │ │ │ ├── StringHashParser.php │ │ │ ├── TagTransform/ │ │ │ │ ├── Font.php │ │ │ │ └── Simple.php │ │ │ ├── TagTransform.php │ │ │ ├── Token/ │ │ │ │ ├── Comment.php │ │ │ │ ├── Empty.php │ │ │ │ ├── End.php │ │ │ │ ├── Start.php │ │ │ │ ├── Tag.php │ │ │ │ └── Text.php │ │ │ ├── Token.php │ │ │ ├── TokenFactory.php │ │ │ ├── URI.php │ │ │ ├── URIDefinition.php │ │ │ ├── URIFilter/ │ │ │ │ ├── DisableExternal.php │ │ │ │ ├── DisableExternalResources.php │ │ │ │ ├── DisableResources.php │ │ │ │ ├── HostBlacklist.php │ │ │ │ ├── MakeAbsolute.php │ │ │ │ ├── Munge.php │ │ │ │ └── SafeIframe.php │ │ │ ├── URIFilter.php │ │ │ ├── URIParser.php │ │ │ ├── URIScheme/ │ │ │ │ ├── data.php │ │ │ │ ├── file.php │ │ │ │ ├── ftp.php │ │ │ │ ├── http.php │ │ │ │ ├── https.php │ │ │ │ ├── mailto.php │ │ │ │ ├── news.php │ │ │ │ ├── nntp.php │ │ │ │ └── tel.php │ │ │ ├── URIScheme.php │ │ │ ├── URISchemeRegistry.php │ │ │ ├── UnitConverter.php │ │ │ ├── VarParser/ │ │ │ │ ├── Flexible.php │ │ │ │ └── Native.php │ │ │ ├── VarParser.php │ │ │ ├── VarParserException.php │ │ │ └── Zipper.php │ │ ├── HTMLPurifier.auto.php │ │ ├── HTMLPurifier.autoload-legacy.php │ │ ├── HTMLPurifier.autoload.php │ │ ├── HTMLPurifier.composer.php │ │ ├── HTMLPurifier.func.php │ │ ├── HTMLPurifier.includes.php │ │ ├── HTMLPurifier.kses.php │ │ ├── HTMLPurifier.path.php │ │ ├── HTMLPurifier.php │ │ └── HTMLPurifier.safe-includes.php │ ├── firebase/ │ │ └── php-jwt/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── composer.json │ │ └── src/ │ │ ├── BeforeValidException.php │ │ ├── CachedKeySet.php │ │ ├── ExpiredException.php │ │ ├── JWK.php │ │ ├── JWT.php │ │ ├── Key.php │ │ └── SignatureInvalidException.php │ ├── google/ │ │ └── auth/ │ │ ├── COPYING │ │ ├── LICENSE │ │ ├── README.md │ │ ├── SECURITY.md │ │ ├── autoload.php │ │ ├── composer.json │ │ └── src/ │ │ ├── AccessToken.php │ │ ├── ApplicationDefaultCredentials.php │ │ ├── Cache/ │ │ │ ├── InvalidArgumentException.php │ │ │ ├── Item.php │ │ │ ├── MemoryCacheItemPool.php │ │ │ ├── SysVCacheItemPool.php │ │ │ └── TypedItem.php │ │ ├── CacheTrait.php │ │ ├── Credentials/ │ │ │ ├── AppIdentityCredentials.php │ │ │ ├── GCECredentials.php │ │ │ ├── IAMCredentials.php │ │ │ ├── ImpersonatedServiceAccountCredentials.php │ │ │ ├── InsecureCredentials.php │ │ │ ├── ServiceAccountCredentials.php │ │ │ ├── ServiceAccountJwtAccessCredentials.php │ │ │ └── UserRefreshCredentials.php │ │ ├── CredentialsLoader.php │ │ ├── FetchAuthTokenCache.php │ │ ├── FetchAuthTokenInterface.php │ │ ├── GCECache.php │ │ ├── GetQuotaProjectInterface.php │ │ ├── HttpHandler/ │ │ │ ├── Guzzle5HttpHandler.php │ │ │ ├── Guzzle6HttpHandler.php │ │ │ ├── Guzzle7HttpHandler.php │ │ │ ├── HttpClientCache.php │ │ │ └── HttpHandlerFactory.php │ │ ├── Iam.php │ │ ├── IamSignerTrait.php │ │ ├── Middleware/ │ │ │ ├── AuthTokenMiddleware.php │ │ │ ├── ProxyAuthTokenMiddleware.php │ │ │ ├── ScopedAccessTokenMiddleware.php │ │ │ └── SimpleMiddleware.php │ │ ├── OAuth2.php │ │ ├── ProjectIdProviderInterface.php │ │ ├── ServiceAccountSignerTrait.php │ │ ├── SignBlobInterface.php │ │ └── UpdateMetadataInterface.php │ ├── guzzlehttp/ │ │ ├── guzzle/ │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── UPGRADING.md │ │ │ ├── composer.json │ │ │ └── src/ │ │ │ ├── BodySummarizer.php │ │ │ ├── BodySummarizerInterface.php │ │ │ ├── Client.php │ │ │ ├── ClientInterface.php │ │ │ ├── ClientTrait.php │ │ │ ├── Cookie/ │ │ │ │ ├── CookieJar.php │ │ │ │ ├── CookieJarInterface.php │ │ │ │ ├── FileCookieJar.php │ │ │ │ ├── SessionCookieJar.php │ │ │ │ └── SetCookie.php │ │ │ ├── Exception/ │ │ │ │ ├── BadResponseException.php │ │ │ │ ├── ClientException.php │ │ │ │ ├── ConnectException.php │ │ │ │ ├── GuzzleException.php │ │ │ │ ├── InvalidArgumentException.php │ │ │ │ ├── RequestException.php │ │ │ │ ├── ServerException.php │ │ │ │ ├── TooManyRedirectsException.php │ │ │ │ └── TransferException.php │ │ │ ├── Handler/ │ │ │ │ ├── CurlFactory.php │ │ │ │ ├── CurlFactoryInterface.php │ │ │ │ ├── CurlHandler.php │ │ │ │ ├── CurlMultiHandler.php │ │ │ │ ├── EasyHandle.php │ │ │ │ ├── HeaderProcessor.php │ │ │ │ ├── MockHandler.php │ │ │ │ ├── Proxy.php │ │ │ │ └── StreamHandler.php │ │ │ ├── HandlerStack.php │ │ │ ├── MessageFormatter.php │ │ │ ├── MessageFormatterInterface.php │ │ │ ├── Middleware.php │ │ │ ├── Pool.php │ │ │ ├── PrepareBodyMiddleware.php │ │ │ ├── RedirectMiddleware.php │ │ │ ├── RequestOptions.php │ │ │ ├── RetryMiddleware.php │ │ │ ├── TransferStats.php │ │ │ ├── Utils.php │ │ │ ├── functions.php │ │ │ └── functions_include.php │ │ ├── promises/ │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── composer.json │ │ │ └── src/ │ │ │ ├── AggregateException.php │ │ │ ├── CancellationException.php │ │ │ ├── Coroutine.php │ │ │ ├── Create.php │ │ │ ├── Each.php │ │ │ ├── EachPromise.php │ │ │ ├── FulfilledPromise.php │ │ │ ├── Is.php │ │ │ ├── Promise.php │ │ │ ├── PromiseInterface.php │ │ │ ├── PromisorInterface.php │ │ │ ├── RejectedPromise.php │ │ │ ├── RejectionException.php │ │ │ ├── TaskQueue.php │ │ │ ├── TaskQueueInterface.php │ │ │ └── Utils.php │ │ └── psr7/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── composer.json │ │ └── src/ │ │ ├── AppendStream.php │ │ ├── BufferStream.php │ │ ├── CachingStream.php │ │ ├── DroppingStream.php │ │ ├── Exception/ │ │ │ └── MalformedUriException.php │ │ ├── FnStream.php │ │ ├── Header.php │ │ ├── HttpFactory.php │ │ ├── InflateStream.php │ │ ├── LazyOpenStream.php │ │ ├── LimitStream.php │ │ ├── Message.php │ │ ├── MessageTrait.php │ │ ├── MimeType.php │ │ ├── MultipartStream.php │ │ ├── NoSeekStream.php │ │ ├── PumpStream.php │ │ ├── Query.php │ │ ├── Request.php │ │ ├── Response.php │ │ ├── Rfc7230.php │ │ ├── ServerRequest.php │ │ ├── Stream.php │ │ ├── StreamDecoratorTrait.php │ │ ├── StreamWrapper.php │ │ ├── UploadedFile.php │ │ ├── Uri.php │ │ ├── UriComparator.php │ │ ├── UriNormalizer.php │ │ ├── UriResolver.php │ │ └── Utils.php │ ├── league/ │ │ └── html-to-markdown/ │ │ ├── .github/ │ │ │ ├── FUNDING.yml │ │ │ ├── ISSUE_TEMPLATE/ │ │ │ │ ├── 1_Conversion_error.yaml │ │ │ │ ├── 2_Bug_report.yaml │ │ │ │ └── 3_Feature_request.yaml │ │ │ ├── SECURITY.md │ │ │ ├── renovate.json │ │ │ ├── stale.yml │ │ │ └── workflows/ │ │ │ └── tests.yml │ │ ├── CHANGELOG.md │ │ ├── CONDUCT.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bin/ │ │ │ └── html-to-markdown │ │ ├── composer.json │ │ ├── phpcs.xml.dist │ │ ├── phpstan.neon.dist │ │ ├── psalm.xml │ │ └── src/ │ │ ├── Coerce.php │ │ ├── Configuration.php │ │ ├── ConfigurationAwareInterface.php │ │ ├── Converter/ │ │ │ ├── BlockquoteConverter.php │ │ │ ├── CodeConverter.php │ │ │ ├── CommentConverter.php │ │ │ ├── ConverterInterface.php │ │ │ ├── DefaultConverter.php │ │ │ ├── DivConverter.php │ │ │ ├── EmphasisConverter.php │ │ │ ├── HardBreakConverter.php │ │ │ ├── HeaderConverter.php │ │ │ ├── HorizontalRuleConverter.php │ │ │ ├── ImageConverter.php │ │ │ ├── LinkConverter.php │ │ │ ├── ListBlockConverter.php │ │ │ ├── ListItemConverter.php │ │ │ ├── ParagraphConverter.php │ │ │ ├── PreformattedConverter.php │ │ │ ├── TableConverter.php │ │ │ └── TextConverter.php │ │ ├── Element.php │ │ ├── ElementInterface.php │ │ ├── Environment.php │ │ ├── HtmlConverter.php │ │ ├── HtmlConverterInterface.php │ │ └── PreConverterInterface.php │ ├── matthiasmullie/ │ │ ├── minify/ │ │ │ ├── LICENSE │ │ │ ├── bin/ │ │ │ │ ├── minifycss │ │ │ │ └── minifyjs │ │ │ ├── composer.json │ │ │ ├── data/ │ │ │ │ └── js/ │ │ │ │ ├── keywords_after.txt │ │ │ │ ├── keywords_before.txt │ │ │ │ ├── keywords_reserved.txt │ │ │ │ ├── operators.txt │ │ │ │ ├── operators_after.txt │ │ │ │ └── operators_before.txt │ │ │ └── src/ │ │ │ ├── CSS.php │ │ │ ├── Exception.php │ │ │ ├── Exceptions/ │ │ │ │ ├── BasicException.php │ │ │ │ ├── FileImportException.php │ │ │ │ ├── IOException.php │ │ │ │ └── PatternMatchException.php │ │ │ ├── JS.php │ │ │ └── Minify.php │ │ └── path-converter/ │ │ ├── LICENSE │ │ ├── composer.json │ │ └── src/ │ │ ├── Converter.php │ │ ├── ConverterInterface.php │ │ └── NoConverter.php │ ├── michelf/ │ │ ├── php-markdown/ │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .scrutinizer.yml │ │ │ ├── .travis.yml │ │ │ ├── License.md │ │ │ ├── Michelf/ │ │ │ │ ├── Markdown.inc.php │ │ │ │ ├── Markdown.php │ │ │ │ ├── MarkdownExtra.inc.php │ │ │ │ ├── MarkdownExtra.php │ │ │ │ ├── MarkdownInterface.inc.php │ │ │ │ └── MarkdownInterface.php │ │ │ ├── Readme.md │ │ │ ├── Readme.php │ │ │ ├── composer.json │ │ │ ├── phpunit.xml.dist │ │ │ └── test/ │ │ │ ├── bootstrap.php │ │ │ ├── helpers/ │ │ │ │ └── MarkdownTestHelper.php │ │ │ ├── integration/ │ │ │ │ └── PhpMarkdownTest.php │ │ │ ├── resources/ │ │ │ │ ├── markdown.mdtest/ │ │ │ │ │ ├── Amps and angle encoding.text │ │ │ │ │ ├── Amps and angle encoding.xhtml │ │ │ │ │ ├── Auto links.text │ │ │ │ │ ├── Auto links.xhtml │ │ │ │ │ ├── Backslash escapes.text │ │ │ │ │ ├── Backslash escapes.xhtml │ │ │ │ │ ├── Blockquotes with code blocks.text │ │ │ │ │ ├── Blockquotes with code blocks.xhtml │ │ │ │ │ ├── Code Blocks.text │ │ │ │ │ ├── Code Blocks.xhtml │ │ │ │ │ ├── Code Spans.text │ │ │ │ │ ├── Code Spans.xhtml │ │ │ │ │ ├── Hard-wrapped paragraphs with list-like lines.text │ │ │ │ │ ├── Hard-wrapped paragraphs with list-like lines.xhtml │ │ │ │ │ ├── Horizontal rules.text │ │ │ │ │ ├── Horizontal rules.xhtml │ │ │ │ │ ├── Images.text │ │ │ │ │ ├── Images.xhtml │ │ │ │ │ ├── Inline HTML (Advanced).text │ │ │ │ │ ├── Inline HTML (Advanced).xhtml │ │ │ │ │ ├── Inline HTML (Simple).html │ │ │ │ │ ├── Inline HTML (Simple).text │ │ │ │ │ ├── Inline HTML comments.html │ │ │ │ │ ├── Inline HTML comments.text │ │ │ │ │ ├── Links, inline style.text │ │ │ │ │ ├── Links, inline style.xhtml │ │ │ │ │ ├── Links, reference style.text │ │ │ │ │ ├── Links, reference style.xhtml │ │ │ │ │ ├── Links, shortcut references.text │ │ │ │ │ ├── Links, shortcut references.xhtml │ │ │ │ │ ├── Literal quotes in titles.text │ │ │ │ │ ├── Literal quotes in titles.xhtml │ │ │ │ │ ├── Markdown Documentation - Basics.text │ │ │ │ │ ├── Markdown Documentation - Basics.xhtml │ │ │ │ │ ├── Markdown Documentation - Syntax.text │ │ │ │ │ ├── Markdown Documentation - Syntax.xhtml │ │ │ │ │ ├── Nested blockquotes.text │ │ │ │ │ ├── Nested blockquotes.xhtml │ │ │ │ │ ├── Ordered and unordered lists.text │ │ │ │ │ ├── Ordered and unordered lists.xhtml │ │ │ │ │ ├── Strong and em together.text │ │ │ │ │ ├── Strong and em together.xhtml │ │ │ │ │ ├── Tabs.text │ │ │ │ │ ├── Tabs.xhtml │ │ │ │ │ ├── Tidyness.text │ │ │ │ │ └── Tidyness.xhtml │ │ │ │ ├── php-markdown-extra.mdtest/ │ │ │ │ │ ├── Abbr.text │ │ │ │ │ ├── Abbr.xhtml │ │ │ │ │ ├── Backtick Fenced Code Blocks Special Cases.text │ │ │ │ │ ├── Backtick Fenced Code Blocks Special Cases.xhtml │ │ │ │ │ ├── Backtick Fenced Code Blocks.text │ │ │ │ │ ├── Backtick Fenced Code Blocks.xhtml │ │ │ │ │ ├── Definition Lists.text │ │ │ │ │ ├── Definition Lists.xhtml │ │ │ │ │ ├── Emphasis.text │ │ │ │ │ ├── Emphasis.xhtml │ │ │ │ │ ├── Footnotes.text │ │ │ │ │ ├── Footnotes.xhtml │ │ │ │ │ ├── Headers with attributes.text │ │ │ │ │ ├── Headers with attributes.xhtml │ │ │ │ │ ├── Inline HTML with Markdown content.text │ │ │ │ │ ├── Inline HTML with Markdown content.xhtml │ │ │ │ │ ├── Link & Image Attributes.text │ │ │ │ │ ├── Link & Image Attributes.xhtml │ │ │ │ │ ├── Tables.text │ │ │ │ │ ├── Tables.xhtml │ │ │ │ │ ├── Tilde Fenced Code Blocks Special Cases.text │ │ │ │ │ ├── Tilde Fenced Code Blocks Special Cases.xhtml │ │ │ │ │ ├── Tilde Fenced Code Blocks.text │ │ │ │ │ └── Tilde Fenced Code Blocks.xhtml │ │ │ │ └── php-markdown.mdtest/ │ │ │ │ ├── Adjacent Lists.text │ │ │ │ ├── Adjacent Lists.xhtml │ │ │ │ ├── Auto Links.text │ │ │ │ ├── Auto Links.xhtml │ │ │ │ ├── Backslash escapes.text │ │ │ │ ├── Backslash escapes.xhtml │ │ │ │ ├── Code Spans.text │ │ │ │ ├── Code Spans.xhtml │ │ │ │ ├── Code block in a list item.text │ │ │ │ ├── Code block in a list item.xhtml │ │ │ │ ├── Code block on second line.text │ │ │ │ ├── Code block on second line.xhtml │ │ │ │ ├── Code block regressions.text │ │ │ │ ├── Code block regressions.xhtml │ │ │ │ ├── Email auto links.text │ │ │ │ ├── Email auto links.xhtml │ │ │ │ ├── Emphasis.text │ │ │ │ ├── Emphasis.xhtml │ │ │ │ ├── Empty List Item.text │ │ │ │ ├── Empty List Item.xhtml │ │ │ │ ├── Headers.text │ │ │ │ ├── Headers.xhtml │ │ │ │ ├── Horizontal Rules.text │ │ │ │ ├── Horizontal Rules.xhtml │ │ │ │ ├── Inline HTML (Simple).html │ │ │ │ ├── Inline HTML (Simple).text │ │ │ │ ├── Inline HTML (Span).text │ │ │ │ ├── Inline HTML (Span).xhtml │ │ │ │ ├── Inline HTML comments.html │ │ │ │ ├── Inline HTML comments.text │ │ │ │ ├── Ins & del.text │ │ │ │ ├── Ins & del.xhtml │ │ │ │ ├── Links, inline style.text │ │ │ │ ├── Links, inline style.xhtml │ │ │ │ ├── MD5 Hashes.text │ │ │ │ ├── MD5 Hashes.xhtml │ │ │ │ ├── Mixed OLs and ULs.text │ │ │ │ ├── Mixed OLs and ULs.xhtml │ │ │ │ ├── Nesting.text │ │ │ │ ├── Nesting.xhtml │ │ │ │ ├── PHP-Specific Bugs.text │ │ │ │ ├── PHP-Specific Bugs.xhtml │ │ │ │ ├── Parens in URL.text │ │ │ │ ├── Parens in URL.xhtml │ │ │ │ ├── Quotes in attributes.text │ │ │ │ ├── Quotes in attributes.xhtml │ │ │ │ ├── Tight blocks.text │ │ │ │ ├── Tight blocks.xhtml │ │ │ │ ├── XML empty tag.text │ │ │ │ └── XML empty tag.xhtml │ │ │ └── unit/ │ │ │ └── MarkdownExtraTest.php │ │ └── php-smartypants/ │ │ ├── License.md │ │ ├── Michelf/ │ │ │ ├── SmartyPants.inc.php │ │ │ ├── SmartyPants.php │ │ │ ├── SmartyPantsTypographer.inc.php │ │ │ └── SmartyPantsTypographer.php │ │ ├── Readme.md │ │ ├── Readme.php │ │ └── composer.json │ ├── psr/ │ │ ├── cache/ │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE.txt │ │ │ ├── README.md │ │ │ ├── composer.json │ │ │ └── src/ │ │ │ ├── CacheException.php │ │ │ ├── CacheItemInterface.php │ │ │ ├── CacheItemPoolInterface.php │ │ │ └── InvalidArgumentException.php │ │ ├── http-client/ │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── composer.json │ │ │ └── src/ │ │ │ ├── ClientExceptionInterface.php │ │ │ ├── ClientInterface.php │ │ │ ├── NetworkExceptionInterface.php │ │ │ └── RequestExceptionInterface.php │ │ ├── http-factory/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── composer.json │ │ │ └── src/ │ │ │ ├── RequestFactoryInterface.php │ │ │ ├── ResponseFactoryInterface.php │ │ │ ├── ServerRequestFactoryInterface.php │ │ │ ├── StreamFactoryInterface.php │ │ │ ├── UploadedFileFactoryInterface.php │ │ │ └── UriFactoryInterface.php │ │ └── http-message/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── composer.json │ │ ├── docs/ │ │ │ ├── PSR7-Interfaces.md │ │ │ └── PSR7-Usage.md │ │ └── src/ │ │ ├── MessageInterface.php │ │ ├── RequestInterface.php │ │ ├── ResponseInterface.php │ │ ├── ServerRequestInterface.php │ │ ├── StreamInterface.php │ │ ├── UploadedFileInterface.php │ │ └── UriInterface.php │ ├── ralouphie/ │ │ └── getallheaders/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── composer.json │ │ └── src/ │ │ └── getallheaders.php │ ├── rmccue/ │ │ └── requests/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── composer.json │ │ └── library/ │ │ ├── Requests/ │ │ │ ├── Auth/ │ │ │ │ └── Basic.php │ │ │ ├── Auth.php │ │ │ ├── Cookie/ │ │ │ │ └── Jar.php │ │ │ ├── Cookie.php │ │ │ ├── Exception/ │ │ │ │ ├── HTTP/ │ │ │ │ │ ├── 304.php │ │ │ │ │ ├── 305.php │ │ │ │ │ ├── 306.php │ │ │ │ │ ├── 400.php │ │ │ │ │ ├── 401.php │ │ │ │ │ ├── 402.php │ │ │ │ │ ├── 403.php │ │ │ │ │ ├── 404.php │ │ │ │ │ ├── 405.php │ │ │ │ │ ├── 406.php │ │ │ │ │ ├── 407.php │ │ │ │ │ ├── 408.php │ │ │ │ │ ├── 409.php │ │ │ │ │ ├── 410.php │ │ │ │ │ ├── 411.php │ │ │ │ │ ├── 412.php │ │ │ │ │ ├── 413.php │ │ │ │ │ ├── 414.php │ │ │ │ │ ├── 415.php │ │ │ │ │ ├── 416.php │ │ │ │ │ ├── 417.php │ │ │ │ │ ├── 418.php │ │ │ │ │ ├── 428.php │ │ │ │ │ ├── 429.php │ │ │ │ │ ├── 431.php │ │ │ │ │ ├── 500.php │ │ │ │ │ ├── 501.php │ │ │ │ │ ├── 502.php │ │ │ │ │ ├── 503.php │ │ │ │ │ ├── 504.php │ │ │ │ │ ├── 505.php │ │ │ │ │ ├── 511.php │ │ │ │ │ └── Unknown.php │ │ │ │ ├── HTTP.php │ │ │ │ ├── Transport/ │ │ │ │ │ └── cURL.php │ │ │ │ └── Transport.php │ │ │ ├── Exception.php │ │ │ ├── Hooker.php │ │ │ ├── Hooks.php │ │ │ ├── IDNAEncoder.php │ │ │ ├── IPv6.php │ │ │ ├── IRI.php │ │ │ ├── Proxy/ │ │ │ │ └── HTTP.php │ │ │ ├── Proxy.php │ │ │ ├── Response/ │ │ │ │ └── Headers.php │ │ │ ├── Response.php │ │ │ ├── SSL.php │ │ │ ├── Session.php │ │ │ ├── Transport/ │ │ │ │ ├── cURL.php │ │ │ │ ├── cacert.pem │ │ │ │ └── fsockopen.php │ │ │ ├── Transport.php │ │ │ └── Utility/ │ │ │ ├── CaseInsensitiveDictionary.php │ │ │ └── FilteredIterator.php │ │ └── Requests.php │ ├── scssphp/ │ │ └── scssphp/ │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── bin/ │ │ │ └── pscss │ │ ├── composer.json │ │ ├── scss.inc.php │ │ └── src/ │ │ ├── Base/ │ │ │ └── Range.php │ │ ├── Block/ │ │ │ ├── AtRootBlock.php │ │ │ ├── CallableBlock.php │ │ │ ├── ContentBlock.php │ │ │ ├── DirectiveBlock.php │ │ │ ├── EachBlock.php │ │ │ ├── ElseBlock.php │ │ │ ├── ElseifBlock.php │ │ │ ├── ForBlock.php │ │ │ ├── IfBlock.php │ │ │ ├── MediaBlock.php │ │ │ ├── NestedPropertyBlock.php │ │ │ └── WhileBlock.php │ │ ├── Block.php │ │ ├── Cache.php │ │ ├── Colors.php │ │ ├── CompilationResult.php │ │ ├── Compiler/ │ │ │ ├── CachedResult.php │ │ │ └── Environment.php │ │ ├── Compiler.php │ │ ├── Exception/ │ │ │ ├── CompilerException.php │ │ │ ├── ParserException.php │ │ │ ├── RangeException.php │ │ │ ├── SassException.php │ │ │ ├── SassScriptException.php │ │ │ └── ServerException.php │ │ ├── Formatter/ │ │ │ ├── Compact.php │ │ │ ├── Compressed.php │ │ │ ├── Crunched.php │ │ │ ├── Debug.php │ │ │ ├── Expanded.php │ │ │ ├── Nested.php │ │ │ └── OutputBlock.php │ │ ├── Formatter.php │ │ ├── Logger/ │ │ │ ├── LoggerInterface.php │ │ │ ├── QuietLogger.php │ │ │ └── StreamLogger.php │ │ ├── Node/ │ │ │ └── Number.php │ │ ├── Node.php │ │ ├── OutputStyle.php │ │ ├── Parser.php │ │ ├── SourceMap/ │ │ │ ├── Base64.php │ │ │ ├── Base64VLQ.php │ │ │ └── SourceMapGenerator.php │ │ ├── Type.php │ │ ├── Util/ │ │ │ └── Path.php │ │ ├── Util.php │ │ ├── ValueConverter.php │ │ ├── Version.php │ │ └── Warn.php │ ├── swiftmailer/ │ │ └── swiftmailer/ │ │ ├── .gitattributes │ │ ├── .github/ │ │ │ ├── ISSUE_TEMPLATE.md │ │ │ ├── PULL_REQUEST_TEMPLATE.md │ │ │ └── workflows/ │ │ │ └── tests.yml │ │ ├── .gitignore │ │ ├── .php_cs.dist │ │ ├── CHANGES │ │ ├── LICENSE │ │ ├── README.md │ │ ├── composer.json │ │ ├── doc/ │ │ │ ├── headers.rst │ │ │ ├── index.rst │ │ │ ├── introduction.rst │ │ │ ├── japanese.rst │ │ │ ├── messages.rst │ │ │ ├── plugins.rst │ │ │ └── sending.rst │ │ └── lib/ │ │ ├── classes/ │ │ │ ├── Swift/ │ │ │ │ ├── AddressEncoder/ │ │ │ │ │ ├── IdnAddressEncoder.php │ │ │ │ │ └── Utf8AddressEncoder.php │ │ │ │ ├── AddressEncoder.php │ │ │ │ ├── AddressEncoderException.php │ │ │ │ ├── Attachment.php │ │ │ │ ├── ByteStream/ │ │ │ │ │ ├── AbstractFilterableInputStream.php │ │ │ │ │ ├── ArrayByteStream.php │ │ │ │ │ ├── FileByteStream.php │ │ │ │ │ └── TemporaryFileByteStream.php │ │ │ │ ├── CharacterReader/ │ │ │ │ │ ├── GenericFixedWidthReader.php │ │ │ │ │ ├── UsAsciiReader.php │ │ │ │ │ └── Utf8Reader.php │ │ │ │ ├── CharacterReader.php │ │ │ │ ├── CharacterReaderFactory/ │ │ │ │ │ └── SimpleCharacterReaderFactory.php │ │ │ │ ├── CharacterReaderFactory.php │ │ │ │ ├── CharacterStream/ │ │ │ │ │ ├── ArrayCharacterStream.php │ │ │ │ │ └── NgCharacterStream.php │ │ │ │ ├── CharacterStream.php │ │ │ │ ├── ConfigurableSpool.php │ │ │ │ ├── DependencyContainer.php │ │ │ │ ├── DependencyException.php │ │ │ │ ├── EmbeddedFile.php │ │ │ │ ├── Encoder/ │ │ │ │ │ ├── Base64Encoder.php │ │ │ │ │ ├── QpEncoder.php │ │ │ │ │ └── Rfc2231Encoder.php │ │ │ │ ├── Encoder.php │ │ │ │ ├── Events/ │ │ │ │ │ ├── CommandEvent.php │ │ │ │ │ ├── CommandListener.php │ │ │ │ │ ├── Event.php │ │ │ │ │ ├── EventDispatcher.php │ │ │ │ │ ├── EventListener.php │ │ │ │ │ ├── EventObject.php │ │ │ │ │ ├── ResponseEvent.php │ │ │ │ │ ├── ResponseListener.php │ │ │ │ │ ├── SendEvent.php │ │ │ │ │ ├── SendListener.php │ │ │ │ │ ├── SimpleEventDispatcher.php │ │ │ │ │ ├── TransportChangeEvent.php │ │ │ │ │ ├── TransportChangeListener.php │ │ │ │ │ ├── TransportExceptionEvent.php │ │ │ │ │ └── TransportExceptionListener.php │ │ │ │ ├── FailoverTransport.php │ │ │ │ ├── FileSpool.php │ │ │ │ ├── FileStream.php │ │ │ │ ├── Filterable.php │ │ │ │ ├── IdGenerator.php │ │ │ │ ├── Image.php │ │ │ │ ├── InputByteStream.php │ │ │ │ ├── IoException.php │ │ │ │ ├── KeyCache/ │ │ │ │ │ ├── ArrayKeyCache.php │ │ │ │ │ ├── DiskKeyCache.php │ │ │ │ │ ├── KeyCacheInputStream.php │ │ │ │ │ ├── NullKeyCache.php │ │ │ │ │ └── SimpleKeyCacheInputStream.php │ │ │ │ ├── KeyCache.php │ │ │ │ ├── LoadBalancedTransport.php │ │ │ │ ├── Mailer/ │ │ │ │ │ ├── ArrayRecipientIterator.php │ │ │ │ │ └── RecipientIterator.php │ │ │ │ ├── Mailer.php │ │ │ │ ├── MemorySpool.php │ │ │ │ ├── Message.php │ │ │ │ ├── Mime/ │ │ │ │ │ ├── Attachment.php │ │ │ │ │ ├── CharsetObserver.php │ │ │ │ │ ├── ContentEncoder/ │ │ │ │ │ │ ├── Base64ContentEncoder.php │ │ │ │ │ │ ├── NativeQpContentEncoder.php │ │ │ │ │ │ ├── NullContentEncoder.php │ │ │ │ │ │ ├── PlainContentEncoder.php │ │ │ │ │ │ ├── QpContentEncoder.php │ │ │ │ │ │ ├── QpContentEncoderProxy.php │ │ │ │ │ │ └── RawContentEncoder.php │ │ │ │ │ ├── ContentEncoder.php │ │ │ │ │ ├── EmbeddedFile.php │ │ │ │ │ ├── EncodingObserver.php │ │ │ │ │ ├── Header.php │ │ │ │ │ ├── HeaderEncoder/ │ │ │ │ │ │ ├── Base64HeaderEncoder.php │ │ │ │ │ │ └── QpHeaderEncoder.php │ │ │ │ │ ├── HeaderEncoder.php │ │ │ │ │ ├── Headers/ │ │ │ │ │ │ ├── AbstractHeader.php │ │ │ │ │ │ ├── DateHeader.php │ │ │ │ │ │ ├── IdentificationHeader.php │ │ │ │ │ │ ├── MailboxHeader.php │ │ │ │ │ │ ├── OpenDKIMHeader.php │ │ │ │ │ │ ├── ParameterizedHeader.php │ │ │ │ │ │ ├── PathHeader.php │ │ │ │ │ │ └── UnstructuredHeader.php │ │ │ │ │ ├── IdGenerator.php │ │ │ │ │ ├── MimePart.php │ │ │ │ │ ├── SimpleHeaderFactory.php │ │ │ │ │ ├── SimpleHeaderSet.php │ │ │ │ │ ├── SimpleMessage.php │ │ │ │ │ └── SimpleMimeEntity.php │ │ │ │ ├── MimePart.php │ │ │ │ ├── NullTransport.php │ │ │ │ ├── OutputByteStream.php │ │ │ │ ├── Plugins/ │ │ │ │ │ ├── AntiFloodPlugin.php │ │ │ │ │ ├── BandwidthMonitorPlugin.php │ │ │ │ │ ├── Decorator/ │ │ │ │ │ │ └── Replacements.php │ │ │ │ │ ├── DecoratorPlugin.php │ │ │ │ │ ├── ImpersonatePlugin.php │ │ │ │ │ ├── Logger.php │ │ │ │ │ ├── LoggerPlugin.php │ │ │ │ │ ├── Loggers/ │ │ │ │ │ │ ├── ArrayLogger.php │ │ │ │ │ │ └── EchoLogger.php │ │ │ │ │ ├── MessageLogger.php │ │ │ │ │ ├── Pop/ │ │ │ │ │ │ ├── Pop3Connection.php │ │ │ │ │ │ └── Pop3Exception.php │ │ │ │ │ ├── PopBeforeSmtpPlugin.php │ │ │ │ │ ├── RedirectingPlugin.php │ │ │ │ │ ├── Reporter.php │ │ │ │ │ ├── ReporterPlugin.php │ │ │ │ │ ├── Reporters/ │ │ │ │ │ │ ├── HitReporter.php │ │ │ │ │ │ └── HtmlReporter.php │ │ │ │ │ ├── Sleeper.php │ │ │ │ │ ├── ThrottlerPlugin.php │ │ │ │ │ └── Timer.php │ │ │ │ ├── Preferences.php │ │ │ │ ├── ReplacementFilterFactory.php │ │ │ │ ├── RfcComplianceException.php │ │ │ │ ├── SendmailTransport.php │ │ │ │ ├── Signer.php │ │ │ │ ├── Signers/ │ │ │ │ │ ├── BodySigner.php │ │ │ │ │ ├── DKIMSigner.php │ │ │ │ │ ├── DomainKeySigner.php │ │ │ │ │ ├── HeaderSigner.php │ │ │ │ │ ├── OpenDKIMSigner.php │ │ │ │ │ └── SMimeSigner.php │ │ │ │ ├── SmtpTransport.php │ │ │ │ ├── Spool.php │ │ │ │ ├── SpoolTransport.php │ │ │ │ ├── StreamFilter.php │ │ │ │ ├── StreamFilters/ │ │ │ │ │ ├── ByteArrayReplacementFilter.php │ │ │ │ │ ├── StringReplacementFilter.php │ │ │ │ │ └── StringReplacementFilterFactory.php │ │ │ │ ├── SwiftException.php │ │ │ │ ├── Transport/ │ │ │ │ │ ├── AbstractSmtpTransport.php │ │ │ │ │ ├── Esmtp/ │ │ │ │ │ │ ├── Auth/ │ │ │ │ │ │ │ ├── CramMd5Authenticator.php │ │ │ │ │ │ │ ├── LoginAuthenticator.php │ │ │ │ │ │ │ ├── NTLMAuthenticator.php │ │ │ │ │ │ │ ├── PlainAuthenticator.php │ │ │ │ │ │ │ └── XOAuth2Authenticator.php │ │ │ │ │ │ ├── AuthHandler.php │ │ │ │ │ │ ├── Authenticator.php │ │ │ │ │ │ ├── EightBitMimeHandler.php │ │ │ │ │ │ └── SmtpUtf8Handler.php │ │ │ │ │ ├── EsmtpHandler.php │ │ │ │ │ ├── EsmtpTransport.php │ │ │ │ │ ├── FailoverTransport.php │ │ │ │ │ ├── IoBuffer.php │ │ │ │ │ ├── LoadBalancedTransport.php │ │ │ │ │ ├── NullTransport.php │ │ │ │ │ ├── SendmailTransport.php │ │ │ │ │ ├── SmtpAgent.php │ │ │ │ │ ├── SpoolTransport.php │ │ │ │ │ └── StreamBuffer.php │ │ │ │ ├── Transport.php │ │ │ │ └── TransportException.php │ │ │ └── Swift.php │ │ ├── dependency_maps/ │ │ │ ├── cache_deps.php │ │ │ ├── message_deps.php │ │ │ ├── mime_deps.php │ │ │ └── transport_deps.php │ │ ├── mime_types.php │ │ ├── preferences.php │ │ ├── swift_required.php │ │ └── swiftmailer_generate_mimes_config.php │ ├── symfony/ │ │ ├── deprecation-contracts/ │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── composer.json │ │ │ └── function.php │ │ ├── polyfill-iconv/ │ │ │ ├── Iconv.php │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── Resources/ │ │ │ │ └── charset/ │ │ │ │ ├── from.big5.php │ │ │ │ ├── from.cp037.php │ │ │ │ ├── from.cp1006.php │ │ │ │ ├── from.cp1026.php │ │ │ │ ├── from.cp424.php │ │ │ │ ├── from.cp437.php │ │ │ │ ├── from.cp500.php │ │ │ │ ├── from.cp737.php │ │ │ │ ├── from.cp775.php │ │ │ │ ├── from.cp850.php │ │ │ │ ├── from.cp852.php │ │ │ │ ├── from.cp855.php │ │ │ │ ├── from.cp856.php │ │ │ │ ├── from.cp857.php │ │ │ │ ├── from.cp860.php │ │ │ │ ├── from.cp861.php │ │ │ │ ├── from.cp862.php │ │ │ │ ├── from.cp863.php │ │ │ │ ├── from.cp864.php │ │ │ │ ├── from.cp865.php │ │ │ │ ├── from.cp866.php │ │ │ │ ├── from.cp869.php │ │ │ │ ├── from.cp874.php │ │ │ │ ├── from.cp875.php │ │ │ │ ├── from.cp932.php │ │ │ │ ├── from.cp936.php │ │ │ │ ├── from.cp949.php │ │ │ │ ├── from.cp950.php │ │ │ │ ├── from.iso-8859-1.php │ │ │ │ ├── from.iso-8859-10.php │ │ │ │ ├── from.iso-8859-11.php │ │ │ │ ├── from.iso-8859-13.php │ │ │ │ ├── from.iso-8859-14.php │ │ │ │ ├── from.iso-8859-15.php │ │ │ │ ├── from.iso-8859-16.php │ │ │ │ ├── from.iso-8859-2.php │ │ │ │ ├── from.iso-8859-3.php │ │ │ │ ├── from.iso-8859-4.php │ │ │ │ ├── from.iso-8859-5.php │ │ │ │ ├── from.iso-8859-6.php │ │ │ │ ├── from.iso-8859-7.php │ │ │ │ ├── from.iso-8859-8.php │ │ │ │ ├── from.iso-8859-9.php │ │ │ │ ├── from.koi8-r.php │ │ │ │ ├── from.koi8-u.php │ │ │ │ ├── from.us-ascii.php │ │ │ │ ├── from.windows-1250.php │ │ │ │ ├── from.windows-1251.php │ │ │ │ ├── from.windows-1252.php │ │ │ │ ├── from.windows-1253.php │ │ │ │ ├── from.windows-1254.php │ │ │ │ ├── from.windows-1255.php │ │ │ │ ├── from.windows-1256.php │ │ │ │ ├── from.windows-1257.php │ │ │ │ ├── from.windows-1258.php │ │ │ │ └── translit.php │ │ │ ├── bootstrap.php │ │ │ ├── bootstrap80.php │ │ │ └── composer.json │ │ ├── polyfill-intl-idn/ │ │ │ ├── Idn.php │ │ │ ├── Info.php │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── Resources/ │ │ │ │ └── unidata/ │ │ │ │ ├── DisallowedRanges.php │ │ │ │ ├── Regex.php │ │ │ │ ├── deviation.php │ │ │ │ ├── disallowed.php │ │ │ │ ├── disallowed_STD3_mapped.php │ │ │ │ ├── disallowed_STD3_valid.php │ │ │ │ ├── ignored.php │ │ │ │ ├── mapped.php │ │ │ │ └── virama.php │ │ │ ├── bootstrap.php │ │ │ ├── bootstrap80.php │ │ │ └── composer.json │ │ ├── polyfill-intl-normalizer/ │ │ │ ├── LICENSE │ │ │ ├── Normalizer.php │ │ │ ├── README.md │ │ │ ├── Resources/ │ │ │ │ ├── stubs/ │ │ │ │ │ └── Normalizer.php │ │ │ │ └── unidata/ │ │ │ │ ├── canonicalComposition.php │ │ │ │ ├── canonicalDecomposition.php │ │ │ │ ├── combiningClass.php │ │ │ │ └── compatibilityDecomposition.php │ │ │ ├── bootstrap.php │ │ │ ├── bootstrap80.php │ │ │ └── composer.json │ │ └── polyfill-mbstring/ │ │ ├── LICENSE │ │ ├── Mbstring.php │ │ ├── README.md │ │ ├── Resources/ │ │ │ └── unidata/ │ │ │ ├── caseFolding.php │ │ │ ├── lowerCase.php │ │ │ ├── titleCaseRegexp.php │ │ │ └── upperCase.php │ │ ├── bootstrap.php │ │ ├── bootstrap80.php │ │ └── composer.json │ └── true/ │ └── punycode/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── composer.json │ └── src/ │ ├── Exception/ │ │ ├── DomainOutOfBoundsException.php │ │ ├── LabelOutOfBoundsException.php │ │ └── OutOfBoundsException.php │ └── Punycode.php ├── config/ │ └── config.inc.php ├── index.php ├── layouts/ │ ├── default/ │ │ ├── conf/ │ │ │ └── info.xml │ │ ├── default.layout.css │ │ ├── default.layout.js │ │ ├── default.layout.webfont.css │ │ └── layout.html │ ├── user_layout/ │ │ ├── conf/ │ │ │ └── info.xml │ │ ├── layout.html │ │ ├── user_layout.css │ │ └── user_layout.js │ └── xedition/ │ ├── conf/ │ │ └── info.xml │ ├── css/ │ │ ├── idangerous.swiper.css │ │ ├── layout.css │ │ ├── webfont.css │ │ ├── welcome.css │ │ ├── widget.login.css │ │ └── xeicon.css │ ├── demo/ │ │ ├── copyright.html │ │ ├── footer.html │ │ ├── slide.html │ │ ├── welcome_main.html │ │ ├── welcome_sub1.html │ │ ├── welcome_sub2.html │ │ └── welcome_sub3.html │ ├── js/ │ │ ├── idangerous.swiper.js │ │ ├── jquery.parallax-scroll.js │ │ ├── layout.js │ │ └── welcome.js │ ├── lang/ │ │ └── ko.php │ └── layout.html ├── m.layouts/ │ ├── colorCode/ │ │ ├── conf/ │ │ │ └── info.xml │ │ ├── css/ │ │ │ ├── Blue/ │ │ │ │ └── layout.css │ │ │ ├── Gray/ │ │ │ │ └── layout.css │ │ │ ├── Orange/ │ │ │ │ └── layout.css │ │ │ ├── Red/ │ │ │ │ └── layout.css │ │ │ ├── nGreenA/ │ │ │ │ └── layout.css │ │ │ └── nGreenB/ │ │ │ └── layout.css │ │ ├── js/ │ │ │ └── layout.js │ │ └── layout.html │ ├── default/ │ │ ├── conf/ │ │ │ └── info.xml │ │ ├── layout.html │ │ └── mx.css │ └── simpleGray/ │ ├── conf/ │ │ └── info.xml │ ├── layout.html │ └── mx.css ├── modules/ │ ├── addon/ │ │ ├── addon.admin.controller.php │ │ ├── addon.admin.model.php │ │ ├── addon.admin.view.php │ │ ├── addon.class.php │ │ ├── addon.controller.php │ │ ├── addon.model.php │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── queries/ │ │ │ ├── deleteAddon.xml │ │ │ ├── deleteSiteAddon.xml │ │ │ ├── deleteSiteAddons.xml │ │ │ ├── getAddonInfo.xml │ │ │ ├── getAddonIsActivated.xml │ │ │ ├── getAddons.xml │ │ │ ├── getMAddonIsActivated.xml │ │ │ ├── getSiteAddonInfo.xml │ │ │ ├── getSiteAddonIsActivated.xml │ │ │ ├── getSiteAddons.xml │ │ │ ├── getSiteMAddonIsActivated.xml │ │ │ ├── insertAddon.xml │ │ │ ├── insertSiteAddon.xml │ │ │ ├── updateAddon.xml │ │ │ └── updateSiteAddon.xml │ │ ├── ruleset/ │ │ │ └── updateAddonSetup.xml │ │ ├── schemas/ │ │ │ ├── addons.xml │ │ │ └── addons_site.xml │ │ └── tpl/ │ │ ├── addon_info.html │ │ ├── addon_list.html │ │ ├── css/ │ │ │ └── addon.css │ │ ├── filter/ │ │ │ ├── setup_addon.xml │ │ │ └── toggle_activate_addon.xml │ │ ├── js/ │ │ │ └── addon.js │ │ └── setup_addon.html │ ├── admin/ │ │ ├── admin.admin.controller.php │ │ ├── admin.admin.model.php │ │ ├── admin.admin.view.php │ │ ├── admin.class.php │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── controllers/ │ │ │ ├── AdminMenu.php │ │ │ ├── Base.php │ │ │ ├── Dashboard.php │ │ │ ├── Design.php │ │ │ ├── Install.php │ │ │ ├── ServerEnv.php │ │ │ ├── maintenance/ │ │ │ │ ├── CacheReset.php │ │ │ │ └── Cleanup.php │ │ │ └── systemconfig/ │ │ │ ├── Advanced.php │ │ │ ├── Debug.php │ │ │ ├── Domains.php │ │ │ ├── Notification.php │ │ │ ├── Queue.php │ │ │ ├── SEO.php │ │ │ ├── Security.php │ │ │ └── SiteLock.php │ │ ├── lang/ │ │ │ ├── de.php │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── mn.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── models/ │ │ │ ├── AdminMenu.php │ │ │ ├── Favorite.php │ │ │ ├── Icon.php │ │ │ └── Utility.php │ │ ├── queries/ │ │ │ ├── deleteAllFavorite.xml │ │ │ ├── deleteFavorite.xml │ │ │ ├── deleteFavorites.xml │ │ │ ├── getCommentCount.xml │ │ │ ├── getCommentDeclaredCount.xml │ │ │ ├── getCommentDeclaredStatus.xml │ │ │ ├── getCommentStatus.xml │ │ │ ├── getDocumentCount.xml │ │ │ ├── getDocumentDeclaredCount.xml │ │ │ ├── getDocumentDeclaredStatus.xml │ │ │ ├── getDocumentStatus.xml │ │ │ ├── getFavorite.xml │ │ │ ├── getFavoriteList.xml │ │ │ ├── getFileCount.xml │ │ │ ├── getFileStatus.xml │ │ │ ├── getMemberCount.xml │ │ │ ├── getMemberStatus.xml │ │ │ ├── getSiteAllList.xml │ │ │ ├── getSiteCountByDate.xml │ │ │ ├── getSiteVisitors.xml │ │ │ ├── getTodayCommentCount.xml │ │ │ ├── getTodayTrackbackCount.xml │ │ │ ├── getTotalSiteVisitors.xml │ │ │ ├── getTotalVisitors.xml │ │ │ ├── getTrackbackCount.xml │ │ │ ├── getTrackbackStatus.xml │ │ │ ├── getVisitors.xml │ │ │ └── insertFavorite.xml │ │ ├── ruleset/ │ │ │ ├── insertThemeInfo.xml │ │ │ └── sitelock.xml │ │ ├── schemas/ │ │ │ └── admin_favorite.xml │ │ └── tpl/ │ │ ├── _admin_common.html │ │ ├── _dashboard_counter.html │ │ ├── _dashboard_default.html │ │ ├── _footer.html │ │ ├── _header.html │ │ ├── admin_setup.html │ │ ├── cleanup.html │ │ ├── config_advanced.html │ │ ├── config_debug.html │ │ ├── config_domains.html │ │ ├── config_domains_edit.html │ │ ├── config_header.html │ │ ├── config_notification.html │ │ ├── config_queue.html │ │ ├── config_security.html │ │ ├── config_seo.html │ │ ├── config_sitelock.html │ │ ├── css/ │ │ │ ├── admin.bootstrap.css │ │ │ ├── admin.css │ │ │ ├── admin.iefix.css │ │ │ └── queue_config.scss │ │ ├── favicon_upload.html │ │ ├── index.html │ │ ├── js/ │ │ │ ├── admin.js │ │ │ ├── cleanup.js │ │ │ ├── config.js │ │ │ ├── dashboard_counter.js │ │ │ ├── dashboard_default.js │ │ │ ├── jquery.jstree.js │ │ │ ├── jquery.tmpl.js │ │ │ ├── menu_setup.js │ │ │ ├── notification_config.js │ │ │ ├── queue_config.js │ │ │ └── themes/ │ │ │ ├── apple/ │ │ │ │ └── style.css │ │ │ ├── classic/ │ │ │ │ └── style.css │ │ │ ├── default/ │ │ │ │ └── style.css │ │ │ └── default-rtl/ │ │ │ └── style.css │ │ ├── layout.html │ │ ├── popup_layout.html │ │ └── server_env.html │ ├── adminlogging/ │ │ ├── adminlogging.class.php │ │ ├── adminlogging.controller.php │ │ ├── adminlogging.model.php │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── queries/ │ │ │ └── insertLog.xml │ │ └── schemas/ │ │ └── admin_log.xml │ ├── advanced_mailer/ │ │ ├── advanced_mailer.admin.controller.php │ │ ├── advanced_mailer.admin.view.php │ │ ├── advanced_mailer.class.php │ │ ├── advanced_mailer.controller.php │ │ ├── advanced_mailer.model.php │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ └── ko.php │ │ ├── queries/ │ │ │ ├── countMailLogByType.xml │ │ │ ├── countPushLogByType.xml │ │ │ ├── countSMSLogByType.xml │ │ │ ├── deleteMailLogs.xml │ │ │ ├── deletePushLogs.xml │ │ │ ├── deleteSMSLogs.xml │ │ │ ├── getMailLogByType.xml │ │ │ ├── getPushLogByType.xml │ │ │ ├── getSMSLogByType.xml │ │ │ ├── insertMailLog.xml │ │ │ ├── insertPushLog.xml │ │ │ └── insertSMSLog.xml │ │ ├── schemas/ │ │ │ ├── advanced_mailer_log.xml │ │ │ ├── advanced_mailer_push_log.xml │ │ │ └── advanced_mailer_sms_log.xml │ │ └── tpl/ │ │ ├── common.html │ │ ├── config.html │ │ ├── css/ │ │ │ ├── config.css │ │ │ ├── spf_dkim.css │ │ │ └── view_log.css │ │ ├── exceptions.html │ │ ├── js/ │ │ │ ├── config.js │ │ │ ├── spf_dkim.js │ │ │ └── view_log.js │ │ ├── mail_log.html │ │ ├── mail_test.html │ │ ├── push_log.html │ │ ├── push_test.html │ │ ├── sms_log.html │ │ ├── sms_test.html │ │ ├── spf_dkim.html │ │ └── test_email.html │ ├── autoinstall/ │ │ ├── autoinstall.admin.controller.php │ │ ├── autoinstall.admin.model.php │ │ ├── autoinstall.admin.view.php │ │ ├── autoinstall.class.php │ │ ├── autoinstall.lib.php │ │ ├── autoinstall.model.php │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── de.php │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── mn.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── queries/ │ │ │ ├── deleteCategory.xml │ │ │ ├── deleteInstalledPackage.xml │ │ │ ├── deletePackage.xml │ │ │ ├── deletePackages.xml │ │ │ ├── getCategories.xml │ │ │ ├── getCategory.xml │ │ │ ├── getHaveInstance.xml │ │ │ ├── getInstalledPackage.xml │ │ │ ├── getInstalledPackageCount.xml │ │ │ ├── getInstalledPackageList.xml │ │ │ ├── getInstalledPackages.xml │ │ │ ├── getLatestPackage.xml │ │ │ ├── getNeedUpdate.xml │ │ │ ├── getPackage.xml │ │ │ ├── getPackageCount.xml │ │ │ ├── getPackageSrlByPath.xml │ │ │ ├── getPackages.xml │ │ │ ├── insertCategory.xml │ │ │ ├── insertInstalledPackage.xml │ │ │ ├── insertPackage.xml │ │ │ ├── updateCategory.xml │ │ │ ├── updateInstalledPackage.xml │ │ │ └── updatePackage.xml │ │ ├── schemas/ │ │ │ ├── ai_installed_packages.xml │ │ │ ├── ai_remote_categories.xml │ │ │ └── autoinstall_packages.xml │ │ └── tpl/ │ │ ├── category.html │ │ ├── config.html │ │ ├── css/ │ │ │ └── autoinstall.css │ │ ├── filter/ │ │ │ └── insert_config.xml │ │ ├── header.html │ │ ├── index.html │ │ ├── install.html │ │ ├── js/ │ │ │ ├── autoinstall.js │ │ │ └── waiting.js │ │ ├── list.html │ │ └── uninstall.html │ ├── board/ │ │ ├── board.admin.controller.php │ │ ├── board.admin.model.php │ │ ├── board.admin.view.php │ │ ├── board.api.php │ │ ├── board.class.php │ │ ├── board.controller.php │ │ ├── board.mobile.php │ │ ├── board.model.php │ │ ├── board.view.php │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── m.skins/ │ │ │ ├── default/ │ │ │ │ ├── _list.html │ │ │ │ ├── category.html │ │ │ │ ├── comment.html │ │ │ │ ├── comment_form.html │ │ │ │ ├── css/ │ │ │ │ │ └── mboard.css │ │ │ │ ├── delete_comment_form.html │ │ │ │ ├── delete_form.html │ │ │ │ ├── input_password_form.html │ │ │ │ ├── js/ │ │ │ │ │ └── mboard.js │ │ │ │ ├── list.html │ │ │ │ ├── read.html │ │ │ │ ├── skin.xml │ │ │ │ └── write_form.html │ │ │ └── simpleGray/ │ │ │ ├── _list.html │ │ │ ├── category.html │ │ │ ├── comment.html │ │ │ ├── comment_form.html │ │ │ ├── css/ │ │ │ │ └── mboard.css │ │ │ ├── delete_comment_form.html │ │ │ ├── delete_form.html │ │ │ ├── input_password_form.html │ │ │ ├── js/ │ │ │ │ └── mboard.js │ │ │ ├── list.html │ │ │ ├── read.html │ │ │ ├── skin.xml │ │ │ └── write_form.html │ │ ├── models/ │ │ │ └── Features.php │ │ ├── queries/ │ │ │ ├── getAllBoard.xml │ │ │ └── getBoardList.xml │ │ ├── ruleset/ │ │ │ ├── insertBoard.xml │ │ │ └── insertBoardForBasic.xml │ │ ├── skins/ │ │ │ ├── default/ │ │ │ │ ├── _comment.html │ │ │ │ ├── _footer.html │ │ │ │ ├── _header.html │ │ │ │ ├── _read.html │ │ │ │ ├── _trackback.html │ │ │ │ ├── board.default.css │ │ │ │ ├── board.default.js │ │ │ │ ├── comment.html │ │ │ │ ├── comment_form.html │ │ │ │ ├── delete_comment_form.html │ │ │ │ ├── delete_form.html │ │ │ │ ├── delete_trackback_form.html │ │ │ │ ├── input_password_form.html │ │ │ │ ├── list.html │ │ │ │ ├── message.html │ │ │ │ ├── skin.xml │ │ │ │ ├── tag_list.html │ │ │ │ └── write_form.html │ │ │ └── xedition/ │ │ │ ├── _comment.html │ │ │ ├── _footer.html │ │ │ ├── _header.html │ │ │ ├── _read.html │ │ │ ├── _trackback.html │ │ │ ├── board.default.css │ │ │ ├── board.default.js │ │ │ ├── comment.html │ │ │ ├── comment_form.html │ │ │ ├── delete_comment_form.html │ │ │ ├── delete_form.html │ │ │ ├── delete_trackback_form.html │ │ │ ├── input_password_form.html │ │ │ ├── list.html │ │ │ ├── message.html │ │ │ ├── skin.xml │ │ │ ├── tag_list.html │ │ │ ├── update_list.html │ │ │ ├── update_view.html │ │ │ ├── vote_log.html │ │ │ └── write_form.html │ │ └── tpl/ │ │ ├── addition_setup.html │ │ ├── board_delete.html │ │ ├── board_insert.html │ │ ├── board_setup_basic.html │ │ ├── category_list.html │ │ ├── extra_vars.html │ │ ├── filter/ │ │ │ ├── delete_board.xml │ │ │ ├── delete_comment.xml │ │ │ ├── delete_document.xml │ │ │ ├── delete_trackback.xml │ │ │ ├── input_password.xml │ │ │ ├── insert.xml │ │ │ ├── insert_admin.xml │ │ │ ├── insert_board.xml │ │ │ ├── insert_comment.xml │ │ │ ├── search.xml │ │ │ ├── update.xml │ │ │ ├── update_category.xml │ │ │ └── vote.xml │ │ ├── grant_list.html │ │ ├── header.html │ │ ├── index.html │ │ ├── js/ │ │ │ ├── board.js │ │ │ ├── board_admin.js │ │ │ └── rewrite.js │ │ ├── skin_info.html │ │ └── smartphone/ │ │ ├── comment_list.html │ │ ├── list.html │ │ └── view_document.html │ ├── comment/ │ │ ├── comment.admin.controller.php │ │ ├── comment.admin.view.php │ │ ├── comment.class.php │ │ ├── comment.controller.php │ │ ├── comment.item.php │ │ ├── comment.model.php │ │ ├── comment.view.php │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── de.php │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── mn.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── queries/ │ │ │ ├── deleteComment.xml │ │ │ ├── deleteCommentList.xml │ │ │ ├── deleteCommentVotedLog.xml │ │ │ ├── deleteComments.xml │ │ │ ├── deleteCommentsList.xml │ │ │ ├── deleteDeclaredCommentLog.xml │ │ │ ├── deleteDeclaredComments.xml │ │ │ ├── deleteModuleComments.xml │ │ │ ├── deleteModuleCommentsList.xml │ │ │ ├── getAllComments.xml │ │ │ ├── getChildCommentCount.xml │ │ │ ├── getChildComments.xml │ │ │ ├── getComment.xml │ │ │ ├── getCommentCount.xml │ │ │ ├── getCommentCountByMemberSrl.xml │ │ │ ├── getCommentDeclaredLogInfo.xml │ │ │ ├── getCommentDepth.xml │ │ │ ├── getCommentList.xml │ │ │ ├── getCommentListByMemberSrl.xml │ │ │ ├── getCommentListItem.xml │ │ │ ├── getCommentPage.xml │ │ │ ├── getCommentPageItem.xml │ │ │ ├── getCommentPageList.xml │ │ │ ├── getCommentParentNextSibling.xml │ │ │ ├── getCommentVotedLog.xml │ │ │ ├── getCommentVotedLogInfo.xml │ │ │ ├── getCommentVotedLogMulti.xml │ │ │ ├── getComments.xml │ │ │ ├── getCommentsByDocumentSrls.xml │ │ │ ├── getDeclaredComment.xml │ │ │ ├── getDeclaredLatest.xml │ │ │ ├── getDeclaredList.xml │ │ │ ├── getDeclaredLogByCommentSrl.xml │ │ │ ├── getDistinctModules.xml │ │ │ ├── getModuleList.xml │ │ │ ├── getNewestCommentList.xml │ │ │ ├── getTotalCommentCountByGroupStatus.xml │ │ │ ├── getTotalCommentCountWithinMemberByGroupStatus.xml │ │ │ ├── getTotalCommentList.xml │ │ │ ├── getTotalCommentListWithinMember.xml │ │ │ ├── getTotalCommentListWithoutJoin.xml │ │ │ ├── getVotedMemberList.xml │ │ │ ├── insertComment.xml │ │ │ ├── insertCommentDeclaredLog.xml │ │ │ ├── insertCommentList.xml │ │ │ ├── insertCommentVotedLog.xml │ │ │ ├── insertDeclaredComment.xml │ │ │ ├── updateBlamedCount.xml │ │ │ ├── updateComment.xml │ │ │ ├── updateCommentByDelete.xml │ │ │ ├── updateCommentByRestore.xml │ │ │ ├── updateCommentListArrange.xml │ │ │ ├── updateCommentListModule.xml │ │ │ ├── updateCommentModule.xml │ │ │ ├── updateDeclaredComment.xml │ │ │ ├── updateDeclaredCommentCancel.xml │ │ │ ├── updatePublishedStatus.xml │ │ │ ├── updateUploadedCount.xml │ │ │ └── updateVotedCount.xml │ │ ├── ruleset/ │ │ │ ├── deleteChecked.xml │ │ │ ├── insertCommentModuleConfig.xml │ │ │ └── insertDeclare.xml │ │ ├── schemas/ │ │ │ ├── comment_declared.xml │ │ │ ├── comment_declared_log.xml │ │ │ ├── comment_voted_log.xml │ │ │ ├── comments.xml │ │ │ └── comments_list.xml │ │ └── tpl/ │ │ ├── comment_list.html │ │ ├── comment_module_config.html │ │ ├── css/ │ │ │ └── declare_comment.css │ │ ├── declare_comment.html │ │ ├── declared_list.html │ │ ├── declared_log.html │ │ ├── filter/ │ │ │ ├── delete_checked.xml │ │ │ └── insert_comment_module_config.xml │ │ ├── header.html │ │ └── js/ │ │ └── comment_admin.js │ ├── communication/ │ │ ├── communication.admin.controller.php │ │ ├── communication.admin.model.php │ │ ├── communication.admin.view.php │ │ ├── communication.class.php │ │ ├── communication.controller.php │ │ ├── communication.mobile.php │ │ ├── communication.model.php │ │ ├── communication.view.php │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── m.skins/ │ │ │ └── default/ │ │ │ ├── css/ │ │ │ │ └── mcommunication.css │ │ │ ├── friends.html │ │ │ ├── js/ │ │ │ │ └── communication.js │ │ │ ├── message_box.html │ │ │ ├── messages.html │ │ │ ├── read_message.html │ │ │ ├── send_message.html │ │ │ └── skin.xml │ │ ├── queries/ │ │ │ ├── addFriend.xml │ │ │ ├── addFriendGroup.xml │ │ │ ├── deleteFriend.xml │ │ │ ├── deleteFriendGroup.xml │ │ │ ├── deleteMessage.xml │ │ │ ├── deleteMessages.xml │ │ │ ├── deleteMessagesMember.xml │ │ │ ├── getFriendGroup.xml │ │ │ ├── getFriendGroups.xml │ │ │ ├── getFriends.xml │ │ │ ├── getMessage.xml │ │ │ ├── getMessages.xml │ │ │ ├── getNewMessage.xml │ │ │ ├── getNewMessageCount.xml │ │ │ ├── getReadedMessages.xml │ │ │ ├── getReceivedMessages.xml │ │ │ ├── getRelatedMessages.xml │ │ │ ├── getSendedMessages.xml │ │ │ ├── getStoredMessages.xml │ │ │ ├── isAddedFriend.xml │ │ │ ├── moveFriend.xml │ │ │ ├── renameFriendGroup.xml │ │ │ ├── sendMessage.xml │ │ │ ├── setMessageReaded.xml │ │ │ ├── setMessageStored.xml │ │ │ └── updateAllowMessage.xml │ │ ├── ruleset/ │ │ │ ├── addFriend.xml │ │ │ ├── addFriendGroup.xml │ │ │ ├── deleteCheckedFriend.xml │ │ │ ├── insertConfig.xml │ │ │ ├── moveCheckedFriend.xml │ │ │ └── sendMessage.xml │ │ ├── schemas/ │ │ │ ├── member_friend.xml │ │ │ ├── member_friend_group.xml │ │ │ └── member_message.xml │ │ ├── scripts/ │ │ │ └── cleanMessageFiles.php │ │ ├── skins/ │ │ │ └── default/ │ │ │ ├── add_friend.html │ │ │ ├── add_friend_group.html │ │ │ ├── common_footer.html │ │ │ ├── common_header.html │ │ │ ├── css/ │ │ │ │ └── communication.css │ │ │ ├── filter/ │ │ │ │ ├── add_friend.xml │ │ │ │ ├── add_friend_group.xml │ │ │ │ ├── delete_checked_friend.xml │ │ │ │ ├── delete_checked_message.xml │ │ │ │ ├── delete_friend_group.xml │ │ │ │ ├── move_friend.xml │ │ │ │ ├── send_message.xml │ │ │ │ └── update_allow_message.xml │ │ │ ├── friends.html │ │ │ ├── js/ │ │ │ │ └── communication.js │ │ │ ├── messages.html │ │ │ ├── new_message.html │ │ │ ├── send_message.html │ │ │ └── skin.xml │ │ └── tpl/ │ │ ├── colorset_list.html │ │ ├── filter/ │ │ │ └── insert_config.xml │ │ ├── index.html │ │ └── js/ │ │ ├── communication_admin.js │ │ ├── member_communication.js │ │ └── window_type.js │ ├── counter/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── counter.admin.view.php │ │ ├── counter.class.php │ │ ├── counter.controller.php │ │ ├── counter.model.php │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── queries/ │ │ │ ├── getCounterLog.xml │ │ │ ├── getCounterLogStatus.xml │ │ │ ├── getCounterStatus.xml │ │ │ ├── getCounterStatusDays.xml │ │ │ ├── getSiteCounterLogStatus.xml │ │ │ ├── getSiteLogDate.xml │ │ │ ├── getStartLogDate.xml │ │ │ ├── getTodayStatus.xml │ │ │ ├── insertCounterLog.xml │ │ │ ├── insertTodayStatus.xml │ │ │ ├── updateCounterPageview.xml │ │ │ ├── updateCounterUnique.xml │ │ │ ├── updateTotalCounterPageview.xml │ │ │ └── updateTotalCounterUnique.xml │ │ ├── schemas/ │ │ │ ├── counter_log.xml │ │ │ ├── counter_site_status.xml │ │ │ └── counter_status.xml │ │ └── tpl/ │ │ ├── counter.css │ │ ├── index.html │ │ └── js/ │ │ └── counter_admin.js │ ├── document/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── document.admin.controller.php │ │ ├── document.admin.model.php │ │ ├── document.admin.view.php │ │ ├── document.class.php │ │ ├── document.controller.php │ │ ├── document.item.php │ │ ├── document.model.php │ │ ├── document.view.php │ │ ├── lang/ │ │ │ ├── de.php │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── mn.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── queries/ │ │ │ ├── deleteAlias.xml │ │ │ ├── deleteCategory.xml │ │ │ ├── deleteDeclared.xml │ │ │ ├── deleteDeclaredDocument.xml │ │ │ ├── deleteDeclaredDocumentLog.xml │ │ │ ├── deleteDeclaredDocuments.xml │ │ │ ├── deleteDocument.xml │ │ │ ├── deleteDocumentDeclaredLog.xml │ │ │ ├── deleteDocumentExtraKeys.xml │ │ │ ├── deleteDocumentExtraVars.xml │ │ │ ├── deleteDocumentReadedLog.xml │ │ │ ├── deleteDocumentUpdateLog.xml │ │ │ ├── deleteDocumentVotedLog.xml │ │ │ ├── deleteHistory.xml │ │ │ ├── deleteModuleCategory.xml │ │ │ ├── deleteModuleDocument.xml │ │ │ ├── deleteTrash.xml │ │ │ ├── getAliases.xml │ │ │ ├── getAllModules.xml │ │ │ ├── getCategory.xml │ │ │ ├── getCategoryDocumentCount.xml │ │ │ ├── getCategoryDocumentCounts.xml │ │ │ ├── getCategoryList.xml │ │ │ ├── getChildCategoryCount.xml │ │ │ ├── getChildCategoryMinListOrder.xml │ │ │ ├── getDailyArchivedList.xml │ │ │ ├── getDeclaredDocument.xml │ │ │ ├── getDeclaredLatest.xml │ │ │ ├── getDeclaredList.xml │ │ │ ├── getDeclaredLogByDocumentSrl.xml │ │ │ ├── getDocument.xml │ │ │ ├── getDocumentCount.xml │ │ │ ├── getDocumentCountByDate.xml │ │ │ ├── getDocumentCountByGroupStatus.xml │ │ │ ├── getDocumentCountByMemberSrl.xml │ │ │ ├── getDocumentDeclaredLogInfo.xml │ │ │ ├── getDocumentDivision.xml │ │ │ ├── getDocumentDivisionCount.xml │ │ │ ├── getDocumentDivisionUseIndex.xml │ │ │ ├── getDocumentExtraKeys.xml │ │ │ ├── getDocumentExtraVars.xml │ │ │ ├── getDocumentExtraVarsCount.xml │ │ │ ├── getDocumentList.xml │ │ │ ├── getDocumentListByMemberSrl.xml │ │ │ ├── getDocumentListExtraSort.xml │ │ │ ├── getDocumentListPage.xml │ │ │ ├── getDocumentListUseIndex.xml │ │ │ ├── getDocumentListWithExtraVars.xml │ │ │ ├── getDocumentListWithExtraVarsPage.xml │ │ │ ├── getDocumentListWithinComment.xml │ │ │ ├── getDocumentListWithinCommentPage.xml │ │ │ ├── getDocumentListWithinExtraVars.xml │ │ │ ├── getDocumentListWithinExtraVarsExtraSort.xml │ │ │ ├── getDocumentListWithinMember.xml │ │ │ ├── getDocumentListWithinTag.xml │ │ │ ├── getDocumentListWithinTagPage.xml │ │ │ ├── getDocumentMaxExtraKeyIdx.xml │ │ │ ├── getDocumentNumericExtraKeys.xml │ │ │ ├── getDocumentReadedLogInfo.xml │ │ │ ├── getDocumentSrlByAlias.xml │ │ │ ├── getDocumentSrlByTitle.xml │ │ │ ├── getDocumentTags.xml │ │ │ ├── getDocumentTranslationLangCodes.xml │ │ │ ├── getDocumentUpdateLog.xml │ │ │ ├── getDocumentVotedLog.xml │ │ │ ├── getDocumentVotedLogInfo.xml │ │ │ ├── getDocuments.xml │ │ │ ├── getDocumentsExtraVars.xml │ │ │ ├── getGroupsExtraKeys.xml │ │ │ ├── getGroupsExtraVars.xml │ │ │ ├── getHistories.xml │ │ │ ├── getHistory.xml │ │ │ ├── getModuleList.xml │ │ │ ├── getMonthlyArchivedList.xml │ │ │ ├── getNoticeList.xml │ │ │ ├── getTrash.xml │ │ │ ├── getTrashByDocumentSrl.xml │ │ │ ├── getTrashList.xml │ │ │ ├── getUpdateLog.xml │ │ │ ├── getUpdateLogAdminisExists.xml │ │ │ ├── getVotedMemberList.xml │ │ │ ├── insertAlias.xml │ │ │ ├── insertCategory.xml │ │ │ ├── insertDeclaredDocument.xml │ │ │ ├── insertDocument.xml │ │ │ ├── insertDocumentDeclaredLog.xml │ │ │ ├── insertDocumentExtraKey.xml │ │ │ ├── insertDocumentExtraVar.xml │ │ │ ├── insertDocumentReadedLog.xml │ │ │ ├── insertDocumentUpdateLog.xml │ │ │ ├── insertDocumentVotedLog.xml │ │ │ ├── insertHistory.xml │ │ │ ├── insertTrash.xml │ │ │ ├── isExistsExtraKey.xml │ │ │ ├── moveDocumentExtraVars.xml │ │ │ ├── updateBlamedCount.xml │ │ │ ├── updateCategory.xml │ │ │ ├── updateCategoryCount.xml │ │ │ ├── updateCategoryIsDefault.xml │ │ │ ├── updateCategoryOrder.xml │ │ │ ├── updateCommentCount.xml │ │ │ ├── updateDeclaredDocument.xml │ │ │ ├── updateDeclaredDocumentCancel.xml │ │ │ ├── updateDocument.xml │ │ │ ├── updateDocumentCategory.xml │ │ │ ├── updateDocumentCommentStatus.xml │ │ │ ├── updateDocumentExtraKey.xml │ │ │ ├── updateDocumentExtraKeyEid.xml │ │ │ ├── updateDocumentExtraKeyIdx.xml │ │ │ ├── updateDocumentExtraKeyIdxOrder.xml │ │ │ ├── updateDocumentExtraVar.xml │ │ │ ├── updateDocumentExtraVarEid.xml │ │ │ ├── updateDocumentExtraVarIdx.xml │ │ │ ├── updateDocumentExtraVarIdxOrder.xml │ │ │ ├── updateDocumentExtraVarSortValue.xml │ │ │ ├── updateDocumentExtraVarsModule.xml │ │ │ ├── updateDocumentModule.xml │ │ │ ├── updateDocumentOrder.xml │ │ │ ├── updateDocumentStatus.xml │ │ │ ├── updateDocumentTags.xml │ │ │ ├── updateDocumentsAllowCommentTrackback.xml │ │ │ ├── updateDocumentsLangCode.xml │ │ │ ├── updateDocumentsModule.xml │ │ │ ├── updateDocumentsSecret.xml │ │ │ ├── updateReadedCount.xml │ │ │ ├── updateTrackbackCount.xml │ │ │ ├── updateUploadedCount.xml │ │ │ └── updateVotedCount.xml │ │ ├── ruleset/ │ │ │ ├── deleteAlias.xml │ │ │ ├── insertAlias.xml │ │ │ ├── insertCategory.xml │ │ │ ├── insertDeclare.xml │ │ │ └── insertExtraVar.xml │ │ ├── schemas/ │ │ │ ├── document_aliases.xml │ │ │ ├── document_categories.xml │ │ │ ├── document_declared.xml │ │ │ ├── document_declared_log.xml │ │ │ ├── document_extra_keys.xml │ │ │ ├── document_extra_vars.xml │ │ │ ├── document_histories.xml │ │ │ ├── document_readed_log.xml │ │ │ ├── document_trash.xml │ │ │ ├── document_update_log.xml │ │ │ ├── document_voted_log.xml │ │ │ └── documents.xml │ │ └── tpl/ │ │ ├── category_list.html │ │ ├── checked_list.html │ │ ├── css/ │ │ │ ├── declare_document.css │ │ │ └── document_admin.css │ │ ├── declare_document.html │ │ ├── declared_list.html │ │ ├── declared_log.html │ │ ├── document_alias.html │ │ ├── document_config.html │ │ ├── document_list.html │ │ ├── document_module_config.html │ │ ├── document_trash_list.html │ │ ├── extra_keys.html │ │ ├── filter/ │ │ │ ├── delete_alias.xml │ │ │ ├── delete_category.xml │ │ │ ├── delete_checked.xml │ │ │ ├── delete_extra_var.xml │ │ │ ├── insert_alias.xml │ │ │ ├── insert_category.xml │ │ │ ├── insert_config.xml │ │ │ ├── insert_document_module_config.xml │ │ │ ├── insert_extra_var.xml │ │ │ ├── manage_checked_document.xml │ │ │ ├── move_category.xml │ │ │ └── restore_trash.xml │ │ ├── header.html │ │ ├── js/ │ │ │ ├── document_admin.js │ │ │ ├── document_category.js │ │ │ └── document_extra_keys.js │ │ ├── preview_page.html │ │ ├── print_page.html │ │ └── saved_list_popup.html │ ├── editor/ │ │ ├── components/ │ │ │ ├── emoticon/ │ │ │ │ ├── emoticon.class.php │ │ │ │ ├── info.xml │ │ │ │ └── tpl/ │ │ │ │ ├── images/ │ │ │ │ │ └── Twemoji/ │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── LICENSE-GRAPHICS │ │ │ │ │ ├── README.md │ │ │ │ │ └── skin.xml │ │ │ │ ├── popup.html │ │ │ │ ├── popup.js │ │ │ │ └── popup.scss │ │ │ ├── image_gallery/ │ │ │ │ ├── image_gallery.class.php │ │ │ │ ├── info.xml │ │ │ │ ├── lang/ │ │ │ │ │ └── lang.xml │ │ │ │ └── tpl/ │ │ │ │ ├── gallery.js │ │ │ │ ├── list_gallery.html │ │ │ │ ├── list_gallery.js │ │ │ │ ├── popup.css │ │ │ │ ├── popup.html │ │ │ │ ├── popup.js │ │ │ │ ├── slide_gallery.css │ │ │ │ ├── slide_gallery.html │ │ │ │ └── slide_gallery.js │ │ │ ├── image_link/ │ │ │ │ ├── image_link.class.php │ │ │ │ ├── info.xml │ │ │ │ ├── lang/ │ │ │ │ │ └── lang.xml │ │ │ │ └── tpl/ │ │ │ │ ├── popup.css │ │ │ │ ├── popup.html │ │ │ │ └── popup.js │ │ │ └── poll_maker/ │ │ │ ├── info.xml │ │ │ ├── lang/ │ │ │ │ └── lang.xml │ │ │ ├── poll_maker.class.php │ │ │ └── tpl/ │ │ │ ├── filter/ │ │ │ │ └── insert_poll.xml │ │ │ ├── popup.css │ │ │ ├── popup.html │ │ │ └── popup.js │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── editor.admin.controller.php │ │ ├── editor.admin.view.php │ │ ├── editor.api.php │ │ ├── editor.class.php │ │ ├── editor.controller.php │ │ ├── editor.model.php │ │ ├── editor.view.php │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── queries/ │ │ │ ├── deleteSavedDoc.xml │ │ │ ├── deleteSiteComponent.xml │ │ │ ├── getComponent.xml │ │ │ ├── getComponentList.xml │ │ │ ├── getSavedDocument.xml │ │ │ ├── getSiteComponent.xml │ │ │ ├── getSiteComponentList.xml │ │ │ ├── insertComponent.xml │ │ │ ├── insertSavedDoc.xml │ │ │ ├── insertSiteComponent.xml │ │ │ ├── isComponentInserted.xml │ │ │ ├── isSiteComponentInserted.xml │ │ │ ├── updateComponent.xml │ │ │ └── updateSiteComponent.xml │ │ ├── ruleset/ │ │ │ ├── componentOrderAndUse.xml │ │ │ ├── generalConfig.xml │ │ │ └── setupComponent.xml │ │ ├── schemas/ │ │ │ ├── editor_autosave.xml │ │ │ ├── editor_components.xml │ │ │ └── editor_components_site.xml │ │ ├── skins/ │ │ │ ├── ckeditor/ │ │ │ │ ├── config.blade.php │ │ │ │ ├── css/ │ │ │ │ │ └── ckeditor.scss │ │ │ │ ├── editor.html │ │ │ │ ├── file_upload.html │ │ │ │ ├── js/ │ │ │ │ │ ├── editor.js │ │ │ │ │ ├── file_upload.js │ │ │ │ │ └── xe_textarea.js │ │ │ │ ├── lang/ │ │ │ │ │ ├── en.php │ │ │ │ │ └── ko.php │ │ │ │ └── skin.xml │ │ │ ├── simpleeditor/ │ │ │ │ ├── css/ │ │ │ │ │ └── simpleeditor.scss │ │ │ │ ├── editor.html │ │ │ │ ├── js/ │ │ │ │ │ ├── interface.js │ │ │ │ │ └── simpleeditor.js │ │ │ │ └── skin.xml │ │ │ └── textarea/ │ │ │ ├── css/ │ │ │ │ └── textarea.css │ │ │ ├── editor.html │ │ │ ├── js/ │ │ │ │ ├── interface.js │ │ │ │ └── textarea.js │ │ │ └── skin.xml │ │ └── tpl/ │ │ ├── admin_index.html │ │ ├── component_not_founded.html │ │ ├── config_preview.html │ │ ├── css/ │ │ │ ├── editor.css │ │ │ ├── editor_admin.css │ │ │ ├── editor_module_config.css │ │ │ └── view_component.css │ │ ├── editor_frame.html │ │ ├── editor_module_config.html │ │ ├── filter/ │ │ │ ├── insert_editor_module_config.xml │ │ │ └── setup_component.xml │ │ ├── images/ │ │ │ └── SWFUpload.swf │ │ ├── js/ │ │ │ ├── editor.app.js │ │ │ ├── editor_admin.js │ │ │ ├── editor_common.js │ │ │ └── editor_module_config.js │ │ ├── popup.html │ │ ├── setup_component.html │ │ └── view_component.html │ ├── extravar/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── controllers/ │ │ │ ├── Base.php │ │ │ ├── Config.php │ │ │ └── Install.php │ │ ├── models/ │ │ │ ├── Value.php │ │ │ └── ValueCollection.php │ │ ├── skins/ │ │ │ └── default/ │ │ │ ├── assets/ │ │ │ │ ├── file_upload.js │ │ │ │ └── number.js │ │ │ ├── form.blade.php │ │ │ ├── form_types/ │ │ │ │ ├── checkbox.blade.php │ │ │ │ ├── datetime.blade.php │ │ │ │ ├── file_upload.blade.php │ │ │ │ ├── kr_zip.blade.php │ │ │ │ ├── locale.blade.php │ │ │ │ ├── password.blade.php │ │ │ │ ├── select.blade.php │ │ │ │ ├── tel.blade.php │ │ │ │ ├── text.blade.php │ │ │ │ └── textarea.blade.php │ │ │ └── skin.xml │ │ └── views/ │ │ ├── config.blade.php │ │ └── header.blade.php │ ├── file/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── file.admin.controller.php │ │ ├── file.admin.model.php │ │ ├── file.admin.view.php │ │ ├── file.class.php │ │ ├── file.controller.php │ │ ├── file.model.php │ │ ├── file.view.php │ │ ├── lang/ │ │ │ ├── de.php │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── mn.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── queries/ │ │ │ ├── deleteFile.xml │ │ │ ├── deleteFiles.xml │ │ │ ├── deleteModuleFiles.xml │ │ │ ├── getAttachedFileSize.xml │ │ │ ├── getCoverImage.xml │ │ │ ├── getFile.xml │ │ │ ├── getFileList.xml │ │ │ ├── getFileListByTargetStatus.xml │ │ │ ├── getFiles.xml │ │ │ ├── getFilesCount.xml │ │ │ ├── getFilesCountByGroupValid.xml │ │ │ ├── getModuleFiles.xml │ │ │ ├── getModuleFilesProper.xml │ │ │ ├── getModuleList.xml │ │ │ ├── getOneFileInDocument.xml │ │ │ ├── insertFile.xml │ │ │ ├── insertFileChangelog.xml │ │ │ ├── updateClearCoverImage.xml │ │ │ ├── updateCoverImage.xml │ │ │ ├── updateFile.xml │ │ │ ├── updateFileDownloadCount.xml │ │ │ ├── updateFileModule.xml │ │ │ ├── updateFileModuleComment.xml │ │ │ ├── updateFileName.xml │ │ │ ├── updateFileTargetType.xml │ │ │ └── updateFileValid.xml │ │ ├── ruleset/ │ │ │ ├── deleteChecked.xml │ │ │ ├── fileModuleConfig.xml │ │ │ └── insertConfig.xml │ │ ├── schemas/ │ │ │ ├── files.xml │ │ │ └── files_changelog.xml │ │ ├── scripts/ │ │ │ ├── cleanEmptyDirs.php │ │ │ ├── cleanGarbageFiles.php │ │ │ └── cleanThumbnails.php │ │ └── tpl/ │ │ ├── css/ │ │ │ ├── config.css │ │ │ └── file_list.css │ │ ├── download_config.html │ │ ├── file_edit.html │ │ ├── file_list.html │ │ ├── file_module_config.html │ │ ├── filter/ │ │ │ ├── delete_checked.xml │ │ │ ├── insert_config.xml │ │ │ └── insert_file_module_config.xml │ │ ├── header.html │ │ ├── iframe.html │ │ ├── js/ │ │ │ ├── config.js │ │ │ ├── file_admin.js │ │ │ └── fileupload.app.js │ │ ├── other_config.html │ │ ├── print_uploaded_file_list.html │ │ └── upload_config.html │ ├── importer/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── extract.class.php │ │ ├── importer.admin.controller.php │ │ ├── importer.admin.view.php │ │ ├── importer.class.php │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── queries/ │ │ │ ├── getCommentMemberSrlWithUserID.xml │ │ │ ├── getCommentMemberSrlWithUserIDByEmail.xml │ │ │ ├── getDocumentMemberSrlWithUserID.xml │ │ │ ├── getDocumentMemberSrlWithUserIDByEmail.xml │ │ │ ├── updateCommentSync.xml │ │ │ ├── updateCommentSyncByEmail.xml │ │ │ ├── updateCommentSyncForCUBRID.xml │ │ │ ├── updateCommentSyncForCUBRIDByEmail.xml │ │ │ ├── updateDocumentSync.xml │ │ │ ├── updateDocumentSyncByEmail.xml │ │ │ ├── updateDocumentSyncForCUBRID.xml │ │ │ └── updateDocumentSyncForCUBRIDByEmail.xml │ │ ├── tpl/ │ │ │ ├── filter/ │ │ │ │ └── step1.xml │ │ │ ├── header.html │ │ │ ├── index.html │ │ │ ├── js/ │ │ │ │ └── importer_admin.js │ │ │ └── process.html │ │ └── ttimport.class.php │ ├── install/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── install.admin.controller.php │ │ ├── install.class.php │ │ ├── install.controller.php │ │ ├── install.model.php │ │ ├── install.view.php │ │ ├── lang/ │ │ │ ├── de.php │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── mn.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── ruleset/ │ │ │ └── install.xml │ │ ├── schemas/ │ │ │ └── sequence.xml │ │ ├── script/ │ │ │ ├── ko.install.php │ │ │ ├── welcome_content/ │ │ │ │ ├── welcome.css │ │ │ │ └── welcome_content.html │ │ │ └── xeicon_content/ │ │ │ ├── xeicon_content_ko_1.html │ │ │ ├── xeicon_content_ko_2.html │ │ │ ├── xeicon_content_ko_3.html │ │ │ └── xeicon_content_ko_4.html │ │ └── tpl/ │ │ ├── check_env.html │ │ ├── css/ │ │ │ └── install.css │ │ ├── db_config.html │ │ ├── filter/ │ │ │ ├── admin.xml │ │ │ ├── config.xml │ │ │ ├── cubrid.xml │ │ │ ├── firebird.xml │ │ │ ├── mssql.xml │ │ │ ├── mysql.xml │ │ │ ├── postgresql.xml │ │ │ └── sqlite2.xml │ │ ├── footer.html │ │ ├── header.html │ │ ├── introduce.html │ │ ├── js/ │ │ │ └── install.js │ │ ├── license_agreement.html │ │ ├── license_text.en.html │ │ ├── license_text.ko.html │ │ ├── other_config.html │ │ └── progress_menu.html │ ├── integration_search/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── integration_search.admin.controller.php │ │ ├── integration_search.admin.view.php │ │ ├── integration_search.class.php │ │ ├── integration_search.mobile.php │ │ ├── integration_search.model.php │ │ ├── integration_search.view.php │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── models/ │ │ │ └── FileSearchResult.php │ │ ├── ruleset/ │ │ │ └── insertConfig.xml │ │ ├── skins/ │ │ │ ├── default/ │ │ │ │ ├── comment.html │ │ │ │ ├── document.html │ │ │ │ ├── file.html │ │ │ │ ├── header.html │ │ │ │ ├── index.html │ │ │ │ ├── multimedia.html │ │ │ │ ├── no_keywords.html │ │ │ │ ├── skin.xml │ │ │ │ └── white.css │ │ │ └── misol_town/ │ │ │ ├── LICENSE │ │ │ ├── _page.html │ │ │ ├── comment.html │ │ │ ├── css/ │ │ │ │ ├── blue.css │ │ │ │ └── crimson.css │ │ │ ├── document.html │ │ │ ├── file.html │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── index.html │ │ │ ├── multimedia.html │ │ │ ├── no_keywords.html │ │ │ ├── skin.xml │ │ │ └── trackback.html │ │ └── tpl/ │ │ ├── filter/ │ │ │ └── insert_config.xml │ │ ├── header.html │ │ ├── index.html │ │ ├── js/ │ │ │ └── integration_search_admin.js │ │ └── skin_info.html │ ├── krzip/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── krzip.admin.controller.php │ │ ├── krzip.admin.view.php │ │ ├── krzip.class.php │ │ ├── krzip.controller.php │ │ ├── krzip.model.php │ │ ├── krzip.view.php │ │ ├── lang/ │ │ │ ├── en.php │ │ │ └── ko.php │ │ ├── ruleset/ │ │ │ └── krzipConfig.xml │ │ └── tpl/ │ │ ├── config.html │ │ ├── css/ │ │ │ ├── default.css │ │ │ └── popup.css │ │ ├── js/ │ │ │ ├── admin.js │ │ │ ├── daumapi.js │ │ │ ├── epostapi.js │ │ │ ├── epostapi.search.js │ │ │ └── postcodify.js │ │ ├── searchForm.epostapi.html │ │ ├── template.daumapi.html │ │ ├── template.epostapi.html │ │ └── template.postcodify.html │ ├── layout/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── faceoff/ │ │ │ ├── conf/ │ │ │ │ └── info.xml │ │ │ ├── css/ │ │ │ │ └── layout.css │ │ │ ├── js/ │ │ │ │ └── layout.js │ │ │ ├── layout.html │ │ │ └── layout.ini │ │ ├── lang/ │ │ │ ├── de.php │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── layout.admin.controller.php │ │ ├── layout.admin.model.php │ │ ├── layout.admin.view.php │ │ ├── layout.class.php │ │ ├── layout.model.php │ │ ├── layout.view.php │ │ ├── queries/ │ │ │ ├── deleteLayout.xml │ │ │ ├── getLayout.xml │ │ │ ├── getLayoutDotList.xml │ │ │ ├── getLayoutList.xml │ │ │ ├── getLayoutModules.xml │ │ │ ├── getOneModuleInstanceByModuleName.xml │ │ │ ├── insertLayout.xml │ │ │ ├── updateAllLayoutInSiteWithTheme.xml │ │ │ ├── updateLayout.xml │ │ │ ├── updateModuleLayout.xml │ │ │ └── updateModuleMLayout.xml │ │ ├── ruleset/ │ │ │ ├── codeUpdate.xml │ │ │ ├── deleteLayout.xml │ │ │ ├── imageUpload.xml │ │ │ ├── insertLayout.xml │ │ │ ├── updateLayout.xml │ │ │ └── userLayoutImport.xml │ │ ├── schemas/ │ │ │ └── layouts.xml │ │ └── tpl/ │ │ ├── after_upload_config_image.html │ │ ├── copy_layout.html │ │ ├── css/ │ │ │ ├── faceoff_menu.css │ │ │ └── widget.css │ │ ├── faceoff_layout_edit.html │ │ ├── faceoff_layout_menu.html │ │ ├── filter/ │ │ │ ├── delete_layout.xml │ │ │ ├── insert_layout.xml │ │ │ ├── reset_layout_code.xml │ │ │ ├── update_layout_code.xml │ │ │ └── update_layout_info.xml │ │ ├── header.html │ │ ├── installed_layout_list.html │ │ ├── js/ │ │ │ ├── adminEdit.js │ │ │ ├── adminList.js │ │ │ ├── faceoff.js │ │ │ ├── layout_admin.js │ │ │ ├── layout_admin_set_html.js │ │ │ ├── layout_image_list.js │ │ │ ├── layout_modify.js │ │ │ ├── ui.hotkey.js │ │ │ └── ui.toolbar.js │ │ ├── layout_all_instance_list.html │ │ ├── layout_edit.html │ │ ├── layout_html_css_view.html │ │ ├── layout_info_view.html │ │ ├── layout_instance_list.html │ │ ├── layout_modify.html │ │ ├── layout_preview.html │ │ ├── sub_tab.html │ │ └── top_refresh.html │ ├── member/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── controllers/ │ │ │ └── Device.php │ │ ├── lang/ │ │ │ ├── de.php │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── mn.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── m.skins/ │ │ │ └── default/ │ │ │ ├── active_logins.html │ │ │ ├── comment_list.html │ │ │ ├── common_footer.html │ │ │ ├── common_header.html │ │ │ ├── css/ │ │ │ │ ├── member.css │ │ │ │ ├── mlogin.css │ │ │ │ └── msignup.css │ │ │ ├── document_list.html │ │ │ ├── find_member_account.html │ │ │ ├── find_temp_password.html │ │ │ ├── leave_form.html │ │ │ ├── login_form.html │ │ │ ├── member_info.html │ │ │ ├── member_nick.html │ │ │ ├── modify_email_address.html │ │ │ ├── modify_info.html │ │ │ ├── modify_password.html │ │ │ ├── rechecked_password.html │ │ │ ├── saved_list.html │ │ │ ├── scrapped_list.html │ │ │ ├── signup_form.html │ │ │ └── skin.xml │ │ ├── member.admin.controller.php │ │ ├── member.admin.model.php │ │ ├── member.admin.view.php │ │ ├── member.api.php │ │ ├── member.class.php │ │ ├── member.controller.php │ │ ├── member.mobile.php │ │ ├── member.model.php │ │ ├── member.view.php │ │ ├── queries/ │ │ │ ├── addMemberToGroup.xml │ │ │ ├── addScrapDocument.xml │ │ │ ├── changeGroup.xml │ │ │ ├── chkAuthMail.xml │ │ │ ├── chkAuthSms.xml │ │ │ ├── chkDeniedID.xml │ │ │ ├── chkDeniedNickName.xml │ │ │ ├── deleteAgreed.xml │ │ │ ├── deleteAuthChangeEmailAddress.xml │ │ │ ├── deleteAuthMail.xml │ │ │ ├── deleteAutologin.xml │ │ │ ├── deleteDeniedID.xml │ │ │ ├── deleteDeniedNickName.xml │ │ │ ├── deleteGroup.xml │ │ │ ├── deleteJoinForm.xml │ │ │ ├── deleteLoginCountByIp.xml │ │ │ ├── deleteLoginCountHistoryByMemberSrl.xml │ │ │ ├── deleteManagedEmailHost.xml │ │ │ ├── deleteMember.xml │ │ │ ├── deleteMemberDevice.xml │ │ │ ├── deleteMemberGroup.xml │ │ │ ├── deleteMemberGroupMember.xml │ │ │ ├── deleteMemberModifyNickNameLog.xml │ │ │ ├── deleteMembersGroup.xml │ │ │ ├── deleteScrapDocument.xml │ │ │ ├── deleteScrapDocumentByDocumentSrl.xml │ │ │ ├── deleteScrapFolder.xml │ │ │ ├── deleteSiteGroup.xml │ │ │ ├── getAdminGroup.xml │ │ │ ├── getAdmins.xml │ │ │ ├── getAuthMail.xml │ │ │ ├── getAuthMailInfo.xml │ │ │ ├── getAuthMailType.xml │ │ │ ├── getAutologin.xml │ │ │ ├── getDefaultGroup.xml │ │ │ ├── getDeniedAndStatus.xml │ │ │ ├── getDeniedIDList.xml │ │ │ ├── getDeniedIDs.xml │ │ │ ├── getDeniedNickNames.xml │ │ │ ├── getGroup.xml │ │ │ ├── getGroups.xml │ │ │ ├── getJoinForm.xml │ │ │ ├── getJoinFormList.xml │ │ │ ├── getLoginCountByIp.xml │ │ │ ├── getLoginCountHistoryByMemberSrl.xml │ │ │ ├── getManagedEmailHosts.xml │ │ │ ├── getMemberCountByDate.xml │ │ │ ├── getMemberCountByPhoneCountry.xml │ │ │ ├── getMemberDevice.xml │ │ │ ├── getMemberDeviceTokensByMemberSrl.xml │ │ │ ├── getMemberGroupMember.xml │ │ │ ├── getMemberGroupMemberCountByDate.xml │ │ │ ├── getMemberGroups.xml │ │ │ ├── getMemberInfo.xml │ │ │ ├── getMemberInfoByEmailAddress.xml │ │ │ ├── getMemberInfoByMemberSrl.xml │ │ │ ├── getMemberInfoByPhoneNumber.xml │ │ │ ├── getMemberList.xml │ │ │ ├── getMemberListWithinGroup.xml │ │ │ ├── getMemberModifyNickName.xml │ │ │ ├── getMemberSrl.xml │ │ │ ├── getMembers.xml │ │ │ ├── getMembersGroup.xml │ │ │ ├── getMembersGroups.xml │ │ │ ├── getScrapDocument.xml │ │ │ ├── getScrapDocumentList.xml │ │ │ ├── getScrapFolderList.xml │ │ │ ├── getSiteAdminMemberSrls.xml │ │ │ ├── getSiteMemberList.xml │ │ │ ├── insertAgreed.xml │ │ │ ├── insertAuthMail.xml │ │ │ ├── insertAuthSms.xml │ │ │ ├── insertAutologin.xml │ │ │ ├── insertDeniedID.xml │ │ │ ├── insertDeniedNickName.xml │ │ │ ├── insertGroup.xml │ │ │ ├── insertJoinForm.xml │ │ │ ├── insertLoginCountByIp.xml │ │ │ ├── insertLoginCountHistoryByMemberSrl.xml │ │ │ ├── insertManagedEmailHost.xml │ │ │ ├── insertMember.xml │ │ │ ├── insertMemberDevice.xml │ │ │ ├── insertMemberModifyNickName.xml │ │ │ ├── insertScrapFolder.xml │ │ │ ├── updateAllChangePasswordDate.xml │ │ │ ├── updateAllMemberGroupListOrder.xml │ │ │ ├── updateAuthMail.xml │ │ │ ├── updateAutologin.xml │ │ │ ├── updateChangePasswordDate.xml │ │ │ ├── updateFindAccountAnswer.xml │ │ │ ├── updateGroup.xml │ │ │ ├── updateGroupDefaultClear.xml │ │ │ ├── updateJoinForm.xml │ │ │ ├── updateLastLogin.xml │ │ │ ├── updateLoginCountByIp.xml │ │ │ ├── updateLoginCountHistoryByMemberSrl.xml │ │ │ ├── updateMember.xml │ │ │ ├── updateMemberDeniedInfo.xml │ │ │ ├── updateMemberDevice.xml │ │ │ ├── updateMemberDeviceLastActiveDate.xml │ │ │ ├── updateMemberEmailAddress.xml │ │ │ ├── updateMemberExtraVars.xml │ │ │ ├── updateMemberFindQuestionAnswer.xml │ │ │ ├── updateMemberGroupListOrder.xml │ │ │ ├── updateMemberJoinFormListorder.xml │ │ │ ├── updateMemberListOrderAll.xml │ │ │ ├── updateMemberPassword.xml │ │ │ ├── updateMemberPhoneCountry.xml │ │ │ ├── updateMemberPhoneNumber.xml │ │ │ ├── updateMemberStatus.xml │ │ │ ├── updateScrapDocumentFolder.xml │ │ │ ├── updateScrapFolder.xml │ │ │ └── updateScrapFolderFromNull.xml │ │ ├── ruleset/ │ │ │ ├── deleteGroup.xml │ │ │ ├── findAccount.xml │ │ │ ├── insert.xml │ │ │ ├── insertAdminMember.xml │ │ │ ├── insertDefaultConfig.xml │ │ │ ├── insertDeniedId.xml │ │ │ ├── insertGroup.xml │ │ │ ├── insertJoinForm.xml │ │ │ ├── insertLoginConfig.xml │ │ │ ├── leaveMember.xml │ │ │ ├── login.xml │ │ │ ├── manageMemberGroup.xml │ │ │ ├── modifyEmailAddress.xml │ │ │ ├── modifyInfo.xml │ │ │ ├── modifyPassword.xml │ │ │ ├── recheckedPassword.xml │ │ │ ├── resendAuthMail.xml │ │ │ ├── resetAuthMail.xml │ │ │ ├── resetPassword.xml │ │ │ ├── signup.xml │ │ │ ├── updateGroup.xml │ │ │ └── updateSeletedMemberInfo.xml │ │ ├── schemas/ │ │ │ ├── member.xml │ │ │ ├── member_agreed.xml │ │ │ ├── member_auth_mail.xml │ │ │ ├── member_auth_sms.xml │ │ │ ├── member_autologin.xml │ │ │ ├── member_count_history.xml │ │ │ ├── member_denied_nick_name.xml │ │ │ ├── member_denied_user_id.xml │ │ │ ├── member_devices.xml │ │ │ ├── member_group.xml │ │ │ ├── member_group_member.xml │ │ │ ├── member_join_form.xml │ │ │ ├── member_login_count.xml │ │ │ ├── member_managed_email_hosts.xml │ │ │ ├── member_nickname_log.xml │ │ │ ├── member_scrap.xml │ │ │ └── member_scrap_folders.xml │ │ ├── skins/ │ │ │ └── default/ │ │ │ ├── active_logins.html │ │ │ ├── comment_list.html │ │ │ ├── common_footer.html │ │ │ ├── common_header.html │ │ │ ├── confirm_member_account_mail.html │ │ │ ├── confirm_member_new_email.html │ │ │ ├── css/ │ │ │ │ └── member.css │ │ │ ├── document_list.html │ │ │ ├── filter/ │ │ │ │ ├── delete_image_mark.xml │ │ │ │ ├── delete_image_name.xml │ │ │ │ ├── delete_profile_image.xml │ │ │ │ ├── find_member_account.xml │ │ │ │ ├── leave_member.xml │ │ │ │ ├── login.xml │ │ │ │ ├── modify_info.xml │ │ │ │ ├── modify_password.xml │ │ │ │ ├── resend_auth_mail.xml │ │ │ │ ├── signup.xml │ │ │ │ └── update_allow_message.xml │ │ │ ├── find_member_account.html │ │ │ ├── find_member_account_mail.html │ │ │ ├── js/ │ │ │ │ └── member.js │ │ │ ├── leave_form.html │ │ │ ├── login_form.html │ │ │ ├── member_info.html │ │ │ ├── member_nick.html │ │ │ ├── modify_email_address.html │ │ │ ├── modify_info.html │ │ │ ├── modify_password.html │ │ │ ├── rechecked_password.html │ │ │ ├── resend_auth_mail.html │ │ │ ├── reset_password.html │ │ │ ├── saved_list.html │ │ │ ├── scrapped_list.html │ │ │ ├── signup_form.html │ │ │ └── skin.xml │ │ └── tpl/ │ │ ├── agreements_config.html │ │ ├── colorset_list.html │ │ ├── css/ │ │ │ ├── member.css │ │ │ ├── mlogin.css │ │ │ └── msignup.css │ │ ├── default_config.html │ │ ├── design_config.html │ │ ├── features_config.html │ │ ├── filter/ │ │ │ ├── delete_image_mark.xml │ │ │ ├── delete_image_name.xml │ │ │ ├── delete_member.xml │ │ │ ├── delete_members.xml │ │ │ ├── delete_profile_image.xml │ │ │ ├── insert.xml │ │ │ ├── insert_config.xml │ │ │ ├── insert_denied_id.xml │ │ │ ├── insert_group.xml │ │ │ ├── insert_join_form.xml │ │ │ ├── manage_member_group.xml │ │ │ ├── update_denied_id.xml │ │ │ ├── update_group.xml │ │ │ ├── update_join_form.xml │ │ │ └── update_member.xml │ │ ├── group_list.html │ │ ├── header.html │ │ ├── insert_join_form.html │ │ ├── insert_member.html │ │ ├── js/ │ │ │ ├── config.js │ │ │ ├── default_config.js │ │ │ ├── design_config.js │ │ │ ├── member_admin.js │ │ │ ├── member_admin_group.js │ │ │ ├── member_admin_list.js │ │ │ ├── signup_check.js │ │ │ └── signup_config.js │ │ ├── login_config.html │ │ ├── member_info.html │ │ ├── member_list.html │ │ ├── new_colorset_list.html │ │ ├── nick_name_log.html │ │ ├── signup_config.html │ │ └── spammer.html │ ├── menu/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── menu.admin.controller.php │ │ ├── menu.admin.model.php │ │ ├── menu.admin.view.php │ │ ├── menu.class.php │ │ ├── menu.mobile.php │ │ ├── queries/ │ │ │ ├── deleteMenu.xml │ │ │ ├── deleteMenuItem.xml │ │ │ ├── deleteMenuItems.xml │ │ │ ├── deleteMenuLayout.xml │ │ │ ├── getChildMenuCount.xml │ │ │ ├── getMaxListorder.xml │ │ │ ├── getMenu.xml │ │ │ ├── getMenuByTitle.xml │ │ │ ├── getMenuItem.xml │ │ │ ├── getMenuItemByUrl.xml │ │ │ ├── getMenuItems.xml │ │ │ ├── getMenuLayout.xml │ │ │ ├── getMenuList.xml │ │ │ ├── getMenus.xml │ │ │ ├── getMinListorder.xml │ │ │ ├── insertMenu.xml │ │ │ ├── insertMenuItem.xml │ │ │ ├── insertMenuLayout.xml │ │ │ ├── updateMenu.xml │ │ │ ├── updateMenuItem.xml │ │ │ ├── updateMenuItemListorder.xml │ │ │ ├── updateMenuItemNode.xml │ │ │ ├── updateMenuItemParent.xml │ │ │ └── updateMenuItems.xml │ │ ├── ruleset/ │ │ │ ├── insertMenu.xml │ │ │ ├── insertMenuItem.xml │ │ │ ├── updateMenuDesign.xml │ │ │ ├── updateMenuItem.xml │ │ │ └── updateMenuTitle.xml │ │ ├── schemas/ │ │ │ ├── menu.xml │ │ │ ├── menu_item.xml │ │ │ └── menu_layout.xml │ │ └── tpl/ │ │ ├── css/ │ │ │ ├── mmenu.css │ │ │ ├── sitemap.css │ │ │ └── themes/ │ │ │ ├── apple/ │ │ │ │ └── style.css │ │ │ ├── classic/ │ │ │ │ └── style.css │ │ │ ├── default/ │ │ │ │ └── style.css │ │ │ └── default-rtl/ │ │ │ └── style.css │ │ ├── js/ │ │ │ ├── _lib/ │ │ │ │ └── jquery.cookie.js │ │ │ ├── jquery.jstree.js │ │ │ ├── jquery.scrollTo-1.4.2.js │ │ │ └── jquery.tmpl.js │ │ ├── menu.html │ │ └── sitemap.html │ ├── message/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── m.skins/ │ │ │ └── default/ │ │ │ ├── filter/ │ │ │ │ ├── login.xml │ │ │ │ ├── logout.xml │ │ │ │ └── openid_login.xml │ │ │ ├── http_status_code.html │ │ │ ├── message.css │ │ │ └── system_message.html │ │ ├── message.admin.controller.php │ │ ├── message.admin.model.php │ │ ├── message.admin.view.php │ │ ├── message.class.php │ │ ├── message.mobile.php │ │ ├── message.view.php │ │ ├── skins/ │ │ │ ├── default/ │ │ │ │ ├── filter/ │ │ │ │ │ ├── login.xml │ │ │ │ │ ├── logout.xml │ │ │ │ │ └── openid_login.xml │ │ │ │ ├── http_status_code.html │ │ │ │ ├── message.css │ │ │ │ ├── message.js │ │ │ │ └── system_message.html │ │ │ └── xedition/ │ │ │ ├── css/ │ │ │ │ └── message.css │ │ │ ├── http_status_code.html │ │ │ └── system_message.html │ │ └── tpl/ │ │ ├── colorset_list.html │ │ ├── config.html │ │ └── js/ │ │ └── config.js │ ├── module/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── models/ │ │ │ └── Permission.php │ │ ├── module.admin.controller.php │ │ ├── module.admin.model.php │ │ ├── module.admin.view.php │ │ ├── module.class.php │ │ ├── module.controller.php │ │ ├── module.mobile.php │ │ ├── module.model.php │ │ ├── module.view.php │ │ ├── queries/ │ │ │ ├── clearDefaultModule.xml │ │ │ ├── deleteActionForward.xml │ │ │ ├── deleteAdminId.xml │ │ │ ├── deleteAdminIds.xml │ │ │ ├── deleteDomain.xml │ │ │ ├── deleteLang.xml │ │ │ ├── deleteLangs.xml │ │ │ ├── deleteLock.xml │ │ │ ├── deleteLocksTimeoutPassed.xml │ │ │ ├── deleteModule.xml │ │ │ ├── deleteModuleCategory.xml │ │ │ ├── deleteModuleConfig.xml │ │ │ ├── deleteModuleExtend.xml │ │ │ ├── deleteModuleExtraVars.xml │ │ │ ├── deleteModuleFileBox.xml │ │ │ ├── deleteModuleGrants.xml │ │ │ ├── deleteModuleMobileSkinVars.xml │ │ │ ├── deleteModulePartConfig.xml │ │ │ ├── deleteModuleSkinVars.xml │ │ │ ├── deleteModuleTriggers.xml │ │ │ ├── deleteSite.xml │ │ │ ├── deleteTrigger.xml │ │ │ ├── deleteTriggers.xml │ │ │ ├── getActionForward.xml │ │ │ ├── getActionForwardWithModule.xml │ │ │ ├── getAdminID.xml │ │ │ ├── getAdminSrls.xml │ │ │ ├── getAllMobileSkinSetModule.xml │ │ │ ├── getAllSkinSetModule.xml │ │ │ ├── getDefaultMidInfo.xml │ │ │ ├── getDefaultModules.xml │ │ │ ├── getDomainInfo.xml │ │ │ ├── getDomains.xml │ │ │ ├── getLang.xml │ │ │ ├── getLangCount.xml │ │ │ ├── getLangList.xml │ │ │ ├── getLangListByLangcode.xml │ │ │ ├── getLangListByName.xml │ │ │ ├── getLangNameByValue.xml │ │ │ ├── getMidInfo.xml │ │ │ ├── getMidList.xml │ │ │ ├── getModuleAdmin.xml │ │ │ ├── getModuleCategories.xml │ │ │ ├── getModuleCategory.xml │ │ │ ├── getModuleConfig.xml │ │ │ ├── getModuleCount.xml │ │ │ ├── getModuleExtend.xml │ │ │ ├── getModuleExtraVars.xml │ │ │ ├── getModuleFileBox.xml │ │ │ ├── getModuleFileBoxList.xml │ │ │ ├── getModuleGrants.xml │ │ │ ├── getModuleInfoByDocument.xml │ │ │ ├── getModuleInfoByMenuItemSrl.xml │ │ │ ├── getModuleInfoByModuleSrl.xml │ │ │ ├── getModuleInfos.xml │ │ │ ├── getModuleListByInstance.xml │ │ │ ├── getModuleMidList.xml │ │ │ ├── getModuleMobileSkinVars.xml │ │ │ ├── getModulePartConfig.xml │ │ │ ├── getModulePartConfigs.xml │ │ │ ├── getModuleSites.xml │ │ │ ├── getModuleSkinDotList.xml │ │ │ ├── getModuleSkinVars.xml │ │ │ ├── getModuleSrlByMid.xml │ │ │ ├── getModuleUpdateLog.xml │ │ │ ├── getModulesByLayout.xml │ │ │ ├── getModulesInfo.xml │ │ │ ├── getNonuniqueDomains.xml │ │ │ ├── getNotLinkedModuleBySiteSrl.xml │ │ │ ├── getPlanetGrants.xml │ │ │ ├── getSite.xml │ │ │ ├── getSiteCount.xml │ │ │ ├── getSiteInfo.xml │ │ │ ├── getSiteModules.xml │ │ │ ├── getSites.xml │ │ │ ├── getTrigger.xml │ │ │ ├── getTriggers.xml │ │ │ ├── insertActionForward.xml │ │ │ ├── insertAdminId.xml │ │ │ ├── insertDomain.xml │ │ │ ├── insertLang.xml │ │ │ ├── insertLock.xml │ │ │ ├── insertModule.xml │ │ │ ├── insertModuleCategory.xml │ │ │ ├── insertModuleConfig.xml │ │ │ ├── insertModuleExtend.xml │ │ │ ├── insertModuleExtraVars.xml │ │ │ ├── insertModuleFileBox.xml │ │ │ ├── insertModuleGrant.xml │ │ │ ├── insertModuleMobileSkinVars.xml │ │ │ ├── insertModulePartConfig.xml │ │ │ ├── insertModuleSkinVars.xml │ │ │ ├── insertModuleUpdateLog.xml │ │ │ ├── insertSite.xml │ │ │ ├── insertTrigger.xml │ │ │ ├── isExistsModuleName.xml │ │ │ ├── updateAllModuleSkinInSiteWithTheme.xml │ │ │ ├── updateDefaultDomain.xml │ │ │ ├── updateDomain.xml │ │ │ ├── updateLangCode.xml │ │ │ ├── updateMobileSkinFixModules.xml │ │ │ ├── updateModule.xml │ │ │ ├── updateModuleCategory.xml │ │ │ ├── updateModuleFileBox.xml │ │ │ ├── updateModuleLayout.xml │ │ │ ├── updateModuleMenu.xml │ │ │ ├── updateModuleMenuSrl.xml │ │ │ ├── updateSite.xml │ │ │ ├── updateSkinAll.xml │ │ │ └── updateSkinFixModules.xml │ │ ├── ruleset/ │ │ │ ├── copyModule.xml │ │ │ ├── deleteCategory.xml │ │ │ ├── insertCategory.xml │ │ │ ├── insertModuleSetup.xml │ │ │ ├── insertModulesGrant.xml │ │ │ └── updateCategory.xml │ │ ├── schemas/ │ │ │ ├── action_forward.xml │ │ │ ├── domains.xml │ │ │ ├── lang.xml │ │ │ ├── module_admins.xml │ │ │ ├── module_categories.xml │ │ │ ├── module_config.xml │ │ │ ├── module_extend.xml │ │ │ ├── module_extra_vars.xml │ │ │ ├── module_filebox.xml │ │ │ ├── module_grants.xml │ │ │ ├── module_locks.xml │ │ │ ├── module_mobile_skins.xml │ │ │ ├── module_part_config.xml │ │ │ ├── module_skins.xml │ │ │ ├── module_trigger.xml │ │ │ ├── module_update.xml │ │ │ ├── modules.xml │ │ │ ├── sites.xml │ │ │ ├── task_queue.xml │ │ │ └── task_schedule.xml │ │ ├── scripts/ │ │ │ ├── cleanMiscLogs.php │ │ │ └── updateAllModules.php │ │ └── tpl/ │ │ ├── adminFileBox.html │ │ ├── category_list.html │ │ ├── category_update_form.html │ │ ├── copy_module.html │ │ ├── css/ │ │ │ ├── mlang.css │ │ │ └── module_admin.scss │ │ ├── filebox_add.html │ │ ├── filebox_list.html │ │ ├── filebox_list_html.html │ │ ├── filter/ │ │ │ ├── copy_module.xml │ │ │ ├── insert_category.xml │ │ │ ├── insert_grant.xml │ │ │ ├── insert_lang.xml │ │ │ ├── insert_module_setup.xml │ │ │ ├── insert_modules_grant.xml │ │ │ ├── insert_shortcut.xml │ │ │ └── update_category.xml │ │ ├── header.html │ │ ├── include.filebox.html │ │ ├── include.manage_selected.html │ │ ├── include.module_addition_setup.html │ │ ├── include.module_grant_setup.html │ │ ├── include.module_setup.html │ │ ├── include.multilang.html │ │ ├── include.multilang.textarea.html │ │ ├── js/ │ │ │ ├── filebox.js │ │ │ ├── manage_selected_module.js │ │ │ ├── mid.js │ │ │ ├── module_admin.js │ │ │ ├── module_list.js │ │ │ ├── multi_order.js │ │ │ └── multilingual.js │ │ ├── lang.html │ │ ├── module_addition_setup.html │ │ ├── module_grant_setup.html │ │ ├── module_grants.html │ │ ├── module_info.html │ │ ├── module_langcode.html │ │ ├── module_list.html │ │ ├── module_searcher_v17.html │ │ ├── module_selector.html │ │ ├── module_setup.html │ │ ├── move_filebox_list.html │ │ ├── multilingual_v17.html │ │ ├── multilingual_v17_list.html │ │ ├── skin_config.html │ │ ├── skin_info.html │ │ └── top_refresh.html │ ├── ncenterlite/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ └── ko.php │ │ ├── m.skins/ │ │ │ └── default/ │ │ │ ├── NotifyList.html │ │ │ ├── ncenter.html │ │ │ ├── ncenterlite.black.css │ │ │ ├── ncenterlite.blacknoprofile.css │ │ │ ├── ncenterlite.css │ │ │ ├── ncenterlite.gray.css │ │ │ ├── ncenterlite.graynoprofile.css │ │ │ ├── ncenterlite.html │ │ │ ├── ncenterlite.mobile.css │ │ │ ├── ncenterlite.white.css │ │ │ ├── ncenterlite.whitenoprofile.css │ │ │ ├── notify.css │ │ │ ├── skin.xml │ │ │ └── userconfig.html │ │ ├── ncenterlite.admin.controller.php │ │ ├── ncenterlite.admin.model.php │ │ ├── ncenterlite.admin.view.php │ │ ├── ncenterlite.class.php │ │ ├── ncenterlite.controller.php │ │ ├── ncenterlite.mobile.php │ │ ├── ncenterlite.model.php │ │ ├── ncenterlite.view.php │ │ ├── queries/ │ │ │ ├── deleteNcenterliteUserSettingData.xml │ │ │ ├── deleteNotifyAll.xml │ │ │ ├── deleteNotifyByMemberSrl.xml │ │ │ ├── deleteNotifyBySrl.xml │ │ │ ├── deleteNotifyByTargetType.xml │ │ │ ├── deleteNotifyType.xml │ │ │ ├── deleteUnsubscribe.xml │ │ │ ├── getAdminNotifyList.xml │ │ │ ├── getAllUserConfig.xml │ │ │ ├── getCountNewMessage.xml │ │ │ ├── getDispNotifyList.xml │ │ │ ├── getMemberAdmins.xml │ │ │ ├── getMemberSrlById.xml │ │ │ ├── getMemberSrlByNickName.xml │ │ │ ├── getMemberTotals.xml │ │ │ ├── getNotify.xml │ │ │ ├── getNotifyList.xml │ │ │ ├── getNotifyListByCommentSrl.xml │ │ │ ├── getNotifyListByDocumentSrl.xml │ │ │ ├── getNotifyMemberSrlBySrl.xml │ │ │ ├── getNotifyNewCount.xml │ │ │ ├── getNotifyType.xml │ │ │ ├── getNotifyTypeAdminList.xml │ │ │ ├── getNotifyTypeByID.xml │ │ │ ├── getOtherCommentByMemberSrl.xml │ │ │ ├── getUnsubscribeList.xml │ │ │ ├── getUserConfig.xml │ │ │ ├── getUserUnsubscribeConfigByTargetSrl.xml │ │ │ ├── getUserUnsubscribeConfigByUnsubscribeSrl.xml │ │ │ ├── insertNotify.xml │ │ │ ├── insertNotifyType.xml │ │ │ ├── insertUnsubscribe.xml │ │ │ ├── insertUserConfig.xml │ │ │ ├── updateNotifyReaded.xml │ │ │ ├── updateNotifyReadedAll.xml │ │ │ ├── updateNotifyReadedBySrl.xml │ │ │ ├── updateNotifyReadedByTargetSrl.xml │ │ │ ├── updateNotifyReadedByType.xml │ │ │ └── updateUserConfig.xml │ │ ├── ruleset/ │ │ │ └── insertConfig.xml │ │ ├── schemas/ │ │ │ ├── ncenterlite_notify.xml │ │ │ ├── ncenterlite_notify_type.xml │ │ │ ├── ncenterlite_unsubscribe.xml │ │ │ └── ncenterlite_user_set.xml │ │ ├── scripts/ │ │ │ └── cleanNotifications.php │ │ ├── skins/ │ │ │ ├── default/ │ │ │ │ ├── NotifyList.html │ │ │ │ ├── ncenterlite.black.css │ │ │ │ ├── ncenterlite.blacknoprofile.css │ │ │ │ ├── ncenterlite.css │ │ │ │ ├── ncenterlite.gray.css │ │ │ │ ├── ncenterlite.graynoprofile.css │ │ │ │ ├── ncenterlite.html │ │ │ │ ├── ncenterlite.mobile.css │ │ │ │ ├── ncenterlite.white.css │ │ │ │ ├── ncenterlite.whitenoprofile.css │ │ │ │ ├── skin.xml │ │ │ │ ├── unsubscribe.html │ │ │ │ ├── unsubscribeList.html │ │ │ │ └── userconfig.html │ │ │ └── default_bottom/ │ │ │ ├── NotifyList.html │ │ │ ├── ncenterlite.black.css │ │ │ ├── ncenterlite.blacknoprofile.css │ │ │ ├── ncenterlite.css │ │ │ ├── ncenterlite.gray.css │ │ │ ├── ncenterlite.graynoprofile.css │ │ │ ├── ncenterlite.html │ │ │ ├── ncenterlite.mobile.css │ │ │ ├── ncenterlite.white.css │ │ │ ├── ncenterlite.whitenoprofile.css │ │ │ ├── skin.xml │ │ │ ├── unsubscribe.html │ │ │ ├── unsubscribeList.html │ │ │ └── userconfig.html │ │ └── tpl/ │ │ ├── advancedconfig.html │ │ ├── config.html │ │ ├── css/ │ │ │ └── ncenter_admin.css │ │ ├── customlist.html │ │ ├── header.html │ │ ├── js/ │ │ │ ├── ncenter_admin.js │ │ │ └── ncenterlite.js │ │ ├── list.html │ │ ├── othercomment.html │ │ ├── seletedmid.html │ │ ├── skinsetting.html │ │ └── test.html │ ├── page/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── m.skins/ │ │ │ └── default/ │ │ │ ├── mobile.html │ │ │ └── skin.xml │ │ ├── page.admin.controller.php │ │ ├── page.admin.view.php │ │ ├── page.api.php │ │ ├── page.class.php │ │ ├── page.controller.php │ │ ├── page.mobile.php │ │ ├── page.view.php │ │ ├── queries/ │ │ │ ├── getArticlePageSrls.xml │ │ │ ├── getPageList.xml │ │ │ ├── insertPageType.xml │ │ │ ├── pageTypeNullCheck.xml │ │ │ ├── pageTypeOpageCheck.xml │ │ │ ├── updateAllOpage.xml │ │ │ └── updateSkinFix.xml │ │ ├── ruleset/ │ │ │ ├── deletePage.xml │ │ │ ├── insertPage.xml │ │ │ └── updatePage.xml │ │ ├── skins/ │ │ │ └── default/ │ │ │ ├── content.html │ │ │ └── skin.xml │ │ └── tpl/ │ │ ├── addition_setup.html │ │ ├── article_content_footer.html │ │ ├── article_content_modify.html │ │ ├── content.html │ │ ├── css/ │ │ │ └── page.css │ │ ├── filter/ │ │ │ ├── delete_page.xml │ │ │ ├── insert_article.xml │ │ │ ├── insert_config.xml │ │ │ ├── insert_mpage_content.xml │ │ │ ├── insert_outside.xml │ │ │ ├── insert_page.xml │ │ │ └── insert_page_content.xml │ │ ├── grant_list.html │ │ ├── header.html │ │ ├── index.html │ │ ├── js/ │ │ │ └── page_admin.js │ │ ├── mcontent.html │ │ ├── mobile.html │ │ ├── page_content_modify.html │ │ ├── page_delete.html │ │ ├── page_info.html │ │ ├── page_mobile_content_modify.html │ │ └── skin_info.html │ ├── point/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── de.php │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── mn.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── point.admin.controller.php │ │ ├── point.admin.view.php │ │ ├── point.class.php │ │ ├── point.controller.php │ │ ├── point.model.php │ │ ├── point.view.php │ │ ├── queries/ │ │ │ ├── deleteMemberGroup.xml │ │ │ ├── getCommentPoint.xml │ │ │ ├── getCommentUsers.xml │ │ │ ├── getDocumentPoint.xml │ │ │ ├── getFilePoint.xml │ │ │ ├── getMemberCount.xml │ │ │ ├── getMemberGroupMember.xml │ │ │ ├── getMemberList.xml │ │ │ ├── getMemberListWithinGroup.xml │ │ │ ├── getPoint.xml │ │ │ ├── getPointCount.xml │ │ │ ├── initMemberPoint.xml │ │ │ ├── insertPoint.xml │ │ │ └── updatePoint.xml │ │ ├── ruleset/ │ │ │ ├── insertConfig.xml │ │ │ └── updatePoint.xml │ │ ├── schemas/ │ │ │ └── point.xml │ │ └── tpl/ │ │ ├── config.html │ │ ├── filter/ │ │ │ ├── insert_act_config.xml │ │ │ ├── insert_config.xml │ │ │ ├── insert_module_config.xml │ │ │ ├── insert_point_module_config.xml │ │ │ └── update_point.xml │ │ ├── header.html │ │ ├── js/ │ │ │ └── point_admin.js │ │ ├── member_list.html │ │ ├── module_config.html │ │ └── point_module_config.html │ ├── poll/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── poll.admin.controller.php │ │ ├── poll.admin.model.php │ │ ├── poll.admin.view.php │ │ ├── poll.class.php │ │ ├── poll.controller.php │ │ ├── poll.model.php │ │ ├── queries/ │ │ │ ├── deletePoll.xml │ │ │ ├── deletePollItem.xml │ │ │ ├── deletePollLog.xml │ │ │ ├── deletePollTitle.xml │ │ │ ├── getMemberbyPollitem.xml │ │ │ ├── getPoll.xml │ │ │ ├── getPollByDeletePollTitle.xml │ │ │ ├── getPollByTargetSrl.xml │ │ │ ├── getPollItem.xml │ │ │ ├── getPollList.xml │ │ │ ├── getPollListWithMember.xml │ │ │ ├── getPollLog.xml │ │ │ ├── getPollTitle.xml │ │ │ ├── insertPoll.xml │ │ │ ├── insertPollItem.xml │ │ │ ├── insertPollLog.xml │ │ │ ├── insertPollTitle.xml │ │ │ ├── updatePoll.xml │ │ │ ├── updatePollItemTarget.xml │ │ │ ├── updatePollItems.xml │ │ │ ├── updatePollTarget.xml │ │ │ ├── updatePollTitle.xml │ │ │ └── updatePollTitleTarget.xml │ │ ├── ruleset/ │ │ │ ├── deleteChecked.xml │ │ │ ├── insertConfig.xml │ │ │ └── poll.xml │ │ ├── schemas/ │ │ │ ├── poll.xml │ │ │ ├── poll_item.xml │ │ │ ├── poll_log.xml │ │ │ └── poll_title.xml │ │ ├── skins/ │ │ │ ├── default/ │ │ │ │ ├── css/ │ │ │ │ │ └── poll.css │ │ │ │ ├── filter/ │ │ │ │ │ └── poll.xml │ │ │ │ ├── form.html │ │ │ │ ├── result.html │ │ │ │ └── skin.xml │ │ │ └── simple/ │ │ │ ├── css/ │ │ │ │ └── poll.css │ │ │ ├── filter/ │ │ │ │ └── poll.xml │ │ │ ├── form.html │ │ │ ├── result.html │ │ │ └── skin.xml │ │ └── tpl/ │ │ ├── config.html │ │ ├── css/ │ │ │ └── poll.css │ │ ├── filter/ │ │ │ ├── delete_checked.xml │ │ │ └── insert_config.xml │ │ ├── header.html │ │ ├── js/ │ │ │ ├── poll.js │ │ │ └── poll_admin.js │ │ ├── poll_list.html │ │ └── result.html │ ├── rss/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── rss.admin.controller.php │ │ ├── rss.admin.view.php │ │ ├── rss.class.php │ │ ├── rss.controller.php │ │ ├── rss.model.php │ │ ├── rss.view.php │ │ ├── ruleset/ │ │ │ ├── insertRssConfig.xml │ │ │ └── insertRssModuleConfig.xml │ │ └── tpl/ │ │ ├── format/ │ │ │ ├── atom10.html │ │ │ ├── rss10.html │ │ │ ├── rss20.html │ │ │ └── xe.html │ │ ├── rss_admin_index.html │ │ └── rss_module_config.html │ ├── session/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── queries/ │ │ │ ├── deleteSession.xml │ │ │ ├── gcSession.xml │ │ │ ├── getExpiredSessions.xml │ │ │ ├── getLoggedMembers.xml │ │ │ ├── getSession.xml │ │ │ ├── insertSession.xml │ │ │ └── updateSession.xml │ │ ├── schemas/ │ │ │ └── session.xml │ │ ├── session.admin.controller.php │ │ ├── session.admin.view.php │ │ ├── session.class.php │ │ ├── session.controller.php │ │ ├── session.model.php │ │ └── tpl/ │ │ ├── index.html │ │ └── js/ │ │ └── session.js │ ├── spamfilter/ │ │ ├── captcha/ │ │ │ ├── recaptcha.php │ │ │ └── turnstile.php │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── de.php │ │ │ ├── en.php │ │ │ ├── es.php │ │ │ ├── fr.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ ├── mn.php │ │ │ ├── ru.php │ │ │ ├── tr.php │ │ │ ├── vi.php │ │ │ ├── zh-CN.php │ │ │ └── zh-TW.php │ │ ├── queries/ │ │ │ ├── deleteDeniedIP.xml │ │ │ ├── deleteDeniedWord.xml │ │ │ ├── deleteLog.xml │ │ │ ├── getDeniedIPList.xml │ │ │ ├── getDeniedWordList.xml │ │ │ ├── getLogCount.xml │ │ │ ├── insertDeniedIP.xml │ │ │ ├── insertDeniedWord.xml │ │ │ ├── insertLog.xml │ │ │ ├── isDeniedIP.xml │ │ │ ├── updateDeniedIPAttributes.xml │ │ │ ├── updateDeniedIPHit.xml │ │ │ ├── updateDeniedWordAttributes.xml │ │ │ └── updateDeniedWordHit.xml │ │ ├── schemas/ │ │ │ ├── spamfilter_denied_ip.xml │ │ │ ├── spamfilter_denied_word.xml │ │ │ └── spamfilter_log.xml │ │ ├── spamfilter.admin.controller.php │ │ ├── spamfilter.admin.view.php │ │ ├── spamfilter.class.php │ │ ├── spamfilter.controller.php │ │ ├── spamfilter.model.php │ │ └── tpl/ │ │ ├── captcha_test.html │ │ ├── config_block.html │ │ ├── config_captcha.html │ │ ├── css/ │ │ │ └── spamfilter_admin.css │ │ ├── denied_ip_list.html │ │ ├── denied_word_list.html │ │ ├── filter/ │ │ │ ├── delete_denied_ip.xml │ │ │ ├── delete_denied_word.xml │ │ │ ├── insert_config.xml │ │ │ ├── insert_denied_ip.xml │ │ │ └── insert_denied_word.xml │ │ ├── footer.html │ │ ├── header.html │ │ └── js/ │ │ ├── recaptcha.js │ │ ├── spamfilter_admin.js │ │ └── turnstile.js │ ├── tag/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ └── ko.php │ │ ├── queries/ │ │ │ ├── deleteModuleTags.xml │ │ │ ├── deleteTag.xml │ │ │ ├── deleteTagByTag.xml │ │ │ ├── getAllTagList.xml │ │ │ ├── getDocumentSrlByTag.xml │ │ │ ├── getDocumentsTagList.xml │ │ │ ├── getTagList.xml │ │ │ ├── insertTag.xml │ │ │ └── updateTagModule.xml │ │ ├── schemas/ │ │ │ └── tags.xml │ │ ├── tag.admin.controller.php │ │ ├── tag.admin.view.php │ │ ├── tag.class.php │ │ ├── tag.controller.php │ │ ├── tag.model.php │ │ └── tpl/ │ │ └── config.html │ ├── trash/ │ │ ├── conf/ │ │ │ ├── info.xml │ │ │ └── module.xml │ │ ├── lang/ │ │ │ ├── en.php │ │ │ ├── ja.php │ │ │ ├── ko.php │ │ │ └── zh-TW.php │ │ ├── model/ │ │ │ └── TrashVO.php │ │ ├── queries/ │ │ │ ├── deleteTrash.xml │ │ │ ├── getDocumentExtraVars.xml │ │ │ ├── getTrash.xml │ │ │ ├── getTrashAllList.xml │ │ │ ├── getTrashList.xml │ │ │ └── insertTrash.xml │ │ ├── ruleset/ │ │ │ └── emptyTrash.xml │ │ ├── schemas/ │ │ │ └── trash.xml │ │ ├── tpl/ │ │ │ ├── filter/ │ │ │ │ └── emptyTrash.xml │ │ │ ├── header.html │ │ │ ├── js/ │ │ │ │ └── trash_admin.js │ │ │ ├── trash_list.html │ │ │ └── trash_view.html │ │ ├── trash.admin.controller.php │ │ ├── trash.admin.view.php │ │ ├── trash.class.php │ │ ├── trash.controller.php │ │ ├── trash.model.php │ │ └── trash.view.php │ └── widget/ │ ├── conf/ │ │ ├── info.xml │ │ └── module.xml │ ├── lang/ │ │ ├── en.php │ │ ├── es.php │ │ ├── fr.php │ │ ├── ja.php │ │ ├── ko.php │ │ ├── ru.php │ │ ├── tr.php │ │ ├── vi.php │ │ ├── zh-CN.php │ │ └── zh-TW.php │ ├── ruleset/ │ │ └── generateCodeInPage.xml │ ├── tpl/ │ │ ├── add_content_widget.html │ │ ├── css/ │ │ │ └── widget.css │ │ ├── downloaded_widget_list.html │ │ ├── filter/ │ │ │ ├── add_content.xml │ │ │ ├── generate_code.xml │ │ │ ├── generate_code_in_page.xml │ │ │ └── style_generate_code_in_page.xml │ │ ├── header.html │ │ ├── js/ │ │ │ ├── generate_code.js │ │ │ ├── widget.js │ │ │ └── widget_admin.js │ │ ├── skin_info.html │ │ ├── widget_detail_info.html │ │ ├── widget_generate_code.html │ │ ├── widget_generate_code.include.html │ │ ├── widget_generate_code_in_page.html │ │ ├── widget_layer.html │ │ └── widget_style_generate_code_in_page.html │ ├── widget.admin.view.php │ ├── widget.class.php │ ├── widget.controller.php │ ├── widget.model.php │ └── widget.view.php ├── tests/ │ ├── _bootstrap.php │ ├── _data/ │ │ ├── dbquery/ │ │ │ ├── deleteTest.xml │ │ │ ├── emptyStringTest1.xml │ │ │ ├── emptyStringTest2.xml │ │ │ ├── ifVarTest.xml │ │ │ ├── indexHintTest1.xml │ │ │ ├── indexHintTest2.xml │ │ │ ├── insertTest.xml │ │ │ ├── nullValueTest1.xml │ │ │ ├── nullValueTest2.xml │ │ │ ├── selectCountTest1.xml │ │ │ ├── selectCountTest2.xml │ │ │ ├── selectJoinTest1.xml │ │ │ ├── selectJoinTest2.xml │ │ │ ├── selectSubqueryTest1.xml │ │ │ ├── selectSubqueryTest2.xml │ │ │ ├── selectSubqueryTest3.xml │ │ │ ├── selectTest1.xml │ │ │ ├── selectTest2.xml │ │ │ ├── selectTest3.xml │ │ │ ├── sortIndexTest.xml │ │ │ └── updateTest.xml │ │ ├── dbtable/ │ │ │ ├── example.xml │ │ │ └── generated.xml │ │ ├── dump.sql │ │ ├── formatter/ │ │ │ ├── bbcode.source.txt │ │ │ ├── bbcode.target.html │ │ │ ├── concat.source1.css │ │ │ ├── concat.source1.js │ │ │ ├── concat.source2.css │ │ │ ├── concat.source2.js │ │ │ ├── concat.source3.css │ │ │ ├── concat.target1.css │ │ │ ├── concat.target1.js │ │ │ ├── concat.target2.css │ │ │ ├── concat.target2.js │ │ │ ├── concat.target3.css │ │ │ ├── html2markdown.source.html │ │ │ ├── html2markdown.target.md │ │ │ ├── html2text.source.html │ │ │ ├── html2text.target.txt │ │ │ ├── less.source1.less │ │ │ ├── less.source2.less │ │ │ ├── less.target1.css │ │ │ ├── less.target2.css │ │ │ ├── markdown2html.source.md │ │ │ ├── markdown2html.target1.html │ │ │ ├── markdown2html.target2.html │ │ │ ├── markdown2html.target3.html │ │ │ ├── markdown2html.target4.html │ │ │ ├── markdownextra.source.md │ │ │ ├── markdownextra.target1.html │ │ │ ├── markdownextra.target2.html │ │ │ ├── minify.source.css │ │ │ ├── minify.source.js │ │ │ ├── minify.target.css │ │ │ ├── minify.target.js │ │ │ ├── scss/ │ │ │ │ ├── _partial1.scss │ │ │ │ ├── _partial2.scss │ │ │ │ ├── include1.scss │ │ │ │ └── include2.scss │ │ │ ├── scss.source1.scss │ │ │ ├── scss.source2
Showing preview only (1,071K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (11620 symbols across 1422 files)
FILE: addons/member_extra_info/member_extra_info.lib.php
function memberTransImageName (line 7) | function memberTransImageName($matches)
FILE: addons/point_level_icon/point_level_icon.lib.php
function pointLevelIconTrans (line 7) | function pointLevelIconTrans($matches, $addon_info)
FILE: classes/cache/CacheHandler.class.php
class CacheHandler (line 8) | class CacheHandler extends Handler
method getInstance (line 23) | public static function getInstance($target = null, $info = null, $alwa...
method __construct (line 39) | protected function __construct($target = null, $info = null, $always_u...
method isSupport (line 49) | public function isSupport()
method getCacheKey (line 60) | public function getCacheKey($key)
method get (line 73) | public function get($key, $modified_time = 0)
method put (line 89) | public function put($key, $obj, $valid_time = 0)
method delete (line 100) | public function delete($key)
method isValid (line 113) | public function isValid($key, $modified_time = 0)
method truncate (line 123) | public function truncate()
method getGroupKey (line 144) | public function getGroupKey($keyGroupName, $key)
method invalidateGroupKey (line 155) | public function invalidateGroupKey($keyGroupName)
FILE: classes/context/Context.class.php
class Context (line 8) | #[AllowDynamicProperties]
method getInstance (line 160) | public static function getInstance()
method __construct (line 177) | private function __construct()
method init (line 187) | public static function init()
method getSessionStatus (line 420) | public static function getSessionStatus()
method checkSessionStatus (line 430) | public static function checkSessionStatus($force = false)
method close (line 440) | public static function close()
method setCacheControl (line 462) | public static function setCacheControl($ttl = 0, $public = true): void
method setCorsPolicy (line 492) | public static function setCorsPolicy(string $origin = '*', array $meth...
method redirect (line 517) | public static function redirect(string $url, int $status_code = 302, i...
method loadDBInfo (line 528) | public static function loadDBInfo($config = null)
method getDBType (line 559) | public static function getDBType()
method setDBInfo (line 571) | public static function setDBInfo(object $db_info): void
method getDBInfo (line 582) | public static function getDBInfo(): object
method getRouteInfo (line 593) | public static function getRouteInfo(): Rhymix\Framework\Request
method getCurrentRequest (line 603) | public static function getCurrentRequest(): Rhymix\Framework\Request
method getSSLStatus (line 614) | public static function getSSLStatus(): string
method getDefaultUrl (line 626) | public static function getDefaultUrl($site_module_info = null, $use_ss...
method loadLangSupported (line 650) | public static function loadLangSupported()
method loadLangSelected (line 661) | public static function loadLangSelected()
method checkSSO (line 689) | public static function checkSSO()
method isFTPRegisted (line 700) | public static function isFTPRegisted()
method getFTPInfo (line 712) | public static function getFTPInfo()
method addBrowserTitle (line 729) | public static function addBrowserTitle($title, $delimiter = ' - ')
method prependBrowserTitle (line 752) | public static function prependBrowserTitle($title, $delimiter = ' - ')
method setBrowserTitle (line 775) | public static function setBrowserTitle($title, $vars = array())
method getBrowserTitle (line 796) | public static function getBrowserTitle()
method getSiteTitle (line 810) | public static function getSiteTitle()
method getSiteSubtitle (line 828) | public static function getSiteSubtitle()
method _getBrowserTitle (line 846) | public static function _getBrowserTitle()
method loadLang (line 858) | public static function loadLang($path, $plugin_name = null)
method setLangType (line 881) | public static function setLangType($lang_type = 'ko')
method getLangType (line 903) | public static function getLangType()
method getLang (line 914) | public static function getLang($code)
method setLang (line 932) | public static function setLang($code, $val)
method replaceUserLang (line 950) | public static function replaceUserLang($string, $fix_double_escape = f...
method convertEncoding (line 990) | public static function convertEncoding($source_obj)
method checkConvertFlag (line 1031) | public static function checkConvertFlag(&$val, $key = null, $charset =...
method doConvertEncoding (line 1060) | public static function doConvertEncoding(&$val, $key = null, $charset ...
method convertEncodingStr (line 1080) | public static function convertEncodingStr($str)
method encodeIdna (line 1100) | public static function encodeIdna($domain)
method decodeIdna (line 1112) | public static function decodeIdna($domain)
method _checkGlobalVars (line 1122) | private static function _checkGlobalVars()
method setResponseMethod (line 1146) | public static function setResponseMethod($method = 'HTML', $content_ty...
method getResponseMethod (line 1161) | public static function getResponseMethod()
method getRequestMethod (line 1178) | public static function getRequestMethod()
method setRequestMethod (line 1189) | public static function setRequestMethod($type = '')
method setRequestArguments (line 1252) | public static function setRequestArguments(array $router_args = [])
method setUploadInfo (line 1324) | public static function setUploadInfo()
method _recursiveCheckVar (line 1401) | private static function _recursiveCheckVar($val)
method _filterXmlVars (line 1440) | private static function _filterXmlVars($key, $val)
method _filterRequestVar (line 1488) | private static function _filterRequestVar($key, $val)
method isUploaded (line 1552) | public static function isUploaded()
method _setUploadedArgument (line 1563) | public static function _setUploadedArgument()
method enforceSiteLock (line 1571) | private static function enforceSiteLock()
method displayErrorPage (line 1634) | public static function displayErrorPage($title = 'Error', $message = '...
method getRequestUrl (line 1682) | public static function getRequestUrl()
method getJSCallbackFunc (line 1698) | public static function getJSCallbackFunc()
method getUrl (line 1722) | public static function getUrl($num_args = 0, $args_list = array(), $do...
method getRequestUri (line 1927) | public static function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL, $...
method set (line 1977) | public static function set($key, $val, $replace_request_arg = false)
method get (line 2006) | public static function get($key)
method gets (line 2033) | public static function gets()
method getAll (line 2059) | public static function getAll()
method getRequestVars (line 2069) | public static function getRequestVars()
method clearRequestVars (line 2083) | public static function clearRequestVars()
method clearUserVars (line 2096) | public static function clearUserVars()
method addSSLAction (line 2108) | public static function addSSLAction($action)
method addSSLActions (line 2120) | public static function addSSLActions($action_array)
method subtractSSLAction (line 2132) | public static function subtractSSLAction($action)
method getSSLActions (line 2143) | public static function getSSLActions()
method isExistsSSLAction (line 2155) | public static function isExistsSSLAction($action)
method normalizeFilePath (line 2167) | public static function normalizeFilePath($file)
method getAbsFileUrl (line 2189) | public static function getAbsFileUrl($file)
method loadFile (line 2220) | public static function loadFile($args)
method unloadFile (line 2238) | public static function unloadFile($file, $unused = '', $media = 'all')
method unloadAllFiles (line 2249) | public static function unloadAllFiles($type = 'all')
method addJsFile (line 2267) | public static function addJsFile($file, $unused1 = '', $unused2 = '', ...
method unloadJsFile (line 2294) | public static function unloadJsFile($file)
method unloadAllJsFiles (line 2304) | public static function unloadAllJsFiles()
method addJsFilter (line 2316) | public static function addJsFilter($path, $filename)
method _getUniqueFileList (line 2329) | public static function _getUniqueFileList($files)
method getJsFile (line 2353) | public static function getJsFile($type = 'head', $finalize = false)
method addCSSFile (line 2370) | public static function addCSSFile($file, $unused1 = '', $media = 'all'...
method unloadCSSFile (line 2384) | public static function unloadCSSFile($file, $unused = '', $media = 'all')
method unloadAllCSSFiles (line 2394) | public static function unloadAllCSSFiles()
method getCSSFile (line 2405) | public static function getCSSFile($finalize = false)
method getJavascriptPluginInfo (line 2416) | public static function getJavascriptPluginInfo($plugin_name)
method loadJavascriptPlugin (line 2476) | public static function loadJavascriptPlugin($plugin_name)
method addHtmlHeader (line 2539) | public static function addHtmlHeader($header, bool $prepend = false)
method getHtmlHeader (line 2556) | public static function getHtmlHeader(): string
method clearHtmlHeader (line 2566) | public static function clearHtmlHeader()
method addBodyClass (line 2576) | public static function addBodyClass($class_name)
method removeBodyClass (line 2590) | public static function removeBodyClass($class_name)
method getBodyClassList (line 2603) | public static function getBodyClassList(): array
method getBodyClass (line 2614) | public static function getBodyClass(): string
method addBodyHeader (line 2633) | public static function addBodyHeader($header, bool $prepend = false)
method getBodyHeader (line 2650) | public static function getBodyHeader()
method addHtmlFooter (line 2662) | public static function addHtmlFooter($footer, bool $prepend = false)
method getHtmlFooter (line 2679) | public static function getHtmlFooter()
method addLink (line 2691) | public static function addLink(string $url, string $rel): void
method getLinks (line 2701) | public static function getLinks(): array
method getConfigFile (line 2712) | public static function getConfigFile()
method getFTPConfigFile (line 2723) | public static function getFTPConfigFile()
method setValidatorMessage (line 2735) | public static function setValidatorMessage($id, $message, $type = 'info')
method isInstalled (line 2749) | public static function isInstalled()
method isLocked (line 2759) | public static function isLocked()
method transContent (line 2771) | public static function transContent($content)
method isAllowRewrite (line 2782) | public static function isAllowRewrite()
method isDefaultPlugin (line 2794) | public static function isDefaultPlugin($plugin_name, $type)
method isBlacklistedPlugin (line 2815) | public static function isBlacklistedPlugin($plugin_name, $type = '')
method isReservedWord (line 2849) | public static function isReservedWord($word)
method pathToUrl (line 2870) | public static function pathToUrl($path)
method getMetaTag (line 2927) | public static function getMetaTag($name = null)
method addMetaTag (line 2948) | public static function addMetaTag($name, $content, $is_http_equiv = fa...
method getMetaImages (line 2963) | public static function getMetaImages()
method addMetaImage (line 2976) | public static function addMetaImage($filename, $width = 0, $height = 0)
method getOpenGraphData (line 2999) | public static function getOpenGraphData()
method addOpenGraphData (line 3020) | public static function addOpenGraphData($name, $content)
method setCanonicalURL (line 3041) | public static function setCanonicalURL($url)
method getCanonicalURL (line 3052) | public static function getCanonicalURL()
FILE: classes/db/DB.class.php
class DB (line 3) | class DB extends Rhymix\Framework\DB
FILE: classes/display/DisplayHandler.class.php
class DisplayHandler (line 8) | class DisplayHandler extends Handler
method printContent (line 20) | public function printContent(&$oModule)
method getDebugInfo (line 165) | public static function getDebugInfo(&$output = null): string
method _printXMLHeader (line 325) | public static function _printXMLHeader()
method _printHTMLHeader (line 334) | public static function _printHTMLHeader()
method _printJSONHeader (line 343) | public static function _printJSONHeader()
method _printCustomContentTypeHeader (line 354) | public static function _printCustomContentTypeHeader($content_type)
method _printHttpStatusCode (line 364) | public static function _printHttpStatusCode($code)
FILE: classes/display/HTMLDisplayHandler.php
class HTMLDisplayHandler (line 3) | class HTMLDisplayHandler
method toDoc (line 50) | public function toDoc(&$oModule)
method isPartialPageRendering (line 229) | public static function isPartialPageRendering()
method prepareToPrint (line 259) | public function prepareToPrint(&$output)
method _preserveValue (line 342) | function _preserveValue($match)
method _preserveSelectValue (line 386) | function _preserveSelectValue($matches)
method _preserveTextAreaValue (line 410) | function _preserveTextAreaValue($matches)
method _moveStyleToHeader (line 423) | function _moveStyleToHeader($matches)
method _moveLinkToHeader (line 438) | function _moveLinkToHeader($matches)
method _transMeta (line 455) | function _transMeta($matches)
method _addOpenGraphMetadata (line 477) | function _addOpenGraphMetadata()
method _addTwitterMetadata (line 705) | function _addTwitterMetadata()
method _loadDesktopJSCSS (line 731) | public function _loadDesktopJSCSS()
method _loadMobileJSCSS (line 739) | private function _loadMobileJSCSS()
method _loadCommonJSCSS (line 747) | private function _loadCommonJSCSS()
FILE: classes/display/JSCallbackDisplayHandler.php
class JSCallbackDisplayHandler (line 3) | class JSCallbackDisplayHandler
method toDoc (line 11) | function toDoc(&$oModule)
FILE: classes/display/JSONDisplayHandler.php
class JSONDisplayHandler (line 3) | class JSONDisplayHandler
method toDoc (line 11) | public function toDoc($oModule)
method _convertCompat (line 37) | protected static function _convertCompat(&$array, $compat_type = 'JSON')
method _isNumericArray (line 69) | protected static function _isNumericArray($array)
FILE: classes/display/RawDisplayHandler.php
class RawDisplayHandler (line 3) | class RawDisplayHandler
method toDoc (line 5) | function toDoc($oModule)
FILE: classes/display/VirtualXMLDisplayHandler.php
class VirtualXMLDisplayHandler (line 3) | class VirtualXMLDisplayHandler
method toDoc (line 10) | function toDoc(&$oModule)
FILE: classes/display/XMLDisplayHandler.php
class XMLDisplayHandler (line 3) | class XMLDisplayHandler
method toDoc (line 11) | function toDoc(&$oModule)
method _makeXmlDoc (line 31) | function _makeXmlDoc($obj)
FILE: classes/editor/EditorHandler.class.php
class EditorHandler (line 9) | class EditorHandler extends BaseObject
method setInfo (line 17) | function setInfo($info)
FILE: classes/file/FileHandler.class.php
class FileHandler (line 8) | class FileHandler
method getRealPath (line 16) | public static function getRealPath($source): string
method copyDir (line 42) | public static function copyDir($source_dir, $target_dir, $filter = '')
method copyFile (line 55) | public static function copyFile($source, $target, $force = 'Y')
method readFile (line 67) | public static function readFile($filename)
method writeFile (line 80) | public static function writeFile($filename, $buff, $mode = "w")
method removeFile (line 96) | public static function removeFile($filename)
method rename (line 115) | public static function rename($source, $target)
method moveFile (line 132) | public static function moveFile($source, $target)
method moveDir (line 151) | public static function moveDir($source_dir, $target_dir)
method readDir (line 172) | public static function readDir($path, $filter = '', $to_lower = FALSE,...
method makeDir (line 210) | public static function makeDir($path_string)
method removeDir (line 227) | public static function removeDir($path)
method removeBlankDir (line 243) | public static function removeBlankDir($path)
method removeFilesInDir (line 261) | public static function removeFilesInDir($path)
method filesize (line 278) | public static function filesize($size)
method getRemoteResource (line 327) | public static function getRemoteResource($url, $body = null, $timeout ...
method getRemoteFile (line 422) | public static function getRemoteFile($url, $target_filename, $body = n...
method returnBytes (line 442) | public static function returnBytes($val)
method checkMemoryLoadImage (line 467) | public static function checkMemoryLoadImage($imageInfo, $resizeInfo = [])
method checkImageRotation (line 510) | public static function checkImageRotation(string $filename)
method createImageFile (line 549) | public static function createImageFile($source_file, $target_file, $re...
method readIniFile (line 795) | public static function readIniFile($filename)
method writeIniFile (line 822) | public static function writeIniFile($filename, $arr)
method _makeIniBuff (line 839) | public static function _makeIniBuff($arr)
method openFile (line 877) | public static function openFile($filename, $mode)
method hasContent (line 890) | public static function hasContent($filename)
method exists (line 901) | public static function exists($filename)
method isDir (line 913) | public static function isDir($path)
method isWritableDir (line 925) | public static function isWritableDir($path)
method clearStatCache (line 938) | public static function clearStatCache($target, $include = false)
method invalidateOpcache (line 961) | public static function invalidateOpcache($target, $force = true)
FILE: classes/file/FileObject.class.php
class FileObject (line 8) | class FileObject extends BaseObject
method __construct (line 36) | function __construct($path, $mode)
method append (line 50) | function append($file_name)
method feof (line 66) | function feof()
method read (line 77) | function read($size = 1024)
method write (line 88) | function write($str)
method open (line 112) | function open($path, $mode)
method getPath (line 133) | function getPath()
method close (line 150) | function close()
FILE: classes/frontendfile/FrontEndFileHandler.class.php
class FrontEndFileHandler (line 7) | class FrontEndFileHandler extends Handler
method getInstance (line 72) | public static function getInstance(): self
method isSsl (line 87) | public static function isSsl()
method loadFile (line 114) | public function loadFile($args)
method getFileInfo (line 214) | protected function getFileInfo($fileName, $unused = '', $media = 'all'...
method startLog (line 287) | public function startLog()
method endLog (line 298) | public function endLog(): array
method proc_CSS_JS (line 311) | protected function proc_CSS_JS($file, $minify)
method proc_LESS_SCSS (line 348) | protected function proc_LESS_SCSS($file, $minify)
method unloadFile (line 430) | public function unloadFile($fileName, $unused = '', $media = 'all')
method unloadAllFiles (line 467) | public function unloadAllFiles($type = 'all')
method getCssFileList (line 490) | public function getCssFileList($finalize = false)
method getJsFileList (line 581) | public function getJsFileList($type = 'head', $finalize = false)
method _concatMap (line 680) | protected function _concatMap(&$map)
method _sortMap (line 710) | protected function _sortMap(&$map, &$index)
method _normalizeFilePath (line 721) | protected function _normalizeFilePath($path)
method _getAbsFileUrl (line 748) | protected function _getAbsFileUrl($path)
method _arrangeCssIndex (line 766) | protected function _arrangeCssIndex($dirname, $file, $hint = '')
FILE: classes/handler/Handler.class.php
class Handler (line 8) | class Handler
FILE: classes/httprequest/XEHttpRequest.class.php
class XEHttpRequest (line 12) | class XEHttpRequest
method __construct (line 43) | function __construct($host, $port, $scheme='')
method addToHeader (line 57) | function addToHeader($key, $value)
method send (line 70) | function send($target = '/', $method = 'GET', $timeout = 3, $post_vars...
method sendWithSock (line 114) | function sendWithSock($target, $method, $timeout, $post_vars)
method sendWithCurl (line 204) | function sendWithCurl($target, $method, $timeout, $post_vars)
FILE: classes/mail/Mail.class.php
class Mail (line 6) | class Mail extends Rhymix\Framework\Mail
method useGmailAccount (line 15) | public static function useGmailAccount($account_name, $account_passwd)
method useSMTP (line 32) | public static function useSMTP($auth = null, $host = null, $user = nul...
method setAdditionalParams (line 46) | public function setAdditionalParams($additional_params)
method setSender (line 58) | public function setSender($name, $email)
method getSender (line 68) | public function getSender()
method setReceiptor (line 80) | public function setReceiptor($name, $email)
method getReceiptor (line 91) | public function getReceiptor()
method setBCC (line 103) | public function setBCC($bcc)
method getPlainContent (line 114) | public function getPlainContent()
method getHTMLContent (line 124) | public function getHTMLContent()
method addAttachment (line 136) | public function addAttachment($original_filename, $filename)
method addCidAttachment (line 148) | public function addCidAttachment($original_filename, $cid = null)
method procAttachments (line 158) | public function procAttachments()
method procCidAttachments (line 168) | public function procCidAttachments()
method checkMailMX (line 179) | public static function checkMailMX($email_address)
method isAdvancedMailer (line 205) | public static function isAdvancedMailer()
method isVaildMailAddress (line 217) | public static function isVaildMailAddress($email_address, $restrictive...
method returnMIMEType (line 244) | public static function returnMIMEType($filename)
FILE: classes/mobile/Mobile.class.php
class Mobile (line 8) | class Mobile
method getInstance (line 21) | public function getInstance()
method isFromMobilePhone (line 31) | public static function isFromMobilePhone()
method _isFromMobilePhone (line 87) | public static function _isFromMobilePhone()
method isMobileCheckByAgent (line 98) | public static function isMobileCheckByAgent()
method isMobilePadCheckByAgent (line 109) | public static function isMobilePadCheckByAgent()
method setMobile (line 121) | public static function setMobile($ismobile)
method isMobileEnabled (line 131) | public static function isMobileEnabled()
FILE: classes/module/ModuleHandler.class.php
class ModuleHandler (line 8) | class ModuleHandler extends Handler
method __construct (line 58) | public function __construct($module = '', $act = '', $mid = '', $docum...
method init (line 122) | public function init()
method procModule (line 331) | public function procModule()
method _checkDocumentSrl (line 766) | protected function _checkDocumentSrl()
method _setModuleColorScheme (line 838) | protected function _setModuleColorScheme($site_module_info)
method _setModuleSEOInfo (line 861) | protected function _setModuleSEOInfo($module_info, $site_module_info)
method _setInputValueToSession (line 915) | protected static function _setInputValueToSession()
method _setInputErrorToContext (line 930) | protected static function _setInputErrorToContext()
method _clearErrorSession (line 960) | protected static function _clearErrorSession()
method _createErrorMessage (line 973) | protected static function _createErrorMessage($error, $message, $statu...
method displayContent (line 1004) | public function displayContent($oModule = NULL)
method procCommandLineArguments (line 1232) | public static function procCommandLineArguments(array $args)
method getModulePath (line 1263) | public static function getModulePath($module)
method getModuleInstance (line 1276) | public static function getModuleInstance($module, $type = 'view', $kin...
method triggerCall (line 1304) | public static function triggerCall($trigger_name, $called_position, &$...
method _setHttpStatusMessage (line 1443) | public static function _setHttpStatusMessage($code)
FILE: classes/module/ModuleObject.class.php
class ModuleObject (line 8) | class ModuleObject extends BaseObject
method __construct (line 48) | public function __construct($error = 0, $message = 'success')
method getInstance (line 59) | public static function getInstance($module_hint = null)
method setModule (line 105) | public function setModule($module)
method setModulePath (line 117) | public function setModulePath($path)
method setRedirectUrl (line 133) | public function setRedirectUrl($url = './', $output = NULL)
method getRedirectUrl (line 156) | public function getRedirectUrl()
method setRefreshPage (line 169) | public function setRefreshPage()
method setAct (line 182) | public function setAct($act)
method setModuleInfo (line 195) | public function setModuleInfo($module_info, $xml_info)
method setPrivileges (line 250) | public function setPrivileges()
method checkPermission (line 342) | public function checkPermission($grant = null, $member_info = null, &$...
method _generatePermissionError (line 481) | protected function _generatePermissionError($failed_requirement)
method stop (line 520) | public function stop($msg_code, $error_code = -1)
method setTemplateFile (line 556) | public function setTemplateFile($filename)
method getTemplateFile (line 567) | public function getTemplateFile()
method setTemplatePath (line 578) | public function setTemplatePath($path)
method getTemplatePath (line 598) | public function getTemplatePath()
method setEditedLayoutFile (line 609) | public function setEditedLayoutFile($filename)
method getEditedLayoutFile (line 621) | public function getEditedLayoutFile()
method setLayoutFile (line 632) | public function setLayoutFile($filename)
method getLayoutFile (line 643) | public function getLayoutFile()
method setLayoutPath (line 654) | public function setLayoutPath($path)
method getLayoutPath (line 674) | public function getLayoutPath()
method setLayoutAndTemplatePaths (line 686) | public function setLayoutAndTemplatePaths($type, $config)
method proc (line 791) | public function proc()
method copyResponseFrom (line 942) | public function copyResponseFrom(self $instance)
FILE: classes/object/Object.class.php
class BaseObject (line 8) | #[AllowDynamicProperties]
method __construct (line 42) | public function __construct($error = 0, $message = 'success')
method __set_state (line 67) | public static function __set_state(array $vars)
method setError (line 83) | public function setError($error = 0)
method getError (line 115) | public function getError()
method setHttpStatusCode (line 126) | public function setHttpStatusCode($code = 200)
method getHttpStatusCode (line 137) | public function getHttpStatusCode()
method setMessage (line 149) | public function setMessage($message = 'success', $type = null)
method getMessage (line 164) | public function getMessage()
method setMessageType (line 174) | public function setMessageType($type)
method getMessageType (line 184) | public function getMessageType()
method set (line 202) | public function set($key, $val)
method add (line 211) | public function add($key, $val)
method sets (line 222) | public function sets($vars)
method adds (line 241) | public function adds($vars)
method get (line 252) | public function get($key)
method gets (line 262) | public function gets()
method getVariables (line 278) | public function getVariables()
method getObjectVars (line 288) | public function getObjectVars()
method unset (line 298) | public function unset($key)
method toBool (line 308) | public function toBool()
method toBoolean (line 319) | public function toBoolean()
FILE: classes/page/PageHandler.class.php
class PageHandler (line 8) | class PageHandler extends Handler implements Iterator
method __construct (line 39) | public function __construct(int $total_count, int $total_page, int $cu...
method getNextPage (line 71) | public function getNextPage(): int
method getPage (line 87) | public function getPage(int $offset): int
method rewind (line 97) | public function rewind(): void
method valid (line 107) | public function valid(): bool
method current (line 118) | public function current(): int
method key (line 128) | public function key(): int
method next (line 138) | public function next(): void
FILE: classes/security/EmbedFilter.class.php
class EmbedFilter (line 6) | class EmbedFilter
method getInstance (line 22) | function getInstance()
method getWhiteUrlList (line 27) | public function getWhiteUrlList()
method getWhiteIframeUrlList (line 32) | public function getWhiteIframeUrlList()
method isWhiteDomain (line 37) | function isWhiteDomain($urlAttribute)
method isWhiteIframeDomain (line 42) | function isWhiteIframeDomain($urlAttribute)
method isWhiteMimetype (line 47) | function isWhiteMimetype($mimeType)
method isWhiteExt (line 52) | function isWhiteExt($ext)
method check (line 57) | function check(&$content)
method checkIframeTag (line 62) | function checkIframeTag(&$content)
method checkObjectTag (line 67) | function checkObjectTag(&$content)
method checkEmbedTag (line 72) | function checkEmbedTag(&$content)
method checkParamTag (line 77) | function checkParamTag(&$content)
FILE: classes/security/IpFilter.class.php
class IpFilter (line 6) | class IpFilter
method filter (line 8) | public static function filter($ip_list, $ip = NULL)
method validate (line 14) | public static function validate($ip_list = array())
FILE: classes/security/Password.class.php
class Password (line 6) | class Password
method registerCustomAlgorithm (line 8) | public static function registerCustomAlgorithm($name, $regexp, $callback)
method getSupportedAlgorithms (line 13) | public static function getSupportedAlgorithms()
method getBestAlgorithm (line 18) | public static function getBestAlgorithm()
method getCurrentlySelectedAlgorithm (line 23) | public static function getCurrentlySelectedAlgorithm()
method getWorkFactor (line 28) | public static function getWorkFactor()
method createHash (line 33) | public static function createHash($password, $algorithm = null)
method checkPassword (line 38) | public static function checkPassword($password, $hash, $algorithm = null)
method checkAlgorithm (line 43) | public static function checkAlgorithm($hash)
method checkWorkFactor (line 49) | public static function checkWorkFactor($hash)
method createSecureSalt (line 54) | public static function createSecureSalt($length, $format = 'hex')
method createTemporaryPassword (line 59) | public static function createTemporaryPassword($length = 16)
method createSignature (line 64) | public static function createSignature($string)
method checkSignature (line 69) | public static function checkSignature($string, $signature)
method getSecretKey (line 74) | public static function getSecretKey()
method pbkdf2 (line 79) | public static function pbkdf2($password, $salt, $algorithm = 'sha256',...
method bcrypt (line 86) | public static function bcrypt($password, $salt = null)
method strcmpConstantTime (line 91) | public static function strcmpConstantTime($a, $b)
FILE: classes/security/Purifier.class.php
class Purifier (line 6) | class Purifier
method getInstance (line 8) | public static function getInstance()
method purify (line 13) | public function purify(&$content)
FILE: classes/security/Security.class.php
class Security (line 9) | class Security
method __construct (line 23) | public function __construct($var = NULL)
method encodeHTML (line 35) | public function encodeHTML(/* , $varName1, $varName2, ... */)
method _encodeHTML (line 110) | protected function _encodeHTML($var, $name = array())
method detectingXEE (line 184) | public static function detectingXEE($xml)
FILE: classes/security/UploadFileFilter.class.php
class UploadFileFilter (line 3) | class UploadFileFilter
method check (line 12) | public static function check($file, $filename = null)
FILE: classes/template/TemplateHandler.class.php
class TemplateHandler (line 3) | class TemplateHandler extends Rhymix\Framework\Template
FILE: classes/validator/Validator.class.php
class Validator (line 8) | class Validator
method __construct (line 70) | function __construct($xml_path = '')
method __destruct (line 95) | function __destruct()
method load (line 106) | function load($xml_path)
method setCacheDir (line 135) | function setCacheDir($cache_dir)
method validate (line 148) | function validate($fields_ = null)
method arrayTrim (line 343) | function arrayTrim($array)
method error (line 363) | function error($field, $msg)
method getLastError (line 395) | function getLastError()
method addRule (line 406) | function addRule($name, $rule = '')
method removeRule (line 443) | function removeRule($name)
method addFilter (line 454) | function addFilter($name, $filter = '')
method removeFilter (line 497) | function removeFilter($name)
method applyRule (line 508) | function applyRule($name, $value)
method getJsPath (line 542) | function getJsPath()
method _compile2js (line 584) | function _compile2js()
method _execExpression (line 729) | protected static function _execExpression($value, $expression)
FILE: classes/widget/WidgetHandler.class.php
class WidgetHandler (line 8) | class WidgetHandler
FILE: classes/xml/GeneralXmlParser.class.php
class GeneralXmlParser (line 10) | class GeneralXmlParser
method parse (line 24) | function parse($input = '')
method _tagOpen (line 50) | function _tagOpen($parser, $node_name, $attrs)
method _tagBody (line 67) | function _tagBody($parser, $body)
method _tagClosed (line 79) | function _tagClosed($parser, $node_name)
FILE: classes/xml/XmlGenerator.class.php
class XmlGenerator (line 9) | class XmlGenerator
method obj2xml (line 17) | function obj2xml($xml)
method _makexml (line 33) | function _makexml($node)
FILE: classes/xml/XmlJsFilter.class.php
class XmlJsFilter (line 48) | class XmlJsFilter extends XeXmlParser
method __construct (line 81) | function __construct($path, $xml_file)
method compile (line 95) | function compile()
method _compile (line 116) | function _compile()
method _getCompiledFileName (line 419) | function _getCompiledFileName($xml_file)
FILE: classes/xml/XmlLangParser.class.php
class XmlLangParser (line 10) | class XmlLangParser extends XeXmlParser
method __construct (line 54) | function __construct($xml_file, $lang_type)
method compile (line 65) | function compile()
method getCompileContent (line 94) | function getCompileContent()
method _compile (line 109) | function _compile()
method _writeFile (line 136) | function _writeFile()
method _parseItem (line 152) | function _parseItem($item, $var)
method _parseValues (line 201) | function _parseValues($nodes, $var)
method _parseValue (line 252) | function _parseValue($node, $var)
method _getCompiledFileName (line 271) | function _getCompiledFileName($lang_type, $type = 'php')
FILE: classes/xml/XmlParser.class.php
class XeXmlParser (line 10) | class XeXmlParser
method loadXmlFile (line 19) | public static function loadXmlFile($filename): ?object
method parse (line 39) | function parse($input = ''): ?object
FILE: common/framework/Cache.php
class Cache (line 8) | class Cache
method init (line 37) | public static function init($config): Drivers\CacheInterface
method getSupportedDrivers (line 93) | public static function getSupportedDrivers(): array
method getDriverName (line 113) | public static function getDriverName(): ?string
method getDriverInstance (line 125) | public static function getDriverInstance($name = null, array $config =...
method getPrefix (line 150) | public static function getPrefix(): string
method getDefaultTTL (line 160) | public static function getDefaultTTL(): int
method setDefaultTTL (line 171) | public static function setDefaultTTL(int $ttl): void
method get (line 184) | public static function get(string $key)
method set (line 209) | public static function set(string $key, $value, int $ttl = 0, bool $fo...
method delete (line 238) | public static function delete(string $key): bool
method exists (line 262) | public static function exists(string $key): bool
method incr (line 284) | public static function incr(string $key, int $amount = 1): int
method decr (line 306) | public static function decr(string $key, int $amount = 1): int
method clearGroup (line 326) | public static function clearGroup(string $group_name): bool
method clearAll (line 351) | public static function clearAll(): bool
method getGroupVersion (line 373) | public static function getGroupVersion(string $group_name): int
method getRealKey (line 398) | public static function getRealKey(string $key): string
method sendClearRequest (line 418) | public static function sendClearRequest(array $keys): void
FILE: common/framework/Calendar.php
class Calendar (line 8) | class Calendar
method getMonthName (line 17) | public static function getMonthName(int $month_number, bool $long_form...
method getMonthStartDayOfWeek (line 38) | public static function getMonthStartDayOfWeek(int $month_number, ?int ...
method getMonthDays (line 58) | public static function getMonthDays(int $month_number, ?int $year = nu...
method getMonthCalendar (line 82) | public static function getMonthCalendar(int $month_number, ?int $year ...
FILE: common/framework/Config.php
class Config (line 8) | class Config
method init (line 29) | public static function init(): array
method getAll (line 58) | public static function getAll(): array
method getDefaults (line 68) | public static function getDefaults(): array
method get (line 79) | public static function get(string $key)
method set (line 105) | public static function set(string $key, $value): void
method setAll (line 126) | public static function setAll(array $config): void
method save (line 137) | public static function save(?array $config = null): bool
method serialize (line 186) | public static function serialize($value): string
FILE: common/framework/Cookie.php
class Cookie (line 8) | class Cookie
method get (line 16) | public static function get(string $name): ?string
method set (line 40) | public static function set(string $name, string $value, array $options...
method remove (line 102) | public static function remove(string $name, array $options = []): bool
FILE: common/framework/DB.php
class DB (line 8) | class DB
method getInstance (line 61) | public static function getInstance(string $type = 'master'): self
method __construct (line 92) | public function __construct(string $type, array $config)
method connect (line 119) | public function connect(array $config): void
method disconnect (line 161) | public function disconnect(): void
method getHandle (line 172) | public function getHandle(): ?Helpers\DBHelper
method prepare (line 190) | public function prepare(string $statement, array $driver_options = [])...
method query (line 222) | public function query(string $query_string, ...$args): ?Helpers\DBStmt...
method executeQuery (line 263) | public function executeQuery(string $query_id, $args = [], array $colu...
method _executeCountQuery (line 441) | protected function _executeCountQuery(string $query_id, Parsers\DBQuer...
method fetch (line 527) | public function fetch($stmt, int $last_index = 0, string $result_type ...
method beginTransaction (line 582) | public function beginTransaction(): int
method begin (line 592) | public function begin(): int
method rollback (line 624) | public function rollback(): int
method commit (line 660) | public function commit(): int
method getTransactionLevel (line 699) | public function getTransactionLevel(): int
method getAffectedRows (line 709) | public function getAffectedRows(): int
method getInsertID (line 719) | public function getInsertID(): int
method getNextSequence (line 729) | public function getNextSequence(): int
method isValidOldPassword (line 754) | public function isValidOldPassword(string $password, string $saved_pas...
method isTableExists (line 774) | public function isTableExists(string $table_name): bool
method createTable (line 788) | public function createTable(string $filename = '', string $content = '...
method dropTable (line 813) | public function dropTable(string $table_name): Helpers\DBResultHelper
method isColumnExists (line 826) | public function isColumnExists(string $table_name, string $column_name...
method addColumn (line 845) | public function addColumn(string $table_name, string $column_name, str...
method modifyColumn (line 897) | public function modifyColumn(string $table_name, string $column_name, ...
method dropColumn (line 958) | public function dropColumn(string $table_name, string $column_name): H...
method getColumnInfo (line 971) | public function getColumnInfo(string $table_name, string $column_name)...
method isIndexExists (line 1024) | public function isIndexExists(string $table_name, string $index_name):...
method addIndex (line 1041) | public function addIndex(string $table_name, string $index_name, $colu...
method dropIndex (line 1081) | public function dropIndex(string $table_name, string $index_name): Hel...
method getIndexInfo (line 1094) | public function getIndexInfo(string $table_name, string $index_name): ...
method addPrefixes (line 1136) | public function addPrefixes(string $query_string): string
method addQuotes (line 1183) | public function addQuotes($str): string
method getBestSupportedCharset (line 1200) | public function getBestSupportedCharset(): string
method isError (line 1214) | public function isError(): bool
method getError (line 1224) | public function getError(): Helpers\DBResultHelper
method setError (line 1236) | public function setError(int $errno = 0, string $errstr = 'success'): ...
method clearError (line 1249) | public function clearError(): void
method getQueryLog (line 1262) | public function getQueryLog(string $query, float $elapsed_time): array
method setQueryLog (line 1314) | public function setQueryLog(array $log): void
method addElapsedTime (line 1325) | public function addElapsedTime(float $elapsed_time): void
method getQueryElapsedTime (line 1335) | public function getQueryElapsedTime(): float
method getTotalElapsedTime (line 1345) | public function getTotalElapsedTime(): float
method setDebugComment (line 1356) | public function setDebugComment(bool $enabled): void
method __get (line 1367) | public function __get(string $key)
method _query (line 1393) | public function _query($query_string): ?Helpers\DBStmtHelper
method _fetch (line 1416) | public function _fetch($stmt, int $last_index = 0)
method create (line 1428) | public static function create(): self
method db_fetch_object (line 1440) | public function db_fetch_object(\PDOStatement $stmt)
method db_free_result (line 1452) | public function db_free_result(\PDOStatement $stmt): bool
method db_insert_id (line 1463) | public function db_insert_id(): int
method getSupportedList (line 1474) | public static function getSupportedList(): array
method getEnableList (line 1490) | public static function getEnableList(): array
method getDisableList (line 1503) | public static function getDisableList(): array
method isSupported (line 1516) | public function isSupported(): bool
method isConnected (line 1527) | public function isConnected(): bool
method close (line 1538) | public function close(): bool
method createTableByXmlFile (line 1549) | public function createTableByXmlFile($filename): bool
method createTableByXml (line 1554) | public function createTableByXml($xml_doc)
method _createTable (line 1559) | public function _createTable($xml_doc)
method getCountCache (line 1571) | public function getCountCache(): bool
method putCountCache (line 1575) | public function putCountCache(): bool
method resetCountCache (line 1579) | public function resetCountCache(): bool
method getParser (line 1587) | public function getParser(): bool
method _getSlaveConnectionStringIndex (line 1591) | public function _getSlaveConnectionStringIndex(): int
method _getConnection (line 1595) | public function _getConnection(): ?Helpers\DBHelper
method _dbInfoExists (line 1599) | public function _dbInfoExists(): bool
FILE: common/framework/DateTime.php
class DateTime (line 8) | class DateTime
method formatTimestamp (line 27) | public static function formatTimestamp(string $format, ?int $timestamp...
method formatTimestampForCurrentUser (line 45) | public static function formatTimestampForCurrentUser(string $format, ?...
method getTimezoneForCurrentUser (line 68) | public static function getTimezoneForCurrentUser(): string
method getTimezoneList (line 93) | public static function getTimezoneList(): array
method getTimezoneOffset (line 119) | public static function getTimezoneOffset(string $timezone, ?int $times...
method getTimezoneOffsetFromInternal (line 138) | public static function getTimezoneOffsetFromInternal(string $timezone,...
method getTimezoneOffsetByLegacyFormat (line 149) | public static function getTimezoneOffsetByLegacyFormat(string $timezon...
method getTimezoneNameByOffset (line 169) | public static function getTimezoneNameByOffset(int $offset): string
method getRelativeTimestamp (line 193) | public static function getRelativeTimestamp(?int $timestamp = null): s...
FILE: common/framework/Debug.php
class Debug (line 8) | class Debug
method enable (line 45) | public static function enable(): void
method disable (line 55) | public static function disable(): void
method getEntries (line 65) | public static function getEntries(): array
method clearEntries (line 75) | public static function clearEntries(): void
method getErrors (line 85) | public static function getErrors(): array
method clearErrors (line 95) | public static function clearErrors(): void
method getQueries (line 105) | public static function getQueries(): array
method getSlowQueries (line 115) | public static function getSlowQueries(): array
method clearQueries (line 125) | public static function clearQueries(): void
method getTriggers (line 136) | public static function getTriggers(): array
method getSlowTriggers (line 146) | public static function getSlowTriggers(): array
method clearTriggers (line 156) | public static function clearTriggers(): void
method getWidgets (line 167) | public static function getWidgets(): array
method getSlowWidgets (line 177) | public static function getSlowWidgets(): array
method clearWidgets (line 187) | public static function clearWidgets(): void
method getRemoteRequests (line 198) | public static function getRemoteRequests(): array
method getSlowRemoteRequests (line 208) | public static function getSlowRemoteRequests(): array
method clearRemoteRequests (line 218) | public static function clearRemoteRequests(): void
method clearAll (line 229) | public static function clearAll(): void
method addFilenameAlias (line 254) | public static function addFilenameAlias(string $display_filename, stri...
method addTime (line 266) | public static function addTime(string $type, float $time): void
method addEntry (line 284) | public static function addEntry($message): void
method addError (line 347) | public static function addError(int $errno, string $errstr, string $er...
method addQuery (line 417) | public static function addQuery(array $query): void
method addTrigger (line 528) | public static function addTrigger(array $trigger): void
method addWidget (line 563) | public static function addWidget(array $widget): void
method addRemoteRequest (line 598) | public static function addRemoteRequest(array $request): void
method exceptionHandler (line 637) | public static function exceptionHandler(\Throwable $e): void
method shutdownHandler (line 687) | public static function shutdownHandler(): void
method formatBacktrace (line 717) | public static function formatBacktrace(array $backtrace): string
method translateFilename (line 739) | public static function translateFilename(string $filename)
method registerErrorHandlers (line 758) | public static function registerErrorHandlers(int $error_types): void
method displayErrorScreen (line 773) | public static function displayErrorScreen(string $message, string $loc...
method displayError (line 819) | public static function displayError(string $message): void
method isEnabledForCurrentUser (line 839) | public static function isEnabledForCurrentUser(): bool
method getDebugData (line 893) | public static function getDebugData(): object
method getErrorType (line 974) | public static function getErrorType(int $errno): string
FILE: common/framework/Exception.php
class Exception (line 8) | class Exception extends \Exception
method getUserFileAndLine (line 19) | public function getUserFileAndLine(): string
FILE: common/framework/Formatter.php
class Formatter (line 8) | class Formatter
method text2html (line 29) | public static function text2html(string $text, int $options = 0): string
method html2text (line 66) | public static function html2text(string $html): string
method markdown2html (line 100) | public static function markdown2html(string $markdown, int $options = ...
method html2markdown (line 129) | public static function html2markdown(string $html): string
method bbcode (line 143) | public static function bbcode(string $bbcode): string
method applySmartQuotes (line 165) | public static function applySmartQuotes(string $html): string
method compileLESS (line 179) | public static function compileLESS($source_filename, string $target_fi...
method compileSCSS (line 227) | public static function compileSCSS($source_filename, string $target_fi...
method minifyCSS (line 304) | public static function minifyCSS($source_filename, string $target_file...
method minifyJS (line 332) | public static function minifyJS($source_filename, string $target_filen...
method concatCSS (line 360) | public static function concatCSS($source_filename, string $target_file...
method concatJS (line 528) | public static function concatJS($source_filename): string
method convertIECondition (line 564) | public static function convertIECondition($condition)
FILE: common/framework/HTTP.php
class HTTP (line 8) | class HTTP
method resetClient (line 23) | public static function resetClient(): void
method get (line 38) | public static function get(string $url, $data = null, array $headers =...
method head (line 53) | public static function head(string $url, $data = null, array $headers ...
method post (line 68) | public static function post(string $url, $data = null, array $headers ...
method download (line 88) | public static function download(string $url, string $target_filename, ...
method request (line 117) | public static function request(string $url, string $method = 'GET', $d...
method async (line 149) | public static function async(string $url, string $method = 'GET', $dat...
method multiple (line 167) | public static function multiple(array $requests): array
method _createClient (line 204) | protected static function _createClient(): \GuzzleHttp\Client
method _populateSettings (line 245) | protected static function _populateSettings(string $url, string $metho...
FILE: common/framework/Image.php
class Image (line 8) | class Image
method isImage (line 16) | public static function isImage(string $filename): bool
method isAnimatedGIF (line 27) | public static function isAnimatedGIF(string $filename): bool
method isAnimatedWebP (line 56) | public static function isAnimatedWebP(string $filename): bool
method getImageInfo (line 73) | public static function getImageInfo(string $filename): ?array
FILE: common/framework/Korea.php
class Korea (line 8) | class Korea
method formatPhoneNumber (line 16) | public static function formatPhoneNumber(string $num): string
method isValidPhoneNumber (line 72) | public static function isValidPhoneNumber(string $num): bool
method isValidMobilePhoneNumber (line 100) | public static function isValidMobilePhoneNumber(string $num): bool
method isValidJuminNumber (line 117) | public static function isValidJuminNumber(string $code): bool
method isValidCorporationNumber (line 167) | public static function isValidCorporationNumber(string $code): bool
method isValidBusinessNumber (line 203) | public static function isValidBusinessNumber(string $code): bool
method isKoreanIP (line 235) | public static function isKoreanIP(string $ip): bool
method isKoreanEmailAddress (line 296) | public static function isKoreanEmailAddress(string $email_address, boo...
method _getDNSRecords (line 372) | protected static function _getDNSRecords(string $domain, int $type): a...
FILE: common/framework/Lang.php
class Lang (line 8) | class Lang
method getInstance (line 29) | public static function getInstance(string $language): self
method __construct (line 47) | protected function __construct(string $language)
method langType (line 58) | public function langType(): string
method loadPlugin (line 69) | public function loadPlugin(string $name): bool
method loadDirectory (line 107) | public function loadDirectory(string $dir, ?string $plugin_name = null...
method getSupportedList (line 170) | public static function getSupportedList(): array
method get (line 186) | public function get(string $key)
method set (line 212) | public function set(string $key, $value): void
method getFromDefaultLang (line 223) | public function getFromDefaultLang(string $key)
method __get (line 241) | public function __get(string $key)
method __set (line 305) | public function __set(string $key, $value): void
method __isset (line 383) | public function __isset(string $key): bool
method __unset (line 401) | public function __unset(string $key): void
method __call (line 413) | public function __call(string $key, $args = array())
FILE: common/framework/MIME.php
class MIME (line 8) | class MIME
method getContentType (line 18) | public static function getContentType(string $filename): ?string
method getTypeByExtension (line 48) | public static function getTypeByExtension(string $extension): string
method getTypeByFilename (line 60) | public static function getTypeByFilename(string $filename): string
method getExtensionByType (line 74) | public static function getExtensionByType(string $type): ?string
FILE: common/framework/Mail.php
class Mail (line 8) | class Mail
method setDefaultDriver (line 33) | public static function setDefaultDriver(Drivers\MailInterface $driver)...
method getDefaultDriver (line 43) | public static function getDefaultDriver(): Drivers\MailInterface
method addDriver (line 68) | public static function addDriver(Drivers\MailInterface $driver): void
method getSupportedDrivers (line 78) | public static function getSupportedDrivers(): array
method __construct (line 116) | public function __construct()
method setFrom (line 129) | public function setFrom(string $email, ?string $name = null): bool
method getFrom (line 148) | public function getFrom(): ?string
method addTo (line 161) | public function addTo(string $email, ?string $name = null): bool
method addCc (line 182) | public function addCc(string $email, ?string $name = null): bool
method addBcc (line 203) | public function addBcc(string $email, ?string $name = null): bool
method getRecipients (line 222) | public function getRecipients(): array
method setReplyTo (line 248) | public function setReplyTo(string $replyTo): bool
method setReturnPath (line 268) | public function setReturnPath(string $returnPath): bool
method setMessageID (line 288) | public function setMessageID(string $message_id): bool
method setInReplyTo (line 309) | public function setInReplyTo(string $in_reply_to): bool
method setReferences (line 330) | public function setReferences(string $references): bool
method setSubject (line 351) | public function setSubject(string $subject): bool
method getSubject (line 370) | public function getSubject(): string
method setTitle (line 381) | public function setTitle(string $subject): bool
method getTitle (line 391) | public function getTitle(): string
method setBody (line 403) | public function setBody(string $content, ?string $content_type = null)...
method getBody (line 423) | public function getBody(): string
method setContent (line 435) | public function setContent(string $content, ?string $content_type = nu...
method getContent (line 445) | public function getContent(): string
method setContentType (line 456) | public function setContentType(string $type = 'text/html'): void
method getContentType (line 466) | public function getContentType(): string
method attach (line 478) | public function attach(string $local_filename, ?string $display_filena...
method embed (line 516) | public function embed(string $local_filename, ?string $cid = null)
method getAttachments (line 551) | public function getAttachments(): array
method send (line 562) | public function send(bool $sync = false): bool
method sendAsync (line 617) | public static function sendAsync(self $mail): void
method isSent (line 627) | public function isSent(): bool
method getCaller (line 637) | public function getCaller(): string
method getErrors (line 647) | public function getErrors(): array
method convertImageURLs (line 659) | protected function convertImageURLs(array $matches): string
method formatAddresses (line 670) | protected function formatAddresses(array $addresses): array
FILE: common/framework/Pagination.php
class Pagination (line 8) | class Pagination
method countPages (line 24) | public static function countPages(int $total_items, int $items_per_pag...
method createLinks (line 46) | public static function createLinks(string $base_url, int $total_pages,...
method _composeLink (line 151) | protected static function _composeLink(string $target_url, string $con...
FILE: common/framework/Password.php
class Password (line 8) | class Password
method addAlgorithm (line 44) | public static function addAlgorithm(string $name, string $signature, c...
method isValidAlgorithm (line 56) | public static function isValidAlgorithm($algos): bool
method getSupportedAlgorithms (line 80) | public static function getSupportedAlgorithms(): array
method getBestSupportedAlgorithm (line 107) | public static function getBestSupportedAlgorithm(): string
method getDefaultAlgorithm (line 123) | public static function getDefaultAlgorithm(): string
method getBackwardCompatibleAlgorithm (line 151) | public static function getBackwardCompatibleAlgorithm(): string
method getWorkFactor (line 173) | public static function getWorkFactor(): int
method getRandomPassword (line 198) | public static function getRandomPassword(int $length = 16): string
method hashPassword (line 229) | public static function hashPassword(string $password, $algos = null, ?...
method checkPassword (line 374) | public static function checkPassword(string $password, string $hash, $...
method checkAlgorithm (line 409) | public static function checkAlgorithm(string $hash): array
method checkWorkFactor (line 425) | public static function checkWorkFactor(string $hash): int
method argon2id (line 448) | public static function argon2id(string $password, int $work_factor = 1...
method bcrypt (line 492) | public static function bcrypt(string $password, ?string $salt = null, ...
method pbkdf2 (line 513) | public static function pbkdf2(string $password, ?string $salt = null, ...
method countEntropyBits (line 550) | public static function countEntropyBits(string $password): int
FILE: common/framework/Push.php
class Push (line 8) | class Push
method addDriver (line 40) | public static function addDriver(string $name, Drivers\PushInterface $...
method getDriver (line 51) | public static function getDriver(string $name): ?object
method getSupportedDrivers (line 75) | public static function getSupportedDrivers(): array
method __construct (line 109) | public function __construct()
method setFrom (line 120) | public function setFrom(int $member_srl): bool
method getFrom (line 131) | public function getFrom(): int
method addTo (line 142) | public function addTo(int $member_srl): bool
method getRecipients (line 153) | public function getRecipients(): array
method addTopic (line 164) | public function addTopic(string $topic): bool
method getTopics (line 175) | public function getTopics(): array
method setSubject (line 186) | public function setSubject(string $subject): bool
method getSubject (line 197) | public function getSubject(): string
method setContent (line 208) | public function setContent(string $content): bool
method getContent (line 220) | public function getContent(): string
method setImage (line 231) | public function setImage(string $url): bool
method getImage (line 243) | public function getImage(): string
method setClickAction (line 254) | public function setClickAction(string $click_action): bool
method getClickAction (line 265) | public function getClickAction(): string
method setSound (line 276) | public function setSound(string $sound): bool
method setBadge (line 288) | public function setBadge(string $badge): bool
method setIcon (line 300) | public function setIcon(string $icon): bool
method setTag (line 312) | public function setTag(string $tag): bool
method setColor (line 324) | public function setColor(string $color): bool
method setAndroidChannelId (line 336) | public function setAndroidChannelId(string $android_channel_id): bool
method getMetadata (line 347) | public function getMetadata(): array
method setData (line 360) | public function setData(array $data): bool
method getData (line 371) | public function getData(): array
method setURL (line 382) | public function setURL(string $url): bool
method getURL (line 393) | public function getURL(): string
method send (line 404) | public function send(bool $sync = false): bool
method sendAsync (line 481) | public static function sendAsync(self $push): void
method _getDeviceTokens (line 492) | protected function _getDeviceTokens(): \stdClass
method _deleteInvalidTokens (line 536) | protected function _deleteInvalidTokens(array $invalid_tokens): bool
method _updateDeviceTokens (line 554) | protected function _updateDeviceTokens(array $update_tokens): bool
method isSent (line 576) | public function isSent(): bool
method getCaller (line 586) | public function getCaller(): string
method getErrors (line 596) | public function getErrors(): array
method getSuccessTokens (line 606) | public function getSuccessTokens(): array
method getDeletedTokens (line 616) | public function getDeletedTokens(): array
method getUpdatedTokens (line 626) | public function getUpdatedTokens(): array
method addError (line 637) | public function addError(string $message): void
FILE: common/framework/Queue.php
class Queue (line 8) | class Queue
method addDriver (line 30) | public static function addDriver(string $name, Drivers\QueueInterface ...
method getDriver (line 41) | public static function getDriver(string $name): ?Drivers\QueueInterface
method getDbDriver (line 65) | public static function getDbDriver(): Drivers\Queue\DB
method getSupportedDrivers (line 75) | public static function getSupportedDrivers(): array
method addTask (line 134) | public static function addTask(string $handler, ?object $args = null, ...
method addTaskAt (line 164) | public static function addTaskAt(int $time, string $handler, ?object $...
method addTaskAtInterval (line 189) | public static function addTaskAtInterval(string $interval, string $han...
method getScheduledTask (line 213) | public static function getScheduledTask(int $task_srl): ?object
method cancelScheduledTask (line 225) | public static function cancelScheduledTask(int $task_srl): bool
method checkKey (line 237) | public static function checkKey(string $key): bool
method checkIntervalSyntax (line 252) | public static function checkIntervalSyntax(string $interval): bool
method parseInterval (line 279) | public static function parseInterval(string $interval, ?int $time): bool
method process (line 329) | public static function process(int $index, int $count, int $timeout): ...
method _executeTask (line 417) | protected static function _executeTask(object $task): void
method signalHandler (line 521) | public static function signalHandler(int $signal, $siginfo): void
method signalReceived (line 531) | public static function signalReceived(): int
FILE: common/framework/Request.php
class Request (line 8) | class Request
method __construct (line 59) | public function __construct(string $method = '', string $url = '', str...
method get (line 88) | public function get(string $name, string $type = '')
method getAll (line 105) | public function getAll(): object
method getFullUrl (line 115) | public function getFullUrl(): string
method getMethod (line 125) | public function getMethod(): string
method getCallbackFunction (line 135) | public function getCallbackFunction(): string
method getRouteStatus (line 145) | public function getRouteStatus(): int
method set (line 157) | public function set(string $name, $value): void
method setAll (line 175) | public function setAll(array $args): void
method setRouteStatus (line 189) | public function setRouteStatus(int $status): void
method getRouteOption (line 200) | public function getRouteOption(string $name)
method getRouteOptions (line 210) | public function getRouteOptions(): object
method setRouteOption (line 222) | public function setRouteOption(string $name, $value): void
FILE: common/framework/Router.php
class Router (line 8) | class Router
method getRewriteLevel (line 102) | public static function getRewriteLevel(): int
method parseURL (line 120) | public static function parseURL(string $method, string $url, int $rewr...
method getURL (line 308) | public static function getURL(array $args, int $rewrite_level): string
method _getActionInfoByPrefix (line 451) | protected static function _getActionInfoByPrefix(string $prefix, strin...
method _getActionInfoByModule (line 477) | protected static function _getActionInfoByModule(string $module)
method _fillActionProperties (line 495) | protected static function _fillActionProperties(Request $request, ?obj...
method _getForwardedRoutes (line 525) | protected static function _getForwardedRoutes(string $type): array
method _getBestMatchingRoute (line 579) | protected static function _getBestMatchingRoute(array $routes, array $...
method _insertRouteVars (line 623) | protected static function _insertRouteVars(string $route, array $vars)...
FILE: common/framework/SMS.php
class SMS (line 8) | class SMS
method setDefaultDriver (line 40) | public static function setDefaultDriver(Drivers\SMSInterface $driver):...
method getDefaultDriver (line 50) | public static function getDefaultDriver(): Drivers\SMSInterface
method addDriver (line 75) | public static function addDriver(Drivers\SMSInterface $driver): void
method getSupportedDrivers (line 85) | public static function getSupportedDrivers(): array
method __construct (line 124) | public function __construct()
method setFrom (line 138) | public function setFrom(string $number): bool
method getFrom (line 149) | public function getFrom(): ?string
method addTo (line 161) | public function addTo(string $number, string $country = '0'): bool
method getRecipients (line 175) | public function getRecipients(): array
method getRecipientsWithCountry (line 187) | public function getRecipientsWithCountry(): array
method getRecipientsGroupedByCountry (line 197) | public function getRecipientsGroupedByCountry(): array
method setSubject (line 213) | public function setSubject(string $subject): bool
method getSubject (line 224) | public function getSubject(): string
method setTitle (line 235) | public function setTitle(string $subject): bool
method getTitle (line 245) | public function getTitle(): string
method setBody (line 256) | public function setBody(string $content): bool
method getBody (line 268) | public function getBody(): string
method setContent (line 279) | public function setContent(string $content): bool
method getContent (line 289) | public function getContent(): string
method attach (line 301) | public function attach(string $local_filename, ?string $display_filena...
method getAttachments (line 326) | public function getAttachments(): array
method setExtraVar (line 338) | public function setExtraVar(string $key, $value): void
method getExtraVar (line 349) | public function getExtraVar(string $key)
method getExtraVars (line 360) | public function getExtraVars(): array
method setExtraVars (line 371) | public function setExtraVars(array $vars): void
method setDelay (line 387) | public function setDelay(int $when): bool
method getDelay (line 412) | public function getDelay(): int
method forceSMS (line 422) | public function forceSMS(): void
method unforceSMS (line 432) | public function unforceSMS(): void
method isForceSMS (line 442) | public function isForceSMS(): bool
method allowSplitSMS (line 452) | public function allowSplitSMS(): void
method allowSplitLMS (line 462) | public function allowSplitLMS(): void
method disallowSplitSMS (line 472) | public function disallowSplitSMS(): void
method disallowSplitLMS (line 482) | public function disallowSplitLMS(): void
method isSplitSMSAllowed (line 492) | public function isSplitSMSAllowed(): bool
method isSplitLMSAllowed (line 502) | public function isSplitLMSAllowed(): bool
method send (line 513) | public function send(bool $sync = false): bool
method sendAsync (line 583) | public static function sendAsync(self $sms): void
method isSent (line 593) | public function isSent(): bool
method getCaller (line 603) | public function getCaller(): string
method getErrors (line 613) | public function getErrors(): array
method addError (line 624) | public function addError(string $message): void
method _formatSpec (line 635) | protected function _formatSpec(array $spec): array
method _getLengthInCharset (line 798) | protected function _getLengthInCharset(string $str, string $charset): int
method _splitString (line 812) | protected function _splitString(string $str, int $max_length, string $...
FILE: common/framework/Security.php
class Security (line 8) | class Security
method sanitize (line 17) | public static function sanitize(string $input, string $type): string
method encrypt (line 66) | public static function encrypt(string $plaintext, ?string $key = null)...
method decrypt (line 83) | public static function decrypt(string $ciphertext, ?string $key = null)
method createSignature (line 106) | public static function createSignature(string $string): string
method verifySignature (line 121) | public static function verifySignature(string $string, string $signatu...
method getRandom (line 141) | public static function getRandom(int $length = 32, string $format = 'a...
method getRandomNumber (line 249) | public static function getRandomNumber(int $min = 0, int $max = \PHP_I...
method getRandomUUID (line 272) | public static function getRandomUUID(int $version = 4): string
method compareStrings (line 302) | public static function compareStrings(string $a, string $b): bool
method checkCSRF (line 327) | public static function checkCSRF(?string $referer = null): bool
method checkXXE (line 394) | public static function checkXXE(?string $xml = null): bool
FILE: common/framework/Session.php
class Session (line 8) | class Session
method get (line 24) | public static function get(string $key)
method set (line 46) | public static function set(string $key, $value): void
method start (line 66) | public static function start(bool $force = false): bool
method checkStart (line 177) | public static function checkStart(bool $force = false): bool
method checkLoginStatusCookie (line 222) | public static function checkLoginStatusCookie(): void
method checkSSO (line 249) | public static function checkSSO(object $site_module_info): void
method create (line 348) | public static function create(): bool
method refresh (line 407) | public static function refresh(bool $refresh_cookie = false): bool
method close (line 451) | public static function close(): void
method destroy (line 474) | public static function destroy(): void
method login (line 512) | public static function login(int $member_srl, bool $refresh = true): bool
method logout (line 550) | public static function logout(): void
method isStarted (line 565) | public static function isStarted(): bool
method isMember (line 577) | public static function isMember(): bool
method isAdmin (line 589) | public static function isAdmin(): bool
method isTrusted (line 604) | public static function isTrusted(): bool
method isValid (line 628) | public static function isValid(int $member_srl = 0): bool
method getMemberSrl (line 669) | public static function getMemberSrl(): int
method getMemberInfo (line 682) | public static function getMemberInfo(bool $refresh = false): Helpers\S...
method setMemberInfo (line 709) | public static function setMemberInfo(Helpers\SessionHelper $member_inf...
method getLanguage (line 722) | public static function getLanguage(): string
method setLanguage (line 733) | public static function setLanguage(string $language): void
method getTimezone (line 746) | public static function getTimezone(): string
method setTimezone (line 757) | public static function setTimezone(string $timezone): void
method getDomain (line 767) | public static function getDomain(): string
method setDomain (line 785) | public static function setDomain(string $domain): bool
method setTrusted (line 806) | public static function setTrusted(int $duration = 300): bool
method getGenericToken (line 828) | public static function getGenericToken()
method createToken (line 852) | public static function createToken(string $key = ''): string
method verifyToken (line 872) | public static function verifyToken(string $token, string $key = '', bo...
method invalidateToken (line 894) | public static function invalidateToken(string $token): bool
method getLoginStatus (line 915) | public static function getLoginStatus(): string
method getLastLoginTime (line 935) | public static function getLastLoginTime(): int
method getValidityInfo (line 946) | public static function getValidityInfo(int $member_srl): object
method setValidityInfo (line 976) | public static function setValidityInfo(int $member_srl, object $validi...
method encrypt (line 999) | public static function encrypt(string $plaintext): string
method decrypt (line 1014) | public static function decrypt(string $ciphertext)
method _isBuggyUserAgent (line 1025) | protected static function _isBuggyUserAgent(): bool
method _getParams (line 1043) | protected static function _getParams(): array
method _getAutologinKey (line 1060) | protected static function _getAutologinKey()
method _unsetCookie (line 1081) | protected static function _unsetCookie(string $name, string $path = ''...
method setAutologinKeys (line 1098) | public static function setAutologinKeys(string $autologin_key, string ...
method destroyAutologinKeys (line 1132) | public static function destroyAutologinKeys(): bool
method destroyOtherSessions (line 1162) | public static function destroyOtherSessions(int $member_srl): bool
method destroyCookiesFromConflictingDomains (line 1204) | public static function destroyCookiesFromConflictingDomains(array $coo...
FILE: common/framework/Storage.php
class Storage (line 8) | class Storage
method exists (line 36) | public static function exists(string $path): bool
method isFile (line 49) | public static function isFile(string $path): bool
method isEmptyFile (line 61) | public static function isEmptyFile(string $path): bool
method isDirectory (line 74) | public static function isDirectory(string $path): bool
method isEmptyDirectory (line 86) | public static function isEmptyDirectory(string $path): bool
method isSymlink (line 104) | public static function isSymlink(string $path): bool
method isValidSymlink (line 116) | public static function isValidSymlink(string $path): bool
method isReadable (line 128) | public static function isReadable(string $path): bool
method isWritable (line 140) | public static function isWritable(string $path): bool
method isExecutable (line 152) | public static function isExecutable(string $path): bool
method getSize (line 181) | public static function getSize(string $filename)
method read (line 206) | public static function read(string $filename, bool $stream = false)
method readPHPData (line 240) | public static function readPHPData(string $filename)
method write (line 266) | public static function write(string $filename, $content, string $mode ...
method writePHPData (line 362) | public static function writePHPData(string $filename, $data, ?string $...
method copy (line 394) | public static function copy(string $source, string $destination, ?int ...
method move (line 489) | public static function move(string $source, string $destination): bool
method moveUploadedFile (line 552) | public static function moveUploadedFile(string $source, string $destin...
method delete (line 598) | public static function delete(string $filename): bool
method createDirectory (line 630) | public static function createDirectory(string $dirname, ?int $mode = n...
method readDirectory (line 666) | public static function readDirectory(string $dirname, bool $full_path ...
method copyDirectory (line 709) | public static function copyDirectory(string $source, string $destinati...
method moveDirectory (line 778) | public static function moveDirectory(string $source, string $destinati...
method deleteDirectory (line 790) | public static function deleteDirectory(string $dirname, bool $delete_s...
method deleteEmptyDirectory (line 853) | public static function deleteEmptyDirectory(string $dirname, bool $del...
method getUmask (line 881) | public static function getUmask(): int
method setUmask (line 896) | public static function setUmask(int $umask): void
method recommendUmask (line 906) | public static function recommendUmask(): string
method getServerUID (line 938) | public static function getServerUID()
method getLock (line 971) | public static function getLock(string $name): bool
method clearLocks (line 1009) | public static function clearLocks(): void
FILE: common/framework/Template.php
class Template (line 8) | class Template
method getInstance (line 69) | public static function getInstance(): self
method __construct (line 82) | public function __construct(?string $dirname = null, ?string $filename...
method _initConfig (line 121) | protected function _initConfig(): void
method _setSourcePath (line 137) | protected function _setSourcePath(string $dirname, string $filename, s...
method setCachePath (line 209) | public function setCachePath(?string $cache_path = null)
method disableCache (line 224) | public function disableCache(): void
method exists (line 234) | public function exists(): bool
method getParent (line 244) | public function getParent(): ?self
method setParent (line 255) | public function setParent(self $parent): void
method getVars (line 265) | public function getVars(): ?object
method setVars (line 276) | public function setVars($vars): void
method addVars (line 298) | public function addVars($vars): void
method compile (line 325) | public function compile(?string $dirname = null, ?string $filename = n...
method compileDirect (line 392) | public function compileDirect(string $dirname, string $filename): string
method parse (line 416) | public function parse(?string $content = null): string
method execute (line 457) | public function execute(): string
method getFragment (line 493) | public function getFragment(string $name): ?string
method getStack (line 511) | public function getStack(string $name): ?array
method isRelativePath (line 529) | public function isRelativePath(string $path): bool
method convertPath (line 541) | public function convertPath(string $path, ?string $basepath = null): s...
method normalizePath (line 571) | public function normalizePath(string $path): string
method _v2_include (line 596) | protected function _v2_include(...$args): string
method _v2_loadResource (line 669) | protected function _v2_loadResource(string $path, $media_type = null, ...
method _v2_initLoopVar (line 789) | protected function _v2_initLoopVar(string $stack_id, &$array): object
method _v2_incrLoopVar (line 814) | protected function _v2_incrLoopVar(object $loop): void
method _v2_removeLoopVar (line 832) | protected function _v2_removeLoopVar(object $loop): void
method _v2_buildAttribute (line 848) | protected function _v2_buildAttribute(string $attribute, array $defini...
method _v2_checkAuth (line 884) | protected function _v2_checkAuth(string $type = 'member'): bool
method _v2_checkCapability (line 903) | protected function _v2_checkCapability(int $check_type, $capability): ...
method _v2_errorExists (line 941) | protected function _v2_errorExists(...$args): bool
method _v2_isMobile (line 957) | protected function _v2_isMobile(): bool
method _v2_escape (line 968) | protected function _v2_escape($str): string
method _v2_lang (line 983) | protected function _v2_lang(...$args): string
FILE: common/framework/Timer.php
class Timer (line 8) | class Timer
method start (line 23) | public static function start(string $name = ''): float
method stop (line 45) | public static function stop(string $name = ''): float
method stopFormat (line 83) | public static function stopFormat(string $name = ''): string
method sinceStartup (line 95) | public static function sinceStartup(): float
method sinceStartupFormat (line 105) | public static function sinceStartupFormat(): string
FILE: common/framework/UA.php
class UA (line 8) | class UA
method isMobile (line 48) | public static function isMobile(?string $ua = null): bool
method isTablet (line 111) | public static function isTablet(?string $ua = null): bool
method isRobot (line 156) | public static function isRobot(?string $ua = null): bool
method getLocale (line 199) | public static function getLocale(?string $header = null): string
method getBrowserInfo (line 214) | public static function getBrowserInfo(?string $ua = null): self
method encodeFilenameForDownload (line 380) | public static function encodeFilenameForDownload(string $filename, ?st...
method getColorScheme (line 451) | public static function getColorScheme(): string
method setColorScheme (line 469) | public static function setColorScheme(string $color_scheme): void
FILE: common/framework/URL.php
class URL (line 8) | class URL
method getCurrentURL (line 19) | public static function getCurrentURL(array $changes = []): string
method getCurrentDomain (line 39) | public static function getCurrentDomain(bool $preserve_port = false): ...
method getCurrentDomainURL (line 56) | public static function getCurrentDomainURL(string $path = '/'): string
method getCanonicalURL (line 69) | public static function getCanonicalURL(string $url): string
method getDomainFromURL (line 87) | public static function getDomainFromURL(string $url)
method isInternalURL (line 106) | public static function isInternalURL(string $url): bool
method modifyURL (line 137) | public static function modifyURL(string $url, array $changes = []): st...
method fromServerPath (line 163) | public static function fromServerPath(string $path)
method toServerPath (line 191) | public static function toServerPath(string $url)
method encodeIdna (line 208) | public static function encodeIdna(string $url): string
method decodeIdna (line 248) | public static function decodeIdna(string $url): string
FILE: common/framework/drivers/CacheInterface.php
type CacheInterface (line 8) | interface CacheInterface
method getInstance (line 16) | public static function getInstance(array $config);
method isSupported (line 25) | public static function isSupported();
method validateSettings (line 35) | public static function validateSettings($config);
method get (line 45) | public function get($key);
method set (line 59) | public function set($key, $value, $ttl = 0, $force = false);
method delete (line 70) | public function delete($key);
method exists (line 80) | public function exists($key);
method incr (line 92) | public function incr($key, $amount);
method decr (line 104) | public function decr($key, $amount);
method clear (line 113) | public function clear();
FILE: common/framework/drivers/MailInterface.php
type MailInterface (line 8) | interface MailInterface
method getInstance (line 16) | public static function getInstance(array $config);
method getName (line 23) | public static function getName();
method getRequiredConfig (line 30) | public static function getRequiredConfig();
method getAPITypes (line 37) | public static function getAPITypes();
method getSPFHint (line 44) | public static function getSPFHint();
method getDKIMHint (line 51) | public static function getDKIMHint();
method isSupported (line 60) | public static function isSupported();
method send (line 70) | public function send(\Rhymix\Framework\Mail $message);
FILE: common/framework/drivers/PushInterface.php
type PushInterface (line 8) | interface PushInterface
method getInstance (line 16) | public static function getInstance(array $config): PushInterface;
method getName (line 23) | public static function getName(): string;
method getRequiredConfig (line 30) | public static function getRequiredConfig(): array;
method getOptionalConfig (line 37) | public static function getOptionalConfig(): array;
method isSupported (line 46) | public static function isSupported(): bool;
method send (line 57) | public function send(\Rhymix\Framework\Push $message, array $tokens): ...
FILE: common/framework/drivers/QueueInterface.php
type QueueInterface (line 8) | interface QueueInterface
method getInstance (line 16) | public static function getInstance(array $config): QueueInterface;
method getName (line 23) | public static function getName(): string;
method getRequiredConfig (line 30) | public static function getRequiredConfig(): array;
method getOptionalConfig (line 37) | public static function getOptionalConfig(): array;
method isSupported (line 44) | public static function isSupported(): bool;
method validateConfig (line 52) | public static function validateConfig($config): bool;
method addTask (line 63) | public function addTask(string $handler, ?object $args = null, ?object...
method getNextTask (line 71) | public function getNextTask(int $blocking = 0): ?object;
FILE: common/framework/drivers/SMSInterface.php
type SMSInterface (line 8) | interface SMSInterface
method getInstance (line 16) | public static function getInstance(array $config);
method getName (line 23) | public static function getName();
method getRequiredConfig (line 30) | public static function getRequiredConfig();
method getOptionalConfig (line 37) | public static function getOptionalConfig();
method getAPITypes (line 44) | public static function getAPITypes();
method getAPISpec (line 51) | public static function getAPISpec();
method isSupported (line 60) | public static function isSupported();
method send (line 71) | public function send(array $messages, \Rhymix\Framework\SMS $original);
FILE: common/framework/drivers/cache/apc.php
class APC (line 8) | class APC implements \Rhymix\Framework\Drivers\CacheInterface
method __construct (line 23) | protected function __construct()
method getInstance (line 34) | public static function getInstance(array $config)
method isSupported (line 50) | public static function isSupported()
method validateSettings (line 63) | public static function validateSettings($config)
method get (line 76) | public function get($key)
method set (line 94) | public function set($key, $value, $ttl = 0, $force = false)
method delete (line 108) | public function delete($key)
method exists (line 121) | public function exists($key)
method incr (line 136) | public function incr($key, $amount)
method decr (line 157) | public function decr($key, $amount)
method clear (line 175) | public function clear()
FILE: common/framework/drivers/cache/dummy.php
class Dummy (line 8) | class Dummy extends File implements \Rhymix\Framework\Drivers\CacheInter...
method isSupported (line 30) | public static function isSupported()
method get (line 43) | public function get($key)
method set (line 77) | public function set($key, $value, $ttl = 0, $force = false)
method delete (line 99) | public function delete($key)
method exists (line 124) | public function exists($key)
method clear (line 136) | public function clear()
FILE: common/framework/drivers/cache/file.php
class File (line 10) | class File implements \Rhymix\Framework\Drivers\CacheInterface
method __construct (line 30) | protected function __construct(array $config)
method getInstance (line 45) | public static function getInstance(array $config)
method isSupported (line 60) | public static function isSupported()
method validateSettings (line 73) | public static function validateSettings($config)
method get (line 86) | public function get($key)
method set (line 118) | public function set($key, $value, $ttl = 0, $force = false)
method delete (line 132) | public function delete($key)
method exists (line 145) | public function exists($key)
method incr (line 160) | public function incr($key, $amount)
method decr (line 177) | public function decr($key, $amount)
method clear (line 189) | public function clear()
method _getFilename (line 200) | protected function _getFilename($key)
FILE: common/framework/drivers/cache/memcached.php
class Memcached (line 8) | class Memcached implements \Rhymix\Framework\Drivers\CacheInterface
method __construct (line 29) | protected function __construct(array $config)
method getInstance (line 69) | public static function getInstance(array $config)
method isSupported (line 85) | public static function isSupported()
method validateSettings (line 98) | public static function validateSettings($config)
method get (line 148) | public function get($key)
method set (line 173) | public function set($key, $value, $ttl = 0, $force = false)
method delete (line 194) | public function delete($key)
method exists (line 207) | public function exists($key)
method incr (line 222) | public function incr($key, $amount)
method decr (line 243) | public function decr($key, $amount)
method clear (line 261) | public function clear()
FILE: common/framework/drivers/cache/redis.php
class Redis (line 8) | class Redis implements \Rhymix\Framework\Drivers\CacheInterface
method __construct (line 28) | protected function __construct(array $config)
method getInstance (line 81) | public static function getInstance(array $config)
method isSupported (line 97) | public static function isSupported()
method validateSettings (line 110) | public static function validateSettings($config)
method get (line 162) | public function get($key)
method set (line 202) | public function set($key, $value, $ttl = 0, $force = false)
method delete (line 224) | public function delete($key)
method exists (line 244) | public function exists($key)
method incr (line 266) | public function incr($key, $amount)
method decr (line 288) | public function decr($key, $amount)
method clear (line 307) | public function clear()
FILE: common/framework/drivers/cache/sqlite.php
class SQLite (line 10) | class SQLite implements \Rhymix\Framework\Drivers\CacheInterface
method __construct (line 31) | protected function __construct()
method _connect (line 61) | protected function _connect($filename)
method getInstance (line 75) | public static function getInstance(array $config)
method isSupported (line 91) | public static function isSupported()
method validateSettings (line 104) | public static function validateSettings($config)
method get (line 117) | public function get($key)
method set (line 164) | public function set($key, $value, $ttl = 0, $force = false)
method delete (line 188) | public function delete($key)
method exists (line 209) | public function exists($key)
method incr (line 247) | public function incr($key, $amount)
method decr (line 274) | public function decr($key, $amount)
method clear (line 286) | public function clear()
FILE: common/framework/drivers/mail/base.php
class Base (line 8) | abstract class Base implements \Rhymix\Framework\Drivers\MailInterface
method __construct (line 23) | protected function __construct(array $config)
method getInstance (line 34) | public static function getInstance(array $config)
method getName (line 44) | public static function getName()
method getRequiredConfig (line 54) | public static function getRequiredConfig()
method getAPITypes (line 64) | public static function getAPITypes()
method getSPFHint (line 74) | public static function getSPFHint()
method getDKIMHint (line 84) | public static function getDKIMHint()
method isSupported (line 96) | public static function isSupported()
method send (line 109) | public function send(\Rhymix\Framework\Mail $message)
FILE: common/framework/drivers/mail/brevo.php
class Brevo (line 8) | class Brevo extends Base implements \Rhymix\Framework\Drivers\MailInterface
method getRequiredConfig (line 20) | public static function getRequiredConfig(): array
method getSPFHint (line 30) | public static function getSPFHint(): string
method getDKIMHint (line 40) | public static function getDKIMHint(): string
method isSupported (line 52) | public static function isSupported(): bool
method send (line 65) | public function send(\Rhymix\Framework\Mail $message): bool
FILE: common/framework/drivers/mail/dummy.php
class Dummy (line 8) | class Dummy extends Base implements \Rhymix\Framework\Drivers\MailInterface
method isSupported (line 17) | public static function isSupported()
method send (line 30) | public function send(\Rhymix\Framework\Mail $message)
FILE: common/framework/drivers/mail/mailfunction.php
class MailFunction (line 8) | class MailFunction extends Base implements \Rhymix\Framework\Drivers\Mai...
method getName (line 15) | public static function getName()
method getSPFHint (line 25) | public static function getSPFHint()
method isSupported (line 37) | public static function isSupported()
method send (line 50) | public function send(\Rhymix\Framework\Mail $message)
FILE: common/framework/drivers/mail/mailgun.php
class Mailgun (line 8) | class Mailgun extends Base implements \Rhymix\Framework\Drivers\MailInte...
method getRequiredConfig (line 20) | public static function getRequiredConfig()
method getSPFHint (line 30) | public static function getSPFHint()
method getDKIMHint (line 40) | public static function getDKIMHint()
method isSupported (line 52) | public static function isSupported()
method send (line 65) | public function send(\Rhymix\Framework\Mail $message)
FILE: common/framework/drivers/mail/mandrill.php
class Mandrill (line 8) | class Mandrill extends SMTP implements \Rhymix\Framework\Drivers\MailInt...
method __construct (line 13) | protected function __construct(array $config)
method getRequiredConfig (line 28) | public static function getRequiredConfig()
method getSPFHint (line 38) | public static function getSPFHint()
method getDKIMHint (line 48) | public static function getDKIMHint()
FILE: common/framework/drivers/mail/ncloud_mailer.php
class Ncloud_Mailer (line 8) | class Ncloud_Mailer extends Base implements \Rhymix\Framework\Drivers\Ma...
method getName (line 21) | public static function getName()
method getRequiredConfig (line 31) | public static function getRequiredConfig()
method getSPFHint (line 41) | public static function getSPFHint()
method getDKIMHint (line 51) | public static function getDKIMHint()
method isSupported (line 63) | public static function isSupported()
method _makeSignature (line 76) | protected static function _makeSignature($timestamp, $access_key, $sec...
method send (line 92) | public function send(\Rhymix\Framework\Mail $message)
FILE: common/framework/drivers/mail/postmark.php
class Postmark (line 8) | class Postmark extends SMTP implements \Rhymix\Framework\Drivers\MailInt...
method __construct (line 13) | protected function __construct(array $config)
method getRequiredConfig (line 28) | public static function getRequiredConfig()
method getSPFHint (line 38) | public static function getSPFHint()
method getDKIMHint (line 48) | public static function getDKIMHint()
FILE: common/framework/drivers/mail/sendgrid.php
class SendGrid (line 8) | class SendGrid extends Base implements \Rhymix\Framework\Drivers\MailInt...
method getRequiredConfig (line 20) | public static function getRequiredConfig()
method getSPFHint (line 30) | public static function getSPFHint()
method getDKIMHint (line 40) | public static function getDKIMHint()
method isSupported (line 52) | public static function isSupported()
method send (line 65) | public function send(\Rhymix\Framework\Mail $message)
FILE: common/framework/drivers/mail/ses.php
class SES (line 8) | class SES extends SMTP implements \Rhymix\Framework\Drivers\MailInterface
method __construct (line 18) | protected function __construct(array $config)
method getName (line 31) | public static function getName()
method getRequiredConfig (line 41) | public static function getRequiredConfig()
method getAPITypes (line 51) | public static function getAPITypes()
method getSPFHint (line 66) | public static function getSPFHint()
method getDKIMHint (line 76) | public static function getDKIMHint()
FILE: common/framework/drivers/mail/smtp.php
class SMTP (line 8) | class SMTP extends Base implements \Rhymix\Framework\Drivers\MailInterface
method getRequiredConfig (line 15) | public static function getRequiredConfig()
method isSupported (line 27) | public static function isSupported()
method send (line 40) | public function send(\Rhymix\Framework\Mail $message)
FILE: common/framework/drivers/mail/sparkpost.php
class SparkPost (line 8) | class SparkPost extends Base implements \Rhymix\Framework\Drivers\MailIn...
method getRequiredConfig (line 20) | public static function getRequiredConfig()
method getSPFHint (line 30) | public static function getSPFHint()
method getDKIMHint (line 40) | public static function getDKIMHint()
method isSupported (line 52) | public static function isSupported()
method send (line 65) | public function send(\Rhymix\Framework\Mail $message)
FILE: common/framework/drivers/mail/woorimail.php
class Woorimail (line 8) | class Woorimail extends Base implements \Rhymix\Framework\Drivers\MailIn...
method getRequiredConfig (line 40) | public static function getRequiredConfig()
method getAPITypes (line 50) | public static function getAPITypes()
method getSPFHint (line 60) | public static function getSPFHint()
method getDKIMHint (line 70) | public static function getDKIMHint()
method isSupported (line 82) | public static function isSupported()
method send (line 95) | public function send(\Rhymix\Framework\Mail $message)
FILE: common/framework/drivers/push/apns.php
class APNs (line 11) | class APNs extends Base implements PushInterface
method getName (line 24) | public static function getName(): string
method isSupported (line 36) | public static function isSupported(): bool
method send (line 50) | public function send(Push $message, array $tokens): \stdClass
FILE: common/framework/drivers/push/base.php
class Base (line 10) | abstract class Base implements PushInterface
method __construct (line 26) | protected function __construct(array $config)
method getInstance (line 37) | public static function getInstance(array $config): PushInterface
method getName (line 47) | public static function getName(): string
method getRequiredConfig (line 57) | public static function getRequiredConfig(): array
method getOptionalConfig (line 67) | public static function getOptionalConfig(): array
method isSupported (line 79) | public static function isSupported(): bool
method send (line 93) | public function send(\Rhymix\Framework\Push $message, array $tokens): ...
FILE: common/framework/drivers/push/fcm.php
class FCM (line 12) | class FCM extends Base implements PushInterface
method getName (line 25) | public static function getName(): string
method isSupported (line 37) | public static function isSupported(): bool
method send (line 51) | public function send(Push $message, array $tokens): \stdClass
FILE: common/framework/drivers/push/fcmv1.php
class FCMv1 (line 18) | class FCMv1 extends Base implements PushInterface
method getName (line 39) | public static function getName(): string
method isSupported (line 51) | public static function isSupported(): bool
method send (line 65) | public function send(Push $message, array $tokens): \stdClass
FILE: common/framework/drivers/queue/db.php
class DB (line 12) | class DB implements QueueInterface
method getInstance (line 20) | public static function getInstance(array $config): QueueInterface
method getName (line 30) | public static function getName(): string
method getRequiredConfig (line 40) | public static function getRequiredConfig(): array
method getOptionalConfig (line 50) | public static function getOptionalConfig(): array
method isSupported (line 60) | public static function isSupported(): bool
method validateConfig (line 71) | public static function validateConfig($config): bool
method __construct (line 81) | public function __construct(array $config)
method addTask (line 95) | public function addTask(string $handler, ?object $args = null, ?object...
method addTaskAt (line 141) | public function addTaskAt(int $time, string $handler, ?object $args = ...
method addTaskAtInterval (line 182) | public function addTaskAtInterval(string $interval, string $handler, ?...
method getNextTask (line 209) | public function getNextTask(int $blocking = 0): ?object
method getScheduledTask (line 240) | public function getScheduledTask(int $task_srl): ?object
method getScheduledTasks (line 265) | public function getScheduledTasks(string $type): array
method updateLastRunTimestamp (line 325) | public function updateLastRunTimestamp(object $task): void
method cancelScheduledTask (line 346) | public function cancelScheduledTask(int $task_srl): bool
FILE: common/framework/drivers/queue/dummy.php
class Dummy (line 10) | class Dummy implements QueueInterface
method getInstance (line 23) | public static function getInstance(array $config): QueueInterface
method getName (line 33) | public static function getName(): string
method getRequiredConfig (line 43) | public static function getRequiredConfig(): array
method getOptionalConfig (line 53) | public static function getOptionalConfig(): array
method isSupported (line 63) | public static function isSupported(): bool
method validateConfig (line 74) | public static function validateConfig($config): bool
method __construct (line 84) | public function __construct(array $config)
method addTask (line 98) | public function addTask(string $handler, ?object $args = null, ?object...
method getNextTask (line 114) | public function getNextTask(int $blocking = 0): ?object
FILE: common/framework/drivers/queue/redis.php
class Redis (line 10) | class Redis implements QueueInterface
method getInstance (line 24) | public static function getInstance(array $config): QueueInterface
method getName (line 34) | public static function getName(): string
method getRequiredConfig (line 44) | public static function getRequiredConfig(): array
method getOptionalConfig (line 54) | public static function getOptionalConfig(): array
method isSupported (line 64) | public static function isSupported(): bool
method validateConfig (line 75) | public static function validateConfig($config): bool
method __construct (line 105) | public function __construct(array $config)
method addTask (line 139) | public function addTask(string $handler, ?object $args = null, ?object...
method getNextTask (line 171) | public function getNextTask(int $blocking = 0): ?object
FILE: common/framework/drivers/sms/base.php
class Base (line 8) | abstract class Base implements \Rhymix\Framework\Drivers\SMSInterface
method __construct (line 29) | protected function __construct(array $config)
method getInstance (line 40) | public static function getInstance(array $config)
method getName (line 50) | public static function getName()
method getRequiredConfig (line 60) | public static function getRequiredConfig()
method getOptionalConfig (line 70) | public static function getOptionalConfig()
method getAPITypes (line 80) | public static function getAPITypes()
method getAPISpec (line 90) | public static function getAPISpec()
method isSupported (line 102) | public static function isSupported()
method send (line 116) | public function send(array $messages, \Rhymix\Framework\SMS $original)
FILE: common/framework/drivers/sms/coolsms.php
class CoolSMS (line 8) | class CoolSMS extends Base implements \Rhymix\Framework\Drivers\SMSInter...
method isSupported (line 48) | public static function isSupported()
method send (line 62) | public function send(array $messages, \Rhymix\Framework\SMS $original)
FILE: common/framework/drivers/sms/dummy.php
class Dummy (line 8) | class Dummy extends Base implements \Rhymix\Framework\Drivers\SMSInterface
method isSupported (line 47) | public static function isSupported()
method send (line 61) | public function send(array $messages, \Rhymix\Framework\SMS $original)
method getSentMessages (line 75) | public function getSentMessages()
method resetSentMessages (line 85) | public function resetSentMessages()
FILE: common/framework/drivers/sms/iwinv.php
class iwinv (line 8) | class iwinv extends Base implements \Rhymix\Framework\Drivers\SMSInterface
method isSupported (line 54) | public static function isSupported()
method getApiUrls (line 64) | public static function getApiUrls()
method send (line 81) | public function send(array $messages, \Rhymix\Framework\SMS $original)
FILE: common/framework/drivers/sms/ncloud_sens.php
class Ncloud_Sens (line 10) | class Ncloud_Sens extends Base implements \Rhymix\Framework\Drivers\SMSI...
method getName (line 55) | public static function getName()
method isSupported (line 67) | public static function isSupported()
method _makeSignature (line 82) | protected static function _makeSignature($method, $uri, $timestamp, $a...
method _uploadFile (line 95) | protected function _uploadFile(string $filename, string $path): ?string
method send (line 149) | public function send(array $messages, \Rhymix\Framework\SMS $original)
FILE: common/framework/drivers/sms/ppurio.php
class Ppurio (line 8) | class Ppurio extends Base implements \Rhymix\Framework\Drivers\SMSInterface
method isSupported (line 39) | public static function isSupported()
method send (line 53) | public function send(array $messages, \Rhymix\Framework\SMS $original)
FILE: common/framework/drivers/sms/solapi.php
class SolAPI (line 10) | class SolAPI extends Base implements \Rhymix\Framework\Drivers\SMSInterface
method isSupported (line 54) | public static function isSupported()
method send (line 68) | public function send(array $messages, \Rhymix\Framework\SMS $original)
method _getHeader (line 169) | protected function _getHeader()
method _uploadImage (line 184) | protected function _uploadImage($path, $type)
method _request (line 200) | protected function _request($method, $url, $data = null)
FILE: common/framework/drivers/sms/twilio.php
class Twilio (line 11) | class Twilio extends Base implements \Rhymix\Framework\Drivers\SMSInterface
method isSupported (line 56) | public static function isSupported()
method send (line 70) | public function send(array $messages, \Rhymix\Framework\SMS $original)
FILE: common/framework/exceptions/DBError.php
class DBError (line 8) | class DBError extends \Rhymix\Framework\Exception
method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)
FILE: common/framework/exceptions/FeatureDisabled.php
class FeatureDisabled (line 8) | class FeatureDisabled extends \Rhymix\Framework\Exception
method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)
FILE: common/framework/exceptions/InvalidRequest.php
class InvalidRequest (line 8) | class InvalidRequest extends \Rhymix\Framework\Exception
method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)
FILE: common/framework/exceptions/MustLogin.php
class MustLogin (line 8) | class MustLogin extends \Rhymix\Framework\Exception
method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)
FILE: common/framework/exceptions/NotPermitted.php
class NotPermitted (line 8) | class NotPermitted extends \Rhymix\Framework\Exception
method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)
FILE: common/framework/exceptions/QueryError.php
class QueryError (line 8) | class QueryError extends DBError
method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)
FILE: common/framework/exceptions/SecurityViolation.php
class SecurityViolation (line 8) | class SecurityViolation extends \Rhymix\Framework\Exception
method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)
FILE: common/framework/exceptions/TargetNotFound.php
class TargetNotFound (line 8) | class TargetNotFound extends \Rhymix\Framework\Exception
method __construct (line 10) | public function __construct($message = '', $code = 0, $previous = null)
FILE: common/framework/filters/FileContentFilter.php
class FileContentFilter (line 8) | class FileContentFilter
method check (line 22) | public static function check(?string $file = null, ?string $filename =...
method _checkSVG (line 95) | protected static function _checkSVG($fp, $from, $to, $ext)
method _checkXML (line 117) | protected static function _checkXML($fp, $from, $to)
method _checkHTML (line 135) | protected static function _checkHTML($fp, $from, $to)
method _matchStream (line 161) | protected static function _matchStream($regexp, $fp, $from, $to, $bloc...
method _getMimetype (line 182) | protected static function _getMimetype($file, $trim_subtype = false)
FILE: common/framework/filters/FilenameFilter.php
class FilenameFilter (line 8) | class FilenameFilter
method clean (line 16) | public static function clean(string $filename): string
method cleanPath (line 63) | public static function cleanPath(string $path): string
method isDirectDownload (line 103) | public static function isDirectDownload(string $filename, bool $includ...
FILE: common/framework/filters/HTMLFilter.php
class HTMLFilter (line 13) | class HTMLFilter
method prependPreFilter (line 76) | public static function prependPreFilter(callable $callback): void
method appendPreFilter (line 87) | public static function appendPreFilter(callable $callback): void
method prependPostFilter (line 98) | public static function prependPostFilter(callable $callback): void
method appendPostFilter (line 109) | public static function appendPostFilter(callable $callback): void
method clean (line 123) | public static function clean(string $input, $allow_classes = false, bo...
method fixRelativeUrls (line 179) | public static function fixRelativeUrls(string $content): string
method getHTMLPurifier (line 202) | public static function getHTMLPurifier(?array $allowed_classes = null)...
method _supportHTML5 (line 269) | protected static function _supportHTML5(\HTMLPurifier_Config $config):...
method _supportCSS3 (line 379) | protected static function _supportCSS3(\HTMLPurifier_Config $config): ...
method _preprocess (line 531) | protected static function _preprocess(string $content, \HTMLPurifier $...
method _postprocess (line 553) | protected static function _postprocess(string $content, \HTMLPurifier ...
method _encodeWidgetsAndEditorComponents (line 636) | protected static function _encodeWidgetsAndEditorComponents(string $co...
method _decodeWidgetsAndEditorComponents (line 691) | protected static function _decodeWidgetsAndEditorComponents(string $co...
method _encodeDataAttributes (line 732) | protected static function _encodeDataAttributes(string $content): string
method _decodeDataAttributes (line 765) | protected static function _decodeDataAttributes(string $content): string
FILE: common/framework/filters/IpFilter.php
class IpFilter (line 8) | class IpFilter
method inRange (line 17) | public static function inRange(string $ip, string $range): bool
method inRanges (line 76) | public static function inRanges(string $ip, array $ranges): bool
method validateRange (line 94) | public static function validateRange(string $range): bool
method validateRanges (line 119) | public static function validateRanges(array $ranges): bool
method getCloudFlareRealIP (line 136) | public static function getCloudFlareRealIP()
method _checkIPv4CIDR (line 163) | protected static function _checkIPv4CIDR(string $ip, string $range): bool
method _checkIPv6CIDR (line 181) | protected static function _checkIPv6CIDR(string $ip, string $range): bool
method _checkIPv4Wildcard (line 206) | protected static function _checkIPv4Wildcard(string $ip, string $range...
method _checkIPv4Hyphen (line 226) | protected static function _checkIPv4Hyphen(string $ip, string $range):...
FILE: common/framework/filters/MediaFilter.php
class MediaFilter (line 10) | class MediaFilter
method addPrefix (line 24) | public static function addPrefix(string $prefix, bool $permanently = f...
method addIframePrefix (line 55) | public static function addIframePrefix(string $prefix, bool $permanent...
method addObjectPrefix (line 66) | public static function addObjectPrefix(): void
method formatPrefix (line 77) | public static function formatPrefix(string $prefix): string
method getWhitelist (line 92) | public static function getWhitelist(): array
method getWhitelistRegex (line 106) | public static function getWhitelistRegex(): string
method matchWhitelist (line 126) | public static function matchWhitelist(string $url): bool
method removeEmbeddedMedia (line 138) | public static function removeEmbeddedMedia(string $input, string $repl...
method _loadWhitelists (line 152) | protected static function _loadWhitelists(array $custom_whitelist = []...
method getIframeWhitelist (line 222) | public static function getIframeWhitelist(): array
method getIframeWhitelistRegex (line 233) | public static function getIframeWhitelistRegex(): string
method matchIframeWhitelist (line 245) | public static function matchIframeWhitelist(string $url): bool
method getObjectWhitelist (line 256) | public static function getObjectWhitelist(): array
method getObjectWhitelistRegex (line 267) | public static function getObjectWhitelistRegex(): string
method matchObjectWhitelist (line 279) | public static function matchObjectWhitelist(string $url): bool
FILE: common/framework/helpers/CacheItemHelper.php
class CacheItemHelper (line 11) | class CacheItemHelper implements CacheItemInterface
method __construct (line 26) | public function __construct(string $key, CacheInterface $driver)
method getKey (line 37) | public function getKey()
method get (line 47) | public function get()
method isHit (line 61) | public function isHit()
method set (line 72) | public function set($value)
method expiresAt (line 84) | public function expiresAt($expiration)
method expiresAfter (line 96) | public function expiresAfter($time)
FILE: common/framework/helpers/CacheItemPoolHelper.php
class CacheItemPoolHelper (line 12) | class CacheItemPoolHelper implements CacheItemPoolInterface
method __construct (line 33) | public function __construct(bool $force = false)
method getItem (line 53) | public function getItem($key)
method getItems (line 71) | public function getItems(array $keys = [])
method hasItem (line 94) | public function hasItem($key)
method clear (line 104) | public function clear()
method deleteItem (line 116) | public function deleteItem($key)
method deleteItems (line 134) | public function deleteItems(array $keys)
method save (line 159) | public function save(CacheItemInterface $item)
method saveDeferred (line 171) | public function saveDeferred(CacheItemInterface $item)
method commit (line 181) | public function commit()
method _getRealKey (line 192) | protected function _getRealKey($key): string
FILE: common/framework/helpers/ConfigHelper.php
class ConfigHelper (line 11) | class ConfigHelper
method consolidate (line 24) | public static function consolidate(array $format): array
method _parseConfigValue (line 44) | protected static function _parseConfigValue(array $value)
FILE: common/framework/helpers/DBHelper.php
class DBHelper (line 15) | class DBHelper extends \PDO
method setType (line 25) | public function setType(string $type)
method prepare (line 37) | #[\ReturnTypeWillChange]
method query (line 91) | #[\ReturnTypeWillChange]
method exec (line 135) | #[\ReturnTypeWillChange]
FILE: common/framework/helpers/DBResultHelper.php
class DBResultHelper (line 10) | class DBResultHelper extends \BaseObject
FILE: common/framework/helpers/DBStmtHelper.php
class DBStmtHelper (line 16) | class DBStmtHelper extends \PDOStatement
method setType (line 29) | public function setType(string $type): void
method execute (line 40) | public function execute($params = null): bool
FILE: common/framework/helpers/HTTPHelper.php
class HTTPHelper (line 14) | class HTTPHelper implements ResponseInterface
method __construct (line 30) | public function __construct(\Throwable $exception)
method getStatusCode (line 40) | public function getStatusCode(): int
method getReasonPhrase (line 44) | public function getReasonPhrase(): string
method withStatus (line 48) | public function withStatus(int $code, string $reasonPhrase = ''): Resp...
FILE: common/framework/helpers/SessionHelper.php
class SessionHelper (line 8) | #[\AllowDynamicProperties]
method __construct (line 41) | public function __construct($member_srl = 0)
method isMember (line 65) | public function isMember(): bool
method isAdmin (line 75) | public function isAdmin(): bool
method isModuleAdmin (line 86) | public function isModuleAdmin(?int $module_srl = null): bool
method isValid (line 96) | public function isValid(): bool
method getGroups (line 113) | public function getGroups(): array
method getProfileImage (line 123) | public function getProfileImage(): string
FILE: common/framework/i18n.php
class i18n (line 8) | class i18n
method listCountries (line 32) | public static function listCountries(int $sort_by = self::SORT_NAME_EN...
method getCallingCodeByCountryCode (line 98) | public static function getCallingCodeByCountryCode(string $code): ?string
method getCountryCodeByCallingCode (line 129) | public static function getCountryCodeByCallingCode(string $code, $type...
method formatPhoneNumber (line 152) | public static function formatPhoneNumber(string $phone_number, string ...
FILE: common/framework/parsers/AddonInfoParser.php
class AddonInfoParser (line 8) | class AddonInfoParser extends BaseParser
method loadXML (line 18) | public static function loadXML(string $filename, string $addon_name, s...
FILE: common/framework/parsers/BaseParser.php
class BaseParser (line 8) | abstract class BaseParser
method _getAttributes (line 17) | protected static function _getAttributes(\SimpleXMLElement $element, b...
method _getAttributeString (line 38) | protected static function _getAttributeString(\SimpleXMLElement $eleme...
method _getAttributeBool (line 62) | protected static function _getAttributeBool(\SimpleXMLElement $element...
method _getChildrenByLang (line 85) | protected static function _getChildrenByLang(\SimpleXMLElement $parent...
method _getExtraVars (line 116) | protected static function _getExtraVars(\SimpleXMLElement $extra_vars,...
FILE: common/framework/parsers/ConfigParser.php
class ConfigParser (line 13) | class ConfigParser
method convert (line 20) | public static function convert(): array
FILE: common/framework/parsers/DBQueryParser.php
class DBQueryParser (line 8) | class DBQueryParser extends BaseParser
method loadXML (line 16) | public static function loadXML(string $filename): ?object
method _parseQuery (line 38) | protected static function _parseQuery(\SimpleXMLElement $xml, string $...
method _parseConditions (line 255) | protected static function _parseConditions(\SimpleXMLElement $parent):...
FILE: common/framework/parsers/DBTableParser.php
class DBTableParser (line 8) | class DBTableParser extends BaseParser
method loadXML (line 36) | public static function loadXML(string $filename = '', string $content ...
method getTypeAndSize (line 238) | public static function getTypeAndSize(string $type, string $size): array
method getXEType (line 275) | public static function getXEType(string $type, string $size): string
method resolveDependency (line 304) | public static function resolveDependency(array $tables): array
FILE: common/framework/parsers/EditorComponentParser.php
class EditorComponentParser (line 8) | class EditorComponentParser extends BaseParser
method loadXML (line 18) | public static function loadXML(string $filename, string $component_nam...
FILE: common/framework/parsers/LangParser.php
class LangParser (line 11) | class LangParser
method convertDirectory (line 20) | public static function convertDirectory(string $dir, array $xml_langs ...
method compileXMLtoPHP (line 49) | public static function compileXMLtoPHP(string $filename, string $langu...
method _toArray (line 112) | protected static function _toArray($items, &$lang, string $language): ...
FILE: common/framework/parsers/LayoutInfoParser.php
class LayoutInfoParser (line 8) | class LayoutInfoParser extends BaseParser
method loadXML (line 19) | public static function loadXML(string $filename, string $layout_name, ...
FILE: common/framework/parsers/ModuleActionParser.php
class ModuleActionParser (line 8) | class ModuleActionParser extends BaseParser
method loadXML (line 30) | public static function loadXML(string $filename): ?object
method analyzeRoute (line 326) | public static function analyzeRoute(array $route): object
FILE: common/framework/parsers/ModuleInfoParser.php
class ModuleInfoParser (line 8) | class ModuleInfoParser extends BaseParser
method loadXML (line 16) | public static function loadXML(string $filename): ?object
FILE: common/framework/parsers/RulesetParser.php
class RulesetParser (line 8) | class RulesetParser extends BaseParser
method loadXML (line 17) | public static function loadXML(string $filename, string $lang = ''): ?...
FILE: common/framework/parsers/SkinInfoParser.php
class SkinInfoParser (line 8) | class SkinInfoParser extends BaseParser
method loadXML (line 19) | public static function loadXML(string $filename, string $skin_name, st...
FILE: common/framework/parsers/WidgetInfoParser.php
class WidgetInfoParser (line 8) | class WidgetInfoParser extends BaseParser
method loadXML (line 18) | public static function loadXML(string $filename, string $widget_name, ...
FILE: common/framework/parsers/WidgetStyleInfoParser.php
class WidgetStyleInfoParser (line 8) | class WidgetStyleInfoParser extends BaseParser
method loadXML (line 18) | public static function loadXML(string $filename, string $widgetstyle_n...
FILE: common/framework/parsers/XEXMLParser.php
class XEXMLParser (line 8) | #[\AllowDynamicProperties]
method loadXMLFile (line 18) | public static function loadXMLFile(string $filename, string $lang = ''...
method loadXMLString (line 31) | public static function loadXMLString(string $content, string $lang = '...
method _recursiveConvert (line 58) | protected static function _recursiveConvert(\SimpleXMLElement $element...
method __get (line 112) | public function __get($name)
FILE: common/framework/parsers/XMLRPCParser.php
class XMLRPCParser (line 8) | class XMLRPCParser
method parse (line 16) | public static function parse(string $content): ?array
method _parseArray (line 38) | protected static function _parseArray(\SimpleXMLElement $parent): array
FILE: common/framework/parsers/dbquery/ColumnRead.php
class ColumnRead (line 8) | class ColumnRead
FILE: common/framework/parsers/dbquery/ColumnWrite.php
class ColumnWrite (line 8) | class ColumnWrite extends VariableBase
FILE: common/framework/parsers/dbquery/Condition.php
class Condition (line 8) | class Condition extends VariableBase
FILE: common/framework/parsers/dbquery/ConditionGroup.php
class ConditionGroup (line 8) | class ConditionGroup
FILE: common/framework/parsers/dbquery/EmptyString.php
class EmptyString (line 8) | class EmptyString
method __toString (line 10) | public function __toString(): string
FILE: common/framework/parsers/dbquery/GroupBy.php
class GroupBy (line 8) | class GroupBy
FILE: common/framework/parsers/dbquery/IndexHint.php
class IndexHint (line 8) | class IndexHint
FILE: common/framework/parsers/dbquery/Navigation.php
class Navigation (line 8) | class Navigation
FILE: common/framework/parsers/dbquery/NullValue.php
class NullValue (line 8) | class NullValue
method __toString (line 10) | public function __toString(): string
FILE: common/framework/parsers/dbquery/OrderBy.php
class OrderBy (line 8) | class OrderBy extends VariableBase
FILE: common/framework/parsers/dbquery/Query.php
class Query (line 8) | class Query extends VariableBase
method getQueryString (line 63) | public function getQueryString(string $prefix = '', array $args = [], ...
method getQueryParams (line 102) | public function getQueryParams(): array
method requiresPagination (line 112) | public function requiresPagination(): bool
method _getSelectQueryString (line 123) | protected function _getSelectQueryString(int $count_only = 0): string
method _getInsertQueryString (line 288) | protected function _getInsertQueryString(): string
method _getUpdateQueryString (line 340) | protected function _getUpdateQueryString(): string
method _getDeleteQueryString (line 391) | protected function _getDeleteQueryString(): string
method _arrangeTables (line 443) | protected function _arrangeTables(array $tables, int $use_aliases = se...
method _arrangeIndexHints (line 512) | protected function _arrangeIndexHints(array $index_hints): string
method _arrangeConditions (line 559) | protected function _arrangeConditions(array $conditions): string
method _arrangeOrderBy (line 618) | protected function _arrangeOrderBy(Navigation $navigation): string
method _arrangeLimitOffset (line 675) | protected function _arrangeLimitOffset(Navigation $navigation): string
method _parseCondition (line 731) | protected function _parseCondition(VariableBase $condition): string
method quoteName (line 747) | public static function quoteName(string $column_name): string
method isValidColumnName (line 765) | public static function isValidColumnName(string $column_name): bool
method isValidVariable (line 777) | public static function isValidVariable($var, bool $allow_empty_string ...
FILE: common/framework/parsers/dbquery/Table.php
class Table (line 8) | class Table
FILE: common/framework/parsers/dbquery/VariableBase.php
class VariableBase (line 8) | class VariableBase
method getQueryStringAndParams (line 24) | public function getQueryStringAndParams(array $args, string $prefix = ...
method getValue (line 292) | public function getValue(array $args): array
method getDefaultValue (line 333) | public function getDefaultValue(): array
method filterValue (line 405) | public function filterValue($value): void
method _parseSearchKeywords (line 498) | protected function _parseSearchKeywords(string $column, string $value)...
FILE: common/framework/parsers/dbtable/Column.php
class Column (line 8) | class Column
FILE: common/framework/parsers/dbtable/Constraint.php
class Constraint (line 8) | class Constraint
FILE: common/framework/parsers/dbtable/GeneratedColumn.php
class GeneratedColumn (line 8) | class GeneratedColumn extends Column
FILE: common/framework/parsers/dbtable/Index.php
class Index (line 8) | class Index
FILE: common/framework/parsers/dbtable/Table.php
class Table (line 8) | class Table
method getCreateQuery (line 25) | public function getCreateQuery(string $prefix = '', string $charset = ...
FILE: common/framework/parsers/template/TemplateParser_v1.php
class TemplateParser_v1 (line 20) | class TemplateParser_v1
method convert (line 36) | public function convert(string $content, Template $template): string
method _compileFormAuthGeneration (line 103) | private function _compileFormAuthGeneration($matches)
method _replacePath (line 201) | private function _replacePath($match)
method _replaceRelativePath (line 213) | private function _replaceRelativePath($match)
method _replaceSrcsetPath (line 251) | private function _replaceSrcsetPath($match)
method _parseInline (line 274) | private function _parseInline($content)
method _parseResource (line 396) | private function _parseResource($m)
method _applyEscapeOption (line 789) | private function _applyEscapeOption($str, $escape_option)
method _getRelativeDir (line 817) | private function _getRelativeDir($path)
method _isVar (line 856) | private static function _isVar($str)
method _replaceVar (line 867) | private static function _replaceVar($php)
method _replaceTempEntities (line 900) | private static function _replaceTempEntities($str)
method _getTempEntityForChar (line 914) | private static function _getTempEntityForChar($char)
FILE: common/framework/parsers/template/TemplateParser_v2.php
class TemplateParser_v2 (line 21) | class TemplateParser_v2
method convert (line 130) | public function convert(string $content, Template $template): string
method _preprocess (line 166) | protected function _preprocess(string $content): string
method _addContextSwitches (line 180) | protected function _addContextSwitches(string $content): string
method _removeContextSwitches (line 246) | protected static function _removeContextSwitches(string $content): string
method _removeComments (line 260) | protected function _removeComments(string $content): string
method _convertRelativePaths (line 274) | protected function _convertRelativePaths(string $content): string
method _convertPHPSections (line 329) | protected function _convertPHPSections(string $content): string
method _convertVerbatimSections (line 358) | protected function _convertVerbatimSections(string $content): string
method _convertFragments (line 384) | protected function _convertFragments(string $content): string
method _convertClassAliases (line 417) | protected function _convertClassAliases(string $content): string
method _convertIncludes (line 465) | protected function _convertIncludes(string $content): string
method _convertResource (line 555) | protected function _convertResource(string $content): string
method _convertLoopDirectives (line 620) | protected function _convertLoopDirectives(string $content): string
method _convertInlineDirectives (line 742) | protected function _convertInlineDirectives(string $content): string
method _convertMiscDirectives (line 785) | protected function _convertMiscDirectives(string $content): string
method _convertEchoStatements (line 834) | protected function _convertEchoStatements(string $content): string
method _arrangeOutputFilters (line 866) | protected function _arrangeOutputFilters(array $match): string
method _applyEscapeOption (line 1002) | protected static function _applyEscapeOption(string $str, string $opti...
method _addDeprecationMessages (line 1032) | protected function _addDeprecationMessages(string $content): string
method _postprocess (line 1062) | protected function _postprocess(string $content): string
method _convertVariableScope (line 1102) | protected function _convertVariableScope(string $content): string
method _getTagAttributes (line 1165) | protected static function _getTagAttributes(string $html): array
method _getRegexpForParentheses (line 1190) | protected static function _getRegexpForParentheses(int $position_in_re...
method _getRegexpForCurlyBraces (line 1201) | protected static function _getRegexpForCurlyBraces(int $position_in_re...
method _escapeCurly (line 1212) | protected static function _escapeCurly(string $code): string
method _escapeVars (line 1226) | protected static function _escapeVars(string $code): string
FILE: common/functions.php
function config (line 16) | function config(string $key, $value = null)
function lang (line 35) | function lang(?string $code, $value = null)
function array_first (line 61) | function array_first(array $array)
function array_first_key (line 73) | function array_first_key(array $array)
function array_last (line 86) | function array_last(array $array)
function array_last_key (line 98) | function array_last_key(array $array)
function array_escape (line 110) | function array_escape(array $array, bool $double_escape = true): array
function array_flatten (line 141) | function array_flatten(array $array, bool $preserve_keys = true): array
function class_basename (line 164) | function class_basename($class): string
function clean_path (line 177) | function clean_path(string $path): string
function escape (line 190) | function escape($str, bool $double_escape = true, bool $except_lang_code...
function escape_css (line 210) | function escape_css(string $str): string
function escape_js (line 221) | function escape_js(string $str): string
function escape_sqstr (line 235) | function escape_sqstr(string $str): string
function escape_dqstr (line 247) | function escape_dqstr(string $str): string
function explode_with_escape (line 263) | function explode_with_escape(string $delimiter, string $str, int $limit ...
function starts_with (line 287) | function starts_with($needle, $haystack, bool $case_sensitive = true): bool
function ends_with (line 313) | function ends_with($needle, $haystack, bool $case_sensitive = true): bool
function contains (line 339) | function contains($needle, $haystack, bool $case_sensitive = true): bool
function is_between (line 367) | function is_between($needle, $min, $max, bool $exclusive = false): bool
function force_range (line 389) | function force_range($input, $min, $max)
function base64_encode_urlsafe (line 405) | function base64_encode_urlsafe(string $str): string
function base64_decode_urlsafe (line 416) | function base64_decode_urlsafe(string $str): string
function number_shorten (line 428) | function number_shorten($number, int $significant_digits = 2): string
function path2url (line 460) | function path2url(string $path)
function url2path (line 474) | function url2path(string $url)
function hex2rgb (line 487) | function hex2rgb(string $hex): array
function rgb2hex (line 517) | function rgb2hex(array $rgb, bool $hash_prefix = true): string
function include_in_clean_scope (line 537) | function include_in_clean_scope(string $filename)
function include_and_ignore_errors (line 548) | function include_and_ignore_errors(string $filename)
function include_and_ignore_output (line 562) | function include_and_ignore_output(string $filename)
function tobool (line 577) | function tobool($input): bool
function countobj (line 594) | function countobj($array_or_object): int
function utf8_check (line 616) | function utf8_check($str): bool
function utf8_clean (line 634) | function utf8_clean($str): string
function utf8_mbencode (line 668) | function utf8_mbencode($str): string
function utf8_normalize_spaces (line 685) | function utf8_normalize_spaces($str, bool $multiline = false): string
function utf8_trim (line 704) | function utf8_trim($str): string
function is_html_content (line 717) | function is_html_content($str): bool
function is_empty_html_content (line 747) | function is_empty_html_content($str): bool
function str_starts_with (line 763) | function str_starts_with($haystack, $needle)
function str_ends_with (line 778) | function str_ends_with($haystack, $needle)
function str_contains (line 793) | function str_contains($haystack, $needle)
FILE: common/js/common.js
function isMobile (line 1307) | function isMobile() {
function getColorScheme (line 1316) | function getColorScheme() {
function setColorScheme (line 1326) | function setColorScheme(color_scheme) {
function detectColorScheme (line 1335) | function detectColorScheme() {
function getLangType (line 1344) | function getLangType() {
function setLangType (line 1354) | function setLangType(lang_type) {
function getCSRFToken (line 1363) | function getCSRFToken() {
function setCSRFToken (line 1373) | function setCSRFToken(token) {
function isCurrentPageUrl (line 1383) | function isCurrentPageUrl(url) {
function isSameOrigin (line 1394) | function isSameOrigin(url1, url2) {
function redirect (line 1404) | function redirect(url) {
function openModal (line 1414) | function openModal(id) {
function openModalIframe (line 1425) | function openModalIframe(url, target) {
function closeModal (line 1435) | function closeModal(id) {
function winopen (line 1446) | function winopen(url, target, features) {
function popopen (line 1457) | function popopen(url, target) {
function doAddDocumentCart (line 1473) | function doAddDocumentCart(obj) {
function doDocumentPreview (line 1493) | function doDocumentPreview(obj) {
function doDocumentSave (line 1533) | function doDocumentSave(obj) {
function doDocumentLoad (line 1569) | function doDocumentLoad(obj) {
function doDocumentSelect (line 1586) | function doDocumentSelect(document_srl, module, mid) {
function getCookie (line 1633) | function getCookie(name) {
function setCookie (line 1649) | function setCookie(name, value, expires, path) {
function doChangeLangType (line 1667) | function doChangeLangType(obj) {
function doCallModuleAction (line 1698) | function doCallModuleAction(module, action, target_srl) {
function rhymix_alert_close (line 1725) | function rhymix_alert_close() {
function rhymix_alert (line 1743) | function rhymix_alert(message, redirect_url, delay) {
function move_url (line 1766) | function move_url(url, open_window) {
function setFixedPopupSize (line 1787) | function setFixedPopupSize() {
function displayMultimedia (line 1827) | function displayMultimedia(src, width, height, options) {
function _displayMultimedia (line 1833) | function _displayMultimedia(src, width, height, options) {
function transRGB2Hex (line 1862) | function transRGB2Hex(value) {
function sendMailTo (line 1893) | function sendMailTo(email_address) {
function viewSkinInfo (line 1905) | function viewSkinInfo(module, skin) {
function xSleep (line 1917) | function xSleep(sec) {
function isDef (line 1933) | function isDef() {
function is_def (line 1951) | function is_def(v) {
function ucfirst (line 1962) | function ucfirst(str) {
function get_by_id (line 1973) | function get_by_id(id) {
function GetObjLeft (line 1984) | function GetObjLeft(obj) {
function GetObjTop (line 1995) | function GetObjTop(obj) {
function getOuterHTML (line 2006) | function getOuterHTML(obj) {
function replaceOuterHTML (line 2018) | function replaceOuterHTML(obj, html) {
function toggleDisplay (line 2029) | function toggleDisplay(id) {
function toggleSecuritySignIn (line 2039) | function toggleSecuritySignIn() {
function completeMessage (line 2055) | function completeMessage(ret_obj) {
function reloadDocument (line 2066) | function reloadDocument() {
function open_calendar (line 2079) | function open_calendar(fo_id, day_str, callback_func) {
function displayPopupMenu (line 2092) | function displayPopupMenu(ret_obj, response_tags, params) {
function createPopupMenu (line 2102) | function createPopupMenu() {
function chkPopupMenu (line 2112) | function chkPopupMenu() {
function zbxe_folder_open (line 2119) | function zbxe_folder_open(id) {
function zbxe_folder_close (line 2124) | function zbxe_folder_close(id) {
function svc_folder_open (line 2129) | function svc_folder_open(id) {
function svc_folder_close (line 2134) | function svc_folder_close(id) {
FILE: common/js/jquery-2.2.4.js
function isArrayLike (line 529) | function isArrayLike( obj ) {
function Sizzle (line 738) | function Sizzle( selector, context, results, seed ) {
function createCache (line 878) | function createCache() {
function markFunction (line 896) | function markFunction( fn ) {
function assert (line 905) | function assert( fn ) {
function addHandle (line 927) | function addHandle( attrs, handler ) {
function siblingCheck (line 942) | function siblingCheck( a, b ) {
function createInputPseudo (line 969) | function createInputPseudo( type ) {
function createButtonPseudo (line 980) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 991) | function createPositionalPseudo( fn ) {
function testContext (line 1014) | function testContext( context ) {
function setFilters (line 2059) | function setFilters() {}
function toSelector (line 2130) | function toSelector( tokens ) {
function addCombinator (line 2140) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2198) | function elementMatcher( matchers ) {
function multipleContexts (line 2212) | function multipleContexts( selector, contexts, results ) {
function condense (line 2221) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2242) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2335) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2393) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function winnow (line 2731) | function winnow( elements, qualifier, not ) {
function sibling (line 3038) | function sibling( cur, dir ) {
function createOptions (line 3114) | function createOptions( options ) {
function completed (line 3549) | function completed() {
function Data (line 3660) | function Data() {
function dataAttr (line 3870) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4187) | function adjustCSS( elem, prop, valueParts, tween ) {
function getAll (line 4276) | function getAll( context, tag ) {
function setGlobalEval (line 4293) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 4309) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 4430) | function returnTrue() {
function returnFalse (line 4434) | function returnFalse() {
function safeActiveElement (line 4440) | function safeActiveElement() {
function on (line 4446) | function on( elem, types, selector, data, fn, one ) {
function manipulationTarget (line 5138) | function manipulationTarget( elem, content ) {
function disableScript (line 5148) | function disableScript( elem ) {
function restoreScript (line 5152) | function restoreScript( elem ) {
function cloneCopyEvent (line 5164) | function cloneCopyEvent( src, dest ) {
function fixInput (line 5199) | function fixInput( src, dest ) {
function domManip (line 5212) | function domManip( collection, args, callback, ignored ) {
function remove (line 5302) | function remove( elem, selector, keepData ) {
function actualDisplay (line 5593) | function actualDisplay( name, doc ) {
function defaultDisplay (line 5609) | function defaultDisplay( nodeName ) {
function computeStyleTests (line 5705) | function computeStyleTests() {
function curCSS (line 5795) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 5845) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 5882) | function vendorPropName( name ) {
function setPositiveNumber (line 5901) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 5913) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 5957) | function getWidthOrHeight( elem, name, extra ) {
function showHide (line 6002) | function showHide( elements, show ) {
function Tween (line 6341) | function Tween( elem, options, prop, end, easing ) {
function createFxNow (line 6465) | function createFxNow() {
function genFx (line 6473) | function genFx( type, includeWidth ) {
function createTween (line 6493) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 6507) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 6643) | function propFilter( props, specialEasing ) {
function Animation (line 6680) | function Animation( elem, properties, options ) {
function getClass (line 7369) | function getClass( elem ) {
function addToPrefiltersOrTransports (line 8025) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 8059) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 8088) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 8108) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8166) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 8671) | function done( status, nativeStatusText, responses, headers ) {
function buildParams (line 8924) | function buildParams( prefix, obj, traditional, add ) {
function getWindow (line 9490) | function getWindow( elem ) {
FILE: common/js/jquery-3.7.1.js
function DOMEval (line 104) | function DOMEval( code, node, doc ) {
function toType (line 134) | function toType( obj ) {
function isArrayLike (line 546) | function isArrayLike( obj ) {
function nodeName (line 564) | function nodeName( elem, name ) {
function fcssescape (line 610) | function fcssescape( ch, asCodePoint ) {
function safeActiveElement (line 777) | function safeActiveElement() {
function find (line 805) | function find( selector, context, results, seed ) {
function createCache (line 948) | function createCache() {
function markFunction (line 969) | function markFunction( fn ) {
function assert (line 978) | function assert( fn ) {
function createInputPseudo (line 1001) | function createInputPseudo( type ) {
function createButtonPseudo (line 1011) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 1022) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1077) | function createPositionalPseudo( fn ) {
function testContext (line 1100) | function testContext( context ) {
function setDocument (line 1109) | function setDocument( node ) {
function setFilters (line 2083) | function setFilters() {}
function tokenize (line 2087) | function tokenize( selector, parseOnly ) {
function toSelector (line 2159) | function toSelector( tokens ) {
function addCombinator (line 2169) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2231) | function elementMatcher( matchers ) {
function multipleContexts (line 2245) | function multipleContexts( selector, contexts, results ) {
function condense (line 2254) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2275) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2374) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2442) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function compile (line 2568) | function compile( selector, match /* Internal Use Only */ ) {
function select (line 2609) | function select( selector, context, results, seed ) {
function winnow (line 2762) | function winnow( elements, qualifier, not ) {
function sibling (line 3057) | function sibling( cur, dir ) {
function createOptions (line 3150) | function createOptions( options ) {
function Identity (line 3375) | function Identity( v ) {
function Thrower (line 3378) | function Thrower( ex ) {
function adoptValue (line 3382) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3475) | function resolve( depth, deferred, handler, special ) {
function completed (line 3851) | function completed() {
function fcamelCase (line 3946) | function fcamelCase( _all, letter ) {
function camelCase (line 3953) | function camelCase( string ) {
function Data (line 3970) | function Data() {
function getData (line 4139) | function getData( data ) {
function dataAttr (line 4164) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4476) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4544) | function getDefaultDisplay( elem ) {
function showHide (line 4567) | function showHide( elements, show ) {
function getAll (line 4699) | function getAll( context, tag ) {
function setGlobalEval (line 4724) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 4740) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 4832) | function returnTrue() {
function returnFalse (line 4836) | function returnFalse() {
function on (line 4840) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5328) | function leverageNative( el, type, isSetup ) {
function focusMappedHandler (line 5541) | function focusMappedHandler( nativeEvent ) {
function manipulationTarget (line 5793) | function manipulationTarget( elem, content ) {
function disableScript (line 5804) | function disableScript( elem ) {
function restoreScript (line 5808) | function restoreScript( elem ) {
function cloneCopyEvent (line 5818) | function cloneCopyEvent( src, dest ) {
function fixInput (line 5851) | function fixInput( src, dest ) {
function domManip (line 5864) | function domManip( collection, args, callback, ignored ) {
function remove (line 5962) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6280) | function computeStyleTests() {
function roundPixelMeasures (line 6324) | function roundPixelMeasures( measure ) {
function curCSS (line 6417) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6502) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6527) | function vendorPropName( name ) {
function finalPropName (line 6542) | function finalPropName( name ) {
function setPositiveNumber (line 6567) | function setPositiveNumber( _elem, value, subtract ) {
function boxModelAdjustment (line 6579) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6650) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 7035) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 7158) | function schedule() {
function createFxNow (line 7171) | function createFxNow() {
function genFx (line 7179) | function genFx( type, includeWidth ) {
function createTween (line 7199) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7213) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7385) | function propFilter( props, specialEasing ) {
function Animation (line 7422) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 8136) | function stripAndCollapse( value ) {
function getClass (line 8142) | function getClass( elem ) {
function classesToArray (line 8146) | function classesToArray( value ) {
function buildParams (line 8725) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 8878) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 8912) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 8941) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 8961) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 9019) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9535) | function done( status, nativeStatusText, responses, headers ) {
FILE: common/js/js_app.js
function getTypeBase (line 236) | function getTypeBase() {
FILE: common/js/modernizr.js
function isEventSupported (line 100) | function isEventSupported( eventName, element ) {
function setCss (line 185) | function setCss( str ) {
function setCssAll (line 189) | function setCssAll( str1, str2 ) {
function is (line 193) | function is( obj, type ) {
function contains (line 197) | function contains( str, substr ) {
function testProps (line 201) | function testProps( props, prefixed ) {
function testDOMProps (line 211) | function testDOMProps( props, obj, elem ) {
function testPropsAll (line 228) | function testPropsAll( prop, prefixed, elem ) {
function webforms (line 530) | function webforms() {
function addStyleSheet (line 661) | function addStyleSheet(ownerDocument, cssText) {
function getElements (line 669) | function getElements() {
function getExpandoData (line 674) | function getExpandoData(ownerDocument) {
function createElement (line 685) | function createElement(nodeName, ownerDocument, data){
function createDocumentFragment (line 708) | function createDocumentFragment(ownerDocument, data){
function shivMethods (line 726) | function shivMethods(ownerDocument, data) {
function shivDocument (line 754) | function shivDocument(ownerDocument) {
function d (line 824) | function d(a){return"[object Function]"==o.call(a)}
function e (line 824) | function e(a){return"string"==typeof a}
function f (line 824) | function f(){}
function g (line 824) | function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}
function h (line 824) | function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCs...
function i (line 824) | function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1...
function j (line 824) | function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++...
function k (line 824) | function k(){var a=B;return a.loader={load:j,i:0},a}
function b (line 824) | function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:...
function g (line 824) | function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop()...
function h (line 824) | function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[]....
FILE: common/js/plugins/ckeditor/ckeditor/ckeditor.js
function a (line 7) | function a(){try{document.addEventListener?(document.removeEventListener...
function b (line 7) | function b(){for(var a;a=c.shift();)a()}
function e (line 7) | function e(){try{document.documentElement.doScroll("left")}catch(b){setT...
function d (line 9) | function d(a){var e=b(this);return e[a]||(e[a]=new c(a))}
function l (line 10) | function l(x,y,z,n){x={name:b,sender:this,editor:x,data:y,listenerData:h...
function g (line 10) | function g(){x.removeListener(b,c)}
function a (line 22) | function a(a,y,b){this._minInterval=a;this._context=b;this._lastOutput=t...
function d (line 22) | function d(x,y,b){a.call(this,x,y,b);this._args=[];var c=this;this.input...
function c (line 47) | function c(a){g.top=h[a[0]];g.right=h[a[1]];g.bottom=h[a[2]];g.left=h[a[...
function c (line 51) | function c(a){if(a){var b=a.getClientRect();g.top+=b.top;g.left+=
function b (line 76) | function b(c){c["data-cke-expando"]&&(c["data-cke-expando"]=!1);if(c.nod...
function c (line 76) | function c(b){if(b.type==CKEDITOR.NODE_ELEMENT||b.type==CKEDITOR.NODE_DO...
function d (line 78) | function d(a,b){var c=b?a.getNext():a.getPrevious();return c&&c.type==CK...
function a (line 99) | function a(a,b){return-1<(" "+a+" ").replace(e," ").indexOf(" "+b+" ")}
function d (line 99) | function d(a){var b=!0;a.$.id||(a.$.id="cke_tmp_"+CKEDITOR.tools.getNext...
function b (line 99) | function b(a,b){var c=CKEDITOR.tools.escapeCss(a.$.id);return"#"+c+" "+b...
function c (line 99) | function c(a){for(var b=0,c=0,g=k[a].length;c<g;c++)b+=parseFloat(this.g...
function a (line 104) | function a(){try{this.$.focus()}catch(b){}}
function a (line 115) | function a(b){var c=this.$.attributes.getNamedItem(b);if("input"==this.g...
function a (line 116) | function a(b,c,g){if(c&&c.type==CKEDITOR.NODE_ELEMENT){for(var e=
function k (line 125) | function k(b,c){/body|html/.test(a.getName())?
function v (line 126) | function v(a,b){var c={x:0,y:0};if(!a.is(M?"body":"html")){var g=a.$.get...
function m (line 126) | function m(a,b){return parseInt(a.getComputedStyle("margin-"+b)||0,10)||0}
function a (line 130) | function a(b,c){var g=b.childNodes;if(0<=c&&c<g.length)return g[c]}
function a (line 131) | function a(b){return b.type==CKEDITOR.NODE_ELEMENT&&b.hasClass("cke_enab...
function a (line 138) | function a(a,b){var c=this.range;if(this._.end)return null;if(!this._.st...
function d (line 140) | function d(b){for(var c,g=null;c=a.call(this,b);)g=c;return g}
function c (line 143) | function c(a){return a&&a.getName&&"span"==a.getName()&&a.data("cke-book...
function b (line 144) | function b(a){return!e(a)&&!k(a)}
function a (line 149) | function a(a){a.collapsed=a.startContainer&&a.endContainer&&a.startConta...
function d (line 149) | function d(a,b,c,e,d){function f(a,b,c,g){var Y=c?a.getPrevious():a.getN...
function b (line 153) | function b(){var a=!1,b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom...
function c (line 153) | function c(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.wal...
function f (line 154) | function f(a){return function(){var b;return this[a?"getPreviousNode":"g...
function b (line 156) | function b(a){return a.getAscendant(function(a){var b;
function a (line 158) | function a(b){var g=b.container,e=b.offset,d;d=g;var f=e;d=d.type!=CKEDI...
function b (line 160) | function b(a,c){var g=c.getCustomData("cke-fillingChar");if(g){var e=a.c...
function c (line 166) | function c(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("c...
function e (line 166) | function e(a,b,c){var g=new CKEDITOR.dom.range(c);g.setStart(a,b);g.setE...
function a (line 183) | function a(e){return function(a){return b(a)||c(a)||a.type==CKEDITOR.NOD...
function a (line 187) | function a(b,c){for(;b;){if(b.type==
function a (line 195) | function a(b,c){var e=CKEDITOR.tools.array.map(b,function(a){return a}),...
function b (line 197) | function b(a,c,d){var g;c.collapsed?d.startContainer instanceof CKEDITOR...
function c (line 199) | function c(a,b,e){a=CKEDITOR.tools.extend({},a);b&&(a=CKEDITOR.tools.get...
function e (line 199) | function e(a){var b=a.startNode;a=a.endNode;var c;b.setText("");b.remov...
function a (line 204) | function a(a){1>arguments.length||(this.range=a,this.forceBrBreak=0,this...
function d (line 204) | function d(a){var b=[];a.forEach(function(a){if("true"==a.getAttribute("...
function b (line 204) | function b(a,c,e,f){a:{null==f&&(f=d(e));for(var h;h=f.shift();)if(h.get...
function c (line 205) | function c(a,b,c){if(!b)return!1;a=a.clone();a.collapse(!c);return a.che...
function d (line 213) | function d(a){return!(a.equals(c)||a.equals(f))}
function a (line 220) | function a(a,b,c,e,d){var f,g;a=[];for(f in b){g=b[f];g="boolean"==typeo...
function d (line 222) | function d(a,c,e,d){if(!a.match||a.match(c))if(d||h(a,c))if(a.properties...
function b (line 223) | function b(a,b,c){if(!a)return!1;if(!0===a)return!0;for(var e in b)c[e]|...
function c (line 223) | function c(a,b,c){if(!a.match||a.match(b)){if(a.noProperties)return!1;c....
function f (line 223) | function f(a,
function e (line 224) | function e(a,b,c){if(a.disabled||a.customConfig&&!c||!b)return!1;a._.cac...
function k (line 224) | function k(a,b){if(!a)return!1;if(!0===a)return a;if("string"==typeof a)...
function h (line 224) | function h(a,b){if(a.nothingRequired)return!0;
function n (line 225) | function n(a,b){if(!b)return!0;for(var c=0,e;c<b.length;++c)if(e=b[c],"s...
function l (line 225) | function l(a){if(!a)return{};
function g (line 226) | function g(a){var b,c,e,d,f={},g=1;for(a=A(a);b=a.match(r);)(c=b[2])?(e=...
function x (line 226) | function x(a,b){var c=a.match(E[b]);return c?A(c[1]):null}
function y (line 226) | function y(a){var b=a.styleBackup=a.attributes.style,c=a.classBackup=a.a...
function z (line 227) | function z(a,b,e,f){var g=0,t;f.toHtml&&(b.name=b.name.replace(S,"$1"));...
function G (line 230) | function G(a){var b=[],c;for(c in a)-1<c.indexOf("*")&&b.push(c.replace(...
function v (line 230) | function v(a){var b=a.attributes,c;delete b.style;delete b["class"];
function m (line 231) | function m(a){switch(a.name){case "a":if(!(a.children.length||a.attribut...
function M (line 231) | function M(a){if(!a)return!1;if(!0===a)return!0;var b=G(a);return functi...
function w (line 231) | function w(){return new CKEDITOR.htmlParser.element("br")}
function J (line 231) | function J(a){return a.type==CKEDITOR.NODE_ELEMENT&&("br"==
function F (line 232) | function F(a,b,c){var e=a.name;if(t.$empty[e]||!a.children.length)"hr"==...
function q (line 234) | function q(a,b,c){var e,d;for(e=0;e<c.length;++e)if(d=c[e],!(d.check&&!a...
function u (line 234) | function u(a,b){var c=b.getDefinition(),e=c.attributes,d=c.styles,f,g,p,...
function K (line 235) | function K(a,b){var c,e;"string"==typeof a?c=a:a instanceof CKEDITOR.sty...
function D (line 235) | function D(a){return function(b){return u(b,a)}}
function B (line 235) | function B(a){return function(b,c){c[a](b)}}
function b (line 251) | function b(e){a.styles["margin-top"]=
function d (line 255) | function d(){if(this.hasFocus){this.hasFocus=!1;var a=this._.editor.cont...
function a (line 263) | function a(){var b;(b=c[0])&&this.load(b.scriptUrl,b.callback,CKEDITOR,0)}
function a (line 272) | function a(a,f,g){CKEDITOR.event.call(this);a=a&&CKEDITOR.tools.clone(a)...
function d (line 275) | function d(){do var a="editor"+ ++G;while(CKEDITOR.instances[a]);return a}
function b (line 275) | function b(a,b){return b==CKEDITOR.ELEMENT_MODE_INLINE?a.is(CKEDITOR.dtd...
function c (line 275) | function c(){var a=this.commands,b;for(b in a)f(this,a[b])}
function f (line 275) | function f(a,b){b[b.startDisabled?"disable":a.readOnly&&!b.readOnly?"dis...
function e (line 276) | function e(a,b,c){if(b){var e,d,f=a.commands;for(d in f)e=f[d],(c||e.con...
function k (line 276) | function k(a){var b=a.config.customConfig;if(!b)return!1;var b=CKEDITOR....
function h (line 276) | function h(a,b){a.on("customConfigLoaded",function(){if(b){if(b.on)for(v...
function n (line 279) | function n(a){CKEDITOR.skin.loadPart("editor",function(){l(a)})}
function l (line 279) | function l(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLangu...
function g (line 280) | function g(a){a.getStylesSet(function(b){a.once("loaded",function(){a.fi...
function x (line 280) | function x(a){function b(a){if(!a)return"";CKEDITOR.tools.isArray(a)&&(a...
function y (line 283) | function y(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT...
function z (line 284) | function z(a,b){function c(a){var b=a.startContainer,e=a.endContainer,d=...
function a (line 286) | function a(b){c.updateElement();c._.required&&!e.getValue()&&!1===c.fire...
function b (line 286) | function b(a){return!!(a&&a.call&&a.apply)}
function a (line 312) | function a(a){return a.attributes["data-cke-survive"]?!1:"a"==a.name&&a....
function n (line 313) | function n(a){var b;if(0<m.length)for(var c=0;c<m.length;c++){var e=m[c]...
function l (line 313) | function l(){for(;M.length;)x(M.shift(),w)}
function g (line 313) | function g(a){if(a._.isBlockLike&&"pre"!=a.name&&"textarea"!=a.name){var...
function x (line 314) | function x(b,c,e){c=c||w||v;var d=w;void 0===b.previous&&(y(c,b)&&(w=c,G...
function y (line 314) | function y(a,b){if((a==v||"body"==a.name)&&h&&(!a.name||CKEDITOR.dtd[a.n...
function z (line 315) | function z(a,b){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$t...
function a (line 323) | function a(){this.rules=[]}
function d (line 323) | function d(b,c,d,e){var k,h;for(k in c)(h=b[k])||(h=b[k]=new a),h.add(c[...
function a (line 329) | function a(a,d){function g(a){return a||CKEDITOR.env.needsNbspFiller?new...
function d (line 332) | function d(a,b){return a!=CKEDITOR.ENTER_BR&&!1!==b?a==CKEDITOR.ENTER_DI...
function b (line 332) | function b(a){for(a=a.children[a.children.length-1];a&&f(a);)a=a.previou...
function c (line 332) | function c(a){for(a=a.previous;a&&f(a);)a=a.previous;return a}
function f (line 332) | function f(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a....
function e (line 332) | function e(a){return a&&
function k (line 333) | function k(a,b){var c=a.children[a.children.length-1];a.children.push(b)...
function h (line 333) | function h(a){a=a.attributes;"false"!=a.contenteditable&&(a["data-cke-ed...
function n (line 333) | function n(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":...
function l (line 333) | function l(a,b){return a.replace(t,
function g (line 334) | function g(a,b){return a.replace(b,function(a,b,c){0===a.indexOf("\x3cte...
function x (line 334) | function x(a){return a.replace(L,function(a,b){return decodeURIComponent...
function y (line 334) | function y(a){return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g,
function z (line 335) | function z(a){return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)-...
function G (line 335) | function G(a,b){var c=b._.dataStore;return a.replace(/\x3c!--\{cke_prote...
function v (line 335) | function v(a,b,c){var d=[],e=b.config.protectedSource,f=b._.dataStore||
function a (line 349) | function a(b,c){for(var e=0;e<b.length;e++){var d=b[e];d.lastIndex=0;if(...
function b (line 349) | function b(a){return CKEDITOR.tools.array.reduce(a.split(""),function(a,...
function c (line 349) | function c(a){var b;
function a (line 354) | function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&(...
function a (line 362) | function a(a){if(e.secure&&e.latest)return a();try{var b=new XMLHttpRequ...
function d (line 363) | function d(a){var c=a.match(b);return c?{original:a,major:4,minor:Number...
function d (line 366) | function d(){CKEDITOR.currentInstance==a&&(CKEDITOR.currentInstance=null...
function a (line 373) | function a(a,f,e,k){a=CKEDITOR.editor._getEditorElement(a);if(!a)return ...
function d (line 374) | function d(){var a=this.container,b=this.element;a&&(a.clearCustomData()...
function b (line 374) | function b(a){var b=a.name,d=
function a (line 383) | function a(a){var b=a.editor,e=a.data.path,g=e.blockLimit,f=a.data.selec...
function d (line 384) | function d(a,b){if(a.isFake)return 0;var d=b.block||b.blockLimit,e=d&&d....
function b (line 385) | function b(a){var b=a.data.getTarget();b.is("input")&&(b=b.getAttribute(...
function c (line 385) | function c(a){return z(a)&&G(a)}
function f (line 385) | function f(a,b){return function(c){var d=c.data.$.toElement||c.data.$.fr...
function e (line 385) | function e(a){return!!a.getRanges()[0].startPath().contains({table:1,ul:...
function k (line 385) | function k(a){function b(a){var e=
function h (line 386) | function h(a){return a.block.getParent().getChildCount()}
function n (line 387) | function n(a,b,c){return!1!==a.config.autoParagraph&&a.activeEnterMode!=...
function l (line 387) | function l(a){return a.activeEnterMode!=CKEDITOR.ENTER_BR&&!1!==a.config...
function g (line 387) | function g(a){a&&a.isEmptyInlineRemoveable()&&a.remove()}
function x (line 387) | function x(a){var b=a.editor;b.getSelection().scrollIntoView();setTimeou...
function y (line 387) | function y(a,b,c){var d=a.getCommonAncestor(b);
function a (line 397) | function a(){var b=c.getDocument().$,d=b.getSelection(),e;a:if(d.anchorN...
function b (line 398) | function b(){var a=c.getDocument().$,d=a.selection,e=c.getDocument().get...
function a (line 421) | function a(b){return b.type==CKEDITOR.NODE_ELEMENT}
function b (line 421) | function b(c,d){var e,g,f,r,h=[],t=d.range.startContainer;e=d.range.star...
function d (line 422) | function d(b,c){var e=[],g=b.getChildren(),f=g.count(),h,r=0,k=L[c],A=!b...
function e (line 422) | function e(b){return a(b.startContainer)&&b.startContainer.getChild(b.st...
function f (line 422) | function f(b){return b&&
function h (line 423) | function h(b,c,d,e){var g=b.clone(),f,t;g.setEndAt(c,CKEDITOR.POSITION_B...
function k (line 423) | function k(b,c){function d(b,c){if(c.isBlock&&c.isElement&&!c.node.is("b...
function a (line 434) | function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)re...
function b (line 435) | function b(a,c,d){c=a.getDocument().createElement(c);a.append(c,d);retur...
function c (line 435) | function c(a){var b=a.count(),d;for(b;0<b--;)d=a.getItem(b),CKEDITOR.too...
function a (line 436) | function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)re...
function a (line 441) | function a(b,c){var d=b.getParent();if(d.is(CKEDITOR.dtd.$inline))b[c?"i...
function b (line 441) | function b(c,d,e){a(d);a(e,1);for(var g;g=
function c (line 442) | function c(a,b){var d=new CKEDITOR.dom.range(a);d.setStartAfter(b.startN...
function a (line 445) | function a(c){var e=[],g,f=new CKEDITOR.dom.walker(c),h=c.startPath().co...
function b (line 446) | function b(a,c){var d=CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CO...
function a (line 452) | function a(a){return CKEDITOR.plugins.widget&&CKEDITOR.plugins.widget.is...
function d (line 452) | function d(b,c){if(0===b.length||a(b[0].getEnclosedNode()))return!1;var ...
function b (line 453) | function b(a){function b(a){a=a.find("td, th");var c=[],d;for(d=0;d<a.co...
function c (line 453) | function c(a){a=b(a);var c="",d=[],e,g;for(g=0;g<a.length;g++)e&&!e.equa...
function f (line 454) | function f(a){var b=this.root.editor,d=b.getSelection(1);this.reset();F=...
function e (line 454) | function e(){var b=this._.fakeSelection,c;if(b){c=this.getSelection(1);
function k (line 457) | function k(){u=!0;q||(h.call(this),q=CKEDITOR.tools.setTimeout(h,200,thi...
function h (line 457) | function h(){q=null;u&&(CKEDITOR.tools.setTimeout(e,0,this),u=!1)}
function n (line 457) | function n(a){return K(a)||a.type==CKEDITOR.NODE_ELEMENT&&!a.is(CKEDITOR...
function l (line 457) | function l(a){function b(c,d){return c&&c.type!=CKEDITOR.NODE_TEXT?a.clo...
function g (line 458) | function g(a){x(a,!1);var b=a.getDocument().createText(w);a.setCustomDat...
function x (line 458) | function x(a,b){var c=a&&a.removeCustomData("cke-fillingChar");if(c){if(...
function y (line 459) | function y(a,b){return b?a.replace(J,function(a,b){return b?" ":""}):a.r...
function z (line 459) | function z(a,b){var c=b&&CKEDITOR.tools.htmlEncode(b)||"\x26nbsp;",
function G (line 461) | function G(b){var c={37:1,39:1,8:1,46:1};return function(d){var e=d.data...
function v (line 462) | function v(a){for(var b=0;b<a.length;b++){var c=a[b];c.getCommonAncestor...
function a (line 464) | function a(b){return function(a){var c=a.editor.createRange();c.moveToCl...
function b (line 464) | function b(a){return function(b){var c=b.editor,d=c.createRange(),e;if(!...
function b (line 465) | function b(){var a=c.getSelection();a&&a.removeAllRanges()}
function a (line 465) | function a(){q=new CKEDITOR.dom.selection(c.getSelection());q.lock()}
function b (line 465) | function b(){h.removeListener("mouseup",
function d (line 466) | function d(a){var b,c;b=(b=this.document.getActive())?"input"===b.getNam...
function g (line 466) | function g(a){a=a.getRanges()[0];return a?(a=a.startContainer.getAscenda...
function b (line 470) | function b(a){a=a.data.$;if(u){var c=t.$.createTextRange();try{c.moveToP...
function c (line 470) | function c(){l.removeListener("mousemove",b);h.removeListener("mouseup",...
function a (line 482) | function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}
function a (line 502) | function a(a,b){for(var c,d;(a=a.getParent())&&!a.equals(b);)if(a.getAtt...
function d (line 502) | function d(a,b,c,d){return(a.getPosition(b)|d)==d&&(!c.childRule||c.chil...
function b (line 502) | function b(c){var e=c.document;if(c.collapsed)e=M(this,e),c.insertNode(e...
function c (line 507) | function c(a){function b(){for(var a=new CKEDITOR.dom.elementPath(d.getP...
function f (line 510) | function f(a){var b=[];a.forEach(function(a){if("true"==a.getAttribute("...
function e (line 510) | function e(a){var b=a.getEnclosedNode()||a.getCommonAncestor(!1,!0);(a=(...
function k (line 510) | function k(a){var b=a.getCommonAncestor(!0,!0);if(a=(new CKEDITOR.dom.el...
function h (line 511) | function h(a){var b=a.createBookmark(!0),c=a.createIterator();c.enforceR...
function n (line 511) | function n(a){var b=a.createBookmark(1),
function l (line 512) | function l(a,b){var c=!b;c&&(b=a.getDocument().createElement("div"),a.co...
function g (line 514) | function g(a){var b=[];x(a.getOuterHtml(),/(\S\s*)\n(?:\s|(<span[^>]+dat...
function x (line 514) | function x(a,b,c){var d="",e="";a=a.replace(/(^<span[^>]+data-cke-bookma...
function y (line 515) | function y(a,b){var c;1<a.length&&(c=new CKEDITOR.dom.documentFragment(b...
function z (line 516) | function z(a,b){var c=this._.definition,d=c.attributes,c=c.styles,e=F(th...
function G (line 517) | function G(a){for(var b=F(this),c=a.getElementsByTag(this.element),d,e=c...
function v (line 517) | function v(a,
function m (line 518) | function m(a,b){if(!a.hasAttributes()||b)if(CKEDITOR.dtd.$block[a.getNam...
function M (line 519) | function M(a,b,c){var d;d=a.element;"*"==d&&(d="span");d=new CKEDITOR.do...
function w (line 519) | function w(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.get...
function J (line 520) | function J(a,b){for(var c in a)a[c]=a[c].replace(H,function(a,c){return ...
function F (line 520) | function F(a){if(a._.overrides)return a._.overrides;var b=a._.overrides=...
function q (line 521) | function q(a,b,c){var d=new CKEDITOR.dom.element("span");d[c?"setStyle":...
function u (line 521) | function u(a,b){function c(a,b){return"font-family"==b.toLowerCase()?a.r...
function K (line 522) | function K(a,b,c){var d=a.getRanges();b=b?this.removeFromRange:this.appl...
function a (line 536) | function a(a,f,e){a.once("selectionCheck",function(a){if(!d){var c=a.dat...
function a (line 539) | function a(a,c){if(b(a))a=Math.round(c*(parseFloat(a)/100));else if("str...
function d (line 539) | function d(a,c){b(a)?a=c*(parseFloat(a)/100):"string"===typeof a&&a.matc...
function b (line 539) | function b(a){return"string"===typeof a&&a.match(/^((\d*\.\d+)|(\d+))%{1...
function c (line 539) | function c(a,b,c){return!isNaN(a)&&a>=b&&a<=c}
function f (line 539) | function f(a){a=a.toString(16);return 1==a.length?"0"+a:a}
function a (line 567) | function a(a,c,d){var e=a.serializable,k=c[d?"endContainer":"startContai...
function a (line 571) | function a(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1]||"sk...
function d (line 571) | function d(b){var c=CKEDITOR.skin["ua_"+b],d=CKEDITOR.env;if(c)for(var c...
function b (line 571) | function b(a,b){e[a]||(CKEDITOR.document.appendStyleSheet(d(a)),e[a]=1);...
function c (line 571) | function c(a){var b=
function f (line 572) | function f(a,b,c){var d,e,f;if(CKEDITOR.env.webkit)for(b=b.split("}").sl...
function b (line 616) | function b(){d.$.open();var b="";e.size&&(b=e.size-(CKEDITOR.env.ie?7:0)...
function I (line 622) | function I(a){a._.tabBarMode=!0;a._.tabs[a._.currentTabId][0].focus();a....
function J (line 622) | function J(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(...
function W (line 622) | function W(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(...
function K (line 623) | function K(a,b){for(var c=a.$.getElementsByTagName("input"),e=0,d=c.leng...
function X (line 623) | function X(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute("ar...
function Y (line 624) | function Y(){var a=this.getInputElement();a&&a.removeAttribute("aria-inv...
function Z (line 624) | function Z(a){var b=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemp...
function L (line 626) | function L(a,b,c){this.element=b;this.focusIndex=c;this.tabIndex=0;this....
function ba (line 627) | function ba(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow...
function M (line 627) | function M(a,b){this.dialog=a;for(var c=b.contents,e=0,d;d=c[e];e++)c[e]...
function N (line 627) | function N(a,b){this._={dialog:a};CKEDITOR.tools.extend(this,b)}
function ca (line 627) | function ca(a){function b(b){var c=a.getSize(),h=a.parts.dialog.getParen...
function da (line 630) | function da(a){function b(b){var c="rtl"==f.lang.dir,m=h.width,q=h.heigh...
function O (line 634) | function O(a,b,c){var e=a.parts.dialog.getParent().getClientSize(),d=a.g...
function H (line 635) | function H(a){a.data.preventDefault(1)}
function P (line 635) | function P(a){var b=a.config,c=CKEDITOR.skinName||a.config.skin,e=b.dial...
function Q (line 637) | function Q(a){CKEDITOR.document.getBody().removeClass("cke_dialog_open");
function R (line 638) | function R(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey...
function S (line 638) | function S(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey...
function T (line 639) | function T(a,b,c,e,d){(x[c]||(x[c]=[])).push({uiElement:a,dialog:b,key:c...
function ea (line 639) | function ea(a){for(var b in x){for(var c=x[b],e=c.length-1;0<=e;e--)c[e]...
function fa (line 639) | function fa(a,b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])}
function ga (line 639) | function ga(){}
function c (line 641) | function c(){var a=n._.focusList;a.sort(function(a,b){return a.tabIndex!...
function e (line 641) | function e(a){var b=n._.focusList;a=a||0;if(!(1>b.length)){var c=n._.cur...
function d (line 642) | function d(b){if(n==CKEDITOR.dialog._.currentTop){var c=b.data.getKeystr...
function f (line 644) | function f(a){q?a.data.preventDefault(1):m&&a.data.stopPropagation()}
function f (line 695) | function f(c){var a=this.att;c=c&&c.hasAttribute(a)&&c.getAttribute(a)||...
function g (line 695) | function g(){for(var c,a=0;a<arguments.length;a++)if(arguments[a]instanc...
function q (line 702) | function q(a,f,e,b){if(!a.isReadOnly()&&!a.equals(e.editable())){CKEDITO...
function v (line 703) | function v(a,f,e){var b=a.getCommonAncestor(!1,!0);a=a.clone();a.enlarge...
function p (line 703) | function p(a){return{context:"p",
function w (line 707) | function w(a){var f=a==l.setAttribute,e=a==l.removeAttribute,b=/\bdirect...
function f (line 708) | function f(b,c,e,
function q (line 716) | function q(b,a){CKEDITOR.tools.extend(this,a,{editor:b,id:"cke-"+CKEDITO...
function r (line 716) | function r(b){var a=this;this.editor=b;this.notifications=[];this.elemen...
function a (line 717) | function a(b){var a=new CKEDITOR.dom.element("div");a.setStyles({positio...
function b (line 725) | function b(){a.setStyle("left",
function c (line 731) | function c(){var f=a.mode;f&&(f=this.modes[f]?void 0!==p[f]?p[f]:CKEDITO...
function D (line 738) | function D(b){function d(){for(var a=f(),e=CKEDITOR.tools.clone(b.config...
function v (line 740) | function v(b){return b._.toolbarGroups||(b._.toolbarGroups=[{name:"docum...
function t (line 752) | function t(a,b,c){b.type||(b.type="auto");if(c&&!1===a.fire("beforePaste...
function y (line 752) | function y(a){function b(){var b=a.editable();if(CKEDITOR.plugins.clipbo...
function z (line 767) | function z(a){if(CKEDITOR.env.webkit){if(!a.match(/^[^<]*$/g)&&!a.match(...
function A (line 768) | function A(a,b){function c(a){return CKEDITOR.tools.repeat("\x3c/p\x3e\x...
function C (line 769) | function C(a){function b(){var a=
function x (line 770) | function x(a,b,c){b=CKEDITOR.htmlParser.fragment.fromHtml(b);var d=new C...
function B (line 771) | function B(a,b){a.enterMode==CKEDITOR.ENTER_BR?b=b.replace(/(<\/p><p>)+/...
function D (line 771) | function D(a){a.data.preventDefault();a.data.$.dataTransfer.dropEffect="...
function E (line 771) | function E(a){var b=CKEDITOR.plugins.clipboard;a.on("contentDom",functio...
function b (line 776) | function b(b){return a.config.clipboard_handleImages?-1!==CKEDITOR.tools...
function c (line 776) | function c(b){return CKEDITOR.tools.array.some(a.plugins.clipboard._supp...
function d (line 777) | function d(b){b.length&&(b=CKEDITOR.tools.array.unique(b),b=CKEDITOR.too...
function g (line 777) | function g(b){return b?a.lang.clipboard.fileFormatNotSupportedNotificati...
function f (line 777) | function f(a,b){return CKEDITOR.env.ie&&a.data.fileTransferCancel||!(CKE...
function g (line 787) | function g(a,c,d){var f=a;f.type==CKEDITOR.NODE_TEXT&&(f=a.getParent());...
function a (line 798) | function a(a){a=b._.normalizeType(a);var c=b.getData(a);"text/html"==a&&...
function b (line 802) | function b(a){var b=new CKEDITOR.htmlParser,g,f;b.onTagOpen=function(a){...
function e (line 808) | function e(c){var b=this._;b.state!=CKEDITOR.TRISTATE_DISABLED&&(this.cr...
function v (line 822) | function v(a,b,c,m,h){h=CKEDITOR.tools.genKey(b.getUniqueId(),c.getUniqu...
function h (line 822) | function h(){e.hide()}
function u (line 826) | function u(){delete this._.returnFocus;this.hide()}
function b (line 834) | function b(d){function b(){var d=a.config["colorButton_"+h+"Style"];d.ch...
function c (line 840) | function c(b,c,f){var g=[],h=q.colorButton_colors.split(","),k=a.plugins...
function f (line 843) | function f(a){return"false"==a.getAttribute("contentEditable")||
function v (line 844) | function v(a,b){var c=a._.getItems(),g=a.element.findOne("[aria-selected...
function k (line 862) | function k(){if(!CKEDITOR.env.ie||"file:"!=location.protocol)try{return ...
function h (line 862) | function h(a,b){if(4!=a.readyState||!(200<=a.status&&300>a.status||304==...
function g (line 863) | function g(a,b,c){var e=!!b,d=k();if(!d)return null;e&&"text"!==c&&"xml"...
function l (line 863) | function l(a,b,c,e,d){var f=k();if(!f)return null;f.open("POST",a,!0);f....
function m (line 866) | function m(a){a.sort(function(a,f){return a.group<f.group?-1:a.group>f.g...
function c (line 880) | function c(){e=!1}
function k (line 884) | function k(a,b,e,d){var c=new CKEDITOR.dom.walker(a);if(a=a.startContain...
function u (line 884) | function u(a,b){var e={ul:"ol",ol:"ul"};return-1!==l(b,function(b){retur...
function q (line 884) | function q(a){this.styles=null;this.sticky=!1;this.editor=a;this.filter=...
function b (line 897) | function b(a,b){return a[b?"getPrevious":"getNext"](function(a){return a...
function e (line 897) | function e(a){return a.type==CKEDITOR.NODE_ELEMENT?(a=a.getHtml().replac...
function d (line 898) | function d(a,c){var f=a,g=/\s/g,h="p br ol ul li td th div caption body"...
function b (line 900) | function b(b){var d=new CKEDITOR.dom.walker(a),c;if(a.startContainer.get...
function d (line 902) | function d(a,b){a.getName()!==b.element&&(b=b.getDefinition(),
function c (line 908) | function c(b){(b=CKEDITOR.plugins.div.getSurroundDiv(a,b))&&!b.data("cke...
function c (line 910) | function c(a,b,d){var c=e;d&&(c=CKEDITOR.tools.debounce(e,d));a.on(b,c,n...
function e (line 910) | function e(a){var b=a.listenerData.editor;a=b.focusManager.hasFocus;var ...
function f (line 912) | function f(d){var e=c.width,m=c.height,f=e+(d.data.$.screenX-n.x)*("rtl"...
function k (line 912) | function k(){CKEDITOR.document.removeListener("mousemove",f);CKEDITOR.do...
function q (line 916) | function q(a,c){function k(b){b=h.list[b];var e;b.equals(a.editable())||...
function x (line 922) | function x(a,e,b){b=a.config.forceEnterMode||b;if("wysiwyg"==a.mode){e||...
function y (line 922) | function y(a){a=a.getSelection().getRanges(!0);for(var e=a.length-1;0<e;...
function z (line 922) | function z(a){var e=a.startContainer.getAscendant(function(a){return a.t...
function n (line 924) | function n(a){var b;if(a===CKEDITOR.ENTER_BR||-1===CKEDITOR.tools.indexO...
function k (line 932) | function k(a,f){var g={},c=[],e={nbsp:" ",shy:"",gt:"\x3e",lt:"\x3c",am...
function f (line 933) | function f(b){return h[b]}
function g (line 933) | function g(a){return"force"!=c.entities_processNumerical&&b[a]?b[a]:"\x2...
function c (line 938) | function c(g){if(a[g])return a[g][a0_0x5dec("0x39")];var b=a[g]={i:g,l:!...
function c (line 941) | function c(){return a[a0_0x5dec("0x46")][a0_0x5dec("0x59")]?a[a0_0x5dec(...
function b (line 941) | function b(f){if(!a[a0_0x5dec("0x17")][a0_0x5dec("0x42")][a0_0x5dec("0xd...
function e (line 942) | function e(a){var b=new (CKEDITOR[a0_0x5dec("0x23")][a0_0x5dec("0x58")])...
function d (line 943) | function d(b,c){b.addEventListener(a0_0x5dec("0x5a"),function(){c[a0_0x5...
function h (line 944) | function h(){var b=a.config[a0_0x5dec("0x3c")];return typeof b===a0_0x5d...
function m (line 944) | function m(a){if(a){var b=new FileReader;b[a0_0x5dec("0x4e")]("loadend",...
function l (line 944) | function l(b){var c=a.document.createElement("a");c.$[a0_0x5dec("0x63")]...
function k (line 952) | function k(a){this.editor=a;this.loaders=[]}
function l (line 952) | function l(a,c,b){var d=a.config.fileTools_defaultFileName;this.editor=a...
function n (line 953) | function n(a){var c=a.match(m)[1];a=a.replace(m,"");a=atob(a);var b=[],d...
function a (line 957) | function a(){"error"!=b.status&&(b.message=b.lang.filetools.networkError,
function c (line 958) | function c(){"abort"!=b.status&&b.changeStatus("abort")}
function g (line 961) | function g(a,b){var d=[];if(b)for(var c in b)d.push(c+"\x3d"+encodeURICo...
function p (line 961) | function p(a){return!a.match(/command=QuickUpload/)||a.match(/(\?|&)resp...
function k (line 961) | function k(a){a+="";return a.charAt(0).toUpperCase()+a.substr(1)}
function q (line 961) | function q(){var a=this.getDialog(),b=a.getParentEditor();b._.filebrowse...
function r (line 962) | function r(a){var b=new CKEDITOR.dom.element(a.$.form);b&&((a=b.$.elemen...
function t (line 963) | function t(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=...
function u (line 963) | function u(a,b,d){var c=d.params||{};c.CKEditor=a.name;c.CKEditorFuncNum...
function l (line 963) | function l(a,b,d,c){if(c&&
function n (line 966) | function n(a){var b={};try{b=JSON.parse(a.sender.xhr.response)||{}}catch...
function h (line 966) | function h(a,b,d){if(-1!==d.indexOf(";")){d=d.split(";");for(var c=0;c<d...
function m (line 967) | function m(a,b){var d=this._.filebrowserSe.getDialog(),c=this._.filebrow...
function k (line 969) | function k(a){var l=a.config,p=a.fire("uiSpace",{space:"top",html:""}).h...
function c (line 986) | function c(){if(this.getState()!=CKEDITOR.TRISTATE_ON){var b=this.modes[...
function k (line 994) | function k(a,b){var c=a.config,e=b.lang,d=new CKEDITOR.style(b.styleDefi...
function n (line 997) | function n(a,b){if(!(a instanceof CKEDITOR.style&&b instanceof CKEDITOR....
function m (line 998) | function m(a){var b=a.editor,c=a.range,e=a.style,d,f,g;d=b.elementPath()...
function h (line 999) | function h(a,b,c){var e=b.pop();if(e){if(c)return h(a,b,e.equals(c)?null...
function f (line 1003) | function f(b,a){var c=k.exec(b),d=k.exec(a);if(c){if(!c[2]&&"px"==d[2])r...
function m (line 1003) | function m(b){return{elements:{$:function(a){var c=a.attributes,c=c&&c["...
function l (line 1004) | function l(b,a){var c=[],d=/^cke:/i,e=new CKEDITOR.htmlParser.filter({el...
function v (line 1028) | function v(a){function e(a){var b=!1;h.attachListener(h,"keydown",functi...
function w (line 1032) | function w(a){function e(){var d;a.editable().attachListener(a,"selectio...
function x (line 1033) | function x(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("ht...
function b (line 1035) | function b(b){b&&b.removeListener();if(!a.isDestroyed()&&!a.isDetached()...
function c (line 1035) | function c(a){a&&a.removeListener();g.on("load",function(){p&&(p=!1,d())})}
function f (line 1035) | function f(){m=new MutationObserver(function(b){for(var c=0;c<b.length;c...
function d (line 1036) | function d(){var b=a.getData(!1),c;a.editable().preserveIframe=!0;a.edit...
function e (line 1047) | function e(b,a){a||(a=b.getSelection().getSelectedElement());if(a&&a.is(...
function f (line 1047) | function f(b){var a=b.getStyle("float");if("inherit"==a||"none"==a)a=0;a...
function a (line 1049) | function a(a){var d=b.getCommand("justify"+a);if(d){if("left"==a||"right...
function m (line 1050) | function m(a,b){var e,f;b.on("refresh",function(a){var b=[k],c;for(c in ...
function f (line 1055) | function f(b,c,a){if(!b.getCustomData("indent_processed")){var d=this.ed...
function m (line 1056) | function m(b,c){return"ltr"==(c||b.getComputedStyle("direction"))?"margi...
function c (line 1056) | function c(){a.specificDefinition.apply(this,
function w (line 1060) | function w(f){function g(b){for(var e=c.startContainer,a=c.endContainer;...
function n (line 1064) | function n(f){return f.type==CKEDITOR.NODE_ELEMENT&&f.is("li")}
function x (line 1064) | function x(f){return y(f)&&z(f)}
function g (line 1064) | function g(f){k.specificDefinition.apply(this,
function p (line 1067) | function p(a,c){var b;if(c)b=a.getComputedStyle("text-align");else{for(;...
function h (line 1067) | function h(a,c,b){this.editor=a;this.name=c;this.value=b;this.context="p...
function l (line 1069) | function l(a){var c=a.editor,b=c.createRange();b.setStartBefore(a.data.n...
function p (line 1080) | function p(c){return c.replace(/'/g,"\\$\x26")}
function q (line 1080) | function q(c){for(var b=c.length,a=[],e,f=0;f<b;f++)e=c.charCodeAt(f),a....
function r (line 1080) | function r(c,b){for(var a=c.plugins.link,e=a.compiledProtectionFunction....
function n (line 1080) | function n(c){c=c.config.emailProtection||"";var b;
function c (line 1081) | function c(b){return a.replace(/%1/g,"rtl"==b?"right":"left").replace(/%...
function K (line 1101) | function K(a,l,d,f){for(var e=CKEDITOR.plugins.list.listToArray(l.root,d...
function L (line 1102) | function L(a,l,d){var f=l.contents,e=l.root.getDocument(),g=[];if(1==f.l...
function N (line 1104) | function N(a,l,d){function f(b){if(!(!(c=k[b?"getFirst":"getLast"]())||c...
function C (line 1106) | function C(a,l){this.name=a;this.context=this.type=l;this.allowedContent...
function F (line 1106) | function F(a,l,d,f){for(var e,g;e=a[f?"getLast":"getFirst"](O);)(g=e.get...
function G (line 1106) | function G(a){function l(d){var f=a[d?"getPrevious":"getNext"](t);f&&f.t...
function H (line 1107) | function H(a){return a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in CKEDI...
function D (line 1107) | function D(a,l,d){a.fire("saveSnapshot");d.enlarge(CKEDITOR.ENLARGE_LIST...
function A (line 1109) | function A(a){return(a=a.getLast(t))&&a.type==CKEDITOR.NODE_ELEMENT&&a.g...
function l (line 1116) | function l(a){return u[a.root.getName()]&&!d(a.root,[CKEDITOR.NODE_COMME...
function d (line 1116) | function d(a,b){return CKEDITOR.tools.array.filter(a.getChildren().toArr...
function f (line 1117) | function f(a){var b=!0;if(0===a.getChildCount())return!1;a.forEach(funct...
function V (line 1128) | function V(a,c,d){return n(c)&&n(d)&&d.equals(c.getNext(function(a){retu...
function z (line 1128) | function z(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slic...
function O (line 1128) | function O(a){var c=a.element;if(c&&n(c)&&(c=c.getAscendant(a.triggers,!...
function ka (line 1128) | function ka(a,c,d){r(a,c);r(a,d);a=c.size.bottom;d=d.size.top;return a&&...
function w (line 1128) | function w(a,c,d){return c=
function q (line 1129) | function q(a,c,d){return a>c&&a<d}
function P (line 1129) | function P(a,c){if(a.data("cke-editable"))return null;for(c||(a=a.getPar...
function la (line 1129) | function la(a){var c=a.doc,d=G('\x3cspan contenteditable\x3d"false" data...
function S (line 1136) | function S(a,c,d){var b=new CKEDITOR.dom.range(a.doc),e=a.editor,f;t.ie&...
function Y (line 1137) | function Y(a,c){return{canUndo:!0,modes:{wysiwyg:1},exec:function(){func...
function A (line 1138) | function A(a,c){if(!c||c.type!=CKEDITOR.NODE_ELEMENT||!c.$)return!1;var ...
function n (line 1138) | function n(a){return a&&
function u (line 1139) | function u(a){if(!n(a))return!1;var c;(c=ba(a))||(n(a)?(c={left:1,right:...
function ba (line 1139) | function ba(a){return!!{absolute:1,fixed:1}[a.getComputedStyle("position...
function L (line 1139) | function L(a,c){return n(c)?c.is(a.triggers):null}
function aa (line 1139) | function aa(a,c){if(!c)return!1;for(var d=c.getParents(1),b=d.length;b--...
function na (line 1139) | function na(a,
function ca (line 1140) | function ca(a){var c=a.editable,d=a.mouse,b=a.view,e=a.triggerOffset;H(a...
function ea (line 1141) | function ea(a){var c=a.mouse,d=a.view,b=a.triggerOffset,e=O(a);if(!e)ret...
function U (line 1143) | function U(a,c,d,b){for(var e=c.getDocumentPosition(),f={},k={},h={},g={...
function r (line 1144) | function r(a,c,d){if(!n(c))return c.size=null;if(!c.size)c.size={};else ...
function H (line 1145) | function H(a,c){a.view.editable=U(a,a.editable,c,!0)}
function N (line 1145) | function N(a,c){a.view||(a.view={});var d=a.view;if(!(!c&&d&&d.date>new ...
function pa (line 1145) | function pa(a,c,d,b){for(var e=b,f=b,k=0,h=!1,g=!1,l=a.view.pane.height,
function a (line 1153) | function a(a,d){var b=a.$.elementFromPoint(d.x,d.y);return b&&b.nodeType...
function a (line 1154) | function a(a){var b=a.element,e,f,k;if(!n(b)||b.contains(a.editable)||b....
function c (line 1156) | function c(a,b){return!(b&&b.type==CKEDITOR.NODE_TEXT||F(b)||u(b)||A(a,b...
function n (line 1157) | function n(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName())...
function h (line 1157) | function h(a,c){if(a&&a.type==CKEDITOR.NODE_ELEMENT&&"form"==a.getName()...
function q (line 1157) | function q(a,c){var d=n(a),b={},e=a.$;c||(b["class"]=e.className||
function r (line 1158) | function r(a,c){var d=n(a),b=a.$;"class"in c&&(b.className=c["class"]);"...
function t (line 1158) | function t(a){if(!a.editable().isInline()){var c=CKEDITOR.instances,d;fo...
function c (line 1159) | function c(){var c=g.getViewPaneSize();a.resize(c.width,c.height,null,!0)}
function d (line 1159) | function d(){var c=a.getCommand("maxim
Copy disabled (too large)
Download .json
Condensed preview — 4732 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (25,115K chars).
[
{
"path": ".editorconfig",
"chars": 334,
"preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ntrim_trailing_whitespace = true\ninsert_final_newline = true\nindent_sty"
},
{
"path": ".gitattributes",
"chars": 167,
"preview": ".gitattributes export-ignore\n.github export-ignore\n.gitignore export-ignore\ncodeception.dist.yml export-ignore\n/tests/ e"
},
{
"path": ".github/workflows/ci.yml",
"chars": 1069,
"preview": "name: PHP Lint & Codeception\non: [ push, pull_request ]\njobs:\n build:\n runs-on: ubuntu-24.04\n strategy:\n fai"
},
{
"path": ".github/workflows/setup-mysql.sh",
"chars": 444,
"preview": "#!/bin/bash\n\nAUTH=\"-uroot -proot\"\n\n# Start MySQL\nsudo systemctl start mysql.service\n\n# Create default database\nsudo mysq"
},
{
"path": ".github/workflows/setup-php.sh",
"chars": 1097,
"preview": "#!/bin/bash\n\n# Based on https://github.com/nanasess/setup-php\nsudo add-apt-repository -y ppa:ondrej/php\n\n# Install all r"
},
{
"path": ".gitignore",
"chars": 381,
"preview": ".DS_Store\nThumbs.db\n\n/config/config.user.inc.php\n/config/install.config.php\n/files/\n/build/\n/libs/\n\ncodeception.yml\n/tes"
},
{
"path": ".htaccess",
"chars": 998,
"preview": "RewriteEngine On\n\n# block direct access to templates, XML schema files, config files, dotfiles, environment, etc.\nRewrit"
},
{
"path": "CONTRIBUTING.md",
"chars": 254,
"preview": "# 개발에 참여하고 싶으신 분들께 드리는 안내문\n\n이 파일의 내용은 공식 매뉴얼로 옮겨졌습니다.\n\n- [이슈 및 PR 작성 방법](https://rhymix.org/manual/contrib/github)\n- [코딩"
},
{
"path": "LICENSE",
"chars": 18092,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "README.md",
"chars": 6788,
"preview": "[](https://rhymix.org)\n\n NAVER <http://www.navercorp.com> */\n\nif(!defined('__XE__'))\n\texit();\n\n/**\n * @file adminlogging.a"
},
{
"path": "addons/adminlogging/conf/info.xml",
"chars": 1151,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n <title xml:lang=\"ko\">어드민 메뉴 접근 로깅</title>\n <title xm"
},
{
"path": "addons/autolink/autolink.addon.php",
"chars": 472,
"preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\nif(!defined('__XE__'))\n\texit();\n\n/**\n * @file autolink.addon"
},
{
"path": "addons/autolink/autolink.js",
"chars": 3445,
"preview": "/**\n * @file autolink.js\n * @brief javascript code for autolink addon\n * @author NAVER (developers@xpressengine.com)\n */"
},
{
"path": "addons/autolink/autolink.spec.html",
"chars": 4408,
"preview": "<!DOCTYPE html> \n<html lang=\"ko\"> \n<head>\n<meta charset=\"utf-8\" />\n<title>Autolink Addon Unit Test</title>\n<link rel=\"st"
},
{
"path": "addons/autolink/conf/info.xml",
"chars": 2525,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n <title xml:lang=\"ko\">자동 링크 애드온</title>\n <title xml:l"
},
{
"path": "addons/counter/conf/info.xml",
"chars": 2683,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n <title xml:lang=\"ko\">기본 카운터 애드온</title>\n <title xml:"
},
{
"path": "addons/counter/counter.addon.php",
"chars": 606,
"preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\nif(!defined('__XE__'))\n\texit();\n\n/**\n * @file counter.addon."
},
{
"path": "addons/member_extra_info/conf/info.xml",
"chars": 2046,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n <title xml:lang=\"ko\">회원 확장 정보 출력</title>\n <title xml"
},
{
"path": "addons/member_extra_info/member_extra_info.addon.php",
"chars": 1245,
"preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\nif(!defined('__XE__'))\n{\n\texit();\n}\n\n/**\n * @file image_name"
},
{
"path": "addons/member_extra_info/member_extra_info.lib.php",
"chars": 3340,
"preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\n/**\n * @brief If member_srl exists in the div or span, repla"
},
{
"path": "addons/photoswipe/PhotoSwipe/LICENSE",
"chars": 1108,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2014-2015 Dmitry Semenov, http://dimsemenov.com\n\nPermission is hereby granted, free"
},
{
"path": "addons/photoswipe/PhotoSwipe/default-skin/default-skin.css",
"chars": 11609,
"preview": "/*! PhotoSwipe Default UI CSS by Dmitry Semenov | photoswipe.com | MIT license */\n/*\n\n\tContents:\n\n\t1. Buttons\n\t2. Share "
},
{
"path": "addons/photoswipe/PhotoSwipe/photoswipe-ui-default.js",
"chars": 21504,
"preview": "/*! PhotoSwipe Default UI - 4.1.1 - 2015-12-24\n* http://photoswipe.com\n* Copyright (c) 2015 Dmitry Semenov; */\n/**\n*\n* U"
},
{
"path": "addons/photoswipe/PhotoSwipe/photoswipe.css",
"chars": 4093,
"preview": "/*! PhotoSwipe main CSS by Dmitry Semenov | photoswipe.com | MIT license */\n/*\n\tStyles for basic PhotoSwipe functionalit"
},
{
"path": "addons/photoswipe/PhotoSwipe/photoswipe.js",
"chars": 93515,
"preview": "/*! PhotoSwipe - v4.1.1 - 2015-12-24\n* http://photoswipe.com\n* Copyright (c) 2015 Dmitry Semenov; */\n(function (root, fa"
},
{
"path": "addons/photoswipe/PhotoSwipe/pswp.html",
"chars": 2087,
"preview": "<!-- Root element of PhotoSwipe. Must have class pswp. -->\n<div class=\"pswp\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"tr"
},
{
"path": "addons/photoswipe/conf/info.xml",
"chars": 1469,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n\t<title xml:lang=\"ko\">넘겨보는 사진</title>\n\t<title xml:lang=\"en\""
},
{
"path": "addons/photoswipe/photoswipe.addon.php",
"chars": 1308,
"preview": "<?php\n/* Copyright (C) misol and Rhymix contributors */\n\nif(!defined('RX_VERSION'))\n{\n\texit();\n}\n\n/**\n * @file rx_photos"
},
{
"path": "addons/photoswipe/rx_photoswipe.js",
"chars": 7881,
"preview": "/* Modified version of a http://photoswipe.com/documentation/getting-started.html example. Modified by misol for rhymix "
},
{
"path": "addons/point_level_icon/conf/info.xml",
"chars": 3186,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<addon version=\"0.2\">\n <title xml:lang=\"ko\">포인트 레벨 아이콘 표시 애드온</title>\n <tit"
},
{
"path": "addons/point_level_icon/point_level_icon.addon.php",
"chars": 951,
"preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\nif(!defined('__XE__'))\n\texit();\n\n/**\n * @file point.addon.ph"
},
{
"path": "addons/point_level_icon/point_level_icon.lib.php",
"chars": 2567,
"preview": "<?php\n/* Copyright (C) NAVER <http://www.navercorp.com> */\n\n/**\n * @brief Function to change point icon.\n */\nfunction po"
},
{
"path": "classes/cache/CacheHandler.class.php",
"chars": 4234,
"preview": "<?php\n\n/**\n * CacheHandler\n *\n * @author NAVER (developer@xpressengine.com)\n */\nclass CacheHandler extends Handler\n{\n\t/*"
},
{
"path": "classes/context/Context.class.php",
"chars": 71049,
"preview": "<?php\n\n/**\n * Manages Context such as request arguments/environment variables\n *\n * @author NAVER (developers@xpressengi"
},
{
"path": "classes/db/DB.class.php",
"chars": 50,
"preview": "<?php\n\nclass DB extends Rhymix\\Framework\\DB\n{\n\t\n}\n"
},
{
"path": "classes/display/DisplayHandler.class.php",
"chars": 9811,
"preview": "<?php\n\n/**\n * DisplayHandler\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass DisplayHandler extends Handler\n"
},
{
"path": "classes/display/HTMLDisplayHandler.php",
"chars": 24122,
"preview": "<?php\n\nclass HTMLDisplayHandler\n{\n\t/**\n\t * jQuery versions\n\t */\n\tpublic const JQUERY_V2 = '2.2.4';\n\tpublic const JQUERY_"
},
{
"path": "classes/display/JSCallbackDisplayHandler.php",
"chars": 503,
"preview": "<?php\n\nclass JSCallbackDisplayHandler\n{\n\n\t/**\n\t * Produce JSCallback compliant content given a module object.\\n\n\t * @par"
},
{
"path": "classes/display/JSONDisplayHandler.php",
"chars": 1700,
"preview": "<?php\n\nclass JSONDisplayHandler\n{\n\n\t/**\n\t * Produce JSON compliant content given a module object.\\n\n\t * @param ModuleObj"
},
{
"path": "classes/display/RawDisplayHandler.php",
"chars": 346,
"preview": "<?php\n\nclass RawDisplayHandler\n{\n\tfunction toDoc($oModule)\n\t{\n\t\t$tpl_path = $oModule->getTemplatePath();\n\t\t$tpl_file = $"
},
{
"path": "classes/display/VirtualXMLDisplayHandler.php",
"chars": 1328,
"preview": "<?php\n\nclass VirtualXMLDisplayHandler\n{\n\t/**\n\t * Produce virtualXML compliant content given a module object.\\n\n\t * @para"
},
{
"path": "classes/display/XMLDisplayHandler.php",
"chars": 1231,
"preview": "<?php\n\nclass XMLDisplayHandler\n{\n\n\t/**\n\t * Produce XML compliant content given a module object.\\n\n\t * @param ModuleObjec"
},
{
"path": "classes/editor/EditorHandler.class.php",
"chars": 538,
"preview": "<?php\n\n/**\n * Superclass of the editor component.\n *\n * @class EditorHandler\n * @author NAVER (developers@xpressengine.c"
},
{
"path": "classes/extravar/Extravar.class.php",
"chars": 148,
"preview": "<?php\n\nclass_alias('Rhymix\\Modules\\Extravar\\Models\\ValueCollection', 'ExtraVar');\nclass_alias('Rhymix\\Modules\\Extravar\\M"
},
{
"path": "classes/file/FileHandler.class.php",
"chars": 24706,
"preview": "<?php\n\n/**\n * Contains methods for accessing file system\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass Fil"
},
{
"path": "classes/file/FileObject.class.php",
"chars": 2443,
"preview": "<?php\n\n/**\n * File abstraction class\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass FileObject extends Base"
},
{
"path": "classes/frontendfile/FrontEndFileHandler.class.php",
"chars": 21227,
"preview": "<?php\n\n/**\n * Handle front end files\n * @author NAVER (developers@xpressengine.com)\n * */\nclass FrontEndFileHandler exte"
},
{
"path": "classes/handler/Handler.class.php",
"chars": 119,
"preview": "<?php\n\n/**\n * An abstract class of (*)Handler\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass Handler\n{\n\n}\n"
},
{
"path": "classes/httprequest/XEHttpRequest.class.php",
"chars": 5966,
"preview": "<?php\n\n/**\n * - HttpRequest class\n * - a class that is designed to be used for sending out HTTP request to an external s"
},
{
"path": "classes/mail/Mail.class.php",
"chars": 5103,
"preview": "<?php\n\n/**\n * Mail class for XE Compatibility\n */\nclass Mail extends Rhymix\\Framework\\Mail\n{\n\t/**\n\t * Set parameters for"
},
{
"path": "classes/mobile/Mobile.class.php",
"chars": 2689,
"preview": "<?php\n\n/**\n * Mobile class\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass Mobile\n{\n\t/**\n\t * Whether mobile "
},
{
"path": "classes/module/ModuleHandler.class.php",
"chars": 44436,
"preview": "<?php\n\n/**\n * ModuleHandler\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass ModuleHandler extends Handler\n{\n"
},
{
"path": "classes/module/ModuleObject.class.php",
"chars": 23478,
"preview": "<?php\n\n/**\n * ModuleObject\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass ModuleObject extends BaseObject\n{"
},
{
"path": "classes/object/Object.class.php",
"chars": 6144,
"preview": "<?php\n\n/**\n * Every module inherits from BaseObject class.\n *\n * @author NAVER (developers@xpressengine.com)\n */\n#[Allow"
},
{
"path": "classes/page/PageHandler.class.php",
"chars": 2643,
"preview": "<?php\n\n/**\n * PageHandler\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass PageHandler extends Handler implem"
},
{
"path": "classes/security/EmbedFilter.class.php",
"chars": 1482,
"preview": "<?php\n\n/**\n * @deprecated\n */\nclass EmbedFilter\n{\n\t/**\n\t * Deprecated properties\n\t * @var array\n\t */\n\tpublic $whiteUrlLi"
},
{
"path": "classes/security/IpFilter.class.php",
"chars": 339,
"preview": "<?php\n\n/**\n * @deprecated\n */\nclass IpFilter\n{\n\tpublic static function filter($ip_list, $ip = NULL)\n\t{\n\t\tif(!$ip) $ip = "
},
{
"path": "classes/security/Password.class.php",
"chars": 2376,
"preview": "<?php\n\n/**\n * @deprecated\n */\nclass Password\n{\n\tpublic static function registerCustomAlgorithm($name, $regexp, $callback"
},
{
"path": "classes/security/Purifier.class.php",
"chars": 231,
"preview": "<?php\n\n/**\n * @deprecated\n */\nclass Purifier\n{\n\tpublic static function getInstance()\n\t{\n\t\treturn new self();\n\t}\n\n\tpublic"
},
{
"path": "classes/security/Security.class.php",
"chars": 3532,
"preview": "<?php\n\n/**\n * Security class\n *\n * @deprecated\n * @author NAVER (developers@xpressengine.com)\n */\nclass Security\n{\n\n\t/**"
},
{
"path": "classes/security/UploadFileFilter.class.php",
"chars": 642,
"preview": "<?php\n\nclass UploadFileFilter\n{\n\t/**\n\t * Generic checker\n\t *\n\t * @param string $file\n\t * @param string $filename\n\t * @re"
},
{
"path": "classes/template/TemplateHandler.class.php",
"chars": 68,
"preview": "<?php\n\nclass TemplateHandler extends Rhymix\\Framework\\Template\n{\n\n}\n"
},
{
"path": "classes/validator/Validator.class.php",
"chars": 15067,
"preview": "<?php\n\n/**\n * Validator class\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass Validator\n{\n\n\t/**\n\t * cache di"
},
{
"path": "classes/widget/WidgetHandler.class.php",
"chars": 130,
"preview": "<?php\n\n/**\n * WidgetHandler\n *\n * @author NAVER (developers@xpressengine.com)\n */\nclass WidgetHandler\n{\n\tvar $widget_pat"
},
{
"path": "classes/xml/GeneralXmlParser.class.php",
"chars": 2174,
"preview": "<?php\n\n/**\n * GeneralXmlParser class\n * Generic XML parser for XE\n * @author NAVER (developers@xpressengine.com)\n * @pac"
},
{
"path": "classes/xml/XmlGenerator.class.php",
"chars": 1359,
"preview": "<?php\n\n/**\n * XmlGenerator class\n * @author NAVER (developers@xpressengine.com)\n * @package /classes/xml\n * @version 0.1"
},
{
"path": "classes/xml/XmlJsFilter.class.php",
"chars": 11171,
"preview": "<?php\n\n/**\n * filter class traslate xml content into javascript code\n *\n * it convert xml code into js file and save the"
},
{
"path": "classes/xml/XmlLangParser.class.php",
"chars": 4822,
"preview": "<?php\n\n/**\n * XmlLangParser class\n * Change to lang php file from xml.\n * @author NAVER (developers@xpressengine.com)\n *"
},
{
"path": "classes/xml/XmlParser.class.php",
"chars": 928,
"preview": "<?php\n\n/**\n * XML Parser class from XE\n *\n * Renamed because of conflict with built-in XMLParser class in PHP 8+\n *\n * @"
},
{
"path": "codeception.dist.yml",
"chars": 403,
"preview": "actor: Tester\npaths:\n tests: tests\n output: tests/_output\n data: tests/_data\n helpers: tests/_support\nbootst"
},
{
"path": "common/autoload.php",
"chars": 4619,
"preview": "<?php\n\n/**\n * Skip if Rhymix is already loaded.\n */\nif (defined('RX_VERSION'))\n{\n\treturn;\n}\n\n/**\n * Check PHP version.\n "
},
{
"path": "common/composer.json",
"chars": 1476,
"preview": "{\n \"name\": \"rhymix/rhymix\",\n \"description\": \"Rhymix\",\n \"homepage\": \"https://www.rhymix.org\",\n \"license\": \"GPL-2.0-or"
},
{
"path": "common/constants.php",
"chars": 5250,
"preview": "<?php\n\n/**\n * RX_VERSION is the version number of the Rhymix CMS.\n */\ndefine('RX_VERSION', '2.1.32');\n\n/**\n * RX_MICROTI"
},
{
"path": "common/css/bootstrap-responsive.css",
"chars": 22111,
"preview": "/*!\n * Bootstrap Responsive v2.3.0\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http:/"
},
{
"path": "common/css/bootstrap.css",
"chars": 127247,
"preview": "/*!\n * Bootstrap v2.3.0\n *\n * Copyright 2012 Twitter, Inc\n * Licensed under the Apache License v2.0\n * http://www.apache"
},
{
"path": "common/css/rhymix.scss",
"chars": 10790,
"preview": "@charset \"UTF-8\";\n\n/* Element Reset */\nbody, table, input, textarea, select, button {\n\tfont-family: sans-serif;\n\tfont-si"
},
{
"path": "common/css/xeicon/README.md",
"chars": 2964,
"preview": "# [XEIcon v1.0.4](http://xpressengine.github.io/XEIcon/)\n> [Korean](https://github.com/xpressengine/XEIcon/blob/1.0.4-wi"
},
{
"path": "common/css/xeicon/xeicon.css",
"chars": 33380,
"preview": "@font-face {\n\tfont-family: 'xeicon';\n\tsrc:url('fonts/xeicon.eot?v=1.0.4');\n\tsrc:url('fonts/xeicon.eot?#iefix&v=1.0.4') f"
},
{
"path": "common/defaults/blacklist.php",
"chars": 706,
"preview": "<?php\n\n/**\n * Rhymix Default Blacklist for Deprecated Plugins\n *\n * Copyright (c) Rhymix Developers and Contributors\n */"
},
{
"path": "common/defaults/cloudflare.php",
"chars": 547,
"preview": "<?php\n\n/**\n * List of IP addresses belonging to CloudFlare\n * \n * See: https://www.cloudflare.com/ips\n */\nreturn array(\n"
},
{
"path": "common/defaults/config.php",
"chars": 3442,
"preview": "<?php\n\n/**\n * Default configuration for Rhymix\n *\n * Copyright (c) Rhymix Developers and Contributors\n */\nreturn array(\n"
},
{
"path": "common/defaults/countries.php",
"chars": 62480,
"preview": "<?php\n\n/**\n * List of countries and territories\n * \n * Copyright (c) Rhymix Developers and Contributors\n */\nreturn array"
},
{
"path": "common/defaults/korea.ipv4.php",
"chars": 60568,
"preview": "<?php\n\n/**\n * Source: http://mirror.oops.org/pub/oops/libkrisp/data/v2/\n * Last Updated: 2023-08-21\n */\nreturn array (\n "
},
{
"path": "common/defaults/korea.ipv6.php",
"chars": 9325,
"preview": "<?php\n\n/**\n * Source: https://krnic.or.kr/jsp/statboard/IPAS/inter/sec/currentV6Addr.jsp\n * Last Updated: 2023-08-21\n */"
},
{
"path": "common/defaults/korea_ip_ranges/korea.ipv4.parser.php",
"chars": 1925,
"preview": "<?php\n\n/**\n * Do not allow execution over the web.\n */\nif (PHP_SAPI !== 'cli')\n{\n exit(1);\n}\n\n/**\n * Download the lat"
},
{
"path": "common/defaults/korea_ip_ranges/korea.ipv6.parser.php",
"chars": 2199,
"preview": "<?php\n\n/**\n * Do not allow execution over the web.\n */\nif (PHP_SAPI !== 'cli')\n{\n exit (1);\n}\n\n/**\n * Download the la"
},
{
"path": "common/defaults/locales.php",
"chars": 897,
"preview": "<?php\n\n/**\n * Languages and locales supported by Rhymix\n * \n * Copyright (c) Rhymix Developers and Contributors\n */\nretu"
},
{
"path": "common/defaults/plugins.php",
"chars": 1355,
"preview": "<?php\n\n/**\n * Rhymix Default Plugins\n *\n * Copyright (c) Rhymix Developers and Contributors\n */\nreturn array(\n\n\t// Addon"
},
{
"path": "common/defaults/reserved.php",
"chars": 595,
"preview": "<?php\n\n/**\n * Reserved words for Rhymix\n *\n * Copyright (c) Rhymix Developers and Contributors\n */\nreturn array(\n\t'mid' "
},
{
"path": "common/defaults/whitelist.php",
"chars": 472,
"preview": "<?php\n\n/**\n * Rhymix Default iframe/object/iframe Whitelist\n * \n * Copyright (c) Rhymix Developers and Contributors\n */\n"
},
{
"path": "common/framework/Cache.php",
"chars": 8960,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The cache class.\n */\nclass Cache\n{\n\t/**\n\t * The currently enabled cache drive"
},
{
"path": "common/framework/Calendar.php",
"chars": 3363,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The calendar class.\n */\nclass Calendar\n{\n\t/**\n\t * This method returns the Eng"
},
{
"path": "common/framework/Config.php",
"chars": 4695,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The config class.\n */\nclass Config\n{\n\t/**\n\t * System configuration is stored "
},
{
"path": "common/framework/Cookie.php",
"chars": 2675,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The cookie class.\n */\nclass Cookie\n{\n\t/**\n\t * Get a cookie.\n\t *\n\t * @param st"
},
{
"path": "common/framework/DB.php",
"chars": 39797,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The DB class.\n */\nclass DB\n{\n\t/**\n\t * Singleton instances.\n\t */\n\tprotected st"
},
{
"path": "common/framework/DateTime.php",
"chars": 6701,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The datetime class.\n */\nclass DateTime\n{\n\t/**\n\t * Time zone objects and setti"
},
{
"path": "common/framework/Debug.php",
"chars": 24702,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The debug class.\n */\nclass Debug\n{\n\t/**\n\t * Store log entries here.\n\t */\n\tpro"
},
{
"path": "common/framework/Exception.php",
"chars": 743,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The exception class.\n */\nclass Exception extends \\Exception\n{\n\t/**\n\t * Get th"
},
{
"path": "common/framework/Formatter.php",
"chars": 16524,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The formatter class.\n */\nclass Formatter\n{\n\t/**\n\t * Options for text to HTML "
},
{
"path": "common/framework/HTTP.php",
"chars": 9861,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The HTTP class for making requests to external resources.\n */\nclass HTTP\n{\n\t/"
},
{
"path": "common/framework/Image.php",
"chars": 1989,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The image class.\n */\nclass Image\n{\n\t/**\n\t * Check if a file is an image\n\t *\n\t"
},
{
"path": "common/framework/Korea.php",
"chars": 10930,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * Class for validating Korea-specific information.\n */\nclass Korea\n{\n\t/**\n\t * F"
},
{
"path": "common/framework/Lang.php",
"chars": 8951,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The language class.\n */\nclass Lang\n{\n\t/**\n\t * Instances are stored here.\n\t */"
},
{
"path": "common/framework/MIME.php",
"chars": 5774,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The MIME class.\n */\nclass MIME\n{\n\t/**\n\t * Get the MIME type of a file, detect"
},
{
"path": "common/framework/Mail.php",
"chars": 13569,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The mail class.\n */\nclass Mail\n{\n\t/**\n\t * Instance properties.\n\t */\n\tpublic $"
},
{
"path": "common/framework/Pagination.php",
"chars": 3669,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The pagination class.\n */\nclass Pagination\n{\n\t/**\n\t * Count style constants.\n"
},
{
"path": "common/framework/Password.php",
"chars": 15098,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The password class.\n */\nclass Password\n{\n\t/**\n\t * Regular expressions to dete"
},
{
"path": "common/framework/Push.php",
"chars": 12261,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The Push class.\n */\nclass Push\n{\n\t/**\n\t * Instance properties.\n\t */\n\tprotecte"
},
{
"path": "common/framework/Queue.php",
"chars": 12918,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The Queue class.\n */\nclass Queue\n{\n\t/**\n\t * Static properties.\n\t */\n\tprotecte"
},
{
"path": "common/framework/Request.php",
"chars": 4277,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The request class.\n */\nclass Request\n{\n\t/**\n\t * The actual HTTP request metho"
},
{
"path": "common/framework/Router.php",
"chars": 19819,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The router class.\n */\nclass Router\n{\n\t/**\n\t * List of XE-compatible global ro"
},
{
"path": "common/framework/SMS.php",
"chars": 18754,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The SMS class.\n */\nclass SMS\n{\n\t/**\n\t * Instance properties.\n\t */\n\tpublic $dr"
},
{
"path": "common/framework/Security.php",
"chars": 11615,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The security class.\n */\nclass Security\n{\n\t/**\n\t * Sanitize a variable.\n\t *\n\t "
},
{
"path": "common/framework/Session.php",
"chars": 32921,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The session class.\n */\nclass Session\n{\n\t/**\n\t * Properties for internal use o"
},
{
"path": "common/framework/Storage.php",
"chars": 22752,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The storage class.\n */\nclass Storage\n{\n\t/**\n\t * Use atomic rename to overwrit"
},
{
"path": "common/framework/Template.php",
"chars": 24001,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The template class.\n */\nclass Template\n{\n\t/**\n\t * Properties for convenience\n"
},
{
"path": "common/framework/Timer.php",
"chars": 2233,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The timer class.\n */\nclass Timer\n{\n\t/**\n\t * Timestamps are stored here.\n\t */\n"
},
{
"path": "common/framework/UA.php",
"chars": 12615,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The user-agent class.\n */\nclass UA\n{\n\t/**\n\t * Public properties to be used in"
},
{
"path": "common/framework/URL.php",
"chars": 6355,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The URL class.\n */\nclass URL\n{\n\t/**\n\t * Get the current URL.\n\t *\n\t * If $chan"
},
{
"path": "common/framework/drivers/CacheInterface.php",
"chars": 2365,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers;\n\n/**\n * The cache driver interface.\n */\ninterface CacheInterface\n{\n\t/**\n\t * C"
},
{
"path": "common/framework/drivers/MailInterface.php",
"chars": 1296,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers;\n\n/**\n * The mail driver interface.\n */\ninterface MailInterface\n{\n\t/**\n\t * Cre"
},
{
"path": "common/framework/drivers/PushInterface.php",
"chars": 1227,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers;\n\n/**\n * The Push driver interface.\n */\ninterface PushInterface\n{\n\t/**\n\t * Cre"
},
{
"path": "common/framework/drivers/QueueInterface.php",
"chars": 1490,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers;\n\n/**\n * The Queue driver interface.\n */\ninterface QueueInterface\n{\n\t/**\n\t * C"
},
{
"path": "common/framework/drivers/SMSInterface.php",
"chars": 1408,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers;\n\n/**\n * The SMS driver interface.\n */\ninterface SMSInterface\n{\n\t/**\n\t * Creat"
},
{
"path": "common/framework/drivers/cache/apc.php",
"chars": 3387,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\n/**\n * The APC cache driver.\n */\nclass APC implements \\Rhymix\\Framewor"
},
{
"path": "common/framework/drivers/cache/dummy.php",
"chars": 2444,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\n/**\n * The dummy cache driver.\n */\nclass Dummy extends File implements"
},
{
"path": "common/framework/drivers/cache/file.php",
"chars": 4113,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\nuse Rhymix\\Framework\\Storage;\n\n/**\n * The file cache driver.\n */\nclass"
},
{
"path": "common/framework/drivers/cache/memcached.php",
"chars": 5054,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\n/**\n * The Memcached cache driver.\n */\nclass Memcached implements \\Rhy"
},
{
"path": "common/framework/drivers/cache/redis.php",
"chars": 6191,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\n/**\n * The Redis cache driver.\n */\nclass Redis implements \\Rhymix\\Fram"
},
{
"path": "common/framework/drivers/cache/sqlite.php",
"chars": 6195,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Cache;\n\nuse Rhymix\\Framework\\Storage;\n\n/**\n * The SQLite cache driver.\n */\ncla"
},
{
"path": "common/framework/drivers/mail/base.php",
"chars": 1878,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The base class for other mail drivers.\n */\nabstract class Base i"
},
{
"path": "common/framework/drivers/mail/brevo.php",
"chars": 3037,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Brevo mail driver.\n */\nclass Brevo extends Base implements \\"
},
{
"path": "common/framework/drivers/mail/dummy.php",
"chars": 606,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The dummy mail driver.\n */\nclass Dummy extends Base implements \\"
},
{
"path": "common/framework/drivers/mail/mailfunction.php",
"chars": 1344,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The mail() function mail driver.\n */\nclass MailFunction extends "
},
{
"path": "common/framework/drivers/mail/mailgun.php",
"chars": 2849,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Mailgun mail driver.\n */\nclass Mailgun extends Base implemen"
},
{
"path": "common/framework/drivers/mail/mandrill.php",
"chars": 998,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Mandrill mail driver.\n */\nclass Mandrill extends SMTP implem"
},
{
"path": "common/framework/drivers/mail/ncloud_mailer.php",
"chars": 4238,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The NAVER Cloud Outbound Mailer mail driver.\n */\nclass Ncloud_Ma"
},
{
"path": "common/framework/drivers/mail/postmark.php",
"chars": 984,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Postmark mail driver.\n */\nclass Postmark extends SMTP implem"
},
{
"path": "common/framework/drivers/mail/sendgrid.php",
"chars": 3981,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The SendGrid mail driver.\n */\nclass SendGrid extends Base implem"
},
{
"path": "common/framework/drivers/mail/ses.php",
"chars": 1565,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Amazon SES mail driver.\n */\nclass SES extends SMTP implement"
},
{
"path": "common/framework/drivers/mail/smtp.php",
"chars": 1842,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The SMTP mail driver.\n */\nclass SMTP extends Base implements \\Rh"
},
{
"path": "common/framework/drivers/mail/sparkpost.php",
"chars": 2822,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The SparkPost mail driver.\n */\nclass SparkPost extends Base impl"
},
{
"path": "common/framework/drivers/mail/woorimail.php",
"chars": 5108,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Mail;\n\n/**\n * The Woorimail mail driver.\n */\nclass Woorimail extends Base impl"
},
{
"path": "common/framework/drivers/push/apns.php",
"chars": 2269,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Push;\n\nuse Rhymix\\Framework\\Push;\nuse Rhymix\\Framework\\Drivers\\PushInterface;\n"
},
{
"path": "common/framework/drivers/push/base.php",
"chars": 1923,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Push;\n\nuse Rhymix\\Framework\\Drivers\\PushInterface;\n\n/**\n * The base class for "
},
{
"path": "common/framework/drivers/push/fcm.php",
"chars": 3007,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Push;\n\nuse Rhymix\\Framework\\HTTP;\nuse Rhymix\\Framework\\Push;\nuse Rhymix\\Framew"
},
{
"path": "common/framework/drivers/push/fcmv1.php",
"chars": 6117,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Push;\n\nuse Rhymix\\Framework\\HTTP;\nuse Rhymix\\Framework\\Push;\nuse Rhymix\\Framew"
},
{
"path": "common/framework/drivers/queue/db.php",
"chars": 7905,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Queue;\n\nuse Rhymix\\Framework\\DB as RFDB;\nuse Rhymix\\Framework\\Drivers\\QueueInt"
},
{
"path": "common/framework/drivers/queue/dummy.php",
"chars": 2071,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Queue;\n\nuse Rhymix\\Framework\\Drivers\\QueueInterface;\n\n/**\n * The Dummy queue d"
},
{
"path": "common/framework/drivers/queue/redis.php",
"chars": 4001,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\Queue;\n\nuse Rhymix\\Framework\\Drivers\\QueueInterface;\n\n/**\n * The Redis queue d"
},
{
"path": "common/framework/drivers/sms/base.php",
"chars": 2213,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\n/**\n * The base class for other SMS drivers.\n */\nabstract class Base imp"
},
{
"path": "common/framework/drivers/sms/coolsms.php",
"chars": 3201,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\n/**\n * The CoolSMS SMS driver.\n */\nclass CoolSMS extends Base implements"
},
{
"path": "common/framework/drivers/sms/dummy.php",
"chars": 1841,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\n/**\n * The dummy SMS driver.\n */\nclass Dummy extends Base implements \\Rh"
},
{
"path": "common/framework/drivers/sms/iwinv.php",
"chars": 4263,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\n/**\n * The iwinv SMS driver.\n */\nclass iwinv extends Base implements \\Rh"
},
{
"path": "common/framework/drivers/sms/ncloud_sens.php",
"chars": 6566,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\nuse Rhymix\\Framework\\Storage;\n\n/**\n * The NAVER Cloud SENS SMS driver.\n "
},
{
"path": "common/framework/drivers/sms/ppurio.php",
"chars": 2504,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\n\n/**\n * The Ppurio SMS driver.\n */\nclass Ppurio extends Base implements \\"
},
{
"path": "common/framework/drivers/sms/solapi.php",
"chars": 5201,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\nuse Rhymix\\Framework\\HTTP;\nuse Rhymix\\Framework\\Security;\n\n/**\n * The Sol"
},
{
"path": "common/framework/drivers/sms/twilio.php",
"chars": 3449,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Drivers\\SMS;\nuse Rhymix\\Framework\\HTTP;\nuse Rhymix\\Framework\\Storage;\nuse RHymix\\Frame"
},
{
"path": "common/framework/exceptions/DBError.php",
"chars": 329,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The DB Error exception class.\n */\nclass DBError extends \\Rhymix\\Fr"
},
{
"path": "common/framework/exceptions/FeatureDisabled.php",
"chars": 365,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"feature disabled\" exception class.\n */\nclass FeatureDisabled "
},
{
"path": "common/framework/exceptions/InvalidRequest.php",
"chars": 362,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"invalid request\" exception class.\n */\nclass InvalidRequest ex"
},
{
"path": "common/framework/exceptions/MustLogin.php",
"chars": 347,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"must login\" exception class.\n */\nclass MustLogin extends \\Rhy"
},
{
"path": "common/framework/exceptions/NotPermitted.php",
"chars": 356,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"not permitted\" exception class.\n */\nclass NotPermitted extend"
},
{
"path": "common/framework/exceptions/QueryError.php",
"chars": 318,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The Query Error exception class.\n */\nclass QueryError extends DBEr"
},
{
"path": "common/framework/exceptions/SecurityViolation.php",
"chars": 371,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"security violation\" exception class.\n */\nclass SecurityViolat"
},
{
"path": "common/framework/exceptions/TargetNotFound.php",
"chars": 359,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Exceptions;\n\n/**\n * The \"target not found\" exception class.\n */\nclass TargetNotFound e"
},
{
"path": "common/framework/filters/FileContentFilter.php",
"chars": 4770,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Filters;\n\n/**\n * The file content filter class.\n */\nclass FileContentFilter\n{\n\t/**\n\t *"
},
{
"path": "common/framework/filters/FilenameFilter.php",
"chars": 3663,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Filters;\n\n/**\n * The filename filter class.\n */\nclass FilenameFilter\n{\n\t/**\n\t * Remove"
},
{
"path": "common/framework/filters/HTMLFilter.php",
"chars": 27930,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Filters;\n\nuse Rhymix\\Framework\\Config;\nuse Rhymix\\Framework\\Security;\nuse Rhymix\\Frame"
},
{
"path": "common/framework/filters/IpFilter.php",
"chars": 5218,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Filters;\n\n/**\n * The IP filter class.\n */\nclass IpFilter\n{\n\t/**\n\t * Check whether the "
},
{
"path": "common/framework/filters/MediaFilter.php",
"chars": 6022,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Filters;\n\nuse Rhymix\\Framework\\Config;\n\n/**\n * The media filter class.\n */\nclass Media"
},
{
"path": "common/framework/helpers/CacheItemHelper.php",
"chars": 2098,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Rhymix\\Framework\\Drivers\\CacheInterface;\nuse Psr\\Cache\\CacheItemInterfac"
},
{
"path": "common/framework/helpers/CacheItemPoolHelper.php",
"chars": 4278,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Psr\\Cache\\CacheItemInterface;\nuse Psr\\Cache\\CacheItemPoolInterface;\nuse "
},
{
"path": "common/framework/helpers/ConfigHelper.php",
"chars": 1879,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Rhymix\\Framework\\Config;\nuse Rhymix\\Framework\\Plugin;\n\n/**\n * Config hel"
},
{
"path": "common/framework/helpers/DBHelper.php",
"chars": 3923,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Rhymix\\Framework\\DB;\nuse Rhymix\\Framework\\Debug;\nuse Rhymix\\Framework\\Ex"
},
{
"path": "common/framework/helpers/DBResultHelper.php",
"chars": 277,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\n/**\n * DB result helper class.\n *\n * Instances of this class will be returne"
},
{
"path": "common/framework/helpers/DBStmtHelper.php",
"chars": 1385,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Rhymix\\Framework\\DB;\nuse Rhymix\\Framework\\Debug;\nuse Rhymix\\Framework\\Ex"
},
{
"path": "common/framework/helpers/HTTPHelper.php",
"chars": 1207,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\nuse Psr\\Http\\Message\\ResponseInterface;\nuse GuzzleHttp\\Psr7\\MessageTrait;\n\n/"
},
{
"path": "common/framework/helpers/SessionHelper.php",
"chars": 2434,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Helpers;\n\n/**\n * Session helper class.\n */\n#[\\AllowDynamicProperties]\nclass SessionHel"
},
{
"path": "common/framework/i18n.php",
"chars": 4558,
"preview": "<?php\n\nnamespace Rhymix\\Framework;\n\n/**\n * The i18n (internationalization) class.\n */\nclass i18n\n{\n\t/**\n\t * Constants fo"
},
{
"path": "common/framework/parsers/AddonInfoParser.php",
"chars": 2828,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Addon (info.xml) parser class for XE compatibility.\n */\nclass AddonIn"
},
{
"path": "common/framework/parsers/BaseParser.php",
"chars": 7780,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * This class provides common methods for other parser classes to use.\n "
},
{
"path": "common/framework/parsers/ConfigParser.php",
"chars": 10074,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\nuse Rhymix\\Framework\\Config;\nuse Rhymix\\Framework\\DateTime;\nuse Rhymix\\Frame"
},
{
"path": "common/framework/parsers/DBQueryParser.php",
"chars": 9036,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * DB query parser class for XE compatibility.\n */\nclass DBQueryParser e"
},
{
"path": "common/framework/parsers/DBTableParser.php",
"chars": 9275,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * DB table parser class for XE compatibility.\n */\nclass DBTableParser e"
},
{
"path": "common/framework/parsers/EditorComponentParser.php",
"chars": 2676,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Editor component (info.xml) parser class for XE compatibility.\n */\ncl"
},
{
"path": "common/framework/parsers/LangParser.php",
"chars": 3285,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\nuse Rhymix\\Framework\\Lang;\nuse Rhymix\\Framework\\Storage;\n\n/**\n * Lang parser"
},
{
"path": "common/framework/parsers/LayoutInfoParser.php",
"chars": 3727,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Layout (info.xml) parser class for XE compatibility.\n */\nclass Layout"
},
{
"path": "common/framework/parsers/ModuleActionParser.php",
"chars": 10946,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Module action (conf/module.xml) parser class for XE compatibility.\n *"
},
{
"path": "common/framework/parsers/ModuleInfoParser.php",
"chars": 3016,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Module info (conf/info.xml) parser class for XE compatibility.\n */\ncl"
},
{
"path": "common/framework/parsers/RulesetParser.php",
"chars": 2036,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Ruleset XML parser class for XE compatibility.\n */\nclass RulesetParse"
},
{
"path": "common/framework/parsers/SkinInfoParser.php",
"chars": 3446,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Skin (info.xml) parser class for XE compatibility.\n */\nclass SkinInfo"
},
{
"path": "common/framework/parsers/WidgetInfoParser.php",
"chars": 2806,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Widget (info.xml) parser class for XE compatibility.\n */\nclass Widget"
},
{
"path": "common/framework/parsers/WidgetStyleInfoParser.php",
"chars": 2230,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Widget Style (info.xml) parser class for XE compatibility.\n */\nclass "
},
{
"path": "common/framework/parsers/XEXMLParser.php",
"chars": 2609,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * Generic XML parser that produces output identical to XE's XML parser."
},
{
"path": "common/framework/parsers/XMLRPCParser.php",
"chars": 976,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers;\n\n/**\n * XMLRPC request parser class for XE compatibility.\n */\nclass XMLRPCPar"
},
{
"path": "common/framework/parsers/dbquery/ColumnRead.php",
"chars": 211,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers\\DBQuery;\n\n/**\n * ColumnRead class.\n */\nclass ColumnRead\n{\n\tpublic $name;\n\tpubl"
},
{
"path": "common/framework/parsers/dbquery/ColumnWrite.php",
"chars": 302,
"preview": "<?php\n\nnamespace Rhymix\\Framework\\Parsers\\DBQuery;\n\n/**\n * ColumnWrite class.\n */\nclass ColumnWrite extends VariableBase"
}
]
// ... and 4532 more files (download for full content)
About this extraction
This page contains the full source code of the rhymix/rhymix GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4732 files (21.4 MB), approximately 5.9M tokens, and a symbol index with 11620 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.