当前位置: 首页>>代码示例>>PHP>>正文


PHP eZContentObject::appendInputRelationList方法代码示例

本文整理汇总了PHP中eZContentObject::appendInputRelationList方法的典型用法代码示例。如果您正苦于以下问题:PHP eZContentObject::appendInputRelationList方法的具体用法?PHP eZContentObject::appendInputRelationList怎么用?PHP eZContentObject::appendInputRelationList使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在eZContentObject的用法示例。


在下文中一共展示了eZContentObject::appendInputRelationList方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: restoreXmlRelations

/**
 * Parses the XML for the attributes in $classAttributeIdentifiers, and fixes the relations for $object
 * @param eZContentObject $object
 * @param array $classAttributeIdentifiers
 * @return int The number of created relations
 */
function restoreXmlRelations(eZContentObject $object, array $classAttributeIdentifiers)
{
    $currentVersion = $object->currentVersion();
    $langMask = $currentVersion->attribute('language_mask');
    $languageList = eZContentLanguage::decodeLanguageMask($langMask, true);
    $languageList = $languageList['language_list'];
    // nothing to do if the object isn't translated
    if (count($languageList) < 2) {
        return 0;
    }
    $attributeArray = $object->fetchAttributesByIdentifier($classAttributeIdentifiers, $currentVersion->attribute('version'), $languageList);
    $embedRelationsCount = $object->relatedContentObjectCount(false, 0, array('AllRelations' => eZContentObject::RELATION_EMBED));
    $linkRelationsCount = $object->relatedContentObjectCount(false, 0, array('AllRelations' => eZContentObject::RELATION_LINK));
    $embeddedObjectIdArray = $linkedObjectIdArray = array();
    foreach ($attributeArray as $attribute) {
        $xmlText = eZXMLTextType::rawXMLText($attribute);
        $dom = new DOMDocument('1.0', 'utf-8');
        if (!$dom->loadXML($xmlText)) {
            continue;
        }
        // linked objects
        $linkedObjectIdArray = array_merge($linkedObjectIdArray, getRelatedObjectList($dom->getElementsByTagName('link')));
        // embedded objects
        $embeddedObjectIdArray = array_merge($embeddedObjectIdArray, getRelatedObjectList($dom->getElementsByTagName('embed')), getRelatedObjectList($dom->getElementsByTagName('embed-inline')));
    }
    $doCommit = false;
    $restoredRelations = 0;
    if (!empty($embeddedObjectIdArray)) {
        $object->appendInputRelationList($embeddedObjectIdArray, eZContentObject::RELATION_EMBED);
        $restoredRelations += count($embeddedObjectIdArray) - $embedRelationsCount;
        $doCommit = true;
    }
    if (!empty($linkedObjectIdArray)) {
        $object->appendInputRelationList($linkedObjectIdArray, eZContentObject::RELATION_LINK);
        $restoredRelations += count($linkedObjectIdArray) - $linkRelationsCount;
        $doCommit = true;
    }
    if ($doCommit) {
        $object->commitInputRelations($currentVersion->attribute('version'));
    }
    return $restoredRelations;
}
开发者ID:CG77,项目名称:ezpublish-legacy,代码行数:48,代码来源:restorexmlrelations.php

