Sindbad~EG File Manager

Current Path : /var/www/ispania.gr/plugins/actionlog/rsdirectory/
Upload File :
Current File : /var/www/ispania.gr/plugins/actionlog/rsdirectory/rsdirectory.php

<?php
/**
 * @package RSDirectory!
 * @copyright (C) 2013-2019 www.rsjoomla.com
 * @license GPL, http://www.gnu.org/licenses/gpl-3.0.html
 */

defined('_JEXEC') or die;

use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Factory;
use Joomla\Utilities\ArrayHelper;

if (version_compare(JVERSION, '5.0', '>=') && !class_exists('ActionLogPlugin'))
{
	JLoader::registerAlias('ActionLogPlugin', '\\Joomla\\Component\\Actionlogs\\Administrator\\Plugin\\ActionLogPlugin');
}
else if (version_compare(JVERSION, '4.0', '>='))
{
	JLoader::registerNamespace('ActionLogPlugin', JPATH_ADMINISTRATOR . '/components/com_actionlogs/src/Plugin');
	JLoader::registerNamespace('ActionlogsHelper', JPATH_ADMINISTRATOR . '/components/com_actionlogs/src/Helper');
}
else
{
	JLoader::register('ActionLogPlugin', JPATH_ADMINISTRATOR . '/components/com_actionlogs/libraries/actionlogplugin.php');
	JLoader::register('ActionlogsHelper', JPATH_ADMINISTRATOR . '/components/com_actionlogs/helpers/actionlogs.php');
}


/**
 * RSDirectory! Users Actions Logging Plugin.
 *
 * @since  1.0.0
 */
class PlgActionlogRsdirectory extends ActionLogPlugin
{
	/**
	 * Holds the extension name
	 * @var string
	 */
	protected $extension = 'com_rsdirectory';

	/**
	 * Function to check if the component is loggable or not
	 *
	 * @return  boolean
	 *
	 */
	protected function checkLoggable()
	{
		static $status;

		if (is_null($status)) {
			$params = ComponentHelper::getComponent('com_actionlogs')->getParams();
			$loggableExtensions = $params->get('loggable_extensions', array());

			$status = in_array($this->extension, $loggableExtensions);
		}

		return $status;
	}

	/**
	 * Function to get the user object
	 *
	 * @return  mixed - false if no user detected, user object if the user is logged in
	 *
	 */
	protected function getLoggedInUser() {
		$user = Factory::getUser();

		if ($user->id) {
			return $user;
		}

		return false;
	}

