You've already forked joomla_test
first commit
This commit is contained in:
1
plugins/content/joomla/index.html
Normal file
1
plugins/content/joomla/index.html
Normal file
@ -0,0 +1 @@
|
||||
<!DOCTYPE html><title></title>
|
293
plugins/content/joomla/joomla.php
Normal file
293
plugins/content/joomla/joomla.php
Normal file
@ -0,0 +1,293 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Plugin
|
||||
* @subpackage Content.joomla
|
||||
*
|
||||
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die;
|
||||
|
||||
/**
|
||||
* Example Content Plugin
|
||||
*
|
||||
* @package Joomla.Plugin
|
||||
* @subpackage Content.joomla
|
||||
* @since 1.6
|
||||
*/
|
||||
class PlgContentJoomla extends JPlugin
|
||||
{
|
||||
/**
|
||||
* 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 boolean true if function not enabled, is in front-end or is new. Else true or
|
||||
* false depending on success of save function.
|
||||
*
|
||||
* @since 1.6
|
||||
*/
|
||||
public function onContentAfterSave($context, $article, $isNew)
|
||||
{
|
||||
// Check we are handling the frontend edit form.
|
||||
if ($context != 'com_content.form')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if this function is enabled.
|
||||
if (!$this->params->def('email_new_fe', 1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check this is a new article.
|
||||
if (!$isNew)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
$user = JFactory::getUser();
|
||||
|
||||
// Messaging for new items
|
||||
JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_messages/models', 'MessagesModel');
|
||||
JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_messages/tables');
|
||||
|
||||
$db = JFactory::getDbo();
|
||||
$db->setQuery('SELECT id FROM #__users WHERE sendEmail = 1');
|
||||
$users = (array) $db->loadColumn();
|
||||
|
||||
$default_language = JComponentHelper::getParams('com_languages')->get('administrator');
|
||||
$debug = JFactory::getConfig()->get('debug_lang');
|
||||
|
||||
foreach ($users as $user_id)
|
||||
{
|
||||
if ($user_id != $user->id)
|
||||
{
|
||||
// Load language for messaging
|
||||
$receiver = JUser::getInstance($user_id);
|
||||
$lang = JLanguage::getInstance($receiver->getParam('admin_language', $default_language), $debug);
|
||||
$lang->load('com_content');
|
||||
$message = array(
|
||||
'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 = JModelLegacy::getInstance('Message', 'MessagesModel');
|
||||
$result = $model_message->save($message);
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 ($context != 'com_categories.category')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if this function is enabled.
|
||||
if (!$this->params->def('check_categories', 1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
$extension = JFactory::getApplication()->input->getString('extension');
|
||||
|
||||
// Default to true if not a core extension
|
||||
$result = true;
|
||||
|
||||
$tableInfo = array(
|
||||
'com_banners' => array('table_name' => '#__banners'),
|
||||
'com_contact' => array('table_name' => '#__contact_details'),
|
||||
'com_content' => array('table_name' => '#__content'),
|
||||
'com_newsfeeds' => array('table_name' => '#__newsfeeds'),
|
||||
'com_weblinks' => array('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 = JText::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->get('title')) .
|
||||
JText::plural('COM_CATEGORIES_N_ITEMS_ASSIGNED', $count);
|
||||
JError::raiseWarning(403, $msg);
|
||||
$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 = JText::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->get('title')) .
|
||||
JText::plural('COM_CATEGORIES_HAS_SUBCATEGORY_ITEMS', $count);
|
||||
JError::raiseWarning(403, $msg);
|
||||
$result = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 = JFactory::getDbo();
|
||||
$query = $db->getQuery(true);
|
||||
|
||||
// Count the items in this category
|
||||
$query->select('COUNT(id)')
|
||||
->from($table)
|
||||
->where('catid = ' . $catid);
|
||||
$db->setQuery($query);
|
||||
|
||||
try
|
||||
{
|
||||
$count = $db->loadResult();
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
JError::raiseWarning(500, $e->getMessage());
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return $count;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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 = JFactory::getDbo();
|
||||
|
||||
// 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 = array();
|
||||
|
||||
foreach ($childCategoryTree as $node)
|
||||
{
|
||||
$childCategoryIds[] = $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(id)')
|
||||
->from($table)
|
||||
->where('catid IN (' . implode(',', $childCategoryIds) . ')');
|
||||
$db->setQuery($query);
|
||||
|
||||
try
|
||||
{
|
||||
$count = $db->loadResult();
|
||||
}
|
||||
catch (RuntimeException $e)
|
||||
{
|
||||
JError::raiseWarning(500, $e->getMessage());
|
||||
|
||||
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 state 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 state.
|
||||
* @param integer $value The value of the state that the content has been changed to.
|
||||
*
|
||||
* @return boolean
|
||||
*
|
||||
* @since 3.1
|
||||
*/
|
||||
public function onContentChangeState($context, $pks, $value)
|
||||
{
|
||||
$db = JFactory::getDbo();
|
||||
$query = $db->getQuery(true)
|
||||
->select($db->quoteName('core_content_id'))
|
||||
->from($db->quoteName('#__ucm_content'))
|
||||
->where($db->quoteName('core_type_alias') . ' = ' . $db->quote($context))
|
||||
->where($db->quoteName('core_content_item_id') . ' IN (' . $pksImploded = implode(',', $pks) . ')');
|
||||
$db->setQuery($query);
|
||||
$ccIds = $db->loadColumn();
|
||||
|
||||
$cctable = new JTableCorecontent($db);
|
||||
$cctable->publish($ccIds, $value);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
47
plugins/content/joomla/joomla.xml
Normal file
47
plugins/content/joomla/joomla.xml
Normal file
@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<extension version="3.1" type="plugin" group="content">
|
||||
<name>plg_content_joomla</name>
|
||||
<author>Joomla! Project</author>
|
||||
<creationDate>November 2010</creationDate>
|
||||
<copyright>Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.</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>
|
||||
|
||||
<files>
|
||||
<filename plugin="joomla">joomla.php</filename>
|
||||
<filename>index.html</filename>
|
||||
</files>
|
||||
<languages>
|
||||
<language tag="en-GB">en-GB.plg_content_joomla.ini</language>
|
||||
<language tag="en-GB">en-GB.plg_content_joomla.sys.ini</language>
|
||||
</languages>
|
||||
<config>
|
||||
<fields name="params">
|
||||
<fieldset name="basic">
|
||||
<field name="check_categories"
|
||||
type="radio"
|
||||
class="btn-group"
|
||||
default="1"
|
||||
description="PLG_CONTENT_JOOMLA_FIELD_CHECK_CATEGORIES_DESC"
|
||||
label="PLG_CONTENT_JOOMLA_FIELD_CHECK_CATEGORIES_LABEL">
|
||||
<option value="0">JNO</option>
|
||||
<option value="1">JYES</option>
|
||||
</field>
|
||||
|
||||
<field name="email_new_fe"
|
||||
type="radio"
|
||||
class="btn-group"
|
||||
default="1"
|
||||
description="PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_FE_DESC"
|
||||
label="PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_FE_LABEL">
|
||||
<option value="0">JNO</option>
|
||||
<option value="1">JYES</option>
|
||||
</field>
|
||||
</fieldset>
|
||||
</fields>
|
||||
</config>
|
||||
|
||||
</extension>
|
Reference in New Issue
Block a user