| Current Path : /var/www/iplanru/data/old/www/i-plan.ru/administrator/components/com_jce/groups/ |
| Current File : /var/www/iplanru/data/old/www/i-plan.ru/administrator/components/com_jce/groups/controller.php |
<?php
/**
* @version $Id: controller.php 47 2009-05-26 18:06:30Z happynoodleboy $
* @package Joomla
* @subpackage Config
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant to the
* GNU General Public License, and as distributed it includes or is derivative
* of works licensed under the GNU General Public License or other free or open
* source software licenses. See COPYRIGHT.php for copyright notices and
* details.
*/
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();
jimport( 'joomla.application.component.controller' );
/**
* Plugins Component Controller
*
* @package Joomla
* @subpackage Plugins
* @since 1.5
*/
class GroupsController extends JController
{
/**
* Custom Constructor
*/
function __construct( $default = array())
{
parent::__construct( $default );
$this->registerTask( 'apply', 'save');
$this->registerTask( 'unpublish', 'publish');
$this->registerTask( 'edit' , 'display' );
$this->registerTask( 'add' , 'display' );
$this->registerTask( 'remove' , 'remove' );
$this->registerTask( 'addusers' , 'display' );
$this->registerTask( 'removeusers' ,'display' );
$this->registerTask( 'orderup' , 'order' );
$this->registerTask( 'orderdown' , 'order' );
$this->registerTask( 'legend' , 'display' );
$this->registerTask( 'copy' , 'copy' );
}
function display( )
{
switch($this->getTask())
{
case 'add' :
case 'edit' :
{
JRequest::setVar( 'layout', 'form' );
JRequest::setVar( 'view', 'group' );
JRequest::setVar( 'hidemainmenu', 1 );
} break;
case 'addusers' :
case 'removeusers' :
{
JRequest::setVar( 'hidemainmenu', 1 );
JRequest::setVar( 'view', 'users' );
} break;
case 'legend':
{
JRequest::setVar( 'hidemainmenu', 1 );
JRequest::setVar( 'view', 'legend' );
} break;
}
parent::display();
}
function remove()
{
// Check for request forgeries
JRequest::checkToken() or die( 'Invalid Token' );
$db =& JFactory::getDBO();
$user =& JFactory::getUser();
$cid = JRequest::getVar( 'cid', array(0), 'post', 'array' );
JArrayHelper::toInteger($cid, array(0));
if (count( $cid ) < 1) {
JError::raiseError(500, JText::_( 'Select a Group to remove' ) );
}
$cids = implode( ',', $cid );
$query = 'DELETE FROM #__jce_groups'
. ' WHERE id IN ( '.$cids.' )'
;
$db->setQuery( $query );
if (!$db->query()) {
JError::raiseError(500, $db->getErrorMsg() );
}
$this->setRedirect( 'index.php?option=com_jce&type=group' );
}
function copy()
{
// Check for request forgeries
JRequest::checkToken() or die( 'Invalid Token' );
$db =& JFactory::getDBO();
$user =& JFactory::getUser();
$cid = JRequest::getVar( 'cid', array(0), 'post', 'array' );
JArrayHelper::toInteger($cid, array(0));
$n = count( $cid );
if ($n == 0) {
return JError::raiseWarning( 500, JText::_( 'No items selected' ) );
}
$row =& JTable::getInstance('groups', 'JCETable');
foreach ($cid as $id){
// load the row from the db table
$row->load( (int) $id );
$row->name = JText::sprintf( 'Copy of %s', $row->name );
$row->id = 0;
$row->published = 0;
if (!$row->check()) {
return JError::raiseWarning( 500, $row->getError() );
}
if (!$row->store()) {
return JError::raiseWarning( 500, $row->getError() );
}
$row->checkin();
$row->reorder( 'ordering='.$db->Quote( $row->ordering ) );
}
$msg = JText::sprintf( 'Items Copied', $n );
$this->setRedirect( 'index.php?option=com_jce&type=group', $msg );
}
function save()
{
// Check for request forgeries
JRequest::checkToken() or die( 'Invalid Token' );
require_once( dirname( __FILE__ ) .DS. 'helper.php' );
$db =& JFactory::getDBO();
$row =& JTable::getInstance('groups', 'JCETable');
$task = $this->getTask();
$pid = JRequest::getVar( 'pid', array(), 'post', 'array' );
$components = JRequest::getVar( 'components', array(), 'post', 'array' );
$types = JRequest::getVar( 'types', array(), 'post', 'array' );
$users = JRequest::getVar( 'users', array(), 'post', 'array' );
if (!$row->bind(JRequest::get('post'))) {
JError::raiseError(500, $row->getError() );
}
if( substr( $row->rows, -1, 1 ) == ';' ){
$row->rows = substr( $row->rows, 0, -1 );
}
$row->types = implode( ',', $types );
$row->components = implode( ',', $components );
$row->users = implode( ',', $users );
$query = "SELECT id"
. " FROM #__jce_plugins"
. " WHERE published = 1"
. " AND type = 'plugin'"
. " AND id IN (". str_replace( ';', ',', $row->rows ) .")"
;
$db->setQuery( $query );
$ids = $db->loadResultArray();
if( !$ids ){
$ids = array();
}
$row->plugins = implode( ',', array_merge( $pid, $ids ) );
if (!$row->check()) {
JError::raiseError(500, $row->getError() );
}
if (!$row->store()) {
JError::raiseError(500, $row->getError() );
}
$row->checkin();
switch ( $task )
{
case 'apply':
$msg = JText::sprintf( 'Successfully Saved changes to Group', $row->name );
$this->setRedirect( 'index.php?option=com_jce&type=group&view=group&task=edit&cid[]='. $row->id, $msg );
break;
case 'save':
default:
$msg = JText::sprintf( 'Successfully Saved Group', $row->name );
$this->setRedirect( 'index.php?option=com_jce&type=group', $msg );
break;
}
}
function publish( ){
// Check for request forgeries
JRequest::checkToken() or die( 'Invalid Token' );
$db =& JFactory::getDBO();
$user =& JFactory::getUser();
$cid = JRequest::getVar( 'cid', array(0), 'post', 'array' );
JArrayHelper::toInteger($cid, array(0));
$publish = ( $this->getTask() == 'publish' ? 1 : 0 );
if (count( $cid ) < 1) {
$action = $publish ? JText::_( 'publish' ) : JText::_( 'unpublish' );
JError::raiseError(500, JText::_( 'Select a Group to '.$action ) );
}
$cids = implode( ',', $cid );
$query = 'UPDATE #__jce_groups SET published = '.(int) $publish
. ' WHERE id IN ( '.$cids.' )'
. ' AND ( checked_out = 0 OR ( checked_out = '.(int) $user->get('id').' ))'
;
$db->setQuery( $query );
if (!$db->query()) {
JError::raiseError(500, $db->getErrorMsg() );
}
if (count( $cid ) == 1) {
$row =& JTable::getInstance('groups', 'JCETable');
$row->checkin( $cid[0] );
}
$this->setRedirect( 'index.php?option=com_jce&type=group' );
}
function order( )
{
// Check for request forgeries
JRequest::checkToken() or jexit( 'Invalid Token' );
$db =& JFactory::getDBO();
$cid = JRequest::getVar( 'cid', array(0), 'post', 'array' );
JArrayHelper::toInteger($cid, array(0));
$uid = $cid[0];
$inc = ( $this->getTask() == 'orderup' ? -1 : 1 );
$row =& JTable::getInstance('groups', 'JCETable');
$row->load( $uid );
//$row->move( $inc, ' AND ordering > -10000 AND ordering < 10000' );
$row->move( $inc );
$this->setRedirect( 'index.php?option=com_jce&type=group' );
}
function saveorder( )
{
// Check for request forgeries
JRequest::checkToken() or jexit( 'Invalid Token' );
$cid = JRequest::getVar( 'cid', array(0), 'post', 'array' );
JArrayHelper::toInteger($cid, array(0));
$db =& JFactory::getDBO();
$total = count( $cid );
$order = JRequest::getVar( 'order', array(0), 'post', 'array' );
JArrayHelper::toInteger($order, array(0));
$cid = JRequest::getVar( 'cid', array(0), 'post', 'array' );
JArrayHelper::toInteger($cid, array(0));
$row =& JTable::getInstance('groups', 'JCETable');
$conditions = array();
// update ordering values
for ( $i=0; $i < $total; $i++ )
{
$row->load( (int) $cid[$i] );
if ($row->ordering != $order[$i])
{
$row->ordering = $order[$i];
if (!$row->store()) {
JError::raiseError(500, $db->getErrorMsg() );
}
// remember to updateOrder this group
$condition = ' AND ordering > -10000 AND ordering < 10000';
$found = false;
foreach ( $conditions as $cond )
{
if ($cond[1]==$condition) {
$found = true;
break;
}
}
if (!$found) $conditions[] = array($row->id, $condition);
}
}
// execute updateOrder for each group
foreach ( $conditions as $cond ) {
$row->load( $cond[0] );
$row->reorder( $cond[1] );
}
$msg = JText::_( 'New ordering saved' );
$this->setRedirect( 'index.php?option=com_jce&type=group', $msg );
}
function cancel( ){
$this->setRedirect( JRoute::_( 'index.php?option=com_jce', false ) );
}
function cancelEdit( )
{
// Check for request forgeries
JRequest::checkToken() or die( 'Invalid Token' );
$db =& JFactory::getDBO();
$row =& JTable::getInstance('groups', 'JCETable');
$row->bind(JRequest::get('post'));
$row->checkin();
$this->setRedirect( JRoute::_( 'index.php?option=com_jce&type=group', false ) );
}
}