	public function onRsdirActionLog($params = array()) {
		extract($params);

		if (!$this->checkLoggable())
		{
			return;

		}

		if (!isset($type))
		{
			return;
		}

		if ($user = $this->getLoggedInUser())
		{
			$messages = false;
			$messageLanguageKey = '';

			switch ($type)
			{
				// log the anonymisation for the user
				case 'user_anonymise':
					$user_data = Factory::getUser($user_id);

					$messages = array(
						'itemlink' 	 => 'index.php?option=com_rsdirectory&view=user&layout=edit&id=' . $user_id,
						'itemanchor' => $user_data->name.' ('.$user_data->username.')'
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_USER_ANONYMISE';
				break;

				// log the edit for the user
				case 'user_edit':
					$user_data = Factory::getUser($user_id);

					$messages = array(
						'itemlink' 	=> '<a href="'.'index.php?option=com_rsdirectory&view=user&layout=edit&id=' . $user_id.'">'.$user_data->name.' ('.$user_data->username.')</a>',
						'itemanchor' => $user_data->name.' ('.$user_data->username.')'
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_USER_EDIT';
				break;

				// log the owner reply
				case 'review_add_owner_reply':
					$messages = array(
						'review'		=> 'index.php?option=com_rsdirectory&view=rating&layout=edit&id=' . $review_id,
						'reviewanchor'  => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_REVIEW'),

						'itemlink' 		=> 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : '')
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_REVIEW_ADD_OWNER_REPLY';
				break;

				// log the review add/update
				case 'review_add':
				case 'review_update':
					$messages = array(
						'review'		=> 'index.php?option=com_rsdirectory&view=rating&layout=edit&id=' . $review_id,
						'reviewanchor'  => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_REVIEW'),
						'itemlink' 		=> 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : '')
					);

					$messageLanguageKey = ($type == 'review_add' ? 'PLG_ACTIONLOG_RSDIRECTORY_REVIEW_ADD' : 'PLG_ACTIONLOG_RSDIRECTORY_REVIEW_UPDATE');
				break;

				// log the claims add/approve
				case 'claim_add':
				case 'claim_approved':
				case 'claim_denied':
					$messages = array(
						'claim'		=> 'index.php?option=com_rsdirectory&view=claim&layout=edit&id=' . $claim_id,
						'claimanchor'  => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_CLAIM'),
						'itemlink' 		=> 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : '')
					);

					$messageLanguageKey = ($type == 'claim_add' ? 'PLG_ACTIONLOG_RSDIRECTORY_CLAIM_ADD' : 'PLG_ACTIONLOG_RSDIRECTORY_'.strtoupper($type));
				break;

				case 'claim_delete':
					$messages = array(
						'itemlink' 	 => 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : '')
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_CLAIM_DELETE';
				break;

				// log the review delete
				case 'review_delete':
					$messages = array(
						'itemlink' 	 => 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : '')
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_REVIEW_DELETE';
				break;

				// log the review publish/unpublish state
				case 'review_published':
				case 'review_unpublished':
					$messages = array(
						'review'		=> 'index.php?option=com_rsdirectory&view=rating&layout=edit&id=' . $review_id,
						'reviewanchor'  => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_REVIEW'),
						'itemlink' 		=> 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : '')
					);

					$messageLanguageKey = ($type == 'review_published' ? 'PLG_ACTIONLOG_RSDIRECTORY_REVIEW_PUBLISHED' : 'PLG_ACTIONLOG_RSDIRECTORY_REVIEW_UNPUBLISHED');
				break;

				// log the report read/unread
				case 'report_delete':
					$messages = array(
						'itemlink' 	 => 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : '')
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_REPORT_DELETE';
				break;

				// log the report read/unread
				case 'report_add':
					$messages = array(
						'itemlink' 	 		=> 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' 		=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : ''),
						'report_id'  		=> 'index.php?option=com_rsdirectory&view=reportedentry&layout=edit&id=' . $report_id,
						'report_idanchor'   => JText::sprintf('PLG_ACTIONLOG_RSDIRECTORY_TYPE_REPORT_ID', $report_id)
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_REPORT_ADD';
				break;

				// log the report read/unread
				case 'report_read':
				case 'report_unread':
					$messages = array(
						'itemlink' 	 		=> 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' 		=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : ''),
						'report_id'  		=> 'index.php?option=com_rsdirectory&view=reportedentry&layout=edit&id=' . $report_id,
						'report_idanchor'   => JText::sprintf('PLG_ACTIONLOG_RSDIRECTORY_TYPE_REPORT_ID', $report_id)
					);

					$messageLanguageKey = ($type == 'report_read' ? 'PLG_ACTIONLOG_RSDIRECTORY_REPORT_READ' : 'PLG_ACTIONLOG_RSDIRECTORY_REPORT_UNREAD');
				break;

				// log the paid status
				case 'entry_paid':
				case 'entry_unpaid':
					$messages = array(
						'itemlink' 	 => 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : ''),
					);

					$messageLanguageKey = ($type == 'entry_paid' ? 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_PAID' : 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_UNPAID');
				break;

				// log the delete
				case 'delete_entry':
					$messages = array(
						'itemid' => $entry_id,
						'name' 	 => (!empty($entry_name) ? $entry_name : '')
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_DELETED';
				break;
				// log when an entry has been added
				case 'entry_published':
				case 'entry_unpublished':
					$messages = array(
						'itemlink' 	 => 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : ''),
					);

					$messageLanguageKey = ($type == 'entry_published' ? 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_PUBLISHED' : 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_UNPUBLISHED');

				break;
				// log when an entry has been added
				case 'entry_add':
					$messages = array(
						'itemlink' 	 => 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : ''),
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_ADDED';

				break;

				// log when an entry has been updated
				case 'entry_update':
					$messages = array(
						'itemlink' 	 => 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : ''),
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_UPDATED';
				break;

				// log when an entry has been updated and changed the user of the entry
				case 'entry_update_user':
					$new_user = JFactory::getUser($new_user);
					$old_user = JFactory::getUser($old_user);

					$messages = array(
						'itemlink' 	 		=> 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id,
						'itemanchor' 		=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY').(!empty($entry_name) ? ' ('.$entry_name.')' : ''),

						'new_user' 			=> 'index.php?option=com_users&task=user.edit&id=' . $new_user->id,
						'new_useranchor' 	=> $new_user->name,
						'old_user' 			=> 'index.php?option=com_users&task=user.edit&id=' . $old_user->id,
						'old_useranchor' 	=> $old_user->name
					);

					$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_UPDATED_USER';
				break;

				// log a credit purchase
				case 'credits_purchased':
					$messages = array(
						'itemlink' 		=> 'index.php?option=com_rsdirectory&view=transaction&layout=edit&id=' . $transaction_id,
						'itemanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_TRANSACTION'),
						'credit_pack' 	=> $credit_title,
						'entrylink' 	=> ''
					);

					// without an entry associated
					if (!empty($entry_id))
					{
						$messages['entrylink'] 	 = 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id;
						$messages['entryanchor'] = JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY');
						$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_TRANSACTION_WITH_ENTRY';
					} // with an entry associated
					else
					{
						$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_TRANSACTION';
					}
				break;

				// log a credit purchase mark
				case 'credits_finalized':
				case 'credits_pending':
					$messages = array(
						'itemlink' 		=> 'index.php?option=com_rsdirectory&view=transaction&layout=edit&id=' . $transaction_id,
						'itemanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_TRANSACTION'),
						'credit_pack' 	=> $credit_title,
						'entrylink' 	=> ''
					);

