Пример #1
0
 public function select()
 {
     $app = JFactory::getApplication();
     $db = JFactory::getDBO();
     $config = hikaserial::config();
     $this->assignRef('config', $config);
     $toggleClass = hikaserial::get('helper.toggle');
     $this->assignRef('toggleClass', $toggleClass);
     $packGeneratorType = hikaserial::get('type.pack_generator');
     $this->assignRef('packGeneratorType', $packGeneratorType);
     $serialStatusType = hikaserial::get('type.serial_status');
     $this->assignRef('serialStatusType', $serialStatusType);
     $filterType = $app->getUserStateFromRequest($this->paramBase . ".filter_type", 'filter_type', 0, 'int');
     $singleSelection = JRequest::getVar('single', false);
     $confirm = JRequest::getVar('confirm', true);
     $cfg = array('table' => 'pack', 'main_key' => 'pack_id', 'order_sql_value' => 'a.pack_id');
     $elemStruct = array('pack_name', 'pack_data', 'pack_generator');
     $manage = true;
     $this->assignRef('manage', $manage);
     $pageInfo = new stdClass();
     $pageInfo->search = $app->getUserStateFromRequest($this->paramBase . ".search", 'search', '', 'string');
     $pageInfo->filter = new stdClass();
     $pageInfo->filter->order = new stdClass();
     $pageInfo->filter->order->value = $app->getUserStateFromRequest($this->paramBase . ".filter_order", 'filter_order', 'a.pack_id', 'cmd');
     $pageInfo->filter->order->dir = $app->getUserStateFromRequest($this->paramBase . ".filter_order_Dir", 'filter_order_Dir', 'desc', 'word');
     $pageInfo->limit = new stdClass();
     $pageInfo->limit->value = $app->getUserStateFromRequest($this->paramBase . '.list_limit', 'limit', $app->getCfg('list_limit'), 'int');
     if (empty($pageInfo->limit->value)) {
         $pageInfo->limit->value = 500;
     }
     $pageInfo->limit->start = $app->getUserStateFromRequest($this->paramBase . '.limitstart', 'limitstart', 0, 'int');
     $pageInfo->filter->filter_partner = $app->getUserStateFromRequest($this->paramBase . ".filter_partner", 'filter_partner', '', 'int');
     $pageInfo->search = JString::strtolower($app->getUserStateFromRequest($this->paramBase . ".search", 'search', '', 'string'));
     $this->assignRef('pageInfo', $pageInfo);
     $filters = array();
     $searchMap = array('a.pack_id', 'a.pack_name', 'a.pack_data', 'a.pack_generator');
     if (!empty($pageInfo->search)) {
         $searchVal = '\'%' . $db->getEscaped($pageInfo->search, true) . '%\'';
         $filters[] = '(' . implode(' LIKE ' . $searchVal . ' OR ', $searchMap) . ' LIKE ' . $searchVal . ')';
     }
     if (!empty($filters)) {
         $filters = ' WHERE ' . implode(' AND ', $filters);
     } else {
         $filters = '';
     }
     $order = '';
     if (!empty($pageInfo->filter->order->value)) {
         $order = ' ORDER BY ' . $pageInfo->filter->order->value . ' ' . $pageInfo->filter->order->dir;
     }
     $query = ' FROM ' . hikaserial::table('pack') . ' AS a ' . $filters . $order;
     $db->setQuery('SELECT * ' . $query, (int) $pageInfo->limit->start, (int) $pageInfo->limit->value);
     $rows = $db->loadObjectList();
     if (!empty($pageInfo->search)) {
         $rows = hikaserial::search($pageInfo->search, $rows, 'pack_id');
     }
     $this->assignRef('rows', $rows);
     $db->setQuery('SELECT COUNT(*)' . $query);
     $pageInfo->elements = new stdClass();
     $pageInfo->elements->total = $db->loadResult();
     $pageInfo->elements->page = count($rows);
     $query = 'SELECT serial_pack_id, serial_status, COUNT(serial_id) AS counter FROM ' . hikaserial::table('serial') . ' GROUP BY serial_pack_id, serial_status ORDER BY serial_pack_id, serial_status';
     $db->setQuery($query);
     $dbcounters = $db->loadObjectList();
     $counters = array();
     foreach ($dbcounters as $counter) {
         if (!isset($counters[$counter->serial_pack_id])) {
             $counters[$counter->serial_pack_id] = array();
         }
         $counters[$counter->serial_pack_id][$counter->serial_status] = $counter->counter;
     }
     unset($dbcounters);
     $this->assignRef('counters', $counters);
     jimport('joomla.html.pagination');
     if ($pageInfo->limit->value == 500) {
         $pageInfo->limit->value = 100;
     }
     $pagination = new JPagination($pageInfo->elements->total, $pageInfo->limit->start, $pageInfo->limit->value);
     $this->assignRef('pagination', $pagination);
     $doOrdering = !$filterType;
     $this->assignRef('doOrdering', $doOrdering);
     if ($doOrdering) {
         $ordering = new stdClass();
         $ordering->ordering = false;
         $ordering->orderUp = 'orderup';
         $ordering->orderDown = 'orderdown';
         $ordering->reverse = false;
         if ($pageInfo->filter->order->value == 'a.ordering') {
             $ordering->ordering = true;
             if ($pageInfo->filter->order->dir == 'desc') {
                 $ordering->orderUp = 'orderdown';
                 $ordering->orderDown = 'orderup';
                 $ordering->reverse = true;
             }
         }
         $this->assignRef('ordering', $ordering);
     }
     $this->assignRef('singleSelection', $singleSelection);
     $this->assignRef('confirm', $confirm);
     $this->assignRef('elemStruct', $elemStruct);
     $this->assignRef('pageInfo', $pageInfo);
 }
