* @inherits Controller * @access public */ class pmTables extends Controller { /** * @param boolean debug */ public $debug = FALSE; /** * getting default list * @param string $httpData->PRO_UID (opional) */ public function index($httpData) { global $RBAC; $RBAC->requirePermissions('PM_SETUP_ADVANCE'); G::LoadClass('configuration'); $c = new Configurations(); $configPage = $c->getConfiguration('additionalTablesList', 'pageSize','',$_SESSION['USER_LOGGED']); $Config['pageSize'] = isset($configPage['pageSize']) ? $configPage['pageSize'] : 20; $this->includeExtJS('pmTables/list', $this->debug); $this->includeExtJS('pmTables/export', $this->debug); $this->setView('pmTables/list'); //assigning js variables $this->setJSVar('FORMATS',$c->getFormats()); $this->setJSVar('CONFIG', $Config); $this->setJSVar('PRO_UID', isset($_GET['PRO_UID'])? $_GET['PRO_UID'] : false); $this->setJSVar('_PLUGIN_SIMPLEREPORTS', $this->_getSimpleReportPluginDef()); if (isset($_SESSION['_cache_pmtables'])) { unset($_SESSION['_cache_pmtables']); } if (isset($_SESSION['ADD_TAB_UID'])) { unset($_SESSION['ADD_TAB_UID']); } //render content G::RenderPage('publish', 'extJs'); } /** * edit pmtable * @param string $httpData->id */ public function edit($httpData) { require_once PATH_CONTROLLERS . 'pmTablesProxy.php'; require_once 'classes/model/AdditionalTables.php'; G::loadClass('pmTable'); $additionalTables = new AdditionalTables(); $table = false; $addTabUid = isset($httpData->id) ? $httpData->id : false; $dataNumRows = 0; $repTabPluginPermissions = false; $columnsTypes = PmTable::getPropelSupportedColumnTypes(); $jsFile = isset($httpData->tableType) && $httpData->tableType == 'report' ? 'editReport' : 'edit'; $columnsTypesList = array(); foreach ($columnsTypes as $columnTypeName => $columnType) { $columnsTypesList[] = array($columnTypeName, $columnType); } if ($addTabUid) { $tableData = $additionalTables->getAllData($httpData->id, 0, 2); $dataNumRows = $tableData['count']; } if ($addTabUid !== false) { // if it is a edit request $tableFields = array(); $fieldsList = array(); $table = $additionalTables->load($addTabUid, true); //fix for backware compatibility $table['DBS_UID'] = $table['DBS_UID'] == null || $table['DBS_UID'] == '' ? 'workflow': $table['DBS_UID']; $_SESSION['ADD_TAB_UID'] = $addTabUid; //list dynaform fields if ($table['ADD_TAB_TYPE'] == 'NORMAL' || $table['ADD_TAB_TYPE'] == 'GRID') { $repTabPluginPermissions = $this->_getSimpleReportPluginDef(); } } $this->includeExtJS('pmTables/' . $jsFile); $this->setJSVar('ADD_TAB_UID', $addTabUid); $this->setJSVar('PRO_UID', isset($_GET['PRO_UID'])? $_GET['PRO_UID'] : false); $this->setJSVar('TABLE', $table); $this->setJSVar('dbg', isset($httpData->dbg)); $this->setJSVar('columnsTypes', $columnsTypesList); $this->setJSVar('dataNumRows', $dataNumRows); $this->setJSVar('_plugin_permissions', $repTabPluginPermissions); G::RenderPage('publish', 'extJs'); } /** * show pmTable data list * @param string $httpData->id */ function data($httpData) { require_once 'classes/model/AdditionalTables.php'; $additionalTables = new AdditionalTables(); $tableDef = $additionalTables->load($httpData->id, true); $this->includeExtJS('pmTables/data', $this->debug); $this->setJSVar('tableDef', $tableDef); //g::pr($tableDef['FIELDS']); G::RenderPage('publish', 'extJs'); } function export($httpData) { $this->includeExtJS('pmTables/export', $this->debug); //adding a javascript file .js $this->setView('pmTables/export'); //adding a html file .html. $toSend = Array(); $toSend['UID_LIST'] = $httpData->id; $this->setJSVar('EXPORT_TABLES', $toSend); G::RenderPage('publish', 'extJs'); } public function streamExported($httpData) { $PUBLIC_ROOT_PATH = PATH_DATA.'sites'.PATH_SEP.SYS_SYS.PATH_SEP.'public'.PATH_SEP; $sFileName = $httpData->f; $realPath = $PUBLIC_ROOT_PATH . $sFileName; G::streamFile ( $realPath, true ); unlink($realPath); } /** * - protected functions (non-callable from controller outside) - */ /** * Get simple report plugin definition * @param $type */ protected function _getSimpleReportPluginDef() { global $G_TMP_MENU; $oMenu = new Menu(); $oMenu->load('setup'); $repTabPluginPermissions = false; foreach( $oMenu->Options as $i=>$option) { if ($oMenu->Types[$i] == 'private' && $oMenu->Id[$i] == 'PLUGIN_REPTAB_PERMISSIONS') { $repTabPluginPermissions = array(); $repTabPluginPermissions['label'] = $oMenu->Labels[$i]; $repTabPluginPermissions['fn'] = $oMenu->Options[$i]; break; } } return $repTabPluginPermissions; } }