					// without an entry associated
					if (!empty($entry_id))
					{
						$messages['entrylink'] 	 = 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id;
						$messages['entryanchor'] = JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY');
						$messageLanguageKey = $type == 'credits_finalized' ? 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_TRANSACTION_FINALIZED_WITH_ENTRY' : 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_TRANSACTION_PENDING_WITH_ENTRY';
					} // with an entry associated
					else
					{
						$messageLanguageKey =  $type == 'credits_finalized' ?  'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_TRANSACTION_FINALIZED' : 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_TRANSACTION_PENDING';
					}
				break;

				// log a credit purchase (transaction) delete
				case 'credits_delete':
					$messages = array(
						'entrylink' 	=> ''
					);

					// without an entry associated
					if (!empty($entry_id))
					{
						$messages['entrylink'] 	 = 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id;
						$messages['entryanchor'] = JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY');
						$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_TRANSACTION_DELETED_WITH_ENTRY';
					} // with an entry associated
					else
					{
						$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_ENTRY_TRANSACTION_DELETED';
					}
				break;

				// log the credit history states
				case 'credits_history_mark_paid':
				case 'credits_history_mark_unpaid':
					$messages = array(
						'entrylink' 	=> ''
					);

					$credit_info = $this->getCreditInfo($credit_id);

					$messages['credits'] 	  = $credit_info['credits'];
					$messages['credits_type'] = $credit_info['type'];
					$messages['credits_name'] = $credit_info['object_name'];

