ng, the output HTML code is indented and formatted. Without source formatting, the output HTML is more compact. ";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:15:"button_tile_map";a:7:{s:4:"name";s:15:"button_tile_map";s:4:"desc";s:338:"If this option is set to true TinyMCE will use tiled images instead of individual images for most of the editor controls. This produces faster loading time since only one GIF image needs to be loaded instead of a GIF for each individual button. This option is set to false by default since it doesn\'t work with some DOCTYPE declarations. ";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:0;s:7:"lexicon";N;s:4:"area";s:0:"";}s:7:"cleanup";a:7:{s:4:"name";s:7:"cleanup";s:4:"desc";s:331:"This option enables or disables the built-in clean up functionality. TinyMCE is equipped with powerful clean up functionality that enables you to specify what elements and attributes are allowed and how HTML contents should be generated. This option is set to true by default, but if you want to disable it you may set it to false.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:18:"cleanup_on_startup";a:7:{s:4:"name";s:18:"cleanup_on_startup";s:4:"desc";s:135:"If you set this option to true, TinyMCE will perform a HTML cleanup call when the editor loads. This option is set to false by default.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:0;s:7:"lexicon";N;s:4:"area";s:0:"";}s:22:"convert_fonts_to_spans";a:7:{s:4:"name";s:22:"convert_fonts_to_spans";s:4:"desc";s:348:"If you set this option to true, TinyMCE will convert all font elements to span elements and generate span elements instead of font elements. This option should be used in order to get more W3C compatible code, since font elements are deprecated. How sizes get converted can be controlled by the font_size_classes and font_size_style_values options.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:23:"convert_newlines_to_brs";a:7:{s:4:"name";s:23:"convert_newlines_to_brs";s:4:"desc";s:128:"If you set this option to true, newline characters codes get converted into br elements. This option is set to false by default.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:0;s:7:"lexicon";N;s:4:"area";s:0:"";}s:12:"convert_urls";a:7:{s:4:"name";s:12:"convert_urls";s:4:"desc";s:495:"This option enables you to control whether TinyMCE is to be clever and restore URLs to their original values. URLs are automatically converted (messed up) by default because the built-in browser logic works this way. There is no way to get the real URL unless you store it away. If you set this option to false it will try to keep these URLs intact. This option is set to true by default, which means URLs will be forced to be either absolute or relative depending on the state of relative_urls.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:11:"dialog_type";a:7:{s:4:"name";s:11:"dialog_type";s:4:"desc";s:246:"This option enables you to specify how dialogs/popups should be opened. Possible values are "window" and "modal", where the window option opens a normal window and the dialog option opens a modal dialog. This option is set to "window" by default.";s:4:"type";s:4:"list";s:7:"options";a:2:{i:0;a:2:{i:0;s:6:"window";s:4:"text";s:6:"Window";}i:1;a:2:{i:0;s:5:"modal";s:4:"text";s:5:"Modal";}}s:5:"value";s:6:"window";s:7:"lexicon";N;s:4:"area";s:0:"";}s:14:"directionality";a:7:{s:4:"name";s:14:"directionality";s:4:"desc";s:261:"This option specifies the default writing direction. Some languages (Like Hebrew, Arabic, Urdu...) write from right to left instead of left to right. The default value of this option is "ltr" but if you want to use from right to left mode specify "rtl" instead.";s:4:"type";s:4:"list";s:7:"options";a:2:{i:0;a:2:{s:5:"value";s:3:"ltr";s:4:"text";s:13:"Left to Right";}i:1;a:2:{s:5:"value";s:3:"rtl";s:4:"text";s:13:"Right to Left";}}s:5:"value";s:3:"ltr";s:7:"lexicon";N;s:4:"area";s:0:"";}s:14:"element_format";a:7:{s:4:"name";s:14:"element_format";s:4:"desc";s:210:"This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".";s:4:"type";s:4:"list";s:7:"options";a:2:{i:0;a:2:{s:5:"value";s:5:"xhtml";s:4:"text";s:5:"XHTML";}i:1;a:2:{s:5:"value";s:4:"html";s:4:"text";s:4:"HTML";}}s:5:"value";s:5:"xhtml";s:7:"lexicon";N;s:4:"area";s:0:"";}s:15:"entity_encoding";a:7:{s:4:"name";s:15:"entity_encoding";s:4:"desc";s:70:"This option controls how entities/characters get processed by TinyMCE.";s:4:"type";s:4:"list";s:7:"options";a:4:{i:0;a:2:{s:5:"value";s:0:"";s:4:"text";s:4:"None";}i:1;a:2:{s:5:"value";s:5:"named";s:4:"text";s:5:"Named";}i:2;a:2:{s:5:"value";s:7:"numeric";s:4:"text";s:7:"Numeric";}i:3;a:2:{s:5:"value";s:3:"raw";s:4:"text";s:3:"Raw";}}s:5:"value";s:0:"";s:7:"lexicon";N;s:4:"area";s:0:"";}s:16:"force_p_newlines";a:7:{s:4:"name";s:16:"force_p_newlines";s:4:"desc";s:147:"This option enables you to disable/enable the creation of paragraphs on return/enter in Mozilla/Firefox. The default value of this option is true. ";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:22:"force_hex_style_colors";a:7:{s:4:"name";s:22:"force_hex_style_colors";s:4:"desc";s:277:"This option enables you to control TinyMCE to force the color format to use hexadecimal instead of rgb strings. It converts for example "color: rgb(255, 255, 0)" to "#FFFF00". This option is set to true by default since otherwice MSIE and Firefox would differ in this behavior.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:6:"height";a:7:{s:4:"name";s:6:"height";s:4:"desc";s:38:"Sets the height of the TinyMCE editor.";s:4:"type";s:9:"textfield";s:7:"options";s:0:"";s:5:"value";s:5:"400px";s:7:"lexicon";N;s:4:"area";s:0:"";}s:11:"indentation";a:7:{s:4:"name";s:11:"indentation";s:4:"desc";s:139:"This option allows specification of the indentation level for indent/outdent buttons in the UI. This defaults to 30px but can be any value.";s:4:"type";s:9:"textfield";s:7:"options";s:0:"";s:5:"value";s:4:"30px";s:7:"lexicon";N;s:4:"area";s:0:"";}s:16:"invalid_elements";a:7:{s:4:"name";s:16:"invalid_elements";s:4:"desc";s:163:"This option should contain a comma separated list of element names to exclude from the content. Elements in this list will removed when TinyMCE executes a cleanup.";s:4:"type";s:9:"textfield";s:7:"options";s:0:"";s:5:"value";s:0:"";s:7:"lexicon";N;s:4:"area";s:0:"";}s:6:"nowrap";a:7:{s:4:"name";s:6:"nowrap";s:4:"desc";s:212:"This nowrap option enables you to control how whitespace is to be wordwrapped within the editor. This option is set to false by default, but if you enable it by setting it to true editor contents will never wrap.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:0;s:7:"lexicon";N;s:4:"area";s:0:"";}s:15:"object_resizing";a:7:{s:4:"name";s:15:"object_resizing";s:4:"desc";s:148:"This option gives you the ability to turn on/off the inline resizing controls of tables and images in Firefox/Mozilla. These are enabled by default.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:12:"path_options";a:7:{s:4:"name";s:12:"path_options";s:4:"desc";s:119:"Sets a group of options. Note: This will override the relative_urls, document_base_url and remove_script_host settings.";s:4:"type";s:9:"textfield";s:7:"options";a:3:{i:0;a:2:{s:5:"value";s:11:"docrelative";s:4:"text";s:17:"Document Relative";}i:1;a:2:{s:5:"value";s:12:"rootrelative";s:4:"text";s:13:"Root Relative";}i:2;a:2:{s:5:"value";s:11:"fullpathurl";s:4:"text";s:13:"Full Path URL";}}s:5:"value";s:11:"docrelative";s:7:"lexicon";N;s:4:"area";s:0:"";}s:28:"plugin_insertdate_dateFormat";a:7:{s:4:"name";s:28:"plugin_insertdate_dateFormat";s:4:"desc";s:53:"Formatting of dates when using the InsertDate plugin.";s:4:"type";s:9:"textfield";s:7:"options";s:0:"";s:5:"value";s:8:"%Y-%m-%d";s:7:"lexicon";N;s:4:"area";s:0:"";}s:28:"plugin_insertdate_timeFormat";a:7:{s:4:"name";s:28:"plugin_insertdate_timeFormat";s:4:"desc";s:53:"Formatting of times when using the InsertDate plugin.";s:4:"type";s:9:"textfield";s:7:"options";s:0:"";s:5:"value";s:8:"%H:%M:%S";s:7:"lexicon";N;s:4:"area";s:0:"";}s:12:"preformatted";a:7:{s:4:"name";s:12:"preformatted";s:4:"desc";s:231:"If you enable this feature, whitespace such as tabs and spaces will be preserved. Much like the behavior of a <pre> element. This can be handy when integrating TinyMCE with webmail clients. This option is disabled by default.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:13:"relative_urls";a:7:{s:4:"name";s:13:"relative_urls";s:4:"desc";s:231:"If this option is set to true, all URLs returned from the file manager will be relative from the specified document_base_url. If it is set to false all URLs will be converted to absolute URLs. This option is set to true by default.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:17:"remove_linebreaks";a:7:{s:4:"name";s:17:"remove_linebreaks";s:4:"desc";s:531:"This option controls whether line break characters should be removed from output HTML. This option is enabled by default because there are differences between browser implementations regarding what to do with white space in the DOM. Gecko and Safari place white space in text nodes in the DOM. IE and Opera remove them from the DOM and therefore the line breaks will automatically be removed in those. This option will normalize this behavior when enabled (true) and all browsers will have a white-space-stripped DOM serialization.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:0;s:7:"lexicon";N;s:4:"area";s:0:"";}s:18:"remove_script_host";a:7:{s:4:"name";s:18:"remove_script_host";s:4:"desc";s:221:"If this option is enabled the protocol and host part of the URLs returned from the file manager will be removed. This option is only used if the relative_urls option is set to false. This option is set to true by default.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:20:"remove_trailing_nbsp";a:7:{s:4:"name";s:20:"remove_trailing_nbsp";s:4:"desc";s:392:"This option enables you to specify that TinyMCE should remove any traling   characters in block elements if you start to write inside them. Paragraphs are default padded with a   and if you write text into such paragraphs the space will remain. Setting this option to true will remove the space. This option is set to false by default since the cursor jumps a bit in Gecko browsers.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:0;s:7:"lexicon";N;s:4:"area";s:0:"";}s:4:"skin";a:7:{s:4:"name";s:4:"skin";s:4:"desc";s:330:"This option enables you to specify what skin you want to use with your theme. A skin is basically a CSS file that gets loaded from the skins directory inside the theme. The advanced theme that TinyMCE comes with has two skins, these are called "default" and "o2k7". We added another skin named "cirkuit" that is chosen by default.";s:4:"type";s:9:"textfield";s:7:"options";s:0:"";s:5:"value";s:7:"cirkuit";s:7:"lexicon";N;s:4:"area";s:0:"";}s:12:"skin_variant";a:7:{s:4:"name";s:12:"skin_variant";s:4:"desc";s:403:"This option enables you to specify a variant for the skin, for example "silver" or "black". "default" skin does not offer any variant, whereas "o2k7" default offers "silver" or "black" variants to the default one. For the "cirkuit" skin there\'s one variant named "silver". When creating a skin, additional variants may also be created, by adding ui_[variant_name].css files alongside the default ui.css.";s:4:"type";s:9:"textfield";s:7:"options";s:0:"";s:5:"value";s:0:"";s:7:"lexicon";N;s:4:"area";s:0:"";}s:20:"table_inline_editing";a:7:{s:4:"name";s:20:"table_inline_editing";s:4:"desc";s:231:"This option gives you the ability to turn on/off the inline table editing controls in Firefox/Mozilla. According to the TinyMCE documentation, these controls are somewhat buggy and not redesignable, so they are disabled by default.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:22:"theme_advanced_disable";a:7:{s:4:"name";s:22:"theme_advanced_disable";s:4:"desc";s:111:"This option should contain a comma separated list of controls to disable from any toolbar row/panel in TinyMCE.";s:4:"type";s:9:"textfield";s:7:"options";s:0:"";s:5:"value";s:0:"";s:7:"lexicon";N;s:4:"area";s:0:"";}s:19:"theme_advanced_path";a:7:{s:4:"name";s:19:"theme_advanced_path";s:4:"desc";s:331:"This option gives you the ability to enable/disable the element path. This option is only useful if the theme_advanced_statusbar_location option is set to "top" or "bottom". This option is set to "true" by default. Setting this option to "false" will effectively hide the path tool, though it still takes up room in the Status Bar.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:32:"theme_advanced_resize_horizontal";a:7:{s:4:"name";s:32:"theme_advanced_resize_horizontal";s:4:"desc";s:319:"This option gives you the ability to enable/disable the horizontal resizing. This option is only useful if the theme_advanced_statusbar_location option is set to "top" or "bottom" and when the theme_advanced_resizing is set to true. This option is set to true by default, allowing both resizing horizontal and vertical.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:23:"theme_advanced_resizing";a:7:{s:4:"name";s:23:"theme_advanced_resizing";s:4:"desc";s:216:"This option gives you the ability to enable/disable the resizing button. This option is only useful if the theme_advanced_statusbar_location option is set to "top" or "bottom". This option is set to false by default.";s:4:"type";s:13:"combo-boolean";s:7:"options";s:0:"";s:5:"value";b:1;s:7:"lexicon";N;s:4:"area";s:0:"";}s:33:"theme_advanced_statusbar_location";a:7:{s:4:"name";s:33:"theme_advanced_statusbar_location";s:4:"desc";s:257:"This option enables you to specify where the element statusbar with the path and resize tool should be located. This option can be set to "top" or "bottom". The default value is set to "top". This option can only be used when the theme is set to "advanced".";s:4:"type";s:4:"list";s:7:"options";a:2:{i:0;a:2:{s:5:"value";s:3:"top";s:4:"text";s:3:"Top";}i:1;a:2:{s:5:"value";s:6:"bottom";s:4:"text";s:6:"Bottom";}}s:5:"value";s:6:"bottom";s:7:"lexicon";N;s:4:"area";s:0:"";}s:28:"theme_advanced_toolbar_align";a:7:{s:4:"name";s:28:"theme_advanced_toolbar_align";s:4:"desc";s:187:"This option enables you to specify the alignment of the toolbar, this value can be "left", "right" or "center" (the default). This option can only be used when theme is set to "advanced".";s:4:"type";s:9:"textfield";s:7:"options";a:3:{i:0;a:2:{s:5:"value";s:6:"center";s:4:"text";s:6:"Center";}i:1;a:2:{s:5:"value";s:4:"left";s:4:"text";s:4:"Left";}i:2;a:2:{s:5:"value";s:5:"right";s:4:"text";s:5:"Right";}}s:5:"value";s:4:"left";s:7:"lexicon";N;s:4:"area";s:0:"";}s:31:"theme_advanced_toolbar_location";a:7:{s:4:"name";s:31:"theme_advanced_toolbar_location";s:4:"desc";s:191:" This option enables you to specify where the toolbar should be located. This option can be set to "top" or "bottom" (the defualt). This option can only be used when theme is set to advanced.";s:4:"type";s:4:"list";s:7:"options";a:2:{i:0;a:2:{s:5:"value";s:3:"top";s:4:"text";s:3:"Top";}i:1;a:2:{s:5:"value";s:6:"bottom";s:4:"text";s:6:"Bottom";}}s:5:"value";s:3:"top";s:7:"lexicon";N;s:4:"area";s:0:"";}s:5:"width";a:7:{s:4:"name";s:5:"width";s:4:"desc";s:32:"The width of the TinyMCE editor.";s:4:"type";s:9:"textfield";s:7:"options";s:0:"";s:5:"value";s:3:"95%";s:7:"lexicon";N;s:4:"area";s:0:"";}s:33:"template_selected_content_classes";a:7:{s:4:"name";s:33:"template_selected_content_classes";s:4:"desc";s:234:"Specify a list of CSS class names for the template plugin. They must be separated by spaces. Any template element with one of the specified CSS classes will have its content replaced by the selected editor content when first inserted.";s:4:"type";s:9:"textfield";s:7:"options";s:0:"";s:5:"value";s:0:"";s:7:"lexicon";N;s:4:"area";s:0:"";}}', 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 3 => array ( 'id' => '3', 'source' => '0', 'property_preprocess' => '0', 'name' => 'seoPro', 'description' => 'seoPro 1.0.4-pl . SEO optimizing plugin for MODx Revolution', 'editor_type' => '0', 'category' => '0', 'cache_type' => '0', 'plugincode' => '/** * The base seoPro snippet. * * @package seopro */ $seoPro = $modx->getService(\'seopro\', \'seoPro\', $modx->getOption(\'seopro.core_path\', null, $modx->getOption(\'core_path\') . \'components/seopro/\') . \'model/seopro/\', $scriptProperties); if (!($seoPro instanceof seoPro)) return \'\'; $disabledTemplates = explode(\',\', $modx->getOption(\'seopro.disabledtemplates\', null, \'0\')); switch ($modx->event->name) { case \'OnDocFormRender\': $template = ($resource->get(\'template\')) ? (string)$resource->get(\'template\') : (string)$_REQUEST[\'template\']; if (in_array($template, $disabledTemplates)) { break; } $currClassKey = $resource->get(\'class_key\'); $strFields = $modx->getOption(\'seopro.fields\', null, \'pagetitle:70,longtitle:70,description:155,alias:2023,menutitle:2023\'); $arrFields = array(); if (is_array(explode(\',\', $strFields))) { foreach (explode(\',\', $strFields) as $field) { list($fieldName, $fieldCount) = explode(\':\', $field); $arrFields[$fieldName] = $fieldCount; } } else { return \'\'; } $keywords = \'\'; $modx->controller->addLexiconTopic(\'seopro:default\'); if ($mode == \'upd\') { $url = $modx->makeUrl($resource->get(\'id\'), \'\', \'\', \'full\'); $url = str_replace($resource->get(\'alias\'), \'\' . $resource->get(\'alias\') . \'\', $url); $seoKeywords = $modx->getObject(\'seoKeywords\', array(\'resource\' => $resource->get(\'id\'))); if ($seoKeywords) { $keywords = $seoKeywords->get(\'keywords\'); } } else { if ($_REQUEST[\'id\']) { $url = $modx->makeUrl($_REQUEST[\'id\'], \'\', \'\', \'full\'); $url .= \'/\'; } else { $url = $modx->getOption(\'site_url\') . \'\'; } } if ($_REQUEST[\'id\'] == $modx->getOption(\'site_start\')) { unset($arrFields[\'alias\']); unset($arrFields[\'menutitle\']); } $config = $seoPro->config; unset($config[\'resource\']); $modx->regClientStartupHTMLBlock(\'\'); /* include CSS and JS*/ $version = $modx->getVersionData(); if($version[\'version\'] == 2 && $version[\'major_version\'] == 2){ $modx->regClientCSS($seoPro->config[\'assetsUrl\'] . \'css/mgr.css\'); }else{ $modx->regClientCSS($seoPro->config[\'assetsUrl\'] . \'css/mgr23.css\'); } $modx->regClientStartupScript($seoPro->config[\'assetsUrl\'] . \'js/mgr/seopro.js??v=\' . $modx->getOption(\'seopro.version\', null, \'v1.0.0\')); $modx->regClientStartupScript($seoPro->config[\'assetsUrl\'] . \'js/mgr/resource.js?v=\' . $modx->getOption(\'seopro.version\', null, \'v1.0.0\')); break; case \'OnDocFormSave\': $template = ($resource->get(\'template\')) ? (string)$resource->get(\'template\') : (string)$_REQUEST[\'template\']; if (in_array($template, $disabledTemplates)) { break; } $seoKeywords = $modx->getObject(\'seoKeywords\', array(\'resource\' => $resource->get(\'id\'))); if (!$seoKeywords && isset($resource)) { $seoKeywords = $modx->newObject(\'seoKeywords\', array(\'resource\' => $resource->get(\'id\'))); } if($seoKeywords){ $seoKeywords->set(\'keywords\', trim($_POST[\'keywords\'], \',\')); $seoKeywords->save(); } break; case \'onResourceDuplicate\': $template = ($resource->get(\'template\')) ? (string)$resource->get(\'template\') : (string)$_REQUEST[\'template\']; if (in_array($template, $disabledTemplates)) { break; } $seoKeywords = $modx->getObject(\'seoKeywords\', array(\'resource\' => $resource->get(\'id\'))); if (!$seoKeywords) { $seoKeywords = $modx->newObject(\'seoKeywords\', array(\'resource\' => $resource->get(\'id\'))); } $newSeoKeywords = $modx->newObject(\'seoKeywords\'); $newSeoKeywords->fromArray($seoKeywords->toArray()); $newSeoKeywords->set(\'resource\', $newResource->get(\'id\')); $newSeoKeywords->save(); break; case \'OnLoadWebDocument\': if ($modx->context->get(\'key\') == "mgr") { break; } $template = ($modx->resource->get(\'template\')) ? (string)$modx->resource->get(\'template\') : (string)$_REQUEST[\'template\']; if (in_array($template, $disabledTemplates)) { break; } $seoKeywords = $modx->getObject(\'seoKeywords\', array(\'resource\' => $modx->resource->get(\'id\'))); if ($seoKeywords) { $keyWords = $seoKeywords->get(\'keywords\'); $modx->setPlaceholder(\'seoPro.keywords\', $keyWords); } $siteBranding = (boolean) $modx->getOption(\'seopro.allowbranding\', null, true); $siteDelimiter = $modx->getOption(\'seopro.delimiter\', null, \'/\'); $siteUseSitename = (boolean) $modx->getOption(\'seopro.usesitename\', null, true); $siteID = $modx->resource->get(\'id\'); $siteName = $modx->getOption(\'site_name\'); $longtitle = $modx->resource->get(\'longtitle\'); $pagetitle = $modx->resource->get(\'pagetitle\'); $seoProTitle = array(); if ($siteID == $modx->getOption(\'site_start\')) { $seoProTitle[\'pagetitle\'] = !empty($longtitle) ? $longtitle : $siteName; } else { $seoProTitle[\'pagetitle\'] = !empty($longtitle) ? $longtitle : $pagetitle; if ($siteUseSitename) { $seoProTitle[\'delimiter\'] = $siteDelimiter; $seoProTitle[\'sitename\'] = $siteName; } } $modx->setPlaceholder(\'seoPro.title\', implode(" ", $seoProTitle)); if ($siteBranding) { $modx->regClientStartupHTMLBlock(\'\'); } break; }', 'locked' => '0', 'properties' => NULL, 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 5 => array ( 'id' => '5', 'source' => '0', 'property_preprocess' => '0', 'name' => 'ClientConfig', 'description' => 'Sets system settings from the Client Config CMP.', 'editor_type' => '0', 'category' => '0', 'cache_type' => '0', 'plugincode' => '/** * ClientConfig * * Copyright 2011-2014 by Mark Hamstra * * ClientConfig 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. * * ClientConfig 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 * ClientConfig; if not, write to the Free Software Foundation, Inc., 59 Temple * Place, Suite 330, Boston, MA 02111-1307 USA * * @package clientconfig * * @var modX $modx * @var int $id * @var string $mode * @var modResource $resource * @var modTemplate $template * @var modTemplateVar $tv * @var modChunk $chunk * @var modSnippet $snippet * @var modPlugin $plugin */ $eventName = $modx->event->name; switch($eventName) { case \'OnMODXInit\': /* Grab the class */ $path = $modx->getOption(\'clientconfig.core_path\', null, $modx->getOption(\'core_path\') . \'components/clientconfig/\'); $path .= \'model/clientconfig/\'; $clientConfig = $modx->getService(\'clientconfig\',\'ClientConfig\', $path); /* If we got the class (gotta be careful of failed migrations), grab settings and go! */ if ($clientConfig instanceof ClientConfig) { $settings = $clientConfig->getSettings(); /* Make settings available as [[++tags]] */ $modx->setPlaceholders($settings, \'+\'); /* Make settings available for $modx->getOption() */ foreach ($settings as $key => $value) { $modx->setOption($key, $value); } } break; } return;', 'locked' => '0', 'properties' => NULL, 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 6 => array ( 'id' => '6', 'source' => '0', 'property_preprocess' => '0', 'name' => 'Tagger', 'description' => '', 'editor_type' => '0', 'category' => '6', 'cache_type' => '0', 'plugincode' => '/** * Tagger * * DESCRIPTION * * This plugin inject JS to add Tab with tag groups into Resource panel */ $corePath = $modx->getOption(\'tagger.core_path\', null, $modx->getOption(\'core_path\', null, MODX_CORE_PATH) . \'components/tagger/\'); /** @var Tagger $tagger */ $tagger = $modx->getService( \'tagger\', \'Tagger\', $corePath . \'model/tagger/\', array( \'core_path\' => $corePath ) ); $className = \'Tagger\' . $modx->event->name; $modx->loadClass(\'TaggerPlugin\', $tagger->getOption(\'modelPath\') . \'tagger/events/\', true, true); $modx->loadClass($className, $tagger->getOption(\'modelPath\') . \'tagger/events/\', true, true); if (class_exists($className)) { /** @var TaggerPlugin $handler */ $handler = new $className($modx, $scriptProperties); $handler->run(); } return;', 'locked' => '0', 'properties' => 'a:0:{}', 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 7 => array ( 'id' => '7', 'source' => '0', 'property_preprocess' => '0', 'name' => 'phpThumbOfCacheManager', 'description' => 'Handles cache cleaning when clearing the Site Cache.', 'editor_type' => '0', 'category' => '7', 'cache_type' => '0', 'plugincode' => '/* * Handles cache cleanup * pThumb * Copyright 2013 Jason Grant * * Please see the GitHub page for documentation or to report bugs: * https://github.com/oo12/phpThumbOf * * pThumb 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. * * pThumb 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 * phpThumbOf; if not, write to the Free Software Foundation, Inc., 59 Temple * Place, Suite 330, Boston, MA 02111-1307 USA */ if ($modx->event->name === \'OnSiteRefresh\') { if (!$modx->loadClass(\'pThumbCacheCleaner\', MODX_CORE_PATH . \'components/phpthumbof/model/\', true, true)) { $modx->log(modX::LOG_LEVEL_ERROR, \'[pThumb] Could not load pThumbCacheCleaner class.\'); return; } static $pt_settings = array(); $pThumb = new pThumbCacheCleaner($modx, $pt_settings, array(), true); $pThumb->cleanCache(); }', 'locked' => '0', 'properties' => NULL, 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 8 => array ( 'id' => '8', 'source' => '0', 'property_preprocess' => '0', 'name' => 'Collections', 'description' => '', 'editor_type' => '0', 'category' => '9', 'cache_type' => '0', 'plugincode' => '/** * Collections * * DESCRIPTION * * This plugin inject JS to handle proper working of close buttons in Resource\'s panel (OnDocFormPrerender) * This plugin handles setting proper show_in_tree parameter (OnBeforeDocFormSave, OnResourceSort) * * @var modX $modx * @var array $scriptProperties */ $corePath = $modx->getOption(\'collections.core_path\', null, $modx->getOption(\'core_path\', null, MODX_CORE_PATH) . \'components/collections/\'); /** @var Collections $collections */ $collections = $modx->getService( \'collections\', \'Collections\', $corePath . \'model/collections/\', array( \'core_path\' => $corePath ) ); $className = \'Collections\' . $modx->event->name; $modx->loadClass(\'CollectionsPlugin\', $collections->getOption(\'modelPath\') . \'collections/events/\', true, true); $modx->loadClass($className, $collections->getOption(\'modelPath\') . \'collections/events/\', true, true); if (class_exists($className)) { /** @var CollectionsPlugin $handler */ $handler = new $className($modx, $scriptProperties); $handler->run(); } return;', 'locked' => '0', 'properties' => 'a:0:{}', 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 9 => array ( 'id' => '9', 'source' => '0', 'property_preprocess' => '0', 'name' => 'ArchivistFurl', 'description' => 'Handles FURLs for Archivist.', 'editor_type' => '0', 'category' => '0', 'cache_type' => '0', 'plugincode' => '/** * Archivist * * Copyright 2010-2011 by Shaun McCormick * * This file is part of Archivist, a simple archive navigation system for MODx * Revolution. * * Archivist 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. * * Archivist 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 * Archivist; if not, write to the Free Software Foundation, Inc., 59 Temple * Place, Suite 330, Boston, MA 02111-1307 USA * * @package archivist */ /** * @var modX $modx * @package archivist */ if ($modx->event->name != \'OnPageNotFound\') return; $archiveIds = $modx->getOption(\'archivist.archive_ids\',null,\'\'); if (empty($archiveIds)) return; $archiveIds = explode(\',\',$archiveIds); /* handle redirects */ $search = $_SERVER[\'REQUEST_URI\']; $base_url = $modx->getOption(\'base_url\'); if ($base_url != \'/\') { $search = str_replace($base_url,\'\',$search); } $search = trim($search, \'/\'); /* get resource to redirect to */ $resourceId = false; $prefix = \'arc_\'; foreach ($archiveIds as $archive) { $archive = explode(\':\',$archive); $archiveId = $archive[0]; $alias = array_search($archiveId,$modx->aliasMap); if ($alias && strpos($search,$alias) !== false) { $search = str_replace($alias,\'\',$search); $resourceId = $archiveId; if (isset($archive[1])) $prefix = $archive[1]; } } if (!$resourceId) return; /* figure out archiving */ $params = explode(\'/\', $search); if (count($params) < 1) return; /* tag handling! */ if ($params[0] == \'tags\') { $_GET[\'tag\'] = $params[1]; } else if ($params[0] == \'user\' || $params[0] == \'author\') { $_GET[$prefix.\'author\'] = $params[1]; } else { /* set Archivist parameters for date-based archives */ $_GET[$prefix.\'year\'] = $params[0]; if (isset($params[1])) $_GET[$prefix.\'month\'] = $params[1]; if (isset($params[2])) $_GET[$prefix.\'day\'] = $params[2]; } /* forward */ $modx->sendForward($resourceId); return;', 'locked' => '0', 'properties' => 'a:0:{}', 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 10 => array ( 'id' => '10', 'source' => '0', 'property_preprocess' => '0', 'name' => 'QuipResourceCleaner', 'description' => 'Cleans up threads when a Resource is removed.', 'editor_type' => '0', 'category' => '0', 'cache_type' => '0', 'plugincode' => '/** * Quip * * Copyright 2010-11 by Shaun McCormick * * This file is part of Quip, a simple commenting component for MODx Revolution. * * Quip 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. * * Quip 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 * Quip; if not, write to the Free Software Foundation, Inc., 59 Temple Place, * Suite 330, Boston, MA 02111-1307 USA * * @package quip */ /** * Handles removal of threads if a Resource is deleted. * * @package quip */ $quip = $modx->getService(\'quip\',\'Quip\',$modx->getOption(\'quip.core_path\',null,$modx->getOption(\'core_path\').\'components/quip/\').\'model/quip/\',$scriptProperties); if (!($quip instanceof Quip)) return; switch ($modx->event->name) { case \'OnEmptyTrash\': foreach ($scriptProperties[\'ids\'] as $id) { if (empty($id)) continue; $threads = $modx->getCollection(\'quipThread\',array(\'resource\' => $id)); foreach ($threads as $thread) { $modx->log(modX::LOG_LEVEL_INFO,\'[Quip] Removing thread: \'.$thread->get(\'name\')); $thread->remove(); } } break; } return;', 'locked' => '0', 'properties' => NULL, 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 11 => array ( 'id' => '11', 'source' => '0', 'property_preprocess' => '0', 'name' => 'ArticlesPlugin', 'description' => 'Handles FURLs for Articles.', 'editor_type' => '0', 'category' => '0', 'cache_type' => '0', 'plugincode' => '/** * Articles * * Copyright 2011-12 by Shaun McCormick * * Articles 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. * * Articles 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 * Articles; if not, write to the Free Software Foundation, Inc., 59 Temple * Place, Suite 330, Boston, MA 02111-1307 USA * * @package articles */ /** * @var modX $modx * @var array $scriptProperties */ switch ($modx->event->name) { case \'OnManagerPageInit\': $cssFile = $modx->getOption(\'articles.assets_url\',null,$modx->getOption(\'assets_url\').\'components/articles/\').\'css/mgr.css\'; $modx->regClientCSS($cssFile); break; case \'OnPageNotFound\': $corePath = $modx->getOption(\'articles.core_path\',null,$modx->getOption(\'core_path\').\'components/articles/\'); require_once $corePath.\'model/articles/articlesrouter.class.php\'; $router = new ArticlesRouter($modx); $router->route(); return; case \'OnDocPublished\': /** @var Article $resource */ $resource =& $scriptProperties[\'resource\']; if ($resource instanceof Article) { $resource->setArchiveUri(); $resource->save(); $modx->cacheManager->refresh(array( \'db\' => array(), \'auto_publish\' => array(\'contexts\' => array($resource->get(\'context_key\'))), \'context_settings\' => array(\'contexts\' => array($resource->get(\'context_key\'))), \'resource\' => array(\'contexts\' => array($resource->get(\'context_key\'))), )); $resource->notifyUpdateServices(); $resource->sendNotifications(); } break; case \'OnDocUnPublished\': $resource =& $scriptProperties[\'resource\']; break; } return;', 'locked' => '0', 'properties' => 'a:0:{}', 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 15 => array ( 'id' => '15', 'source' => '0', 'property_preprocess' => '0', 'name' => 'Redirector', 'description' => 'Handles site redirects.', 'editor_type' => '0', 'category' => '0', 'cache_type' => '0', 'plugincode' => '/** * @package redirector * * @var modX|xPDO $modx * @var array $scriptProperties * @var modResource $resource * @var string $mode */ /* load redirector class */ $corePath = $modx->getOption(\'redirector.core_path\', $scriptProperties, $modx->getOption(\'core_path\') . \'components/redirector/\'); $redirector = $modx->getService(\'redirector\', \'Redirector\', $corePath . \'model/redirector/\', $scriptProperties); if (!($redirector instanceof Redirector)) { return \'\'; } $eventName = $modx->event->name; switch ($eventName) { case \'OnPageNotFound\': /* handle redirects */ $search = rawurldecode($_SERVER[\'REQUEST_URI\']); $baseUrl = $modx->getOption(\'base_url\', null, MODX_BASE_URL); if (!empty($baseUrl) && $baseUrl != \'/\' && $baseUrl != \' \' && $baseUrl != \'/\' . $modx->context->get(\'key\') . \'/\') { $search = str_replace($baseUrl, \'\', $search); } $search = ltrim($search, \'/\'); if (!empty($search)) { /** @var modRedirect $redirect */ $redirect = $modx->getObject(\'modRedirect\', array( "(`modRedirect`.`pattern` = \'" . $search . "\')", "(`modRedirect`.`context_key` = \'" . $modx->context->get(\'key\') . "\' OR `modRedirect`.`context_key` IS NULL OR `modRedirect`.`context_key` = \'\')", \'active\' => true, )); // when not found, check a REGEX record.. // need to separate this one because of some \'alias.html > target.html\' vs. \'best-alias.html > best-target.html\' issues... if (empty($redirect) || !is_object($redirect)) { $c = $modx->newQuery(\'modRedirect\'); $c->where(array( "(`modRedirect`.`pattern` = \'" . $search . "\' OR \'" . $search . "\' REGEXP `modRedirect`.`pattern` OR \'" . $search . "\' REGEXP CONCAT(\'^\', `modRedirect`.`pattern`, \'$\'))", "(`modRedirect`.`context_key` = \'" . $modx->context->get(\'key\') . "\' OR `modRedirect`.`context_key` IS NULL OR `modRedirect`.`context_key` = \'\')", \'active\' => true, )); $redirect = $modx->getObject(\'modRedirect\', $c); } if (!empty($redirect) && is_object($redirect)) { /** @var modContext $context */ $context = $redirect->getOne(\'Context\'); if (empty($context) || !($context instanceof modContext)) { $context = $modx->context; } $target = $redirect->get(\'target\'); $modx->parser->processElementTags(\'\', $target, true, true); if ($target != $modx->resourceIdentifier && $target != $search) { if (strpos($target, \'$\') !== false) { $pattern = $redirect->get(\'pattern\'); $target = preg_replace(\'/\' . $pattern . \'/\', $target, $search); } if (!strpos($target, \'://\')) { $target = rtrim($context->getOption(\'site_url\'), \'/\') . \'/\' . (($target == \'/\') ? \'\' : ltrim($target, \'/\')); } $modx->log(modX::LOG_LEVEL_INFO, \'Redirector plugin redirecting request for \' . $search . \' to \' . $target); $redirect->registerTrigger(); $options = array(\'responseCode\' => \'HTTP/1.1 301 Moved Permanently\'); $modx->sendRedirect($target, $options); } } } break; case \'OnDocFormRender\': $track_uri_updates = (boolean)$modx->getOption(\'redirector.track_uri_updates\', null, 1); $track_uri_updates = (in_array($track_uri_updates, array(false, \'false\', 0, \'0\', \'no\', \'n\'), true)) ? false : true; if ($mode == \'upd\' && $track_uri_updates) { $_SESSION[\'modx_resource_uri\'] = $resource->get(\'uri\'); } break; case \'OnDocFormSave\': /* if uri has changed, add to redirects */ $track_uri_updates = $modx->getOption(\'redirector.track_uri_updates\', null, 1); $track_uri_updates = (in_array($track_uri_updates, array(false, \'false\', 0, \'0\', \'no\', \'n\'), true)) ? false : true; $context_key = $resource->get(\'context_key\'); $new_uri = $resource->get(\'uri\'); if ($mode == \'upd\' && $track_uri_updates && !empty($_SESSION[\'modx_resource_uri\'])) { $old_uri = $_SESSION[\'modx_resource_uri\']; if ($old_uri != $new_uri) { /* uri changed */ $redirect = $modx->getObject(\'modRedirect\', array( \'pattern\' => $old_uri, \'context_key\' => $context_key, \'active\' => true )); if (empty($redirect)) { /* no record for old uri */ $new_redirect = $modx->newObject(\'modRedirect\'); $new_redirect->fromArray(array( \'pattern\' => $old_uri, \'target\' => \'[[~\' . $resource->get(\'id\') . \']]\', \'context_key\' => $context_key, \'active\' => true, )); if ($new_redirect->save() == false) { return $modx->error->failure($modx->lexicon(\'redirector.redirect_err_save\')); } } } $_SESSION[\'modx_resource_uri\'] = $new_uri; } break; } return \'\';', 'locked' => '0', 'properties' => NULL, 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 17 => array ( 'id' => '17', 'source' => '0', 'property_preprocess' => '0', 'name' => 'SimpleSearchIndexer', 'description' => 'Automatically indexes Resources into Solr.', 'editor_type' => '0', 'category' => '0', 'cache_type' => '0', 'plugincode' => '/** * SimpleSearch * * Copyright 2010-11 by Shaun McCormick * * This file is part of SimpleSearch, a simple search component for MODx * Revolution. It is loosely based off of AjaxSearch for MODx Evolution by * coroico/kylej, minus the ajax. * * SimpleSearch 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. * * SimpleSearch 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 * SimpleSearch; if not, write to the Free Software Foundation, Inc., 59 Temple Place, * Suite 330, Boston, MA 02111-1307 USA * * @package simplesearch */ /** * Plugin to index Resources whenever they are changed, published, unpublished, * deleted, or undeleted. * * @var modX $modx * @var SimpleSearch $search * * @package simplesearch */ require_once $modx->getOption(\'sisea.core_path\',null,$modx->getOption(\'core_path\').\'components/simplesearch/\').\'model/simplesearch/simplesearch.class.php\'; $search = new SimpleSearch($modx,$scriptProperties); $search->loadDriver($scriptProperties); if (!$search->driver || (!($search->driver instanceof SimpleSearchDriverSolr) && !($search->driver instanceof SimpleSearchDriverElastic))) return; /** * helper method for missing params in events * @param modX $modx * @param array $children * @param int $parent * @return boolean */ if (!function_exists(\'SimpleSearchGetChildren\')) { function SimpleSearchGetChildren(&$modx,&$children,$parent) { $success = false; $kids = $modx->getCollection(\'modResource\',array( \'parent\' => $parent, )); if (!empty($kids)) { /** @var modResource $kid */ foreach ($kids as $kid) { $children[] = $kid->toArray(); SimpleSearchGetChildren($modx,$children,$kid->get(\'id\')); } } return $success; } } $action = \'index\'; $resourcesToIndex = array(); switch ($modx->event->name) { case \'OnDocFormSave\': $action = \'index\'; $resourceArray = $scriptProperties[\'resource\']->toArray(); if ($resourceArray[\'published\'] == 1 && $resourceArray[\'deleted\'] == 0) { $action = \'index\'; foreach ($_POST as $k => $v) { if (substr($k,0,2) == \'tv\') { $id = str_replace(\'tv\',\'\',$k); /** @var modTemplateVar $tv */ $tv = $modx->getObject(\'modTemplateVar\',$id); if ($tv) { $resourceArray[$tv->get(\'name\')] = $tv->renderOutput($resource->get(\'id\')); $modx->log(modX::LOG_LEVEL_DEBUG,\'Indexing \'.$tv->get(\'name\').\': \'.$resourceArray[$tv->get(\'name\')]); } unset($resourceArray[$k]); } } } else { $action = \'removeIndex\'; } unset($resourceArray[\'ta\'],$resourceArray[\'action\'],$resourceArray[\'tiny_toggle\'],$resourceArray[\'HTTP_MODAUTH\'],$resourceArray[\'modx-ab-stay\'],$resourceArray[\'resource_groups\']); $resourcesToIndex[] = $resourceArray; break; case \'OnDocPublished\': $action = \'index\'; $resourceArray = $scriptProperties[\'resource\']->toArray(); unset($resourceArray[\'ta\'],$resourceArray[\'action\'],$resourceArray[\'tiny_toggle\'],$resourceArray[\'HTTP_MODAUTH\'],$resourceArray[\'modx-ab-stay\'],$resourceArray[\'resource_groups\']); $resourcesToIndex[] = $resourceArray; break; case \'OnDocUnpublished\': case \'OnDocUnPublished\': $action = \'removeIndex\'; $resourceArray = $scriptProperties[\'resource\']->toArray(); unset($resourceArray[\'ta\'],$resourceArray[\'action\'],$resourceArray[\'tiny_toggle\'],$resourceArray[\'HTTP_MODAUTH\'],$resourceArray[\'modx-ab-stay\'],$resourceArray[\'resource_groups\']); $resourcesToIndex[] = $resourceArray; break; case \'OnResourceDuplicate\': $action = \'index\'; /** @var modResource $newResource */ $resourcesToIndex[] = $newResource->toArray(); $children = array(); SimpleSearchGetChildren($modx,$children,$newResource->get(\'id\')); foreach ($children as $child) { $resourcesToIndex[] = $child; } break; case \'OnResourceDelete\': $action = \'removeIndex\'; $resourcesToIndex[] = $resource->toArray(); $children = array(); SimpleSearchGetChildren($modx,$children,$resource->get(\'id\')); foreach ($children as $child) { $resourcesToIndex[] = $child; } break; case \'OnResourceUndelete\': $action = \'index\'; $resourcesToIndex[] = $resource->toArray(); $children = array(); SimpleSearchGetChildren($modx,$children,$resource->get(\'id\')); foreach ($children as $child) { $resourcesToIndex[] = $child; } break; } foreach ($resourcesToIndex as $resourceArray) { if (!empty($resourceArray[\'id\'])) { if ($action == \'index\') { $search->driver->index($resourceArray); } else if ($action == \'removeIndex\') { $search->driver->removeIndex($resourceArray[\'id\']); } } } return;', 'locked' => '0', 'properties' => NULL, 'disabled' => '0', 'moduleguid' => '', 'static' => '0', 'static_file' => '', ), 18 => array ( 'id' => '18', 'source' => '0', 'property_preprocess' => '0', 'name' => 'CKEditor', 'description' => 'CKEditor WYSIWYG editor plugin for MODx Revolution', 'editor_type' => '0', 'category' => '0', 'cache_type' => '0', 'plugincode' => '', 'locked' => '0', 'properties' => NULL, 'disabled' => '0', 'moduleguid' => '', 'static' => '1', 'static_file' => 'ckeditor/elements/plugins/ckeditor.plugin.php', ), ), 'policies' => array ( '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_template' => true, 'delete_tv' => true, 'delete_user' => 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_template' => true, 'edit_tv' => true, 'edit_user' => 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_update' => true, 'file_upload' => true, 'file_unpack' => true, 'file_view' => true, 'flush_sessions' => true, 'frames' => true, 'help' => true, 'home' => true, 'import_static' => true, 'languages' => true, 'lexicons' => true, 'list' => true, 'load' => true, 'logout' => true, 'logs' => true, 'menus' => true, 'menu_reports' => true, 'menu_security' => true, 'menu_site' => true, 'menu_support' => true, 'menu_system' => true, 'menu_tools' => true, 'menu_user' => 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, 'resourcegroup_delete' => true, 'resourcegroup_edit' => true, 'resourcegroup_new' => true, 'resourcegroup_resource_edit' => true, 'resourcegroup_resource_list' => true, 'resourcegroup_save' => true, 'resourcegroup_view' => true, 'resource_quick_create' => true, 'resource_quick_update' => true, 'resource_tree' => 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, 'settings' => true, 'sources' => true, 'source_delete' => true, 'source_edit' => true, 'source_save' => true, 'source_view' => 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, ), ), ), ), ), );
Parse error: syntax error, unexpected '<', expecting end of file in /gluster-storage/home/ukat/uk-rehab.com/public/core/cache/includes/elements/modplugin/5.include.cache.php on line 59