Пример #2
0
 public function listing()
 {
     $app = JFactory::getApplication();
     $db = JFactory::getDBO();
     $fieldsClass = hikaserial::get('shop.class.field');
     $fields = $fieldsClass->getData('backend_listing', 'user', false);
     $singleSelection = JRequest::getVar('single', false);
     $confirm = JRequest::getVar('confirm', true, '', 'boolean');
     $elemStruct = array('user_email', 'user_cms_id', 'name', 'username', 'email');
     $pageInfo = new stdClass();
     $pageInfo->filter = new stdClass();
     $pageInfo->filter->order = new stdClass();
     $pageInfo->limit = new stdClass();
     $pageInfo->elements = new stdClass();
     $pageInfo->search = $app->getUserStateFromRequest($this->paramBase . ".search", 'search', '', 'string');
     $pageInfo->filter->order->value = $app->getUserStateFromRequest($this->paramBase . ".filter_order", 'filter_order', 'a.user_id', 'cmd');
     $pageInfo->filter->order->dir = $app->getUserStateFromRequest($this->paramBase . ".filter_order_Dir", 'filter_order_Dir', 'desc', 'word');
     $pageInfo->limit->value = $app->getUserStateFromRequest($this->paramBase . '.list_limit', 'limit', $app->getCfg('list_limit'), 'int');
     if (empty($pageInfo->limit->value)) {
         $pageInfo->limit->value = 500;
     }
     $pageInfo->limit->start = $app->getUserStateFromRequest($this->paramBase . '.limitstart', 'limitstart', 0, 'int');
     $pageInfo->filter->filter_partner = $app->getUserStateFromRequest($this->paramBase . ".filter_partner", 'filter_partner', '', 'int');
     $filters = array();
     $searchMap = array('a.user_id', 'a.user_email', 'b.username', 'b.email', 'b.name');
     foreach ($fields as $field) {
         $searchMap[] = 'a.' . $field->field_namekey;
     }
     if (!empty($pageInfo->search)) {
         if (!HIKASHOP_J30) {
             $searchVal = '\'%' . $db->getEscaped(JString::strtolower($pageInfo->search), true) . '%\'';
         } else {
             $searchVal = '\'%' . $db->escape(JString::strtolower($pageInfo->search), true) . '%\'';
         }
         $filters[] = '(' . implode(' LIKE ' . $searchVal . ' OR ', $searchMap) . ' LIKE ' . $searchVal . ')';
     }
     $order = '';
     if (!empty($pageInfo->filter->order->value)) {
         $order = ' ORDER BY ' . $pageInfo->filter->order->value . ' ' . $pageInfo->filter->order->dir;
     }
     if (!empty($filters)) {
         $filters = ' WHERE ' . implode(' AND ', $filters);
     } else {
         $filters = '';
     }
     $query = ' FROM ' . hikaserial::table('user', 'shop') . ' AS a LEFT JOIN ' . hikaserial::table('users', false) . ' AS b ON a.user_cms_id = b.id ' . $filters . $order;
     $db->setQuery('SELECT a.*,b.*' . $query, (int) $pageInfo->limit->start, (int) $pageInfo->limit->value);
     $rows = $db->loadObjectList();
     $fieldsClass->handleZoneListing($fields, $rows);
     if (!empty($rows)) {
         foreach ($rows as $k => $row) {
             if (!empty($row->user_params)) {
                 $rows[$k]->user_params = unserialize($row->user_params);
             }
         }
     }
     if (!empty($pageInfo->search)) {
         $rows = hikaserial::search($pageInfo->search, $rows, 'user_id');
     }
     $db->setQuery('SELECT COUNT(*)' . $query);
     $pageInfo->elements->total = $db->loadResult();
     $pageInfo->elements->page = count($rows);
     jimport('joomla.html.pagination');
     if ($pageInfo->limit->value == 500) {
         $pageInfo->limit->value = 100;
     }
     $pagination = new JPagination($pageInfo->elements->total, $pageInfo->limit->start, $pageInfo->limit->value);
     $this->assignRef('rows', $rows);
     $this->assignRef('singleSelection', $singleSelection);
     $this->assignRef('confirm', $confirm);
     $this->assignRef('elemStruct', $elemStruct);
     $this->assignRef('pageInfo', $pageInfo);
     $this->assignRef('pagination', $pagination);
     $this->assignRef('fieldsClass', $fieldsClass);
     $this->assignRef('fields', $fields);
 }
