uawdijnntqw1x1x1
IP : 216.73.217.59
Hostname : webm003.cluster107.gra.hosting.ovh.net
Kernel : Linux webm003.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
opticamezl
/
www
/
newok
/
tmp
/
..
/
cli
/
..
/
api
/
..
/
language
/
..
/
plugins
/
..
/
cache
/
..
/
joomla.zip
/
/
PK 9�\^���field/TraitShack.phpnu&1i�<?php /** * @package OSMap * @contact www.joomlashack.com, help@joomlashack.com * @copyright 2021-2023 Joomlashack.com. All rights reserved * @license https://www.gnu.org/licenses/gpl.html GNU/GPL * * This file is part of OSMap. * * OSMap 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. * * OSMap 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 OSMap. If not, see <https://www.gnu.org/licenses/>. */ use Alledia\Framework\Factory; defined('_JEXEC') or die(); trait TraitShack { protected static $frameworkLoaded = null; /** * @return bool */ protected function isPro() { if ($this->isFrameworkLoaded()) { $license = Factory::getExtension('osmap', 'component'); return $license->isPro(); } return false; } /** * @return null */ protected function isFrameworkLoaded() { if (static::$frameworkLoaded === null) { if (!defined('ALLEDIA_FRAMEWORK_LOADED')) { $path = JPATH_SITE . '/libraries/allediaframework/include.php'; if (is_file($path)) { require_once $path; } } static::$frameworkLoaded = defined('ALLEDIA_FRAMEWORK_LOADED'); } return static::$frameworkLoaded; } } PK 9�\�z���field/radio.phpnu&1i�<?php /** * @package OSMap * @contact www.joomlashack.com, help@joomlashack.com * @copyright 2021-2023 Joomlashack.com. All rights reserved * @license https://www.gnu.org/licenses/gpl.html GNU/GPL * * This file is part of OSMap. * * OSMap 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. * * OSMap 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 OSMap. If not, see <https://www.gnu.org/licenses/>. */ use Joomla\CMS\Form\FormHelper; defined('_JEXEC') or die(); require_once __DIR__ . '/TraitShack.php'; FormHelper::loadFieldClass('radio'); class ShackFormFieldRadio extends JFormFieldRadio { use TraitShack; public function setup(SimpleXMLElement $element, $value, $group = null) { return $this->isPro() && parent::setup($element, $value, $group); } } PK 9�\���u��)language/en-GB/en-GB.plg_osmap_joomla.ininu&1i�; @package OSMap ; @contact www.joomlashack.com, help@joomlashack.com ; @copyright 2007-2014 XMap - Joomla! Vargas - Guillermo Vargas. All rights reserved. ; @copyright 2016-2023 Joomlashack.com. All rights reserved. ; @license https://www.gnu.org/licenses/gpl.html GNU/GPL ; ; This file is part of OSMap. ; ; OSMap 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. ; ; OSMap 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 OSMap. If not, see <https://www.gnu.org/licenses/>. ; ; Note : All ini files need to be saved as UTF-8 - No BOM PLG_OSMAP_JOOMLA = "OSMap - Joomla Content" PLG_OSMAP_JOOMLA_PLUGIN_DESCRIPTION = "Add support for articles and categories" COM_PLUGINS_BASIC_FIELDSET_LABEL = "Basic Settings" COM_PLUGINS_NEWS_FIELDSET_LABEL = "News Sitemap Settings" COM_PLUGINS_XML_FIELDSET_LABEL = "XML Sitemap Settings" JGLOBAL_FIELDSET_NEWS = "News" JGLOBAL_FIELDSET_XML = "XML" PLG_OSMAP_JOOMLA_OPTION_ALL = "All" PLG_OSMAP_JOOMLA_OPTION_ALWAYS = "Always" PLG_OSMAP_JOOMLA_OPTION_ASC = "ASC" PLG_OSMAP_JOOMLA_OPTION_CREATED = "Creation Date" PLG_OSMAP_JOOMLA_OPTION_DAILY = "Daily" PLG_OSMAP_JOOMLA_OPTION_DESC = "DESC" PLG_OSMAP_JOOMLA_OPTION_HITS = "Visits" PLG_OSMAP_JOOMLA_OPTION_HOURLY = "Hourly" PLG_OSMAP_JOOMLA_OPTION_HTML_ONLY = "In HTML Sitemap Only" PLG_OSMAP_JOOMLA_OPTION_MODIFIED = "Modification Date" PLG_OSMAP_JOOMLA_OPTION_MONTHLY = "Monthly" PLG_OSMAP_JOOMLA_OPTION_NEVER = "Never" PLG_OSMAP_JOOMLA_OPTION_ORDERING = "Ordering" PLG_OSMAP_JOOMLA_OPTION_PUBLISH = "Publish Date" PLG_OSMAP_JOOMLA_OPTION_TITLE = "Title" PLG_OSMAP_JOOMLA_OPTION_USE_PARENT_MENU = "Use Parent Menu Settings" PLG_OSMAP_JOOMLA_OPTION_WEEKLY = "Weekly" PLG_OSMAP_JOOMLA_OPTION_XML_ONLY = "In XML Sitemap Only" PLG_OSMAP_JOOMLA_OPTION_YEARLY = "Yearly" PLG_OSMAP_JOOMLA_SETTING_ADD_IMAGES_DESC = "If yes, will parse the content of the article searching for images to add them to the site map. Valid Only for XML site map (Search engines Sitemap) " PLG_OSMAP_JOOMLA_SETTING_ADD_IMAGES_LABEL = "Add images?" PLG_OSMAP_JOOMLA_SETTING_ADD_PAGEBREAKS_DESC = "If yes, will include the sub-pages of the article into the sitemap." PLG_OSMAP_JOOMLA_SETTING_ADD_PAGEBREAKS_LABEL = "Add Pagebreak" PLG_OSMAP_JOOMLA_SETTING_ART_CHANCE_FREQ = "Article Change frequency" PLG_OSMAP_JOOMLA_SETTING_ART_CHANCE_FREQ_DESC = "Set the chage frequency for articles" PLG_OSMAP_JOOMLA_SETTING_ART_PRIORITY = "Article Priority" PLG_OSMAP_JOOMLA_SETTING_ART_PRIORITY_DESC = "Set the priority for articles" PLG_OSMAP_JOOMLA_SETTING_ARTICLE_ORDER_DESC = "Specify how to sort the articles" PLG_OSMAP_JOOMLA_SETTING_ARTICLE_ORDER_DIR_DESC = "Specify the direction for article's ordering" PLG_OSMAP_JOOMLA_SETTING_ARTICLE_ORDER_DIR_LABEL = "Article ordering direction" PLG_OSMAP_JOOMLA_SETTING_ARTICLE_ORDER_LABEL = "Article ordering" PLG_OSMAP_JOOMLA_SETTING_CAT_CHANCE_FREQ = "Category Change frequency" PLG_OSMAP_JOOMLA_SETTING_CAT_CHANCE_FREQ_DESC = "Set the chage frequency for the categories" PLG_OSMAP_JOOMLA_SETTING_CAT_PRIORITY = "Category Priority" PLG_OSMAP_JOOMLA_SETTING_CAT_PRIORITY_DESC = "Set the priority for the categories" PLG_OSMAP_JOOMLA_SETTING_EXPAND_CATEGORIES = "Expand Categories" PLG_OSMAP_JOOMLA_SETTING_EXPAND_CATEGORIES_DESC = "Set true if OSMap should include the articles within each category link" PLG_OSMAP_JOOMLA_SETTING_EXPAND_FEATURED = "Expand Featured" PLG_OSMAP_JOOMLA_SETTING_EXPAND_FEATURED_DESC = "Set true if OSMap should include the articles within each "Featured Articles" link (usually the frontpage menu item)" PLG_OSMAP_JOOMLA_SETTING_INCLUDE_ARCHIVED = "Include Archived" PLG_OSMAP_JOOMLA_SETTING_INCLUDE_ARCHIVED_DESC = "Select when should the archived articles be included in the sitemap" PLG_OSMAP_JOOMLA_SETTING_MAX_ART_AGE = "Max. Article's Age in days" PLG_OSMAP_JOOMLA_SETTING_MAX_ART_AGE_DESC = "The maximun number of days that an article must have to be included in the sitemap. (0 for no limit)" PLG_OSMAP_JOOMLA_SETTING_MAX_ART_CAT = "Max. Articles per Category" PLG_OSMAP_JOOMLA_SETTING_MAX_ART_CAT_DESC = "Maximum number of articles per category to include in the sitemap (0 for no limit)." PLG_OSMAP_JOOMLA_SETTING_MAX_CATEG_LEVEL_LABEL = "Max Subcategory Levels" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_CATTITLE = "Catetegory Title" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_DESC = "Which keywords should we use for Google News Sitemap?" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_LABEL = "Keywords" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_METAKEYS = "Article's Metakeys" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_METAKEYS_CATTITLE = "Article's Metakeys + Category Title" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_NONE = "None" PLG_OSMAP_JOOMLA_SETTING_PREPARE_CONTENT_DESC = "Optionally prepare the content with the Joomla Content Plugins." PLG_OSMAP_JOOMLA_SETTING_PREPARE_CONTENT_LABEL = "Prepare Content" PLG_OSMAP_JOOMLA_SETTING_SHOW_UNAUTH_LINKS = "Show Unauthorized Links" PLG_OSMAP_JOOMLA_SETTING_SHOW_UNAUTH_LINKS_DESC = "If yes, will show links to content to registered content even if you are not logged in. The user will need to login to see the item in full." PK 9�\N�� ZZ-language/en-GB/en-GB.plg_osmap_joomla.sys.ininu&1i�; @package OSMap ; @contact www.joomlashack.com, help@joomlashack.com ; @copyright 2007-2014 XMap - Joomla! Vargas - Guillermo Vargas. All rights reserved. ; @copyright 2016-2023 Joomlashack.com. All rights reserved. ; @license https://www.gnu.org/licenses/gpl.html GNU/GPL ; ; This file is part of OSMap. ; ; OSMap 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. ; ; OSMap 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 OSMap. If not, see <https://www.gnu.org/licenses/>. ; ; Note : All ini files need to be saved as UTF-8 - No BOM PLG_OSMAP_JOOMLA = "OSMap - Joomla Content" PLG_OSMAP_JOOMLA_PLUGIN_DESCRIPTION = "Add support for articles and categories" PK 9�\�Eh��)language/tr-TR/tr-TR.plg_osmap_joomla.ininu&1i�; @package OSMap ; @contact www.joomlashack.com, help@joomlashack.com ; @copyright 2007-2014 XMap - Joomla! Vargas - Guillermo Vargas. All rights reserved. ; @copyright 2016-2023 Joomlashack.com. All rights reserved. ; @license https://www.gnu.org/licenses/gpl.html GNU/GPL ; ; This file is part of OSMap. ; ; OSMap 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. ; ; OSMap 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 OSMap. If not, see <https://www.gnu.org/licenses/>. ; ; Note : All ini files need to be saved as UTF-8 - No BOM PLG_OSMAP_JOOMLA="OSMap - Joomla İçeriği" PLG_OSMAP_JOOMLA_PLUGIN_DESCRIPTION = "Makaleler ve kategoriler için destek eklenir." COM_PLUGINS_BASIC_FIELDSET_LABEL = "Temel Ayarlar" COM_PLUGINS_NEWS_FIELDSET_LABEL = "Haber Site Haritası Ayarları" COM_PLUGINS_XML_FIELDSET_LABEL = "XML Site Haritası Ayarları" JGLOBAL_FIELDSET_NEWS = "Haber" JGLOBAL_FIELDSET_XML = "XML" PLG_OSMAP_JOOMLA_OPTION_ALL = "Tümü" PLG_OSMAP_JOOMLA_OPTION_ALWAYS = "Her Zaman" PLG_OSMAP_JOOMLA_OPTION_ASC = "Artan" PLG_OSMAP_JOOMLA_OPTION_CREATED = "Oluşturma Tarihi" PLG_OSMAP_JOOMLA_OPTION_DAILY = "Günlük" PLG_OSMAP_JOOMLA_OPTION_DESC = "Azalan" PLG_OSMAP_JOOMLA_OPTION_HITS = "Ziyaretler" PLG_OSMAP_JOOMLA_OPTION_HOURLY = "Saatlik" PLG_OSMAP_JOOMLA_OPTION_HTML_ONLY = "Yalnız HTML Site Haritasında" PLG_OSMAP_JOOMLA_OPTION_MODIFIED = "Değişiklik Tarihi" PLG_OSMAP_JOOMLA_OPTION_MONTHLY = "Aylık" PLG_OSMAP_JOOMLA_OPTION_NEVER = "Asla" PLG_OSMAP_JOOMLA_OPTION_ORDERING = "Sıralama" PLG_OSMAP_JOOMLA_OPTION_PUBLISH = "Yayınlama Tarihi" PLG_OSMAP_JOOMLA_OPTION_TITLE = "Başlık" PLG_OSMAP_JOOMLA_OPTION_USE_PARENT_MENU = "Üst Menü Ayarları Kullanılsın" PLG_OSMAP_JOOMLA_OPTION_WEEKLY = "Haftalık" PLG_OSMAP_JOOMLA_OPTION_XML_ONLY = "Yalnız XML Site Haritasında" PLG_OSMAP_JOOMLA_OPTION_YEARLY = "Yıllık" PLG_OSMAP_JOOMLA_SETTING_ADD_IMAGES_DESC = "Evetse, site haritasına eklemek için resim arayan makalenin içeriğini ayrıştırır. Yalnızca XML site haritası için geçerlidir (Arama Motorları Site Haritası)." PLG_OSMAP_JOOMLA_SETTING_ADD_IMAGES_LABEL = "Görüntüler Eklensin mi?" PLG_OSMAP_JOOMLA_SETTING_ADD_PAGEBREAKS_DESC = "Evetse, makalenin alt sayfaları site haritasına eklenir." PLG_OSMAP_JOOMLA_SETTING_ADD_PAGEBREAKS_LABEL = "Sayfa Sonu Eklensin" PLG_OSMAP_JOOMLA_SETTING_ART_CHANCE_FREQ = "Makale Değişiklik Sıklığı" PLG_OSMAP_JOOMLA_SETTING_ART_CHANCE_FREQ_DESC = "Makaleler için değiştirme sıklığını ayarlayın." PLG_OSMAP_JOOMLA_SETTING_ART_PRIORITY = "Makale Önceliği" PLG_OSMAP_JOOMLA_SETTING_ART_PRIORITY_DESC = "Makaleler için önceliği ayarlayın." PLG_OSMAP_JOOMLA_SETTING_ARTICLE_ORDER_DESC = "Makalelerin nasıl sıralanacağını belirtin." PLG_OSMAP_JOOMLA_SETTING_ARTICLE_ORDER_DIR_DESC = "Makalelerin sıralama yönünü belirtin." PLG_OSMAP_JOOMLA_SETTING_ARTICLE_ORDER_DIR_LABEL = "Makale Sıralama Yönü" PLG_OSMAP_JOOMLA_SETTING_ARTICLE_ORDER_LABEL = "Makale Sıralaması" PLG_OSMAP_JOOMLA_SETTING_CAT_CHANCE_FREQ = "Kategori Değişiklik Sıklığı" PLG_OSMAP_JOOMLA_SETTING_CAT_CHANCE_FREQ_DESC = "Kategoriler için değiştirme sıklığını ayarlayın." PLG_OSMAP_JOOMLA_SETTING_CAT_PRIORITY = "Kategori Önceliği" PLG_OSMAP_JOOMLA_SETTING_CAT_PRIORITY_DESC = "Kategoriler için önceliği ayarlayın." PLG_OSMAP_JOOMLA_SETTING_EXPAND_CATEGORIES = "Kategoriler Genişletilsin" PLG_OSMAP_JOOMLA_SETTING_EXPAND_CATEGORIES_DESC = "OSMap'in her kategori bağlantısındaki makaleleri içermesi gerekiyorsa doğru olarak ayarlayın." PLG_OSMAP_JOOMLA_SETTING_EXPAND_FEATURED = "Öne Çıkanlar Genişletilsin" PLG_OSMAP_JOOMLA_SETTING_EXPAND_FEATURED_DESC = "OSMap'in "Öne Çıkan Makaleler" bağlantılarındaki (genellikle ön sayfa menü öğesi) makaleleri içermesi gerekiyorsa doğru olarak ayarlayın." PLG_OSMAP_JOOMLA_SETTING_INCLUDE_ARCHIVED = "Arşivlenen Eklensin" PLG_OSMAP_JOOMLA_SETTING_INCLUDE_ARCHIVED_DESC = "Arşivlenen makalelerin site haritasına ne zaman dahil edileceğini seçin." PLG_OSMAP_JOOMLA_SETTING_MAX_ART_AGE = "Gün Içinde Makalenin Maksimum Ömrü" PLG_OSMAP_JOOMLA_SETTING_MAX_ART_AGE_DESC = "Bir makalenin site haritasına eklenmesi gereken maksiumum gün sayısı. (sınırsız için 0)" PLG_OSMAP_JOOMLA_SETTING_MAX_ART_CAT = "Kategori Başına Maksimum Makale" PLG_OSMAP_JOOMLA_SETTING_MAX_ART_CAT_DESC = "Site haritasına dahil edilecek kategori başına maksimum makale sayısı (sınırsız için 0)." PLG_OSMAP_JOOMLA_SETTING_MAX_CATEG_LEVEL_LABEL = "Maksimum Alt Kategori Seviyesi" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_CATTITLE = "Kategori Başlığı" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_DESC = "Google Haberler Site Haritası için hangi anahtar kelimeler kullanılsın?" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_LABEL = "Anahtar Kelimeler" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_METAKEYS = "Makalenin Meta Anahtarları" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_METAKEYS_CATTITLE = "Makalenin Meta Anahtarları + Kategori Başlığı" PLG_OSMAP_JOOMLA_SETTING_NEWS_KEYWORDS_NONE = "Hiçbiri" PLG_OSMAP_JOOMLA_SETTING_PREPARE_CONTENT_DESC = "İsteğe bağlı olarak Joomla İçerik Eklentileri ile içeriği hazırlayın." PLG_OSMAP_JOOMLA_SETTING_PREPARE_CONTENT_LABEL = "İçerik Hazırlama" PLG_OSMAP_JOOMLA_SETTING_SHOW_UNAUTH_LINKS = "Yetkisiz Bağlantılar Gösterilsin" PLG_OSMAP_JOOMLA_SETTING_SHOW_UNAUTH_LINKS_DESC = "Evet ise, oturum açmamış olsanız bile kayıtlı içeriğe içerik bağlantıları gösterilir. Kullanıcının öğeyi tam olarak görebilmesi için giriş yapması gerekir." PK 9�\��ؐ^^-language/tr-TR/tr-TR.plg_osmap_joomla.sys.ininu&1i�; @package OSMap ; @contact www.joomlashack.com, help@joomlashack.com ; @copyright 2007-2014 XMap - Joomla! Vargas - Guillermo Vargas. All rights reserved. ; @copyright 2016-2023 Joomlashack.com. All rights reserved. ; @license https://www.gnu.org/licenses/gpl.html GNU/GPL ; ; This file is part of OSMap. ; ; OSMap 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. ; ; OSMap 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 OSMap. If not, see <https://www.gnu.org/licenses/>. ; ; Note : All ini files need to be saved as UTF-8 - No BOM PLG_OSMAP_JOOMLA="OSMap - Joomla İçerik" PLG_OSMAP_JOOMLA_PLUGIN_DESCRIPTION="Makaleler ve kategoriler için destek eklenir." PK 9�\ew6fefe joomla.phpnu&1i�<?php /** * @package OSMap * @contact www.joomlashack.com, help@joomlashack.com * @copyright 2007-2014 XMap - Joomla! Vargas - Guillermo Vargas. All rights reserved. * @copyright 2016-2023 Joomlashack.com. All rights reserved. * @license https://www.gnu.org/licenses/gpl.html GNU/GPL * * This file is part of OSMap. * * OSMap 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. * * OSMap 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 OSMap. If not, see <https://www.gnu.org/licenses/>. */ use Alledia\OSMap\Factory; use Alledia\OSMap\Helper\General; use Alledia\OSMap\Plugin\Base; use Alledia\OSMap\Plugin\ContentInterface; use Alledia\OSMap\Sitemap\Collector; use Alledia\OSMap\Sitemap\Item; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Uri\Uri; use Joomla\Registry\Registry; use Joomla\Utilities\ArrayHelper; defined('_JEXEC') or die(); JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php'); JLoader::register('ContentHelperQuery', JPATH_SITE . '/components/com_content/helpers/query.php'); /** * Handles standard Joomla's Content articles/categories * * This plugin is able to expand the categories keeping the right order of the * articles according to the menu settings and the user session data (user state). * * This is a very complex plugin, if you are trying to build your own plugin * for other component, I suggest you to take a look to another plugis as * they are usually most simple. ;) */ class PlgOSMapJoomla extends Base implements ContentInterface { /** * @var self */ protected static $instance = null; /** * @var bool */ protected static $prepareContent = null; /** * Returns the unique instance of the plugin * * @return self */ public static function getInstance() { if (empty(static::$instance)) { $dispatcher = Factory::getDispatcher(); static::$instance = new self($dispatcher); } return static::$instance; } /** * Returns the element of the component which this plugin supports. * * @return string */ public function getComponentElement() { return 'com_content'; } /** * This function is called before a menu item is used. We use it to set the * proper uniqueid for the item * * @param Item $node Menu item to be "prepared" * @param Registry $params The extension params * * @return bool * @throws Exception */ public static function prepareMenuItem($node, $params) { static::checkMemory(); $db = Factory::getDbo(); $container = Factory::getPimpleContainer(); $linkQuery = parse_url($node->link); if (!isset($linkQuery['query'])) { return false; } parse_str(html_entity_decode($linkQuery['query']), $linkVars); $view = ArrayHelper::getValue($linkVars, 'view', ''); $id = ArrayHelper::getValue($linkVars, 'id', 0); switch ($view) { case 'archive': $node->adapterName = 'JoomlaCategory'; $node->uid = 'joomla.archive.' . $node->id; $node->expandible = true; break; case 'featured': $node->adapterName = 'JoomlaCategory'; $node->uid = 'joomla.featured.' . $node->id; $node->expandible = true; break; case 'categories': case 'category': $node->adapterName = 'JoomlaCategory'; $node->uid = 'joomla.category.' . $id; $node->expandible = true; break; case 'article': $node->adapterName = 'JoomlaArticle'; $node->expandible = false; $paramAddPageBreaks = $params->get('add_pagebreaks', 1); $paramAddImages = $params->get('add_images', 1); $query = $db->getQuery(true) ->select([ $db->quoteName('created'), $db->quoteName('modified'), $db->quoteName('publish_up'), $db->quoteName('metadata'), $db->quoteName('attribs') ]) ->from($db->quoteName('#__content')) ->where($db->quoteName('id') . '=' . (int)$id); if ($paramAddPageBreaks || $paramAddImages) { $query->select([ $db->quoteName('introtext'), $db->quoteName('fulltext'), $db->quoteName('images') ]); } $db->setQuery($query); if (($item = $db->loadObject()) != null) { // Set the node UID $node->uid = 'joomla.article.' . $id; // Set dates $node->modified = $item->modified; $node->created = $item->created; $node->publishUp = $item->publish_up; $item->params = $item->attribs; $text = ''; if (isset($item->introtext) && isset($item->fulltext)) { $text = $item->introtext . $item->fulltext; } static::prepareContent($text, $params); if ($paramAddImages) { $maxImages = $params->get('max_images', 1000); $node->images = []; // Images from text $node->images = array_merge( $node->images, $container->imagesHelper->getImagesFromText($text, $maxImages) ); // Images from params if (!empty($item->images)) { $node->images = array_merge( $node->images, $container->imagesHelper->getImagesFromParams($item) ); } } if ($paramAddPageBreaks) { $node->subnodes = General::getPagebreaks($text, $node->link, $node->uid); $node->expandible = (count($node->subnodes) > 0); // This article has children } } else { return false; } break; } return true; } /** * Expands a com_content menu item * * @param Collector $collector * @param Item $parent * @param Registry $params * * @return void * @throws Exception */ public static function getTree($collector, $parent, $params) { $db = Factory::getDbo(); $linkQuery = parse_url($parent->link); if (!isset($linkQuery['query'])) { return; } parse_str(html_entity_decode($linkQuery['query']), $linkVars); $view = ArrayHelper::getValue($linkVars, 'view', ''); $id = intval(ArrayHelper::getValue($linkVars, 'id', '')); /* * Parameters Initialisation */ $paramExpandCategories = $params->get('expand_categories', 1) > 0; $paramExpandFeatured = $params->get('expand_featured', 1); $paramIncludeArchived = $params->get('include_archived', 2); $paramAddPageBreaks = $params->get('add_pagebreaks', 1); $paramCatPriority = $params->get('cat_priority', $parent->priority); $paramCatChangefreq = $params->get('cat_changefreq', $parent->changefreq); if ($paramCatPriority == '-1') { $paramCatPriority = $parent->priority; } if ($paramCatChangefreq == '-1') { $paramCatChangefreq = $parent->changefreq; } $params->set('cat_priority', $paramCatPriority); $params->set('cat_changefreq', $paramCatChangefreq); $paramArtPriority = $params->get('art_priority', $parent->priority); $paramArtChangefreq = $params->get('art_changefreq', $parent->changefreq); if ($paramArtPriority == '-1') { $paramArtPriority = $parent->priority; } if ($paramArtChangefreq == '-1') { $paramArtChangefreq = $parent->changefreq; } $params->set('art_priority', $paramArtPriority); $params->set('art_changefreq', $paramArtChangefreq); // If enabled, loads the page break language if ($paramAddPageBreaks && !defined('OSMAP_PLUGIN_JOOMLA_LOADED')) { // Load it just once define('OSMAP_PLUGIN_JOOMLA_LOADED', 1); Factory::getLanguage()->load('plg_content_pagebreak'); } switch ($view) { case 'category': if (empty($id)) { $id = intval($params->get('id', 0)); } if ($paramExpandCategories && $id) { static::expandCategory($collector, $parent, $id, $params, $parent->id); } break; case 'featured': if ($paramExpandFeatured) { static::includeCategoryContent($collector, $parent, 'featured', $params); } break; case 'categories': if ($paramExpandCategories) { if (empty($id)) { $id = 1; } static::expandCategory($collector, $parent, $id, $params, $parent->id); } break; case 'archive': if ($paramIncludeArchived) { static::includeCategoryContent($collector, $parent, 'archived', $params); } break; case 'article': // if it's an article menu item, we have to check if we have to expand the // article's page breaks if ($paramAddPageBreaks) { $query = $db->getQuery(true) ->select([ $db->quoteName('introtext'), $db->quoteName('fulltext'), $db->quoteName('alias'), $db->quoteName('catid'), $db->quoteName('attribs') . ' AS params', $db->quoteName('metadata'), $db->quoteName('created'), $db->quoteName('modified'), $db->quoteName('publish_up') ]) ->from($db->quoteName('#__content')) ->where($db->quoteName('id') . '=' . $id); $db->setQuery($query); $item = $db->loadObject(); $item->uid = 'joomla.article.' . $id; $parent->slug = $item->alias ? ($id . ':' . $item->alias) : $id; $parent->link = ContentHelperRoute::getArticleRoute($parent->slug, $item->catid); $parent->subnodes = General::getPagebreaks( $item->introtext . $item->fulltext, $parent->link, $item->uid ); static::printSubNodes($collector, $parent, $params, $parent->subnodes, $item); } } } /** * Get all content items within a content category. * Returns an array of all contained content items. * * @param Collector $collector * @param Item $parent the menu item * @param int $catid the id of the category to be expanded * @param Registry $params parameters for this plugin on Xmap * @param int $itemid the itemid to use for this category's children * @param int $curlevel * * @return void * @throws Exception */ protected static function expandCategory( $collector, $parent, $catid, $params, $itemid, $curlevel = 0 ) { static::checkMemory(); $db = Factory::getDbo(); $where = [ 'a.parent_id = ' . $catid, 'a.published = 1', 'a.extension=' . $db->quote('com_content') ]; if (!$params->get('show_unauth', 0)) { $where[] = 'a.access IN (' . General::getAuthorisedViewLevels() . ') '; } $query = $db->getQuery(true) ->select([ 'a.id', 'a.title', 'a.alias', 'a.access', 'a.path AS route', 'a.created_time AS created', 'a.modified_time AS modified', 'a.params', 'a.metadata', 'a.metakey' ]) ->from('#__categories AS a') ->where($where) ->order('a.lft'); $items = $db->setQuery($query)->loadObjectList(); $curlevel++; $maxLevel = $parent->params->get('max_category_level', 100); if ($curlevel <= $maxLevel) { if (count($items) > 0) { $collector->changeLevel(1); foreach ($items as $item) { $node = (object)[ 'id' => $item->id, 'uid' => 'joomla.category.' . $item->id, 'browserNav' => $parent->browserNav, 'priority' => $params->get('cat_priority'), 'changefreq' => $params->get('cat_changefreq'), 'name' => $item->title, 'expandible' => true, 'secure' => $parent->secure, 'newsItem' => 1, 'adapterName' => 'JoomlaCategory', 'pluginParams' => &$params, 'parentIsVisibleForRobots' => $parent->visibleForRobots, 'created' => $item->created, 'modified' => $item->modified, 'publishUp' => $item->created ]; // Keywords $paramKeywords = $params->get('keywords', 'metakey'); $keywords = null; if ($paramKeywords !== 'none') { $keywords = $item->metakey; } $node->keywords = $keywords; $node->slug = $item->route ? ($item->id . ':' . $item->route) : $item->id; $node->link = ContentHelperRoute::getCategoryRoute($node->slug); $node->itemid = $itemid; // Correct for an issue in Joomla core with occasional empty variables $linkUri = new Uri($node->link); $linkUri->setQuery(array_filter((array)$linkUri->getQuery(true))); $node->link = $linkUri->toString(); if ($collector->printNode($node)) { static::expandCategory($collector, $parent, $item->id, $params, $node->itemid, $curlevel); } } $collector->changeLevel(-1); } } // Include Category's content static::includeCategoryContent($collector, $parent, $catid, $params); } /** * Get all content items within a content category. * Returns an array of all contained content items. * * @param Collector $collector * @param Item $parent * @param int|string $catid * @param Registry $params * * @return void * @throws Exception * */ protected static function includeCategoryContent($collector, $parent, $catid, $params) { static::checkMemory(); $db = Factory::getDbo(); $container = Factory::getPimpleContainer(); $nullDate = $db->quote($db->getNullDate()); $nowDate = $db->quote(Factory::getDate()->toSql()); $selectFields = [ 'a.id', 'a.title', 'a.alias', 'a.catid', 'a.created', 'a.modified', 'a.publish_up', 'a.attribs AS params', 'a.metadata', 'a.language', 'a.metakey', 'a.images', 'c.title AS categMetakey' ]; if ($params->get('add_images', 1) || $params->get('add_pagebreaks', 1)) { $selectFields[] = 'a.introtext'; $selectFields[] = 'a.fulltext'; } if ($params->get('include_archived', 2)) { $where = ['(a.state = 1 or a.state = 2)']; } else { $where = ['a.state = 1']; } if ($catid == 'featured') { $where[] = 'a.featured=1'; } elseif ($catid == 'archived') { $where = ['a.state=2']; } elseif (is_numeric($catid)) { $where[] = 'a.catid=' . (int)$catid; } if (!$params->get('show_unauth', 0)) { $where[] = 'a.access IN (' . General::getAuthorisedViewLevels() . ') '; } $where[] = sprintf( '(ISNULL(a.publish_up) OR a.publish_up = %s OR a.publish_up <= %s)', $nullDate, $nowDate ); $where[] = sprintf( '(ISNULL(a.publish_down) OR a.publish_down = %s OR a.publish_down >= %s)', $nullDate, $nowDate ); //@todo: Do we need join for frontpage? $query = $db->getQuery(true) ->select($selectFields) ->from('#__content AS a') ->join('LEFT', '#__content_frontpage AS fp ON (a.id = fp.content_id)') ->join('LEFT', '#__categories AS c ON (a.catid = c.id)') ->where($where); // Ordering $orderOptions = [ 'a.created', 'a.modified', 'a.publish_up', 'a.hits', 'a.title', 'a.ordering' ]; $orderDirOptions = [ 'ASC', 'DESC' ]; $order = ArrayHelper::getValue($orderOptions, $params->get('article_order', 0), 0); $orderDir = ArrayHelper::getValue($orderDirOptions, $params->get('article_orderdir', 0), 0); $orderBy = ' ' . $order . ' ' . $orderDir; $query->order($orderBy); $maxArt = (int)$params->get('max_art'); $db->setQuery($query, 0, $maxArt); $items = $db->loadObjectList(); if (count($items) > 0) { $collector->changeLevel(1); $paramExpandCategories = $params->get('expand_categories', 1); $paramExpandFeatured = $params->get('expand_featured', 1); $paramIncludeArchived = $params->get('include_archived', 2); foreach ($items as $item) { $node = (object)[ 'id' => $item->id, 'uid' => 'joomla.article.' . $item->id, 'browserNav' => $parent->browserNav, 'priority' => $params->get('art_priority'), 'changefreq' => $params->get('art_changefreq'), 'name' => $item->title, 'created' => $item->created, 'modified' => $item->modified, 'publishUp' => $item->publish_up, 'expandible' => false, 'secure' => $parent->secure, 'newsItem' => 1, 'language' => $item->language, 'adapterName' => 'JoomlaArticle', 'parentIsVisibleForRobots' => $parent->visibleForRobots ]; $keywords = []; $paramKeywords = $params->get('keywords', 'metakey'); if ($paramKeywords !== 'none') { if (in_array($paramKeywords, ['metakey', 'both'])) { $keywords[] = $item->metakey; } if (in_array($paramKeywords, ['category', 'both'])) { $keywords[] = $item->categMetakey; } } $node->keywords = join(',', $keywords); $node->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; $node->catslug = $item->catid; $node->link = ContentHelperRoute::getArticleRoute($node->slug, $node->catslug); // Set the visibility for XML or HTML sitempas if ($catid == 'featured') { // Check if the item is visible in the XML or HTML sitemaps $node->visibleForXML = in_array($paramExpandFeatured, [1, 2]); $node->visibleForHTML = in_array($paramExpandFeatured, [1, 3]); } elseif ($catid == 'archived') { // Check if the item is visible in the XML or HTML sitemaps $node->visibleForXML = in_array($paramIncludeArchived, [1, 2]); $node->visibleForHTML = in_array($paramIncludeArchived, [1, 3]); } elseif (is_numeric($catid)) { // Check if the item is visible in the XML or HTML sitemaps $node->visibleForXML = in_array($paramExpandCategories, [1, 2]); $node->visibleForHTML = in_array($paramExpandCategories, [1, 3]); } // Add images to the article $text = ''; if (isset($item->introtext) && isset($item->fulltext)) { $text = $item->introtext . $item->fulltext; } if ($params->get('add_images', 1)) { $maxImages = $params->get('max_images', 1000); $node->images = []; // Images from text $node->images = array_merge( $node->images, $container->imagesHelper->getImagesFromText($text, $maxImages) ); // Images from params if (!empty($item->images)) { $node->images = array_merge( $node->images, $container->imagesHelper->getImagesFromParams($item) ); } } if ($params->get('add_pagebreaks', 1)) { $node->subnodes = General::getPagebreaks($text, $node->link, $node->uid); // This article has children $node->expandible = (count($node->subnodes) > 0); } if ($collector->printNode($node) && $node->expandible) { static::printSubNodes($collector, $parent, $params, $node->subnodes, $node); } } $collector->changeLevel(-1); } } /** * @param Collector $collector * @param Item $parent * @param Registry $params * @param array $subnodes * @param object $item * * @return void * @throws Exception */ protected static function printSubNodes($collector, $parent, $params, $subnodes, $item) { static::checkMemory(); $collector->changeLevel(1); $i = 0; foreach ($subnodes as $subnode) { $i++; $subnode->browserNav = $parent->browserNav; $subnode->priority = $params->get('art_priority'); $subnode->changefreq = $params->get('art_changefreq'); $subnode->secure = $parent->secure; $subnode->created = $item->created; $subnode->modified = $item->modified; $subnode->publishUp = $item->publish_up ?? $item->created; $collector->printNode($subnode); $subnode = null; unset($subnode); } $collector->changeLevel(-1); } /** * @param string $text * @param Registry $params */ protected static function prepareContent(&$text, Registry $params) { if (static::$prepareContent === null) { $isPro = Factory::getExtension('osmap', 'component')->isPro(); $isHtml = Factory::getDocument()->getType() == 'html'; $prepare = $params->get('prepare_content', true); static::$prepareContent = $isPro && $prepare && $isHtml; } if (static::$prepareContent) { $text = HTMLHelper::_('content.prepare', $text, null, 'com_content.article'); } } } PK 9�\{�'^�� joomla.xmlnu�[���<?xml version="1.0" encoding="UTF-8"?> <extension type="plugin" group="content" method="upgrade"> <name>plg_content_joomla</name> <author>Joomla! Project</author> <creationDate>2010-11</creationDate> <copyright>(C) 2010 Open Source Matters, Inc.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <version>3.0.0</version> <description>PLG_CONTENT_JOOMLA_XML_DESCRIPTION</description> <namespace path="src">Joomla\Plugin\Content\Joomla</namespace> <files> <folder plugin="joomla">services</folder> <folder>src</folder> </files> <languages> <language tag="en-GB">language/en-GB/plg_content_joomla.ini</language> <language tag="en-GB">language/en-GB/plg_content_joomla.sys.ini</language> </languages> <config> <fields name="params"> <fieldset name="basic"> <field name="check_categories" type="radio" layout="joomla.form.field.radio.switcher" label="PLG_CONTENT_JOOMLA_FIELD_CHECK_CATEGORIES_LABEL" description="PLG_CONTENT_JOOMLA_FIELD_CHECK_CATEGORIES_DESC" default="1" filter="integer" > <option value="0">JNO</option> <option value="1">JYES</option> </field> <field name="email_new_fe" type="radio" label="PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_FE_LABEL" description="PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_FE_DESC" layout="joomla.form.field.radio.switcher" default="1" filter="integer" > <option value="0">JNO</option> <option value="1">JYES</option> </field> </fieldset> </fields> </config> </extension> PKօ�\�V� index.htmlnu&1i�<!DOCTYPE html><title></title> PKօ�\.�^�J�Jsrc/Extension/Joomla.phpnu�[���<?php /** * @package Joomla.Plugin * @subpackage Content.joomla * * @copyright (C) 2010 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Plugin\Content\Joomla\Extension; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Language\Language; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Table\CoreContent; use Joomla\CMS\User\UserFactoryAwareTrait; use Joomla\CMS\Workflow\WorkflowServiceInterface; use Joomla\Component\Workflow\Administrator\Table\StageTable; use Joomla\Component\Workflow\Administrator\Table\WorkflowTable; use Joomla\Database\DatabaseAwareTrait; use Joomla\Database\ParameterType; use Joomla\Utilities\ArrayHelper; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Example Content Plugin * * @since 1.6 */ final class Joomla extends CMSPlugin { use DatabaseAwareTrait; use UserFactoryAwareTrait; /** * The save event. * * @param string $context The context * @param object $table The item * @param boolean $isNew Is new item * @param array $data The validated data * * @return boolean * * @since 4.0.0 */ public function onContentBeforeSave($context, $table, $isNew, $data) { if ($context === 'com_menus.item') { return $this->checkMenuItemBeforeSave($context, $table, $isNew, $data); } // Check we are handling the frontend edit form. if (!in_array($context, ['com_workflow.stage', 'com_workflow.workflow']) || $isNew || !$table->hasField('published')) { return true; } $item = clone $table; $item->load($table->id); $publishedField = $item->getColumnAlias('published'); if ($item->$publishedField > 0 && isset($data[$publishedField]) && $data[$publishedField] < 1) { switch ($context) { case 'com_workflow.workflow': return $this->workflowNotUsed($item->id); case 'com_workflow.stage': return $this->stageNotUsed($item->id); } } return true; } /** * Example after save content method * Article is passed by reference, but after the save, so no changes will be saved. * Method is called right after the content is saved * * @param string $context The context of the content passed to the plugin (added in 1.6) * @param object $article A JTableContent object * @param boolean $isNew If the content is just about to be created * * @return void * * @since 1.6 */ public function onContentAfterSave($context, $article, $isNew): void { // Check we are handling the frontend edit form. if ($context !== 'com_content.form') { return; } // Check if this function is enabled. if (!$this->params->def('email_new_fe', 1)) { return; } // Check this is a new article. if (!$isNew) { return; } $db = $this->getDatabase(); $query = $db->getQuery(true) ->select($db->quoteName('id')) ->from($db->quoteName('#__users')) ->where($db->quoteName('sendEmail') . ' = 1') ->where($db->quoteName('block') . ' = 0'); $db->setQuery($query); $users = (array) $db->loadColumn(); if (empty($users)) { return; } $user = $this->getApplication()->getIdentity(); // Messaging for new items $default_language = ComponentHelper::getParams('com_languages')->get('administrator'); $debug = $this->getApplication()->get('debug_lang'); foreach ($users as $user_id) { if ($user_id != $user->id) { // Load language for messaging $receiver = $this->getUserFactory()->loadUserById($user_id); $lang = Language::getInstance($receiver->getParam('admin_language', $default_language), $debug); $lang->load('com_content'); $message = [ 'user_id_to' => $user_id, 'subject' => $lang->_('COM_CONTENT_NEW_ARTICLE'), 'message' => sprintf($lang->_('COM_CONTENT_ON_NEW_CONTENT'), $user->get('name'), $article->title), ]; $model_message = $this->getApplication()->bootComponent('com_messages')->getMVCFactory() ->createModel('Message', 'Administrator'); $model_message->save($message); } } } /** * Don't allow categories to be deleted if they contain items or subcategories with items * * @param string $context The context for the content passed to the plugin. * @param object $data The data relating to the content that was deleted. * * @return boolean * * @since 1.6 */ public function onContentBeforeDelete($context, $data) { // Skip plugin if we are deleting something other than categories if (!in_array($context, ['com_categories.category', 'com_workflow.stage', 'com_workflow.workflow'])) { return true; } switch ($context) { case 'com_categories.category': return $this->canDeleteCategories($data); case 'com_workflow.workflow': return $this->workflowNotUsed($data->id); case 'com_workflow.stage': return $this->stageNotUsed($data->id); } } /** * Don't allow workflows/stages to be deleted if they contain items * * @param string $context The context for the content passed to the plugin. * @param object $pks The IDs of the records which will be changed. * @param object $value The new state. * * @return boolean * * @since 4.0.0 */ public function onContentBeforeChangeState($context, $pks, $value) { if ($value > 0 || !in_array($context, ['com_workflow.workflow', 'com_workflow.stage'])) { return true; } $result = true; foreach ($pks as $id) { switch ($context) { case 'com_workflow.workflow': $result = $result && $this->workflowNotUsed($id); break; case 'com_workflow.stage': $result = $result && $this->stageNotUsed($id); break; } } return $result; } /** * Checks if a given category can be deleted * * @param object $data The category object * * @return boolean */ private function canDeleteCategories($data) { // Check if this function is enabled. if (!$this->params->def('check_categories', 1)) { return true; } $extension = $this->getApplication()->getInput()->getString('extension'); // Default to true if not a core extension $result = true; $tableInfo = [ 'com_banners' => ['table_name' => '#__banners'], 'com_contact' => ['table_name' => '#__contact_details'], 'com_content' => ['table_name' => '#__content'], 'com_newsfeeds' => ['table_name' => '#__newsfeeds'], 'com_users' => ['table_name' => '#__user_notes'], 'com_weblinks' => ['table_name' => '#__weblinks'], ]; // Now check to see if this is a known core extension if (isset($tableInfo[$extension])) { // Get table name for known core extensions $table = $tableInfo[$extension]['table_name']; // See if this category has any content items $count = $this->countItemsInCategory($table, $data->get('id')); // Return false if db error if ($count === false) { $result = false; } else { // Show error if items are found in the category if ($count > 0) { $msg = Text::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->get('title')) . ' ' . Text::plural('COM_CATEGORIES_N_ITEMS_ASSIGNED', $count); $this->getApplication()->enqueueMessage($msg, 'error'); $result = false; } // Check for items in any child categories (if it is a leaf, there are no child categories) if (!$data->isLeaf()) { $count = $this->countItemsInChildren($table, $data->get('id'), $data); if ($count === false) { $result = false; } elseif ($count > 0) { $msg = Text::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->get('title')) . ' ' . Text::plural('COM_CATEGORIES_HAS_SUBCATEGORY_ITEMS', $count); $this->getApplication()->enqueueMessage($msg, 'error'); $result = false; } } } } return $result; } /** * Checks if a given workflow can be deleted * * @param int $pk The stage ID * * @return boolean * * @since 4.0.0 */ private function workflowNotUsed($pk) { // Check if this workflow is the default stage $table = new WorkflowTable($this->getDatabase()); $table->load($pk); if (empty($table->id)) { return true; } if ($table->default) { throw new \Exception($this->getApplication()->getLanguage()->_('COM_WORKFLOW_MSG_DELETE_IS_DEFAULT')); } $parts = explode('.', $table->extension); $component = $this->getApplication()->bootComponent($parts[0]); $section = ''; if (!empty($parts[1])) { $section = $parts[1]; } // No core interface => we're ok if (!$component instanceof WorkflowServiceInterface) { return true; } /** @var \Joomla\Component\Workflow\Administrator\Model\StagesModel $model */ $model = $this->getApplication()->bootComponent('com_workflow')->getMVCFactory() ->createModel('Stages', 'Administrator', ['ignore_request' => true]); $model->setState('filter.workflow_id', $pk); $model->setState('filter.extension', $table->extension); $stages = $model->getItems(); $stage_ids = array_column($stages, 'id'); $result = $this->countItemsInStage($stage_ids, $table->extension); // Return false if db error if ($result > 0) { throw new \Exception($this->getApplication()->getLanguage()->_('COM_WORKFLOW_MSG_DELETE_WORKFLOW_IS_ASSIGNED')); } return true; } /** * Checks if a given stage can be deleted * * @param int $pk The stage ID * * @return boolean * * @since 4.0.0 */ private function stageNotUsed($pk) { $table = new StageTable($this->getDatabase()); $table->load($pk); if (empty($table->id)) { return true; } // Check if this stage is the default stage if ($table->default) { throw new \Exception($this->getApplication()->getLanguage()->_('COM_WORKFLOW_MSG_DELETE_IS_DEFAULT')); } $workflow = new WorkflowTable($this->getDatabase()); $workflow->load($table->workflow_id); if (empty($workflow->id)) { return true; } $parts = explode('.', $workflow->extension); $component = $this->getApplication()->bootComponent($parts[0]); // No core interface => we're ok if (!$component instanceof WorkflowServiceInterface) { return true; } $stage_ids = [$table->id]; $result = $this->countItemsInStage($stage_ids, $workflow->extension); // Return false if db error if ($result > 0) { throw new \Exception($this->getApplication()->getLanguage()->_('COM_WORKFLOW_MSG_DELETE_STAGE_IS_ASSIGNED')); } return true; } /** * Get count of items in a category * * @param string $table table name of component table (column is catid) * @param integer $catid id of the category to check * * @return mixed count of items found or false if db error * * @since 1.6 */ private function countItemsInCategory($table, $catid) { $db = $this->getDatabase(); $query = $db->getQuery(true); // Count the items in this category $query->select('COUNT(' . $db->quoteName('id') . ')') ->from($db->quoteName($table)) ->where($db->quoteName('catid') . ' = :catid') ->bind(':catid', $catid, ParameterType::INTEGER); $db->setQuery($query); try { $count = $db->loadResult(); } catch (\RuntimeException $e) { $this->getApplication()->enqueueMessage($e->getMessage(), 'error'); return false; } return $count; } /** * Get count of items in assigned to a stage * * @param array $stageIds The stage ids to test for * @param string $extension The extension of the workflow * * @return bool * * @since 4.0.0 */ private function countItemsInStage(array $stageIds, string $extension): bool { $db = $this->getDatabase(); $parts = explode('.', $extension); $stageIds = ArrayHelper::toInteger($stageIds); $stageIds = array_filter($stageIds); $section = ''; if (!empty($parts[1])) { $section = $parts[1]; } $component = $this->getApplication()->bootComponent($parts[0]); $table = $component->getWorkflowTableBySection($section); if (empty($stageIds) || !$table) { return false; } $query = $db->getQuery(true); $query->select('COUNT(' . $db->quoteName('b.id') . ')') ->from($db->quoteName('#__workflow_associations', 'wa')) ->from($db->quoteName('#__workflow_stages', 's')) ->from($db->quoteName($table, 'b')) ->where($db->quoteName('wa.stage_id') . ' = ' . $db->quoteName('s.id')) ->where($db->quoteName('wa.item_id') . ' = ' . $db->quoteName('b.id')) ->whereIn($db->quoteName('s.id'), $stageIds); try { return (int) $db->setQuery($query)->loadResult(); } catch (\Exception $e) { $this->getApplication()->enqueueMessage($e->getMessage(), 'error'); } return false; } /** * Get count of items in a category's child categories * * @param string $table table name of component table (column is catid) * @param integer $catid id of the category to check * @param object $data The data relating to the content that was deleted. * * @return mixed count of items found or false if db error * * @since 1.6 */ private function countItemsInChildren($table, $catid, $data) { $db = $this->getDatabase(); // Create subquery for list of child categories $childCategoryTree = $data->getTree(); // First element in tree is the current category, so we can skip that one unset($childCategoryTree[0]); $childCategoryIds = []; foreach ($childCategoryTree as $node) { $childCategoryIds[] = (int) $node->id; } // Make sure we only do the query if we have some categories to look in if (count($childCategoryIds)) { // Count the items in this category $query = $db->getQuery(true) ->select('COUNT(' . $db->quoteName('id') . ')') ->from($db->quoteName($table)) ->whereIn($db->quoteName('catid'), $childCategoryIds); $db->setQuery($query); try { $count = $db->loadResult(); } catch (\RuntimeException $e) { $this->getApplication()->enqueueMessage($e->getMessage(), 'error'); return false; } return $count; } else { // If we didn't have any categories to check, return 0 return 0; } } /** * Change the state in core_content if the stage in a table is changed * * @param string $context The context for the content passed to the plugin. * @param array $pks A list of primary key ids of the content that has changed stage. * @param integer $value The value of the condition that the content has been changed to * * @return boolean * * @since 3.1 */ public function onContentChangeState($context, $pks, $value) { $pks = ArrayHelper::toInteger($pks); if ($context === 'com_workflow.stage' && $value < 1) { foreach ($pks as $pk) { if (!$this->stageNotUsed($pk)) { return false; } } return true; } $db = $this->getDatabase(); $query = $db->getQuery(true) ->select($db->quoteName('core_content_id')) ->from($db->quoteName('#__ucm_content')) ->where($db->quoteName('core_type_alias') . ' = :context') ->whereIn($db->quoteName('core_content_item_id'), $pks) ->bind(':context', $context); $db->setQuery($query); $ccIds = $db->loadColumn(); $cctable = new CoreContent($db); $cctable->publish($ccIds, $value); return true; } /** * The save event. * * @param string $context The context * @param object $table The item * @param boolean $isNew Is new item * @param array $data The validated data * * @return boolean * * @since 3.9.12 */ private function checkMenuItemBeforeSave($context, $table, $isNew, $data) { // Special case for Create article menu item if ($table->link !== 'index.php?option=com_content&view=form&layout=edit') { return true; } // Display error if catid is not set when enable_category is enabled $params = json_decode($table->params, true); if (isset($params['enable_category']) && $params['enable_category'] === 1 && empty($params['catid'])) { $table->setError($this->getApplication()->getLanguage()->_('COM_CONTENT_CREATE_ARTICLE_ERROR')); return false; } return true; } } PKօ�\�Hx/!!services/provider.phpnu�[���<?php /** * @package Joomla.Plugin * @subpackage Content.joomla * * @copyright (C) 2023 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Extension\PluginInterface; use Joomla\CMS\Factory; use Joomla\CMS\Plugin\PluginHelper; use Joomla\CMS\User\UserFactoryInterface; use Joomla\Database\DatabaseInterface; use Joomla\DI\Container; use Joomla\DI\ServiceProviderInterface; use Joomla\Event\DispatcherInterface; use Joomla\Plugin\Content\Joomla\Extension\Joomla; return new class () implements ServiceProviderInterface { /** * Registers the service provider with a DI container. * * @param Container $container The DI container. * * @return void * * @since 4.4.0 */ public function register(Container $container): void { $container->set( PluginInterface::class, function (Container $container) { $dispatcher = $container->get(DispatcherInterface::class); $plugin = new Joomla( $dispatcher, (array) PluginHelper::getPlugin('content', 'joomla') ); $plugin->setApplication(Factory::getApplication()); $plugin->setDatabase($container->get(DatabaseInterface::class)); $plugin->setUserFactory($container->get(UserFactoryInterface::class)); return $plugin; } ); } }; PK 9�\^���field/TraitShack.phpnu&1i�PK 9�\�z���8field/radio.phpnu&1i�PK 9�\���u��)^language/en-GB/en-GB.plg_osmap_joomla.ininu&1i�PK 9�\N�� ZZ-y"language/en-GB/en-GB.plg_osmap_joomla.sys.ininu&1i�PK 9�\�Eh��)0'language/tr-TR/tr-TR.plg_osmap_joomla.ininu&1i�PK 9�\��ؐ^^-!?language/tr-TR/tr-TR.plg_osmap_joomla.sys.ininu&1i�PK 9�\ew6fefe �Cjoomla.phpnu&1i�PK 9�\{�'^�� |�joomla.xmlnu�[���PKօ�\�V� B�index.htmlnu&1i�PKօ�\.�^�J�J��src/Extension/Joomla.phpnu�[���PKօ�\�Hx/!!��services/provider.phpnu�[���PK��
/home/opticamezl/www/newok/tmp/../cli/../api/../language/../plugins/../cache/../joomla.zip