explode(): Passing null to parameter #2 ($string) of type string is deprecated
Error Type: E_DEPRECATED
Source File: /home4/silksto1/public_html/_qcube4/project/includes/model/SilkCharacters.php Line: 217
Line 212: $meaning = $this->getCnMeaning();
Line 213: } else {
Line 214: $meaning = $this->getEnMeaning();
Line 215: }
Line 216: // Use first meaning only for label (before comma)
Line 217: $label = trim(explode(',', $meaning)[0]);
Line 218: if ($strBaseUrl === null) {
Line 219: $href = '/' . $strCultureKey . '/story-of-chinese-character/' . $id;
Line 220: } else {
Line 221: $href = rtrim($strBaseUrl, '/') . '/story-of-chinese-character/' . $id;
Line 222: }
Call Stack:
#1 /home4/silksto1/public_html/_qcube4/vendor/qcubed-4/common/src/Error/Manager.php(271): QCubed\Error\Manager::handleError()
#2 (): QCubed\Error\Manager::shutdown()
Variable Dump: Show/Hide
_COOKIEarray (
'PHPSESSID' => '7606105ab0812cdb1d3e71ebed2f048a',
)_ENVarray (
)_FILESarray (
)_FORMNULL_GETarray (
'q' => 'story-of-chinese-character',
'characterId' => '1311',
)_POSTarray (
)_REQUESTarray (
'cultureKey' => 'zh',
'q' => 'story-of-chinese-character',
'characterId' => '1311',
)_SERVERarray (
'LSPHP_ENABLE_USER_INI' => 'on',
'PATH' => '/usr/local/bin:/usr/bin:/bin',
'TEMP' => '/tmp',
'TMP' => '/tmp',
'TMPDIR' => '/tmp',
'PWD' => '/',
'HTTP_ACCEPT' => '*/*',
'HTTP_ACCEPT_ENCODING' => 'gzip, br, zstd, deflate',
'CONTENT_LENGTH' => '0',
'HTTP_COOKIE' => 'PHPSESSID=7606105ab0812cdb1d3e71ebed2f048a',
'HTTP_HOST' => 'www.silkstory.net',
'HTTP_USER_AGENT' => 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)',
'HTTP_X_HTTPS' => '1',
'REDIRECT_REDIRECT_UNIQUE_ID' => 'aelHjFe2vVlGI0WxYdvRQgAB_jI',
'REDIRECT_REDIRECT_QS_ConnectionId' => '177689588492984810858711',
'REDIRECT_REDIRECT_SCRIPT_URL' => '/zh/story-of-chinese-character/1311',
'REDIRECT_REDIRECT_SCRIPT_URI' => 'https://www.silkstory.net/zh/story-of-chinese-character/1311',
'REDIRECT_REDIRECT_HTTPS' => 'on',
'REDIRECT_REDIRECT_SSL_TLS_SNI' => 'www.silkstory.net',
'REDIRECT_REDIRECT_HTTP2' => 'on',
'REDIRECT_REDIRECT_H2PUSH' => 'off',
'REDIRECT_REDIRECT_H2_PUSH' => 'off',
'REDIRECT_REDIRECT_H2_PUSHED' => '',
'REDIRECT_REDIRECT_H2_PUSHED_ON' => '',
'REDIRECT_REDIRECT_H2_STREAM_ID' => '19',
'REDIRECT_REDIRECT_H2_STREAM_TAG' => '858711-353-19',
'REDIRECT_REDIRECT_STATUS' => '200',
'REDIRECT_UNIQUE_ID' => 'aelHjFe2vVlGI0WxYdvRQgAB_jI',
'REDIRECT_QS_ConnectionId' => '177689588492984810858711',
'REDIRECT_SCRIPT_URL' => '/zh/story-of-chinese-character/1311',
'REDIRECT_SCRIPT_URI' => 'https://www.silkstory.net/zh/story-of-chinese-character/1311',
'REDIRECT_HTTPS' => 'on',
'REDIRECT_SSL_TLS_SNI' => 'www.silkstory.net',
'REDIRECT_HTTP2' => 'on',
'REDIRECT_H2PUSH' => 'off',
'REDIRECT_H2_PUSH' => 'off',
'REDIRECT_H2_PUSHED' => '',
'REDIRECT_H2_PUSHED_ON' => '',
'REDIRECT_H2_STREAM_ID' => '19',
'REDIRECT_H2_STREAM_TAG' => '858711-353-19',
'REDIRECT_STATUS' => '200',
'UNIQUE_ID' => 'aelHjFe2vVlGI0WxYdvRQgAB_jI',
'QS_ConnectionId' => '177689588492984810858711',
'SCRIPT_URL' => '/zh/story-of-chinese-character/1311',
'SCRIPT_URI' => 'https://www.silkstory.net/zh/story-of-chinese-character/1311',
'HTTPS' => 'on',
'SSL_TLS_SNI' => 'www.silkstory.net',
'HTTP2' => 'on',
'H2PUSH' => 'off',
'H2_PUSH' => 'off',
'H2_PUSHED' => '',
'H2_PUSHED_ON' => '',
'H2_STREAM_ID' => '19',
'H2_STREAM_TAG' => '858711-353-19',
'SERVER_SIGNATURE' => '',
'SERVER_SOFTWARE' => 'Apache',
'SERVER_NAME' => 'www.silkstory.net',
'SERVER_ADDR' => '10.36.215.6',
'SERVER_PORT' => '443',
'REMOTE_ADDR' => '216.73.216.68',
'DOCUMENT_ROOT' => '/home4/silksto1/public_html',
'REQUEST_SCHEME' => 'https',
'CONTEXT_PREFIX' => '',
'CONTEXT_DOCUMENT_ROOT' => '/home4/silksto1/public_html',
'SERVER_ADMIN' => 'webmaster@silkstory.net',
'SCRIPT_FILENAME' => '/home4/silksto1/public_html/index.php',
'REMOTE_PORT' => '11530',
'REDIRECT_URL' => '/zh/story-of-chinese-character',
'REDIRECT_QUERY_STRING' => 'cultureKey=zh&q=story-of-chinese-character&characterId=1311',
'SERVER_PROTOCOL' => 'HTTP/2.0',
'REQUEST_METHOD' => 'GET',
'QUERY_STRING' => 'cultureKey=zh&q=story-of-chinese-character&characterId=1311',
'REQUEST_URI' => '/zh/story-of-chinese-character/1311',
'SCRIPT_NAME' => '/index.php',
'PHP_SELF' => '/index.php',
'REQUEST_TIME_FLOAT' => 1776895884.9378108978271484375,
'REQUEST_TIME' => 1776895884,
'HTTP_REFERER' => NULL,
)__composer_autoload_filesarray (
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => true,
'6e3fae29631ef280660b3cdad06f25a8' => true,
'7b11c4dc42b3b3023073cb14e519683c' => true,
'320cde22f66dd4f5d3fd621d3e88b98f' => true,
'8825ede83f2f289127722d4e842cf7e8' => true,
'e69f7f6ee287b969198c3c9d6777bd38' => true,
'37a3dc5111fe8f707ab4c132ef1dbc62' => true,
'b067bc7112e384b61c701452d53a14a8' => true,
'0d59ee240a4cd96ddbb4ff164fccea4d' => true,
'a4a119a56e50fbb293281d9a48007e0e' => true,
'b6b991a57620e2fb6b2f66f03fe9ddc2' => true,
'8a9dc1de0ca7e01f3e08231539562f61' => true,
'532945a4b12d830ff3e086cc36a64375' => true,
'5897ea0ac4cccf14d323035e65887801' => true,
'6124b4c8570aa390c21fafd04a26c69f' => true,
'2cffec82183ee1cea088009cef9a6fc3' => true,
'9b38cf48e83f5d8f60375221cd213eee' => true,
'ec07570ca5a812141189b1fa81503674' => true,
)_csrf_token'16565bc1d6aaa2183fc8a5e2208252205e31525aeaf5d6c6da154d1817bd2912'argvNULLconfig_optionsarray (
)contextKey'web'database_dsn'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8'database_password'!Kx9TV5Gbwyp'database_user'silksto1_ss_user'driver_optionsarray (
3 => 0,
)modx\MODX\Revolution\modX::__set_state(array(
'pdo' =>
\PDO::__set_state(array(
)),
'config' =>
array (
'access_category_enabled' => '1',
'access_context_enabled' => '1',
'access_policies_version' => '1.0',
'access_resource_group_enabled' => '1',
'allow_forward_across_contexts' => '',
'allow_manager_login_forgot_password' => '1',
'allow_multiple_emails' => '1',
'allow_tags_in_post' => '',
'anonymous_sessions' => '1',
'archive_with' => '',
'assets_path' => '/home4/silksto1/public_html/assets/',
'assets_url' => '/assets/',
'auto_check_pkg_updates' => '1',
'auto_check_pkg_updates_cache_expire' => '15',
'auto_isfolder' => '1',
'auto_menuindex' => '1',
'automatic_alias' => '1',
'automatic_template_assignment' => 'sibling',
'babel.babelTvName' => 'babelLanguageLinks',
'babel.contextKeys' => 'web,en,zh',
'babel.debug' => '0',
'babel.displayChunk' => 'tplBabelContextMenu',
'babel.displayText' => 'language',
'babel.restrictToGroup' => '1',
'babel.syncFields' => '',
'babel.syncTvs' => '',
'base_help_url' => '//docs.modx.com/help/',
'base_path' => '/home4/silksto1/public_html/',
'base_url' => '/zh/',
'blocked_minutes' => '60',
'cache_alias_map' => '1',
'cache_context_settings' => '1',
'cache_db' => '',
'cache_db_expires' => '0',
'cache_db_session' => '',
'cache_db_session_lifetime' => '',
'cache_default' => '1',
'cache_expires' => '0',
'cache_format' => '0',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_key' => 'default',
'cache_lang_js' => '1',
'cache_lexicon_topics' => '1',
'cache_noncore_lexicon_topics' => '1',
'cache_path' => '/home4/silksto1/public_html/core/cache/',
'cache_resource' => '1',
'cache_resource_clear_partial' => '',
'cache_resource_expires' => '0',
'cache_scripts' => '1',
'cache_system_settings' => true,
'cache_system_settings_key' => 'system_settings',
'charset' => 'utf8',
'clear_cache_refresh_trees' => '',
'compress_css' => '1',
'compress_js' => '1',
'confirm_navigation' => '1',
'connection_mutable' => true,
'connections' =>
array (
0 =>
array (
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'username' => 'silksto1_ss_user',
'password' => '!Kx9TV5Gbwyp',
'options' =>
array (
'connection_mutable' => true,
),
'driverOptions' =>
array (
3 => 0,
),
),
),
'connector_url' => '/connectors/index.php',
'connectors_path' => '/home4/silksto1/public_html/connectors/',
'connectors_url' => '/connectors/',
'container_suffix' => '/',
'context_tree_sort' => '1',
'context_tree_sortby' => 'rank',
'context_tree_sortdir' => 'ASC',
'core_path' => '/home4/silksto1/public_html/core/',
'cultureKey' => 'zh',
'date_timezone' => '',
'dbname' => 'silksto1_silkstory',
'dbtype' => 'mysql',
'debug' => '',
'default_content_type' => '1',
'default_context' => 'web',
'default_duplicate_publish_option' => 'preserve',
'default_media_source' => '1',
'default_media_source_type' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'default_per_page' => '20',
'default_template' => '2',
'default_username' => '(anonymous)',
'driverOptions' =>
array (
3 => 0,
),
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'emailsender' => 'sunny.uy@gmail.com',
'enable_dragdrop' => '1',
'enable_gravatar' => '',
'enable_template_picker_in_tree' => '1',
'error_handler_class' => 'MODX\\Revolution\\Error\\modErrorHandler',
'error_log_filename' => 'error.log',
'error_log_filepath' => '',
'error_page' => '1',
'failed_login_attempts' => '5',
'feed_modx_news' => 'https://feeds.feedburner.com/modx-announce',
'feed_modx_news_enabled' => '1',
'feed_modx_security' => 'https://forums.modx.com/board.xml?board=294',
'feed_modx_security_enabled' => '1',
'form_customization_use_all_groups' => '',
'forward_merge_excludes' => 'type,published,class_key',
'friendly_alias_lowercase_only' => '1',
'friendly_alias_max_length' => '0',
'friendly_alias_realtime' => '1',
'friendly_alias_restrict_chars' => 'pattern',
'friendly_alias_restrict_chars_pattern' => '/[\\0\\x0B\\t\\n\\r\\f\\a&=+%#<>"~:`@\\?\\[\\]\\{\\}\\|\\^\'\\\\]/',
'friendly_alias_strip_element_tags' => '1',
'friendly_alias_translit' => 'none',
'friendly_alias_translit_class' => 'translit.modTransliterate',
'friendly_alias_translit_class_path' => '/home4/silksto1/public_html/core/components/',
'friendly_alias_trim_chars' => '/.-_',
'friendly_alias_word_delimiter' => '-',
'friendly_alias_word_delimiters' => '-_',
'friendly_urls' => '1',
'friendly_urls_strict' => '',
'global_duplicate_uri_check' => '',
'hidemenu_default' => '',
'host' => 'localhost',
'http_host' => 'www.silkstory.net',
'https_port' => 443,
'hydrate_adhoc_fields' => true,
'hydrate_fields' => true,
'hydrate_related_objects' => true,
'inline_help' => '1',
'link_tag_scheme' => '-1',
'load_deprecated_global_class_aliases' => true,
'locale' => '',
'lock_ttl' => '360',
'log_deprecated' => '1',
'log_level' => '1',
'log_snippet_not_found' => '1',
'log_target' => 'FILE',
'login_background_image' => '',
'login_help_button' => '',
'login_logo' => '',
'mail_charset' => 'UTF-8',
'mail_dkim_domain' => '',
'mail_dkim_identity' => '',
'mail_dkim_passphrase' => '',
'mail_dkim_privatekeyfile' => '',
'mail_dkim_privatekeystring' => '',
'mail_dkim_selector' => '',
'mail_encoding' => '8bit',
'mail_inlinestyle_inline' => '1',
'mail_inlinestyle_remove_style_tags' => '',
'mail_smtp_auth' => '',
'mail_smtp_autotls' => '1',
'mail_smtp_helo' => '',
'mail_smtp_hosts' => 'localhost',
'mail_smtp_keepalive' => '',
'mail_smtp_pass' => '',
'mail_smtp_port' => '587',
'mail_smtp_secure' => '',
'mail_smtp_single_to' => '',
'mail_smtp_timeout' => '10',
'mail_smtp_user' => '',
'mail_use_smtp' => '',
'main_nav_parent' => 'topnav',
'manager_date_format' => 'Y-m-d',
'manager_datetime_empty_value' => '—',
'manager_datetime_separator' => ', ',
'manager_direction' => 'ltr',
'manager_favicon_url' => 'favicon.ico',
'manager_login_url_alternate' => '',
'manager_logo' => '',
'manager_path' => '/home4/silksto1/public_html/manager/',
'manager_theme' => 'default',
'manager_time_format' => 'H:i',
'manager_tooltip_delay' => '2300',
'manager_tooltip_enable' => '1',
'manager_url' => '/manager/',
'manager_use_fullname' => '',
'manager_week_start' => '0',
'mgr_source_icon' => 'icon-folder-open-o',
'mgr_tree_icon_context' => 'tree-context',
'modx_browser_default_sort' => 'name',
'modx_browser_default_viewmode' => 'grid',
'modx_browser_tree_hide_files' => '1',
'modx_browser_tree_hide_tooltips' => '1',
'modx_charset' => 'UTF-8',
'package_installer_at_top' => '1',
'parser_recurse_uncacheable' => '1',
'password' => '!Kx9TV5Gbwyp',
'password_generated_length' => '10',
'password_min_length' => '8',
'passwordless_activated' => '',
'passwordless_expiration' => '3600',
'photo_profile_source' => '',
'phpthumb_allow_src_above_docroot' => '',
'phpthumb_cache_maxage' => '30',
'phpthumb_cache_maxfiles' => '10000',
'phpthumb_cache_maxsize' => '100',
'phpthumb_cache_source_enabled' => '',
'phpthumb_document_root' => '',
'phpthumb_error_bgcolor' => 'CCCCFF',
'phpthumb_error_fontsize' => '1',
'phpthumb_error_textcolor' => 'FF0000',
'phpthumb_far' => 'C',
'phpthumb_imagemagick_path' => '',
'phpthumb_nohotlink_enabled' => '1',
'phpthumb_nohotlink_erase_image' => '1',
'phpthumb_nohotlink_text_message' => 'Off-server thumbnailing is not allowed',
'phpthumb_nohotlink_valid_domains' => 'www.silkstory.net',
'phpthumb_nooffsitelink_enabled' => '',
'phpthumb_nooffsitelink_erase_image' => '1',
'phpthumb_nooffsitelink_require_refer' => '',
'phpthumb_nooffsitelink_text_message' => 'Off-server linking is not allowed',
'phpthumb_nooffsitelink_valid_domains' => 'www.silkstory.net',
'phpthumb_nooffsitelink_watermark_src' => '',
'phpthumb_zoomcrop' => '0',
'preserve_menuindex' => '',
'principal_targets' => 'MODX\\Revolution\\modAccessContext,MODX\\Revolution\\modAccessResourceGroup,MODX\\Revolution\\modAccessCategory,MODX\\Revolution\\Sources\\modAccessMediaSource,MODX\\Revolution\\modAccessNamespace',
'processors_path' => '/home4/silksto1/public_html/core/src/Revolution/Processors/',
'proxy_auth_type' => 'BASIC',
'proxy_host' => '',
'proxy_password' => '',
'proxy_port' => '',
'proxy_username' => '',
'publish_default' => '',
'quick_search_in_content' => '1',
'quick_search_result_max' => '10',
'request_controller' => 'index.php',
'request_method_strict' => '',
'request_param_alias' => 'q',
'request_param_id' => 'id',
'resource_static_allow_absolute' => '0',
'resource_static_path' => '/home4/silksto1/public_html/assets/',
'resource_tree_node_name' => 'pagetitle',
'resource_tree_node_name_fallback' => 'alias',
'resource_tree_node_tooltip' => '',
'richtext_default' => '1',
'search_default' => '1',
'send_poweredby_header' => '',
'server_offset_time' => '0',
'server_port' => '443',
'session_cookie_domain' => '',
'session_cookie_httponly' => '1',
'session_cookie_lifetime' => '604800',
'session_cookie_path' => '',
'session_cookie_samesite' => '',
'session_cookie_secure' => '',
'session_gc_maxlifetime' => '604800',
'session_handler_class' => 'MODX\\Revolution\\modSessionHandler',
'session_name' => '',
'set_header' => '1',
'settings_distro' => 'traditional',
'settings_version' => '3.2.0-pl',
'show_tv_categories_header' => '1',
'site_name' => 'MODX Revolution',
'site_start' => '10',
'site_status' => '1',
'site_unavailable_message' => '[[%site_unavailable_message]]',
'site_unavailable_page' => '0',
'site_url' => 'https://www.silkstory.net/zh/',
'static_elements_automate_chunks' => '',
'static_elements_automate_plugins' => '',
'static_elements_automate_snippets' => '',
'static_elements_automate_templates' => '',
'static_elements_automate_tvs' => '',
'static_elements_basepath' => '',
'static_elements_default_category' => '0',
'static_elements_default_mediasource' => '0',
'static_elements_html_extension' => '.tpl',
'symlink_merge_fields' => '1',
'syncsite_default' => '1',
'table_prefix' => 'modx_',
'topmenu_show_descriptions' => '1',
'tree_default_sort' => 'menuindex',
'tree_root_id' => '0',
'tvs_below_content' => '',
'unauthorized_page' => '1',
'upload_file_exists' => '1',
'upload_files' => 'txt,html,htm,xml,js,js.map,css,scss,less,css.map,zip,gz,rar,z,tgz,tar,mp3,mp4,aac,wav,au,wmv,avi,mpg,mpeg,pdf,doc,docx,xls,xlsx,ppt,pptx,jpg,jpeg,png,tiff,svg,svgz,gif,psd,ico,bmp,webp,odt,ods,odp,odb,odg,odf,md,ttf,woff,woff2,eot',
'upload_images' => 'jpg,jpeg,png,gif,psd,ico,bmp,tiff,svg,svgz,webp',
'upload_maxsize' => '33554432',
'upload_media' => 'mp3,wav,au,wmv,avi,mpg,mpeg',
'upload_translit' => '1',
'upload_translit_restrict_chars_pattern' => '/[\\0\\x0B\\t\\n\\r\\f\\a&=+%#<>"~:`@\\?\\[\\]\\{\\}\\|\\^\'\\\\]/',
'url_scheme' => 'https://',
'use_alias_path' => '',
'use_context_resource_table' => '1',
'use_editor' => '1',
'use_frozen_parent_uris' => '',
'use_multibyte' => '1',
'use_weblink_target' => '',
'user_nav_parent' => 'usernav',
'username' => 'silksto1_ss_user',
'validate_on_save' => true,
'validator_class' => 'MODX\\Revolution\\Validation\\modValidator',
'welcome_action' => 'welcome',
'welcome_namespace' => 'core',
'welcome_screen' => '',
'welcome_screen_url' => '//misc.modx.com/revolution/welcome.30.html ',
'which_editor' => '',
'which_element_editor' => '',
'xhtml_urls' => '1',
),
'driver' =>
\xPDO\Om\mysql\xPDODriver::__set_state(array(
'xpdo' => NULL,
'dbtypes' =>
array (
'integer' =>
array (
0 => '/INT/i',
),
'boolean' =>
array (
0 => '/^BOOL/i',
),
'float' =>
array (
0 => '/^DEC/i',
1 => '/^NUMERIC$/i',
2 => '/^FLOAT$/i',
3 => '/^DOUBLE/i',
4 => '/^REAL/i',
),
'string' =>
array (
0 => '/CHAR/i',
1 => '/TEXT/i',
2 => '/^ENUM$/i',
3 => '/^SET$/i',
4 => '/^TIME$/i',
5 => '/^YEAR$/i',
),
'timestamp' =>
array (
0 => '/^TIMESTAMP$/i',
),
'datetime' =>
array (
0 => '/^DATETIME$/i',
),
'date' =>
array (
0 => '/^DATE$/i',
),
'binary' =>
array (
0 => '/BINARY/i',
1 => '/BLOB/i',
),
'bit' =>
array (
0 => '/^BIT$/i',
),
),
'_currentTimestamps' =>
array (
0 => 'CURRENT_TIMESTAMP',
1 => 'CURRENT_TIMESTAMP()',
2 => 'NOW()',
3 => 'LOCALTIME',
4 => 'LOCALTIME()',
5 => 'LOCALTIMESTAMP',
6 => 'LOCALTIMESTAMP()',
7 => 'SYSDATE()',
),
'_currentDates' =>
array (
0 => 'CURDATE()',
1 => 'CURRENT_DATE',
2 => 'CURRENT_DATE()',
),
'_currentTimes' =>
array (
0 => 'CURTIME()',
1 => 'CURRENT_TIME',
2 => 'CURRENT_TIME()',
),
'quoteChar' => '\'',
'escapeOpenChar' => '`',
'escapeCloseChar' => '`',
)),
'map' =>
\xPDO\xPDOMap::__set_state(array(
'map' =>
array (
'MODX\\Revolution\\modContext' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'context',
'extends' => 'MODX\\Revolution\\modAccessibleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'key' => NULL,
'name' => NULL,
'description' => NULL,
'rank' => 0,
),
'fieldMeta' =>
array (
'key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'index' => 'pk',
),
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'index' => 'index',
),
'description' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
),
'rank' =>
array (
'dbtype' => 'int',
'precision' => '11',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
),
'indexes' =>
array (
'PRIMARY' =>
array (
'alias' => 'PRIMARY',
'primary' => true,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'key' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'name' =>
array (
'alias' => 'name',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'name' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'rank' =>
array (
'alias' => 'rank',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'rank' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'composites' =>
array (
'ContextResources' =>
array (
'class' => 'MODX\\Revolution\\modContextResource',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'ContextSettings' =>
array (
'class' => 'MODX\\Revolution\\modContextSetting',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'SourceElements' =>
array (
'class' => 'MODX\\Revolution\\Sources\\modMediaSourceElement',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'Acls' =>
array (
'class' => 'MODX\\Revolution\\modAccessContext',
'local' => 'key',
'foreign' => 'target',
'owner' => 'local',
'cardinality' => 'many',
),
),
'validation' =>
array (
'rules' =>
array (
'key' =>
array (
'key' =>
array (
'type' => 'preg_match',
'rule' => '/^[a-zA-Z\\x7f-\\xff][a-zA-Z0-9\\x2d-\\x2f\\x7f-\\xff]*$/',
'message' => 'context_err_ns_key',
),
),
),
),
),
'xPDO\\Om\\xPDOObject' =>
array (
'table' => NULL,
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
),
'MODX\\Revolution\\modAccessibleObject' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'extends' => 'xPDO\\Om\\xPDOObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
),
'fieldMeta' =>
array (
),
),
'MODX\\Revolution\\modExtensionPackage' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'extension_packages',
'extends' => 'xPDO\\Om\\xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'namespace' => 'core',
'name' => 'core',
'path' => NULL,
'table_prefix' => '',
'service_class' => '',
'service_name' => '',
'created_at' => NULL,
'updated_at' => NULL,
),
'fieldMeta' =>
array (
'namespace' =>
array (
'dbtype' => 'varchar',
'precision' => '40',
'phptype' => 'string',
'null' => false,
'default' => 'core',
'index' => 'index',
),
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'core',
'index' => 'index',
),
'path' =>
array (
'dbtype' => 'text',
'phptype' => 'string',
'null' => true,
),
'table_prefix' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'service_class' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'service_name' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'created_at' =>
array (
'dbtype' => 'datetime',
'phptype' => 'datetime',
'null' => true,
),
'updated_at' =>
array (
'dbtype' => 'datetime',
'phptype' => 'datetime',
'null' => true,
),
),
'indexes' =>
array (
'namespace' =>
array (
'alias' => 'namespace',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'namespace' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'name' =>
array (
'alias' => 'name',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'name' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'Namespace' =>
array (
'class' => 'MODX\\Revolution\\modNamespace',
'local' => 'namespace',
'foreign' => 'name',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
'MODX\\Revolution\\modNamespace' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'namespaces',
'extends' => 'MODX\\Revolution\\modAccessibleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'name' => '',
'path' => '',
'assets_path' => '',
),
'fieldMeta' =>
array (
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '40',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'pk',
),
'path' =>
array (
'dbtype' => 'text',
'phptype' => 'string',
'default' => '',
),
'assets_path' =>
array (
'dbtype' => 'text',
'phptype' => 'string',
'default' => '',
),
),
'indexes' =>
array (
'PRIMARY' =>
array (
'alias' => 'PRIMARY',
'primary' => true,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'name' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'composites' =>
array (
'LexiconEntries' =>
array (
'class' => 'MODX\\Revolution\\modLexiconEntry',
'local' => 'name',
'foreign' => 'namespace',
'cardinality' => 'many',
'owner' => 'local',
),
'SystemSettings' =>
array (
'class' => 'MODX\\Revolution\\modSystemSetting',
'local' => 'name',
'foreign' => 'namespace',
'cardinality' => 'many',
'owner' => 'local',
),
'ContextSettings' =>
array (
'class' => 'MODX\\Revolution\\modContextSetting',
'local' => 'name',
'foreign' => 'namespace',
'cardinality' => 'many',
'owner' => 'local',
),
'UserSettings' =>
array (
'class' => 'MODX\\Revolution\\modUserSetting',
'local' => 'name',
'foreign' => 'namespace',
'cardinality' => 'many',
'owner' => 'local',
),
'ExtensionPackages' =>
array (
'class' => 'MODX\\Revolution\\modExtensionPackage',
'local' => 'name',
'foreign' => 'namespace',
'cardinality' => 'many',
'owner' => 'local',
),
'Acls' =>
array (
'class' => 'MODX\\Revolution\\modAccessNamespace',
'local' => 'name',
'foreign' => 'target',
'owner' => 'local',
'cardinality' => 'many',
),
),
),
'xPDO\\Om\\xPDOSimpleObject' =>
array (
'table' => NULL,
'fields' =>
array (
'id' => NULL,
),
'fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
),
'indexes' =>
array (
'PRIMARY' =>
array (
'alias' => 'PRIMARY',
'primary' => true,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'id' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
),
'MODX\\Revolution\\modSession' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'session',
'extends' => 'xPDO\\Om\\xPDOObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'id' => '',
'access' => NULL,
'data' => NULL,
),
'fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'index' => 'pk',
'default' => '',
),
'access' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'attributes' => 'unsigned',
),
'data' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'string',
),
),
'indexes' =>
array (
'PRIMARY' =>
array (
'alias' => 'PRIMARY',
'primary' => true,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'id' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'access' =>
array (
'alias' => 'access',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'access' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'validation' =>
array (
'rules' =>
array (
'id' =>
array (
'invalid' =>
array (
'type' => 'preg_match',
'rule' => '/^[0-9a-zA-Z,-]{22,191}$/',
'message' => 'session_err_invalid_id',
),
),
),
),
),
'MODX\\Revolution\\modUser' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'users',
'extends' => 'MODX\\Revolution\\modPrincipal',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'username' => '',
'password' => '',
'cachepwd' => '',
'class_key' => 'MODX\\Revolution\\modUser',
'active' => 1,
'remote_key' => NULL,
'remote_data' => NULL,
'hash_class' => 'MODX\\Revolution\\Hashing\\modNative',
'salt' => '',
'primary_group' => 0,
'session_stale' => NULL,
'sudo' => 0,
'createdon' => 0,
),
'fieldMeta' =>
array (
'username' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'unique',
),
'password' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'cachepwd' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'class_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'MODX\\Revolution\\modUser',
'index' => 'index',
),
'active' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'boolean',
'attributes' => 'unsigned',
'null' => false,
'default' => 1,
),
'remote_key' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => true,
'index' => 'index',
),
'remote_data' =>
array (
'dbtype' => 'text',
'phptype' => 'json',
'null' => true,
),
'hash_class' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'MODX\\Revolution\\Hashing\\modNative',
),
'salt' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'primary_group' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'attributes' => 'unsigned',
'null' => false,
'default' => 0,
'index' => 'index',
),
'session_stale' =>
array (
'dbtype' => 'text',
'phptype' => 'array',
'null' => true,
),
'sudo' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'boolean',
'attributes' => 'unsigned',
'null' => false,
'default' => 0,
),
'createdon' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
),
),
'indexes' =>
array (
'username' =>
array (
'alias' => 'username',
'primary' => false,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'username' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'class_key' =>
array (
'alias' => 'class_key',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'class_key' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'remote_key' =>
array (
'alias' => 'remote_key',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'remote_key' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'primary_group' =>
array (
'alias' => 'primary_group',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'primary_group' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'composites' =>
array (
'Profile' =>
array (
'class' => 'MODX\\Revolution\\modUserProfile',
'local' => 'id',
'foreign' => 'internalKey',
'cardinality' => 'one',
'owner' => 'local',
),
'UserSettings' =>
array (
'class' => 'MODX\\Revolution\\modUserSetting',
'local' => 'id',
'foreign' => 'user',
'cardinality' => 'many',
'owner' => 'local',
),
'UserGroupMembers' =>
array (
'class' => 'MODX\\Revolution\\modUserGroupMember',
'local' => 'id',
'foreign' => 'member',
'cardinality' => 'many',
'owner' => 'local',
),
'ActiveUsers' =>
array (
'class' => 'MODX\\Revolution\\modActiveUser',
'local' => 'id',
'foreign' => 'internalKey',
'cardinality' => 'many',
'owner' => 'local',
),
'DashboardWidgets' =>
array (
'class' => 'MODX\\Revolution\\modDashboardWidgetPlacement',
'local' => 'id',
'foreign' => 'user',
'cardinality' => 'many',
'owner' => 'local',
),
),
'aggregates' =>
array (
'CreatedResources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'createdby',
'cardinality' => 'many',
'owner' => 'local',
),
'EditedResources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'editedby',
'cardinality' => 'many',
'owner' => 'local',
),
'DeletedResources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'deletedby',
'cardinality' => 'many',
'owner' => 'local',
),
'PublishedResources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'publishedby',
'cardinality' => 'many',
'owner' => 'local',
),
'SentMessages' =>
array (
'class' => 'MODX\\Revolution\\modUserMessage',
'local' => 'id',
'foreign' => 'sender',
'cardinality' => 'many',
'owner' => 'local',
),
'ReceivedMessages' =>
array (
'class' => 'MODX\\Revolution\\modUserMessage',
'local' => 'id',
'foreign' => 'recipient',
'cardinality' => 'many',
'owner' => 'local',
),
'PrimaryGroup' =>
array (
'class' => 'MODX\\Revolution\\modUserGroup',
'local' => 'primary_group',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
'MODX\\Revolution\\modPrincipal' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'extends' => 'xPDO\\Om\\xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
),
'fieldMeta' =>
array (
),
'composites' =>
array (
'Acls' =>
array (
'class' => 'modAccess',
'local' => 'id',
'foreign' => 'principal',
'cardinality' => 'many',
'owner' => 'local',
),
),
),
'MODX\\Revolution\\modPlugin' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'site_plugins',
'extends' => 'MODX\\Revolution\\modScript',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'cache_type' => 0,
'plugincode' => '',
'locked' => 0,
'properties' => NULL,
'disabled' => 0,
'moduleguid' => '',
'static' => 0,
'static_file' => '',
),
'fieldMeta' =>
array (
'cache_type' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'plugincode' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'locked' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'properties' =>
array (
'dbtype' => 'text',
'phptype' => 'array',
'null' => true,
),
'disabled' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'moduleguid' =>
array (
'dbtype' => 'varchar',
'precision' => '32',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fk',
),
'static' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'static_file' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
),
'fieldAliases' =>
array (
'content' => 'plugincode',
),
'indexes' =>
array (
'locked' =>
array (
'alias' => 'locked',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'locked' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'disabled' =>
array (
'alias' => 'disabled',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'disabled' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'static' =>
array (
'alias' => 'static',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'static' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'composites' =>
array (
'PropertySets' =>
array (
'class' => 'MODX\\Revolution\\modElementPropertySet',
'local' => 'id',
'foreign' => 'element',
'owner' => 'local',
'cardinality' => 'many',
'criteria' =>
array (
'foreign' =>
array (
'element_class' => 'MODX\\Revolution\\modPlugin',
),
),
),
'PluginEvents' =>
array (
'class' => 'MODX\\Revolution\\modPluginEvent',
'local' => 'id',
'foreign' => 'pluginid',
'cardinality' => 'many',
'owner' => 'local',
),
),
'validation' =>
array (
'rules' =>
array (
'name' =>
array (
'invalid' =>
array (
'type' => 'preg_match',
'rule' => '/^(?!\\s)[a-zA-Z0-9\\x23-\\x2f\\x3a\\x5b-\\x5d\\x7f-\\xff-_\\s]+(?<!\\s)$/',
'message' => 'plugin_err_invalid_name',
),
),
),
),
),
'MODX\\Revolution\\modAccessibleSimpleObject' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'extends' => 'MODX\\Revolution\\modAccessibleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'id' => NULL,
),
'fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
),
),
'indexes' =>
array (
'PRIMARY' =>
array (
'alias' => 'PRIMARY',
'primary' => true,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'id' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
),
'MODX\\Revolution\\modElement' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'site_element',
'extends' => 'MODX\\Revolution\\modAccessibleSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'source' => 0,
'property_preprocess' => 0,
),
'fieldMeta' =>
array (
'source' =>
array (
'dbtype' => 'int',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'fk',
),
'property_preprocess' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
),
),
'composites' =>
array (
'Acls' =>
array (
'class' => 'MODX\\Revolution\\modAccessElement',
'local' => 'id',
'foreign' => 'target',
'owner' => 'local',
'cardinality' => 'many',
),
),
'aggregates' =>
array (
'CategoryAcls' =>
array (
'class' => 'MODX\\Revolution\\modAccessCategory',
'local' => 'category',
'foreign' => 'target',
'owner' => 'local',
'cardinality' => 'many',
),
'Source' =>
array (
'class' => 'MODX\\Revolution\\Sources\\modMediaSource',
'local' => 'source',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
),
),
),
'MODX\\Revolution\\modScript' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'site_script',
'extends' => 'MODX\\Revolution\\modElement',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'name' => '',
'description' => '',
'editor_type' => 0,
'category' => 0,
),
'fieldMeta' =>
array (
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '50',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'unique',
),
'description' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'editor_type' =>
array (
'dbtype' => 'int',
'precision' => '11',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'category' =>
array (
'dbtype' => 'int',
'precision' => '11',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'fk',
),
),
'indexes' =>
array (
'name' =>
array (
'alias' => 'name',
'primary' => false,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'name' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'category' =>
array (
'alias' => 'category',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'category' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'Category' =>
array (
'class' => 'MODX\\Revolution\\modCategory',
'key' => 'id',
'local' => 'category',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
'MODX\\Revolution\\modAccessContext' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'access_context',
'extends' => 'MODX\\Revolution\\modAccess',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
),
'fieldMeta' =>
array (
),
'aggregates' =>
array (
'Target' =>
array (
'class' => 'MODX\\Revolution\\modContext',
'local' => 'target',
'foreign' => 'key',
'owner' => 'foreign',
'cardinality' => 'one',
),
),
),
'MODX\\Revolution\\modAccessPolicy' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'access_policies',
'extends' => 'xPDO\\Om\\xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'name' => NULL,
'description' => NULL,
'parent' => 0,
'template' => 0,
'class' => '',
'data' => '{}',
'lexicon' => 'permissions',
),
'fieldMeta' =>
array (
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'index' => 'unique',
),
'description' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'string',
),
'parent' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'template' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'class' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'index',
),
'data' =>
array (
'dbtype' => 'text',
'phptype' => 'json',
'default' => '{}',
),
'lexicon' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => 'permissions',
),
),
'indexes' =>
array (
'name' =>
array (
'alias' => 'name',
'primary' => false,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'name' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'parent' =>
array (
'alias' => 'parent',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'parent' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'class' =>
array (
'alias' => 'class',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'class' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'template' =>
array (
'alias' => 'template',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'template' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'composites' =>
array (
'Children' =>
array (
'class' => 'MODX\\Revolution\\modAccessPolicy',
'local' => 'id',
'foreign' => 'parent',
'owner' => 'local',
'cardinality' => 'many',
),
),
'aggregates' =>
array (
'Parent' =>
array (
'class' => 'MODX\\Revolution\\modAccessPolicy',
'local' => 'parent',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
),
'Template' =>
array (
'class' => 'MODX\\Revolution\\modAccessPolicyTemplate',
'local' => 'template',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
),
),
),
'MODX\\Revolution\\modAccess' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'extends' => 'xPDO\\Om\\xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'target' => '',
'principal_class' => 'MODX\\Revolution\\modPrincipal',
'principal' => 0,
'authority' => 9999,
'policy' => 0,
),
'fieldMeta' =>
array (
'target' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fk',
),
'principal_class' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'MODX\\Revolution\\modPrincipal',
'index' => 'index',
),
'principal' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'fk',
),
'authority' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 9999,
'index' => 'index',
),
'policy' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'fk',
),
),
'indexes' =>
array (
'target' =>
array (
'alias' => 'target',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'target' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'principal_class' =>
array (
'alias' => 'principal_class',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'principal_class' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'principal' =>
array (
'alias' => 'principal',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'principal' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'authority' =>
array (
'alias' => 'authority',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'authority' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'policy' =>
array (
'alias' => 'policy',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'policy' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'Policy' =>
array (
'class' => 'MODX\\Revolution\\modAccessPolicy',
'local' => 'policy',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
),
'Principal' =>
array (
'class' => 'MODX\\Revolution\\modPrincipal',
'local' => 'principal',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
),
'GroupPrincipal' =>
array (
'class' => 'MODX\\Revolution\\modUserGroup',
'local' => 'principal',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
'criteria' =>
array (
'local' =>
array (
'principal_class' => 'MODX\\Revolution\\modUserGroup',
),
),
),
'UserPrincipal' =>
array (
'class' => 'MODX\\Revolution\\modUserGroup',
'local' => 'principal',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
'criteria' =>
array (
'local' =>
array (
'principal_class' => 'MODX\\Revolution\\modUser',
),
),
),
'MinimumRole' =>
array (
'class' => 'MODX\\Revolution\\modUserGroupRole',
'local' => 'authority',
'foreign' => 'authority',
'owner' => 'local',
'cardinality' => 'one',
),
),
),
'MODX\\Revolution\\modUserGroupMember' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'member_groups',
'extends' => 'xPDO\\Om\\xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'user_group' => 0,
'member' => 0,
'role' => 1,
'rank' => 0,
),
'fieldMeta' =>
array (
'user_group' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'member' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'role' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 1,
'index' => 'index',
),
'rank' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
),
'indexes' =>
array (
'role' =>
array (
'alias' => 'role',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'role' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'rank' =>
array (
'alias' => 'rank',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'rank' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'UserGroupRole' =>
array (
'class' => 'MODX\\Revolution\\modUserGroupRole',
'local' => 'role',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'UserGroup' =>
array (
'class' => 'MODX\\Revolution\\modUserGroup',
'local' => 'user_group',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'User' =>
array (
'class' => 'MODX\\Revolution\\modUser',
'local' => 'member',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
'MODX\\Revolution\\modUserGroupRole' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'user_group_roles',
'extends' => 'xPDO\\Om\\xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'name' => NULL,
'description' => NULL,
'authority' => 9999,
),
'fieldMeta' =>
array (
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'index' => 'unique',
),
'description' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'string',
),
'authority' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 9999,
'index' => 'unique',
),
),
'indexes' =>
array (
'name' =>
array (
'alias' => 'name',
'primary' => false,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'name' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'authority' =>
array (
'alias' => 'authority',
'primary' => false,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'authority' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'UserGroupMembers' =>
array (
'class' => 'MODX\\Revolution\\modUserGroupMember',
'local' => 'id',
'foreign' => 'role',
'cardinality' => 'many',
'owner' => 'local',
),
),
),
'MODX\\Revolution\\modAccessResourceGroup' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'access_resource_groups',
'extends' => 'MODX\\Revolution\\modAccess',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'context_key' => '',
),
'fieldMeta' =>
array (
'context_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fk',
),
),
'indexes' =>
array (
'context_key' =>
array (
'alias' => 'context_key',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'context_key' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'principal_class' =>
array (
'alias' => 'principal_class',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'principal_class' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
'target' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
'principal' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
'authority' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'Target' =>
array (
'class' => 'MODX\\Revolution\\modResourceGroup',
'local' => 'target',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
),
'Context' =>
array (
'class' => 'MODX\\Revolution\\modContext',
'local' => 'context_key',
'foreign' => 'key',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
'MODX\\Revolution\\modAccessCategory' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'access_category',
'extends' => 'MODX\\Revolution\\modAccess',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'context_key' => '',
),
'fieldMeta' =>
array (
'context_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fk',
),
),
'indexes' =>
array (
'context_key' =>
array (
'alias' => 'context_key',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'context_key' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'Target' =>
array (
'class' => 'MODX\\Revolution\\modCategory',
'local' => 'target',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
),
'Context' =>
array (
'class' => 'MODX\\Revolution\\modContext',
'local' => 'context_key',
'foreign' => 'key',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
'MODX\\Revolution\\Sources\\modAccessMediaSource' =>
array (
'package' => 'MODX\\Revolution\\Sources',
'version' => '3.0',
'table' => 'access_media_source',
'extends' => 'MODX\\Revolution\\modAccess',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'context_key' => '',
),
'fieldMeta' =>
array (
'context_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fk',
),
),
'indexes' =>
array (
'context_key' =>
array (
'alias' => 'context_key',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'context_key' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'Target' =>
array (
'class' => 'MODX\\Revolution\\Sources\\modMediaSource',
'local' => 'target',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
),
'Context' =>
array (
'class' => 'MODX\\Revolution\\modContext',
'local' => 'context_key',
'foreign' => 'key',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
'MODX\\Revolution\\modAccessNamespace' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'access_namespace',
'extends' => 'MODX\\Revolution\\modAccess',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'context_key' => '',
),
'fieldMeta' =>
array (
'context_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fk',
),
),
'indexes' =>
array (
'context_key' =>
array (
'alias' => 'context_key',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'context_key' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'Target' =>
array (
'class' => 'MODX\\Revolution\\modNamespace',
'local' => 'target',
'foreign' => 'name',
'owner' => 'foreign',
'cardinality' => 'one',
),
'Context' =>
array (
'class' => 'MODX\\Revolution\\modContext',
'local' => 'context_key',
'foreign' => 'key',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
'MODX\\Revolution\\modDocument' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'extends' => 'MODX\\Revolution\\modResource',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
),
'fieldMeta' =>
array (
),
),
'MODX\\Revolution\\modResource' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'site_content',
'extends' => 'MODX\\Revolution\\modAccessibleSimpleObject',
'inherit' => 'single',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'type' => 'document',
'pagetitle' => '',
'longtitle' => '',
'description' => '',
'alias' => '',
'link_attributes' => '',
'published' => 0,
'pub_date' => 0,
'unpub_date' => 0,
'parent' => 0,
'isfolder' => 0,
'introtext' => NULL,
'content' => NULL,
'richtext' => 1,
'template' => 0,
'menuindex' => 0,
'searchable' => 1,
'cacheable' => 1,
'createdby' => 0,
'createdon' => 0,
'editedby' => 0,
'editedon' => 0,
'deleted' => 0,
'deletedon' => 0,
'deletedby' => 0,
'publishedon' => 0,
'publishedby' => 0,
'menutitle' => '',
'content_dispo' => 0,
'hidemenu' => 0,
'class_key' => 'MODX\\Revolution\\modDocument',
'context_key' => 'web',
'content_type' => 1,
'uri' => NULL,
'uri_override' => 0,
'hide_children_in_tree' => 0,
'show_in_tree' => 1,
'properties' => NULL,
'alias_visible' => 1,
),
'fieldMeta' =>
array (
'type' =>
array (
'dbtype' => 'varchar',
'precision' => '20',
'phptype' => 'string',
'null' => false,
'default' => 'document',
),
'pagetitle' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fulltext',
'indexgrp' => 'content_ft_idx',
),
'longtitle' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fulltext',
'indexgrp' => 'content_ft_idx',
),
'description' =>
array (
'dbtype' => 'text',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fulltext',
'indexgrp' => 'content_ft_idx',
),
'alias' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => true,
'default' => '',
'index' => 'index',
),
'link_attributes' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'published' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'pub_date' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
'index' => 'index',
),
'unpub_date' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
'index' => 'index',
),
'parent' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'isfolder' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'introtext' =>
array (
'dbtype' => 'text',
'phptype' => 'string',
'index' => 'fulltext',
'indexgrp' => 'content_ft_idx',
),
'content' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'string',
'index' => 'fulltext',
'indexgrp' => 'content_ft_idx',
),
'richtext' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 1,
),
'template' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'menuindex' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'searchable' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 1,
'index' => 'index',
),
'cacheable' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 1,
'index' => 'index',
),
'createdby' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'createdon' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
),
'editedby' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'editedon' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
),
'deleted' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
),
'deletedon' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
),
'deletedby' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'publishedon' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
),
'publishedby' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'menutitle' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'content_dispo' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'hidemenu' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'class_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'MODX\\Revolution\\modDocument',
'index' => 'index',
),
'context_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'web',
'index' => 'index',
),
'content_type' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 1,
),
'uri' =>
array (
'dbtype' => 'text',
'phptype' => 'string',
'null' => true,
'index' => 'index',
),
'uri_override' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'hide_children_in_tree' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'show_in_tree' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 1,
'index' => 'index',
),
'properties' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'json',
'null' => true,
),
'alias_visible' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 1,
),
),
'indexes' =>
array (
'alias' =>
array (
'alias' => 'alias',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'alias' =>
array (
'length' => '',
'collation' => 'A',
'null' => true,
),
),
),
'published' =>
array (
'alias' => 'published',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'published' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'pub_date' =>
array (
'alias' => 'pub_date',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'pub_date' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'unpub_date' =>
array (
'alias' => 'unpub_date',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'unpub_date' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'parent' =>
array (
'alias' => 'parent',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'parent' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'isfolder' =>
array (
'alias' => 'isfolder',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'isfolder' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'template' =>
array (
'alias' => 'template',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'template' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'menuindex' =>
array (
'alias' => 'menuindex',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'menuindex' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'searchable' =>
array (
'alias' => 'searchable',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'searchable' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'cacheable' =>
array (
'alias' => 'cacheable',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'cacheable' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'hidemenu' =>
array (
'alias' => 'hidemenu',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'hidemenu' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'class_key' =>
array (
'alias' => 'class_key',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'class_key' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'context_key' =>
array (
'alias' => 'context_key',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'context_key' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'uri' =>
array (
'alias' => 'uri',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'uri' =>
array (
'length' => '191',
'collation' => 'A',
'null' => true,
),
),
),
'uri_override' =>
array (
'alias' => 'uri_override',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'uri_override' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'hide_children_in_tree' =>
array (
'alias' => 'hide_children_in_tree',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'hide_children_in_tree' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'show_in_tree' =>
array (
'alias' => 'show_in_tree',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'show_in_tree' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'content_ft_idx' =>
array (
'alias' => 'content_ft_idx',
'primary' => false,
'unique' => false,
'type' => 'FULLTEXT',
'columns' =>
array (
'pagetitle' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
'longtitle' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
'description' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
'introtext' =>
array (
'length' => '',
'collation' => 'A',
'null' => true,
),
'content' =>
array (
'length' => '',
'collation' => 'A',
'null' => true,
),
),
),
'cache_refresh_idx' =>
array (
'alias' => 'cache_refresh_index',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'parent' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
'menuindex' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
'id' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'composites' =>
array (
'Children' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'parent',
'cardinality' => 'many',
'owner' => 'local',
),
'TemplateVarResources' =>
array (
'class' => 'MODX\\Revolution\\modTemplateVarResource',
'local' => 'id',
'foreign' => 'contentid',
'cardinality' => 'many',
'owner' => 'local',
),
'ResourceGroupResources' =>
array (
'class' => 'MODX\\Revolution\\modResourceGroupResource',
'local' => 'id',
'foreign' => 'document',
'cardinality' => 'many',
'owner' => 'local',
),
'Acls' =>
array (
'class' => 'MODX\\Revolution\\modAccessResource',
'local' => 'id',
'foreign' => 'target',
'owner' => 'local',
'cardinality' => 'many',
),
'ContextResources' =>
array (
'class' => 'MODX\\Revolution\\modContextResource',
'local' => 'id',
'foreign' => 'resource',
'cardinality' => 'many',
'owner' => 'local',
),
),
'aggregates' =>
array (
'Parent' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'parent',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'CreatedBy' =>
array (
'class' => 'MODX\\Revolution\\modUser',
'local' => 'createdby',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'EditedBy' =>
array (
'class' => 'MODX\\Revolution\\modUser',
'local' => 'editedby',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'DeletedBy' =>
array (
'class' => 'MODX\\Revolution\\modUser',
'local' => 'deletedby',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'PublishedBy' =>
array (
'class' => 'MODX\\Revolution\\modUser',
'local' => 'publishedby',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'Template' =>
array (
'class' => 'MODX\\Revolution\\modTemplate',
'local' => 'template',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'TemplateVars' =>
array (
'class' => 'MODX\\Revolution\\modTemplateVar',
'local' => 'id:template',
'foreign' => 'contentid:templateid',
'cardinality' => 'many',
'owner' => 'local',
),
'TemplateVarTemplates' =>
array (
'class' => 'MODX\\Revolution\\modTemplateVarTemplate',
'local' => 'template',
'foreign' => 'templateid',
'cardinality' => 'many',
'owner' => 'local',
),
'ContentType' =>
array (
'class' => 'MODX\\Revolution\\modContentType',
'local' => 'content_type',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
),
'Context' =>
array (
'class' => 'MODX\\Revolution\\modContext',
'local' => 'context_key',
'foreign' => 'key',
'owner' => 'foreign',
'cardinality' => 'one',
),
),
),
'MODX\\Revolution\\modContentType' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'content_type',
'extends' => 'xPDO\\Om\\xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'name' => NULL,
'description' => NULL,
'mime_type' => NULL,
'file_extensions' => NULL,
'icon' => NULL,
'headers' => NULL,
'binary' => 0,
),
'fieldMeta' =>
array (
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'index' => 'unique',
),
'description' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
'null' => true,
),
'mime_type' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
),
'file_extensions' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
),
'icon' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
'null' => true,
),
'headers' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'array',
),
'binary' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
),
),
'indexes' =>
array (
'name' =>
array (
'alias' => 'name',
'primary' => false,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'name' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'Resources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'content_type',
'owner' => 'local',
'cardinality' => 'many',
),
),
'validation' =>
array (
'rules' =>
array (
'name' =>
array (
'name' =>
array (
'type' => 'xPDOValidationRule',
'rule' => 'xPDO\\Validation\\xPDOMinLengthValidationRule',
'value' => '1',
'message' => 'content_type_err_ns_name',
),
),
),
),
),
'MODX\\Revolution\\modSnippet' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'site_snippets',
'extends' => 'MODX\\Revolution\\modScript',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'cache_type' => 0,
'snippet' => NULL,
'locked' => 0,
'properties' => NULL,
'moduleguid' => '',
'static' => 0,
'static_file' => '',
),
'fieldMeta' =>
array (
'cache_type' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'snippet' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'string',
),
'locked' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'properties' =>
array (
'dbtype' => 'text',
'phptype' => 'array',
'null' => true,
),
'moduleguid' =>
array (
'dbtype' => 'varchar',
'precision' => '32',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fk',
),
'static' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'static_file' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
),
'fieldAliases' =>
array (
'content' => 'snippet',
),
'indexes' =>
array (
'locked' =>
array (
'alias' => 'locked',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'locked' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'moduleguid' =>
array (
'alias' => 'moduleguid',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'moduleguid' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'static' =>
array (
'alias' => 'static',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'static' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'composites' =>
array (
'PropertySets' =>
array (
'class' => 'MODX\\Revolution\\modElementPropertySet',
'local' => 'id',
'foreign' => 'element',
'owner' => 'local',
'cardinality' => 'many',
'criteria' =>
array (
'foreign' =>
array (
'element_class' => 'MODX\\Revolution\\modSnippet',
),
),
),
),
'validation' =>
array (
'rules' =>
array (
'name' =>
array (
'invalid' =>
array (
'type' => 'preg_match',
'rule' => '/^(?!\\s)[a-zA-Z0-9\\x2d-\\x2f\\x7f-\\xff-_\\s]+(?<!\\s)$/',
'message' => 'snippet_err_invalid_name',
),
),
),
),
),
'MODX\\Revolution\\Sources\\modFileMediaSource' =>
array (
'package' => 'MODX\\Revolution\\Sources',
'version' => '3.0',
'extends' => 'MODX\\Revolution\\Sources\\modMediaSource',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
),
'fieldMeta' =>
array (
),
),
'MODX\\Revolution\\Sources\\modMediaSource' =>
array (
'package' => 'MODX\\Revolution\\Sources',
'version' => '3.0',
'table' => 'media_sources',
'extends' => 'MODX\\Revolution\\modAccessibleSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'name' => '',
'description' => NULL,
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' => NULL,
'is_stream' => 1,
),
'fieldMeta' =>
array (
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'index',
),
'description' =>
array (
'dbtype' => 'text',
'phptype' => 'string',
'null' => true,
),
'class_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'index' => 'index',
),
'properties' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'array',
'null' => true,
),
'is_stream' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 1,
'index' => 'index',
),
),
'indexes' =>
array (
'name' =>
array (
'alias' => 'name',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'name' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'class_key' =>
array (
'alias' => 'class_key',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'class_key' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'is_stream' =>
array (
'alias' => 'is_stream',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'is_stream' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'composites' =>
array (
'SourceElement' =>
array (
'class' => 'MODX\\Revolution\\Sources\\modMediaSourceElement',
'local' => 'id',
'foreign' => 'source',
'cardinality' => 'one',
'owner' => 'local',
),
),
'aggregates' =>
array (
'Chunks' =>
array (
'class' => 'MODX\\Revolution\\modChunk',
'local' => 'id',
'foreign' => 'source',
'cardinality' => 'many',
'owner' => 'local',
),
'Plugins' =>
array (
'class' => 'MODX\\Revolution\\modPlugin',
'local' => 'id',
'foreign' => 'source',
'cardinality' => 'many',
'owner' => 'local',
),
'Snippets' =>
array (
'class' => 'MODX\\Revolution\\modSnippet',
'local' => 'id',
'foreign' => 'source',
'cardinality' => 'many',
'owner' => 'local',
),
'Templates' =>
array (
'class' => 'MODX\\Revolution\\modTemplate',
'local' => 'id',
'foreign' => 'source',
'cardinality' => 'many',
'owner' => 'local',
),
'TemplateVars' =>
array (
'class' => 'MODX\\Revolution\\modTemplateVar',
'local' => 'id',
'foreign' => 'source',
'cardinality' => 'many',
'owner' => 'local',
),
),
),
'MODX\\Revolution\\modDeprecatedMethod' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'deprecated_method',
'extends' => 'xPDO\\Om\\xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'definition' => '',
'since' => '',
'recommendation' => '',
),
'fieldMeta' =>
array (
'definition' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'since' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'recommendation' =>
array (
'dbtype' => 'varchar',
'precision' => '1024',
'phptype' => 'string',
'null' => false,
'default' => '',
),
),
'indexes' =>
array (
'definition' =>
array (
'alias' => 'definition',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'definition' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'composites' =>
array (
'Callers' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedCall',
'local' => 'id',
'foreign' => 'method',
'cardinality' => 'many',
'owner' => 'local',
),
),
),
'MODX\\Revolution\\modDeprecatedCall' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'deprecated_call',
'extends' => 'xPDO\\Om\\xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'method' => 0,
'call_count' => 0,
'caller' => '',
'caller_file' => '',
'caller_line' => 0,
),
'fieldMeta' =>
array (
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'indexes' =>
array (
'method' =>
array (
'alias' => 'method',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'method' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'call_count' =>
array (
'alias' => 'call_count',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'call_count' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'caller' =>
array (
'alias' => 'caller',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'caller' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'caller_file' =>
array (
'alias' => 'caller_file',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'caller_file' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'caller_line' =>
array (
'alias' => 'caller_line',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'caller_line' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
'MODX\\Revolution\\modStaticResource' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'extends' => 'MODX\\Revolution\\modResource',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
),
'fieldMeta' =>
array (
),
),
'MODX\\Revolution\\modSymLink' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'extends' => 'MODX\\Revolution\\modResource',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
),
'fieldMeta' =>
array (
),
),
'MODX\\Revolution\\modWebLink' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'extends' => 'MODX\\Revolution\\modResource',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
),
'fieldMeta' =>
array (
),
),
'MODX\\Revolution\\modResourceGroupResource' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'document_groups',
'extends' => 'xPDO\\Om\\xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'document_group' => 0,
'document' => 0,
),
'fieldMeta' =>
array (
'document_group' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'document' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
),
'indexes' =>
array (
'document_group' =>
array (
'alias' => 'document_group',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'document_group' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'document' =>
array (
'alias' => 'document',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'document' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'ResourceGroup' =>
array (
'class' => 'MODX\\Revolution\\modResourceGroup',
'key' => 'id',
'local' => 'document_group',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'Resource' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'key' => 'id',
'local' => 'document',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
'MODX\\Revolution\\modChunk' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'site_htmlsnippets',
'extends' => 'MODX\\Revolution\\modElement',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'name' => '',
'description' => 'Chunk',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => NULL,
'locked' => 0,
'properties' => NULL,
'static' => 0,
'static_file' => '',
),
'fieldMeta' =>
array (
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '50',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'unique',
),
'description' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => 'Chunk',
),
'editor_type' =>
array (
'dbtype' => 'int',
'precision' => '11',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'category' =>
array (
'dbtype' => 'int',
'precision' => '11',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'fk',
),
'cache_type' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'snippet' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'string',
),
'locked' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'properties' =>
array (
'dbtype' => 'text',
'phptype' => 'array',
'null' => true,
),
'static' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'static_file' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
),
'fieldAliases' =>
array (
'content' => 'snippet',
),
'indexes' =>
array (
'name' =>
array (
'alias' => 'name',
'primary' => false,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'name' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'category' =>
array (
'alias' => 'category',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'category' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'locked' =>
array (
'alias' => 'locked',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'locked' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
'static' =>
array (
'alias' => 'static',
'primary' => false,
'unique' => false,
'type' => 'BTREE',
'columns' =>
array (
'static' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'composites' =>
array (
'PropertySets' =>
array (
'class' => 'MODX\\Revolution\\modElementPropertySet',
'local' => 'id',
'foreign' => 'element',
'owner' => 'local',
'cardinality' => 'many',
'criteria' =>
array (
'foreign' =>
array (
'element_class' => 'MODX\\Revolution\\modChunk',
),
),
),
),
'aggregates' =>
array (
'Category' =>
array (
'class' => 'MODX\\Revolution\\modCategory',
'key' => 'id',
'local' => 'category',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'validation' =>
array (
'rules' =>
array (
'name' =>
array (
'invalid' =>
array (
'type' => 'preg_match',
'rule' => '/^(?!\\s)[a-zA-Z0-9\\x2d-\\x2f\\x7f-\\xff-_\\s]+(?<!\\s)$/',
'message' => 'chunk_err_invalid_name',
),
),
),
),
),
'MODX\\Revolution\\modCategoryClosure' =>
array (
'package' => 'MODX\\Revolution\\',
'version' => '3.0',
'table' => 'categories_closure',
'extends' => 'xPDO\\Om\\xPDOObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'ancestor' => 0,
'descendant' => 0,
'depth' => 0,
),
'fieldMeta' =>
array (
'ancestor' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'attributes' => 'unsigned',
'null' => false,
'default' => 0,
'index' => 'pk',
),
'descendant' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'attributes' => 'unsigned',
'null' => false,
'default' => 0,
'index' => 'pk',
),
'depth' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'attributes' => 'unsigned',
'null' => false,
'default' => 0,
),
),
'indexes' =>
array (
'PRIMARY' =>
array (
'alias' => 'PRIMARY',
'primary' => true,
'unique' => true,
'type' => 'BTREE',
'columns' =>
array (
'ancestor' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
'descendant' =>
array (
'length' => '',
'collation' => 'A',
'null' => false,
),
),
),
),
'aggregates' =>
array (
'Ancestor' =>
array (
'class' => 'MODX\\Revolution\\modCategory',
'local' => 'ancestor',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'Descendant' =>
array (
'class' => 'MODX\\Revolution\\modCategory',
'local' => 'descendant',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
),
),
'xpdo' => NULL,
)),
'package' => 'MODX\\Revolution',
'packages' =>
array (
'Om' =>
array (
'path' => '/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/',
'prefix' => 'modx_',
),
'MODX\\Revolution' =>
array (
'path' => '/home4/silksto1/public_html/core/src/',
'prefix' => 'modx_',
),
'MODX\\Revolution\\Registry\\Db' =>
array (
'path' => '/home4/silksto1/public_html/core/src/',
'prefix' => 'modx_',
),
'MODX\\Revolution\\Sources' =>
array (
'path' => '/home4/silksto1/public_html/core/src/',
'prefix' => 'modx_',
),
'MODX\\Revolution\\Transport' =>
array (
'path' => '/home4/silksto1/public_html/core/src/',
'prefix' => 'modx_',
),
),
'manager' => NULL,
'cacheManager' =>
\MODX\Revolution\modCacheManager::__set_state(array(
'xpdo' => NULL,
'caches' =>
array (
'system_settings' =>
\xPDO\Cache\xPDOFileCache::__set_state(array(
'xpdo' => NULL,
'options' =>
array (
'cache_key' => 'system_settings',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_format' => 0,
),
'key' => 'system_settings',
'initialized' => true,
)),
'namespaces' =>
\xPDO\Cache\xPDOFileCache::__set_state(array(
'xpdo' => NULL,
'options' =>
array (
'cache_key' => 'namespaces',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_format' => 0,
),
'key' => 'namespaces',
'initialized' => true,
)),
'context_settings' =>
\xPDO\Cache\xPDOFileCache::__set_state(array(
'xpdo' => NULL,
'options' =>
array (
'cache_key' => 'context_settings',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_format' => 0,
),
'key' => 'context_settings',
'initialized' => true,
)),
'auto_publish' =>
\xPDO\Cache\xPDOFileCache::__set_state(array(
'xpdo' => NULL,
'options' =>
array (
'cache_key' => 'auto_publish',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
),
'key' => 'auto_publish',
'initialized' => true,
)),
'resource' =>
\xPDO\Cache\xPDOFileCache::__set_state(array(
'xpdo' => NULL,
'options' =>
array (
'cache_key' => 'resource',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_format' => 0,
),
'key' => 'resource',
'initialized' => true,
)),
'lexicon_topics' =>
\xPDO\Cache\xPDOFileCache::__set_state(array(
'xpdo' => NULL,
'options' =>
array (
'cache_key' => 'lexicon_topics',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_format' => 0,
),
'key' => 'lexicon_topics',
'initialized' => true,
)),
),
'options' =>
array (
),
'_umask' => 18,
'modx' => NULL,
)),
'cachePath' => '/home4/silksto1/public_html/core/cache/',
'services' =>
\MODX\Revolution\Services\Container::__set_state(array(
'values' =>
array (
'config' =>
array (
'cache_key' => 'default',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_path' => '/home4/silksto1/public_html/core/cache/',
'table_prefix' => 'modx_',
'hydrate_fields' => true,
'hydrate_related_objects' => true,
'hydrate_adhoc_fields' => true,
'validator_class' => 'MODX\\Revolution\\Validation\\modValidator',
'validate_on_save' => true,
'cache_system_settings' => true,
'cache_system_settings_key' => 'system_settings',
'load_deprecated_global_class_aliases' => true,
'connections' =>
array (
0 =>
array (
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'username' => 'silksto1_ss_user',
'password' => '!Kx9TV5Gbwyp',
'options' =>
array (
'connection_mutable' => true,
),
'driverOptions' =>
array (
3 => 0,
),
),
),
),
'session_handler' =>
\MODX\Revolution\modSessionHandler::__set_state(array(
'modx' => NULL,
'gcMaxLifetime' => 604800,
'cacheLifetime' => false,
'session' =>
\MODX\Revolution\mysql\modSession::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modSession',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'MODX\\Revolution\\modSession',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_session`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => '7606105ab0812cdb1d3e71ebed2f048a',
'access' => 1776895884,
'data' => 'modx.user.0.resourceGroups|a:1:{s:2:"zh";a:0:{}}modx.user.0.attributes|a:1:{s:2:"zh";a:5:{s:32:"MODX\\Revolution\\modAccessContext";a:3:{s:2:"en";a:1:{i:0;a:3:{s:9:"principal";i:0;s:9:"authority";i:0;s:6:"policy";a:1:{s:4:"load";b:1;}}}s:3:"web";a:1:{i:0;a:3:{s:9:"principal";i:0;s:9:"authority";i:0;s:6:"policy";a:1:{s:4:"load";b:1;}}}s:2:"zh";a:1:{i:0;a:3:{s:9:"principal";i:0;s:9:"authority";i:0;s:6:"policy";a:1:{s:4:"load";b:1;}}}}s:38:"MODX\\Revolution\\modAccessResourceGroup";a:0:{}s:33:"MODX\\Revolution\\modAccessCategory";a:0:{}s:44:"MODX\\Revolution\\Sources\\modAccessMediaSource";a:0:{}s:34:"MODX\\Revolution\\modAccessNamespace";a:0:{}}}csrf_token|s:64:"21394c1d00a18d0263e811b7ef75f9a5acb8f1f981c15ae2bc237ca91f735dc1";modx.user.contextTokens|a:0:{}',
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'index' => 'pk',
'default' => '',
),
'access' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'attributes' => 'unsigned',
),
'data' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'string',
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
),
'_validator' =>
\MODX\Revolution\Validation\modValidator::__set_state(array(
'object' => NULL,
'results' =>
array (
'id' => true,
),
'messages' =>
array (
),
)),
'_validationRules' =>
array (
'id' =>
array (
'invalid' =>
array (
'type' => 'preg_match',
'rule' => '/^[0-9a-zA-Z,-]{22,191}$/',
'parameters' =>
array (
'message' => 'session_err_invalid_id',
),
),
),
),
'_validated' =>
array (
),
'_validationLoaded' => true,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
)),
'errorHandler' =>
\MODX\Revolution\Error\modErrorHandler::__set_state(array(
'modx' => NULL,
'stack' =>
array (
),
)),
'Psr\\Http\\Client\\ClientInterface' =>
\Closure::__set_state(array(
)),
'Psr\\Http\\Message\\ServerRequestFactoryInterface' =>
\Closure::__set_state(array(
)),
'Psr\\Http\\Message\\RequestFactoryInterface' =>
\Closure::__set_state(array(
)),
'Psr\\Http\\Message\\ResponseFactoryInterface' =>
\Closure::__set_state(array(
)),
'Psr\\Http\\Message\\StreamFactoryInterface' =>
\Closure::__set_state(array(
)),
'Psr\\Http\\Message\\UploadedFileFactoryInterface' =>
\Closure::__set_state(array(
)),
'Psr\\Http\\Message\\UriFactoryInterface' =>
\Closure::__set_state(array(
)),
'lexicon' =>
\MODX\Revolution\modLexicon::__set_state(array(
'modx' => NULL,
'config' =>
array (
),
'_lexicon' =>
array (
'zh' =>
array (
'breadcrumb_snippet_from_desc' => 'Resource ID of the first crumb.',
'breadcrumb_snippet_to_desc' => 'Resource ID of the last crumb.',
'breadcrumb_snippet_maxcrumbs_desc' => 'Max crumbs shown in breadcrumb',
'breadcrumb_snippet_showhidden_desc' => 'Show hidden resources in breadcrumb.',
'breadcrumb_snippet_showcontainer_desc' => 'Show container resources in breadcrumb.',
'breadcrumb_snippet_showunpub_desc' => 'Show unpublished resources in breadcrumb.',
'breadcrumb_snippet_showcurrentcrumb_desc' => 'Show current resource as a crumb.',
'breadcrumb_snippet_showbreadcrumbatHome_desc' => 'Show BreadCrumb on the home page.',
'breadcrumb_snippet_showhomecrumb_desc' => 'Show the home page as a crumb.',
'breadcrumb_snippet_useweblinkurl_desc' => 'Use the weblink url instead of the url to the weblink.',
'breadcrumb_snippet_direction_desc' => 'Direction or breadcrumb : Left To Right (ltr) or Right To Left (rtl) for Arabic language for example.',
'breadcrumb_snippet_scheme_desc' => 'URL Generation Scheme.',
'breadcrumb_snippet_containertpl_desc' => 'Container template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_homecrumbtpl_desc' => 'Home crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_currentcrumbtpl_desc' => 'Current crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_linkcrumbtpl_desc' => 'Default crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_categorycrumbtpl_desc' => 'Default category crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_maxcrumbtpl_desc' => 'Max delimiter crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
),
'en' =>
array (
'breadcrumb_snippet_from_desc' => 'Resource ID of the first crumb.',
'breadcrumb_snippet_to_desc' => 'Resource ID of the last crumb.',
'breadcrumb_snippet_maxcrumbs_desc' => 'Max crumbs shown in breadcrumb',
'breadcrumb_snippet_showhidden_desc' => 'Show hidden resources in breadcrumb.',
'breadcrumb_snippet_showcontainer_desc' => 'Show container resources in breadcrumb.',
'breadcrumb_snippet_showunpub_desc' => 'Show unpublished resources in breadcrumb.',
'breadcrumb_snippet_showcurrentcrumb_desc' => 'Show current resource as a crumb.',
'breadcrumb_snippet_showbreadcrumbatHome_desc' => 'Show BreadCrumb on the home page.',
'breadcrumb_snippet_showhomecrumb_desc' => 'Show the home page as a crumb.',
'breadcrumb_snippet_useweblinkurl_desc' => 'Use the weblink url instead of the url to the weblink.',
'breadcrumb_snippet_direction_desc' => 'Direction or breadcrumb : Left To Right (ltr) or Right To Left (rtl) for Arabic language for example.',
'breadcrumb_snippet_scheme_desc' => 'URL Generation Scheme.',
'breadcrumb_snippet_containertpl_desc' => 'Container template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_homecrumbtpl_desc' => 'Home crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_currentcrumbtpl_desc' => 'Current crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_linkcrumbtpl_desc' => 'Default crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_categorycrumbtpl_desc' => 'Default category crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_maxcrumbtpl_desc' => 'Max delimiter crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
),
),
'_paths' =>
array (
'core' => '/home4/silksto1/public_html/core/cache/lexicon/',
),
'_loadedTopics' =>
array (
0 => 'en:breadcrumb:properties',
1 => 'breadcrumb:properties',
),
)),
'registry' =>
\MODX\Revolution\Registry\modRegistry::__set_state(array(
'modx' => NULL,
'_options' =>
array (
),
'_invalidKeys' =>
array (
0 => 'modx',
),
'_registers' =>
array (
),
'_loggingRegister' => NULL,
'_prevLogTarget' => NULL,
'_prevLogLevel' => NULL,
)),
'MODX\\Revolution\\Formatter\\modManagerDateFormatter' =>
\Closure::__set_state(array(
)),
'parser' =>
\MODX\Revolution\modParser::__set_state(array(
'modx' => NULL,
'_processingTag' => false,
'_processingElement' => false,
'_processingUncacheable' => false,
'_removingUnprocessed' => false,
'_startedProcessingUncacheable' => true,
)),
),
'factories' =>
\SplObjectStorage::__set_state(array(
)),
'protected' =>
\SplObjectStorage::__set_state(array(
)),
'frozen' =>
array (
),
'raw' =>
array (
),
'keys' =>
array (
'config' => true,
'session_handler' => true,
'errorHandler' => true,
'Psr\\Http\\Client\\ClientInterface' => true,
'Psr\\Http\\Message\\ServerRequestFactoryInterface' => true,
'Psr\\Http\\Message\\RequestFactoryInterface' => true,
'Psr\\Http\\Message\\ResponseFactoryInterface' => true,
'Psr\\Http\\Message\\StreamFactoryInterface' => true,
'Psr\\Http\\Message\\UploadedFileFactoryInterface' => true,
'Psr\\Http\\Message\\UriFactoryInterface' => true,
'lexicon' => true,
'registry' => true,
'MODX\\Revolution\\Formatter\\modManagerDateFormatter' => true,
'parser' => true,
),
)),
'startTime' => 1776895884.94565105438232421875,
'executedQueries' => 17,
'queryTime' => 0.0016934871673583984375,
'classMap' =>
array (
'xPDO\\Om\\xPDOObject' =>
array (
0 => 'xPDO\\Om\\xPDOSimpleObject',
1 => 'MODX\\Revolution\\modAccessibleObject',
2 => 'MODX\\Revolution\\modActiveUser',
3 => 'MODX\\Revolution\\modCategoryClosure',
4 => 'MODX\\Revolution\\modContextSetting',
5 => 'MODX\\Revolution\\modContextResource',
6 => 'MODX\\Revolution\\modDashboardWidgetPlacement',
7 => 'MODX\\Revolution\\modElementPropertySet',
8 => 'MODX\\Revolution\\modEvent',
9 => 'MODX\\Revolution\\modFormCustomizationProfileUserGroup',
10 => 'MODX\\Revolution\\modPluginEvent',
11 => 'MODX\\Revolution\\modSession',
12 => 'MODX\\Revolution\\modSystemSetting',
13 => 'MODX\\Revolution\\modTemplateVarTemplate',
14 => 'MODX\\Revolution\\modUserGroupSetting',
15 => 'MODX\\Revolution\\modUserSetting',
16 => 'MODX\\Revolution\\Registry\\Db\\modDbRegisterMessage',
17 => 'MODX\\Revolution\\Sources\\modMediaSourceContext',
18 => 'MODX\\Revolution\\Sources\\modMediaSourceElement',
19 => 'MODX\\Revolution\\Transport\\modTransportPackage',
),
'xPDO\\Om\\xPDOSimpleObject' =>
array (
0 => 'MODX\\Revolution\\modAccess',
1 => 'MODX\\Revolution\\modAccessPolicy',
2 => 'MODX\\Revolution\\modAccessPolicyTemplate',
3 => 'MODX\\Revolution\\modAccessPolicyTemplateGroup',
4 => 'MODX\\Revolution\\modAccessPermission',
5 => 'MODX\\Revolution\\modActionField',
6 => 'MODX\\Revolution\\modContentType',
7 => 'MODX\\Revolution\\modDashboard',
8 => 'MODX\\Revolution\\modDashboardWidget',
9 => 'MODX\\Revolution\\modFormCustomizationProfile',
10 => 'MODX\\Revolution\\modFormCustomizationSet',
11 => 'MODX\\Revolution\\modLexiconEntry',
12 => 'MODX\\Revolution\\modManagerLog',
13 => 'MODX\\Revolution\\modExtensionPackage',
14 => 'MODX\\Revolution\\modPrincipal',
15 => 'MODX\\Revolution\\modPropertySet',
16 => 'MODX\\Revolution\\modResourceGroupResource',
17 => 'MODX\\Revolution\\modTemplateVarResource',
18 => 'MODX\\Revolution\\modTemplateVarResourceGroup',
19 => 'MODX\\Revolution\\modUserGroupMember',
20 => 'MODX\\Revolution\\modUserGroupRole',
21 => 'MODX\\Revolution\\modUserMessage',
22 => 'MODX\\Revolution\\modUserProfile',
23 => 'MODX\\Revolution\\modWorkspace',
24 => 'MODX\\Revolution\\modDeprecatedMethod',
25 => 'MODX\\Revolution\\modDeprecatedCall',
26 => 'MODX\\Revolution\\Registry\\Db\\modDbRegisterQueue',
27 => 'MODX\\Revolution\\Registry\\Db\\modDbRegisterTopic',
28 => 'MODX\\Revolution\\Transport\\modTransportProvider',
),
'MODX\\Revolution\\modAccess' =>
array (
0 => 'MODX\\Revolution\\modAccessActionDom',
1 => 'MODX\\Revolution\\modAccessCategory',
2 => 'MODX\\Revolution\\modAccessNamespace',
3 => 'MODX\\Revolution\\modAccessContext',
4 => 'MODX\\Revolution\\modAccessElement',
5 => 'MODX\\Revolution\\modAccessMenu',
6 => 'MODX\\Revolution\\modAccessResource',
7 => 'MODX\\Revolution\\modAccessResourceGroup',
8 => 'MODX\\Revolution\\Sources\\modAccessMediaSource',
),
'MODX\\Revolution\\modAccessElement' =>
array (
0 => 'MODX\\Revolution\\modAccessTemplateVar',
),
'MODX\\Revolution\\modAccessibleObject' =>
array (
0 => 'MODX\\Revolution\\modAccessibleSimpleObject',
1 => 'MODX\\Revolution\\modContext',
2 => 'MODX\\Revolution\\modMenu',
3 => 'MODX\\Revolution\\modNamespace',
),
'MODX\\Revolution\\modAccessibleSimpleObject' =>
array (
0 => 'MODX\\Revolution\\modActionDom',
1 => 'MODX\\Revolution\\modCategory',
2 => 'MODX\\Revolution\\modElement',
3 => 'MODX\\Revolution\\modResource',
4 => 'MODX\\Revolution\\modResourceGroup',
5 => 'MODX\\Revolution\\Sources\\modMediaSource',
),
'MODX\\Revolution\\modElement' =>
array (
0 => 'MODX\\Revolution\\modChunk',
1 => 'MODX\\Revolution\\modScript',
2 => 'MODX\\Revolution\\modTemplate',
3 => 'MODX\\Revolution\\modTemplateVar',
),
'MODX\\Revolution\\modResource' =>
array (
0 => 'MODX\\Revolution\\modDocument',
1 => 'MODX\\Revolution\\modStaticResource',
2 => 'MODX\\Revolution\\modSymLink',
3 => 'MODX\\Revolution\\modWebLink',
),
'MODX\\Revolution\\modScript' =>
array (
0 => 'MODX\\Revolution\\modPlugin',
1 => 'MODX\\Revolution\\modSnippet',
),
'MODX\\Revolution\\modPrincipal' =>
array (
0 => 'MODX\\Revolution\\modUser',
1 => 'MODX\\Revolution\\modUserGroup',
),
'MODX\\Revolution\\Sources\\modMediaSource' =>
array (
0 => 'MODX\\Revolution\\Sources\\modFileMediaSource',
1 => 'MODX\\Revolution\\Sources\\modS3MediaSource',
2 => 'MODX\\Revolution\\Sources\\modFTPMediaSource',
),
),
'connection' =>
\xPDO\xPDOConnection::__set_state(array(
'xpdo' => NULL,
'config' =>
array (
'cache_key' => 'default',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_path' => '/home4/silksto1/public_html/core/cache/',
'table_prefix' => 'modx_',
'hydrate_fields' => true,
'hydrate_related_objects' => true,
'hydrate_adhoc_fields' => true,
'validator_class' => 'MODX\\Revolution\\Validation\\modValidator',
'validate_on_save' => true,
'cache_system_settings' => true,
'cache_system_settings_key' => 'system_settings',
'load_deprecated_global_class_aliases' => true,
'connections' =>
array (
0 =>
array (
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'username' => 'silksto1_ss_user',
'password' => '!Kx9TV5Gbwyp',
'options' =>
array (
'connection_mutable' => true,
),
'driverOptions' =>
array (
3 => 0,
),
),
),
'connection_mutable' => true,
'dbtype' => 'mysql',
'host' => 'localhost',
'dbname' => 'silksto1_silkstory',
'charset' => 'utf8',
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'username' => 'silksto1_ss_user',
'password' => '!Kx9TV5Gbwyp',
'driverOptions' =>
array (
3 => 0,
),
),
'pdo' =>
\PDO::__set_state(array(
)),
'_mutable' => true,
)),
'_connections' =>
array (
0 =>
\xPDO\xPDOConnection::__set_state(array(
'xpdo' => NULL,
'config' =>
array (
'cache_key' => 'default',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_path' => '/home4/silksto1/public_html/core/cache/',
'table_prefix' => 'modx_',
'hydrate_fields' => true,
'hydrate_related_objects' => true,
'hydrate_adhoc_fields' => true,
'validator_class' => 'MODX\\Revolution\\Validation\\modValidator',
'validate_on_save' => true,
'cache_system_settings' => true,
'cache_system_settings_key' => 'system_settings',
'load_deprecated_global_class_aliases' => true,
'connections' =>
array (
0 =>
array (
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'username' => 'silksto1_ss_user',
'password' => '!Kx9TV5Gbwyp',
'options' =>
array (
'connection_mutable' => true,
),
'driverOptions' =>
array (
3 => 0,
),
),
),
'connection_mutable' => true,
'dbtype' => 'mysql',
'host' => 'localhost',
'dbname' => 'silksto1_silkstory',
'charset' => 'utf8',
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'username' => 'silksto1_ss_user',
'password' => '!Kx9TV5Gbwyp',
'driverOptions' =>
array (
3 => 0,
),
),
'pdo' =>
\PDO::__set_state(array(
)),
'_mutable' => true,
)),
),
'logLevel' => 1,
'logTarget' =>
array (
'target' => 'FILE',
'options' =>
array (
'filename' => 'error.log',
),
),
'_debug' => false,
'_cacheEnabled' => true,
'_escapeCharOpen' => '`',
'_escapeCharClose' => '`',
'_quoteChar' => '\'',
'context' =>
\MODX\Revolution\mysql\modContext::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modContext',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'MODX\\Revolution\\modContext',
'_pk' => NULL,
'_pktype' => NULL,
'_table' => '`modx_context`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'key' => 'key',
'name' => 'name',
'description' => 'description',
'rank' => 'rank',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'key' => 'zh',
'name' => NULL,
'description' => NULL,
'rank' => 0,
),
'_fieldMeta' =>
array (
'key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'index' => 'pk',
),
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'index' => 'index',
),
'description' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
),
'rank' =>
array (
'dbtype' => 'int',
'precision' => '11',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
),
'_composites' =>
array (
'ContextResources' =>
array (
'class' => 'MODX\\Revolution\\modContextResource',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'ContextSettings' =>
array (
'class' => 'MODX\\Revolution\\modContextSetting',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'SourceElements' =>
array (
'class' => 'MODX\\Revolution\\Sources\\modMediaSourceElement',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'Acls' =>
array (
'class' => 'MODX\\Revolution\\modAccessContext',
'local' => 'key',
'foreign' => 'target',
'owner' => 'local',
'cardinality' => 'many',
),
),
'_relatedObjects' =>
array (
'ContextResources' =>
array (
),
'ContextSettings' =>
array (
),
'SourceElements' =>
array (
),
'Acls' =>
array (
),
),
'_validator' =>
\MODX\Revolution\Validation\modValidator::__set_state(array(
'object' => NULL,
'results' =>
array (
'key' => true,
),
'messages' =>
array (
),
)),
'_validationRules' =>
array (
'key' =>
array (
'key' =>
array (
'type' => 'preg_match',
'rule' => '/^[a-zA-Z\\x7f-\\xff][a-zA-Z0-9\\x2d-\\x2f\\x7f-\\xff]*$/',
'parameters' =>
array (
'message' => 'context_err_ns_key',
),
),
),
),
'_validated' =>
array (
'key' => 'key',
),
'_validationLoaded' => true,
'_new' => true,
'_cacheFlag' => true,
'_options' =>
array (
),
'_policies' =>
array (
'MODX\\Revolution\\modAccessContext' =>
array (
'zh' =>
array (
0 =>
array (
'principal' => 0,
'authority' => 9999,
'policy' =>
array (
'load' => true,
),
),
1 =>
array (
'principal' => 1,
'authority' => 9999,
'policy' =>
array (
'load' => true,
'list' => true,
'view' => true,
'save' => true,
'remove' => true,
'copy' => true,
'view_unpublished' => true,
),
),
),
),
'zh' =>
array (
'MODX\\Revolution\\modAccessContext' =>
array (
'zh' =>
array (
0 =>
array (
'principal' => 0,
'authority' => 9999,
'policy' =>
array (
'load' => true,
),
),
1 =>
array (
'principal' => 1,
'authority' => 9999,
'policy' =>
array (
'load' => true,
'list' => true,
'view' => true,
'save' => true,
'remove' => true,
'copy' => true,
'view_unpublished' => true,
),
),
),
),
),
),
'config' =>
array (
'base_url' => '/zh/',
'cultureKey' => 'zh',
'site_start' => '10',
'site_url' => 'https://www.silkstory.net/zh/',
),
'aliasMap' =>
array (
'home' => 10,
'bushou' => 11,
'ziyuan' => 12,
'story-of-chinese-character' => 14,
'radical-info' => 15,
'all-characters' => 16,
),
'resourceMap' =>
array (
0 =>
array (
0 => 10,
1 => 11,
2 => 12,
3 => 14,
4 => 15,
5 => 16,
),
),
'webLinkMap' =>
array (
),
'eventMap' =>
array (
'OnContextRemove' =>
array (
1 => '1',
),
'OnContextSave' =>
array (
1 => '1',
),
'OnDocFormPrerender' =>
array (
1 => '1',
),
'OnDocFormSave' =>
array (
1 => '1',
),
'OnEmptyTrash' =>
array (
1 => '1',
),
'OnHandleRequest' =>
array (
2 => '2',
),
'OnResourceDuplicate' =>
array (
1 => '1',
),
'OnResourceSort' =>
array (
1 => '1',
),
'OnSiteRefresh' =>
array (
1 => '1',
),
),
'pluginCache' =>
array (
1 =>
array (
'id' => 1,
'source' => 0,
'property_preprocess' => 0,
'name' => 'Babel',
'description' => 'Links and synchronizes multilingual resources.',
'editor_type' => 0,
'category' => 1,
'cache_type' => 0,
'plugincode' => '/**
* Babel Plugin
*
* @package babel
* @subpackage plugin
*
* @var modX $modx
* @var array $scriptProperties
*/
$className = \'mikrobi\\Babel\\Plugins\\Events\\\\\' . $modx->event->name;
$corePath = $modx->getOption(\'babel.core_path\', null, $modx->getOption(\'core_path\') . \'components/babel/\');
/** @var Babel $babel */
$babel = $modx->getService(\'babel\', Babel::class, $corePath . \'model/babel/\', [
\'core_path\' => $corePath
]);
if ($babel) {
if (class_exists($className)) {
$handler = new $className($modx, $scriptProperties);
if (get_class($handler) == $className) {
$handler->run();
} else {
$modx->log(xPDO::LOG_LEVEL_ERROR, $className . \' could not be initialized!\', \'\', \'Babel Plugin\');
}
} else {
$modx->log(xPDO::LOG_LEVEL_ERROR, $className . \' was not found!\', \'\', \'Babel Plugin\');
}
}
return;',
'locked' => 0,
'properties' => 'a:0:{}',
'disabled' => 0,
'moduleguid' => '',
'static' => 0,
'static_file' => '',
),
2 =>
array (
'id' => 2,
'source' => 1,
'property_preprocess' => 0,
'name' => 'gatewaySwitch',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'plugincode' => 'if ($modx->context->get(\'key\') != "mgr") {
switch ($_REQUEST[\'cultureKey\']) {
case \'en\':
$modx->switchContext(\'en\');
break;
case \'zh\':
$modx->switchContext(\'zh\');
break;
default:
$modx->switchContext(\'web\');
break;
}
unset($_GET[\'cultureKey\']);
}',
'locked' => 0,
'properties' => 'a:0:{}',
'disabled' => 0,
'moduleguid' => '',
'static' => 0,
'static_file' => '',
),
),
'_cacheKey' => 'zh/context',
)),
'contexts' =>
array (
'web' =>
\MODX\Revolution\mysql\modContext::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modContext',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'MODX\\Revolution\\modContext',
'_pk' => NULL,
'_pktype' => NULL,
'_table' => '`modx_context`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'key' => 'key',
'name' => 'name',
'description' => 'description',
'rank' => 'rank',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'key' => 'web',
'name' => NULL,
'description' => NULL,
'rank' => 0,
),
'_fieldMeta' =>
array (
'key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'index' => 'pk',
),
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'index' => 'index',
),
'description' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
),
'rank' =>
array (
'dbtype' => 'int',
'precision' => '11',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
),
'_composites' =>
array (
'ContextResources' =>
array (
'class' => 'MODX\\Revolution\\modContextResource',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'ContextSettings' =>
array (
'class' => 'MODX\\Revolution\\modContextSetting',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'SourceElements' =>
array (
'class' => 'MODX\\Revolution\\Sources\\modMediaSourceElement',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'Acls' =>
array (
'class' => 'MODX\\Revolution\\modAccessContext',
'local' => 'key',
'foreign' => 'target',
'owner' => 'local',
'cardinality' => 'many',
),
),
'_relatedObjects' =>
array (
'ContextResources' =>
array (
),
'ContextSettings' =>
array (
),
'SourceElements' =>
array (
),
'Acls' =>
array (
),
),
'_validator' =>
\MODX\Revolution\Validation\modValidator::__set_state(array(
'object' => NULL,
'results' =>
array (
'key' => true,
),
'messages' =>
array (
),
)),
'_validationRules' =>
array (
'key' =>
array (
'key' =>
array (
'type' => 'preg_match',
'rule' => '/^[a-zA-Z\\x7f-\\xff][a-zA-Z0-9\\x2d-\\x2f\\x7f-\\xff]*$/',
'parameters' =>
array (
'message' => 'context_err_ns_key',
),
),
),
),
'_validated' =>
array (
'key' => 'key',
),
'_validationLoaded' => true,
'_new' => true,
'_cacheFlag' => true,
'_options' =>
array (
),
'_policies' =>
array (
'MODX\\Revolution\\modAccessContext' =>
array (
'web' =>
array (
0 =>
array (
'principal' => 0,
'authority' => 9999,
'policy' =>
array (
'load' => true,
),
),
1 =>
array (
'principal' => 1,
'authority' => 0,
'policy' =>
array (
'about' => true,
'access_permissions' => true,
'actions' => true,
'change_password' => true,
'change_profile' => true,
'charsets' => true,
'class_map' => true,
'components' => true,
'content_types' => true,
'countries' => true,
'create' => true,
'credits' => true,
'customize_forms' => true,
'dashboards' => true,
'database' => true,
'database_truncate' => true,
'delete_category' => true,
'delete_chunk' => true,
'delete_context' => true,
'delete_document' => true,
'delete_eventlog' => true,
'delete_plugin' => true,
'delete_propertyset' => true,
'delete_role' => true,
'delete_snippet' => true,
'delete_static_resource' => true,
'delete_symlink' => true,
'delete_template' => true,
'delete_tv' => true,
'delete_user' => true,
'delete_weblink' => true,
'directory_chmod' => true,
'directory_create' => true,
'directory_list' => true,
'directory_remove' => true,
'directory_update' => true,
'edit_category' => true,
'edit_chunk' => true,
'edit_context' => true,
'edit_document' => true,
'edit_locked' => true,
'edit_plugin' => true,
'edit_propertyset' => true,
'edit_role' => true,
'edit_snippet' => true,
'edit_static_resource' => true,
'edit_symlink' => true,
'edit_template' => true,
'edit_tv' => true,
'edit_user' => true,
'edit_weblink' => true,
'element_tree' => true,
'empty_cache' => true,
'error_log_erase' => true,
'error_log_view' => true,
'events' => true,
'export_static' => true,
'file_create' => true,
'file_list' => true,
'file_manager' => true,
'file_remove' => true,
'file_tree' => true,
'file_unpack' => true,
'file_update' => true,
'file_upload' => true,
'file_view' => true,
'flush_sessions' => true,
'frames' => true,
'help' => true,
'home' => true,
'language' => true,
'languages' => true,
'lexicons' => true,
'list' => true,
'load' => true,
'logout' => true,
'mgr_log_view' => true,
'mgr_log_erase' => true,
'menu_reports' => true,
'menu_security' => true,
'menu_site' => true,
'menu_support' => true,
'menu_system' => true,
'menu_tools' => true,
'menu_trash' => true,
'menu_user' => true,
'menus' => true,
'messages' => true,
'namespaces' => true,
'new_category' => true,
'new_chunk' => true,
'new_context' => true,
'new_document' => true,
'new_document_in_root' => true,
'new_plugin' => true,
'new_propertyset' => true,
'new_role' => true,
'new_snippet' => true,
'new_static_resource' => true,
'new_symlink' => true,
'new_template' => true,
'new_tv' => true,
'new_user' => true,
'new_weblink' => true,
'packages' => true,
'policy_delete' => true,
'policy_edit' => true,
'policy_new' => true,
'policy_save' => true,
'policy_template_delete' => true,
'policy_template_edit' => true,
'policy_template_new' => true,
'policy_template_save' => true,
'policy_template_view' => true,
'policy_view' => true,
'property_sets' => true,
'providers' => true,
'publish_document' => true,
'purge_deleted' => true,
'remove' => true,
'remove_locks' => true,
'resource_duplicate' => true,
'resource_quick_create' => true,
'resource_quick_update' => true,
'resource_tree' => true,
'resourcegroup_delete' => true,
'resourcegroup_edit' => true,
'resourcegroup_new' => true,
'resourcegroup_resource_edit' => true,
'resourcegroup_resource_list' => true,
'resourcegroup_save' => true,
'resourcegroup_view' => true,
'save' => true,
'save_category' => true,
'save_chunk' => true,
'save_context' => true,
'save_document' => true,
'save_plugin' => true,
'save_propertyset' => true,
'save_role' => true,
'save_snippet' => true,
'save_template' => true,
'save_tv' => true,
'save_user' => true,
'search' => true,
'set_sudo' => true,
'settings' => true,
'source_delete' => true,
'source_edit' => true,
'source_save' => true,
'source_view' => true,
'sources' => true,
'steal_locks' => true,
'tree_show_element_ids' => true,
'tree_show_resource_ids' => true,
'undelete_document' => true,
'unlock_element_properties' => true,
'unpublish_document' => true,
'usergroup_delete' => true,
'usergroup_edit' => true,
'usergroup_new' => true,
'usergroup_save' => true,
'usergroup_user_edit' => true,
'usergroup_user_list' => true,
'usergroup_view' => true,
'view' => true,
'view_category' => true,
'view_chunk' => true,
'view_context' => true,
'view_document' => true,
'view_element' => true,
'view_eventlog' => true,
'view_offline' => true,
'view_plugin' => true,
'view_propertyset' => true,
'view_role' => true,
'view_snippet' => true,
'view_sysinfo' => true,
'view_template' => true,
'view_tv' => true,
'view_unpublished' => true,
'view_user' => true,
'workspaces' => true,
),
),
),
),
),
'config' =>
array (
),
'aliasMap' =>
array (
'index' => 1,
),
'resourceMap' =>
array (
0 =>
array (
0 => 1,
),
),
'webLinkMap' =>
array (
),
'eventMap' =>
array (
'OnContextRemove' =>
array (
1 => '1',
),
'OnContextSave' =>
array (
1 => '1',
),
'OnDocFormPrerender' =>
array (
1 => '1',
),
'OnDocFormSave' =>
array (
1 => '1',
),
'OnEmptyTrash' =>
array (
1 => '1',
),
'OnHandleRequest' =>
array (
2 => '2',
),
'OnResourceDuplicate' =>
array (
1 => '1',
),
'OnResourceSort' =>
array (
1 => '1',
),
'OnSiteRefresh' =>
array (
1 => '1',
),
),
'pluginCache' =>
array (
1 =>
array (
'id' => 1,
'source' => 0,
'property_preprocess' => 0,
'name' => 'Babel',
'description' => 'Links and synchronizes multilingual resources.',
'editor_type' => 0,
'category' => 1,
'cache_type' => 0,
'plugincode' => '/**
* Babel Plugin
*
* @package babel
* @subpackage plugin
*
* @var modX $modx
* @var array $scriptProperties
*/
$className = \'mikrobi\\Babel\\Plugins\\Events\\\\\' . $modx->event->name;
$corePath = $modx->getOption(\'babel.core_path\', null, $modx->getOption(\'core_path\') . \'components/babel/\');
/** @var Babel $babel */
$babel = $modx->getService(\'babel\', Babel::class, $corePath . \'model/babel/\', [
\'core_path\' => $corePath
]);
if ($babel) {
if (class_exists($className)) {
$handler = new $className($modx, $scriptProperties);
if (get_class($handler) == $className) {
$handler->run();
} else {
$modx->log(xPDO::LOG_LEVEL_ERROR, $className . \' could not be initialized!\', \'\', \'Babel Plugin\');
}
} else {
$modx->log(xPDO::LOG_LEVEL_ERROR, $className . \' was not found!\', \'\', \'Babel Plugin\');
}
}
return;',
'locked' => 0,
'properties' => 'a:0:{}',
'disabled' => 0,
'moduleguid' => '',
'static' => 0,
'static_file' => '',
),
2 =>
array (
'id' => 2,
'source' => 1,
'property_preprocess' => 0,
'name' => 'gatewaySwitch',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'plugincode' => 'if ($modx->context->get(\'key\') != "mgr") {
switch ($_REQUEST[\'cultureKey\']) {
case \'en\':
$modx->switchContext(\'en\');
break;
case \'zh\':
$modx->switchContext(\'zh\');
break;
default:
$modx->switchContext(\'web\');
break;
}
unset($_GET[\'cultureKey\']);
}',
'locked' => 0,
'properties' => 'a:0:{}',
'disabled' => 0,
'moduleguid' => '',
'static' => 0,
'static_file' => '',
),
),
'_cacheKey' => 'web/context',
)),
'zh' =>
\MODX\Revolution\mysql\modContext::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modContext',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'MODX\\Revolution\\modContext',
'_pk' => NULL,
'_pktype' => NULL,
'_table' => '`modx_context`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'key' => 'key',
'name' => 'name',
'description' => 'description',
'rank' => 'rank',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'key' => 'zh',
'name' => NULL,
'description' => NULL,
'rank' => 0,
),
'_fieldMeta' =>
array (
'key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'index' => 'pk',
),
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'index' => 'index',
),
'description' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
),
'rank' =>
array (
'dbtype' => 'int',
'precision' => '11',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
),
'_composites' =>
array (
'ContextResources' =>
array (
'class' => 'MODX\\Revolution\\modContextResource',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'ContextSettings' =>
array (
'class' => 'MODX\\Revolution\\modContextSetting',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'SourceElements' =>
array (
'class' => 'MODX\\Revolution\\Sources\\modMediaSourceElement',
'local' => 'key',
'foreign' => 'context_key',
'cardinality' => 'many',
'owner' => 'local',
),
'Acls' =>
array (
'class' => 'MODX\\Revolution\\modAccessContext',
'local' => 'key',
'foreign' => 'target',
'owner' => 'local',
'cardinality' => 'many',
),
),
'_relatedObjects' =>
array (
'ContextResources' =>
array (
),
'ContextSettings' =>
array (
),
'SourceElements' =>
array (
),
'Acls' =>
array (
),
),
'_validator' =>
\MODX\Revolution\Validation\modValidator::__set_state(array(
'object' => NULL,
'results' =>
array (
'key' => true,
),
'messages' =>
array (
),
)),
'_validationRules' =>
array (
'key' =>
array (
'key' =>
array (
'type' => 'preg_match',
'rule' => '/^[a-zA-Z\\x7f-\\xff][a-zA-Z0-9\\x2d-\\x2f\\x7f-\\xff]*$/',
'parameters' =>
array (
'message' => 'context_err_ns_key',
),
),
),
),
'_validated' =>
array (
'key' => 'key',
),
'_validationLoaded' => true,
'_new' => true,
'_cacheFlag' => true,
'_options' =>
array (
),
'_policies' =>
array (
'MODX\\Revolution\\modAccessContext' =>
array (
'zh' =>
array (
0 =>
array (
'principal' => 0,
'authority' => 9999,
'policy' =>
array (
'load' => true,
),
),
1 =>
array (
'principal' => 1,
'authority' => 9999,
'policy' =>
array (
'load' => true,
'list' => true,
'view' => true,
'save' => true,
'remove' => true,
'copy' => true,
'view_unpublished' => true,
),
),
),
),
'zh' =>
array (
'MODX\\Revolution\\modAccessContext' =>
array (
'zh' =>
array (
0 =>
array (
'principal' => 0,
'authority' => 9999,
'policy' =>
array (
'load' => true,
),
),
1 =>
array (
'principal' => 1,
'authority' => 9999,
'policy' =>
array (
'load' => true,
'list' => true,
'view' => true,
'save' => true,
'remove' => true,
'copy' => true,
'view_unpublished' => true,
),
),
),
),
),
),
'config' =>
array (
'base_url' => '/zh/',
'cultureKey' => 'zh',
'site_start' => '10',
'site_url' => 'https://www.silkstory.net/zh/',
),
'aliasMap' =>
array (
'home' => 10,
'bushou' => 11,
'ziyuan' => 12,
'story-of-chinese-character' => 14,
'radical-info' => 15,
'all-characters' => 16,
),
'resourceMap' =>
array (
0 =>
array (
0 => 10,
1 => 11,
2 => 12,
3 => 14,
4 => 15,
5 => 16,
),
),
'webLinkMap' =>
array (
),
'eventMap' =>
array (
'OnContextRemove' =>
array (
1 => '1',
),
'OnContextSave' =>
array (
1 => '1',
),
'OnDocFormPrerender' =>
array (
1 => '1',
),
'OnDocFormSave' =>
array (
1 => '1',
),
'OnEmptyTrash' =>
array (
1 => '1',
),
'OnHandleRequest' =>
array (
2 => '2',
),
'OnResourceDuplicate' =>
array (
1 => '1',
),
'OnResourceSort' =>
array (
1 => '1',
),
'OnSiteRefresh' =>
array (
1 => '1',
),
),
'pluginCache' =>
array (
1 =>
array (
'id' => 1,
'source' => 0,
'property_preprocess' => 0,
'name' => 'Babel',
'description' => 'Links and synchronizes multilingual resources.',
'editor_type' => 0,
'category' => 1,
'cache_type' => 0,
'plugincode' => '/**
* Babel Plugin
*
* @package babel
* @subpackage plugin
*
* @var modX $modx
* @var array $scriptProperties
*/
$className = \'mikrobi\\Babel\\Plugins\\Events\\\\\' . $modx->event->name;
$corePath = $modx->getOption(\'babel.core_path\', null, $modx->getOption(\'core_path\') . \'components/babel/\');
/** @var Babel $babel */
$babel = $modx->getService(\'babel\', Babel::class, $corePath . \'model/babel/\', [
\'core_path\' => $corePath
]);
if ($babel) {
if (class_exists($className)) {
$handler = new $className($modx, $scriptProperties);
if (get_class($handler) == $className) {
$handler->run();
} else {
$modx->log(xPDO::LOG_LEVEL_ERROR, $className . \' could not be initialized!\', \'\', \'Babel Plugin\');
}
} else {
$modx->log(xPDO::LOG_LEVEL_ERROR, $className . \' was not found!\', \'\', \'Babel Plugin\');
}
}
return;',
'locked' => 0,
'properties' => 'a:0:{}',
'disabled' => 0,
'moduleguid' => '',
'static' => 0,
'static_file' => '',
),
2 =>
array (
'id' => 2,
'source' => 1,
'property_preprocess' => 0,
'name' => 'gatewaySwitch',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'plugincode' => 'if ($modx->context->get(\'key\') != "mgr") {
switch ($_REQUEST[\'cultureKey\']) {
case \'en\':
$modx->switchContext(\'en\');
break;
case \'zh\':
$modx->switchContext(\'zh\');
break;
default:
$modx->switchContext(\'web\');
break;
}
unset($_GET[\'cultureKey\']);
}',
'locked' => 0,
'properties' => 'a:0:{}',
'disabled' => 0,
'moduleguid' => '',
'static' => 0,
'static_file' => '',
),
),
'_cacheKey' => 'zh/context',
)),
),
'request' =>
\MODX\Revolution\modRequest::__set_state(array(
'modx' => NULL,
'method' => NULL,
'parameters' =>
array (
'GET' =>
array (
'q' => 'story-of-chinese-character',
'characterId' => '1311',
),
'POST' =>
array (
),
'COOKIE' =>
array (
'PHPSESSID' => '7606105ab0812cdb1d3e71ebed2f048a',
),
'REQUEST' =>
array (
'cultureKey' => 'zh',
'q' => 'story-of-chinese-character',
'characterId' => '1311',
),
),
'headers' => NULL,
)),
'response' =>
\MODX\Revolution\modResponse::__set_state(array(
'modx' => NULL,
'header' => NULL,
'body' => NULL,
'contentType' =>
\MODX\Revolution\mysql\modContentType::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modContentType',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'ContentType',
'_pk' => NULL,
'_pktype' => NULL,
'_table' => '`modx_content_type`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'id' => 'id',
'name' => 'name',
'description' => 'description',
'mime_type' => 'mime_type',
'file_extensions' => 'file_extensions',
'icon' => 'icon',
'headers' => 'headers',
'binary' => 'binary',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 1,
'name' => 'HTML',
'description' => 'HTML content',
'mime_type' => 'text/html',
'file_extensions' => '',
'icon' => '',
'headers' => NULL,
'binary' => 0,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'index' => 'unique',
),
'description' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
'null' => true,
),
'mime_type' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
),
'file_extensions' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
),
'icon' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
'null' => true,
),
'headers' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'array',
),
'binary' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Resources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'content_type',
'owner' => 'local',
'cardinality' => 'many',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Resources' =>
array (
),
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => true,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
)),
'parser' =>
\MODX\Revolution\modParser::__set_state(array(
'modx' => NULL,
'_processingTag' => false,
'_processingElement' => false,
'_processingUncacheable' => false,
'_removingUnprocessed' => false,
'_startedProcessingUncacheable' => true,
)),
'resourceListing' => NULL,
'resourceMap' =>
array (
0 =>
array (
0 => 10,
1 => 11,
2 => 12,
3 => 14,
4 => 15,
5 => 16,
),
),
'aliasMap' =>
array (
'home' => 10,
'bushou' => 11,
'ziyuan' => 12,
'story-of-chinese-character' => 14,
'radical-info' => 15,
'all-characters' => 16,
),
'event' =>
\MODX\Revolution\modSystemEvent::__set_state(array(
'name' => 'OnHandleRequest',
'activePlugin' => '',
'plugin' => NULL,
'propertySet' => '',
'_propagate' => true,
'_output' => '',
'activated' => true,
'returnedValues' => NULL,
)),
'eventMap' =>
array (
'OnContextRemove' =>
array (
1 => '1',
),
'OnContextSave' =>
array (
1 => '1',
),
'OnDocFormPrerender' =>
array (
1 => '1',
),
'OnDocFormSave' =>
array (
1 => '1',
),
'OnEmptyTrash' =>
array (
1 => '1',
),
'OnHandleRequest' =>
array (
2 => '2',
),
'OnResourceDuplicate' =>
array (
1 => '1',
),
'OnResourceSort' =>
array (
1 => '1',
),
'OnSiteRefresh' =>
array (
1 => '1',
),
),
'elementCache' =>
array (
'[[$googleAnalytics]]' => '<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-79W9MR2WZM"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(\'js\', new Date());
gtag(\'config\', \'G-79W9MR2WZM\');
</script>',
'[[*longtitle]]' => '漢字的故事',
'[[*description]]' => '',
'[[*introtext]]' => '',
'[[*ExtraHeadScripts]]' => '',
'[[*bodyId]]' => '',
'[[*bodyClass]]' => '',
'[[$shareThis]]' => '<script type=\'text/javascript\' src=\'https://platform-api.sharethis.com/js/sharethis.js#property=5e805c309f548d001a3832ba&product=sop\' async=\'async\'></script>',
'[[Wayfinder? &startId=`0`&level=`1`&outerTpl=`menuOuterTpl`&rowTpl=`menuRowTpl`]]' => '<ul class="nav navbar-nav "><li class="nav-item"><a class="nav-link first" href="https://www.silkstory.net/zh/">主頁</a></li>
<li class="nav-item"><a class="nav-link " href="bushou">康熙部首</a></li>
<li class="nav-item"><a class="nav-link " href="ziyuan">字源分類</a></li>
<li class="nav-item"><a class="nav-link last" href="all-characters">查看全部</a></li>
<li class="nav-item"><a class="nav-link search" href="#" data-bs-target="#search" data-bs-toggle="modal"><i class="bi bi-search search"></i></a></li></ul>',
'[[*showBreadcrumbs]]' => '1',
'[[$breadcrumbs]]' => '<div class="container">
<div class="row">
<div class="col-md-12 pt-3">[[!BreadCrumb? &containerTpl=`BreadCrumbContainerTpl` &homeCrumbTpl=`myLinkCrumbTpl` &linkCrumbTpl=`myLinkCrumbTpl` ¤tCrumbTpl=`myCurrentCrumbTpl` &showHidden=`1` &showHomeCrumb=`1`]]</div>
</div>
</div>',
'[[$top]]' => '<!DOCTYPE html>
<html lang="[[!GetCurrentLanguage]]">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-79W9MR2WZM"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(\'js\', new Date());
gtag(\'config\', \'G-79W9MR2WZM\');
</script>[[!GetOgTags]]
<base href="https://www.silkstory.net/zh/">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>SilkStory - 漢字的故事</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta property="og:title" content="SilkStory - 漢字的故事">
<meta property="og:description" content="">
<meta property="og:image" content="">
<link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/assets/css/styles.css?v=3">
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8212661150885235" crossorigin="anonymous"></script>
</head>
<body id="" class="">
<script type=\'text/javascript\' src=\'https://platform-api.sharethis.com/js/sharethis.js#property=5e805c309f548d001a3832ba&product=sop\' async=\'async\'></script>
<header>
<section class="navbar2">
<div class="container d-xxl-flex justify-content-xxl-end">
<div class="d-flex d-sm-flex d-md-flex justify-content-end sec-nav">[[!LanguageSwitcher]]</div>
</div>
</section>
<nav class="navbar navbar-light navbar-expand-md">
<div class="container">
<a class="navbar-brand" href="/[[!GetCurrentLanguage]]">
<span class="en">SilkStory</span>
<span class="zh">
絲傳
</span>
</a>
<a
class="nav-link search d-block d-sm-none"
href="#"
data-bs-target="#search"
data-bs-toggle="modal"
style="margin-left: auto;padding-right: 20px; font-size:26px;"
>
<i class="bi bi-search search"></i>
</a>
<button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navcol-1">
<span class="visually-hidden">
Toggle
navigation
</span>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse d-md-flex d-xxl-flex justify-content-md-end" id="navcol-1">
<ul class="nav navbar-nav "><li class="nav-item"><a class="nav-link first" href="https://www.silkstory.net/zh/">主頁</a></li>
<li class="nav-item"><a class="nav-link " href="bushou">康熙部首</a></li>
<li class="nav-item"><a class="nav-link " href="ziyuan">字源分類</a></li>
<li class="nav-item"><a class="nav-link last" href="all-characters">查看全部</a></li>
<li class="nav-item"><a class="nav-link search" href="#" data-bs-target="#search" data-bs-toggle="modal"><i class="bi bi-search search"></i></a></li></ul>
</div>
</div>
</nav>
</header>
<main>
[[!If? &subject=`1` &operator=`EQ` &operand=`1` &then=`<div class="container">
<div class="row">
<div class="col-md-12 pt-3">[[!BreadCrumb? &containerTpl=`BreadCrumbContainerTpl` &homeCrumbTpl=`myLinkCrumbTpl` &linkCrumbTpl=`myLinkCrumbTpl` ¤tCrumbTpl=`myCurrentCrumbTpl` &showHidden=`1` &showHomeCrumb=`1`]]</div>
</div>
</div>`]]
',
'[[*BeforeBodyScripts]]' => '',
'[[$bottom]]' => '</main>[[!searchBox]]
<footer class="text-center py-4">
<div class="container">
<div class="row">
<div class="col d-xxl-flex justify-content-xxl-start">
<p class="text-muted my-2">Copyright © [[!GetYear]] SilkStory</p>
</div>
<div class="col d-flex justify-content-end social-icons">
<ul class="list-inline my-2">
<li class="list-inline-item me-4">Follow Us</li>
<li class="list-inline-item me-4"><a href="https://www.facebook.com/meizai.chou" target="_blank"><i class="bi bi-facebook"></i></a></li>
<li class="list-inline-item me-4"><a href="https://www.youtube.com/user/choumeizai" target="_blank"><i class="bi bi-youtube"></i></li>
<li class="list-inline-item me-4"><a href="mailto:info@smallboy.net" target="_blank"><i class="bi bi-envelope"></i></li>
</ul>
</div>
</div>
</div>
</footer>
<script src=" https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</body>',
),
'placeholders' =>
array (
'modx.user.id' => 0,
'modx.user.username' => '(anonymous)',
'+access_category_enabled' => '1',
'+access_context_enabled' => '1',
'+access_policies_version' => '1.0',
'+access_resource_group_enabled' => '1',
'+allow_forward_across_contexts' => '',
'+allow_manager_login_forgot_password' => '1',
'+allow_multiple_emails' => '1',
'+allow_tags_in_post' => '',
'+anonymous_sessions' => '1',
'+archive_with' => '',
'+assets_path' => '/home4/silksto1/public_html/assets/',
'+assets_url' => '/assets/',
'+auto_check_pkg_updates' => '1',
'+auto_check_pkg_updates_cache_expire' => '15',
'+auto_isfolder' => '1',
'+auto_menuindex' => '1',
'+automatic_alias' => '1',
'+automatic_template_assignment' => 'sibling',
'+babel.babelTvName' => 'babelLanguageLinks',
'+babel.contextKeys' => 'web,en,zh',
'+babel.debug' => '0',
'+babel.displayChunk' => 'tplBabelContextMenu',
'+babel.displayText' => 'language',
'+babel.restrictToGroup' => '1',
'+babel.syncFields' => '',
'+babel.syncTvs' => '',
'+base_help_url' => '//docs.modx.com/help/',
'+base_path' => '/home4/silksto1/public_html/',
'+base_url' => '/zh/',
'+blocked_minutes' => '60',
'+cache_alias_map' => '1',
'+cache_context_settings' => '1',
'+cache_db' => '',
'+cache_db_expires' => '0',
'+cache_db_session' => '',
'+cache_db_session_lifetime' => '',
'+cache_default' => '1',
'+cache_expires' => '0',
'+cache_format' => '0',
'+cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'+cache_key' => 'default',
'+cache_lang_js' => '1',
'+cache_lexicon_topics' => '1',
'+cache_noncore_lexicon_topics' => '1',
'+cache_resource' => '1',
'+cache_resource_clear_partial' => '',
'+cache_resource_expires' => '0',
'+cache_scripts' => '1',
'+cache_system_settings' => true,
'+cache_system_settings_key' => 'system_settings',
'+charset' => 'utf8',
'+clear_cache_refresh_trees' => '',
'+compress_css' => '1',
'+compress_js' => '1',
'+confirm_navigation' => '1',
'+connector_url' => '/connectors/index.php',
'+connectors_url' => '/connectors/',
'+container_suffix' => '/',
'+context_tree_sort' => '1',
'+context_tree_sortby' => 'rank',
'+context_tree_sortdir' => 'ASC',
'+core_path' => '/home4/silksto1/public_html/core/',
'+cultureKey' => 'zh',
'+date_timezone' => '',
'+dbtype' => 'mysql',
'+debug' => '',
'+default_content_type' => '1',
'+default_context' => 'web',
'+default_duplicate_publish_option' => 'preserve',
'+default_media_source' => '1',
'+default_media_source_type' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'+default_per_page' => '20',
'+default_template' => '2',
'+default_username' => '(anonymous)',
'+emailsender' => 'sunny.uy@gmail.com',
'+enable_dragdrop' => '1',
'+enable_gravatar' => '',
'+enable_template_picker_in_tree' => '1',
'+error_handler_class' => 'MODX\\Revolution\\Error\\modErrorHandler',
'+error_log_filename' => 'error.log',
'+error_log_filepath' => '',
'+error_page' => '1',
'+failed_login_attempts' => '5',
'+feed_modx_news' => 'https://feeds.feedburner.com/modx-announce',
'+feed_modx_news_enabled' => '1',
'+feed_modx_security' => 'https://forums.modx.com/board.xml?board=294',
'+feed_modx_security_enabled' => '1',
'+form_customization_use_all_groups' => '',
'+forward_merge_excludes' => 'type,published,class_key',
'+friendly_alias_lowercase_only' => '1',
'+friendly_alias_max_length' => '0',
'+friendly_alias_realtime' => '1',
'+friendly_alias_restrict_chars' => 'pattern',
'+friendly_alias_restrict_chars_pattern' => '/[\\0\\x0B\\t\\n\\r\\f\\a&=+%#<>"~:`@\\?\\[\\]\\{\\}\\|\\^\'\\\\]/',
'+friendly_alias_strip_element_tags' => '1',
'+friendly_alias_translit' => 'none',
'+friendly_alias_translit_class' => 'translit.modTransliterate',
'+friendly_alias_trim_chars' => '/.-_',
'+friendly_alias_word_delimiter' => '-',
'+friendly_alias_word_delimiters' => '-_',
'+friendly_urls' => '1',
'+friendly_urls_strict' => '',
'+global_duplicate_uri_check' => '',
'+hidemenu_default' => '',
'+http_host' => 'www.silkstory.net',
'+https_port' => 443,
'+hydrate_adhoc_fields' => true,
'+hydrate_fields' => true,
'+hydrate_related_objects' => true,
'+inline_help' => '1',
'+link_tag_scheme' => '-1',
'+load_deprecated_global_class_aliases' => true,
'+locale' => '',
'+lock_ttl' => '360',
'+log_deprecated' => '1',
'+log_level' => '1',
'+log_snippet_not_found' => '1',
'+log_target' => 'FILE',
'+login_background_image' => '',
'+login_help_button' => '',
'+login_logo' => '',
'+mail_charset' => 'UTF-8',
'+mail_dkim_domain' => '',
'+mail_dkim_identity' => '',
'+mail_dkim_passphrase' => '',
'+mail_dkim_privatekeyfile' => '',
'+mail_dkim_privatekeystring' => '',
'+mail_dkim_selector' => '',
'+mail_encoding' => '8bit',
'+mail_inlinestyle_inline' => '1',
'+mail_inlinestyle_remove_style_tags' => '',
'+mail_smtp_auth' => '',
'+mail_smtp_autotls' => '1',
'+mail_smtp_helo' => '',
'+mail_smtp_hosts' => 'localhost',
'+mail_smtp_keepalive' => '',
'+mail_smtp_port' => '587',
'+mail_smtp_secure' => '',
'+mail_smtp_single_to' => '',
'+mail_smtp_timeout' => '10',
'+mail_use_smtp' => '',
'+main_nav_parent' => 'topnav',
'+manager_date_format' => 'Y-m-d',
'+manager_datetime_empty_value' => '—',
'+manager_datetime_separator' => ', ',
'+manager_direction' => 'ltr',
'+manager_favicon_url' => 'favicon.ico',
'+manager_login_url_alternate' => '',
'+manager_logo' => '',
'+manager_theme' => 'default',
'+manager_time_format' => 'H:i',
'+manager_tooltip_delay' => '2300',
'+manager_tooltip_enable' => '1',
'+manager_url' => '/manager/',
'+manager_use_fullname' => '',
'+manager_week_start' => '0',
'+mgr_source_icon' => 'icon-folder-open-o',
'+mgr_tree_icon_context' => 'tree-context',
'+modx_browser_default_sort' => 'name',
'+modx_browser_default_viewmode' => 'grid',
'+modx_browser_tree_hide_files' => '1',
'+modx_browser_tree_hide_tooltips' => '1',
'+modx_charset' => 'UTF-8',
'+package_installer_at_top' => '1',
'+parser_recurse_uncacheable' => '1',
'+password_generated_length' => '10',
'+password_min_length' => '8',
'+passwordless_activated' => '',
'+passwordless_expiration' => '3600',
'+photo_profile_source' => '',
'+phpthumb_allow_src_above_docroot' => '',
'+phpthumb_cache_maxage' => '30',
'+phpthumb_cache_maxfiles' => '10000',
'+phpthumb_cache_maxsize' => '100',
'+phpthumb_cache_source_enabled' => '',
'+phpthumb_document_root' => '',
'+phpthumb_error_bgcolor' => 'CCCCFF',
'+phpthumb_error_fontsize' => '1',
'+phpthumb_error_textcolor' => 'FF0000',
'+phpthumb_far' => 'C',
'+phpthumb_imagemagick_path' => '',
'+phpthumb_nohotlink_enabled' => '1',
'+phpthumb_nohotlink_erase_image' => '1',
'+phpthumb_nohotlink_text_message' => 'Off-server thumbnailing is not allowed',
'+phpthumb_nohotlink_valid_domains' => 'www.silkstory.net',
'+phpthumb_nooffsitelink_enabled' => '',
'+phpthumb_nooffsitelink_erase_image' => '1',
'+phpthumb_nooffsitelink_require_refer' => '',
'+phpthumb_nooffsitelink_text_message' => 'Off-server linking is not allowed',
'+phpthumb_nooffsitelink_valid_domains' => 'www.silkstory.net',
'+phpthumb_nooffsitelink_watermark_src' => '',
'+phpthumb_zoomcrop' => '0',
'+preserve_menuindex' => '',
'+principal_targets' => 'MODX\\Revolution\\modAccessContext,MODX\\Revolution\\modAccessResourceGroup,MODX\\Revolution\\modAccessCategory,MODX\\Revolution\\Sources\\modAccessMediaSource,MODX\\Revolution\\modAccessNamespace',
'+proxy_auth_type' => 'BASIC',
'+proxy_host' => '',
'+proxy_port' => '',
'+publish_default' => '',
'+quick_search_in_content' => '1',
'+quick_search_result_max' => '10',
'+request_controller' => 'index.php',
'+request_method_strict' => '',
'+request_param_alias' => 'q',
'+request_param_id' => 'id',
'+resource_static_allow_absolute' => '0',
'+resource_static_path' => '/home4/silksto1/public_html/assets/',
'+resource_tree_node_name' => 'pagetitle',
'+resource_tree_node_name_fallback' => 'alias',
'+resource_tree_node_tooltip' => '',
'+richtext_default' => '1',
'+search_default' => '1',
'+send_poweredby_header' => '',
'+server_offset_time' => '0',
'+server_port' => '443',
'+session_cookie_domain' => '',
'+session_cookie_httponly' => '1',
'+session_cookie_lifetime' => '604800',
'+session_cookie_path' => '',
'+session_cookie_samesite' => '',
'+session_cookie_secure' => '',
'+session_gc_maxlifetime' => '604800',
'+session_handler_class' => 'MODX\\Revolution\\modSessionHandler',
'+set_header' => '1',
'+settings_distro' => 'traditional',
'+settings_version' => '3.2.0-pl',
'+show_tv_categories_header' => '1',
'+site_name' => 'MODX Revolution',
'+site_start' => '10',
'+site_status' => '1',
'+site_unavailable_message' => '[[%site_unavailable_message]]',
'+site_unavailable_page' => '0',
'+site_url' => 'https://www.silkstory.net/zh/',
'+static_elements_automate_chunks' => '',
'+static_elements_automate_plugins' => '',
'+static_elements_automate_snippets' => '',
'+static_elements_automate_templates' => '',
'+static_elements_automate_tvs' => '',
'+static_elements_basepath' => '',
'+static_elements_default_category' => '0',
'+static_elements_default_mediasource' => '0',
'+static_elements_html_extension' => '.tpl',
'+symlink_merge_fields' => '1',
'+syncsite_default' => '1',
'+topmenu_show_descriptions' => '1',
'+tree_default_sort' => 'menuindex',
'+tree_root_id' => '0',
'+tvs_below_content' => '',
'+unauthorized_page' => '1',
'+upload_file_exists' => '1',
'+upload_files' => 'txt,html,htm,xml,js,js.map,css,scss,less,css.map,zip,gz,rar,z,tgz,tar,mp3,mp4,aac,wav,au,wmv,avi,mpg,mpeg,pdf,doc,docx,xls,xlsx,ppt,pptx,jpg,jpeg,png,tiff,svg,svgz,gif,psd,ico,bmp,webp,odt,ods,odp,odb,odg,odf,md,ttf,woff,woff2,eot',
'+upload_images' => 'jpg,jpeg,png,gif,psd,ico,bmp,tiff,svg,svgz,webp',
'+upload_maxsize' => '33554432',
'+upload_media' => 'mp3,wav,au,wmv,avi,mpg,mpeg',
'+upload_translit' => '1',
'+upload_translit_restrict_chars_pattern' => '/[\\0\\x0B\\t\\n\\r\\f\\a&=+%#<>"~:`@\\?\\[\\]\\{\\}\\|\\^\'\\\\]/',
'+url_scheme' => 'https://',
'+use_alias_path' => '',
'+use_context_resource_table' => '1',
'+use_editor' => '1',
'+use_frozen_parent_uris' => '',
'+use_multibyte' => '1',
'+use_weblink_target' => '',
'+user_nav_parent' => 'usernav',
'+validate_on_save' => true,
'+validator_class' => 'MODX\\Revolution\\Validation\\modValidator',
'+welcome_action' => 'welcome',
'+welcome_namespace' => 'core',
'+welcome_screen' => '',
'+welcome_screen_url' => '//misc.modx.com/revolution/welcome.30.html ',
'+which_editor' => '',
'+which_element_editor' => '',
'+xhtml_urls' => '1',
'+cache_path' => '/home4/silksto1/public_html/core/cache/',
'+connection_mutable' => true,
'+connections0dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'+connections0username' => 'silksto1_ss_user',
'+connections0password' => '!Kx9TV5Gbwyp',
'+connections0optionsconnection_mutable' => true,
'+connections0driverOptions3' => 0,
'+connectors_path' => '/home4/silksto1/public_html/connectors/',
'+driverOptions3' => 0,
'+dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'+friendly_alias_translit_class_path' => '/home4/silksto1/public_html/core/components/',
'+mail_smtp_pass' => '',
'+mail_smtp_user' => '',
'+manager_path' => '/home4/silksto1/public_html/manager/',
'+processors_path' => '/home4/silksto1/public_html/core/src/Revolution/Processors/',
'+proxy_password' => '',
'+proxy_username' => '',
'+session_name' => '',
'+table_prefix' => 'modx_',
),
'resource' =>
\MODX\Revolution\mysql\modDocument::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDocument',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'MODX\\Revolution\\modDocument',
'_pk' => NULL,
'_pktype' => NULL,
'_table' => '`modx_site_content`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'id' => 'id',
'type' => 'type',
'pagetitle' => 'pagetitle',
'longtitle' => 'longtitle',
'description' => 'description',
'alias' => 'alias',
'link_attributes' => 'link_attributes',
'published' => 'published',
'pub_date' => 'pub_date',
'unpub_date' => 'unpub_date',
'parent' => 'parent',
'isfolder' => 'isfolder',
'introtext' => 'introtext',
'content' => 'content',
'richtext' => 'richtext',
'template' => 'template',
'menuindex' => 'menuindex',
'searchable' => 'searchable',
'cacheable' => 'cacheable',
'createdby' => 'createdby',
'createdon' => 'createdon',
'editedby' => 'editedby',
'editedon' => 'editedon',
'deleted' => 'deleted',
'deletedon' => 'deletedon',
'deletedby' => 'deletedby',
'publishedon' => 'publishedon',
'publishedby' => 'publishedby',
'menutitle' => 'menutitle',
'content_dispo' => 'content_dispo',
'hidemenu' => 'hidemenu',
'class_key' => 'class_key',
'context_key' => 'context_key',
'content_type' => 'content_type',
'uri' => 'uri',
'uri_override' => 'uri_override',
'hide_children_in_tree' => 'hide_children_in_tree',
'show_in_tree' => 'show_in_tree',
'properties' => 'properties',
'alias_visible' => 'alias_visible',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 14,
'type' => 'document',
'pagetitle' => 'Story of Chinese Character',
'longtitle' => '漢字的故事',
'description' => '',
'alias' => 'story-of-chinese-character',
'link_attributes' => '',
'published' => 1,
'pub_date' => 0,
'unpub_date' => 0,
'parent' => 0,
'isfolder' => 0,
'introtext' => '',
'content' => '<div class="container">
<div class="row">
<div class="col">
<div class="row mb-5">
<div class="col-12 col-xl-9">[[!GetCharacterInfo]]</div>
</div>
</div>
</div>
</div>',
'richtext' => 1,
'template' => 2,
'menuindex' => 4,
'searchable' => 1,
'cacheable' => 1,
'createdby' => 1,
'createdon' => 1694263006,
'editedby' => 1,
'editedon' => 1695609851,
'deleted' => 0,
'deletedon' => 0,
'deletedby' => 0,
'publishedon' => 1694229120,
'publishedby' => 1,
'menutitle' => '',
'content_dispo' => 0,
'hidemenu' => 1,
'class_key' => 'MODX\\Revolution\\modDocument',
'context_key' => 'zh',
'content_type' => 1,
'uri' => 'story-of-chinese-character',
'uri_override' => 0,
'hide_children_in_tree' => 0,
'show_in_tree' => 1,
'properties' => NULL,
'alias_visible' => 1,
'bodyId' =>
array (
0 => 'bodyId',
1 => '',
2 => 'default',
3 => NULL,
4 => 'text',
),
'bodyClass' =>
array (
0 => 'bodyClass',
1 => '',
2 => 'default',
3 => NULL,
4 => 'text',
),
'showBreadcrumbs' =>
array (
0 => 'showBreadcrumbs',
1 => '1',
2 => 'default',
3 => NULL,
4 => 'checkbox',
),
'extraHeadScripts' =>
array (
0 => 'extraHeadScripts',
1 => '',
2 => 'default',
3 => NULL,
4 => 'text',
),
'beforeBodyScripts' =>
array (
0 => 'beforeBodyScripts',
1 => '',
2 => 'default',
3 => NULL,
4 => 'text',
),
'_content' => '<!DOCTYPE html>
<html lang="[[!GetCurrentLanguage]]">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-79W9MR2WZM"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(\'js\', new Date());
gtag(\'config\', \'G-79W9MR2WZM\');
</script>[[!GetOgTags]]
<base href="https://www.silkstory.net/zh/">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>SilkStory - 漢字的故事</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta property="og:title" content="SilkStory - 漢字的故事">
<meta property="og:description" content="">
<meta property="og:image" content="">
<link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/assets/css/styles.css?v=3">
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8212661150885235" crossorigin="anonymous"></script>
</head>
<body id="" class="">
<script type=\'text/javascript\' src=\'https://platform-api.sharethis.com/js/sharethis.js#property=5e805c309f548d001a3832ba&product=sop\' async=\'async\'></script>
<header>
<section class="navbar2">
<div class="container d-xxl-flex justify-content-xxl-end">
<div class="d-flex d-sm-flex d-md-flex justify-content-end sec-nav">[[!LanguageSwitcher]]</div>
</div>
</section>
<nav class="navbar navbar-light navbar-expand-md">
<div class="container">
<a class="navbar-brand" href="/[[!GetCurrentLanguage]]">
<span class="en">SilkStory</span>
<span class="zh">
絲傳
</span>
</a>
<a
class="nav-link search d-block d-sm-none"
href="#"
data-bs-target="#search"
data-bs-toggle="modal"
style="margin-left: auto;padding-right: 20px; font-size:26px;"
>
<i class="bi bi-search search"></i>
</a>
<button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navcol-1">
<span class="visually-hidden">
Toggle
navigation
</span>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse d-md-flex d-xxl-flex justify-content-md-end" id="navcol-1">
<ul class="nav navbar-nav "><li class="nav-item"><a class="nav-link first" href="https://www.silkstory.net/zh/">主頁</a></li>
<li class="nav-item"><a class="nav-link " href="bushou">康熙部首</a></li>
<li class="nav-item"><a class="nav-link " href="ziyuan">字源分類</a></li>
<li class="nav-item"><a class="nav-link last" href="all-characters">查看全部</a></li>
<li class="nav-item"><a class="nav-link search" href="#" data-bs-target="#search" data-bs-toggle="modal"><i class="bi bi-search search"></i></a></li></ul>
</div>
</div>
</nav>
</header>
<main>
[[!If? &subject=`1` &operator=`EQ` &operand=`1` &then=`<div class="container">
<div class="row">
<div class="col-md-12 pt-3">[[!BreadCrumb? &containerTpl=`BreadCrumbContainerTpl` &homeCrumbTpl=`myLinkCrumbTpl` &linkCrumbTpl=`myLinkCrumbTpl` ¤tCrumbTpl=`myCurrentCrumbTpl` &showHidden=`1` &showHomeCrumb=`1`]]</div>
</div>
</div>`]]
<div class="container">
<div class="row">
<div class="col">
<div class="row mb-5">
<div class="col-12 col-xl-9">[[!GetCharacterInfo]]</div>
</div>
</div>
</div>
</div></main>[[!searchBox]]
<footer class="text-center py-4">
<div class="container">
<div class="row">
<div class="col d-xxl-flex justify-content-xxl-start">
<p class="text-muted my-2">Copyright © [[!GetYear]] SilkStory</p>
</div>
<div class="col d-flex justify-content-end social-icons">
<ul class="list-inline my-2">
<li class="list-inline-item me-4">Follow Us</li>
<li class="list-inline-item me-4"><a href="https://www.facebook.com/meizai.chou" target="_blank"><i class="bi bi-facebook"></i></a></li>
<li class="list-inline-item me-4"><a href="https://www.youtube.com/user/choumeizai" target="_blank"><i class="bi bi-youtube"></i></li>
<li class="list-inline-item me-4"><a href="mailto:info@smallboy.net" target="_blank"><i class="bi bi-envelope"></i></li>
</ul>
</div>
</div>
</div>
</footer>
<script src=" https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</body>',
'_isForward' => false,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
),
'type' =>
array (
'dbtype' => 'varchar',
'precision' => '20',
'phptype' => 'string',
'null' => false,
'default' => 'document',
),
'pagetitle' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fulltext',
'indexgrp' => 'content_ft_idx',
),
'longtitle' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fulltext',
'indexgrp' => 'content_ft_idx',
),
'description' =>
array (
'dbtype' => 'text',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'fulltext',
'indexgrp' => 'content_ft_idx',
),
'alias' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => true,
'default' => '',
'index' => 'index',
),
'link_attributes' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'published' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'pub_date' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
'index' => 'index',
),
'unpub_date' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
'index' => 'index',
),
'parent' =>
array (
'dbtype' => 'int',
'precision' => '10',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'isfolder' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'introtext' =>
array (
'dbtype' => 'text',
'phptype' => 'string',
'index' => 'fulltext',
'indexgrp' => 'content_ft_idx',
),
'content' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'string',
'index' => 'fulltext',
'indexgrp' => 'content_ft_idx',
),
'richtext' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 1,
),
'template' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'menuindex' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'searchable' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 1,
'index' => 'index',
),
'cacheable' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 1,
'index' => 'index',
),
'createdby' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'createdon' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
),
'editedby' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'editedon' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
),
'deleted' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
),
'deletedon' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
),
'deletedby' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'publishedon' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
),
'publishedby' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'menutitle' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'content_dispo' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'hidemenu' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
'index' => 'index',
),
'class_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'MODX\\Revolution\\modDocument',
'index' => 'index',
),
'context_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'web',
'index' => 'index',
),
'content_type' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 1,
),
'uri' =>
array (
'dbtype' => 'text',
'phptype' => 'string',
'null' => true,
'index' => 'index',
),
'uri_override' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'hide_children_in_tree' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 0,
'index' => 'index',
),
'show_in_tree' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'integer',
'null' => false,
'default' => 1,
'index' => 'index',
),
'properties' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'json',
'null' => true,
),
'alias_visible' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 1,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Parent' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'parent',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'CreatedBy' =>
array (
'class' => 'MODX\\Revolution\\modUser',
'local' => 'createdby',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'EditedBy' =>
array (
'class' => 'MODX\\Revolution\\modUser',
'local' => 'editedby',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'DeletedBy' =>
array (
'class' => 'MODX\\Revolution\\modUser',
'local' => 'deletedby',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'PublishedBy' =>
array (
'class' => 'MODX\\Revolution\\modUser',
'local' => 'publishedby',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'Template' =>
array (
'class' => 'MODX\\Revolution\\modTemplate',
'local' => 'template',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
'TemplateVars' =>
array (
'class' => 'MODX\\Revolution\\modTemplateVar',
'local' => 'id:template',
'foreign' => 'contentid:templateid',
'cardinality' => 'many',
'owner' => 'local',
),
'TemplateVarTemplates' =>
array (
'class' => 'MODX\\Revolution\\modTemplateVarTemplate',
'local' => 'template',
'foreign' => 'templateid',
'cardinality' => 'many',
'owner' => 'local',
),
'ContentType' =>
array (
'class' => 'MODX\\Revolution\\modContentType',
'local' => 'content_type',
'foreign' => 'id',
'owner' => 'foreign',
'cardinality' => 'one',
),
'Context' =>
array (
'class' => 'MODX\\Revolution\\modContext',
'local' => 'context_key',
'foreign' => 'key',
'owner' => 'foreign',
'cardinality' => 'one',
),
),
'_composites' =>
array (
'Children' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'parent',
'cardinality' => 'many',
'owner' => 'local',
),
'TemplateVarResources' =>
array (
'class' => 'MODX\\Revolution\\modTemplateVarResource',
'local' => 'id',
'foreign' => 'contentid',
'cardinality' => 'many',
'owner' => 'local',
),
'ResourceGroupResources' =>
array (
'class' => 'MODX\\Revolution\\modResourceGroupResource',
'local' => 'id',
'foreign' => 'document',
'cardinality' => 'many',
'owner' => 'local',
),
'Acls' =>
array (
'class' => 'MODX\\Revolution\\modAccessResource',
'local' => 'id',
'foreign' => 'target',
'owner' => 'local',
'cardinality' => 'many',
),
'ContextResources' =>
array (
'class' => 'MODX\\Revolution\\modContextResource',
'local' => 'id',
'foreign' => 'resource',
'cardinality' => 'many',
'owner' => 'local',
),
),
'_relatedObjects' =>
array (
'Parent' => NULL,
'CreatedBy' => NULL,
'EditedBy' => NULL,
'DeletedBy' => NULL,
'PublishedBy' => NULL,
'Template' => NULL,
'TemplateVars' =>
array (
),
'TemplateVarTemplates' =>
array (
),
'ContentType' =>
\MODX\Revolution\mysql\modContentType::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modContentType',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'ContentType',
'_pk' => NULL,
'_pktype' => NULL,
'_table' => '`modx_content_type`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'id' => 'id',
'name' => 'name',
'description' => 'description',
'mime_type' => 'mime_type',
'file_extensions' => 'file_extensions',
'icon' => 'icon',
'headers' => 'headers',
'binary' => 'binary',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 1,
'name' => 'HTML',
'description' => 'HTML content',
'mime_type' => 'text/html',
'file_extensions' => '',
'icon' => '',
'headers' => NULL,
'binary' => 0,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'name' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'index' => 'unique',
),
'description' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
'null' => true,
),
'mime_type' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
),
'file_extensions' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
),
'icon' =>
array (
'dbtype' => 'tinytext',
'phptype' => 'string',
'null' => true,
),
'headers' =>
array (
'dbtype' => 'mediumtext',
'phptype' => 'array',
),
'binary' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Resources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'content_type',
'owner' => 'local',
'cardinality' => 'many',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Resources' =>
array (
),
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => true,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
'Context' => NULL,
'Children' =>
array (
),
'TemplateVarResources' =>
array (
),
'ResourceGroupResources' =>
array (
),
'Acls' =>
array (
),
'ContextResources' =>
array (
),
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => true,
'_cacheFlag' => true,
'_options' =>
array (
),
'_policies' =>
array (
'zh' =>
array (
),
),
'_content' => '<!DOCTYPE html>
<html lang="[[!GetCurrentLanguage]]">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-79W9MR2WZM"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(\'js\', new Date());
gtag(\'config\', \'G-79W9MR2WZM\');
</script>[[!GetOgTags]]
<base href="https://www.silkstory.net/zh/">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>SilkStory - 漢字的故事</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta property="og:title" content="SilkStory - 漢字的故事">
<meta property="og:description" content="">
<meta property="og:image" content="">
<link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/assets/css/styles.css?v=3">
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8212661150885235" crossorigin="anonymous"></script>
</head>
<body id="" class="">
<script type=\'text/javascript\' src=\'https://platform-api.sharethis.com/js/sharethis.js#property=5e805c309f548d001a3832ba&product=sop\' async=\'async\'></script>
<header>
<section class="navbar2">
<div class="container d-xxl-flex justify-content-xxl-end">
<div class="d-flex d-sm-flex d-md-flex justify-content-end sec-nav">[[!LanguageSwitcher]]</div>
</div>
</section>
<nav class="navbar navbar-light navbar-expand-md">
<div class="container">
<a class="navbar-brand" href="/[[!GetCurrentLanguage]]">
<span class="en">SilkStory</span>
<span class="zh">
絲傳
</span>
</a>
<a
class="nav-link search d-block d-sm-none"
href="#"
data-bs-target="#search"
data-bs-toggle="modal"
style="margin-left: auto;padding-right: 20px; font-size:26px;"
>
<i class="bi bi-search search"></i>
</a>
<button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navcol-1">
<span class="visually-hidden">
Toggle
navigation
</span>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse d-md-flex d-xxl-flex justify-content-md-end" id="navcol-1">
<ul class="nav navbar-nav "><li class="nav-item"><a class="nav-link first" href="https://www.silkstory.net/zh/">主頁</a></li>
<li class="nav-item"><a class="nav-link " href="bushou">康熙部首</a></li>
<li class="nav-item"><a class="nav-link " href="ziyuan">字源分類</a></li>
<li class="nav-item"><a class="nav-link last" href="all-characters">查看全部</a></li>
<li class="nav-item"><a class="nav-link search" href="#" data-bs-target="#search" data-bs-toggle="modal"><i class="bi bi-search search"></i></a></li></ul>
</div>
</div>
</nav>
</header>
<main>
[[!If? &subject=`1` &operator=`EQ` &operand=`1` &then=`<div class="container">
<div class="row">
<div class="col-md-12 pt-3">[[!BreadCrumb? &containerTpl=`BreadCrumbContainerTpl` &homeCrumbTpl=`myLinkCrumbTpl` &linkCrumbTpl=`myLinkCrumbTpl` ¤tCrumbTpl=`myCurrentCrumbTpl` &showHidden=`1` &showHomeCrumb=`1`]]</div>
</div>
</div>`]]
<div class="container">
<div class="row">
<div class="col">
<div class="row mb-5">
<div class="col-12 col-xl-9">[[!GetCharacterInfo]]</div>
</div>
</div>
</div>
</div></main>[[!searchBox]]
<footer class="text-center py-4">
<div class="container">
<div class="row">
<div class="col d-xxl-flex justify-content-xxl-start">
<p class="text-muted my-2">Copyright © [[!GetYear]] SilkStory</p>
</div>
<div class="col d-flex justify-content-end social-icons">
<ul class="list-inline my-2">
<li class="list-inline-item me-4">Follow Us</li>
<li class="list-inline-item me-4"><a href="https://www.facebook.com/meizai.chou" target="_blank"><i class="bi bi-facebook"></i></a></li>
<li class="list-inline-item me-4"><a href="https://www.youtube.com/user/choumeizai" target="_blank"><i class="bi bi-youtube"></i></li>
<li class="list-inline-item me-4"><a href="mailto:info@smallboy.net" target="_blank"><i class="bi bi-envelope"></i></li>
</ul>
</div>
</div>
</div>
</footer>
<script src=" https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</body>',
'_output' => '<!DOCTYPE html>
<html lang="zh">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-79W9MR2WZM"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(\'js\', new Date());
gtag(\'config\', \'G-79W9MR2WZM\');
</script>
<meta name="twitter:card" content="summary_large_image" /><meta name="twitter:site" content="@choumeizai" /><meta property="og:title" content="的故事「志」" /><meta property="og:description" content="「志」字由「之」字的變體和「心」字組成。「之」字是一隻向上走的腳掌之象形,有前往之意,故「志」字指心意之所向。
另外,意向對人來說非常重要,值得銘記。" /><meta property="og:url" content="http://www.silkstory.net/zh/story-of-chinese-character/1311" /><meta property="og:video" content="https://www.youtube.com/watch?v=95x7JBkke6I" /><meta property="og:image" content="https://img.youtube.com/vi/95x7JBkke6I/0.jpg" />
<base href="https://www.silkstory.net/zh/">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>SilkStory - 漢字的故事</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta property="og:title" content="SilkStory - 漢字的故事">
<meta property="og:description" content="">
<meta property="og:image" content="">
<link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/assets/css/styles.css?v=3">
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8212661150885235" crossorigin="anonymous"></script>
</head>
<body id="" class="">
<script type=\'text/javascript\' src=\'https://platform-api.sharethis.com/js/sharethis.js#property=5e805c309f548d001a3832ba&product=sop\' async=\'async\'></script>
<header>
<section class="navbar2">
<div class="container d-xxl-flex justify-content-xxl-end">
<div class="d-flex d-sm-flex d-md-flex justify-content-end sec-nav"><div class="d-flex d-sm-flex d-md-flex justify-content-end sec-nav"><a href="https://www.silkstory.net/en/story-of-chinese-character/1311">Eng</a><a href="https://www.silkstory.net/zh/story-of-chinese-character/1311">中文</a></div></div>
</div>
</section>
<nav class="navbar navbar-light navbar-expand-md">
<div class="container">
<a class="navbar-brand" href="/zh">
<span class="en">SilkStory</span>
<span class="zh">
絲傳
</span>
</a>
<a
class="nav-link search d-block d-sm-none"
href="#"
data-bs-target="#search"
data-bs-toggle="modal"
style="margin-left: auto;padding-right: 20px; font-size:26px;"
>
<i class="bi bi-search search"></i>
</a>
<button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navcol-1">
<span class="visually-hidden">
Toggle
navigation
</span>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse d-md-flex d-xxl-flex justify-content-md-end" id="navcol-1">
<ul class="nav navbar-nav "><li class="nav-item"><a class="nav-link first" href="https://www.silkstory.net/zh/">主頁</a></li>
<li class="nav-item"><a class="nav-link " href="bushou">康熙部首</a></li>
<li class="nav-item"><a class="nav-link " href="ziyuan">字源分類</a></li>
<li class="nav-item"><a class="nav-link last" href="all-characters">查看全部</a></li>
<li class="nav-item"><a class="nav-link search" href="#" data-bs-target="#search" data-bs-toggle="modal"><i class="bi bi-search search"></i></a></li></ul>
</div>
</div>
</nav>
</header>
<main>
<div class="container">
<div class="row">
<div class="col-md-12 pt-3"><nav aria-label="breadcrumb"><ol class="breadcrumb"><li class="breadcrumb-item"><a href="https://www.silkstory.net/zh/">Home</a></li><li class="breadcrumb-item active">漢字的故事</li></ol></nav></div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col">
<div class="row mb-5">
<div class="col-12 col-xl-9">
<div class="d-block d-md-flex align-items-start mb-3 character-header">
<div class="d-flex justify-content-xxl-center align-items-center character-box"><p class="character">志</p><div></div></div>
<div class="character-info"><h1>意向、抱負</h1>
<p class="description">「<a href="story-of-chinese-character/1311">志</a>」字由「<a href="story-of-chinese-character/98">之</a>」字的變體和「<a href="story-of-chinese-character/25">心</a>」字組成。「<a href="story-of-chinese-character/98">之</a>」字是一隻向上走的腳掌之象形,有前往之意,故「<a href="story-of-chinese-character/1311">志</a>」字指心意之所向。
另外,意向對人來說非常重要,值得銘記。</p></div></div>
<div><div class="embed-container"><iframe width="560" height="315" src="https://www.youtube.com/embed/95x7JBkke6I?rel=0" frameborder="0" allowfullscreen="" title="漢字的故事 : 志"></iframe></div></div><div class="row mt-4">
<div class="col-6 col-md-7"><h3 class="underlined">「志」字詞語</h3><ul class="vocabulary"><li>志願</li><li>得志</li><li>鬥志</li></ul></div>
<div class="col-6 col-md-5"><h3 class="underlined">分類</h3><ul class="classification"><li><a href="/zh/bushou/61">部首: 心</a></li><li><a href="/zh/ziyuan/53">字源: 心</a></li></ul></div>
</div><div class="mt-4"><h2 style="font-size: 1.2rem; margin-bottom:18px;">相關漢字:</h2></div><div class="silk-character-cards-grid compact"><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/25"><span class="silk-card-strokes">4</span><span class="silk-card-top"><span class="silk-card-char">心</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E5%BF%83.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/297"><span class="silk-card-strokes">6</span><span class="silk-card-top"><span class="silk-card-char">忖</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/701"><span class="silk-card-strokes">6</span><span class="silk-card-top"><span class="silk-card-char">忙</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1311"><span class="silk-card-strokes">7</span><span class="silk-card-top"><span class="silk-card-char">志</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/567"><span class="silk-card-strokes">7</span><span class="silk-card-top"><span class="silk-card-char">忘</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1110"><span class="silk-card-strokes">7</span><span class="silk-card-top"><span class="silk-card-char">忌</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1744"><span class="silk-card-strokes">7</span><span class="silk-card-top"><span class="silk-card-char">忍</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E5%BF%8D.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1624"><span class="silk-card-strokes">8</span><span class="silk-card-top"><span class="silk-card-char">怖</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E6%80%96.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/2224"><span class="silk-card-strokes">8</span><span class="silk-card-top"><span class="silk-card-char">念</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1997"><span class="silk-card-strokes">8</span><span class="silk-card-top"><span class="silk-card-char">怕</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1748"><span class="silk-card-strokes">8</span><span class="silk-card-top"><span class="silk-card-char">性</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E6%80%A7.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1753"><span class="silk-card-strokes">8</span><span class="silk-card-top"><span class="silk-card-char">忽</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E5%BF%BD.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1242"><span class="silk-card-strokes">8</span><span class="silk-card-top"><span class="silk-card-char">怔</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/2018"><span class="silk-card-strokes">8</span><span class="silk-card-top"><span class="silk-card-char">怙</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1258"><span class="silk-card-strokes">8</span><span class="silk-card-top"><span class="silk-card-char">怯</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/535"><span class="silk-card-strokes">9</span><span class="silk-card-top"><span class="silk-card-char">恰</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E6%81%B0.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1317"><span class="silk-card-strokes">9</span><span class="silk-card-top"><span class="silk-card-char">恃</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/2139"><span class="silk-card-strokes">9</span><span class="silk-card-top"><span class="silk-card-char">怨</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1422"><span class="silk-card-strokes">9</span><span class="silk-card-top"><span class="silk-card-char">急</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/442"><span class="silk-card-strokes">9</span><span class="silk-card-top"><span class="silk-card-char">恨</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/196"><span class="silk-card-strokes">9</span><span class="silk-card-top"><span class="silk-card-char">思</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1247"><span class="silk-card-strokes">9</span><span class="silk-card-top"><span class="silk-card-char">恆</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/55"><span class="silk-card-strokes">10</span><span class="silk-card-top"><span class="silk-card-char">恥</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1373"><span class="silk-card-strokes">10</span><span class="silk-card-top"><span class="silk-card-char">悅</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1381"><span class="silk-card-strokes">10</span><span class="silk-card-top"><span class="silk-card-char">息</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1939"><span class="silk-card-strokes">10</span><span class="silk-card-top"><span class="silk-card-char">悄</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/411"><span class="silk-card-strokes">10</span><span class="silk-card-top"><span class="silk-card-char">恩</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1698"><span class="silk-card-strokes">10</span><span class="silk-card-top"><span class="silk-card-char">悍</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E6%82%8D.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/682"><span class="silk-card-strokes">10</span><span class="silk-card-top"><span class="silk-card-char">恭</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1274"><span class="silk-card-strokes">10</span><span class="silk-card-top"><span class="silk-card-char">悟</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1792"><span class="silk-card-strokes">11</span><span class="silk-card-top"><span class="silk-card-char">悤</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1059"><span class="silk-card-strokes">11</span><span class="silk-card-top"><span class="silk-card-char">悉</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/2096"><span class="silk-card-strokes">11</span><span class="silk-card-top"><span class="silk-card-char">悴</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/853"><span class="silk-card-strokes">11</span><span class="silk-card-top"><span class="silk-card-char">恿</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/359"><span class="silk-card-strokes">11</span><span class="silk-card-top"><span class="silk-card-char">惘</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1770"><span class="silk-card-strokes">11</span><span class="silk-card-top"><span class="silk-card-char">惦</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E6%83%A6.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1066"><span class="silk-card-strokes">12</span><span class="silk-card-top"><span class="silk-card-char">悲</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/2093"><span class="silk-card-strokes">12</span><span class="silk-card-top"><span class="silk-card-char">惶</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/346"><span class="silk-card-strokes">12</span><span class="silk-card-top"><span class="silk-card-char">悳</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/644"><span class="silk-card-strokes">12</span><span class="silk-card-top"><span class="silk-card-char">惻</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/666"><span class="silk-card-strokes">12</span><span class="silk-card-top"><span class="silk-card-char">惱</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/707"><span class="silk-card-strokes">12</span><span class="silk-card-top"><span class="silk-card-char">慌</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/2033"><span class="silk-card-strokes">12</span><span class="silk-card-top"><span class="silk-card-char">愎</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/56"><span class="silk-card-strokes">13</span><span class="silk-card-top"><span class="silk-card-char">愛</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1427"><span class="silk-card-strokes">13</span><span class="silk-card-top"><span class="silk-card-char">想</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1970"><span class="silk-card-strokes">13</span><span class="silk-card-top"><span class="silk-card-char">慎</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1462"><span class="silk-card-strokes">13</span><span class="silk-card-top"><span class="silk-card-char">感</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1472"><span class="silk-card-strokes">13</span><span class="silk-card-top"><span class="silk-card-char">愧</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1491"><span class="silk-card-strokes">13</span><span class="silk-card-top"><span class="silk-card-char">愷</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1778"><span class="silk-card-strokes">13</span><span class="silk-card-top"><span class="silk-card-char">意</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/2075"><span class="silk-card-strokes">14</span><span class="silk-card-top"><span class="silk-card-char">愿</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1163"><span class="silk-card-strokes">14</span><span class="silk-card-top"><span class="silk-card-char">慳</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1203"><span class="silk-card-strokes">14</span><span class="silk-card-top"><span class="silk-card-char">慣</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1738"><span class="silk-card-strokes">14</span><span class="silk-card-top"><span class="silk-card-char">慟</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E6%85%9F.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/482"><span class="silk-card-strokes">14</span><span class="silk-card-top"><span class="silk-card-char">慕</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/2047"><span class="silk-card-strokes">14</span><span class="silk-card-top"><span class="silk-card-char">態</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/531"><span class="silk-card-strokes">15</span><span class="silk-card-top"><span class="silk-card-char">慫</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1055"><span class="silk-card-strokes">15</span><span class="silk-card-top"><span class="silk-card-char">憤</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/576"><span class="silk-card-strokes">15</span><span class="silk-card-top"><span class="silk-card-char">憂</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1098"><span class="silk-card-strokes">15</span><span class="silk-card-top"><span class="silk-card-char">慮</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1125"><span class="silk-card-strokes">15</span><span class="silk-card-top"><span class="silk-card-char">憔</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1642"><span class="silk-card-strokes">15</span><span class="silk-card-top"><span class="silk-card-char">憬</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E6%86%AC.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/389"><span class="silk-card-strokes">15</span><span class="silk-card-top"><span class="silk-card-char">憚</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1463"><span class="silk-card-strokes">16</span><span class="silk-card-top"><span class="silk-card-char">憾</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1985"><span class="silk-card-strokes">16</span><span class="silk-card-top"><span class="silk-card-char">懂</span><div class="silk-card-illustration"><img src="/assets/images/icons/%E6%87%82.svg" alt="" loading="lazy"></div></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1779"><span class="silk-card-strokes">16</span><span class="silk-card-top"><span class="silk-card-char">憶</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/380"><span class="silk-card-strokes">17</span><span class="silk-card-top"><span class="silk-card-char">懦</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/1211"><span class="silk-card-strokes">17</span><span class="silk-card-top"><span class="silk-card-char">懞</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/423"><span class="silk-card-strokes">18</span><span class="silk-card-top"><span class="silk-card-char">懵</span></span></a><a class="silk-character-card silk-character-card--no-label" href="/zh/story-of-chinese-character/290"><span class="silk-card-strokes">19</span><span class="silk-card-top"><span class="silk-card-char">懷</span></span></a></div></div>
</div>
</div>
</div>
</div></main>
<div id="search" class="modal fade" role="dialog" tabindex="-1">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<div class="modal-header">
<input
id="searchKeywords"
type="search"
inputmode="search"
enterkeyhint="search"
autocomplete="off"
autocapitalize="none"
autocorrect="off"
spellcheck="false"
v-model.trim="searchKeywords"
@input="onInput"
placeholder="在這裡搜索角色。"
/><button
class="btn-close"
type="button"
aria-label="Close"
data-bs-dismiss="modal"
></button>
</div>
<div class="modal-body">
<div v-if="isLoading" class="py-2">Loading…</div>
<div v-else-if="hasTyped && characters.length === 0" class="py-2">
No results
</div>
<div v-else class="grid-characters smaller">
<a
v-for="character in characters"
:key="character.id"
:href="\'/zh/story-of-chinese-character/\'+character.id"
>{{character.character}}<span class="meaning"><br>{{character.cn_meaning}}</span>
<span class="strokes">{{character.strokes}}</span></a
>
</div>
</div>
</div>
</div>
</div>
<script>
let app = {
data() {
return {
characters: [],
searchKeywords: "",
isLoading: false,
hasTyped: false,
abortController: null,
searchDebounced: null,
};
},
methods: {
debounce(fn, delay) {
let timerId;
return function (...args) {
clearTimeout(timerId);
timerId = setTimeout(() => fn.apply(this, args), delay);
};
},
onInput() {
this.hasTyped = true;
this.searchDebounced && this.searchDebounced();
},
searchNow() {
const query = (this.searchKeywords || "").trim();
const isSingleAsciiLetter = /^[A-Za-z]$/.test(query);
if (query.length === 0 || isSingleAsciiLetter) {
// clear
this.characters = [];
this.hasTyped = false;
if (this.abortController) {
this.abortController.abort();
this.abortController = null;
}
this.isLoading = false;
return;
}
if (this.abortController) {
this.abortController.abort();
}
this.abortController = new AbortController();
this.isLoading = true;
fetch(
"/_qcube4/views/search-query.php?searchKeywords=" +
encodeURIComponent(query),
{ signal: this.abortController.signal }
)
.then((response) => response.json())
.then((data) => {
this.characters = Array.isArray(data) ? data : [];
})
.catch((err) => {
if (err.name !== "AbortError") {
console.log(err.message);
}
})
.finally(() => {
this.isLoading = false;
});
},
},
created() {
this.searchDebounced = this.debounce(this.searchNow, 250);
},
};
const vm = Vue.createApp(app).mount("#search");
var myModal = document.getElementById("search");
var myInput = document.getElementById("searchKeywords");
myModal.addEventListener("shown.bs.modal", function () {
setTimeout(function () {
myInput.focus();
if (myInput && myInput.setSelectionRange) {
try {
var len = myInput.value.length;
myInput.setSelectionRange(len, len);
} catch (e) {}
}
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;
}, 250);
});
myModal.addEventListener("hidden.bs.modal", function () {
if (vm && vm.abortController) {
try { vm.abortController.abort(); } catch (e) {}
vm.abortController = null;
}
vm.searchKeywords = "";
vm.characters = [];
vm.isLoading = false;
vm.hasTyped = false;
});
</script>
<footer class="text-center py-4">
<div class="container">
<div class="row">
<div class="col d-xxl-flex justify-content-xxl-start">
<p class="text-muted my-2">Copyright © 2026 SilkStory</p>
</div>
<div class="col d-flex justify-content-end social-icons">
<ul class="list-inline my-2">
<li class="list-inline-item me-4">Follow Us</li>
<li class="list-inline-item me-4"><a href="https://www.facebook.com/meizai.chou" target="_blank"><i class="bi bi-facebook"></i></a></li>
<li class="list-inline-item me-4"><a href="https://www.youtube.com/user/choumeizai" target="_blank"><i class="bi bi-youtube"></i></li>
<li class="list-inline-item me-4"><a href="mailto:info@smallboy.net" target="_blank"><i class="bi bi-envelope"></i></li>
</ul>
</div>
</div>
</div>
</footer>
<script src=" https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</body>',
'_contextKey' => 'zh',
'_processed' => true,
'_cacheKey' => '[contextKey]/resources/[id]',
'_refreshCache' => true,
'_isForward' => false,
'_jscripts' =>
array (
),
'_sjscripts' =>
array (
),
'_loadedjscripts' =>
array (
),
'showInContextMenu' => true,
'allowDrop' => -1,
'allowListingInClassKeyDropdown' => true,
'allowChildrenResources' => true,
)),
'cultureKey' => 'zh',
'lexicon' =>
\MODX\Revolution\modLexicon::__set_state(array(
'modx' => NULL,
'config' =>
array (
),
'_lexicon' =>
array (
'zh' =>
array (
'breadcrumb_snippet_from_desc' => 'Resource ID of the first crumb.',
'breadcrumb_snippet_to_desc' => 'Resource ID of the last crumb.',
'breadcrumb_snippet_maxcrumbs_desc' => 'Max crumbs shown in breadcrumb',
'breadcrumb_snippet_showhidden_desc' => 'Show hidden resources in breadcrumb.',
'breadcrumb_snippet_showcontainer_desc' => 'Show container resources in breadcrumb.',
'breadcrumb_snippet_showunpub_desc' => 'Show unpublished resources in breadcrumb.',
'breadcrumb_snippet_showcurrentcrumb_desc' => 'Show current resource as a crumb.',
'breadcrumb_snippet_showbreadcrumbatHome_desc' => 'Show BreadCrumb on the home page.',
'breadcrumb_snippet_showhomecrumb_desc' => 'Show the home page as a crumb.',
'breadcrumb_snippet_useweblinkurl_desc' => 'Use the weblink url instead of the url to the weblink.',
'breadcrumb_snippet_direction_desc' => 'Direction or breadcrumb : Left To Right (ltr) or Right To Left (rtl) for Arabic language for example.',
'breadcrumb_snippet_scheme_desc' => 'URL Generation Scheme.',
'breadcrumb_snippet_containertpl_desc' => 'Container template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_homecrumbtpl_desc' => 'Home crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_currentcrumbtpl_desc' => 'Current crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_linkcrumbtpl_desc' => 'Default crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_categorycrumbtpl_desc' => 'Default category crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_maxcrumbtpl_desc' => 'Max delimiter crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
),
'en' =>
array (
'breadcrumb_snippet_from_desc' => 'Resource ID of the first crumb.',
'breadcrumb_snippet_to_desc' => 'Resource ID of the last crumb.',
'breadcrumb_snippet_maxcrumbs_desc' => 'Max crumbs shown in breadcrumb',
'breadcrumb_snippet_showhidden_desc' => 'Show hidden resources in breadcrumb.',
'breadcrumb_snippet_showcontainer_desc' => 'Show container resources in breadcrumb.',
'breadcrumb_snippet_showunpub_desc' => 'Show unpublished resources in breadcrumb.',
'breadcrumb_snippet_showcurrentcrumb_desc' => 'Show current resource as a crumb.',
'breadcrumb_snippet_showbreadcrumbatHome_desc' => 'Show BreadCrumb on the home page.',
'breadcrumb_snippet_showhomecrumb_desc' => 'Show the home page as a crumb.',
'breadcrumb_snippet_useweblinkurl_desc' => 'Use the weblink url instead of the url to the weblink.',
'breadcrumb_snippet_direction_desc' => 'Direction or breadcrumb : Left To Right (ltr) or Right To Left (rtl) for Arabic language for example.',
'breadcrumb_snippet_scheme_desc' => 'URL Generation Scheme.',
'breadcrumb_snippet_containertpl_desc' => 'Container template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_homecrumbtpl_desc' => 'Home crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_currentcrumbtpl_desc' => 'Current crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_linkcrumbtpl_desc' => 'Default crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_categorycrumbtpl_desc' => 'Default category crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'breadcrumb_snippet_maxcrumbtpl_desc' => 'Max delimiter crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
),
),
'_paths' =>
array (
'core' => '/home4/silksto1/public_html/core/cache/lexicon/',
),
'_loadedTopics' =>
array (
0 => 'en:breadcrumb:properties',
1 => 'breadcrumb:properties',
),
)),
'user' =>
\MODX\Revolution\mysql\modUser::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modUser',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'MODX\\Revolution\\modUser',
'_pk' => NULL,
'_pktype' => NULL,
'_table' => '`modx_users`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'id' => 'id',
'username' => 'username',
'password' => 'password',
'cachepwd' => 'cachepwd',
'class_key' => 'class_key',
'active' => 'active',
'remote_key' => 'remote_key',
'remote_data' => 'remote_data',
'hash_class' => 'hash_class',
'salt' => 'salt',
'primary_group' => 'primary_group',
'session_stale' => 'session_stale',
'sudo' => 'sudo',
'createdon' => 'createdon',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 0,
'username' => '(anonymous)',
'password' => '',
'cachepwd' => '',
'class_key' => 'MODX\\Revolution\\modUser',
'active' => 1,
'remote_key' => NULL,
'remote_data' => NULL,
'hash_class' => 'MODX\\Revolution\\Hashing\\modNative',
'salt' => '',
'primary_group' => 0,
'session_stale' => NULL,
'sudo' => 0,
'createdon' => 0,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'username' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => '',
'index' => 'unique',
),
'password' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'cachepwd' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'class_key' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'MODX\\Revolution\\modUser',
'index' => 'index',
),
'active' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'boolean',
'attributes' => 'unsigned',
'null' => false,
'default' => 1,
),
'remote_key' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => true,
'index' => 'index',
),
'remote_data' =>
array (
'dbtype' => 'text',
'phptype' => 'json',
'null' => true,
),
'hash_class' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => 'MODX\\Revolution\\Hashing\\modNative',
),
'salt' =>
array (
'dbtype' => 'varchar',
'precision' => '100',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'primary_group' =>
array (
'dbtype' => 'int',
'precision' => '10',
'phptype' => 'integer',
'attributes' => 'unsigned',
'null' => false,
'default' => 0,
'index' => 'index',
),
'session_stale' =>
array (
'dbtype' => 'text',
'phptype' => 'array',
'null' => true,
),
'sudo' =>
array (
'dbtype' => 'tinyint',
'precision' => '1',
'phptype' => 'boolean',
'attributes' => 'unsigned',
'null' => false,
'default' => 0,
),
'createdon' =>
array (
'dbtype' => 'int',
'precision' => '20',
'phptype' => 'timestamp',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'CreatedResources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'createdby',
'cardinality' => 'many',
'owner' => 'local',
),
'EditedResources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'editedby',
'cardinality' => 'many',
'owner' => 'local',
),
'DeletedResources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'deletedby',
'cardinality' => 'many',
'owner' => 'local',
),
'PublishedResources' =>
array (
'class' => 'MODX\\Revolution\\modResource',
'local' => 'id',
'foreign' => 'publishedby',
'cardinality' => 'many',
'owner' => 'local',
),
'SentMessages' =>
array (
'class' => 'MODX\\Revolution\\modUserMessage',
'local' => 'id',
'foreign' => 'sender',
'cardinality' => 'many',
'owner' => 'local',
),
'ReceivedMessages' =>
array (
'class' => 'MODX\\Revolution\\modUserMessage',
'local' => 'id',
'foreign' => 'recipient',
'cardinality' => 'many',
'owner' => 'local',
),
'PrimaryGroup' =>
array (
'class' => 'MODX\\Revolution\\modUserGroup',
'local' => 'primary_group',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
'Acls' =>
array (
'class' => 'modAccess',
'local' => 'id',
'foreign' => 'principal',
'cardinality' => 'many',
'owner' => 'local',
),
'Profile' =>
array (
'class' => 'MODX\\Revolution\\modUserProfile',
'local' => 'id',
'foreign' => 'internalKey',
'cardinality' => 'one',
'owner' => 'local',
),
'UserSettings' =>
array (
'class' => 'MODX\\Revolution\\modUserSetting',
'local' => 'id',
'foreign' => 'user',
'cardinality' => 'many',
'owner' => 'local',
),
'UserGroupMembers' =>
array (
'class' => 'MODX\\Revolution\\modUserGroupMember',
'local' => 'id',
'foreign' => 'member',
'cardinality' => 'many',
'owner' => 'local',
),
'ActiveUsers' =>
array (
'class' => 'MODX\\Revolution\\modActiveUser',
'local' => 'id',
'foreign' => 'internalKey',
'cardinality' => 'many',
'owner' => 'local',
),
'DashboardWidgets' =>
array (
'class' => 'MODX\\Revolution\\modDashboardWidgetPlacement',
'local' => 'id',
'foreign' => 'user',
'cardinality' => 'many',
'owner' => 'local',
),
),
'_relatedObjects' =>
array (
'CreatedResources' =>
array (
),
'EditedResources' =>
array (
),
'DeletedResources' =>
array (
),
'PublishedResources' =>
array (
),
'SentMessages' =>
array (
),
'ReceivedMessages' =>
array (
),
'PrimaryGroup' => NULL,
'Acls' =>
array (
),
'Profile' => NULL,
'UserSettings' =>
array (
),
'UserGroupMembers' =>
array (
),
'ActiveUsers' =>
array (
),
'DashboardWidgets' =>
array (
),
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => true,
'_cacheFlag' => true,
'_options' =>
array (
),
'_attributes' =>
array (
),
'sessionContexts' =>
array (
),
)),
'contentTypes' => NULL,
'resourceIdentifier' => 14,
'resourceMethod' => 'id',
'resourceGenerated' => false,
'version' => NULL,
'site_id' => 'modx69b8dec798b933.73097230',
'uuid' => 'bbab6a33-5fd0-4a3f-80d2-686932cf714a',
'_initialized' => true,
'sjscripts' =>
array (
),
'jscripts' =>
array (
),
'loadedjscripts' =>
array (
),
'virtualDir' => NULL,
'errorHandler' =>
\MODX\Revolution\Error\modErrorHandler::__set_state(array(
'modx' => NULL,
'stack' =>
array (
),
)),
'error' =>
\MODX\Revolution\Error\modError::__set_state(array(
'errors' =>
array (
),
'message' => '',
'modx' => NULL,
'total' => 0,
'status' => false,
'_objects' =>
array (
),
)),
'controller' => NULL,
'registry' =>
\MODX\Revolution\Registry\modRegistry::__set_state(array(
'modx' => NULL,
'_options' =>
array (
),
'_invalidKeys' =>
array (
0 => 'modx',
),
'_registers' =>
array (
),
'_loggingRegister' => NULL,
'_prevLogTarget' => NULL,
'_prevLogLevel' => NULL,
)),
'mail' => NULL,
'smarty' => NULL,
'processors' =>
array (
),
'sanitizePatterns' =>
array (
'scripts' => '@<script[^>]*?>.*?</script>@si',
'entities' => '@&#(\\d+);@',
'tags1' => '@\\[\\[(?:(?!(\\[\\[|\\]\\])).)*\\]\\]@si',
'tags2' => '@(\\[\\[|\\]\\])@si',
),
'_sessionState' => 1,
'_config' =>
array (
'cache_key' => 'default',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_path' => '/home4/silksto1/public_html/core/cache/',
'table_prefix' => 'modx_',
'hydrate_fields' => true,
'hydrate_related_objects' => true,
'hydrate_adhoc_fields' => true,
'validator_class' => 'MODX\\Revolution\\Validation\\modValidator',
'validate_on_save' => true,
'cache_system_settings' => true,
'cache_system_settings_key' => 'system_settings',
'load_deprecated_global_class_aliases' => true,
'connections' =>
array (
0 =>
array (
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'username' => 'silksto1_ss_user',
'password' => '!Kx9TV5Gbwyp',
'options' =>
array (
'connection_mutable' => true,
),
'driverOptions' =>
array (
3 => 0,
),
),
),
'connection_mutable' => true,
'dbtype' => 'mysql',
'host' => 'localhost',
'dbname' => 'silksto1_silkstory',
'charset' => 'utf8',
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'username' => 'silksto1_ss_user',
'password' => '!Kx9TV5Gbwyp',
'driverOptions' =>
array (
3 => 0,
),
'base_url' => '/',
'base_path' => '/home4/silksto1/public_html/',
'core_path' => '/home4/silksto1/public_html/core/',
'url_scheme' => 'https://',
'http_host' => 'www.silkstory.net',
'site_url' => 'https://www.silkstory.net/',
'manager_path' => '/home4/silksto1/public_html/manager/',
'manager_url' => '/manager/',
'assets_path' => '/home4/silksto1/public_html/assets/',
'assets_url' => '/assets/',
'connectors_path' => '/home4/silksto1/public_html/connectors/',
'connectors_url' => '/connectors/',
'connector_url' => '/connectors/index.php',
'processors_path' => '/home4/silksto1/public_html/core/src/Revolution/Processors/',
'request_param_id' => 'id',
'request_param_alias' => 'q',
'https_port' => 443,
'error_handler_class' => 'MODX\\Revolution\\Error\\modErrorHandler',
'server_port' => '443',
),
'_systemConfig' =>
array (
'cache_key' => 'default',
'cache_handler' => 'xPDO\\Cache\\xPDOFileCache',
'cache_path' => '/home4/silksto1/public_html/core/cache/',
'table_prefix' => 'modx_',
'hydrate_fields' => true,
'hydrate_related_objects' => true,
'hydrate_adhoc_fields' => true,
'validator_class' => 'MODX\\Revolution\\Validation\\modValidator',
'validate_on_save' => true,
'cache_system_settings' => true,
'cache_system_settings_key' => 'system_settings',
'load_deprecated_global_class_aliases' => true,
'connections' =>
array (
0 =>
array (
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'username' => 'silksto1_ss_user',
'password' => '!Kx9TV5Gbwyp',
'options' =>
array (
'connection_mutable' => true,
),
'driverOptions' =>
array (
3 => 0,
),
),
),
'connection_mutable' => true,
'dbtype' => 'mysql',
'host' => 'localhost',
'dbname' => 'silksto1_silkstory',
'charset' => 'utf8',
'dsn' => 'mysql:host=localhost;dbname=silksto1_silkstory;charset=utf8',
'username' => 'silksto1_ss_user',
'password' => '!Kx9TV5Gbwyp',
'driverOptions' =>
array (
3 => 0,
),
'base_url' => '/',
'base_path' => '/home4/silksto1/public_html/',
'core_path' => '/home4/silksto1/public_html/core/',
'url_scheme' => 'https://',
'http_host' => 'www.silkstory.net',
'site_url' => 'https://www.silkstory.net/',
'manager_path' => '/home4/silksto1/public_html/manager/',
'manager_url' => '/manager/',
'assets_path' => '/home4/silksto1/public_html/assets/',
'assets_url' => '/assets/',
'connectors_path' => '/home4/silksto1/public_html/connectors/',
'connectors_url' => '/connectors/',
'connector_url' => '/connectors/index.php',
'processors_path' => '/home4/silksto1/public_html/core/src/Revolution/Processors/',
'request_param_id' => 'id',
'request_param_alias' => 'q',
'https_port' => 443,
'error_handler_class' => 'MODX\\Revolution\\Error\\modErrorHandler',
'server_port' => '443',
'access_category_enabled' => '1',
'access_context_enabled' => '1',
'access_policies_version' => '1.0',
'access_resource_group_enabled' => '1',
'allow_forward_across_contexts' => '',
'allow_manager_login_forgot_password' => '1',
'allow_multiple_emails' => '1',
'allow_tags_in_post' => '',
'anonymous_sessions' => '1',
'archive_with' => '',
'automatic_alias' => '1',
'automatic_template_assignment' => 'sibling',
'auto_check_pkg_updates' => '1',
'auto_check_pkg_updates_cache_expire' => '15',
'auto_isfolder' => '1',
'auto_menuindex' => '1',
'babel.babelTvName' => 'babelLanguageLinks',
'babel.contextKeys' => 'web,en,zh',
'babel.debug' => '0',
'babel.displayChunk' => 'tplBabelContextMenu',
'babel.displayText' => 'language',
'babel.restrictToGroup' => '1',
'babel.syncFields' => '',
'babel.syncTvs' => '',
'base_help_url' => '//docs.modx.com/help/',
'blocked_minutes' => '60',
'cache_alias_map' => '1',
'cache_context_settings' => '1',
'cache_db' => '',
'cache_db_expires' => '0',
'cache_db_session' => '',
'cache_db_session_lifetime' => '',
'cache_default' => '1',
'cache_expires' => '0',
'cache_format' => '0',
'cache_lang_js' => '1',
'cache_lexicon_topics' => '1',
'cache_noncore_lexicon_topics' => '1',
'cache_resource' => '1',
'cache_resource_clear_partial' => '',
'cache_resource_expires' => '0',
'cache_scripts' => '1',
'clear_cache_refresh_trees' => '',
'compress_css' => '1',
'compress_js' => '1',
'confirm_navigation' => '1',
'container_suffix' => '/',
'context_tree_sort' => '1',
'context_tree_sortby' => 'rank',
'context_tree_sortdir' => 'ASC',
'cultureKey' => 'en',
'date_timezone' => '',
'debug' => '',
'default_content_type' => '1',
'default_context' => 'web',
'default_duplicate_publish_option' => 'preserve',
'default_media_source' => '1',
'default_media_source_type' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'default_per_page' => '20',
'default_template' => '2',
'default_username' => '(anonymous)',
'emailsender' => 'sunny.uy@gmail.com',
'enable_dragdrop' => '1',
'enable_gravatar' => '',
'enable_template_picker_in_tree' => '1',
'error_log_filename' => 'error.log',
'error_log_filepath' => '',
'error_page' => '1',
'failed_login_attempts' => '5',
'feed_modx_news' => 'https://feeds.feedburner.com/modx-announce',
'feed_modx_news_enabled' => '1',
'feed_modx_security' => 'https://forums.modx.com/board.xml?board=294',
'feed_modx_security_enabled' => '1',
'form_customization_use_all_groups' => '',
'forward_merge_excludes' => 'type,published,class_key',
'friendly_alias_lowercase_only' => '1',
'friendly_alias_max_length' => '0',
'friendly_alias_realtime' => '1',
'friendly_alias_restrict_chars' => 'pattern',
'friendly_alias_restrict_chars_pattern' => '/[\\0\\x0B\\t\\n\\r\\f\\a&=+%#<>"~:`@\\?\\[\\]\\{\\}\\|\\^\'\\\\]/',
'friendly_alias_strip_element_tags' => '1',
'friendly_alias_translit' => 'none',
'friendly_alias_translit_class' => 'translit.modTransliterate',
'friendly_alias_translit_class_path' => '/home4/silksto1/public_html/core/components/',
'friendly_alias_trim_chars' => '/.-_',
'friendly_alias_word_delimiter' => '-',
'friendly_alias_word_delimiters' => '-_',
'friendly_urls' => '1',
'friendly_urls_strict' => '',
'global_duplicate_uri_check' => '',
'hidemenu_default' => '',
'inline_help' => '1',
'link_tag_scheme' => '-1',
'locale' => '',
'lock_ttl' => '360',
'login_background_image' => '',
'login_help_button' => '',
'login_logo' => '',
'log_deprecated' => '1',
'log_level' => '1',
'log_snippet_not_found' => '1',
'log_target' => 'FILE',
'mail_charset' => 'UTF-8',
'mail_dkim_domain' => '',
'mail_dkim_identity' => '',
'mail_dkim_passphrase' => '',
'mail_dkim_privatekeyfile' => '',
'mail_dkim_privatekeystring' => '',
'mail_dkim_selector' => '',
'mail_encoding' => '8bit',
'mail_inlinestyle_inline' => '1',
'mail_inlinestyle_remove_style_tags' => '',
'mail_smtp_auth' => '',
'mail_smtp_autotls' => '1',
'mail_smtp_helo' => '',
'mail_smtp_hosts' => 'localhost',
'mail_smtp_keepalive' => '',
'mail_smtp_pass' => '',
'mail_smtp_port' => '587',
'mail_smtp_secure' => '',
'mail_smtp_single_to' => '',
'mail_smtp_timeout' => '10',
'mail_smtp_user' => '',
'mail_use_smtp' => '',
'main_nav_parent' => 'topnav',
'manager_datetime_empty_value' => '—',
'manager_datetime_separator' => ', ',
'manager_date_format' => 'Y-m-d',
'manager_direction' => 'ltr',
'manager_favicon_url' => 'favicon.ico',
'manager_login_url_alternate' => '',
'manager_logo' => '',
'manager_theme' => 'default',
'manager_time_format' => 'H:i',
'manager_tooltip_delay' => '2300',
'manager_tooltip_enable' => '1',
'manager_use_fullname' => '',
'manager_week_start' => '0',
'mgr_source_icon' => 'icon-folder-open-o',
'mgr_tree_icon_context' => 'tree-context',
'modx_browser_default_sort' => 'name',
'modx_browser_default_viewmode' => 'grid',
'modx_browser_tree_hide_files' => '1',
'modx_browser_tree_hide_tooltips' => '1',
'modx_charset' => 'UTF-8',
'package_installer_at_top' => '1',
'parser_recurse_uncacheable' => '1',
'passwordless_activated' => '',
'passwordless_expiration' => '3600',
'password_generated_length' => '10',
'password_min_length' => '8',
'photo_profile_source' => '',
'phpthumb_allow_src_above_docroot' => '',
'phpthumb_cache_maxage' => '30',
'phpthumb_cache_maxfiles' => '10000',
'phpthumb_cache_maxsize' => '100',
'phpthumb_cache_source_enabled' => '',
'phpthumb_document_root' => '',
'phpthumb_error_bgcolor' => 'CCCCFF',
'phpthumb_error_fontsize' => '1',
'phpthumb_error_textcolor' => 'FF0000',
'phpthumb_far' => 'C',
'phpthumb_imagemagick_path' => '',
'phpthumb_nohotlink_enabled' => '1',
'phpthumb_nohotlink_erase_image' => '1',
'phpthumb_nohotlink_text_message' => 'Off-server thumbnailing is not allowed',
'phpthumb_nohotlink_valid_domains' => 'www.silkstory.net',
'phpthumb_nooffsitelink_enabled' => '',
'phpthumb_nooffsitelink_erase_image' => '1',
'phpthumb_nooffsitelink_require_refer' => '',
'phpthumb_nooffsitelink_text_message' => 'Off-server linking is not allowed',
'phpthumb_nooffsitelink_valid_domains' => 'www.silkstory.net',
'phpthumb_nooffsitelink_watermark_src' => '',
'phpthumb_zoomcrop' => '0',
'preserve_menuindex' => '',
'principal_targets' => 'MODX\\Revolution\\modAccessContext,MODX\\Revolution\\modAccessResourceGroup,MODX\\Revolution\\modAccessCategory,MODX\\Revolution\\Sources\\modAccessMediaSource,MODX\\Revolution\\modAccessNamespace',
'proxy_auth_type' => 'BASIC',
'proxy_host' => '',
'proxy_password' => '',
'proxy_port' => '',
'proxy_username' => '',
'publish_default' => '',
'quick_search_in_content' => '1',
'quick_search_result_max' => '10',
'request_controller' => 'index.php',
'request_method_strict' => '',
'resource_static_allow_absolute' => '0',
'resource_static_path' => '/home4/silksto1/public_html/assets/',
'resource_tree_node_name' => 'pagetitle',
'resource_tree_node_name_fallback' => 'alias',
'resource_tree_node_tooltip' => '',
'richtext_default' => '1',
'search_default' => '1',
'send_poweredby_header' => '',
'server_offset_time' => '0',
'session_cookie_domain' => '',
'session_cookie_httponly' => '1',
'session_cookie_lifetime' => '604800',
'session_cookie_path' => '',
'session_cookie_samesite' => '',
'session_cookie_secure' => '',
'session_gc_maxlifetime' => '604800',
'session_handler_class' => 'MODX\\Revolution\\modSessionHandler',
'session_name' => '',
'settings_distro' => 'traditional',
'settings_version' => '3.2.0-pl',
'set_header' => '1',
'show_tv_categories_header' => '1',
'site_name' => 'MODX Revolution',
'site_start' => '1',
'site_status' => '1',
'site_unavailable_message' => '[[%site_unavailable_message]]',
'site_unavailable_page' => '0',
'static_elements_automate_chunks' => '',
'static_elements_automate_plugins' => '',
'static_elements_automate_snippets' => '',
'static_elements_automate_templates' => '',
'static_elements_automate_tvs' => '',
'static_elements_basepath' => '',
'static_elements_default_category' => '0',
'static_elements_default_mediasource' => '0',
'static_elements_html_extension' => '.tpl',
'symlink_merge_fields' => '1',
'syncsite_default' => '1',
'topmenu_show_descriptions' => '1',
'tree_default_sort' => 'menuindex',
'tree_root_id' => '0',
'tvs_below_content' => '',
'unauthorized_page' => '1',
'upload_files' => 'txt,html,htm,xml,js,js.map,css,scss,less,css.map,zip,gz,rar,z,tgz,tar,mp3,mp4,aac,wav,au,wmv,avi,mpg,mpeg,pdf,doc,docx,xls,xlsx,ppt,pptx,jpg,jpeg,png,tiff,svg,svgz,gif,psd,ico,bmp,webp,odt,ods,odp,odb,odg,odf,md,ttf,woff,woff2,eot',
'upload_file_exists' => '1',
'upload_images' => 'jpg,jpeg,png,gif,psd,ico,bmp,tiff,svg,svgz,webp',
'upload_maxsize' => '33554432',
'upload_media' => 'mp3,wav,au,wmv,avi,mpg,mpeg',
'upload_translit' => '1',
'upload_translit_restrict_chars_pattern' => '/[\\0\\x0B\\t\\n\\r\\f\\a&=+%#<>"~:`@\\?\\[\\]\\{\\}\\|\\^\'\\\\]/',
'user_nav_parent' => 'usernav',
'use_alias_path' => '',
'use_context_resource_table' => '1',
'use_editor' => '1',
'use_frozen_parent_uris' => '',
'use_multibyte' => '1',
'use_weblink_target' => '',
'welcome_action' => 'welcome',
'welcome_namespace' => 'core',
'welcome_screen' => '',
'welcome_screen_url' => '//misc.modx.com/revolution/welcome.30.html ',
'which_editor' => '',
'which_element_editor' => '',
'xhtml_urls' => '1',
),
'_userConfig' =>
array (
),
'_logSequence' => 0,
'pluginCache' =>
array (
1 =>
array (
'id' => 1,
'source' => 0,
'property_preprocess' => 0,
'name' => 'Babel',
'description' => 'Links and synchronizes multilingual resources.',
'editor_type' => 0,
'category' => 1,
'cache_type' => 0,
'plugincode' => '/**
* Babel Plugin
*
* @package babel
* @subpackage plugin
*
* @var modX $modx
* @var array $scriptProperties
*/
$className = \'mikrobi\\Babel\\Plugins\\Events\\\\\' . $modx->event->name;
$corePath = $modx->getOption(\'babel.core_path\', null, $modx->getOption(\'core_path\') . \'components/babel/\');
/** @var Babel $babel */
$babel = $modx->getService(\'babel\', Babel::class, $corePath . \'model/babel/\', [
\'core_path\' => $corePath
]);
if ($babel) {
if (class_exists($className)) {
$handler = new $className($modx, $scriptProperties);
if (get_class($handler) == $className) {
$handler->run();
} else {
$modx->log(xPDO::LOG_LEVEL_ERROR, $className . \' could not be initialized!\', \'\', \'Babel Plugin\');
}
} else {
$modx->log(xPDO::LOG_LEVEL_ERROR, $className . \' was not found!\', \'\', \'Babel Plugin\');
}
}
return;',
'locked' => 0,
'properties' => 'a:0:{}',
'disabled' => 0,
'moduleguid' => '',
'static' => 0,
'static_file' => '',
),
2 =>
array (
'id' => 2,
'source' => 1,
'property_preprocess' => 0,
'name' => 'gatewaySwitch',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'plugincode' => 'if ($modx->context->get(\'key\') != "mgr") {
switch ($_REQUEST[\'cultureKey\']) {
case \'en\':
$modx->switchContext(\'en\');
break;
case \'zh\':
$modx->switchContext(\'zh\');
break;
default:
$modx->switchContext(\'web\');
break;
}
unset($_GET[\'cultureKey\']);
}',
'locked' => 0,
'properties' => 'a:0:{}',
'disabled' => 0,
'moduleguid' => '',
'static' => 0,
'static_file' => '',
),
),
'sourceCache' =>
array (
'MODX\\Revolution\\modChunk' =>
array (
'top' =>
array (
'fields' =>
array (
'id' => 2,
'source' => 1,
'property_preprocess' => false,
'name' => 'top',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => '<!DOCTYPE html>
<html lang="[[!GetCurrentLanguage]]">
<head>
[[$googleAnalytics]][[!GetOgTags]]
<base href="[[++site_url]]">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>SilkStory - [[*longtitle]]</title>
<meta name="description" content="[[*description]]">
<meta name="keywords" content="[[*introtext]]">
<meta property="og:title" content="SilkStory - [[*longtitle]]">
<meta property="og:description" content="[[*description]]">
<meta property="og:image" content="">
<link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/assets/css/styles.css?v=3">
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8212661150885235" crossorigin="anonymous"></script>
[[*ExtraHeadScripts]]
</head>
<body id="[[*bodyId]]" class="[[*bodyClass]]">
[[$shareThis]]
<header>
<section class="navbar2">
<div class="container d-xxl-flex justify-content-xxl-end">
<div class="d-flex d-sm-flex d-md-flex justify-content-end sec-nav">[[!LanguageSwitcher]]</div>
</div>
</section>
<nav class="navbar navbar-light navbar-expand-md">
<div class="container">
<a class="navbar-brand" href="/[[!GetCurrentLanguage]]">
<span class="en">SilkStory</span>
<span class="zh">
絲傳
</span>
</a>
<a
class="nav-link search d-block d-sm-none"
href="#"
data-bs-target="#search"
data-bs-toggle="modal"
style="margin-left: auto;padding-right: 20px; font-size:26px;"
>
<i class="bi bi-search search"></i>
</a>
<button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navcol-1">
<span class="visually-hidden">
Toggle
navigation
</span>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse d-md-flex d-xxl-flex justify-content-md-end" id="navcol-1">
[[Wayfinder? &startId=`0`&level=`1`&outerTpl=`menuOuterTpl`&rowTpl=`menuRowTpl`]]
</div>
</div>
</nav>
</header>
<main>
[[!If? &subject=`[[*showBreadcrumbs]]` &operator=`EQ` &operand=`1` &then=`[[$breadcrumbs]]`]]
',
'locked' => false,
'properties' =>
array (
),
'static' => false,
'static_file' => '',
'content' => '<!DOCTYPE html>
<html lang="[[!GetCurrentLanguage]]">
<head>
[[$googleAnalytics]][[!GetOgTags]]
<base href="[[++site_url]]">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<title>SilkStory - [[*longtitle]]</title>
<meta name="description" content="[[*description]]">
<meta name="keywords" content="[[*introtext]]">
<meta property="og:title" content="SilkStory - [[*longtitle]]">
<meta property="og:description" content="[[*description]]">
<meta property="og:image" content="">
<link rel="stylesheet" href="/assets/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/assets/css/styles.css?v=3">
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8212661150885235" crossorigin="anonymous"></script>
[[*ExtraHeadScripts]]
</head>
<body id="[[*bodyId]]" class="[[*bodyClass]]">
[[$shareThis]]
<header>
<section class="navbar2">
<div class="container d-xxl-flex justify-content-xxl-end">
<div class="d-flex d-sm-flex d-md-flex justify-content-end sec-nav">[[!LanguageSwitcher]]</div>
</div>
</section>
<nav class="navbar navbar-light navbar-expand-md">
<div class="container">
<a class="navbar-brand" href="/[[!GetCurrentLanguage]]">
<span class="en">SilkStory</span>
<span class="zh">
絲傳
</span>
</a>
<a
class="nav-link search d-block d-sm-none"
href="#"
data-bs-target="#search"
data-bs-toggle="modal"
style="margin-left: auto;padding-right: 20px; font-size:26px;"
>
<i class="bi bi-search search"></i>
</a>
<button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navcol-1">
<span class="visually-hidden">
Toggle
navigation
</span>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse d-md-flex d-xxl-flex justify-content-md-end" id="navcol-1">
[[Wayfinder? &startId=`0`&level=`1`&outerTpl=`menuOuterTpl`&rowTpl=`menuRowTpl`]]
</div>
</div>
</nav>
</header>
<main>
[[!If? &subject=`[[*showBreadcrumbs]]` &operator=`EQ` &operand=`1` &then=`[[$breadcrumbs]]`]]
',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'googleAnalytics' =>
array (
'fields' =>
array (
'id' => 5,
'source' => 1,
'property_preprocess' => false,
'name' => 'googleAnalytics',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => '<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-79W9MR2WZM"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(\'js\', new Date());
gtag(\'config\', \'G-79W9MR2WZM\');
</script>',
'locked' => false,
'properties' =>
array (
),
'static' => false,
'static_file' => '',
'content' => '<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-79W9MR2WZM"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(\'js\', new Date());
gtag(\'config\', \'G-79W9MR2WZM\');
</script>',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'shareThis' =>
array (
'fields' =>
array (
'id' => 4,
'source' => 1,
'property_preprocess' => false,
'name' => 'shareThis',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => '<script type=\'text/javascript\' src=\'https://platform-api.sharethis.com/js/sharethis.js#property=5e805c309f548d001a3832ba&product=sop\' async=\'async\'></script>',
'locked' => false,
'properties' =>
array (
),
'static' => false,
'static_file' => '',
'content' => '<script type=\'text/javascript\' src=\'https://platform-api.sharethis.com/js/sharethis.js#property=5e805c309f548d001a3832ba&product=sop\' async=\'async\'></script>',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'breadcrumbs' =>
array (
'fields' =>
array (
'id' => 3,
'source' => 1,
'property_preprocess' => false,
'name' => 'breadcrumbs',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => '<div class="container">
<div class="row">
<div class="col-md-12 pt-3">[[!BreadCrumb? &containerTpl=`BreadCrumbContainerTpl` &homeCrumbTpl=`myLinkCrumbTpl` &linkCrumbTpl=`myLinkCrumbTpl` ¤tCrumbTpl=`myCurrentCrumbTpl` &showHidden=`1` &showHomeCrumb=`1`]]</div>
</div>
</div>',
'locked' => false,
'properties' =>
array (
),
'static' => false,
'static_file' => '',
'content' => '<div class="container">
<div class="row">
<div class="col-md-12 pt-3">[[!BreadCrumb? &containerTpl=`BreadCrumbContainerTpl` &homeCrumbTpl=`myLinkCrumbTpl` &linkCrumbTpl=`myLinkCrumbTpl` ¤tCrumbTpl=`myCurrentCrumbTpl` &showHidden=`1` &showHomeCrumb=`1`]]</div>
</div>
</div>',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'bottom' =>
array (
'fields' =>
array (
'id' => 1,
'source' => 1,
'property_preprocess' => false,
'name' => 'bottom',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => '</main>[[*BeforeBodyScripts]][[!searchBox]]
<footer class="text-center py-4">
<div class="container">
<div class="row">
<div class="col d-xxl-flex justify-content-xxl-start">
<p class="text-muted my-2">Copyright © [[!GetYear]] SilkStory</p>
</div>
<div class="col d-flex justify-content-end social-icons">
<ul class="list-inline my-2">
<li class="list-inline-item me-4">Follow Us</li>
<li class="list-inline-item me-4"><a href="https://www.facebook.com/meizai.chou" target="_blank"><i class="bi bi-facebook"></i></a></li>
<li class="list-inline-item me-4"><a href="https://www.youtube.com/user/choumeizai" target="_blank"><i class="bi bi-youtube"></i></li>
<li class="list-inline-item me-4"><a href="mailto:info@smallboy.net" target="_blank"><i class="bi bi-envelope"></i></li>
</ul>
</div>
</div>
</div>
</footer>
<script src=" https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</body>',
'locked' => false,
'properties' =>
array (
),
'static' => false,
'static_file' => '',
'content' => '</main>[[*BeforeBodyScripts]][[!searchBox]]
<footer class="text-center py-4">
<div class="container">
<div class="row">
<div class="col d-xxl-flex justify-content-xxl-start">
<p class="text-muted my-2">Copyright © [[!GetYear]] SilkStory</p>
</div>
<div class="col d-flex justify-content-end social-icons">
<ul class="list-inline my-2">
<li class="list-inline-item me-4">Follow Us</li>
<li class="list-inline-item me-4"><a href="https://www.facebook.com/meizai.chou" target="_blank"><i class="bi bi-facebook"></i></a></li>
<li class="list-inline-item me-4"><a href="https://www.youtube.com/user/choumeizai" target="_blank"><i class="bi bi-youtube"></i></li>
<li class="list-inline-item me-4"><a href="mailto:info@smallboy.net" target="_blank"><i class="bi bi-envelope"></i></li>
</ul>
</div>
</div>
</div>
</footer>
<script src=" https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
</body>',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
),
'MODX\\Revolution\\modSnippet' =>
array (
'Wayfinder' =>
array (
'fields' =>
array (
'id' => 5,
'source' => 0,
'property_preprocess' => false,
'name' => 'Wayfinder',
'description' => 'Wayfinder for MODx Revolution 2.0.0-beta-5 and later.',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => '/**
* Wayfinder Snippet to build site navigation menus
*
* Totally refactored from original DropMenu nav builder to make it easier to
* create custom navigation by using chunks as output templates. By using
* templates, many of the paramaters are no longer needed for flexible output
* including tables, unordered- or ordered-lists (ULs or OLs), definition lists
* (DLs) or in any other format you desire.
*
* @version 2.1.1-beta5
* @author Garry Nutting (collabpad.com)
* @author Kyle Jaebker (muddydogpaws.com)
* @author Ryan Thrash (modx.com)
* @author Shaun McCormick (modx.com)
* @author Jason Coward (modx.com)
*
* @example [[Wayfinder? &startId=`0`]]
*
* @var modX $modx
* @var array $scriptProperties
*
* @package wayfinder
*/
$wayfinder_base = $modx->getOption(\'wayfinder.core_path\',$scriptProperties,$modx->getOption(\'core_path\').\'components/wayfinder/\');
/* include a custom config file if specified */
if (isset($scriptProperties[\'config\'])) {
$scriptProperties[\'config\'] = str_replace(\'../\',\'\',$scriptProperties[\'config\']);
$scriptProperties[\'config\'] = $wayfinder_base.\'configs/\'.$scriptProperties[\'config\'].\'.config.php\';
} else {
$scriptProperties[\'config\'] = $wayfinder_base.\'configs/default.config.php\';
}
if (file_exists($scriptProperties[\'config\'])) {
include $scriptProperties[\'config\'];
}
/* include wayfinder class */
include_once $wayfinder_base.\'wayfinder.class.php\';
if (!$modx->loadClass(\'Wayfinder\',$wayfinder_base,true,true)) {
return \'error: Wayfinder class not found\';
}
$wf = new Wayfinder($modx,$scriptProperties);
/* get user class definitions
* TODO: eventually move these into config parameters */
$wf->_css = array(
\'first\' => isset($firstClass) ? $firstClass : \'\',
\'last\' => isset($lastClass) ? $lastClass : \'last\',
\'here\' => isset($hereClass) ? $hereClass : \'active\',
\'parent\' => isset($parentClass) ? $parentClass : \'\',
\'row\' => isset($rowClass) ? $rowClass : \'\',
\'outer\' => isset($outerClass) ? $outerClass : \'\',
\'inner\' => isset($innerClass) ? $innerClass : \'\',
\'level\' => isset($levelClass) ? $levelClass: \'\',
\'self\' => isset($selfClass) ? $selfClass : \'\',
\'weblink\' => isset($webLinkClass) ? $webLinkClass : \'\'
);
/* get user templates
* TODO: eventually move these into config parameters */
$wf->_templates = array(
\'outerTpl\' => isset($outerTpl) ? $outerTpl : \'\',
\'rowTpl\' => isset($rowTpl) ? $rowTpl : \'\',
\'parentRowTpl\' => isset($parentRowTpl) ? $parentRowTpl : \'\',
\'parentRowHereTpl\' => isset($parentRowHereTpl) ? $parentRowHereTpl : \'\',
\'hereTpl\' => isset($hereTpl) ? $hereTpl : \'\',
\'innerTpl\' => isset($innerTpl) ? $innerTpl : \'\',
\'innerRowTpl\' => isset($innerRowTpl) ? $innerRowTpl : \'\',
\'innerHereTpl\' => isset($innerHereTpl) ? $innerHereTpl : \'\',
\'activeParentRowTpl\' => isset($activeParentRowTpl) ? $activeParentRowTpl : \'\',
\'categoryFoldersTpl\' => isset($categoryFoldersTpl) ? $categoryFoldersTpl : \'\',
\'startItemTpl\' => isset($startItemTpl) ? $startItemTpl : \'\'
);
/* process Wayfinder */
$output = $wf->run();
if ($wf->_config[\'debug\']) {
$output .= $wf->renderDebugOutput();
}
/* output results */
if ($wf->_config[\'ph\']) {
$modx->setPlaceholder($wf->_config[\'ph\'],$output);
} else {
return $output;
}',
'locked' => false,
'properties' =>
array (
'level' =>
array (
'name' => 'level',
'desc' => 'prop_wayfinder.level_desc',
'type' => 'textfield',
'options' => '',
'value' => '0',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Depth (number of levels) to build the menu from. 0 goes through all levels.',
'area' => '',
'area_trans' => '',
),
'includeDocs' =>
array (
'name' => 'includeDocs',
'desc' => 'prop_wayfinder.includeDocs_desc',
'type' => 'textfield',
'options' => '',
'value' => '0',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Acts as a filter and will limit the output to only the documents specified in this parameter. The startId is still required.',
'area' => '',
'area_trans' => '',
),
'excludeDocs' =>
array (
'name' => 'excludeDocs',
'desc' => 'prop_wayfinder.excludeDocs_desc',
'type' => 'textfield',
'options' => '',
'value' => '0',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Acts as a filter and will remove the documents specified in this parameter from the output. The startId is still required.',
'area' => '',
'area_trans' => '',
),
'contexts' =>
array (
'name' => 'contexts',
'desc' => 'prop_wayfinder.contexts_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Specify the contexts for the Resources that will be loaded in this menu. Useful when used with startId at 0 to show all first-level items. Note: This will increase load times a bit, but if you set cacheResults to 1, that will offset the load time.',
'area' => '',
'area_trans' => '',
),
'cacheResults' =>
array (
'name' => 'cacheResults',
'desc' => 'prop_wayfinder.cacheResults_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => true,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Cache the generated menu to the MODX Resource cache. Setting this to 1 will speed up the loading of your menus.',
'area' => '',
'area_trans' => '',
),
'cacheTime' =>
array (
'name' => 'cacheTime',
'desc' => 'prop_wayfinder.cacheTime_desc',
'type' => 'textfield',
'options' => '',
'value' => 3600,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'The number of seconds to store the cached menu, if cacheResults is 1. Set to 0 to store indefinitely until cache is manually cleared.',
'area' => '',
'area_trans' => '',
),
'ph' =>
array (
'name' => 'ph',
'desc' => 'prop_wayfinder.ph_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => false,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'To display send the output of Wayfinder to a placeholder set the ph parameter equal to the name of the desired placeholder. All output including the debugging (if on) will be sent to the placeholder specified.',
'area' => '',
'area_trans' => '',
),
'debug' =>
array (
'name' => 'debug',
'desc' => 'prop_wayfinder.debug_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => false,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'With the debug parameter set to 1, Wayfinder will output information on how each Resource was processed.',
'area' => '',
'area_trans' => '',
),
'ignoreHidden' =>
array (
'name' => 'ignoreHidden',
'desc' => 'prop_wayfinder.ignoreHidden_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => false,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'The ignoreHidden parameter allows Wayfinder to ignore the display in menu flag that can be set for each document. With this parameter set to 1, all Resources will be displayed regardless of the Display in Menu flag.',
'area' => '',
'area_trans' => '',
),
'hideSubMenus' =>
array (
'name' => 'hideSubMenus',
'desc' => 'prop_wayfinder.hideSubMenus_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => false,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'The hideSubMenus parameter will remove all non-active submenus from the Wayfinder output if set to 1. This parameter only works if multiple levels are being displayed.',
'area' => '',
'area_trans' => '',
),
'useWeblinkUrl' =>
array (
'name' => 'useWeblinkUrl',
'desc' => 'prop_wayfinder.useWeblinkUrl_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => true,
'lexicon' => 'wayfinder:properties',
'desc_trans' => ' If WebLinks are used in the output, Wayfinder will output the link specified in the WebLink instead of the normal MODx link. To use the standard display of WebLinks (like any other Resource) set this to 0.',
'area' => '',
'area_trans' => '',
),
'fullLink' =>
array (
'name' => 'fullLink',
'desc' => 'prop_wayfinder.fullLink_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => false,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'If set to 1, will display the entire, absolute URL in the link. (It is recommended to use scheme instead.)',
'area' => '',
'area_trans' => '',
),
'scheme' =>
array (
'name' => 'scheme',
'desc' => 'prop_wayfinder.scheme_desc',
'type' => 'list',
'options' =>
array (
0 =>
array (
'text' => 'prop_wayfinder.relative',
'value' => '',
'name' => 'Relative',
),
1 =>
array (
'text' => 'prop_wayfinder.absolute',
'value' => 'abs',
'name' => 'Absolute',
),
2 =>
array (
'text' => 'prop_wayfinder.full',
'value' => 'full',
'name' => 'Full',
),
),
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Determines how URLs are generated for each link. Set to "abs" to show the absolute URL, "full" to show the full URL, and blank to use the relative URL. Defaults to relative.',
'area' => '',
'area_trans' => '',
),
'sortOrder' =>
array (
'name' => 'sortOrder',
'desc' => 'prop_wayfinder.sortOrder_desc',
'type' => 'list',
'options' =>
array (
0 =>
array (
'text' => 'prop_wayfinder.ascending',
'value' => 'ASC',
'name' => 'Ascending',
),
1 =>
array (
'text' => 'prop_wayfinder.descending',
'value' => 'DESC',
'name' => 'Descending',
),
),
'value' => 'ASC',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Allows the menu to be sorted in either ascending or descending order.',
'area' => '',
'area_trans' => '',
),
'sortBy' =>
array (
'name' => 'sortBy',
'desc' => 'prop_wayfinder.sortBy_desc',
'type' => 'textfield',
'options' => '',
'value' => 'menuindex',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Sorts the output by any of the Resource fields on a level by level basis. This means that each submenu will be sorted independently of all other submenus at the same level. Random will sort the output differently every time the page is loaded if the snippet is called uncached.',
'area' => '',
'area_trans' => '',
),
'limit' =>
array (
'name' => 'limit',
'desc' => 'prop_wayfinder.limit_desc',
'type' => 'textfield',
'options' => '',
'value' => '0',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Causes Wayfinder to only process the number of items specified per level.',
'area' => '',
'area_trans' => '',
),
'cssTpl' =>
array (
'name' => 'cssTpl',
'desc' => 'prop_wayfinder.cssTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => false,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'This parameter allows for a chunk containing a link to a style sheet or style information to be inserted into the head section of the generated page.',
'area' => '',
'area_trans' => '',
),
'jsTpl' =>
array (
'name' => 'jsTpl',
'desc' => 'prop_wayfinder.jsTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => false,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'This parameter allows for a chunk containing some Javascript to be inserted into the head section of the generated page.',
'area' => '',
'area_trans' => '',
),
'rowIdPrefix' =>
array (
'name' => 'rowIdPrefix',
'desc' => 'prop_wayfinder.rowIdPrefix_desc',
'type' => 'textfield',
'options' => '',
'value' => false,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'If set, Wayfinder will replace the id placeholder with a unique id consisting of the specified prefix plus the Resource id.',
'area' => '',
'area_trans' => '',
),
'textOfLinks' =>
array (
'name' => 'textOfLinks',
'desc' => 'prop_wayfinder.textOfLinks_desc',
'type' => 'textfield',
'options' => '',
'value' => 'menutitle',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'This field will be inserted into the linktext placeholder.',
'area' => '',
'area_trans' => '',
),
'titleOfLinks' =>
array (
'name' => 'titleOfLinks',
'desc' => 'prop_wayfinder.titleOfLinks_desc',
'type' => 'textfield',
'options' => '',
'value' => 'pagetitle',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'This field will be inserted into the linktitle placeholder.',
'area' => '',
'area_trans' => '',
),
'displayStart' =>
array (
'name' => 'displayStart',
'desc' => 'prop_wayfinder.displayStart_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => false,
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Show the document as referenced by startId in the menu.',
'area' => '',
'area_trans' => '',
),
'firstClass' =>
array (
'name' => 'firstClass',
'desc' => 'prop_wayfinder.firstClass_desc',
'type' => 'textfield',
'options' => '',
'value' => 'first',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'CSS class for the first item at a given menu level.',
'area' => '',
'area_trans' => '',
),
'lastClass' =>
array (
'name' => 'lastClass',
'desc' => 'prop_wayfinder.lastClass_desc',
'type' => 'textfield',
'options' => '',
'value' => 'last',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'CSS class for the last item at a given menu level.',
'area' => '',
'area_trans' => '',
),
'hereClass' =>
array (
'name' => 'hereClass',
'desc' => 'prop_wayfinder.hereClass_desc',
'type' => 'textfield',
'options' => '',
'value' => 'active',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'CSS class for the items showing where you are, all the way up the chain.',
'area' => '',
'area_trans' => '',
),
'parentClass' =>
array (
'name' => 'parentClass',
'desc' => 'prop_wayfinder.parentClass_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'CSS class for menu items that are a container and have children.',
'area' => '',
'area_trans' => '',
),
'rowClass' =>
array (
'name' => 'rowClass',
'desc' => 'prop_wayfinder.rowClass_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'CSS class denoting each output row.',
'area' => '',
'area_trans' => '',
),
'outerClass' =>
array (
'name' => 'outerClass',
'desc' => 'prop_wayfinder.outerClass_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'CSS class for the outer template.',
'area' => '',
'area_trans' => '',
),
'innerClass' =>
array (
'name' => 'innerClass',
'desc' => 'prop_wayfinder.innerClass_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'CSS class for the inner template.',
'area' => '',
'area_trans' => '',
),
'levelClass' =>
array (
'name' => 'levelClass',
'desc' => 'prop_wayfinder.levelClass_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'CSS class denoting every output row level. The level number will be added to the specified class (level1, level2, level3 etc if you specified "level").',
'area' => '',
'area_trans' => '',
),
'selfClass' =>
array (
'name' => 'selfClass',
'desc' => 'prop_wayfinder.selfClass_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'CSS class for the current item.',
'area' => '',
'area_trans' => '',
),
'webLinkClass' =>
array (
'name' => 'webLinkClass',
'desc' => 'prop_wayfinder.webLinkClass_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'CSS class for weblink items.',
'area' => '',
'area_trans' => '',
),
'outerTpl' =>
array (
'name' => 'outerTpl',
'desc' => 'prop_wayfinder.outerTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for the outer most container; if not included, a string including "<ul>[[+wf.wrapper]]</ul>" is assumed.',
'area' => '',
'area_trans' => '',
),
'rowTpl' =>
array (
'name' => 'rowTpl',
'desc' => 'prop_wayfinder.rowTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for the regular row items.',
'area' => '',
'area_trans' => '',
),
'parentRowTpl' =>
array (
'name' => 'parentRowTpl',
'desc' => 'prop_wayfinder.parentRowTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for any Resource that is a container and has children. Remember the [wf.wrapper] placeholder to output the children documents.',
'area' => '',
'area_trans' => '',
),
'parentRowHereTpl' =>
array (
'name' => 'parentRowHereTpl',
'desc' => 'prop_wayfinder.parentRowHereTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for the current Resource if it is a container and has children. Remember the [wf.wrapper] placeholder to output the children documents.',
'area' => '',
'area_trans' => '',
),
'hereTpl' =>
array (
'name' => 'hereTpl',
'desc' => 'prop_wayfinder.hereTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for the current Resource.',
'area' => '',
'area_trans' => '',
),
'innerTpl' =>
array (
'name' => 'innerTpl',
'desc' => 'prop_wayfinder.innerTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for each submenu. If no innerTpl is specified the outerTpl is used in its place.',
'area' => '',
'area_trans' => '',
),
'innerRowTpl' =>
array (
'name' => 'innerRowTpl',
'desc' => 'prop_wayfinder.innerRowTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for the row items in a subfolder.',
'area' => '',
'area_trans' => '',
),
'innerHereTpl' =>
array (
'name' => 'innerHereTpl',
'desc' => 'prop_wayfinder.innerHereTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for the current Resource if it is in a subfolder.',
'area' => '',
'area_trans' => '',
),
'activeParentRowTpl' =>
array (
'name' => 'activeParentRowTpl',
'desc' => 'prop_wayfinder.activeParentRowTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for items that are containers, have children and are currently active in the tree.',
'area' => '',
'area_trans' => '',
),
'categoryFoldersTpl' =>
array (
'name' => 'categoryFoldersTpl',
'desc' => 'prop_wayfinder.categoryFoldersTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for category folders. Category folders are determined by setting the template to blank or by setting the link attributes field to rel="category".',
'area' => '',
'area_trans' => '',
),
'startItemTpl' =>
array (
'name' => 'startItemTpl',
'desc' => 'prop_wayfinder.startItemTpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Name of the chunk containing the template for the start item, if enabled via the &displayStart parameter. Note: the default template shows the start item but does not link it. If you do not need a link, a class can be applied to the default template using the parameter &firstClass=`className`.',
'area' => '',
'area_trans' => '',
),
'permissions' =>
array (
'name' => 'permissions',
'desc' => 'prop_wayfinder.permissions_desc',
'type' => 'textfield',
'options' => '',
'value' => 'list',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Will check for a permission on the Resource. Defaults to "list" - set to blank to skip normal permissions checks.',
'area' => '',
'area_trans' => '',
),
'hereId' =>
array (
'name' => 'hereId',
'desc' => 'prop_wayfinder.hereId_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Optional. If set, will change the "here" Resource to this ID. Defaults to the currently active Resource.',
'area' => '',
'area_trans' => '',
),
'where' =>
array (
'name' => 'where',
'desc' => 'prop_wayfinder.where_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Optional. A JSON object for where conditions for all items selected in the menu.',
'area' => '',
'area_trans' => '',
),
'templates' =>
array (
'name' => 'templates',
'desc' => 'prop_wayfinder.templates_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Optional. A comma-separated list of Template IDs to restrict selected Resources to.',
'area' => '',
'area_trans' => '',
),
'previewUnpublished' =>
array (
'name' => 'previewUnpublished',
'desc' => 'prop_wayfinder.previewunpublished_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'wayfinder:properties',
'desc_trans' => 'Optional. If set to Yes, if you are logged into the mgr and have the view_unpublished permission, it will allow previewing of unpublished resources in your menus in the front-end.',
'area' => '',
'area_trans' => '',
),
),
'moduleguid' => '',
'static' => false,
'static_file' => '',
'content' => '/**
* Wayfinder Snippet to build site navigation menus
*
* Totally refactored from original DropMenu nav builder to make it easier to
* create custom navigation by using chunks as output templates. By using
* templates, many of the paramaters are no longer needed for flexible output
* including tables, unordered- or ordered-lists (ULs or OLs), definition lists
* (DLs) or in any other format you desire.
*
* @version 2.1.1-beta5
* @author Garry Nutting (collabpad.com)
* @author Kyle Jaebker (muddydogpaws.com)
* @author Ryan Thrash (modx.com)
* @author Shaun McCormick (modx.com)
* @author Jason Coward (modx.com)
*
* @example [[Wayfinder? &startId=`0`]]
*
* @var modX $modx
* @var array $scriptProperties
*
* @package wayfinder
*/
$wayfinder_base = $modx->getOption(\'wayfinder.core_path\',$scriptProperties,$modx->getOption(\'core_path\').\'components/wayfinder/\');
/* include a custom config file if specified */
if (isset($scriptProperties[\'config\'])) {
$scriptProperties[\'config\'] = str_replace(\'../\',\'\',$scriptProperties[\'config\']);
$scriptProperties[\'config\'] = $wayfinder_base.\'configs/\'.$scriptProperties[\'config\'].\'.config.php\';
} else {
$scriptProperties[\'config\'] = $wayfinder_base.\'configs/default.config.php\';
}
if (file_exists($scriptProperties[\'config\'])) {
include $scriptProperties[\'config\'];
}
/* include wayfinder class */
include_once $wayfinder_base.\'wayfinder.class.php\';
if (!$modx->loadClass(\'Wayfinder\',$wayfinder_base,true,true)) {
return \'error: Wayfinder class not found\';
}
$wf = new Wayfinder($modx,$scriptProperties);
/* get user class definitions
* TODO: eventually move these into config parameters */
$wf->_css = array(
\'first\' => isset($firstClass) ? $firstClass : \'\',
\'last\' => isset($lastClass) ? $lastClass : \'last\',
\'here\' => isset($hereClass) ? $hereClass : \'active\',
\'parent\' => isset($parentClass) ? $parentClass : \'\',
\'row\' => isset($rowClass) ? $rowClass : \'\',
\'outer\' => isset($outerClass) ? $outerClass : \'\',
\'inner\' => isset($innerClass) ? $innerClass : \'\',
\'level\' => isset($levelClass) ? $levelClass: \'\',
\'self\' => isset($selfClass) ? $selfClass : \'\',
\'weblink\' => isset($webLinkClass) ? $webLinkClass : \'\'
);
/* get user templates
* TODO: eventually move these into config parameters */
$wf->_templates = array(
\'outerTpl\' => isset($outerTpl) ? $outerTpl : \'\',
\'rowTpl\' => isset($rowTpl) ? $rowTpl : \'\',
\'parentRowTpl\' => isset($parentRowTpl) ? $parentRowTpl : \'\',
\'parentRowHereTpl\' => isset($parentRowHereTpl) ? $parentRowHereTpl : \'\',
\'hereTpl\' => isset($hereTpl) ? $hereTpl : \'\',
\'innerTpl\' => isset($innerTpl) ? $innerTpl : \'\',
\'innerRowTpl\' => isset($innerRowTpl) ? $innerRowTpl : \'\',
\'innerHereTpl\' => isset($innerHereTpl) ? $innerHereTpl : \'\',
\'activeParentRowTpl\' => isset($activeParentRowTpl) ? $activeParentRowTpl : \'\',
\'categoryFoldersTpl\' => isset($categoryFoldersTpl) ? $categoryFoldersTpl : \'\',
\'startItemTpl\' => isset($startItemTpl) ? $startItemTpl : \'\'
);
/* process Wayfinder */
$output = $wf->run();
if ($wf->_config[\'debug\']) {
$output .= $wf->renderDebugOutput();
}
/* output results */
if ($wf->_config[\'ph\']) {
$modx->setPlaceholder($wf->_config[\'ph\'],$output);
} else {
return $output;
}',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
),
),
'GetCurrentLanguage' =>
array (
'fields' =>
array (
'id' => 8,
'source' => 1,
'property_preprocess' => false,
'name' => 'GetCurrentLanguage',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => 'return $_REQUEST[\'cultureKey\'];',
'locked' => false,
'properties' =>
array (
),
'moduleguid' => '',
'static' => false,
'static_file' => '',
'content' => 'return $_REQUEST[\'cultureKey\'];',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'GetOgTags' =>
array (
'fields' =>
array (
'id' => 16,
'source' => 1,
'property_preprocess' => false,
'name' => 'GetOgTags',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => 'use QCubed\\Query\\QQ;
require_once($_SERVER[\'DOCUMENT_ROOT\'] . \'/_qcube4/qcubed.inc.php\');
//variables
$strHTML = \'\';
$strCultureKey = $_REQUEST[\'cultureKey\'];
if (isset($_GET[\'characterId\'])) {
//Load Character Object
$objCharacter = SilkCharacters::loadById($_GET[\'characterId\']);
if ($objCharacter) {
$strCharacter = $objCharacter->getCharacter();
if ($strCultureKey == "en") {
$strHTML .= \'<meta name="twitter:card" content="summary_large_image" /><meta name="twitter:site" content="@choumeizai" />\';
$strHTML .= \'<meta property="og:title" content="The Story of \' . $objCharacter->getCharacter() . \'" />\';
$strHTML .= \'<meta property="og:description" content="\' . $objCharacter->getEnInterpretation() . \'" />\';
$strHTML .= \'<meta property="og:url" content="http://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'] . \'" />\';
$strHTML .= \'<meta property="og:video" content="https://www.youtube.com/watch?v=\' . $objCharacter->EnYoutube . \'" />\';
$strHTML .= \'<meta property="og:image" content="https://img.youtube.com/vi/\' . $objCharacter->EnYoutube . \'/0.jpg" />\';
} else {
$strHTML .= \'<meta name="twitter:card" content="summary_large_image" /><meta name="twitter:site" content="@choumeizai" />\';
$strHTML .= \'<meta property="og:title" content="的故事「\' . $objCharacter->getCharacter() . \'」" />\';
$strHTML .= \'<meta property="og:description" content="\' . $objCharacter->getCnInterpretation() . \'" />\';
$strHTML .= \'<meta property="og:url" content="http://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'] . \'" />\';
$strHTML .= \'<meta property="og:video" content="https://www.youtube.com/watch?v=\' . $objCharacter->CnYoutube . \'" />\';
$strHTML .= \'<meta property="og:image" content="https://img.youtube.com/vi/\' . $objCharacter->CnYoutube . \'/0.jpg" />\';
}
}
echo $strHTML;
}',
'locked' => false,
'properties' =>
array (
),
'moduleguid' => '',
'static' => false,
'static_file' => '',
'content' => 'use QCubed\\Query\\QQ;
require_once($_SERVER[\'DOCUMENT_ROOT\'] . \'/_qcube4/qcubed.inc.php\');
//variables
$strHTML = \'\';
$strCultureKey = $_REQUEST[\'cultureKey\'];
if (isset($_GET[\'characterId\'])) {
//Load Character Object
$objCharacter = SilkCharacters::loadById($_GET[\'characterId\']);
if ($objCharacter) {
$strCharacter = $objCharacter->getCharacter();
if ($strCultureKey == "en") {
$strHTML .= \'<meta name="twitter:card" content="summary_large_image" /><meta name="twitter:site" content="@choumeizai" />\';
$strHTML .= \'<meta property="og:title" content="The Story of \' . $objCharacter->getCharacter() . \'" />\';
$strHTML .= \'<meta property="og:description" content="\' . $objCharacter->getEnInterpretation() . \'" />\';
$strHTML .= \'<meta property="og:url" content="http://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'] . \'" />\';
$strHTML .= \'<meta property="og:video" content="https://www.youtube.com/watch?v=\' . $objCharacter->EnYoutube . \'" />\';
$strHTML .= \'<meta property="og:image" content="https://img.youtube.com/vi/\' . $objCharacter->EnYoutube . \'/0.jpg" />\';
} else {
$strHTML .= \'<meta name="twitter:card" content="summary_large_image" /><meta name="twitter:site" content="@choumeizai" />\';
$strHTML .= \'<meta property="og:title" content="的故事「\' . $objCharacter->getCharacter() . \'」" />\';
$strHTML .= \'<meta property="og:description" content="\' . $objCharacter->getCnInterpretation() . \'" />\';
$strHTML .= \'<meta property="og:url" content="http://\' . $_SERVER[\'HTTP_HOST\'] . $_SERVER[\'REQUEST_URI\'] . \'" />\';
$strHTML .= \'<meta property="og:video" content="https://www.youtube.com/watch?v=\' . $objCharacter->CnYoutube . \'" />\';
$strHTML .= \'<meta property="og:image" content="https://img.youtube.com/vi/\' . $objCharacter->CnYoutube . \'/0.jpg" />\';
}
}
echo $strHTML;
}',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'LanguageSwitcher' =>
array (
'fields' =>
array (
'id' => 12,
'source' => 1,
'property_preprocess' => false,
'name' => 'LanguageSwitcher',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => '$actual_link = (empty($_SERVER[\'HTTPS\']) ? \'http\' : \'https\') . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$strEnUrl = str_replace(\'/zh/\', \'/en/\', $actual_link);
$strZhhUrl = str_replace(\'/en/\', \'/zh/\', $actual_link);
echo \'<div class="d-flex d-sm-flex d-md-flex justify-content-end sec-nav"><a href="\' . $strEnUrl . \'">Eng</a><a href="\' . $strZhhUrl . \'">中文</a></div>\';',
'locked' => false,
'properties' =>
array (
),
'moduleguid' => '',
'static' => false,
'static_file' => '',
'content' => '$actual_link = (empty($_SERVER[\'HTTPS\']) ? \'http\' : \'https\') . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$strEnUrl = str_replace(\'/zh/\', \'/en/\', $actual_link);
$strZhhUrl = str_replace(\'/en/\', \'/zh/\', $actual_link);
echo \'<div class="d-flex d-sm-flex d-md-flex justify-content-end sec-nav"><a href="\' . $strEnUrl . \'">Eng</a><a href="\' . $strZhhUrl . \'">中文</a></div>\';',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'BreadCrumb' =>
array (
'fields' =>
array (
'id' => 3,
'source' => 0,
'property_preprocess' => false,
'name' => 'BreadCrumb',
'description' => 'This snippet will create a breadcrumb navigation for the current resource or a specific resource.',
'editor_type' => 0,
'category' => 2,
'cache_type' => 0,
'snippet' => '/**
* BreadCrumb
* Copyright 2011 Benjamin Vauchel <contact@omycode.fr>
*
* BreadCrumb 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.
*
* BreadCrumb 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
* BreadCrumb; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
* Suite 330, Boston, MA 02111-1307 USA
*
* @package breadcrumb
* @author Benjamin Vauchel <contact@omycode.fr>
*
* @version Version 1.4.3 pl
* 07/03/15
*
* Breadcrumb is a snippet for MODx Revolution, inspired by the Jared\'s BreadCrumbs snippet.
* It will create a breadcrumb navigation for the current resource or a specific resource.
*
* Optional properties:
*
* @property from - (int) Resource ID of the first crumb; [Default value : 0].
* @property to - (int) Resource ID of the last crumb; [Default value : current resource id].
* @property exclude - (string) Comma separated list of resources IDs not shown in breadcrumb. [Default value : []]
* @property maxCrumbs - (int) Max crumbs shown in breadcrumb. Max delimiter template can be customize with property maxCrumbTpl ; [Default value : 100].
* @property showHidden - (bool) Show hidden resources in breadcrumb; [Default value : true].
* @property showContainer - (bool) Show container resources in breadcrumb; [Default value : true].
* @property showUnPub - (bool) Show unpublished resources in breadcrumb; [Default value : true].
* @property showCurrentCrumb - (bool) Show current resource as a crumb; [Default value : true].
* @property showBreadCrumbAtHome - (bool) Show BreadCrumb on the home page; [Default value : true].
* @property showHomeCrumb - (bool) Add the home page crumb at the start of the breadcrumb; [Default value : true].
* @property useWebLinkUrl - (bool) Use the weblink url instead of the url to the weblink; [Default value : true].
* @property direction - (string) Direction or breadcrumb : Left To Right (ltr) or Right To Left (rtl) for Arabic language for example; [Default value : ltr].
* @property scheme - (string) URL Generation Scheme; [Default value : -1].
*
* Templates :
*
* @property containerTpl - (string) Container template for BreadCrumb; [Default value : BreadCrumbContainerTpl].
* @property currentCrumbTpl - (string) Current crumb template for BreadCrumb; [Default value : BreadCrumbCurrentCrumbTpl].
* @property linkCrumbTpl - (string) Default crumb template for BreadCrumb; [Default value : BreadCrumbLinkCrumbTpl].
* @property categoryCrumbTpl - (string) Default category crumb template for BreadCrumb; [Default value : BreadCrumbCategoryCrumbTpl].
* @property maxCrumbTpl - (string) Max delimiter crumb template for BreadCrumb; [Default value : BreadCrumbMaxCrumbTpl].
*/
// Script Properties
$from = !empty($from) ? $from : $modx->getOption(\'from\', $scriptProperties, 0, true, true);
$to = $currentResourceId = !empty($to) ? $to : $modx->getOption(\'to\', $scriptProperties, $modx->resource->get(\'id\'), true);
$exclude = !empty($exclude) ? explode(\',\', $exclude) : array();
$maxCrumbs = !empty($maxCrumbs) ? abs(intval($maxCrumbs)) : $modx->getOption(\'maxCrumbs\', $scriptProperties, 100, true);
$showHidden = isset($showHidden) ? (bool)$showHidden : (bool)$modx->getOption(\'showHidden\', $scriptProperties, true, true);
$showContainer = isset($showContainer) ? (bool)$showContainer : (bool)$modx->getOption(\'showContainer\', $scriptProperties, true, true);
$showUnPub = isset($showUnPub) ? (bool)$showUnPub : (bool)$modx->getOption(\'showUnPub\', $scriptProperties, true, true);
$showCurrentCrumb = isset($showCurrentCrumb) ? (bool)$showCurrentCrumb : (bool)$modx->getOption(\'showCurrentCrumb\', $scriptProperties, true, true);
$showBreadCrumbAtHome = isset($showBreadCrumbAtHome) ? (bool)$showBreadCrumbAtHome : (bool)$modx->getOption(\'showBreadCrumbAtHome\', $scriptProperties, true, true);
$showHomeCrumb = isset($showHomeCrumb) ? (bool)$showHomeCrumb : (bool)$modx->getOption(\'showHomeCrumb\', $scriptProperties, true, true);
$useWebLinkUrl = isset($useWebLinkUrl) ? (bool)$useWebLinkUrl : (bool)$modx->getOption(\'useWebLinkUrl\', $scriptProperties, true, true);
$direction = !empty($direction) ? $direction : $modx->getOption(\'direction\', $scriptProperties, \'ltr\', true);
$scheme = !empty($scheme) ? $scheme : $modx->getOption(\'scheme\', $scriptProperties, $modx->getOption(\'link_tag_scheme\'), true);
$containerTpl = !empty($containerTpl) ? $containerTpl : $modx->getOption(\'containerTpl\', $scriptProperties, \'@INLINE <ul id="breadcrumb" itemprop="breadcrumb">[[+crumbs]]</ul>\');
$homeCrumbTpl = !empty($homeCrumbTpl) ? $homeCrumbTpl : $modx->getOption(\'homeCrumbTpl\', $scriptProperties, \'@INLINE <li><a href="[[+link]]">[[+pagetitle]]</a></li>\');
$currentCrumbTpl = !empty($currentCrumbTpl) ? $currentCrumbTpl : $modx->getOption(\'currentCrumbTpl\', $scriptProperties, \'@INLINE <li>[[+pagetitle]]</li>\');
$linkCrumbTpl = !empty($linkCrumbTpl) ? $linkCrumbTpl : $modx->getOption(\'linkCrumbTpl\', $scriptProperties, \'@INLINE <li><a href="[[+link]]">[[+pagetitle]]</a></li>\');
$categoryCrumbTpl = !empty($categoryCrumbTpl) ? $categoryCrumbTpl : $modx->getOption(\'categoryCrumbTpl\', $scriptProperties, \'@INLINE <li><a href="[[+link]]">[[+pagetitle]]</a></li>\');
$maxCrumbTpl = !empty($maxCrumbTpl) ? $maxCrumbTpl : $modx->getOption(\'maxCrumbTpl\', $scriptProperties, \'@INLINE <li>...</li>\');
// include parseTpl
include_once $modx->getOption(\'breadcrumb.core_path\',null,$modx->getOption(\'core_path\').\'components/breadcrumb/includes/\').\'include.parsetpl.php\';
// Output variable
$output = \'\';
// We check if current resource is the homepage and if breadcrumb is shown for the homepage
if (!$showBreadCrumbAtHome && $modx->resource->get(\'id\') == $modx->getOption(\'site_start\')) {
return \'\';
}
// We get all the other crumbs
$crumbs = array();
$crumbsCount = 0;
$resourceId = $to;
while ($resourceId != $from && $crumbsCount < $maxCrumbs)
{
if (!$resource = $modx->getObject(\'modResource\', $resourceId)) {
break;
}
// We check the conditions to show crumb
if (
$resourceId != $modx->getOption(\'site_start\') // ShowHomeCrumb
&& (($resource->get(\'hidemenu\') && $showHidden) || !$resource->get(\'hidemenu\')) // ShowHidden
&& (($resource->get(\'isfolder\') && $showContainer) || !$resource->get(\'isfolder\')) // ShowContainer
&& ((!$resource->get(\'published\') && $showUnPub) || $resource->get(\'published\')) // UnPub
&& (($resourceId == $currentResourceId && $showCurrentCrumb) || $resourceId != $currentResourceId) // ShowCurrent
&& !in_array($resourceId, $exclude) // Excluded resources
) {
// If is LTR direction, we push resource at the beginning of the array
if ($direction == \'ltr\') {
array_unshift($crumbs, $resource);
}
// Else we push it at the end
else {
$crumbs[] = $resource;
}
$crumbsCount++;
}
$resourceId = $resource->get(\'parent\');
}
// Add home crumb
if ($showHomeCrumb && $resource = $modx->getObject(\'modResource\', $modx->getOption(\'site_start\'))) {
if ($direction == \'ltr\') {
array_unshift($crumbs, $resource);
} else {
$crumbs[] = $resource;
}
}
// We build the output of crumbs
$position = 0;
foreach($crumbs as $key => $resource)
{
// Home crumb tpl ?
if ($resource->get(\'id\') == $modx->getOption(\'site_start\'))
{
$tpl = $homeCrumbTpl;
}
// Current crumb tpl ?
elseif ($showCurrentCrumb && ($resource->get(\'id\') == $currentResourceId))
{
$tpl = $currentCrumbTpl;
}
// resource is a container only, calculated in a similar manner to Wayfinder
elseif ($resource->get(\'isfolder\')
&& ( $resource->get(\'template\') == 0
|| strpos($resource->get(\'link_attributes\'), \'rel="category"\') !== false
)
) {
$tpl = $categoryCrumbTpl;
}
// or default crumb tpl ?
else {
$tpl = $linkCrumbTpl;
}
// Placeholders
$placeholders = $resource->toArray();
if ($resource->get(\'class_key\') == \'modWebLink\' && $useWebLinkUrl) {
if (is_numeric($resource->get(\'content\'))) {
$link = $modx->makeUrl($resource->get(\'content\'), \'\', \'\', $scheme);
} else {
$link = $resource->get(\'content\');
}
} else {
$link = $modx->makeUrl($resource->get(\'id\'), \'\', \'\', $scheme);
}
$placeholders = array_merge($resource->toArray(), array(\'link\' => $link, \'position\' => ++$position));
// Output
$output .= parseTpl($tpl, $placeholders);
}
// We add the max delimiter to the crumbs output, if the max limit was reached
if ($crumbsCount == $maxCrumbs) {
// If is LTR direction, we push the max delimiter at the beginning of the crumbs
if ($direction == \'ltr\') {
$output = parseTpl($maxCrumbTpl).$output;
}
// Else we push it at the end
else {
$output .= parseTpl($maxCrumbTpl);
}
}
// We build the breadcrumb output
$output = parseTpl($containerTpl, array(
\'crumbs\' => $output,
));
return $output;',
'locked' => false,
'properties' =>
array (
'from' =>
array (
'name' => 'from',
'desc' => 'breadcrumb_snippet_from_desc',
'type' => 'textfield',
'options' => '',
'value' => '0',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Resource ID of the first crumb.',
'area_trans' => '',
),
'to' =>
array (
'name' => 'to',
'desc' => 'breadcrumb_snippet_to_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Resource ID of the last crumb.',
'area_trans' => '',
),
'maxCrumbs' =>
array (
'name' => 'maxCrumbs',
'desc' => 'breadcrumb_snippet_maxcrumbs_desc',
'type' => 'textfield',
'options' => '',
'value' => '100',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Max crumbs shown in breadcrumb',
'area_trans' => '',
),
'showHidden' =>
array (
'name' => 'showHidden',
'desc' => 'breadcrumb_snippet_showhidden_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => true,
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Show hidden resources in breadcrumb.',
'area_trans' => '',
),
'showContainer' =>
array (
'name' => 'showContainer',
'desc' => 'breadcrumb_snippet_showcontainer_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => true,
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Show container resources in breadcrumb.',
'area_trans' => '',
),
'showUnPub' =>
array (
'name' => 'showUnPub',
'desc' => 'breadcrumb_snippet_showunpub_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => true,
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Show unpublished resources in breadcrumb.',
'area_trans' => '',
),
'showCurrentCrumb' =>
array (
'name' => 'showCurrentCrumb',
'desc' => 'breadcrumb_snippet_showcurrentcrumb_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => true,
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Show current resource as a crumb.',
'area_trans' => '',
),
'showBreadCrumbAtHome' =>
array (
'name' => 'showBreadCrumbAtHome',
'desc' => 'breadcrumb_snippet_showbreadcrumbatHome_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => true,
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Show BreadCrumb on the home page.',
'area_trans' => '',
),
'showHomeCrumb' =>
array (
'name' => 'showHomeCrumb',
'desc' => 'breadcrumb_snippet_showhomecrumb_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => true,
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Show the home page as a crumb.',
'area_trans' => '',
),
'useWebLinkUrl' =>
array (
'name' => 'useWebLinkUrl',
'desc' => 'breadcrumb_snippet_useweblinkurl_desc',
'type' => 'combo-boolean',
'options' => '',
'value' => true,
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Use the weblink url instead of the url to the weblink.',
'area_trans' => '',
),
'direction' =>
array (
'name' => 'direction',
'desc' => 'breadcrumb_snippet_direction_desc',
'type' => 'list',
'options' =>
array (
0 =>
array (
'value' => 'ltr',
'text' => 'Left To Right (ltr)',
'name' => 'Left To Right (ltr)',
),
1 =>
array (
'value' => 'rtl',
'text' => ' Right To Left (rtl)',
'name' => ' Right To Left (rtl)',
),
),
'value' => 'ltr',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Direction or breadcrumb : Left To Right (ltr) or Right To Left (rtl) for Arabic language for example.',
'area_trans' => '',
),
'scheme' =>
array (
'name' => 'scheme',
'desc' => 'breadcrumb_snippet_scheme_desc',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'URL Generation Scheme.',
'area_trans' => '',
),
'containerTpl' =>
array (
'name' => 'containerTpl',
'desc' => 'breadcrumb_snippet_containertpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '@INLINE <ul id="breadcrumb" itemprop="breadcrumb">[[+crumbs]]</ul>',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Container template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'area_trans' => '',
),
'homeCrumbTpl' =>
array (
'name' => 'homeCrumbTpl',
'desc' => 'breadcrumb_snippet_homecrumbtpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '@INLINE <li><a href="[[+link]]">[[+pagetitle]]</a></li>',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Home crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'area_trans' => '',
),
'currentCrumbTpl' =>
array (
'name' => 'currentCrumbTpl',
'desc' => 'breadcrumb_snippet_currentcrumbtpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '@INLINE <li>[[+pagetitle]]</li>',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Current crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'area_trans' => '',
),
'linkCrumbTpl' =>
array (
'name' => 'linkCrumbTpl',
'desc' => 'breadcrumb_snippet_linkcrumbtpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '@INLINE <li><a href="[[+link]]">[[+pagetitle]]</a></li>',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Default crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'area_trans' => '',
),
'categoryCrumbTpl' =>
array (
'name' => 'categoryCrumbTpl',
'desc' => 'breadcrumb_snippet_categorycrumbtpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '@INLINE <li><a href="[[+link]]">[[+pagetitle]]</a></li>',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Default category crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'area_trans' => '',
),
'maxCrumbTpl' =>
array (
'name' => 'maxCrumbTpl',
'desc' => 'breadcrumb_snippet_maxcrumbtpl_desc',
'type' => 'textfield',
'options' => '',
'value' => '@INLINE <li>...</li>',
'lexicon' => 'breadcrumb:properties',
'area' => '',
'desc_trans' => 'Max delimiter crumb template for BreadCrumb. Can be file (@FILE ), code (@INLINE ) or chunk name.',
'area_trans' => '',
),
),
'moduleguid' => '',
'static' => false,
'static_file' => '',
'content' => '/**
* BreadCrumb
* Copyright 2011 Benjamin Vauchel <contact@omycode.fr>
*
* BreadCrumb 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.
*
* BreadCrumb 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
* BreadCrumb; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
* Suite 330, Boston, MA 02111-1307 USA
*
* @package breadcrumb
* @author Benjamin Vauchel <contact@omycode.fr>
*
* @version Version 1.4.3 pl
* 07/03/15
*
* Breadcrumb is a snippet for MODx Revolution, inspired by the Jared\'s BreadCrumbs snippet.
* It will create a breadcrumb navigation for the current resource or a specific resource.
*
* Optional properties:
*
* @property from - (int) Resource ID of the first crumb; [Default value : 0].
* @property to - (int) Resource ID of the last crumb; [Default value : current resource id].
* @property exclude - (string) Comma separated list of resources IDs not shown in breadcrumb. [Default value : []]
* @property maxCrumbs - (int) Max crumbs shown in breadcrumb. Max delimiter template can be customize with property maxCrumbTpl ; [Default value : 100].
* @property showHidden - (bool) Show hidden resources in breadcrumb; [Default value : true].
* @property showContainer - (bool) Show container resources in breadcrumb; [Default value : true].
* @property showUnPub - (bool) Show unpublished resources in breadcrumb; [Default value : true].
* @property showCurrentCrumb - (bool) Show current resource as a crumb; [Default value : true].
* @property showBreadCrumbAtHome - (bool) Show BreadCrumb on the home page; [Default value : true].
* @property showHomeCrumb - (bool) Add the home page crumb at the start of the breadcrumb; [Default value : true].
* @property useWebLinkUrl - (bool) Use the weblink url instead of the url to the weblink; [Default value : true].
* @property direction - (string) Direction or breadcrumb : Left To Right (ltr) or Right To Left (rtl) for Arabic language for example; [Default value : ltr].
* @property scheme - (string) URL Generation Scheme; [Default value : -1].
*
* Templates :
*
* @property containerTpl - (string) Container template for BreadCrumb; [Default value : BreadCrumbContainerTpl].
* @property currentCrumbTpl - (string) Current crumb template for BreadCrumb; [Default value : BreadCrumbCurrentCrumbTpl].
* @property linkCrumbTpl - (string) Default crumb template for BreadCrumb; [Default value : BreadCrumbLinkCrumbTpl].
* @property categoryCrumbTpl - (string) Default category crumb template for BreadCrumb; [Default value : BreadCrumbCategoryCrumbTpl].
* @property maxCrumbTpl - (string) Max delimiter crumb template for BreadCrumb; [Default value : BreadCrumbMaxCrumbTpl].
*/
// Script Properties
$from = !empty($from) ? $from : $modx->getOption(\'from\', $scriptProperties, 0, true, true);
$to = $currentResourceId = !empty($to) ? $to : $modx->getOption(\'to\', $scriptProperties, $modx->resource->get(\'id\'), true);
$exclude = !empty($exclude) ? explode(\',\', $exclude) : array();
$maxCrumbs = !empty($maxCrumbs) ? abs(intval($maxCrumbs)) : $modx->getOption(\'maxCrumbs\', $scriptProperties, 100, true);
$showHidden = isset($showHidden) ? (bool)$showHidden : (bool)$modx->getOption(\'showHidden\', $scriptProperties, true, true);
$showContainer = isset($showContainer) ? (bool)$showContainer : (bool)$modx->getOption(\'showContainer\', $scriptProperties, true, true);
$showUnPub = isset($showUnPub) ? (bool)$showUnPub : (bool)$modx->getOption(\'showUnPub\', $scriptProperties, true, true);
$showCurrentCrumb = isset($showCurrentCrumb) ? (bool)$showCurrentCrumb : (bool)$modx->getOption(\'showCurrentCrumb\', $scriptProperties, true, true);
$showBreadCrumbAtHome = isset($showBreadCrumbAtHome) ? (bool)$showBreadCrumbAtHome : (bool)$modx->getOption(\'showBreadCrumbAtHome\', $scriptProperties, true, true);
$showHomeCrumb = isset($showHomeCrumb) ? (bool)$showHomeCrumb : (bool)$modx->getOption(\'showHomeCrumb\', $scriptProperties, true, true);
$useWebLinkUrl = isset($useWebLinkUrl) ? (bool)$useWebLinkUrl : (bool)$modx->getOption(\'useWebLinkUrl\', $scriptProperties, true, true);
$direction = !empty($direction) ? $direction : $modx->getOption(\'direction\', $scriptProperties, \'ltr\', true);
$scheme = !empty($scheme) ? $scheme : $modx->getOption(\'scheme\', $scriptProperties, $modx->getOption(\'link_tag_scheme\'), true);
$containerTpl = !empty($containerTpl) ? $containerTpl : $modx->getOption(\'containerTpl\', $scriptProperties, \'@INLINE <ul id="breadcrumb" itemprop="breadcrumb">[[+crumbs]]</ul>\');
$homeCrumbTpl = !empty($homeCrumbTpl) ? $homeCrumbTpl : $modx->getOption(\'homeCrumbTpl\', $scriptProperties, \'@INLINE <li><a href="[[+link]]">[[+pagetitle]]</a></li>\');
$currentCrumbTpl = !empty($currentCrumbTpl) ? $currentCrumbTpl : $modx->getOption(\'currentCrumbTpl\', $scriptProperties, \'@INLINE <li>[[+pagetitle]]</li>\');
$linkCrumbTpl = !empty($linkCrumbTpl) ? $linkCrumbTpl : $modx->getOption(\'linkCrumbTpl\', $scriptProperties, \'@INLINE <li><a href="[[+link]]">[[+pagetitle]]</a></li>\');
$categoryCrumbTpl = !empty($categoryCrumbTpl) ? $categoryCrumbTpl : $modx->getOption(\'categoryCrumbTpl\', $scriptProperties, \'@INLINE <li><a href="[[+link]]">[[+pagetitle]]</a></li>\');
$maxCrumbTpl = !empty($maxCrumbTpl) ? $maxCrumbTpl : $modx->getOption(\'maxCrumbTpl\', $scriptProperties, \'@INLINE <li>...</li>\');
// include parseTpl
include_once $modx->getOption(\'breadcrumb.core_path\',null,$modx->getOption(\'core_path\').\'components/breadcrumb/includes/\').\'include.parsetpl.php\';
// Output variable
$output = \'\';
// We check if current resource is the homepage and if breadcrumb is shown for the homepage
if (!$showBreadCrumbAtHome && $modx->resource->get(\'id\') == $modx->getOption(\'site_start\')) {
return \'\';
}
// We get all the other crumbs
$crumbs = array();
$crumbsCount = 0;
$resourceId = $to;
while ($resourceId != $from && $crumbsCount < $maxCrumbs)
{
if (!$resource = $modx->getObject(\'modResource\', $resourceId)) {
break;
}
// We check the conditions to show crumb
if (
$resourceId != $modx->getOption(\'site_start\') // ShowHomeCrumb
&& (($resource->get(\'hidemenu\') && $showHidden) || !$resource->get(\'hidemenu\')) // ShowHidden
&& (($resource->get(\'isfolder\') && $showContainer) || !$resource->get(\'isfolder\')) // ShowContainer
&& ((!$resource->get(\'published\') && $showUnPub) || $resource->get(\'published\')) // UnPub
&& (($resourceId == $currentResourceId && $showCurrentCrumb) || $resourceId != $currentResourceId) // ShowCurrent
&& !in_array($resourceId, $exclude) // Excluded resources
) {
// If is LTR direction, we push resource at the beginning of the array
if ($direction == \'ltr\') {
array_unshift($crumbs, $resource);
}
// Else we push it at the end
else {
$crumbs[] = $resource;
}
$crumbsCount++;
}
$resourceId = $resource->get(\'parent\');
}
// Add home crumb
if ($showHomeCrumb && $resource = $modx->getObject(\'modResource\', $modx->getOption(\'site_start\'))) {
if ($direction == \'ltr\') {
array_unshift($crumbs, $resource);
} else {
$crumbs[] = $resource;
}
}
// We build the output of crumbs
$position = 0;
foreach($crumbs as $key => $resource)
{
// Home crumb tpl ?
if ($resource->get(\'id\') == $modx->getOption(\'site_start\'))
{
$tpl = $homeCrumbTpl;
}
// Current crumb tpl ?
elseif ($showCurrentCrumb && ($resource->get(\'id\') == $currentResourceId))
{
$tpl = $currentCrumbTpl;
}
// resource is a container only, calculated in a similar manner to Wayfinder
elseif ($resource->get(\'isfolder\')
&& ( $resource->get(\'template\') == 0
|| strpos($resource->get(\'link_attributes\'), \'rel="category"\') !== false
)
) {
$tpl = $categoryCrumbTpl;
}
// or default crumb tpl ?
else {
$tpl = $linkCrumbTpl;
}
// Placeholders
$placeholders = $resource->toArray();
if ($resource->get(\'class_key\') == \'modWebLink\' && $useWebLinkUrl) {
if (is_numeric($resource->get(\'content\'))) {
$link = $modx->makeUrl($resource->get(\'content\'), \'\', \'\', $scheme);
} else {
$link = $resource->get(\'content\');
}
} else {
$link = $modx->makeUrl($resource->get(\'id\'), \'\', \'\', $scheme);
}
$placeholders = array_merge($resource->toArray(), array(\'link\' => $link, \'position\' => ++$position));
// Output
$output .= parseTpl($tpl, $placeholders);
}
// We add the max delimiter to the crumbs output, if the max limit was reached
if ($crumbsCount == $maxCrumbs) {
// If is LTR direction, we push the max delimiter at the beginning of the crumbs
if ($direction == \'ltr\') {
$output = parseTpl($maxCrumbTpl).$output;
}
// Else we push it at the end
else {
$output .= parseTpl($maxCrumbTpl);
}
}
// We build the breadcrumb output
$output = parseTpl($containerTpl, array(
\'crumbs\' => $output,
));
return $output;',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
),
),
'If' =>
array (
'fields' =>
array (
'id' => 4,
'source' => 0,
'property_preprocess' => false,
'name' => 'If',
'description' => 'Simple if (conditional) snippet',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => '/**
* If
*
* Copyright 2009-2010 by Jason Coward <jason@modx.com> and Shaun McCormick
* <shaun@modx.com>
*
* If 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.
*
* If 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
* If; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
* Suite 330, Boston, MA 02111-1307 USA
*
* @package if
*/
/**
* Simple if (conditional) snippet
*
* @package if
*/
if (!empty($debug)) {
print_r($scriptProperties);
if (!empty($die)) die();
}
$modx->parser->processElementTags(\'\',$subject,true,true);
$output = \'\';
$operator = !empty($operator) ? $operator : \'\';
$operand = !isset($operand) ? \'\' : $operand;
if (isset($subject)) {
if (!empty($operator)) {
$operator = strtolower($operator);
switch ($operator) {
case \'!=\':
case \'neq\':
case \'not\':
case \'isnot\':
case \'isnt\':
case \'unequal\':
case \'notequal\':
$output = (($subject != $operand) ? $then : (isset($else) ? $else : \'\'));
break;
case \'<\':
case \'lt\':
case \'less\':
case \'lessthan\':
$output = (($subject < $operand) ? $then : (isset($else) ? $else : \'\'));
break;
case \'>\':
case \'gt\':
case \'greater\':
case \'greaterthan\':
$output = (($subject > $operand) ? $then : (isset($else) ? $else : \'\'));
break;
case \'<=\':
case \'lte\':
case \'lessthanequals\':
case \'lessthanorequalto\':
$output = (($subject <= $operand) ? $then : (isset($else) ? $else : \'\'));
break;
case \'>=\':
case \'gte\':
case \'greaterthanequals\':
case \'greaterthanequalto\':
$output = (($subject >= $operand) ? $then : (isset($else) ? $else : \'\'));
break;
case \'isempty\':
case \'empty\':
$output = empty($subject) ? $then : (isset($else) ? $else : \'\');
break;
case \'!empty\':
case \'notempty\':
case \'isnotempty\':
$output = !empty($subject) && $subject != \'\' ? $then : (isset($else) ? $else : \'\');
break;
case \'isnull\':
case \'null\':
$output = $subject == null || strtolower($subject) == \'null\' ? $then : (isset($else) ? $else : \'\');
break;
case \'inarray\':
case \'in_array\':
case \'ia\':
$operand = explode(\',\',$operand);
$output = in_array($subject,$operand) ? $then : (isset($else) ? $else : \'\');
break;
case \'==\':
case \'=\':
case \'eq\':
case \'is\':
case \'equal\':
case \'equals\':
case \'equalto\':
default:
$output = (($subject == $operand) ? $then : (isset($else) ? $else : \'\'));
break;
}
}
}
if (!empty($debug)) { var_dump($output); }
unset($subject);
return $output;',
'locked' => false,
'properties' =>
array (
'subject' =>
array (
'name' => 'subject',
'desc' => 'The data being affected.',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => NULL,
'area' => '',
'desc_trans' => 'The data being affected.',
'area_trans' => '',
),
'operator' =>
array (
'name' => 'operator',
'desc' => 'The type of conditional.',
'type' => 'list',
'options' =>
array (
0 =>
array (
'value' => 'EQ',
'text' => 'EQ',
'name' => 'EQ',
),
1 =>
array (
'value' => 'NEQ',
'text' => 'NEQ',
'name' => 'NEQ',
),
2 =>
array (
'value' => 'LT',
'text' => 'LT',
'name' => 'LT',
),
3 =>
array (
'value' => 'GT',
'text' => 'GT',
'name' => 'GT',
),
4 =>
array (
'value' => 'LTE',
'text' => 'LTE',
'name' => 'LTE',
),
5 =>
array (
'value' => 'GT',
'text' => 'GTE',
'name' => 'GTE',
),
6 =>
array (
'value' => 'EMPTY',
'text' => 'EMPTY',
'name' => 'EMPTY',
),
7 =>
array (
'value' => 'NOTEMPTY',
'text' => 'NOTEMPTY',
'name' => 'NOTEMPTY',
),
8 =>
array (
'value' => 'ISNULL',
'text' => 'ISNULL',
'name' => 'ISNULL',
),
9 =>
array (
'value' => 'inarray',
'text' => 'INARRAY',
'name' => 'INARRAY',
),
),
'value' => 'EQ',
'lexicon' => NULL,
'area' => '',
'desc_trans' => 'The type of conditional.',
'area_trans' => '',
),
'operand' =>
array (
'name' => 'operand',
'desc' => 'When comparing to the subject, this is the data to compare to.',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => NULL,
'area' => '',
'desc_trans' => 'When comparing to the subject, this is the data to compare to.',
'area_trans' => '',
),
'then' =>
array (
'name' => 'then',
'desc' => 'If conditional was successful, output this.',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => NULL,
'area' => '',
'desc_trans' => 'If conditional was successful, output this.',
'area_trans' => '',
),
'else' =>
array (
'name' => 'else',
'desc' => 'If conditional was unsuccessful, output this.',
'type' => 'textfield',
'options' => '',
'value' => '',
'lexicon' => NULL,
'area' => '',
'desc_trans' => 'If conditional was unsuccessful, output this.',
'area_trans' => '',
),
'debug' =>
array (
'name' => 'debug',
'desc' => 'Will output the parameters passed in, as well as the end output. Leave off when not testing.',
'type' => 'combo-boolean',
'options' => '',
'value' => false,
'lexicon' => NULL,
'area' => '',
'desc_trans' => 'Will output the parameters passed in, as well as the end output. Leave off when not testing.',
'area_trans' => '',
),
),
'moduleguid' => '',
'static' => false,
'static_file' => '',
'content' => '/**
* If
*
* Copyright 2009-2010 by Jason Coward <jason@modx.com> and Shaun McCormick
* <shaun@modx.com>
*
* If 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.
*
* If 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
* If; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
* Suite 330, Boston, MA 02111-1307 USA
*
* @package if
*/
/**
* Simple if (conditional) snippet
*
* @package if
*/
if (!empty($debug)) {
print_r($scriptProperties);
if (!empty($die)) die();
}
$modx->parser->processElementTags(\'\',$subject,true,true);
$output = \'\';
$operator = !empty($operator) ? $operator : \'\';
$operand = !isset($operand) ? \'\' : $operand;
if (isset($subject)) {
if (!empty($operator)) {
$operator = strtolower($operator);
switch ($operator) {
case \'!=\':
case \'neq\':
case \'not\':
case \'isnot\':
case \'isnt\':
case \'unequal\':
case \'notequal\':
$output = (($subject != $operand) ? $then : (isset($else) ? $else : \'\'));
break;
case \'<\':
case \'lt\':
case \'less\':
case \'lessthan\':
$output = (($subject < $operand) ? $then : (isset($else) ? $else : \'\'));
break;
case \'>\':
case \'gt\':
case \'greater\':
case \'greaterthan\':
$output = (($subject > $operand) ? $then : (isset($else) ? $else : \'\'));
break;
case \'<=\':
case \'lte\':
case \'lessthanequals\':
case \'lessthanorequalto\':
$output = (($subject <= $operand) ? $then : (isset($else) ? $else : \'\'));
break;
case \'>=\':
case \'gte\':
case \'greaterthanequals\':
case \'greaterthanequalto\':
$output = (($subject >= $operand) ? $then : (isset($else) ? $else : \'\'));
break;
case \'isempty\':
case \'empty\':
$output = empty($subject) ? $then : (isset($else) ? $else : \'\');
break;
case \'!empty\':
case \'notempty\':
case \'isnotempty\':
$output = !empty($subject) && $subject != \'\' ? $then : (isset($else) ? $else : \'\');
break;
case \'isnull\':
case \'null\':
$output = $subject == null || strtolower($subject) == \'null\' ? $then : (isset($else) ? $else : \'\');
break;
case \'inarray\':
case \'in_array\':
case \'ia\':
$operand = explode(\',\',$operand);
$output = in_array($subject,$operand) ? $then : (isset($else) ? $else : \'\');
break;
case \'==\':
case \'=\':
case \'eq\':
case \'is\':
case \'equal\':
case \'equals\':
case \'equalto\':
default:
$output = (($subject == $operand) ? $then : (isset($else) ? $else : \'\'));
break;
}
}
}
if (!empty($debug)) { var_dump($output); }
unset($subject);
return $output;',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
),
),
'GetCharacterInfo' =>
array (
'fields' =>
array (
'id' => 14,
'source' => 1,
'property_preprocess' => false,
'name' => 'GetCharacterInfo',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => 'use QCubed\\Query\\QQ;
require_once($_SERVER[\'DOCUMENT_ROOT\'] . \'/_qcube4/qcubed.inc.php\');
//variables
$strHtml = \'\';
$strCultureKey = isset($_REQUEST[\'cultureKey\']) ? $_REQUEST[\'cultureKey\'] : \'en\';
// Clamp to supported locales only
$strCultureKey = ($strCultureKey === \'en\') ? \'en\' : \'zh\';
if (isset($_GET[\'characterId\'])) {
// Sanitize and validate character id
$characterId = (int) $_GET[\'characterId\'];
if ($characterId > 0) {
// Load Character Object
$objCharacter = SilkCharacters::loadById($characterId);
if ($objCharacter) {
// Use decoded version to handle cases where DB stores numeric HTML entities
$strCharacterRaw = $objCharacter->getCharacterDecoded();
$strCharacter = htmlspecialchars($strCharacterRaw, ENT_QUOTES, \'UTF-8\');
// Optional icon for the character. Prefer SVG if available, otherwise fall back to PNG.
$iconHtml = \'\';
$iconSvgFilePath = $_SERVER[\'DOCUMENT_ROOT\'] . \'/assets/images/icons/\' . $strCharacterRaw . \'.svg\';
if (file_exists($iconSvgFilePath)) {
$iconUrl = \'/assets/images/icons/\' . rawurlencode($strCharacterRaw) . \'.svg\';
$iconHtml = \'<img class="character-icon ms-2" src="\' . $iconUrl . \'" alt="\' . $strCharacter . \' icon" />\';
} else {
$iconPngFilePath = $_SERVER[\'DOCUMENT_ROOT\'] . \'/assets/images/icons/\' . $strCharacterRaw . \'.png\';
if (file_exists($iconPngFilePath)) {
$iconUrl = \'/assets/images/icons/\' . rawurlencode($strCharacterRaw) . \'.png\';
$iconHtml = \'<img class="character-icon ms-2" src="\' . $iconUrl . \'" alt="\' . $strCharacter . \' icon" />\';
}
}
$categoryBushou = $objCharacter->getCategoryBushouObject();
$arrBushouRelatedCharacters = $categoryBushou ? $categoryBushou->getSilkCharactersAsCategoryBushouArray([QQ::orderBy(QQN::silkCharacters()->Strokes)]) : [];
if ($strCultureKey == "en") {
$strDescription = $objCharacter->GetInterpretationWithLinks();
$strMeaning = $objCharacter->getEnMeaning();
$strYouTube = $objCharacter->getEnYoutube();
$strHeaderTheStory = \'The story of \' . $strCharacter;
$strHeaderVocabulary = \'Vocabulary of \' . $strCharacter;
$strHeaderRelated = \'Related Characters:\';
$strHeaderClassification = \'Classification\';
$strHeaderBushou = \'Radical\';
$strHeaderZiyuan = \'Etyma\';
} else {
$strDescription = $objCharacter->GetInterpretationWithLinks("zh");
$strMeaning = $objCharacter->getCnMeaning();
$strYouTube = $objCharacter->getCnYoutube();
$strHeaderTheStory = \'漢字的故事 : \' . $strCharacter;
$strHeaderVocabulary = \'「\' . $strCharacter . \'」字詞語\';
$strHeaderRelated = \'相關漢字:\';
$strHeaderClassification = \'分類\';
$strHeaderBushou = \'部首\';
$strHeaderZiyuan = \'字源\';
}
// Sanitize user-visible strings that are plain text
$strMeaning = htmlspecialchars($strMeaning, ENT_QUOTES, \'UTF-8\');
// Conditionally build YouTube embed only if ID is present
$embedHtml = \'\';
if (!empty($strYouTube)) {
$safeYouTube = htmlspecialchars($strYouTube, ENT_QUOTES, \'UTF-8\');
$embedHtml = \'<div><div class="embed-container"><iframe width="560" height="315" src="https://www.youtube.com/embed/\' . $safeYouTube . \'?rel=0" frameborder="0" allowfullscreen="" title="\' . $strHeaderTheStory . \'"></iframe></div></div>\';
}
$strHtml .= <<< END
<div class="d-block d-md-flex align-items-start mb-3 character-header">
<div class="d-flex justify-content-xxl-center align-items-center character-box"><p class="character">{$strCharacter}</p><div>{$iconHtml}</div></div>
<div class="character-info"><h1>{$strMeaning}</h1>
<p class="description">{$strDescription}</p></div></div>
{$embedHtml}
END;
// Build classification HTML safely, guarding against missing relations
$categoryZiyuan = $objCharacter->getCategoryZiyuanObject();
$classificationHtml = \'<div class="col-6 col-md-5"><h3 class="underlined">\' . $strHeaderClassification . \'</h3><ul class="classification">\';
if ($categoryBushou) {
$classificationHtml .= \'<li><a href="/\' . $strCultureKey . \'/bushou/\' . $categoryBushou->getId() . \'">\' . $strHeaderBushou . \': \' . htmlspecialchars($categoryBushou->getRadicals(), ENT_QUOTES, \'UTF-8\') . \'</a></li>\';
}
if ($categoryZiyuan) {
$classificationHtml .= \'<li><a href="/\' . $strCultureKey . \'/ziyuan/\' . $categoryZiyuan->getId() . \'">\' . $strHeaderZiyuan . \': \' . htmlspecialchars($categoryZiyuan->getRadicals(), ENT_QUOTES, \'UTF-8\') . \'</a></li>\';
}
$classificationHtml .= \'</ul></div>\';
$strHtml .= <<< END
<div class="row mt-4">
<div class="col-6 col-md-7"><h3 class="underlined">{$strHeaderVocabulary}</h3>{$objCharacter->ListVocabulary($strCultureKey)}</div>
{$classificationHtml}
</div>
END;
$strHtml .= \'<div class="mt-4"><h2 style="font-size: 1.2rem; margin-bottom:18px;">\' . $strHeaderRelated . \'</h2></div>\';
$strHtml .= \'<div class="silk-character-cards-grid compact">\';
foreach ($arrBushouRelatedCharacters as $item) {
$strHtml .= $item->GetCharacterCardHtml($strCultureKey);
}
$strHtml .= \'</div>\';
}
}
}
echo $strHtml;',
'locked' => false,
'properties' =>
array (
),
'moduleguid' => '',
'static' => false,
'static_file' => '',
'content' => 'use QCubed\\Query\\QQ;
require_once($_SERVER[\'DOCUMENT_ROOT\'] . \'/_qcube4/qcubed.inc.php\');
//variables
$strHtml = \'\';
$strCultureKey = isset($_REQUEST[\'cultureKey\']) ? $_REQUEST[\'cultureKey\'] : \'en\';
// Clamp to supported locales only
$strCultureKey = ($strCultureKey === \'en\') ? \'en\' : \'zh\';
if (isset($_GET[\'characterId\'])) {
// Sanitize and validate character id
$characterId = (int) $_GET[\'characterId\'];
if ($characterId > 0) {
// Load Character Object
$objCharacter = SilkCharacters::loadById($characterId);
if ($objCharacter) {
// Use decoded version to handle cases where DB stores numeric HTML entities
$strCharacterRaw = $objCharacter->getCharacterDecoded();
$strCharacter = htmlspecialchars($strCharacterRaw, ENT_QUOTES, \'UTF-8\');
// Optional icon for the character. Prefer SVG if available, otherwise fall back to PNG.
$iconHtml = \'\';
$iconSvgFilePath = $_SERVER[\'DOCUMENT_ROOT\'] . \'/assets/images/icons/\' . $strCharacterRaw . \'.svg\';
if (file_exists($iconSvgFilePath)) {
$iconUrl = \'/assets/images/icons/\' . rawurlencode($strCharacterRaw) . \'.svg\';
$iconHtml = \'<img class="character-icon ms-2" src="\' . $iconUrl . \'" alt="\' . $strCharacter . \' icon" />\';
} else {
$iconPngFilePath = $_SERVER[\'DOCUMENT_ROOT\'] . \'/assets/images/icons/\' . $strCharacterRaw . \'.png\';
if (file_exists($iconPngFilePath)) {
$iconUrl = \'/assets/images/icons/\' . rawurlencode($strCharacterRaw) . \'.png\';
$iconHtml = \'<img class="character-icon ms-2" src="\' . $iconUrl . \'" alt="\' . $strCharacter . \' icon" />\';
}
}
$categoryBushou = $objCharacter->getCategoryBushouObject();
$arrBushouRelatedCharacters = $categoryBushou ? $categoryBushou->getSilkCharactersAsCategoryBushouArray([QQ::orderBy(QQN::silkCharacters()->Strokes)]) : [];
if ($strCultureKey == "en") {
$strDescription = $objCharacter->GetInterpretationWithLinks();
$strMeaning = $objCharacter->getEnMeaning();
$strYouTube = $objCharacter->getEnYoutube();
$strHeaderTheStory = \'The story of \' . $strCharacter;
$strHeaderVocabulary = \'Vocabulary of \' . $strCharacter;
$strHeaderRelated = \'Related Characters:\';
$strHeaderClassification = \'Classification\';
$strHeaderBushou = \'Radical\';
$strHeaderZiyuan = \'Etyma\';
} else {
$strDescription = $objCharacter->GetInterpretationWithLinks("zh");
$strMeaning = $objCharacter->getCnMeaning();
$strYouTube = $objCharacter->getCnYoutube();
$strHeaderTheStory = \'漢字的故事 : \' . $strCharacter;
$strHeaderVocabulary = \'「\' . $strCharacter . \'」字詞語\';
$strHeaderRelated = \'相關漢字:\';
$strHeaderClassification = \'分類\';
$strHeaderBushou = \'部首\';
$strHeaderZiyuan = \'字源\';
}
// Sanitize user-visible strings that are plain text
$strMeaning = htmlspecialchars($strMeaning, ENT_QUOTES, \'UTF-8\');
// Conditionally build YouTube embed only if ID is present
$embedHtml = \'\';
if (!empty($strYouTube)) {
$safeYouTube = htmlspecialchars($strYouTube, ENT_QUOTES, \'UTF-8\');
$embedHtml = \'<div><div class="embed-container"><iframe width="560" height="315" src="https://www.youtube.com/embed/\' . $safeYouTube . \'?rel=0" frameborder="0" allowfullscreen="" title="\' . $strHeaderTheStory . \'"></iframe></div></div>\';
}
$strHtml .= <<< END
<div class="d-block d-md-flex align-items-start mb-3 character-header">
<div class="d-flex justify-content-xxl-center align-items-center character-box"><p class="character">{$strCharacter}</p><div>{$iconHtml}</div></div>
<div class="character-info"><h1>{$strMeaning}</h1>
<p class="description">{$strDescription}</p></div></div>
{$embedHtml}
END;
// Build classification HTML safely, guarding against missing relations
$categoryZiyuan = $objCharacter->getCategoryZiyuanObject();
$classificationHtml = \'<div class="col-6 col-md-5"><h3 class="underlined">\' . $strHeaderClassification . \'</h3><ul class="classification">\';
if ($categoryBushou) {
$classificationHtml .= \'<li><a href="/\' . $strCultureKey . \'/bushou/\' . $categoryBushou->getId() . \'">\' . $strHeaderBushou . \': \' . htmlspecialchars($categoryBushou->getRadicals(), ENT_QUOTES, \'UTF-8\') . \'</a></li>\';
}
if ($categoryZiyuan) {
$classificationHtml .= \'<li><a href="/\' . $strCultureKey . \'/ziyuan/\' . $categoryZiyuan->getId() . \'">\' . $strHeaderZiyuan . \': \' . htmlspecialchars($categoryZiyuan->getRadicals(), ENT_QUOTES, \'UTF-8\') . \'</a></li>\';
}
$classificationHtml .= \'</ul></div>\';
$strHtml .= <<< END
<div class="row mt-4">
<div class="col-6 col-md-7"><h3 class="underlined">{$strHeaderVocabulary}</h3>{$objCharacter->ListVocabulary($strCultureKey)}</div>
{$classificationHtml}
</div>
END;
$strHtml .= \'<div class="mt-4"><h2 style="font-size: 1.2rem; margin-bottom:18px;">\' . $strHeaderRelated . \'</h2></div>\';
$strHtml .= \'<div class="silk-character-cards-grid compact">\';
foreach ($arrBushouRelatedCharacters as $item) {
$strHtml .= $item->GetCharacterCardHtml($strCultureKey);
}
$strHtml .= \'</div>\';
}
}
}
echo $strHtml;',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'searchBox' =>
array (
'fields' =>
array (
'id' => 21,
'source' => 1,
'property_preprocess' => false,
'name' => 'searchBox',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => '// Define language-specific content
$languageConfig = [
\'en\' => [
\'placeholder\' => \'Search Characters Here. Ex: dog, insect\',
\'meaning_field\' => \'en_meaning\',
\'url_prefix\' => \'/en/story-of-chinese-character/\'
],
\'zh\' => [
\'placeholder\' => \'在這裡搜索角色。\',
\'meaning_field\' => \'cn_meaning\',
\'url_prefix\' => \'/zh/story-of-chinese-character/\'
]
];
// Get the current culture key, default to \'en\'
$cultureKey = $_REQUEST[\'cultureKey\'] ?? \'en\';
$config = $languageConfig[$cultureKey] ?? $languageConfig[\'en\'];
// Single HTML template with dynamic content
$html = \'
<div id="search" class="modal fade" role="dialog" tabindex="-1">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<div class="modal-header">
<input
id="searchKeywords"
type="search"
inputmode="search"
enterkeyhint="search"
autocomplete="off"
autocapitalize="none"
autocorrect="off"
spellcheck="false"
v-model.trim="searchKeywords"
@input="onInput"
placeholder="\' . $config[\'placeholder\'] . \'"
/><button
class="btn-close"
type="button"
aria-label="Close"
data-bs-dismiss="modal"
></button>
</div>
<div class="modal-body">
<div v-if="isLoading" class="py-2">Loading…</div>
<div v-else-if="hasTyped && characters.length === 0" class="py-2">
No results
</div>
<div v-else class="grid-characters smaller">
<a
v-for="character in characters"
:key="character.id"
:href="\\\'\' . $config[\'url_prefix\'] . \'\\\'+character.id"
>{{character.character}}<span class="meaning"><br>{{character.\' . $config[\'meaning_field\'] . \'}}</span>
<span class="strokes">{{character.strokes}}</span></a
>
</div>
</div>
</div>
</div>
</div>
\';
echo $html;
echo <<< END
<script>
let app = {
data() {
return {
characters: [],
searchKeywords: "",
isLoading: false,
hasTyped: false,
abortController: null,
searchDebounced: null,
};
},
methods: {
debounce(fn, delay) {
let timerId;
return function (...args) {
clearTimeout(timerId);
timerId = setTimeout(() => fn.apply(this, args), delay);
};
},
onInput() {
this.hasTyped = true;
this.searchDebounced && this.searchDebounced();
},
searchNow() {
const query = (this.searchKeywords || "").trim();
const isSingleAsciiLetter = /^[A-Za-z]$/.test(query);
if (query.length === 0 || isSingleAsciiLetter) {
// clear
this.characters = [];
this.hasTyped = false;
if (this.abortController) {
this.abortController.abort();
this.abortController = null;
}
this.isLoading = false;
return;
}
if (this.abortController) {
this.abortController.abort();
}
this.abortController = new AbortController();
this.isLoading = true;
fetch(
"/_qcube4/views/search-query.php?searchKeywords=" +
encodeURIComponent(query),
{ signal: this.abortController.signal }
)
.then((response) => response.json())
.then((data) => {
this.characters = Array.isArray(data) ? data : [];
})
.catch((err) => {
if (err.name !== "AbortError") {
console.log(err.message);
}
})
.finally(() => {
this.isLoading = false;
});
},
},
created() {
this.searchDebounced = this.debounce(this.searchNow, 250);
},
};
const vm = Vue.createApp(app).mount("#search");
var myModal = document.getElementById("search");
var myInput = document.getElementById("searchKeywords");
myModal.addEventListener("shown.bs.modal", function () {
setTimeout(function () {
myInput.focus();
if (myInput && myInput.setSelectionRange) {
try {
var len = myInput.value.length;
myInput.setSelectionRange(len, len);
} catch (e) {}
}
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;
}, 250);
});
myModal.addEventListener("hidden.bs.modal", function () {
if (vm && vm.abortController) {
try { vm.abortController.abort(); } catch (e) {}
vm.abortController = null;
}
vm.searchKeywords = "";
vm.characters = [];
vm.isLoading = false;
vm.hasTyped = false;
});
</script>
END;',
'locked' => false,
'properties' =>
array (
),
'moduleguid' => '',
'static' => false,
'static_file' => '',
'content' => '// Define language-specific content
$languageConfig = [
\'en\' => [
\'placeholder\' => \'Search Characters Here. Ex: dog, insect\',
\'meaning_field\' => \'en_meaning\',
\'url_prefix\' => \'/en/story-of-chinese-character/\'
],
\'zh\' => [
\'placeholder\' => \'在這裡搜索角色。\',
\'meaning_field\' => \'cn_meaning\',
\'url_prefix\' => \'/zh/story-of-chinese-character/\'
]
];
// Get the current culture key, default to \'en\'
$cultureKey = $_REQUEST[\'cultureKey\'] ?? \'en\';
$config = $languageConfig[$cultureKey] ?? $languageConfig[\'en\'];
// Single HTML template with dynamic content
$html = \'
<div id="search" class="modal fade" role="dialog" tabindex="-1">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<div class="modal-header">
<input
id="searchKeywords"
type="search"
inputmode="search"
enterkeyhint="search"
autocomplete="off"
autocapitalize="none"
autocorrect="off"
spellcheck="false"
v-model.trim="searchKeywords"
@input="onInput"
placeholder="\' . $config[\'placeholder\'] . \'"
/><button
class="btn-close"
type="button"
aria-label="Close"
data-bs-dismiss="modal"
></button>
</div>
<div class="modal-body">
<div v-if="isLoading" class="py-2">Loading…</div>
<div v-else-if="hasTyped && characters.length === 0" class="py-2">
No results
</div>
<div v-else class="grid-characters smaller">
<a
v-for="character in characters"
:key="character.id"
:href="\\\'\' . $config[\'url_prefix\'] . \'\\\'+character.id"
>{{character.character}}<span class="meaning"><br>{{character.\' . $config[\'meaning_field\'] . \'}}</span>
<span class="strokes">{{character.strokes}}</span></a
>
</div>
</div>
</div>
</div>
</div>
\';
echo $html;
echo <<< END
<script>
let app = {
data() {
return {
characters: [],
searchKeywords: "",
isLoading: false,
hasTyped: false,
abortController: null,
searchDebounced: null,
};
},
methods: {
debounce(fn, delay) {
let timerId;
return function (...args) {
clearTimeout(timerId);
timerId = setTimeout(() => fn.apply(this, args), delay);
};
},
onInput() {
this.hasTyped = true;
this.searchDebounced && this.searchDebounced();
},
searchNow() {
const query = (this.searchKeywords || "").trim();
const isSingleAsciiLetter = /^[A-Za-z]$/.test(query);
if (query.length === 0 || isSingleAsciiLetter) {
// clear
this.characters = [];
this.hasTyped = false;
if (this.abortController) {
this.abortController.abort();
this.abortController = null;
}
this.isLoading = false;
return;
}
if (this.abortController) {
this.abortController.abort();
}
this.abortController = new AbortController();
this.isLoading = true;
fetch(
"/_qcube4/views/search-query.php?searchKeywords=" +
encodeURIComponent(query),
{ signal: this.abortController.signal }
)
.then((response) => response.json())
.then((data) => {
this.characters = Array.isArray(data) ? data : [];
})
.catch((err) => {
if (err.name !== "AbortError") {
console.log(err.message);
}
})
.finally(() => {
this.isLoading = false;
});
},
},
created() {
this.searchDebounced = this.debounce(this.searchNow, 250);
},
};
const vm = Vue.createApp(app).mount("#search");
var myModal = document.getElementById("search");
var myInput = document.getElementById("searchKeywords");
myModal.addEventListener("shown.bs.modal", function () {
setTimeout(function () {
myInput.focus();
if (myInput && myInput.setSelectionRange) {
try {
var len = myInput.value.length;
myInput.setSelectionRange(len, len);
} catch (e) {}
}
document.documentElement.scrollTop = 0;
document.body.scrollTop = 0;
}, 250);
});
myModal.addEventListener("hidden.bs.modal", function () {
if (vm && vm.abortController) {
try { vm.abortController.abort(); } catch (e) {}
vm.abortController = null;
}
vm.searchKeywords = "";
vm.characters = [];
vm.isLoading = false;
vm.hasTyped = false;
});
</script>
END;',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'GetYear' =>
array (
'fields' =>
array (
'id' => 22,
'source' => 1,
'property_preprocess' => false,
'name' => 'GetYear',
'description' => '',
'editor_type' => 0,
'category' => 0,
'cache_type' => 0,
'snippet' => 'echo date("Y");',
'locked' => false,
'properties' =>
array (
),
'moduleguid' => '',
'static' => false,
'static_file' => '',
'content' => 'echo date("Y");',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
),
'MODX\\Revolution\\modTemplateVar' =>
array (
'ExtraHeadScripts' =>
array (
'fields' =>
array (
'id' => 5,
'source' => 1,
'property_preprocess' => false,
'type' => 'text',
'name' => 'extraHeadScripts',
'caption' => 'Extra Scripts HEAD',
'description' => '',
'editor_type' => 0,
'category' => 0,
'locked' => false,
'elements' => NULL,
'rank' => 0,
'display' => 'default',
'default_text' => '',
'properties' =>
array (
),
'input_properties' =>
array (
'allowBlank' => 'true',
'minLength' => '',
'maxLength' => '',
'regex' => '',
'regexText' => '',
),
'output_properties' =>
array (
),
'static' => false,
'static_file' => '',
'content' => '',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'bodyId' =>
array (
'fields' =>
array (
'id' => 2,
'source' => 1,
'property_preprocess' => false,
'type' => 'text',
'name' => 'bodyId',
'caption' => 'Body ID',
'description' => '',
'editor_type' => 0,
'category' => 0,
'locked' => false,
'elements' => NULL,
'rank' => 0,
'display' => 'default',
'default_text' => '',
'properties' =>
array (
),
'input_properties' =>
array (
'allowBlank' => 'true',
'minLength' => '',
'maxLength' => '',
'regex' => '',
'regexText' => '',
),
'output_properties' =>
array (
),
'static' => false,
'static_file' => '',
'content' => '',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'bodyClass' =>
array (
'fields' =>
array (
'id' => 3,
'source' => 1,
'property_preprocess' => false,
'type' => 'text',
'name' => 'bodyClass',
'caption' => 'Body Class',
'description' => '',
'editor_type' => 0,
'category' => 0,
'locked' => false,
'elements' => NULL,
'rank' => 0,
'display' => 'default',
'default_text' => '',
'properties' =>
array (
),
'input_properties' =>
array (
'allowBlank' => 'true',
'minLength' => '',
'maxLength' => '',
'regex' => '',
'regexText' => '',
),
'output_properties' =>
array (
),
'static' => false,
'static_file' => '',
'content' => '',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'showBreadcrumbs' =>
array (
'fields' =>
array (
'id' => 4,
'source' => 1,
'property_preprocess' => false,
'type' => 'checkbox',
'name' => 'showBreadcrumbs',
'caption' => 'Show Breadcrumbs',
'description' => '',
'editor_type' => 0,
'category' => 0,
'locked' => false,
'elements' => 'Yes==1',
'rank' => 0,
'display' => 'default',
'default_text' => '1',
'properties' =>
array (
),
'input_properties' =>
array (
'allowBlank' => 'true',
'columns' => '1',
),
'output_properties' =>
array (
),
'static' => false,
'static_file' => '',
'content' => '1',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
'BeforeBodyScripts' =>
array (
'fields' =>
array (
'id' => 6,
'source' => 1,
'property_preprocess' => false,
'type' => 'text',
'name' => 'beforeBodyScripts',
'caption' => 'Before Body Scripts',
'description' => '',
'editor_type' => 0,
'category' => 0,
'locked' => false,
'elements' => NULL,
'rank' => 0,
'display' => 'default',
'default_text' => '',
'properties' =>
array (
),
'input_properties' =>
array (
'allowBlank' => 'true',
'minLength' => '',
'maxLength' => '',
'regex' => '',
'regexText' => '',
),
'output_properties' =>
array (
),
'static' => false,
'static_file' => '',
'content' => '',
),
'policies' =>
array (
'zh' =>
array (
),
),
'source' =>
array (
'id' => 1,
'name' => 'Filesystem',
'description' => '',
'class_key' => 'MODX\\Revolution\\Sources\\modFileMediaSource',
'properties' =>
array (
),
'is_stream' => true,
),
),
),
),
'Event' =>
\MODX\Revolution\modSystemEvent::__set_state(array(
'name' => '',
'activePlugin' => '',
'plugin' => NULL,
'propertySet' => '',
'_propagate' => true,
'_output' => NULL,
'activated' => NULL,
'returnedValues' => NULL,
'params' => NULL,
)),
'_deprecations' =>
array (
'modResource' =>
\MODX\Revolution\mysql\modDeprecatedMethod::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedMethod',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'MODX\\Revolution\\modDeprecatedMethod',
'_pk' => NULL,
'_pktype' => NULL,
'_table' => '`modx_deprecated_method`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 63,
'definition' => 'modResource',
'since' => '3.0',
'recommendation' => 'Replace references to class modResource with MODX\\Revolution\\modResource to take advantage of PSR-4 autoloading.',
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'definition' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'since' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'recommendation' =>
array (
'dbtype' => 'varchar',
'precision' => '1024',
'phptype' => 'string',
'null' => false,
'default' => '',
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
),
'_composites' =>
array (
'Callers' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedCall',
'local' => 'id',
'foreign' => 'method',
'cardinality' => 'many',
'owner' => 'local',
),
),
'_relatedObjects' =>
array (
'Callers' =>
array (
314 =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 314,
'method' => 63,
'call_count' => 327314,
'caller' => 'xPDO\\xPDO::getPKType',
'caller_file' => '/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php',
'caller_line' => 1660,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
315 =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 315,
'method' => 63,
'call_count' => 327428,
'caller' => 'xPDO\\xPDO::getPK',
'caller_file' => '/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php',
'caller_line' => 1598,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
312 =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 312,
'method' => 63,
'call_count' => 327978,
'caller' => 'xPDO\\xPDO::call',
'caller_file' => '/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php',
'caller_line' => 774,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
224 =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 224,
'method' => 63,
'call_count' => 1738622,
'caller' => 'MODX\\Revolution\\modAccessibleObject::load',
'caller_file' => '/home4/silksto1/public_html/core/src/Revolution/modAccessibleObject.php',
'caller_line' => 106,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
),
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
'callers' =>
array (
'xPDO\\xPDO::getPKType::/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php::1660' =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 314,
'method' => 63,
'call_count' => 327314,
'caller' => 'xPDO\\xPDO::getPKType',
'caller_file' => '/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php',
'caller_line' => 1660,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
'xPDO\\xPDO::getPK::/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php::1598' =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 315,
'method' => 63,
'call_count' => 327428,
'caller' => 'xPDO\\xPDO::getPK',
'caller_file' => '/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php',
'caller_line' => 1598,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
'xPDO\\xPDO::call::/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php::774' =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 312,
'method' => 63,
'call_count' => 327978,
'caller' => 'xPDO\\xPDO::call',
'caller_file' => '/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php',
'caller_line' => 774,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
'MODX\\Revolution\\modAccessibleObject::load::/home4/silksto1/public_html/core/src/Revolution/modAccessibleObject.php::106' =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 224,
'method' => 63,
'call_count' => 1738622,
'caller' => 'MODX\\Revolution\\modAccessibleObject::load',
'caller_file' => '/home4/silksto1/public_html/core/src/Revolution/modAccessibleObject.php',
'caller_line' => 106,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
),
)),
'modChunk' =>
\MODX\Revolution\mysql\modDeprecatedMethod::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedMethod',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'MODX\\Revolution\\modDeprecatedMethod',
'_pk' => NULL,
'_pktype' => NULL,
'_table' => '`modx_deprecated_method`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 62,
'definition' => 'modChunk',
'since' => '3.0',
'recommendation' => 'Replace references to class modChunk with MODX\\Revolution\\modChunk to take advantage of PSR-4 autoloading.',
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'definition' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'since' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'recommendation' =>
array (
'dbtype' => 'varchar',
'precision' => '1024',
'phptype' => 'string',
'null' => false,
'default' => '',
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
),
'_composites' =>
array (
'Callers' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedCall',
'local' => 'id',
'foreign' => 'method',
'cardinality' => 'many',
'owner' => 'local',
),
),
'_relatedObjects' =>
array (
'Callers' =>
array (
310 =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 310,
'method' => 62,
'call_count' => 462760,
'caller' => 'xPDO\\xPDO::call',
'caller_file' => '/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php',
'caller_line' => 774,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
216 =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 216,
'method' => 62,
'call_count' => 2416210,
'caller' => 'MODX\\Revolution\\modAccessibleObject::load',
'caller_file' => '/home4/silksto1/public_html/core/src/Revolution/modAccessibleObject.php',
'caller_line' => 106,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
),
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
'callers' =>
array (
'xPDO\\xPDO::call::/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php::774' =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 310,
'method' => 62,
'call_count' => 462760,
'caller' => 'xPDO\\xPDO::call',
'caller_file' => '/home4/silksto1/public_html/core/vendor/xpdo/xpdo/src/xPDO/xPDO.php',
'caller_line' => 774,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
'MODX\\Revolution\\modAccessibleObject::load::/home4/silksto1/public_html/core/src/Revolution/modAccessibleObject.php::106' =>
\MODX\Revolution\mysql\modDeprecatedCall::__set_state(array(
'xpdo' => NULL,
'container' => 'silksto1_silkstory',
'fieldNames' => NULL,
'_class' => 'MODX\\Revolution\\modDeprecatedCall',
'_package' => 'MODX\\Revolution\\',
'_alias' => 'Callers',
'_pk' => 'id',
'_pktype' => NULL,
'_table' => '`modx_deprecated_call`',
'_tableMeta' =>
array (
'engine' => 'InnoDB',
),
'_dirty' =>
array (
'call_count' => 'call_count',
),
'_lazy' =>
array (
),
'_fields' =>
array (
'id' => 216,
'method' => 62,
'call_count' => 2416210,
'caller' => 'MODX\\Revolution\\modAccessibleObject::load',
'caller_file' => '/home4/silksto1/public_html/core/src/Revolution/modAccessibleObject.php',
'caller_line' => 106,
),
'_fieldMeta' =>
array (
'id' =>
array (
'dbtype' => 'INTEGER',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'method' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'call_count' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
'caller' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_file' =>
array (
'dbtype' => 'varchar',
'precision' => '191',
'phptype' => 'string',
'null' => false,
'default' => '',
),
'caller_line' =>
array (
'dbtype' => 'int',
'precision' => '11',
'attributes' => 'unsigned',
'phptype' => 'integer',
'null' => false,
'default' => 0,
),
),
'_fieldAliases' =>
array (
),
'_aggregates' =>
array (
'Method' =>
array (
'class' => 'MODX\\Revolution\\modDeprecatedMethod',
'local' => 'method',
'foreign' => 'id',
'cardinality' => 'one',
'owner' => 'foreign',
),
),
'_composites' =>
array (
),
'_relatedObjects' =>
array (
'Method' => NULL,
),
'_validator' => NULL,
'_validationRules' =>
array (
),
'_validated' =>
array (
),
'_validationLoaded' => false,
'_new' => false,
'_cacheFlag' => true,
'_options' =>
array (
),
)),
),
)),
),
))site_id'modx69b8dec798b933.73097230'style'display: none;'table_prefix'modx_'tstart1776895884.94565105438232421875uuid'bbab6a33-5fd0-4a3f-80d2-686932cf714a'wp_filterarray (
'init' =>
array (
0 =>
array (
0 =>
array (
'function' =>
\Closure::__set_state(array(
)),
'accepted_args' => 10,
),
),
),
)