Пример #1
0
 /**
  * @param eZContentObjectAttribute $contentObjectAttribute the attribute to serialize
  * @param eZContentClassAttribute $contentClassAttribute the content class of the attribute to serialize
  * @return array
  */
 public static function getAttributeContent( eZContentObjectAttribute $contentObjectAttribute, eZContentClassAttribute $contentClassAttribute )
 {
     $url = eZURL::fetch( $contentObjectAttribute->attribute( 'data_int' ) );
     return array(
         'content' => array(
             'url' => ( $url instanceof eZURL ) ? $url->attribute( 'url' ) : null,
             'text' => $contentObjectAttribute->attribute( 'data_text' ),
         ),
         'has_rendered_content' => false,
         'rendered' => null,
     );
 }
 static function handleInlineNode($child, $generator, $prevLineBreak = false)
 {
     $paragraphParameters = array();
     $imageArray = array();
     switch ($child->localName) {
         case "line":
             // @todo: (Alex) check why this is needed here and not after the next line
             if ($prevLineBreak) {
                 $paragraphParameters[] = array(eZOOGenerator::LINE, '');
             }
             // Todo: support inline tags
             $paragraphParameters[] = array(eZOOGenerator::TEXT, $child->textContent);
             foreach ($child->childNodes as $lineChild) {
                 if ($lineChild->localName == 'embed') {
                     // Only support objects of image class for now
                     $object = eZContentObject::fetch($lineChild->getAttribute("object_id"));
                     if ($object && $object->canRead()) {
                         $classIdentifier = $object->attribute("class_identifier");
                         // Todo: read class identifiers from configuration
                         if ($classIdentifier == "image") {
                             $imageSize = $lineChild->getAttribute('size');
                             if ($imageSize == "") {
                                 $imageSize = "large";
                             }
                             $imageAlignment = $lineChild->getAttribute('align');
                             if ($imageAlignment == "") {
                                 $imageAlignment = "center";
                             }
                             $dataMap = $object->dataMap();
                             $imageAttribute = $dataMap['image'];
                             $imageHandler = $imageAttribute->content();
                             $originalImage = $imageHandler->attribute('original');
                             $fileHandler = eZClusterFileHandler::instance($originalImage['url']);
                             $uniqueFile = $fileHandler->fetchUnique();
                             $displayImage = $imageHandler->attribute($imageSize);
                             $displayWidth = $displayImage['width'];
                             $displayHeight = $displayImage['height'];
                             $imageArray[] = array("FileName" => $uniqueFile, "Alignment" => $imageAlignment, "DisplayWidth" => $displayWidth, "DisplayHeight" => $displayHeight);
                         }
                     } else {
                         eZDebug::writeError("Image (object_id = " . $child->getAttribute('object_id') . " ) could not be used (does not exist or due to insufficient privileges)");
                     }
                 }
             }
             break;
             // text nodes
         // text nodes
         case "":
             $paragraphParameters[] = array(eZOOGenerator::TEXT, $child->textContent);
             break;
         case "link":
             $href = $child->getAttribute('href');
             if (!$href) {
                 $url_id = $child->getAttribute('url_id');
                 if ($url_id) {
                     $eZUrl = eZURL::fetch($url_id);
                     if (is_object($eZUrl)) {
                         $href = $eZUrl->attribute('url');
                     }
                 }
             }
             $paragraphParameters[] = array(eZOOGenerator::LINK, $href, $child->textContent);
             break;
         case "emphasize":
         case "strong":
             $style = $child->localName == 'strong' ? 'bold' : 'italic';
             $paragraphParameters[] = array(eZOOGenerator::STYLE_START, $style);
             foreach ($child->childNodes as $inlineNode) {
                 $return = self::handleInlineNode($inlineNode);
                 $paragraphParameters = array_merge($paragraphParameters, $return['paragraph_parameters']);
             }
             $paragraphParameters[] = array(eZOOGenerator::STYLE_STOP);
             break;
         case "literal":
             $literalContent = $child->textContent;
             $literalContentArray = explode("\n", $literalContent);
             foreach ($literalContentArray as $literalLine) {
                 $generator->addParagraph("Preformatted_20_Text", htmlspecialchars($literalLine));
             }
             break;
         case "custom":
             $customTagName = $child->getAttribute('name');
             // Check if the custom tag is inline
             $ini = eZINI::instance('content.ini');
             $isInlineTagList = $ini->variable('CustomTagSettings', 'IsInline');
             $isInline = array_key_exists($customTagName, $isInlineTagList) && $isInlineTagList[$customTagName];
             // Handle inline custom tags
             if ($isInline) {
                 $paragraphParameters[] = array(eZOOGenerator::STYLE_START, "eZCustominline_20_{$customTagName}");
                 $paragraphParameters[] = array(eZOOGenerator::TEXT, $child->textContent);
                 $paragraphParameters[] = array(eZOOGenerator::STYLE_STOP);
             } else {
                 $GLOBALS['CustomTagStyle'] = "eZCustom_20_{$customTagName}";
                 foreach ($child->childNodes as $customParagraph) {
                     // Alex 2008-06-03: changed $level (3rd argument) to $prevLineBreak
                     self::handleNode($customParagraph, $generator, $prevLineBreak);
                 }
                 $GLOBALS['CustomTagStyle'] = false;
             }
             break;
         case "ol":
         case "ul":
             $listType = $child->localName == "ol" ? "ordered" : "unordered";
             $generator->startList($listType);
             foreach ($child->childNodes as $listItem) {
                 foreach ($listItem->childNodes as $childNode) {
                     if ($childNode->nodeType == XML_TEXT_NODE) {
                         $generator->addParagraph($childNode->textContent);
                     } else {
                         // Alex 2008-06-03: changed $level (3rd argument) to $prevLineBreak
                         self::handleNode($childNode, $generator, $prevLineBreak);
                     }
                 }
                 $generator->nextListItem();
             }
             $generator->endList();
             break;
         case "table":
             $generator->startTable();
             $rows = 1;
             foreach ($child->childNodes as $row) {
                 foreach ($row->childNodes as $cell) {
                     // Set the correct col span
                     $colSpan = $cell->getAttribute("colspan");
                     if (is_numeric($colSpan)) {
                         $generator->setCurrentColSpan($colSpan);
                     }
                     // Check for table header
                     if ($cell->localName == 'th' and $rows == 1) {
                         $generator->setIsInsideTableHeading(true);
                     }
                     // If the cell is empty, create a dummy so the cell is properly exported
                     if (!$cell->hasChildNodes()) {
                         $dummy = $cell->ownerDocument->createElement("paragraph");
                         $cell->appendChild($dummy);
                         // Alex 2008-06-03: changed $level (3rd argument) to $prevLineBreak
                         eZOOConverter::handleNode($dummy, $generator, $prevLineBreak);
                     }
                     eZDebug::writeDebug($cell->ownerDocument->saveXML($cell), 'ezxmltext table cell');
                     foreach ($cell->childNodes as $cellNode) {
                         // Alex 2008-06-03: changed $level (3rd argument) to $prevLineBreak
                         self::handleNode($cellNode, $generator, $prevLineBreak);
                     }
                     $generator->nextCell();
                 }
                 $generator->nextRow();
                 ++$rows;
             }
             $generator->endTable();
             break;
         case 'object':
         case 'embed':
             $objectID = $child->localName == 'embed' ? $child->getAttribute("object_id") : $child->getAttribute("id");
             // Only support objects of image class for now
             $object = eZContentObject::fetch($objectID);
             if ($object && $object->canRead()) {
                 $classIdentifier = $object->attribute("class_identifier");
                 // Todo: read class identifiers from configuration
                 if ($classIdentifier == "image") {
                     $imageSize = $child->getAttribute('size');
                     $imageAlignment = $child->getAttribute('align');
                     $dataMap = $object->dataMap();
                     $imageAttribute = $dataMap['image'];
                     $imageHandler = $imageAttribute->content();
                     $originalImage = $imageHandler->attribute('original');
                     $fileHandler = eZClusterFileHandler::instance($originalImage['url']);
                     $uniqueFile = $fileHandler->fetchUnique();
                     $displayImage = $imageHandler->attribute($imageSize);
                     $displayWidth = $displayImage['width'];
                     $displayHeight = $displayImage['height'];
                     $imageArray[] = array("FileName" => $uniqueFile, "Alignment" => $imageAlignment, "DisplayWidth" => $displayWidth, "DisplayHeight" => $displayHeight);
                 }
             } else {
                 eZDebug::writeError("Image (object_id = " . $child->getAttribute('object_id') . " ) could not be used (does not exist or insufficient privileges)");
             }
             break;
         default:
             eZDebug::writeError("Unsupported node at this level" . $child->localName);
     }
     return array("paragraph_parameters" => $paragraphParameters, "image_array" => $imageArray);
 }
 function unserializeContentObjectAttribute($package, $objectAttribute, $attributeNode)
 {
     $urlNode = $attributeNode->getElementsByTagName('url')->item(0);
     if (is_object($urlNode)) {
         unset($url);
         $url = urldecode($urlNode->textContent);
         $urlID = eZURL::registerURL($url);
         if ($urlID) {
             $urlObject = eZURL::fetch($urlID);
             $urlObject->setAttribute('original_url_md5', $urlNode->getAttribute('original-url-md5'));
             $urlObject->setAttribute('is_valid', $urlNode->getAttribute('is-valid'));
             $urlObject->setAttribute('last_checked', $urlNode->getAttribute('last-checked'));
             $urlObject->setAttribute('created', time());
             $urlObject->setAttribute('modified', time());
             $urlObject->store();
             $objectAttribute->setAttribute('data_int', $urlID);
         }
     }
     $textNode = $attributeNode->getElementsByTagName('text')->item(0);
     if ($textNode) {
         $objectAttribute->setAttribute('data_text', $textNode->textContent);
     }
 }
