function initGroupFromDom( $root, $new = false ) { $xpath = new DOMXPath( $root->ownerDocument ); if ( $root && $root->getAttribute("option_counter") > 0 ) { // set the name of the node $this->Name = $xpath->query( 'name', $root )->item( 0 )->textContent; $this->OptionCounter = $root->getAttribute("option_counter"); $this->MultiOptionIDCounter = $root->getAttribute("multioption_counter") ? $root->getAttribute("multioption_counter") : $this->MultiOptionIDCounter; $this->GroupIDCounter = $root->getAttribute( 'group_counter ') ? $root->getAttribute( 'group_counter ') : $this->GroupIDCounter; $this->GroupID = $root->getAttribute( 'group_id' ) ? $root->getAttribute( 'group_id' ) : $this->GroupID ; $this->ID = $root->getAttribute( 'id' ) ? $root->getAttribute( 'id' ) : $this->ID; $multioptionsList = $xpath->query( "multioptions/multioption", $root ); //Loop for MultiOptions foreach ( $multioptionsList as $multioption ) { $newID = $this->addMultiOption( $multioption->getAttribute( "name" ), $multioption->getAttribute( "priority" ), $multioption->getAttribute( "default_option_id" ), $multioption->getAttribute( "multioption_id" ) ); $optionNode = $xpath->query( "option", $multioption ); foreach ( $optionNode as $option ) { $isSelectable = $option->getAttribute( "is_selectable" ) === false ? 1 : $option->getAttribute( "is_selectable" ); $this->addOption( $newID, $option->getAttribute( "option_id" ), $option->getAttribute( "value" ), $option->getAttribute( "additional_price" ), $isSelectable, $option->getAttribute( "object" ) ); } $groupNode = $xpath->query( "optiongroup", $multioption )->item( 0 ); if( $groupNode ) { $multiOptionGroup = new eZMultiOption2( '' ); $multiOptionGroup->initCounters( $this ); $multiOptionGroup->initGroupFromDom( $groupNode ); $this->initCounters( $multiOptionGroup ); $this->Options[$newID]['child_group'] = $multiOptionGroup; } } $this->changeMultiOptionId(); $groupList = $xpath->query( "groups/optiongroup", $root ); foreach ( $groupList as $group ) { $multiOptionGroup = new eZMultiOption2( '' ); $multiOptionGroup->initCounters( $this ); $multiOptionGroup->initGroupFromDom( $group ); $this->initCounters( $multiOptionGroup ); $this->ChildGroupList[] = $multiOptionGroup; } } else { //The control come here while creating new object for MultiOption if ( $new ) { $nodeID = $this->addMultiOption( "", 0, false, '' ); $this->addOption( $nodeID, "", "", "" ); } } }
function batchInitializeObjectAttributeData( $classAttribute ) { $optionGroup = new eZMultiOption2( $classAttribute->attribute( 'data_text1' ) ); $db = eZDB::instance(); return array( 'data_text' => "'" . $db->escapeString( $optionGroup->xmlString() ) . "'" ); }