| David Ogilo
                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | Monday 03 August 2009 3:20:50 am 
                                                                
                                                                 Hi, I have been trying to understand how to import a html data in Exponential. Here is a copy of the code 
case 'ezxmltext':
{
     $parser = new eZSimplifiedXMLInputParser( $contentObjectID, false, 0, false );
     $attributeValue = $dataString;
     $attributeValue = str_replace( "\r", '', $attributeValue );
     $attributeValue = str_replace( "\n", '', $attributeValue );
     $attributeValue = str_replace( "\t", ' ', $attributeValue );
     $document = $parser->process( $attributeValue );
     
     if ( !is_object( $document ) )
     {
         $cli->output( 'Error in xml parsing' );
	 return; 
     }
     $dataString = eZXMLTextType::domString( $document );
}
Some how it strips out all image and object tags in the html data and just import links, text, and other html tags.  I have tried changing all image tags in the html data to <custom name="img"> and still doesn't work. Does anyone know of a way to resolve this issue? Thanks, David | 
                                                
                                                                                                                                                        
                                                        | Heath 
                                                                                                                             | Monday 03 August 2009 3:37:51 am 
                                                                 Hello David, 
In BC ImportCSV we did something similar. Perhaps this example will help.<i>http://svn.projects.ez.no/bcimportcsv/trunk/extension/bcimportcsv/bin/bccsvjoomlacontenttablehtmlimport.php</i>
             case 'ezxmltext':
            {
		if( $attribute->ContentClassAttributeIdentifier == 'caption' ) {
		  $dataString = null;
                  break;
		}
                // Filter for images, process, store and link
                if ( is_numeric( $imageContainerID ) )
                {
                    $matches = array();
		    $pattern = '/<img\b[^>]*\bsrc=(\\\\["\'])?((?(1)(?:(?!\1).)*|[^\s>]*))(?(1)\1)[^>]*>/si';
                    preg_match_all( $pattern, $dataString, $matches );
		    $matches_count = count( $matches[2] );
  		    // $cli->output( print_r( $matches ) );
                    if ( $matches_count > 0 )
                    {
                        $toReplace = array();
                        $replacements = array();
			$objectComplex = true;
			$cli->output( "Matches Count: " . $matches_count );
                        // $imagenr = 0;
                        foreach ( $matches[2] as $key => $match )
                        {
				$toReplace[] = $matches[0][$key];
				$imageURL = trim( str_replace(chr(32), '%20', str_replace(' ', '%20', str_replace('\"', '', $matches[2][$key] ) ) ) );
                                if ( substr($imageURL, 0, 1) == '/') {
					$imageURL = 'http://www.diariodelhuila.com' . $imageURL;
        	                }
                                $cli->output("Image link: " . $imageURL);
                            	$imageTempURL = 'http://optics.kulgun.net/Blue-Sky/red-sunset-casey1.jpg';
				$imageTempFileName = 'def.jpg';
				$imageFileName = basename( $imageURL );
				$cli->output( 'Image File Name: '.$imageFileName );
				$imagePath = "/tmp/imgtmp/" . $imageTempFileName;
                                // $imagePath = "/tmp/imgtmp" . $imagenr++ . ".jpg";
                                if ( !copy($imageTempURL, $imagePath ) )
                                {
                                    $cli->output("Error copying image from remote server");
                                    $replacements[] = '';
                                }else {
                                    $imageClass = eZContentClass::fetchByIdentifier( 'image' );
                                    $imageObject = $imageClass->instantiate( $creator );
                                    $imageObject->store();
                                
                                    $imageObjectID = $imageObject->attribute( 'id' );
                            
                                    $imageNodeAssignment = eZNodeAssignment::create( array(
                                                                                 'contentobject_id' => $imageObject->attribute( 'id' ),
                                                                                 'contentobject_version' => $imageObject->attribute( 'current_version' ),
                                                                                 'parent_node' => $imageContainerID,
                                                                                 'is_main' => 1
                                                                                 )
                                                                             );
                                    $imageNodeAssignment->store();
                                    $imageVersion = $imageObject->version( 1 );
                                    $imageVersion->setAttribute( 'modified', $createDate );
                                    $imageVersion->setAttribute( 'status', eZContentObjectVersion::STATUS_DRAFT );
                                    $imageVersion->store();
                                    $imageAttributes = $imageObject->attribute( 'contentobject_attributes' );
                                    $cli->output("Image attributes:" . $cli->output( $imageAttributes, true ) );
                                
				    $imageAttributes[0]->fromString( $imageTempFileName );
                                    $imageAttributes[0]->store();
                                    $imageAttributes[2]->fromString( $imagePath );
                                    $imageAttributes[2]->store();
                                    $operationResult = eZOperationHandler::execute( 'content', 'publish',
                                                       array( 'object_id' => $imageObjectID, 'version' => 1 ) );
                                    $replacements[] = '<embed href="ezobject://' . $imageObject->attribute( 'id' ) . '" size="original" />';
                                }
                            }
                        
                            $dataString = str_replace( $toReplace, $replacements, $dataString );
	     		    $cli->output( print_r( $toReplace ) );
			    // $cli->output( print_r( $replacements ) );
			    // $cli->output( $dataString ); echo "\n";
			    unset( $toReplace ); unset( $replacements ); unset( $imageAttributes ); unset( $imageNodeAssignment );
                        }
                    }
                    $parser = new eZSimplifiedXMLInputParser( $contentObjectID, false, 0 );
                    $document = $parser->process( $dataString );
                    // $dataString = eZXMLTextType::domString( $document );
		    // $cli->output( print_r( $dataString ) );
		    // get links
		    $links = $document->getElementsByTagName( 'link' );
		    if( is_numeric( $links->length ) && $links->length > 0 && is_object( $links ) ) {
  		        // $cli->output( print_r( $links ) );
			$li = 0;
                        // for each link
	                for( $li = 0; $li < $links->length; $li++ )
                        { 
			   $linkNode = $links->item( $li );
			   $url_id = $linkNode->getAttribute( 'url_id' );
			   $cli->output( 'Link Item Count: '. $li );
                           $cli->output( 'Link Item ID: '. $url_id );
			   if( is_numeric( $url_id ) ) {
                               // create link between url (link) and object
                               $eZURLObjectLink = eZURLObjectLink::create( $url_id,
                                                  $contentObject->attribute('id'),
                                                  $contentObject->attribute('current_version') );
		               $cli->output( print_r( $eZURLObjectLink ) );
		               // $cli->output( print_r( $url_id ) );
        	               $eZURLObjectLink->store();
                           }
	                }
                    }
                }break;
                default:
            }
 Cheers,Heath
 7x | https://se7enx.com/Brookins Consulting | https://brookinsconsulting.com/
 Certified | http://web.archive.org/web/201012...th.ez.no/certification/verify/380350
 Solutions | https://projects.exponential.earth/users/community/brookins-consulting
 eZpedia community documentation project | http://ezpedia.se7enx.com
 | 
                                                                                                    
                                                        | Rainer Krauss
                                                                                                                             | Monday 03 August 2009 6:27:06 am 
                                                                 Hi david, depends on what you actually want to achieve. 
Would you like to get something into Exponential that contains- an image or
 - a file?
 Would you like to have the image / file be shown or should it be available for download? If you want to include files / images as links, you can add them to the media library and reference them via links to eznode:// or ezobject:// and the node or object id. 
The tags eZXMLObject accepts are documented here:http://ez.no/doc/ez_publish/technical_manual/4_0/reference/xml_tags
 ..and you'd have to look at replacing your tags with valid ones.
 
Best wishes,Rainer
 | 
                                                                                                    
                                                        | Sébastien Antoniotti
                                                                                                                             | Friday 28 August 2009 9:35:39 am 
                                                                 Hi, I wake up this topic because I'm making a similar import, but I would like to create objects and nodes like this : 
$billet_attributes = array(
			'titre' 								=> "article 1",
			'contenu' 							=> "<p>some xhtml content</p>"
		);
		$params = array();
		$params['parent_node_id'] = '2';
		$params['class_identifier'] = 'wx_billet';
		$params['attributes'] = $billet_attributes;
		$object = eZContentFunctions::createAndPublishObject( $params );     
 The problem is that 'contenu' attribute is not correctly set. I think this is because I need to do parse the xhtml content, but I don't know how to because I'm not in the case were I have the $contentObjectID needed in $parser = new eZSimplifiedXMLInputParser( $contentObjectID, false, 0, false ); Thanks in advance ! eZ Publish Freelanceweb : http://www.webaxis.fr
 
 |