예제 #1
0
파일: table.php 프로젝트: nikshade/fabrik21
 /**
  * Display the list of tables
  */
 function display()
 {
     $app =& JFactory::getApplication();
     $db =& JFactory::getDBO();
     $document =& JFactory::getDocument();
     $user =& JFactory::getUser();
     $newFilterTable = JRequest::getVar('filter_table');
     $document->addStyleDeclaration("\t.icon-32-search \t\t{ background-image: url(templates/" . $app->getTemplate() . "/images/toolbar/icon-32-search.png); }");
     $context = 'com_fabrik.table.list.';
     $filter_order = $app->getUserStateFromRequest($context . 'filter_order', 'filter_order', 't.label', 'cmd');
     $filter_order_Dir = $app->getUserStateFromRequest($context . 'filter_order_Dir', 'filter_order_Dir', '', 'word');
     $limit = $app->getUserStateFromRequest($context . 'limit', 'limit', $app->getCfg('list_limit'), 'int');
     $limitstart = $app->getUserStateFromRequest($context . 'limitstart', 'limitstart', 0, 'int');
     $filter_table = $app->getUserStateFromRequest($context . "filter_table", 'filter_table', '');
     $selPackage = $app->getUserStateFromRequest($context . "package", 'packages', '');
     // table ordering
     $lists['order_Dir'] = $filter_order_Dir;
     $lists['order'] = $filter_order;
     $where = array();
     if ($selPackage != '') {
         $db->setQuery("SELECT tables FROM #__fabrik_packages WHERE id = " . (int) $selPackage);
         $tables = $db->loadResult();
         echo $db->getErrorMsg();
         if ($tables != '') {
             $where[] = " #__fabrik_tables.id IN (" . $tables . ") ";
         } else {
             $where[] = " #__fabrik_tables.id IN (0) ";
         }
     }
     if ($filter_table != '') {
         $where[] = " label LIKE '%{$filter_table}%' ";
     }
     if ($user->gid <= 24) {
         $where[] = " private = '0'";
     }
     $where = count($where) ? ' WHERE ' . implode(' AND ', $where) : '';
     $orderby = ' ORDER BY ' . $filter_order . ' ' . $filter_order_Dir;
     // get the total number of records
     $db->setQuery("SELECT count(*) FROM #__fabrik_tables {$where}");
     $total = $db->loadResult();
     echo $db->getErrorMsg();
     jimport('joomla.html.pagination');
     $pageNav = new JPagination($total, $limitstart, $limit);
     $sql = "SELECT *, u.name AS editor, t.id AS id FROM #__fabrik_tables AS t" . "\n LEFT JOIN #__users AS u ON t.checked_out = u.id " . " {$where} {$orderby}";
     $db->setQuery($sql, $pageNav->limitstart, $pageNav->limit);
     $rows = $db->loadObjectList();
     $lists['filter_table'] = '<input type="text" value="' . $filter_table . '" name="filter_table" onblur="document.adminForm.submit();" />';
     //get list of packages
     $db->setQuery("SELECT id AS value, label AS text FROM #__fabrik_packages");
     $packages = array_merge(array(JHTML::_('select.option', '', '- ' . JText::_('SELECT PACKAGE') . ' -')), $db->loadObjectList());
     $lists['packages'] = JHTML::_('select.genericlist', $packages, 'packages', 'class="inputbox" onchange="document.adminForm.submit();"', 'value', 'text', $selPackage);
     $db->setQuery("SELECT DISTINCT(t.id) AS id, fg.group_id AS group_id\nFROM #__fabrik_tables AS t inner\nJOIN #__fabrik_formgroup AS fg ON t.form_id = fg.form_id");
     $lists['table_groups'] = $db->loadObjectList('id');
     $format = JRequest::getVar('format', 'html');
     if ($format == 'csv') {
         $this->tableid = JRequest::getVar('tableid', 0);
         $tableModel =& JModel::getInstance('Table', 'FabrikModel');
         $tableModel->setId($this->tableid);
         $this->table =& $tableModel->getTable();
         $document =& JFactory::getDocument();
         $viewName = JRequest::getVar('view', 'form', 'default', 'cmd');
         $viewType = $document->getType();
         // Set the default view name from the Request
         $view =& $this->getView($viewName, $viewType);
         $view->setModel($tableModel, true);
         $view->display();
     } else {
         require_once JPATH_COMPONENT . DS . 'views' . DS . 'table.php';
         FabrikViewTable::show($rows, $pageNav, $lists);
     }
 }