Пример #4
0
 /**
  * Test scenario for issue #018211: URL datatype is not case sensitive
  *
  * @link http://issues.ez.no/18211
  * @group issue18211
  */
 public function testUrlCaseSensitivity()
 {
     $url = 'http://ez.no/EZPUBLISH';
     $urlId = eZURL::registerURL($url);
     $urlObject = eZURL::fetch($urlId);
     self::assertEquals($url, $urlObject->attribute('url'));
     unset($urlId, $urlObject);
     $url2 = 'http://ez.no/ezpublish';
     $url2Id = eZURL::registerURL($url2);
     $url2Object = eZURL::fetch($url2Id);
     self::assertEquals($url2, $url2Object->attribute('url'));
     self::assertEquals(md5($url2), $url2Object->attribute('original_url_md5'));
     unset($url2Id, $url2Object);
 }
Пример #5
0
 static function transformLinksToRemoteLinks(DOMNodeList $nodeList)
 {
     foreach ($nodeList as $node) {
         $linkID = $node->getAttribute('url_id');
         $isObject = $node->localName == 'object';
         $objectID = $isObject ? $node->getAttribute('id') : $node->getAttribute('object_id');
         $nodeID = $node->getAttribute('node_id');
         if ($linkID) {
             $urlObj = eZURL::fetch($linkID);
             if (!$urlObj) {
                 continue;
             }
             $url = $urlObj->attribute('url');
             $node->setAttribute('href', $url);
             $node->removeAttribute('url_id');
         } elseif ($objectID) {
             $object = eZContentObject::fetch($objectID, false);
             if (is_array($object)) {
                 $node->setAttribute('object_remote_id', $object['remote_id']);
             }
             if ($isObject) {
                 $node->removeAttribute('id');
             } else {
                 $node->removeAttribute('object_id');
             }
         } elseif ($nodeID) {
             $nodeData = eZContentObjectTreeNode::fetch($nodeID, false, false);
             if (is_array($nodeData)) {
                 $node->setAttribute('node_remote_id', $nodeData['remote_id']);
             }
             $node->removeAttribute('node_id');
         }
     }
 }
