/** * Returns an ezcsseStyle object for given XML string * * @param string $source * @return ezcsseStyle */ static function createFromXML($source) { $newObj = new ezcsseStyle(); if ($source) { $dom = new DOMDOcument(); $success = $dom->loadXML($source); $root = $dom->documentElement; if ($root->hasAttributes()) { foreach ($root->attributes as $attr) { $newObj->setAttribute($attr->name, $attr->value); } } foreach ($root->childNodes as $node) { if ($node->nodeType == XML_ELEMENT_NODE && $node->nodeName == 'rule') { $newObj->addRule(ezcsseRule::createFromXML($node)); } elseif ($node->nodeType == XML_ELEMENT_NODE) { $newObj->setAttribute($node->nodeName, $node->nodeValue); } } } return $newObj; }
/** * Returns current object as a CSS string * * @return string A CSS string */ public function toCSS() { $property = ''; if ($this->attribute('value') != "") { $property = ezcsseStyle::tabIndent() . $this->attribute('name') . ": " . $this->attribute('value') . ";"; } return $property; }
/** * Returns a ezcsseStyle object for current style definition * * @return ezcsseStyle */ public function fetchStyleObject() { $style = ezcsseStyle::createFromXML($this->attribute('style')); return $style; }
/** * Returns a current rule object as CSS string * * @return string A CSS string */ public function toCSS() { $rule = $this->attribute('selector'); $rule .= ezcsseStyle::newLine(); $rule .= ezcsseStyle::lDelim(); $rule .= ezcsseStyle::newLine(); foreach ($this->attribute('properties') as $property) { $rule .= $property->toCSS(); $rule .= ezcsseStyle::newLine(); } $rule .= ezcsseStyle::rDelim(); $rule .= ezcsseStyle::newLine(); return $rule; }
/** * Restore site style to given version * * @static */ public static function restoreSiteStyle() { $params = self::getPostParams(); $siteStyleVerParam = isset($params['sitestyle_version']) ? $params['sitestyle_version'] : array(); $siteStyleVerID = isset($siteStyleVerParam['id']) ? $siteStyleVerParam['id'] : null; $objectID = isset($params['object_id']) ? $params['object_id'] : null; $siteStyleVersion = ezcsseSiteStyleVersion::fetchObject(ezcsseSiteStyleVersion::definition(), null, array('id' => $siteStyleVerID)); $siteStyle = ezcsseSiteStyle::fetchObject(ezcsseSiteStyle::definition(), null, array('id' => $siteStyleVersion->attribute('sitestyle_id'))); $currentVersion = $siteStyle->attribute('current_version'); $siteStyleDef = ezcsseSiteStyleDefinition::fetchObject(ezcsseSiteStyleDefinition::definition(), null, array('sitestyle_id' => $siteStyleVersion->attribute('sitestyle_id'), 'version' => $siteStyleVersion->attribute('version'))); $style = $siteStyleDef->attribute('style'); $newSiteStyleVersion = new ezcsseSiteStyleVersion(); $newSiteStyleVersion->setAttribute('sitestyle_id', $siteStyle->attribute('id')); $newSiteStyleVersion->setAttribute('version', $currentVersion + 1); $newSiteStyleVersion->setAttribute('created', time()); $newSiteStyleVersion->setAttribute('modified', time()); $newSiteStyleVersion->store(); $newSiteStyleDef = new ezcsseSiteStyleDefinition(); $newSiteStyleDef->setAttribute('sitestyle_id', $siteStyle->attribute('id')); $newSiteStyleDef->setAttribute('version', $currentVersion + 1); $newSiteStyleDef->setAttribute('style', $style); $newSiteStyleDef->store(); $siteStyle->setAttribute('current_version', $currentVersion + 1); $siteStyle->store(); $style = ezcsseStyle::createFromXML($style); if ($objectID) { eZContentCacheManager::clearTemplateBlockCache($objectID); } return $style->toJSON(); }