| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- <?php
- /**
- * 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 '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'),
- '<span id=\"seopro-replace-alias\">' . $resource->get('alias') . '</span>',
- $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('<script type="text/javascript">
- Ext.onReady(function() {
- seoPro.config = ' . $modx->toJSON($config) . ';
- seoPro.config.record = "' . $keywords . '";
- seoPro.config.values = {};
- seoPro.config.fields = "' . implode(",", array_keys($arrFields)) . '";
- seoPro.config.chars = ' . $modx->toJSON($arrFields) . '
- seoPro.config.url = "' . $url . '";
- });</script>');
- /* 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;
|