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; }