Ejemplo n.º 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)
 {
     $availableEnumerations = array();
     foreach ($contentObjectAttribute->content()->ObjectEnumerations as $enumeration) {
         $availableEnumerations[] = array('id' => $enumeration->EnumID, 'element' => $enumeration->EnumElement, 'value' => $enumeration->EnumValue);
     }
     return array('content' => $availableEnumerations, 'has_rendered_content' => false, 'rendered' => null);
 }
 /**
  * @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 )
 {
     return array(
         'content' => $contentObjectAttribute->content()->KeywordArray,
         'has_rendered_content' => false,
         'rendered' => null,
     );
 }
Ejemplo n.º 3
0
 /**
  * Returns the content of the matrix to be stored in Solr
  *
  * @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)
 {
     $rows = $contentObjectAttribute->content()->attribute('rows');
     $target = array('has_rendered_content' => false, 'rendered' => null, 'content' => array());
     foreach ($rows['sequential'] as $elt) {
         $target['content'][] = $elt['columns'];
     }
     return $target;
 }
 /**
  * @param eZContentObjectAttribute $contentObjectAttribute the attribute to serialize
  * @param eZContentClassAttribute $contentClassAttribute the content class of the attribute to serialize
  * @return json encoded string for further processing
  * required first level elements 'method', 'version_format', 'data_type_identifier', 'content'
  * optional first level element is 'rendered' which should store (template) rendered xhtml snippets
  */
 public static function getAttributeContent(eZContentObjectAttribute $contentObjectAttribute, eZContentClassAttribute $contentClassAttribute)
 {
     $dataTypeIdentifier = $contentObjectAttribute->attribute('data_type_string');
     $attributeContents = $contentObjectAttribute->content();
     $doc = new DOMDocument('1.0');
     $doc->loadXML($attributeContents->attribute('xml_data'));
     $xpath = new DOMXPath($doc);
     $content = $doc->saveXML($xpath->query('/*')->item(0));
     $target = array('content' => $content, 'has_rendered_content' => $contentObjectAttribute->hasContent(), 'rendered' => $attributeContents->attribute('output')->attribute('output_text'));
     return $target;
 }
    /**
     * @param eZContentObjectAttribute $contentObjectAttribute the attribute to serialize
     * @param eZContentClassAttribute $contentClassAttribute the content class of the attribute to serialize
     * @return array with keys 'content', 'has_rendered_content', 'rendered'
     * required first level elements 'method', 'version_format', 'data_type_identifier', 'content'
     * optional first level element is 'rendered' which should store (template) rendered xhtml snippets
     */
    public static function getAttributeContent( eZContentObjectAttribute $contentObjectAttribute, eZContentClassAttribute $contentClassAttribute )
    {

        $target = array(
                'content' => $contentObjectAttribute->content(),
                'has_rendered_content' =>false,
                'rendered' => null
                );

        return  $target ;
    }
 /**
  * @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)
 {
     $selectedOptionsList = array_fill_keys($contentObjectAttribute->content(), true);
     $availableOptionsArray = $contentObjectAttribute->attribute('class_content');
     $finalAvailableOptions = array();
     foreach ($availableOptionsArray['options'] as $availableOption) {
         if (isset($selectedOptionsList[$availableOption['id']])) {
             $finalAvailableOptions[] = array('name' => $availableOption['name'], 'id' => $availableOption['id']);
         }
     }
     return array('content' => $finalAvailableOptions, 'has_rendered_content' => false, 'rendered' => null);
 }
Ejemplo n.º 7
0
 /**
  * Returns string representation of a content object attribute
  *
  * @param eZContentObjectAttribute $contentObjectAttribute
  *
  * @return string
  */
 public function toString($contentObjectAttribute)
 {
     /** @var $eZTags eZTags */
     $eZTags = $contentObjectAttribute->content();
     if (!$eZTags instanceof eZTags) {
         return '';
     }
     $returnArray = array();
     $returnArray[] = $eZTags->attribute('id_string');
     $returnArray[] = $eZTags->attribute('keyword_string');
     $returnArray[] = $eZTags->attribute('parent_string');
     $returnArray[] = $eZTags->attribute('locale_string');
     return implode('|#', $returnArray);
 }
 /**
  * Tests the attribute's content
  */
 public function testContent()
 {
     $this->createObject($this->dataSet());
     self::assertEquals($this->attribute->content(), $this->dataSet()->content);
     $this->destroyObject();
 }
 /**
  * Performs necessary actions with attribute data after object is published,
  * it means that you have access to published nodes.
  *
  * @param eZContentObjectAttribute $contentObjectAttribute
  * @param eZContentObject $contentObject
  * @param array(eZContentObjectTreeNode) $publishedNodes
  * @return bool
  */
 function onPublish($contentObjectAttribute, $contentObject, $publishedNodes)
 {
     $db = eZDB::instance();
     $page = $contentObjectAttribute->content();
     foreach ($publishedNodes as $node) {
         $nodeID = $node->attribute('node_id');
         if ($page->getZoneCount() != 0) {
             foreach ($page->attribute('zones') as $zone) {
                 if ($zone->getBlockCount() != 0) {
                     if ($zone->toBeRemoved()) {
                         foreach ($zone->attribute('blocks') as $index => $block) {
                             $block->setAttribute('action', 'remove');
                         }
                     }
                     foreach ($zone->attribute('blocks') as $block) {
                         $blockID = $block->attribute('id');
                         $blockType = $block->attribute('type');
                         $escapedBlockType = $db->escapeString($blockType);
                         $action = $block->attribute('action');
                         $fetchParams = $block->attribute('fetch_params');
                         $zoneID = $block->attribute('zone_id');
                         $blockName = $block->attribute('name');
                         $escapedBlockName = $db->escapeString($blockName);
                         switch ($action) {
                             case 'remove':
                                 $db->query("UPDATE ezm_block SET is_removed='1' WHERE id='" . $blockID . "'");
                                 break;
                             case 'add':
                                 $blockCount = $db->arrayQuery("SELECT COUNT( id ) as count FROM ezm_block WHERE id='" . $blockID . "'");
                                 if ($blockCount[0]['count'] == 0) {
                                     $rotationType = 0;
                                     $rotationInterval = 0;
                                     $overflowID = null;
                                     if ($block->hasAttribute('rotation')) {
                                         $rotation = $block->attribute('rotation');
                                         $rotationType = $rotation['type'];
                                         $rotationInterval = $rotation['interval'];
                                     }
                                     if ($block->hasAttribute('overflow_id')) {
                                         $overflowID = $block->attribute('overflow_id');
                                     }
                                     $db->query("INSERT INTO ezm_block ( id, zone_id, name, node_id, overflow_id, block_type, fetch_params, rotation_type, rotation_interval )\n                                                                    VALUES ( '" . $blockID . "',\n                                                                             '" . $zoneID . "',\n                                                                             '" . $escapedBlockName . "',\n                                                                             '" . $nodeID . "',\n                                                                             '" . $overflowID . "',\n                                                                             '" . $escapedBlockType . "',\n                                                                             '" . $fetchParams . "',\n                                                                             '" . $rotationType . "',\n                                                                             '" . $rotationInterval . "' )");
                                 }
                                 break;
                             default:
                                 $rotationType = 0;
                                 $rotationInterval = 0;
                                 $overflowID = null;
                                 if ($block->hasAttribute('rotation')) {
                                     $rotation = $block->attribute('rotation');
                                     $rotationType = $rotation['type'];
                                     $rotationInterval = $rotation['interval'];
                                 }
                                 if ($block->hasAttribute('overflow_id')) {
                                     $overflowID = $block->attribute('overflow_id');
                                 }
                                 $db->query("UPDATE ezm_block SET name='" . $escapedBlockName . "',\n                                                                      overflow_id='" . $overflowID . "',\n                                                                      fetch_params='" . $fetchParams . "',\n                                                                      rotation_type='" . $rotationType . "',\n                                                                      rotation_interval='" . $rotationInterval . "'\n                                                            WHERE id='" . $blockID . "'");
                                 break;
                         }
                         if ($block->getItemCount() != 0) {
                             foreach ($block->attribute('items') as $item) {
                                 $action = $item->attribute('action');
                                 switch ($action) {
                                     case 'remove':
                                         $db->query("DELETE FROM ezm_pool\n                                                            WHERE object_id='" . $item->attribute('object_id') . "'\n                                                            AND block_id='" . $blockID . "'");
                                         break;
                                     case 'add':
                                         $itemCount = $db->arrayQuery("SELECT COUNT( * ) as count FROM ezm_pool\n                                                              WHERE block_id='" . $blockID . "'\n                                                                 AND object_id='" . $item->attribute('object_id') . "'");
                                         if ($itemCount[0]['count'] == 0) {
                                             $db->query("INSERT INTO ezm_pool ( block_id, object_id, node_id, priority, ts_publication )\n                                            VALUES ( '" . $blockID . "',\n                                                     '" . $item->attribute('object_id') . "',\n                                                     '" . $item->attribute('node_id') . "',\n                                                     '" . $item->attribute('priority') . "',\n                                                     '" . $item->attribute('ts_publication') . "'  )");
                                         }
                                         break;
                                     case 'modify':
                                         if ($item->hasAttribute('ts_publication')) {
                                             $db->query("UPDATE ezm_pool SET ts_publication='" . $item->attribute('ts_publication') . "'\n                                                                WHERE object_id='" . $item->attribute('object_id') . "'\n                                                                    AND block_id='" . $blockID . "'");
                                         }
                                         if ($item->hasAttribute('priority')) {
                                             $db->query("UPDATE ezm_pool SET priority='" . $item->attribute('priority') . "'\n                                                                WHERE object_id='" . $item->attribute('object_id') . "'\n                                                                    AND block_id='" . $blockID . "'");
                                         }
                                         //if there is ts_hidden and ts_visible, update the two fields. This is the case when add items from history
                                         if ($item->hasAttribute('ts_hidden') && $item->hasAttribute('ts_visible')) {
                                             $db->query("UPDATE ezm_pool SET ts_hidden='" . $item->attribute('ts_hidden') . "',\n                                                             ts_visible='" . $item->attribute('ts_visible') . "' \n                                                                WHERE object_id='" . $item->attribute('object_id') . "'\n                                                                    AND block_id='" . $blockID . "'");
                                         }
                                         break;
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     if (eZFlowOperations::updateOnPublish()) {
         $nodeArray = array();
         foreach ($publishedNodes as $node) {
             $nodeArray[] = $node->attribute('node_id');
         }
         eZFlowOperations::update($nodeArray);
     }
     foreach ($publishedNodes as $node) {
         $url = $node->attribute('path_identification_string');
         eZURI::transformURI($url, false, 'full');
         eZHTTPCacheManager::execute($url);
     }
     $page->removeProcessed();
     $contentObjectAttribute->content($page);
     $contentObjectAttribute->store();
     return true;
 }
Ejemplo n.º 10
0
 /**
  * Returns an eZDiffContent object with the detected changes
  *
  * @param eZContentObjectAttribute $old
  * @param eZContentObjectAttribute $new
  * @param array|bool $options
  *
  * @return eZDiffContent
  */
 function diff($old, $new, $options = false)
 {
     $diff = new eZDiff();
     $diff->setDiffEngineType($diff->engineType("text"));
     $diff->initDiffEngine();
     return $diff->diff($old->content(), $new->content());
 }
Ejemplo n.º 11
0
    /**
     * Performs necessary actions with attribute data after object is published,
     * it means that you have access to published nodes.
     *
     * @param eZContentObjectAttribute $contentObjectAttribute
     * @param eZContentObject $contentObject
     * @param array(eZContentObjectTreeNode) $publishedNodes
     * @return bool
     */
    function onPublish( $contentObjectAttribute, $contentObject, $publishedNodes )
    {
        $db = eZDB::instance();
        $page = $contentObjectAttribute->content();

        foreach ( $publishedNodes as $publishedNode )
        {
            if ( $publishedNode->isMain() )
                $mainNode = $publishedNode;
        }

        foreach ( $publishedNodes as $node )
        {
            $nodeID = $node->attribute( 'node_id' );

            if ( $page->getZoneCount() != 0 )
            {
                foreach ( $page->attribute( 'zones' ) as $zone )
                {
                    if ( $zone->getBlockCount() != 0 )
                    {
                        if ( $zone->toBeRemoved() )
                        {
                            foreach ( $zone->attribute( 'blocks' ) as $index => $block )
                            {
                                $block->setAttribute( 'action', 'remove' );
                            }
                        }

                        $newItems = array();

                        foreach ( $zone->attribute( 'blocks' ) as $block )
                        {
                            $blockID = $block->attribute( 'id' );
                            $fetchParams = $block->attribute( 'fetch_params' );
                            $escapedBlockName = $db->escapeString( $block->attribute( 'name' ) );

                            switch ( $block->attribute( 'action' ) )
                            {
                                case 'remove':
                                    $db->query( "UPDATE ezm_block SET is_removed='1' WHERE id='" . $blockID . "'" );
                                    break;

                                case 'add':
                                    $blockCount = $db->arrayQuery( "SELECT COUNT( id ) as count FROM ezm_block WHERE id='" . $blockID ."'" );

                                    if ( $blockCount[0]['count'] == 0 )
                                    {
                                        $rotationType = 0;
                                        $rotationInterval = 0;
                                        $overflowID = null;

                                        if ( $block->hasAttribute( 'rotation' ) )
                                        {
                                            $rotation = $block->attribute( 'rotation' );

                                            $rotationType = $rotation['type'];
                                            $rotationInterval = $rotation['interval'];
                                        }


                                        if ( $block->hasAttribute( 'overflow_id' ) )
                                        $overflowID = $block->attribute( 'overflow_id' );

                                        $db->query( "INSERT INTO ezm_block ( id, zone_id, name, node_id, overflow_id, block_type, fetch_params, rotation_type, rotation_interval )
                                                                    VALUES ( '" . $blockID . "',
                                                                             '" . $block->attribute( 'zone_id' ) . "',
                                                                             '" . $escapedBlockName . "',
                                                                             '" . $nodeID . "',
                                                                             '" . $overflowID . "',
                                                                             '" . $db->escapeString( $block->attribute( 'type' ) ) . "',
                                                                             '" . $fetchParams . "',
                                                                             '" . $rotationType . "',
                                                                             '" . $rotationInterval . "' )" );
                                    }
                                    break;

                                default:
                                    $rotationType = 0;
                                    $rotationInterval = 0;
                                    $overflowID = null;

                                    if ( $block->hasAttribute( 'rotation' ) )
                                    {
                                        $rotation = $block->attribute( 'rotation' );

                                        $rotationType = $rotation['type'];
                                        $rotationInterval = $rotation['interval'];
                                    }

                                    if ( $block->hasAttribute( 'overflow_id' ) )
                                        $overflowID = $block->attribute( 'overflow_id' );

                                    // Fixes http://jira.ez.no/browse/EZP-23124 where ezm_block.node_id might be = 0
                                    // due to the way staging handles ezflow
                                    // If the block's node id is set to 0, it gets set to the main node ID
                                    $blockNodeId = $block->attribute( 'node_id' ) ?: $mainNode->attribute( 'node_id' );

                                    $db->query( "UPDATE ezm_block SET name='" . $escapedBlockName . "',
                                                                      overflow_id='" . $overflowID . "',
                                                                      fetch_params='" . $fetchParams . "',
                                                                      rotation_type='" . $rotationType . "',
                                                                      rotation_interval='" . $rotationInterval ."',
                                                                      node_id='" . $blockNodeId. "'
                                                            WHERE id='" . $blockID . "'" );
                                    break;
                            }

                            if ( $block->getItemCount() != 0 )
                            {
                                foreach ( $block->attribute( 'items' ) as $item )
                                {
                                    switch ( $item->attribute( 'action' ) )
                                    {
                                        case 'remove':

                                            $db->query( "DELETE FROM ezm_pool
                                                            WHERE object_id='" . $item->attribute( 'object_id' ) . "'
                                                            AND block_id='" . $blockID . "'" );
                                            break;

                                        case 'add':
                                            $newItems[] =  array(
                                                'blockID' => $blockID,
                                                'objectID' => $item->attribute( 'object_id' ),
                                                'nodeID' => $item->attribute( 'node_id' ),
                                                'priority' => $item->attribute( 'priority' ),
                                                'timestamp' => $item->attribute( 'ts_publication' ),
                                            );
                                            break;

                                        case 'modify':
                                            $updateQuery = array();

                                            if ( $item->hasAttribute( 'ts_publication' ) )
                                            {
                                                $updateQuery[] = " ts_publication="
                                                    . (int)$item->attribute( 'ts_publication' );
                                            }

                                            //make sure to update different node locations of the same object
                                            if ( $item->hasAttribute( 'node_id' ) )
                                            {
                                                $updateQuery[] = " node_id="
                                                    . (int)$item->attribute( 'node_id' );
                                            }

                                            if ( $item->hasAttribute( 'priority' ) )
                                            {
                                                $updateQuery[] = " priority="
                                                    . (int)$item->attribute( 'priority' );
                                            }

                                            //if there is ts_hidden and ts_visible, update the two fields. This is the case when add items from history
                                            if ( $item->hasAttribute( 'ts_hidden' ) && $item->hasAttribute( 'ts_visible' ) )
                                            {
                                                $updateQuery[] = " ts_hidden="
                                                    . (int)$item->attribute( 'ts_hidden' )
                                                    . ", ts_visible="
                                                    . (int)$item->attribute( 'ts_visible' );
                                            }

                                            if ( !empty( $updateQuery ) )
                                            {
                                                $db->query(
                                                    "UPDATE ezm_pool SET "
                                                    . join( ", ", $updateQuery )
                                                    . " WHERE object_id="
                                                    . (int)$item->attribute( 'object_id' )
                                                    . " AND block_id='" . $blockID ."'"
                                                );
                                            }
                                            break;
                                    }
                                }
                            }
                        }

                        if ( !empty( $newItems ) )
                        {
                            eZFlowPool::insertItems( $newItems );
                        }
                    }
                }
            }
        }

        if ( eZFlowOperations::updateOnPublish() )
        {
            $nodeArray = array();
            foreach ( $publishedNodes as $node )
            {
                $nodeArray[] = $node->attribute( 'node_id' );
            }
            eZFlowOperations::update( $nodeArray );
        }

        foreach ( $publishedNodes as $node )
        {
            $url = $node->attribute( 'path_identification_string' );
            eZURI::transformURI( $url, false, 'full' );
            eZHTTPCacheManager::execute( $url );
        }

        $page->removeProcessed();

        $contentObjectAttribute->content( $page );
        $contentObjectAttribute->store();

        return true;
    }
 /**
  * Returns string representation of a content object attribute data for simplified export
  *
  * @param eZContentObjectAttribute $objectAttribute
  *
  * @return string
  */
 public function toString($objectAttribute)
 {
     $content = $objectAttribute->content();
     if (count($content) == 1) {
         return $content[0];
     }
     return serialize($content);
 }
Ejemplo n.º 13
0
 /**
  * Stores the object attribute
  *
  * @param eZContentObjectAttribute $attribute
  */
 function storeObjectAttribute($attribute)
 {
     $eztags = $attribute->content();
     if ($eztags instanceof eZTags) {
         $eztags->store($attribute);
     }
 }
Ejemplo n.º 14
0
 /**
  * Generate title of attribute
  *
  * @param eZContentObjectAttribute $contentObjectAttribute
  * @param string|null              $name
  *
  * @return string
  */
 function title($contentObjectAttribute, $name = null)
 {
     unset($name);
     //CodeSniffer tricks..
     return (string) $contentObjectAttribute->content();
 }