Your IP : 216.73.216.224


Current Path : /var/www/html/administrator/components/com_community/controllers/
Upload File :
Current File : /var/www/html/administrator/components/com_community/controllers/groupcategories.php

<?php
/**
* @copyright (C) 2013 iJoomla, Inc. - All rights reserved.
* @license GNU General Public License, version 2 (http://www.gnu.org/licenses/gpl-2.0.html)
* @author iJoomla.com <webmaster@ijoomla.com>
* @url https://www.jomsocial.com/license-agreement
* The PHP code portions are distributed under the GPL license. If not otherwise stated, all images, manuals, cascading style sheets, and included JavaScript *are NOT GPL, and are released under the IJOOMLA Proprietary Use License v1.0
* More info at https://www.jomsocial.com/license-agreement
*/

use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Table\Table;
use Joomla\CMS\Uri\Uri;

// Disallow direct access to this file
defined('_JEXEC') or die('Restricted access');

jimport( 'joomla.application.component.controller' );

/**
 * JomSocial Component Controller
 */
class CommunityControllerGroupCategories extends CommunityController
{
	public function __construct()
	{
		parent::__construct();

		$this->registerTask( 'publish' , 'savePublish' );
		$this->registerTask( 'unpublish' , 'savePublish' );
	}

	public function ajaxTogglePublish( $id , $type, $viewName = false )
	{
		return parent::ajaxTogglePublish( $id , $type , 'groupcategories' );
	}

	public function ajaxSaveCategory( $data )
	{
		$response	= new JAXResponse();

		$row		= Table::getInstance( 'GroupCategory', 'CTable' );
		$row->load( $data['id'] );
		$row->parent	    =   $data['parent'];
		$row->name	    =   $data['name'];
		$row->description   =   $data['description'];

		if (!trim($row->name)) {
			$response->addAlert(Text::_('COM_COMMUNITY_CATEGORY_EMPTY_NAME_ERROR'));
			return $response->sendResponse();
		} else {
			$row->store();
		}

		if( $data['id'] != 0 )
		{
			// Update the rows in the table at the page.
			$response->addAssign( 'group-title-' . $data['id'] , 'innerHTML' , $row->name );
			$response->addAssign( 'group-description-' . $data['id'] , 'innerHTML' , $row->description );
		}
		else
		{
			$response->addScriptCall('azcommunity.redirect', Uri::base() . 'index.php?option=com_community&view=groupcategories');
		}
		$response->addScriptCall('cWindowHide');
		$this->cacheClean(array(COMMUNITY_CACHE_TAG_GROUPS_CAT));
		return $response->sendResponse();
	}

	public function ajaxEditCategory( $id )
	{
		$response	= new JAXResponse();
		$uri		= Uri::base();
		$db			= Factory::getDBO();
		$data		= '';
		$children	= array();

		// Get the event categories
		$model		= $this->getModel( 'groupcategories' );
		$categories	= $model->getCategories(false);

        //all the children cannot be the parent to this id
        if($id){
            $children = $model->getCategoryChilds($id,$categories);
        }

		$row		= Table::getInstance( 'groupcategories', 'CommunityTable' );
		$row->load( $id );

		// Escape the output
		//CFactory::load( 'helpers' , 'string' );
		$row->name	    =	CStringHelper::escape($row->name);
		$row->description   =	CStringHelper::escape($row->description);

		ob_start();
?>

		<div class="alert notice">
			<?php echo Text::_('COM_COMMUNITY_GROUPS_CATEGORY_DESC');?>
		</div>

		<form action="#" method="post" name="editGroupCategory" id="editGroupCategory">
		<table cellspacing="0" class="admintable" border="0" width="100%">
			<tbody>
				<tr>
					<td class="key" width="150" ><span class="js-tooltip"  title="<?php echo Text::_('COM_COMMUNITY_PARENT_TIPS');?>"><?php echo Text::_('COM_COMMUNITY_PARENT');?></span></td>
					<td>
					    <select name="parent">
						    <option value="<?php echo COMMUNITY_NO_PARENT; ?>"><?php echo Text::_('COM_COMMUNITY_NO_PARENT'); ?></option>
						    <?php
						    for( $i = 0; $i < count( $categories ); $i++ )
						    {
							if($categories[$i]->id != $id && !in_array($categories[$i]->id, $children)):
								$selected	= ($row->parent == $categories[$i]->id ) ? ' selected="selected"' : '';
						    ?>
						    <option value="<?php echo $categories[$i]->id; ?>"<?php echo $selected; ?>><?php echo $categories[$i]->name; ?></option>
						    <?php endif;
							}
							?>
					    </select>
					</td>
				</tr>
				<tr>
					<td class="key"><span class="js-tooltip"  title="<?php echo Text::_('COM_COMMUNITY_NAME_CATEGORY_TIPS');?>"><?php echo Text::_('COM_COMMUNITY_NAME');?></span></td>
					<td><input type="text" name="name" size="35" value="<?php echo ($id) ? $row->name : ''; ?>" /></td>
				</tr>
				<tr>
					<td class="key"><span class="js-tooltip"  title="<?php echo Text::_('COM_COMMUNITY_DESC_CATEGORY_TIPS');?>"><?php echo Text::_('COM_COMMUNITY_DESCRIPTION');?></span></td>
					<td>
						<textarea name="description" rows="5" cols="30"><?php echo ($id) ? $row->description : ''; ?></textarea>
					</td>
				</tr>
			</tbody>

			<input type="hidden" name="id" value="<?php echo ($id) ? $row->id : 0; ?>" />
		</table>
		</form>

<?php
		$contents	= ob_get_contents();
		ob_end_clean();

		$buttons	= '<input type="button" class="btn btn-small btn-primary pull-right" onclick="javascript:azcommunity.saveGroupCategory();return false;" value="' . Text::_('COM_COMMUNITY_SAVE') . '"/>';
		$buttons	.= '<input type="button" class="btn btn-small pull-left" onclick="javascript:cWindowHide();" value="' . Text::_('COM_COMMUNITY_CANCEL') . '"/>';

		$this->cacheClean(array(COMMUNITY_CACHE_TAG_GROUPS_CAT));
		$response->addAssign('cWindowContent', 'innerHTML' , $contents);
		$response->addScriptCall( 'cWindowActions' , $buttons );
		return $response->sendResponse();
	}

	/**
	 * Remove a category
	 **/
	public function removecategory()
	{
		$mainframe	= Factory::getApplication();
		$jinput 	= $mainframe->input;

		$ids	= $jinput->post->get( 'cid', array(), 'array');
		$count	= count($ids);

		$row		= Table::getInstance( 'GroupCategory', 'CTable' );

		foreach( $ids as $id )
		{
			if(!$row->delete( $id ))
			{
				// If there are any error when deleting, we just stop and redirect user with error.
				$message	= Text::_('COM_COMMUNITY_GROUPS_ASSIGNED_CATEGORIES');
				return $this->setRedirect( 'index.php?option=com_community&view=groupcategories' , $message , 'error');
			}
		}
		$message	= Text::sprintf( 'COM_COMMUNITY_CATEGORY_SUCCESSFULLY_REMOVED_COUNT' , $count );
		$this->cacheClean(array(COMMUNITY_CACHE_TAG_GROUPS_CAT));
		$this->setRedirect( 'index.php?option=com_community&view=groupcategories' , $message ,'message' );
	}
}