primo commit
This commit is contained in:
224
administrator/components/com_tabulizer/models/rulesetarchive.php
Normal file
224
administrator/components/com_tabulizer/models/rulesetarchive.php
Normal file
@ -0,0 +1,224 @@
|
||||
<?php
|
||||
/**
|
||||
* @version 6.2.6 tabulizer $
|
||||
* @package tabulizer
|
||||
* @copyright Copyright © 2011 - All rights reserved.
|
||||
* @license GNU/GPL
|
||||
* @author Dimitrios Mourloukos
|
||||
* @author mail info@alterora.gr
|
||||
* @website www.tabulizer.com
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
// no direct access
|
||||
defined('_JEXEC') or die('Restricted access');
|
||||
|
||||
jimport( 'joomla.application.component.model' );
|
||||
|
||||
TabulizerPath::requireLib('ruleset','admin');
|
||||
|
||||
class tabulizerModelRulesetarchive extends JModelLegacy {
|
||||
var $archive_filename = null;
|
||||
var $ruleset_archive = null;
|
||||
var $ruleset_name = null;
|
||||
var $css = null;
|
||||
var $limit = null;
|
||||
var $limitstart = null;
|
||||
var $total_count = null;
|
||||
|
||||
function __construct(){
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
function loadRulesetArchive($filename, $limit=0, $limitstart=0) {
|
||||
$this->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);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user