					// without an entry associated
					if (!empty($entry_id))
					{
						$messages['entrylink'] 	 = 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id;
						$messages['entryanchor'] = JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY');
						$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_CREDITS_HISTORY_WITH_ENTRY_MARK_'.($type == 'credits_history_mark_paid' ? 'PAID' : 'UNPAID');
					} // with an entry associated
					else
					{
						$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CREDITS_HISTORY_MARK_'.($type == 'credits_history_mark_paid' ? 'PAID' : 'UNPAID');
					}
				break;

				// log the credit history delete
				case 'credits_history_delete':
					$messages = array(
						'entrylink' 	=> ''
					);

					$credit_info = $this->getCreditInfo($credit_id);

					$messages['credits'] 	  = $credit_info['credits'];
					$messages['credits_type'] = $credit_info['type'];
					$messages['credits_name'] = $credit_info['object_name'];

					// without an entry associated
					if (!empty($entry_id))
					{
						$messages['entrylink'] 	 = 'index.php?option=com_rsdirectory&view=entry&layout=edit&id=' . $entry_id;
						$messages['entryanchor'] = JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_ENTRY');
						$messageLanguageKey = 'PLG_ACTIONLOG_RSDIRECTORY_CREDITS_HISTORY_WITH_ENTRY_DELETE';
					} // with an entry associated
					else
					{
						$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CREDITS_HISTORY_DELETE';
					}
				break;

				// log create/update field
				case 'field_create':
				case 'field_update':
					$messages = array(
						'fieldtype'			=> $field_type,
						'fieldlink' 		=> 'index.php?option=com_rsdirectory&view=field&layout=edit&id=' . $field_id,
						'fieldlinkanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_FIELD').' ('.$field_name.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_FIELD_'.($type == 'field_create' ? 'CREATE' : 'UPDATE');
				break;

				// log publish/unpublish field
				case 'field_unpublished':
				case 'field_published':
					$messages = array(
						'fieldtype'		=> $field_type,
						'fieldlink' 		=> 'index.php?option=com_rsdirectory&view=field&layout=edit&id=' . $field_id,
						'fieldlinkanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_FIELD').' ('.$field_name.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_FIELD_'.($type == 'field_published' ? 'PUBLISHED' : 'UNPUBLISHED');
				break;

