archive_filename = $filename; $ruleset = new Ruleset(); $ruleset_archive = $ruleset->getRulesets($this->archive_filename,$limit,$limitstart,$total_count); if (!empty($ruleset_archive)) { $this->ruleset_archive = $ruleset_archive; $this->ruleset_archive['filename'] = $this->archive_filename; $this->limit = $limit; $this->limitstart = $limitstart; $this->total_count = $total_count; } return $this->ruleset_archive; } function getRulesetArchive() { if (empty($this->ruleset_archive)) { $this->loadRulesetArchive($this->archive_filename); } return $this->ruleset_archive; } function getPagination() { $pagination = null; if (!empty($this->limit) && !empty($this->total_count)) { if ($this->total_count > $this->limit) { jimport('joomla.html.pagination'); $pagination = new JPagination($this->total_count, $this->limitstart, $this->limit ); } } return $pagination; } function getReturnURLs(&$urls) { $jinput = JFactory::getApplication()->input; $option = $jinput->getCmd('option'); $urls = array(); $url = $jinput->getString('archives_return_url',''); $urls['archives'] = empty($url)?str_replace('&','&',JRoute::_('index.php?option='.$option.'&task=viewrulesetarchives')):urldecode($url); $url = str_replace('&','&',JRoute::_('index.php?option='.$option.'&task=viewrulesetarchive&archive_filename='.$this->archive_filename.'&limit='.$this->limit.'&limitstart='.$this->limitstart)); $urls['archive'] = $url; } function saveRulesetArchive($ruleset_archive) { $ruleset = new Ruleset(); return $ruleset->saveRulesetArchive($ruleset_archive); } function deleteRulesetArchive($ruleset_files) { $ruleset = new Ruleset(); return $ruleset->deleteRulesetArchive($ruleset_files); } function getAllRulesetArchiveNames($exclude_archive_names = array()) { $ruleset = new Ruleset(); return $ruleset->getAllRulesetArchiveNames($exclude_archive_names); } function getAllRulesetArchiveFilenames($exclude_archive_filenames = array()) { $ruleset = new Ruleset(); return $ruleset->getAllRulesetArchiveFilenames($exclude_archive_filenames); } function getAllRulesetNames($exclude_ruleset_names = array()) { $ruleset = new Ruleset(); return $ruleset->getAllRulesetNames($exclude_ruleset_names); } function getAllRulesetTitles($exclude_ruleset_titles = array()) { $ruleset = new Ruleset(); return $ruleset->getAllRulesetTitles($exclude_ruleset_titles); } function getRecommendedName($seed = '') { $recommended_ruleset_name = ''; $filename = $this->ruleset_archive['filename']; $rulesets = $this->ruleset_archive['rulesets']; $basename = 'ruleset'; $dot = stripos($filename, '.xml'); if ($dot !== false) { $basename_clean = strtolower(str_replace(array('-','.','_',' '), array('_','_','_',''), substr($filename,0,$dot))); if ($basename_clean != '') $basename = $basename_clean; } if (empty($rulesets)) { $recommended_ruleset_name = $basename . '_1'; } else { $num_of_rulesets = count($rulesets)+1; for ($i=1;$i<=$num_of_rulesets;$i++) { $recommended_ruleset_name = $basename . '_' . $i; if (isset($rulesets[$recommended_ruleset_name])) continue; else break; } } return $recommended_ruleset_name; } function loadCSSFile($css_filename, $archive_filename, $ruleset_name) { $this->css = array(); $this->css['css_filename'] = $css_filename; $css_path = TabulizerPath::getFilePath($css_filename, 'css'); $this->css['css_filepath'] = $css_path; if (file_exists($css_path)) { $this->css['new'] = false; $this->css['css_contents'] = file_get_contents($css_path); } else { $this->css['new'] = true; $this->css['css_contents'] = ''; } $this->css['archive_filename'] = $archive_filename; $this->css['ruleset_name'] = $ruleset_name; $rules_path = TabulizerPath::getFilePath($archive_filename, 'rules'); if (file_exists($rules_path)) { $this->css['rulesets'] = $this->loadRulesetArchive($archive_filename); } $this->css['css_skeleton'] = ''; if (!empty($this->css['rulesets']['rulesets'])) { if (!empty($ruleset_name)) { $skeleton_rulesets = array($ruleset_name => $this->css['rulesets']['rulesets'][$ruleset_name]); } else { $skeleton_rulesets = $this->css['rulesets']['rulesets']; } $this->css['css_skeleton'] = $this->generateCSSSkeleton($skeleton_rulesets); } } function generateCSSSkeleton($rulesets) { $css_code = ''; $suffix_sep = '-'; $css_lines = array(); foreach ($rulesets as $ruleset_name => $ruleset) { $css_code .= "'\\n'+'\\n'+'/* {$ruleset_name} */'+'\\n'+'\\n'+\n"; $table_selector = trim('table.tabtable'.$suffix_sep.$ruleset['suffix']); $tr_selectors = array('tr.tabrow'); $td_selectors = array('td.tabcol'); $css_line = "'{$table_selector} {}'+'\\n'+\n"; if (!in_array($css_line, $css_lines)) { $css_code .= $css_line; $css_lines[] = $css_line; } foreach ($ruleset['rules'] as $rule) { if (empty($rule['style'])) continue; if ($rule['element'] == 'row') { $selector = trim('tr.'.$rule['style']); if (!in_array($selector, $tr_selectors)) { $tr_selectors[] = $selector; } } else { $selector = trim('td.'.$rule['style']); if (!in_array($selector, $td_selectors)) $td_selectors[] = $selector; } } foreach ($tr_selectors as $tr_selector) { $css_line = "'{$table_selector} {$tr_selector} {}'+'\\n'+\n"; if (!in_array($css_line, $css_lines)) { $css_code .= $css_line; $css_lines[] = $css_line; } foreach ($td_selectors as $td_selector) { $css_line = "'{$table_selector} {$tr_selector} {$td_selector} {}'+'\\n'+\n"; if (!in_array($css_line, $css_lines)) { $css_code .= $css_line; $css_lines[] = $css_line; } } } } if (!empty($css_code)) $css_code .= "'';\n"; return $css_code; } function getCSSFile() { return $this->css; } function saveCSSFile($css_filename, $css_contents) { $css_path = TabulizerPath::getFilePath($css_filename, 'css'); return file_put_contents($css_path, $css_contents); } } ?>