joomla_test/administrator/components/com_k2/models/extrafields.php
2020-01-02 22:20:31 +07:00

362 lines
12 KiB
PHP

<?php
/**
* @version $Id: extrafields.php 1937 2013-03-07 15:19:16Z lefteris.kavadas $
* @package K2
* @author JoomlaWorks http://www.joomlaworks.net
* @copyright Copyright (c) 2006 - 2013 JoomlaWorks Ltd. All rights reserved.
* @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
*/
// no direct access
defined('_JEXEC') or die;
jimport('joomla.application.component.model');
JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');
class K2ModelExtraFields extends K2Model
{
function getData()
{
$mainframe = JFactory::getApplication();
$option = JRequest::getCmd('option');
$view = JRequest::getCmd('view');
$db = JFactory::getDBO();
$limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int');
$limitstart = $mainframe->getUserStateFromRequest($option.$view.'.limitstart', 'limitstart', 0, 'int');
$filter_order = $mainframe->getUserStateFromRequest($option.$view.'filter_order', 'filter_order', 'groupname', 'cmd');
$filter_order_Dir = $mainframe->getUserStateFromRequest($option.$view.'filter_order_Dir', 'filter_order_Dir', 'ASC', 'word');
$filter_state = $mainframe->getUserStateFromRequest($option.$view.'filter_state', 'filter_state', -1, 'int');
$search = $mainframe->getUserStateFromRequest($option.$view.'search', 'search', '', 'string');
$search = JString::strtolower($search);
$filter_type = $mainframe->getUserStateFromRequest($option.$view.'filter_type', 'filter_type', '', 'string');
$filter_group = $mainframe->getUserStateFromRequest($option.$view.'filter_group', 'filter_group', 0, 'int');
$query = "SELECT exf.*, exfg.name as groupname FROM #__k2_extra_fields AS exf LEFT JOIN #__k2_extra_fields_groups exfg ON exf.group=exfg.id WHERE exf.id>0";
if ($filter_state > -1)
{
$query .= " AND published={$filter_state}";
}
if ($search)
{
$escaped = K2_JVERSION == '15' ? $db->getEscaped($search, true) : $db->escape($search, true);
$query .= " AND LOWER( exf.name ) LIKE ".$db->Quote('%'.$escaped.'%', false);
}
if ($filter_type)
{
$query .= " AND `type`=".$db->Quote($filter_type);
}
if ($filter_group)
{
$query .= " AND `group`={$filter_group}";
}
if (!$filter_order)
{
$filter_order = '`group`';
}
if ($filter_order == 'ordering')
{
$query .= " ORDER BY `group`, ordering {$filter_order_Dir}";
}
else
{
$query .= " ORDER BY {$filter_order} {$filter_order_Dir}, `group`, ordering";
}
$db->setQuery($query, $limitstart, $limit);
$rows = $db->loadObjectList();
return $rows;
}
function getTotal()
{
$mainframe = JFactory::getApplication();
$option = JRequest::getCmd('option');
$view = JRequest::getCmd('view');
$db = JFactory::getDBO();
$limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int');
$limitstart = $mainframe->getUserStateFromRequest($option.'.limitstart', 'limitstart', 0, 'int');
$filter_state = $mainframe->getUserStateFromRequest($option.$view.'filter_state', 'filter_state', 1, 'int');
$search = $mainframe->getUserStateFromRequest($option.$view.'search', 'search', '', 'string');
$search = JString::strtolower($search);
$filter_type = $mainframe->getUserStateFromRequest($option.$view.'filter_type', 'filter_type', '', 'string');
$filter_group = $mainframe->getUserStateFromRequest($option.$view.'filter_group', 'filter_group', '', 'string');
$query = "SELECT COUNT(*) FROM #__k2_extra_fields WHERE id>0";
if ($filter_state > -1)
{
$query .= " AND published={$filter_state}";
}
if ($search)
{
$escaped = K2_JVERSION == '15' ? $db->getEscaped($search, true) : $db->escape($search, true);
$query .= " AND LOWER( name ) LIKE ".$db->Quote('%'.$escaped.'%', false);
}
if ($filter_type)
{
$query .= " AND `type`=".$db->Quote($filter_type);
}
if ($filter_group)
{
$query .= " AND `group`=".$db->Quote($filter_group);
}
$db->setQuery($query);
$total = $db->loadresult();
return $total;
}
function publish()
{
$mainframe = JFactory::getApplication();
$cid = JRequest::getVar('cid');
foreach ($cid as $id)
{
$row = JTable::getInstance('K2ExtraField', 'Table');
$row->load($id);
$row->publish($id, 1);
}
$cache = JFactory::getCache('com_k2');
$cache->clean();
$mainframe->redirect('index.php?option=com_k2&view=extrafields');
}
function unpublish()
{
$mainframe = JFactory::getApplication();
$cid = JRequest::getVar('cid');
foreach ($cid as $id)
{
$row = JTable::getInstance('K2ExtraField', 'Table');
$row->load($id);
$row->publish($id, 0);
}
$cache = JFactory::getCache('com_k2');
$cache->clean();
$mainframe->redirect('index.php?option=com_k2&view=extrafields');
}
function saveorder()
{
$mainframe = JFactory::getApplication();
$db = JFactory::getDBO();
$cid = JRequest::getVar('cid', array(0), 'post', 'array');
$total = count($cid);
$order = JRequest::getVar('order', array(0), 'post', 'array');
JArrayHelper::toInteger($order, array(0));
$groupings = array();
for ($i = 0; $i < $total; $i++)
{
$row = JTable::getInstance('K2ExtraField', 'Table');
$row->load((int)$cid[$i]);
$groupings[] = $row->group;
if ($row->ordering != $order[$i])
{
$row->ordering = $order[$i];
if (!$row->store())
{
JError::raiseError(500, $db->getErrorMsg());
}
}
}
$params = JComponentHelper::getParams('com_k2');
if (!$params->get('disableCompactOrdering'))
{
$groupings = array_unique($groupings);
foreach ($groupings as $group)
{
$row = JTable::getInstance('K2ExtraField', 'Table');
$row->reorder("`group` = {$group}");
}
}
$cache = JFactory::getCache('com_k2');
$cache->clean();
return true;
}
function orderup()
{
$mainframe = JFactory::getApplication();
$cid = JRequest::getVar('cid');
$row = JTable::getInstance('K2ExtraField', 'Table');
$row->load($cid[0]);
$row->move(-1, "`group` = '{$row->group}'");
$params = JComponentHelper::getParams('com_k2');
if (!$params->get('disableCompactOrdering'))
$row->reorder("`group` = '{$row->group}'");
$cache = JFactory::getCache('com_k2');
$cache->clean();
$msg = JText::_('K2_NEW_ORDERING_SAVED');
$mainframe->redirect('index.php?option=com_k2&view=extrafields', $msg);
}
function orderdown()
{
$mainframe = JFactory::getApplication();
$cid = JRequest::getVar('cid');
$row = JTable::getInstance('K2ExtraField', 'Table');
$row->load($cid[0]);
$row->move(1, "`group` = '{$row->group}'");
$params = JComponentHelper::getParams('com_k2');
if (!$params->get('disableCompactOrdering'))
$row->reorder("`group` = '{$row->group}'");
$cache = JFactory::getCache('com_k2');
$cache->clean();
$msg = JText::_('K2_NEW_ORDERING_SAVED');
$mainframe->redirect('index.php?option=com_k2&view=extrafields', $msg);
}
function remove()
{
$mainframe = JFactory::getApplication();
$db = JFactory::getDBO();
$cid = JRequest::getVar('cid');
foreach ($cid as $id)
{
$row = JTable::getInstance('K2ExtraField', 'Table');
$row->load($id);
$row->delete($id);
}
$cache = JFactory::getCache('com_k2');
$cache->clean();
$mainframe->redirect('index.php?option=com_k2&view=extrafields', JText::_('K2_DELETE_COMPLETED'));
}
function getExtraFieldsGroup()
{
$cid = JRequest::getVar('cid');
$row = JTable::getInstance('K2ExtraFieldsGroup', 'Table');
$row->load($cid);
return $row;
}
function getGroups($filter = false)
{
$mainframe = JFactory::getApplication();
$option = JRequest::getCmd('option');
$view = JRequest::getCmd('view');
$limit = $mainframe->getUserStateFromRequest('global.list.limit', 'limit', $mainframe->getCfg('list_limit'), 'int');
$limitstart = $mainframe->getUserStateFromRequest($option.$view.'.limitstart', 'limitstart', 0, 'int');
$db = JFactory::getDBO();
$query = "SELECT * FROM #__k2_extra_fields_groups ORDER BY `name`";
if ($filter)
{
$db->setQuery($query);
}
else
{
$db->setQuery($query, $limitstart, $limit);
}
$rows = $db->loadObjectList();
for ($i = 0; $i < sizeof($rows); $i++)
{
$query = "SELECT name FROM #__k2_categories WHERE extraFieldsGroup=".(int)$rows[$i]->id;
$db->setQuery($query);
$categories = K2_JVERSION == '30' ? $db->loadColumn() : $db->loadResultArray();
if (is_array($categories))
{
$rows[$i]->categories = implode(', ', $categories);
}
else
{
$rows[$i]->categories = '';
}
}
return $rows;
}
function getTotalGroups()
{
$db = JFactory::getDBO();
$query = "SELECT COUNT(*) FROM #__k2_extra_fields_groups";
$db->setQuery($query);
$total = $db->loadResult();
return $total;
}
function saveGroup()
{
$mainframe = JFactory::getApplication();
$id = JRequest::getInt('id');
$row = JTable::getInstance('K2ExtraFieldsGroup', 'Table');
if (!$row->bind(JRequest::get('post')))
{
$mainframe->redirect('index.php?option=com_k2&view=extrafieldsgroups', $row->getError(), 'error');
}
if (!$row->check())
{
$mainframe->redirect('index.php?option=com_k2&view=extrafieldsgroup&cid='.$row->id, $row->getError(), 'error');
}
if (!$row->store())
{
$mainframe->redirect('index.php?option=com_k2&view=extrafieldsgroup', $row->getError(), 'error');
}
switch(JRequest::getCmd('task'))
{
case 'apply' :
$msg = JText::_('K2_CHANGES_TO_GROUP_SAVED');
$link = 'index.php?option=com_k2&view=extrafieldsgroup&cid='.$row->id;
break;
case 'save' :
default :
$msg = JText::_('K2_GROUP_SAVED');
$link = 'index.php?option=com_k2&view=extrafieldsgroups';
break;
}
$cache = JFactory::getCache('com_k2');
$cache->clean();
$mainframe->redirect($link, $msg);
}
function removeGroups()
{
$mainframe = JFactory::getApplication();
$db = &JFactory::getDBO();
$cid = JRequest::getVar('cid');
JArrayHelper::toInteger($cid);
foreach ($cid as $id)
{
$row = JTable::getInstance('K2ExtraFieldsGroup', 'Table');
$row->load($id);
$query = "DELETE FROM #__k2_extra_fields WHERE `group`={$id}";
$db->setQuery($query);
$db->query();
$row->delete($id);
}
$cache = &JFactory::getCache('com_k2');
$cache->clean();
$mainframe->redirect('index.php?option=com_k2&view=extrafieldsgroups', JText::_('K2_DELETE_COMPLETED'));
}
}