示例2: onPublish

 /**
  * Method triggered on publish for xml text datatype
  *
  * This method makes sure that links from all translations of an xml text
  * are registered in the ezurl_object_link table, and thus retained, if
  * previous versions of an object are removed.
  *
  * It also checks for embedded objects in other languages xml, and makes
  * sure the matching object relations are stored for the publish version.
  *
  * @param eZContentObjectAttribute $contentObjectAttribute
  * @param eZContentObject $object
  * @param array $publishedNodes
  * @return boolean
  */
 function onPublish($contentObjectAttribute, $object, $publishedNodes)
 {
     $currentVersion = $object->currentVersion();
     $langMask = $currentVersion->attribute('language_mask');
     // We find all translations present in the current version. We calculate
     // this from the language mask already present in the fetched version,
     // so no further round-trip to the DB is required.
     $languageList = eZContentLanguage::decodeLanguageMask($langMask, true);
     $languageList = $languageList['language_list'];
     // We want to have the class attribute identifier of the attribute
     // containing the current ezxmltext, as we then can use the more efficient
     // eZContentObject->fetchAttributesByIdentifier() to get the data
     $identifier = $contentObjectAttribute->attribute('contentclass_attribute_identifier');
     $attributeArray = $object->fetchAttributesByIdentifier(array($identifier), $currentVersion->attribute('version'), $languageList);
     foreach ($attributeArray as $attribute) {
         $xmlText = eZXMLTextType::rawXMLText($attribute);
         $dom = new DOMDocument('1.0', 'utf-8');
         if (!$dom->loadXML($xmlText)) {
             continue;
         }
         // urls
         $urlIdArray = array();
         foreach ($dom->getElementsByTagName('link') as $link) {
             // We are looking for external 'http://'-style links, not the internal
             // object or node links.
             if ($link->hasAttribute('url_id')) {
                 $urlIdArray[] = $link->getAttribute('url_id');
             }
         }
         if (count($urlIdArray) > 0) {
             eZSimplifiedXMLInput::updateUrlObjectLinks($attribute, $urlIdArray);
         }
         // linked objects
         $linkedObjectIdArray = $this->getRelatedObjectList($dom->getElementsByTagName('link'));
         // embedded objects
         $embeddedObjectIdArray = array_merge($this->getRelatedObjectList($dom->getElementsByTagName('embed')), $this->getRelatedObjectList($dom->getElementsByTagName('embed-inline')));
         if (!empty($embeddedObjectIdArray)) {
             $object->appendInputRelationList($embeddedObjectIdArray, eZContentObject::RELATION_EMBED);
         }
         if (!empty($linkedObjectIdArray)) {
             $object->appendInputRelationList($linkedObjectIdArray, eZContentObject::RELATION_LINK);
         }
         if (!empty($linkedObjectIdArray) || !empty($embeddedObjectIdArray)) {
             $object->commitInputRelations($currentVersion->attribute('version'));
         }
     }
 }
开发者ID:nlescure,项目名称:ezpublish,代码行数:62,代码来源:ezxmltexttype.php

示例3: setObjectAttributes

 /**
  * Set content object attributes
  *
  * @private
  * @param eZContentObject $object
  * @param array( attributeIdentifier => attributeStringValue ) $attributesValues
  * @return void
  */
 private function setObjectAttributes(eZContentObject $object, array $attributesValues)
 {
     $attributes = $object->dataMap();
     foreach ($attributesValues as $identifier => $value) {
         if (isset($attributes[$identifier])) {
             $attribute = $attributes[$identifier];
             switch ($attribute->attribute('data_type_string')) {
                 case 'ezimage':
                     $arr = explode('|', trim($value));
                     $source = str_replace(' ', '%20', $arr[0]);
                     if (file_exists($source)) {
                         // Handle local files
                         $content = $attribute->attribute('content');
                         $content->initializeFromFile($source, isset($arr[1]) ? $arr[1] : null);
                         $content->store($attribute);
                     } else {
                         // Handle remote files
                         $filename = 'var/cache/' . md5(microtime()) . substr($source, strrpos($source, '.'));
                         if (!empty($source)) {
                             if (in_array('curl', get_loaded_extensions())) {
                                 $ch = curl_init();
                                 $out = fopen($filename, 'w');
                                 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
                                 curl_setopt($ch, CURLOPT_URL, $source);
                                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                                 curl_setopt($ch, CURLOPT_FILE, $out);
                                 curl_exec($ch);
                                 curl_close($ch);
                                 fclose($out);
                             } else {
                                 copy($source, $filename);
                             }
                         }
                         if (file_exists($filename)) {
                             $content = $attribute->attribute('content');
                             $content->initializeFromFile($filename, isset($arr[1]) ? $arr[1] : null);
                             $content->store($attribute);
                             unlink($filename);
                         }
                     }
                     break;
                 case 'ezxmltext':
                     $parser = new eZOEInputParser();
                     $value = '<div>' . trim($value) . '</div>';
                     $document = $parser->process($value);
                     $urlIDArray = $parser->getUrlIDArray();
                     if (count($urlIDArray) > 0) {
                         eZOEXMLInput::updateUrlObjectLinks($attribute, $urlIDArray);
                     }
                     $object->appendInputRelationList($parser->getLinkedObjectIDArray(), eZContentObject::RELATION_LINK);
                     $object->appendInputRelationList($parser->getEmbeddedObjectIDArray(), eZContentObject::RELATION_EMBED);
                     $value = $document ? eZXMLTextType::domString($document) : null;
                     $attribute->fromString($value);
                     break;
                 default:
                     if (is_callable(array($attribute, 'fromString'))) {
                         $attribute->fromString($value);
                     } else {
                         $attribute->setAttribute('data_text', $value);
                     }
             }
             $attribute->store();
         }
     }
 }
开发者ID:nxc,项目名称:nxc_powercontent,代码行数:73,代码来源:powercontent.php


注:本文中的eZContentObject::appendInputRelationList方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。