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 \'OnMODXInit\': $version = $modx->getVersionData(); $version = (int)($version[\'version\'] . $version[\'major_version\']); if ($version < 27) { $modx->loadClass(\'modResource\'); $modx->map[\'modResource\'][\'fieldMeta\'][\'description\'] = array( \'dbtype\' => \'text\', \'phptype\' => \'string\', \'index\' => \'fulltext\', \'indexgrp\' => \'content_ft_idx\', ); } break; case \'OnDocFormRender\': $template = (string)$resource->get(\'template\'); $override = false; if (isset($_REQUEST[\'template\'])) { $template = (string)$_REQUEST[\'template\']; $override = true; } if (($override && $template === \'0\') || (!empty($template) && in_array($template, $disabledTemplates))) { break; } $currClassKey = $resource->get(\'class_key\'); $strFields = $modx->getOption(\'seopro.fields\', null, \'pagetitle:70,longtitle:70,description:320,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\'); $ctxKey = !empty($resource) ? $resource->get(\'context_key\') : $modx->getOption(\'default_context\'); $ctx = $modx->getContext($ctxKey); if ($ctx) { $url = $ctx->getOption(\'site_url\', \'\', $modx->getOption(\'site_url\')); } else { $url = $modx->getOption(\'site_url\'); } if ($mode == \'upd\') { if ($ctx) { if ($resource->get(\'id\') != $ctx->getOption(\'site_start\', \'\', $modx->getOption(\'site_start\'))) { $url .= $resource->get(\'uri\'); } } else { $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\'); } } 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 = (string)$resource->get(\'template\'); $override = false; if (isset($_REQUEST[\'template\'])) { $template = (string)$_REQUEST[\'template\']; $override = true; } if (($override && $template === \'0\') || (!empty($template) && 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){ if (isset($_POST[\'keywords\'])){ $seoKeywords->set(\'keywords\', trim($_POST[\'keywords\'], \',\')); } else { $seoKeywords->set(\'keywords\', \'\'); } $seoKeywords->save(); } break; case \'onResourceDuplicate\': $template = (string)$resource->get(\'template\'); $override = false; if (isset($_REQUEST[\'template\'])) { $template = (string)$_REQUEST[\'template\']; $override = true; } if (($override && $template === \'0\') || (!empty($template) && 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\') : \'\'; 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); } // Render the meta title, based on system settings $titleFormat = $modx->getOption(\'seopro.title_format\'); if (empty($titleFormat)) { $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; } } $title = implode(\' \', $seoProTitle); } else { $title = $modx->getOption(\'seopro.title_format\'); } $modx->setPlaceholder(\'seoPro.title\', $title); break; } return; ';