Пример #3
0
 public function select()
 {
     $app = JFactory::getApplication();
     $db = JFactory::getDBO();
     hikaserial::setTitle(JText::_(self::name), self::icon, self::ctrl);
     $config = hikaserial::config();
     $this->assignRef('config', $config);
     $shopConfig = hikaserial::config(false);
     $this->assignRef('shopConfig', $shopConfig);
     $serialStatusType = hikaserial::get('type.serial_status');
     $this->assignRef('serialStatusType', $serialStatusType);
     $packType = hikaserial::get('type.pack');
     $this->assignRef('packType', $packType);
     $filterType = $app->getUserStateFromRequest($this->paramBase . ".filter_type", 'filter_type', 0, 'int');
     $singleSelection = JRequest::getVar('single', false);
     $this->assignRef('singleSelection', $singleSelection);
     $confirm = JRequest::getVar('confirm', true);
     $this->assignRef('confirm', $confirm);
     $elemStruct = array('serial_data', 'serial_id', 'serial_pack_id', 'serial_status', 'pack_name');
     $this->assignRef('elemStruct', $elemStruct);
     $cfg = array('table' => 'serial', 'main_key' => 'serial_id', 'order_sql_value' => 'a.serial_id');
     $manage = true;
     // TODO
     $this->assignRef('manage', $manage);
     $manage_shop_order = hikaserial::isAllowed($shopConfig->get('acl_order_manage', 'all'));
     $this->assignRef('manage_shop_order', $manage_shop_order);
     $manage_shop_user = hikaserial::isAllowed($shopConfig->get('acl_user_manage', 'all'));
     $this->assignRef('manage_shop_user', $manage_shop_user);
     $pageInfo = new stdClass();
     $filters = array();
     $pageInfo->filter = new stdClass();
     $pageInfo->filter->serial_status = $app->getUserStateFromRequest($this->paramBase . ".filter_status", 'filter_status', '', 'string');
     $pageInfo->filter->pack = $app->getUserStateFromRequest($this->paramBase . ".filter_pack", 'filter_pack', '', 'string');
     $pageInfo->filter->order = new stdClass();
     $pageInfo->filter->order->value = $app->getUserStateFromRequest($this->paramBase . ".filter_order", 'filter_order', $cfg['order_sql_value'], 'cmd');
     $pageInfo->filter->order->dir = $app->getUserStateFromRequest($this->paramBase . ".filter_order_Dir", 'filter_order_Dir', 'asc', 'word');
     $pageInfo->limit = new stdClass();
     $pageInfo->limit->value = $app->getUserStateFromRequest($this->paramBase . '.list_limit', 'limit', $app->getCfg('list_limit'), 'int');
     if (empty($pageInfo->limit->value)) {
         $pageInfo->limit->value = 500;
     }
     if (JRequest::getVar('search') != $app->getUserState($this->paramBase . ".search")) {
         $app->setUserState($this->paramBase . '.limitstart', 0);
         $pageInfo->limit->start = 0;
     } else {
         $pageInfo->limit->start = $app->getUserStateFromRequest($this->paramBase . '.limitstart', 'limitstart', 0, 'int');
     }
     $pageInfo->search = JString::strtolower($app->getUserStateFromRequest($this->paramBase . ".search", 'search', '', 'string'));
     $this->assignRef('pageInfo', $pageInfo);
     $filters = array();
     $searchMap = array('a.serial_id', 'a.serial_data', 'a.serial_status', 'b.pack_name', 'd.username');
     if (!empty($pageInfo->search)) {
         $searchVal = '\'%' . $db->getEscaped(JString::strtolower($pageInfo->search), true) . '%\'';
         $filters[] = '(' . implode(' LIKE ' . $searchVal . ' OR ', $searchMap) . ' LIKE ' . $searchVal . ')';
     }
     if (!empty($pageInfo->filter->serial_status)) {
         $filters[] = ' a.serial_status = ' . $db->quote($pageInfo->filter->serial_status);
     }
     if (!empty($pageInfo->filter->pack)) {
         if ((int) $pageInfo->filter->pack > 0) {
             $filters[] = ' b.pack_id = ' . (int) $pageInfo->filter->pack;
         } else {
             $filters[] = ' b.pack_name = ' . $db->quote($pageInfo->filter->pack);
         }
     }
     if (!empty($filters)) {
         $filters = ' WHERE ' . implode(' AND ', $filters);
     } else {
         $filters = '';
     }
     $order = '';
     if (!empty($pageInfo->filter->order->value)) {
         $order = ' ORDER BY ' . $pageInfo->filter->order->value . ' ' . $pageInfo->filter->order->dir;
     }
     $query = 'FROM ' . hikaserial::table($cfg['table']) . ' AS a INNER JOIN ' . hikaserial::table('pack') . ' AS b ON a.serial_pack_id = b.pack_id LEFT JOIN ' . hikaserial::table('shop.user') . ' AS c ON a.serial_user_id = c.user_id LEFT JOIN ' . hikaserial::table('users', false) . ' AS d ON c.user_cms_id = d.id LEFT JOIN ' . hikaserial::table('shop.order') . ' AS e ON a.serial_order_id = e.order_id ' . $filters . $order;
     $db->setQuery('SELECT * ' . $query, (int) $pageInfo->limit->start, (int) $pageInfo->limit->value);
     $rows = $db->loadObjectList();
     if (!empty($pageInfo->search)) {
         $rows = hikaserial::search($pageInfo->search, $rows, $cfg['main_key']);
     }
     $this->assignRef('rows', $rows);
     JPluginHelper::importPlugin('hikaserial');
     $dispatcher = JDispatcher::getInstance();
     $dispatcher->trigger('onDisplaySerials', array(&$rows, 'back-serial-listing'));
     $db->setQuery('SELECT COUNT(*) ' . $query);
     $pageInfo->elements = new stdClass();
     $pageInfo->elements->total = $db->loadResult();
     $pageInfo->elements->page = count($rows);
     jimport('joomla.html.pagination');
     if ($pageInfo->limit->value == 500) {
         $pageInfo->limit->value = 100;
     }
     $pagination = new JPagination($pageInfo->elements->total, $pageInfo->limit->start, $pageInfo->limit->value);
     $this->assignRef('pagination', $pagination);
     $doOrdering = !$filterType;
     $this->assignRef('doOrdering', $doOrdering);
     if ($doOrdering) {
         $ordering = new stdClass();
         $ordering->ordering = false;
         $ordering->orderUp = 'orderup';
         $ordering->orderDown = 'orderdown';
         $ordering->reverse = false;
         if ($pageInfo->filter->order->value == 'a.ordering') {
             $ordering->ordering = true;
             if ($pageInfo->filter->order->dir == 'desc') {
                 $ordering->orderUp = 'orderdown';
                 $ordering->orderDown = 'orderup';
                 $ordering->reverse = true;
             }
         }
         $this->assignRef('ordering', $ordering);
     }
 }