Пример #6
0
 static function fetchLinkList($contentObjectAttributeID, $contentObjectAttributeVersion, $asObject = true)
 {
     $linkList = array();
     $urlObjectLinkList = self::fetchLinkObjectList($contentObjectAttributeID, $contentObjectAttributeVersion, $asObject);
     foreach ($urlObjectLinkList as $urlObjectLink) {
         if ($asObject) {
             $linkID = $urlObjectLink->attribute('url_id');
             $linkList[] = eZURL::fetch($linkID);
         } else {
             $linkID = $urlObjectLink['url_id'];
             $linkList[] = $linkID;
         }
     }
     return $linkList;
 }
Пример #7
0
            break;
        case '3':
            $limit = 50;
            break;
        default:
            $limit = 10;
            break;
    }
} else {
    $limit = 10;
}
$offset = $Params['Offset'];
if (!is_numeric($offset)) {
    $offset = 0;
}
$url = eZURL::fetch($urlID);
if (!$url) {
    return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
$link = $url->attribute('url');
if (preg_match("/^(http:)/i", $link) or preg_match("/^(ftp:)/i", $link) or preg_match("/^(https:)/i", $link) or preg_match("/^(file:)/i", $link) or preg_match("/^(mailto:)/i", $link)) {
    // No changes
} else {
    $domain = getenv('HTTP_HOST');
    $protocol = eZSys::serverProtocol();
    $preFix = $protocol . "://" . $domain;
    $preFix .= eZSys::wwwDir();
    $link = preg_replace("/^\\//e", "", $link);
    $link = $preFix . "/" . $link;
}
$viewParameters = array('offset' => $offset, 'limit' => $limit);
 static function fetchLinkList( $contentObjectAttributeID, $contentObjectAttributeVersion, $asObject = true )
 {
     $linkList = array();
     $conditions = array( 'contentobject_attribute_id' => $contentObjectAttributeID );
     if ( $contentObjectAttributeVersion !== false )
         $conditions['contentobject_attribute_version'] = $contentObjectAttributeVersion;
     $urlObjectLinkList = eZPersistentObject::fetchObjectList( eZURLObjectLink::definition(),
                                                                null,
                                                                $conditions,
                                                                null,
                                                                null,
                                                                $asObject );
     foreach ( $urlObjectLinkList as $urlObjectLink )
     {
         if ( $asObject )
         {
             $linkID = $urlObjectLink->attribute( 'url_id' );
             $linkList[] = eZURL::fetch( $linkID );
         }
         else
         {
             $linkID = $urlObjectLink['url_id'];
             $linkList[] = $linkID;
         }
     }
     return $linkList;
 }