				// log publish/unpublish field
				case 'field_delete':
					$messages = array(
						'fieldtype'		=> $field_type,
						'fieldname' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_FIELD').' ('.$field_name.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_FIELD_DELETE';
				break;

				case 'field_assign':
				case 'field_unassign':
					$messages = array(
						'fieldtype'		=> $field_type,
						'fieldlink' 		=> 'index.php?option=com_rsdirectory&view=field&layout=edit&id=' . $field_id,
						'fieldlinkanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_FIELD').' ('.$field_name.')',
						'formlink'			=> 'index.php?option=com_rsdirectory&view=form&layout=edit&id=' . $form_id,
						'formanchor'		=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_FORM').' ('.$form_title.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_FIELD_FORM_'.($type == 'field_assign' ? 'ASSIGN' : 'UNASSIGN');
				break;

				// log create/update form
				case 'form_create':
				case 'form_update':
					$messages = array(
						'formlink'			=> 'index.php?option=com_rsdirectory&view=form&layout=edit&id=' . $form_id,
						'formanchor'		=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_FORM').' ('.$form_title.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_FORM_'.($type == 'form_create' ? 'CREATE' : 'UPDATE');
				break;

				// log form delete
				case 'form_delete':
					$messages = array(
						'formname' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_FORM').' ('.$form_title.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_FORM_DELETE';
				break;

				// log category delete
				case 'category_delete':
					$messages = array(
						'categorytitle' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_CATEGORY').' ('.$category_title.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CATEGORY_DELETE'.($has_children ? '_WITH_CHILDREN' : '');
				break;

				// log create/update form
				case 'category_create':
				case 'category_update':
					$messages = array(
						'categorylink' 	 => 'index.php?option=com_rsdirectory&view=category&layout=edit&id=' . $category_id,
						'categoryanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_CATEGORY').' ('.$category_title.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CATEGORY_'.($type == 'category_create' ? 'CREATE' : 'UPDATE');
				break;

				// log publish/unpublish category
				case 'category_unpublished':
				case 'category_published':
					$messages = array(
						'categorylink' 	 => 'index.php?option=com_rsdirectory&view=category&layout=edit&id=' . $category_id,
						'categoryanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_CATEGORY').' ('.$category_title.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CATEGORY_'.($type == 'category_published' ? 'PUBLISHED' : 'UNPUBLISHED');
				break;

				// log categories rebuild
				case 'categories_rebuild':
					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CATEGORIES_REBUILD';
				break;

				// log category form assignation
				case 'category_form_assignation':
					$messages = array(
						'categorylink' 	 => 'index.php?option=com_rsdirectory&view=category&layout=edit&id=' . $category_id,
						'categoryanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_CATEGORY').' ('.$category_title.')',
						'formlink'			=> 'index.php?option=com_rsdirectory&view=form&layout=edit&id=' . $form_id,
						'formanchor'		=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_FORM').' ('.$form_title.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CATEGORIES_FORM_ASSIGNATION_'.(!empty($form_title) ? 'TO_FORM' : 'NO_FORM');
				break;

				// log create/update group
				case 'group_create':
				case 'group_update':
					$messages = array(
						'grouplink' 	=> 'index.php?option=com_rsdirectory&view=group&layout=edit&id=' . $group_id,
						'groupanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_GROUP').' ('.$group_name.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_GROUP_'.($type == 'group_create' ? 'CREATE' : 'UPDATE');
				break;

				// log group delete
				case 'group_delete':
					$messages = array(
						'groupname' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_GROUP').' ('.$group_name.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_GROUP_DELETE';
				break;

				// log create/update form
				case 'group_unpublished':
				case 'group_published':
					$messages = array(
						'grouplink' 	=> 'index.php?option=com_rsdirectory&view=group&layout=edit&id=' . $group_id,
						'groupanchor' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_GROUP').' ('.$group_name.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_GROUP_'.($type == 'group_published' ? 'PUBLISHED' : 'UNPUBLISHED');
				break;

				// log create/update credit package
				case 'credit_package_create':
				case 'credit_package_update':
					$messages = array(
						'packagelink' 	=> 'index.php?option=com_rsdirectory&view=creditpackage&layout=edit&id=' . $package_id,
						'packageanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_PACKAGE').' ('.$package_title.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CREDIT_PACKAGE_'.($type == 'credit_package_create' ? 'CREATE' : 'UPDATE');
				break;

				// log credit package delete
				case 'credit_package_delete':
					$messages = array(
						'packagename' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_PACKAGE').' ('.$package_title.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CREDIT_PACKAGE_DELETE';
				break;

				// log create/update credit package
				case 'credit_package_unpublished':
				case 'credit_package_published':
					$messages = array(
						'packagelink' 	=> 'index.php?option=com_rsdirectory&view=creditpackage&layout=edit&id=' . $package_id,
						'packageanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_PACKAGE').' ('.$package_title.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CREDIT_PACKAGE_'.($type == 'credit_package_published' ? 'PUBLISHED' : 'UNPUBLISHED');
				break;

				// log create/update email message
				case 'email_message_create':
				case 'email_message_update':
					$messages = array(
						'messagelink' 	=> 'index.php?option=com_rsdirectory&view=emailmessage&layout=edit&id=' . $email_id,
						'messageanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_EMAIL_MESSAGE').' ('.$email_description.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_EMAIL_MESSAGE_'.($type == 'email_message_create' ? 'CREATE' : 'UPDATE');
				break;

				// log credit package delete
				case 'email_message_delete':
					$messages = array(
						'messagedescription' 	=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_EMAIL_MESSAGE').' ('.$email_description.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_EMAIL_MESSAGE_DELETE';
				break;

				// log create/update credit package
				case 'email_message_unpublished':
				case 'email_message_published':
					$messages = array(
						'messagelink' 	=> 'index.php?option=com_rsdirectory&view=emailmessage&layout=edit&id=' . $email_id,
						'messageanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_EMAIL_MESSAGE').' ('.$email_description.')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_EMAIL_MESSAGE_'.($type == 'email_message_published' ? 'PUBLISHED' : 'UNPUBLISHED');
				break;

				// log the configuration change
				case 'configuration_change':
					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_CONFIGURATION_CHANGED';
				break;

				// log regenerate titles
				case 'regenerate_titles':
					$elements_lang = array();
					foreach ($elements as $element) {
						$element = strtoupper($element);
						$elements_lang[]  = JText::_('COM_RSDIRECTORY_FIELDS_'.$element);
					}

					$messages = array(
						'formlink'	 => 'index.php?option=com_rsdirectory&view=form&layout=edit&id=' . $form_id,
						'formanchor' => JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_FORM').' ('.$form_title.')',
						'elements'	 => JText::_('PLG_ACTIONLOG_RSDIRECTORY_REGENERATE_ELEMENTS'). ' ('.implode(', ',$elements_lang).')'
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_REGENERATE_TITLES';
				break;

				// log the import process
				case 'import':
					$messages = array(
						'importfrom'	=> $import_from
					);

					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_IMPORT';
				break;

				// log backup process
				case 'backup':
					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_BACKUP_PERFORMED';
				break;

				// log restore process
				case 'restore':
					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_RESTORE_PERFORMED';
				break;

				// log the deletion of a backup archive
				case 'delete_backup_file':
					$messages = array(
						'filehash'		=> JText::_('PLG_ACTIONLOG_RSDIRECTORY_TYPE_BACKUP_ARCHIVE').' ('.$file_hash.')'
					);
					$messageLanguageKey =  'PLG_ACTIONLOG_RSDIRECTORY_DELETE_BACKUP_FILE';
				break;
			}


			// add the log
			if (!empty($messageLanguageKey))
			{
				// add the action type
				if (empty($messages))
				{
					$messages = array('action'=> $type);
				}
				else
				{
					$messages['action'] = $type;
				}
				// add the user to the messages
				$messages['userid'] 		= $user->id;
				$messages['username'] 		= $user->name;
				$messages['accountlink'] 	= 'index.php?option=com_users&task=user.edit&id=' . $user->id;

				$this->addLog(array($messages), $messageLanguageKey, $this->extension, $user->id);
			}
		}
	}

	protected function getCreditInfo($credit_id)
	{
		$credit_id = (int) $credit_id;
		// Get DBO.
		$db = JFactory::getDbo();

		// Get the entries ids.
		$query = $db->getQuery(true)
			->select( $db->qn('object_type') )
			->select( $db->qn('object_id') )
			->select( $db->qn('credits') )
			->from( $db->qn('#__rsdirectory_entries_credits') )
			->where( $db->qn('id') . ' = ' . $db->q($credit_id) );
		$db->setQuery($query);

		if ($data = $db->loadAssoc())
		{
			$data['type'] = $this->getObjectType($data['object_type']);
			$data['object_name'] = $this->getObject($data['object_id']);

			unset($data['object_type']);
			unset($data['object_id']);

			return $data;
		}

		return false;
	}

	protected function getObjectType($object_type)
	{
		static $types = array();

		if (!isset($types[$object_type]))
		{
			$types[$object_type] = JText::_( 'COM_RSDIRECTORY_CREDIT_OBJECT_TYPE_' . strtoupper($object_type) );
		}

		return $types[$object_type];
	}

	protected function getObject($id)
	{
		static $names = array();

		if (!isset($names[$id]))
		{
			$field = RSDirectoryHelper::getField($id);
			$names[$id] = $field ? $field->properties->get('form_caption') : '';
		}

		return $names[$id];
	}
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists