git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
330 lines
9.1 KiB
PHP
330 lines
9.1 KiB
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 ) );
|
|
}
|
|
} |