DEPRECATION WARNING

This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

Hooks

This document describes all the hooks in the typo3 extension commerce (version 0.8.17) as of 01/04/2007. The hooks are sorted by the classes and functions they can be found in. Each hook has a type which is either Single or Multiple. Single hook classes are written directly to the $GLOBALS[‘TYPO3_CONF_VARS’][‘EXTCONF’][‘commerce/{namespacepart/classname}’][$hookname] variable as there may never be more than one hook-object. For hooks with the type “multiple” $GLOBALS[‘TYPO3_CONF_VARS’][‘EXTCONF’][commerce/{namespacepart/classname}][$hookname][] is an array which can contain multiple hook objects. Each of them is called in the order they are found in the array by foreach. Some hook-methods can return data which is used by the calling function. Others may return some values but they are ignored. For those I used the return type void as known from the C programming language.

Single object hooks

$GLOBALS[‘TYPO3_CONF_VARS’][‘EXTCONF’][‘commerce/’ . $classname][$hookname]

Controller/ArticleAjaxController

Hookname Call Parameter / Result Type
createArticle preinsert
$articleData
Result
Array
void

Controller/BaseController

Hookname Call Parameter / Result Type
formatAttributeValue formatAttributeValue
$matrixKey
$attributeUid
$attributeValue
$result
$parentController
Result
Integer
Integer
String
String
\CommerceTeam\Commerce\Controller\BaseController
String

Controller/BasketController

Hookname Call Parameter / Result Type
generateBasket
makeDelivery



makePayment
$parentController
$basket
$result
Result
$parentController
$basket
$result
Result
\CommerceTeam\Commerce\Controller\BasketController
\CommerceTeam\Commerce\Domain\Model\Basket
String
String
\CommerceTeam\Commerce\Controller\BasketController
\CommerceTeam\Commerce\Domain\Model\Basket
String
String
alternativePrefixId singleDisplayPrefixId
Result
String

Domain/Model/Article

Hookname Call Parameter / Result Type
getActualPriceforScaleUid getActualPriceforScaleUid
$count
$parentModel
Result
Integer
\CommerceTeam\Commerce\Domain\Model\Article
Integer
getSpecialPrice specialPrice
$specialPrice
$priceUids
Result
Array
Array
void
calculateDeliveryCosts
calculateDeliveryCostNet


calculateDeliveryCostGross
$deliveryCostNet
$parentModel
Result
$deliveryCostGross
$parentModel
Result
Integer
\CommerceTeam\Commerce\Domain\Model\Article
void
Integer
\CommerceTeam\Commerce\Domain\Model\Article
void

Domain/Repository/ArticleRepository

Hookname Call Parameter / Result Type
getPrices
priceOrder

additionalPriceWhere
$orderField
Result
$parentRepository
$uid
Result
String
String
\CommerceTeam\Commerce\Domain\Repository\ArticleRepository
Integer
String

Domain/Repository/CategoryRepository

Hookname Call Parameter / Result Type
getChildCategories
categoryOrder


categoryQueryPostHook
$orderField
$parentRepository
Result
$data
$parentRepository
Result
String
\CommerceTeam\Commerce\Domain\Repository\CategoryRepository
String
Array
\CommerceTeam\Commerce\Domain\Repository\CategoryRepository
Array
getChildProducts
productOrder


productQueryPreHook


productQueryPostHook
$orderField
$parentRepository
Result
$queryArray
$parentRepository
Result
$data
$parentRepository
Result
String
\CommerceTeam\Commerce\Domain\Repository\CategoryRepository
String
Array
\CommerceTeam\Commerce\Domain\Repository\CategoryRepository
Array
Array
\CommerceTeam\Commerce\Domain\Repository\CategoryRepository
Array

Domain/Repository/ProductRepository

Hookname Call Parameter / Result Type
getArticles
articleOrder

additionalWhere
$orderField
Result
$where
Result
String
String
String
String

Hook/OrdermailHooks

Hookname Call Parameter / Result Type
generateMail processMarker
$markerArray
$parentHook
Result
Array
\CommerceTeam\Commerce\Hook\OrdermailHooks
Array

ViewHelpers/Navigation

Hookname Call Parameter / Result Type
makeArrayPostRender sortingOrder
$sorting
$uidRoot
$mainTable
$tableMm
$mDepth
$path
$parentViewHelper
Result
String
Integer
String
String
Integer
Integer
\CommerceTeam\Commerce\ViewHelper\Navigation
String
makeSubChildArrayPostRender sortingOrder
$sorting
$categoryUid
$mainTable
$mmTable
$mDepth
$path
$parentViewHelper
String
Integer
String
String
Integer
Integer
\CommerceTeam\Commerce\ViewHelper\Navigation

Multiple object hooks

$GLOBALS[‘TYPO3_CONF_VARS’][‘EXTCONF’][‘commerce/’ . $classname][$hookname][]

Controller/AddressesController

Hookname Call Parameter / Result Type
getListing
processAddressMarker




processListingMarker
$itemMarkerArray
$address
$piArray
$parentController
Result
$baseMarkerArray
$linkMarkerArray
$addressItems
$addressType
$piArray
$parentController
Result
Array
Array
Array
\CommerceTeam\Commerce\Controller\AddressesController
Array
Array
Array
String
Integer
Array
\CommerceTeam\Commerce\Controller\AddressesController
void
getAddressForm
preProcessAddress






processAddressfieldsMarkerArray







processAddressFormMarker
$addressData
$action
$addressUid
$addressType
$config
$parentController
Result
$fieldsMarkerArray
$fieldTemplate
$addressData
$action
$addressUid
$config
$parentController
Result
$baseMarkerArray
$action
$addressUid
$addressData
$config
$parentController
Result
Array
String
Integer
String
Array
\CommerceTeam\Commerce\Controller\AddressesController
Array
Array
String
Array
String
Integer
Array
\CommerceTeam\Commerce\Controller\AddressesController
Array
Array
String
Integer
Array
Array
\CommerceTeam\Commerce\Controller\AddressesController
void
deleteAddress deleteAddress
$addressid
$parentController
Result
Integer
\CommerceTeam\Commerce\Controller\AddressesController
String
getInputField postGetInputField
$content
$fieldName
$fieldConfig
$fieldValue
$parentController
Result
String
String
Array
Mixed
\CommerceTeam\Commerce\Controller\AddressesController
String
checkAddressForm validationMethod_*
$parentController
$fieldName
$fieldValue
Result
\CommerceTeam\Commerce\Controller\AddressesController
String
Mixed
Boolean
saveAddress
beforeAddressSave


afterAddressSave



beforeAddressEdit



afterAddressEdit
$newData
$parentController
Result
$newUid
$newData
$parentController
Result
$addressid
$newData
$parentController
Result
$addressid
$newData
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\AddressesController
void
Integer
Array
\CommerceTeam\Commerce\Controller\AddressesController
void
Integer
Array
\CommerceTeam\Commerce\Controller\AddressesController
void
Integer
Array
\CommerceTeam\Commerce\Controller\AddressesController
void
getAddresses editSelectStatement
$select
$userId
$addressType
$parentController
Result
String
Integer
Integer
\CommerceTeam\Commerce\Controller\AddressesController
String

Controller/BaseController

Hookname Call Parameter / Result Type
addAdditionalLocallang loadAdditionalLocallang
$parentController
Result
\CommerceTeam\Commerce\Controller\BaseController
void
makeListView additionalMarker
$markerArray
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\BaseController
Array
getArticleMarker additionalMarkerArticle
$markerArray
$article
$parentController
Result
Array
\CommerceTeam\Commerce\Domain\Model\Article
\CommerceTeam\Commerce\Controller\BaseController
Array
makeBasketView postBasketView
$content
$articleTypes
$lineTemplate
$template
$basket
$parentController
Result
String
Array
String
String
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BaseController
Array
makeBasketInformation
processMarkerTaxInformation



processMarkerBasketInformation
$taxRateTemplate
$basket
$parentController
Result
$markerArray
$basket
$parentController
Result
String
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BaseController
String
Array
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BaseController
Array
makeLineView processMarkerLineView
$markerArray
$basketItem
$parentController
Result
Array
\CommerceTeam\Commerce\Domain\Model\BasketItem
\CommerceTeam\Commerce\Controller\BaseController
Array
renderValue postRenderValue
$output
$params = array(
0 => $value
1 => $typoscriptType
2 => $typoscriptConfig
3 => $field
4 => $table
5 => $uid
)
Result
String

Mixed
String
Array
String
String
Integer
String
renderElement additionalMarkerElement
$markerArray
$element
$parentController
Result
Array
\CommerceTeam\Commerce\Domain\Model\AbstractEntity
\CommerceTeam\Commerce\Controller\BaseController
Array
renderProductsForList preProcessorProductsListView
$products
$templateMarker
$iterations
$typoscriptMarker
$parentController
Result
Array
Array
Integer
String
\CommerceTeam\Commerce\Controller\BaseController
Array
renderProduct
postProcessLinkArray



additionalMarkerProduct



additionalSubpartsProduct



modifyContentProduct
$linkArray
$product
$parentController
Result
$markerArray
$product
$parentController
Result
$subpartArray
$product
$parentController
Result
$content
$product
$parentController
Result
Array
\CommerceTeam\Commerce\Domain\Model\Product
\CommerceTeam\Commerce\Controller\BaseController
Array
Array
\CommerceTeam\Commerce\Domain\Model\Product
\CommerceTeam\Commerce\Controller\BaseController
Array
Array
\CommerceTeam\Commerce\Domain\Model\Product
\CommerceTeam\Commerce\Controller\BaseController
Array
String
\CommerceTeam\Commerce\Domain\Model\Product
\CommerceTeam\Commerce\Controller\BaseController
String

Controller/BasketController

Hookname Call Parameter / Result Type
main
postInit

additionalMarker
$parentController
Result
$markerArray
$parentController
Result
\CommerceTeam\Commerce\Controller\BasketController
String|Boolean
Array
\CommerceTeam\Commerce\Controller\BasketController
Array
handleDeleteBasket postdelBasket
$basket
$parentController
Result
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BasketController
void
handleAddArticle
preartAddUid


postDeleteArtUidSingle





preartAddUidSingle






postartAddUidSingle






postartAddUid
$basket
$parentController
Result
$articleUid
$articleAddValues
$oldCountValue
$basket
$parentController
Result
$articleUid
$articleAddValues
$product
$article
$basket
$parentController
Result
$articleUid
$articleAddValues
$product
$article
$basket
$parentController
Result
$basket
$parentController
Result
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BasketController
void
Integer
Array
Integer
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BasketController
void
Integer
Array
\CommerceTeam\Commerce\Domain\Model\Product
\CommerceTeam\Commerce\Domain\Model\Article
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BasketController
void
Integer
Array
\CommerceTeam\Commerce\Domain\Model\Product
\CommerceTeam\Commerce\Domain\Model\Article
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BasketController
void
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BasketController
void
handlePaymentArticle postpayArt
$basket
$parentController
Result
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BasketController
void
handleDeliveryArticle postdelArt
$basket
$parentController
Result
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\BasketController
void
getQuickView additionalMarker
$basketArray
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\BasketController
Array
generateBasketMarker additionalMarker
$basketArray
$parentController
$template
Result
Array
\CommerceTeam\Commerce\Controller\BasketController
String
Array
makeDelivery deliveryAllowedArticles
$parentController
$allowedArticles
Result
\CommerceTeam\Commerce\Controller\BasketController
Array[Integer]
Array
makePayment paymentAllowedArticles
$parentController
$allowedArticles
Result
\CommerceTeam\Commerce\Controller\BasketController
Array[Integer]
Array
makeArticleView additionalMarker
$markerArray
$parentController
$article
$product
$basketItem
Result
Array
\CommerceTeam\Commerce\Controller\BasketController
\CommerceTeam\Commerce\Domain\Model\Article
\CommerceTeam\Commerce\Domain\Model\Product
\CommerceTeam\Commerce\Domain\Model\BasketItem
Array
makeProductList
changeProductTemplate



additionalMarkerProductList
$templateMarker
$basketItem
$parentController
Result
$markerArray
$basketItem
$parentController
Result
Array
\CommerceTeam\Commerce\Domain\Model\BasketItem
\CommerceTeam\Commerce\Controller\BasketController
Array
Array
\CommerceTeam\Commerce\Domain\Model\BasketItem
\CommerceTeam\Commerce\Controller\BasketController
Array

Controller/CheckoutController

Hookname Call Parameter / Result Type
init checkoutSteps
$checkoutSteps
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\CheckoutController
void
main
processData

preSwitch


{*}

postSwitch



postRender
$parentController
Result
$currentStep
$parentController
Result
$parentController
Result
$currentStep
$content
$parentController
Result
$currentStep
$content
$parentController
Result
\CommerceTeam\Commerce\Controller\CheckoutController
void
Array
\CommerceTeam\Commerce\Controller\CheckoutController
void
\CommerceTeam\Commerce\Controller\CheckoutController
String
String
String
\CommerceTeam\Commerce\Controller\CheckoutController
String
String
String
\CommerceTeam\Commerce\Controller\CheckoutController
String
getBillingAddress processMarker
$markerArray
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\CheckoutController
Array
getDeliveryAddress processMarker
$markerArray
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\CheckoutController
Array
handlePayment
alternativePaymentStep


processMarker
$payment
$parentController
Result
$markerArray
$parentController
Result
\CommerceTeam\Commerce\Payment\PaymentInterface
\CommerceTeam\Commerce\Controller\CheckoutController
String
Array
\CommerceTeam\Commerce\Controller\CheckoutController
Array
getListing processMarker
$markerArray
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\CheckoutController
Array
finishIt
prepayment


postpayment



afterMailSend


processMarker


postFinish
$payment
$basket
Result
$payment
$basket
$parentController
Result
$orderData
$parentController
Result
$markerArray
$parentController
Result
$basket
$parentController
Result
\CommerceTeam\Commerce\Payment\PaymentInterface
\CommerceTeam\Commerce\Domain\Model\Basket
void
\CommerceTeam\Commerce\Payment\PaymentInterface
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\CheckoutController
void
Array
\CommerceTeam\Commerce\Controller\CheckoutController
Array
Array
\CommerceTeam\Commerce\Controller\CheckoutController
Array
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\CheckoutController
void
getInstanceOfTceMain generateOrderId
$orderId
$basket
$parentController
Result
String
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\CheckoutController
String
getBasketSum processMarker
$markerArray
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\CheckoutController
Array
validateAddress
{*}



validateField
$parentController
$fieldName
$value
Result
$params
$parentController
Result
\CommerceTeam\Commerce\Controller\CheckoutController
String
Mixed
Boolean
Array[fieldName, fieldValue, addressType, config]
\CommerceTeam\Commerce\Controller\CheckoutController
Boolean
getInputForm processInputForm
$fieldName
$fieldMarkerArray
$config
$step
$fieldCodeTemplate
$parentController
Result
String
Array
Array
String
String
\CommerceTeam\Commerce\Controller\CheckoutController
void
handleAddress
preProcessUserData


postProcessUserData


preProcessAddressData
$feuData
$parentController
Result
$feuData
$parentController
Result
$addressData
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\CheckoutController
void
Array
\CommerceTeam\Commerce\Controller\CheckoutController
void
Array
\CommerceTeam\Commerce\Controller\CheckoutController
Array
canMakeCheckout
canMakeCheckoutOwnTests


canMakeCheckoutOwnAdvancedTests
$allChecks
$myCheck
Result
$params = array(
‘checks’ => &$checks
‘myCheck’ => &$myCheck
)
$parentController
Result
Array
Boolean
void

Array
Boolean
\CommerceTeam\Commerce\Controller\CheckoutController
void
sendUserMail
getUserMail



preGenerateMail


postGenerateMail
$userMail
$orderUid
$orderData
Result
$userMail
$parentController
Result
$userMail
$parentController
$basket
$mailcontent
Result
String
Integer
Array
void
\CommerceTeam\Commerce\Controller\CheckoutController
\CommerceTeam\Commerce\Controller\CheckoutController
void
\CommerceTeam\Commerce\Controller\CheckoutController
\CommerceTeam\Commerce\Controller\CheckoutController
\CommerceTeam\Commerce\Domain\Model\Basket
String
void
sendAdminMail
preGenerateMail


postGenerateMail
$adminMail
$parentController
Result
$adminMail
$parentController
$basket
$mailcontent
$parentController
Result
\CommerceTeam\Commerce\Controller\CheckoutController
\CommerceTeam\Commerce\Controller\CheckoutController
void
\CommerceTeam\Commerce\Controller\CheckoutController
\CommerceTeam\Commerce\Controller\CheckoutController
\CommerceTeam\Commerce\Domain\Model\Basket
String
\CommerceTeam\Commerce\Controller\CheckoutController
void
generateMail processMarker
$markerArray
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\CheckoutController
Array
saveOrder
preinsert


modifyBasketPreSave


modifyOrderArticlePreSave




modifyOrderArticlePostSave
$orderData
$parentController
Result
$basket
$parentController
Result
$newUid
$orderArticleData
$parentController
$basketItem
Result
$newUid
$orderArticleData
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\CheckoutController
void
\CommerceTeam\Commerce\Domain\Model\Basket
\CommerceTeam\Commerce\Controller\CheckoutController
void
Integer
Array
\CommerceTeam\Commerce\Controller\CheckoutController
\CommerceTeam\Commerce\Domain\Model\BasketItem
void
Integer
Array
\CommerceTeam\Commerce\Controller\CheckoutController
void
getInstanceOfTceMain postTcaInit
Result
void

Controller/InvoiceController

Hookname Call Parameter / Result Type
main additionalMarker
$markerArray
$subpartArray
$parentController
Result
Array
Array
\CommerceTeam\Commerce\Controller\InvoiceController
Array

Controller/ListController

Hookname Call Parameter / Result Type
init
preInit

postInit
$parentController
Result
$parentController
Result
\CommerceTeam\Commerce\Controller\ListController
void
\CommerceTeam\Commerce\Controller\ListController
void
renderSingleView
preRenderSingleView





additionalMarker
$product
$category
$subpartName
$subpartNameNostock
$parentController
Result
$markerArray
$parentController
Result
\CommerceTeam\Commerce\Domain\Model\Product
\CommerceTeam\Commerce\Domain\Model\Category
String
String
\CommerceTeam\Commerce\Controller\ListController
String
Array
\CommerceTeam\Commerce\Controller\ListController
Array
makeArticleView
additionalMarker



additionalAttributeMarker



additionalMarkerMakeArticleView
$markerArray
$parentController
$article
Result
$markerArrayItem
$parentController
$uid
Result
$markerArray
$product
$parentController
Result
Array
\CommerceTeam\Commerce\Controller\ListController
\CommerceTeam\Commerce\Domain\Model\Article
Array
Array
\CommerceTeam\Commerce\Controller\ListController
Integer
Array
Array
\CommerceTeam\Commerce\Domain\Model\Product
\CommerceTeam\Commerce\Controller\ListController
Array

Domain/Model/Article

Hookname Call Parameter / Result Type
init postinit
$parentModel
Result
\CommerceTeam\Commerce\Domain\Model\Article
void

Domain/Model/ArticlePrice

Hookname Call Parameter / Result Type
init postinit
$parentModel
Result
\CommerceTeam\Commerce\Domain\Model\ArticlePrice
void
getPriceNet postpricenet
$parentModel
Result
\CommerceTeam\Commerce\Domain\Model\ArticlePrice
void
getPriceGross postpricegross
$parentModel
Result
\CommerceTeam\Commerce\Domain\Model\ArticlePrice
void

Domain/Model/Attribute

Hookname Call Parameter / Result Type
init postinit
$parentModel
Result
\CommerceTeam\Commerce\Domain\Model\Attribute
void

Domain/Model/AttributeValue

Hookname Call Parameter / Result Type
init postinit
$parentModel
Result
\CommerceTeam\Commerce\Domain\Model\AttributeValue
void

Domain/Model/Basket

Hookname Call Parameter / Result Type
loadDataFromDatabase loadDataFromDatabase
$returnData
$parentModel
Result
Array
\CommerceTeam\Commerce\Domain\Model\Basket
void
loadPersistentDataFromDatabase loadPersistantDataFromDatabase
$returnData
$parentModel
Result
Array
\CommerceTeam\Commerce\Domain\Model\Basket
void
storeDataToDatabase storeDataToDatabase
$oneItem
$insertData
Result
\CommerceTeam\Commerce\Domain\Model\BasketItem
Array
Array

Domain/Model/Category

Hookname Call Parameter / Result Type
init postinit
$parentModel
Result
\CommerceTeam\Commerce\Domain\Model\Category
void

Domain/Model/Product

Hookname Call Parameter / Result Type
init postinit
$parentModel
Result
\CommerceTeam\Commerce\Domain\Model\Product
void

Hook/DataHandlerHook

Hookname Call Parameter / Result Type
preProcessOrder
moveOrdersPreMoveOrder


moveOrdersPostMoveOrder
$order
$incomingFieldArray
Result
$order
$incomingFieldArray
Result
Array
Array
void
Array
Array
void

Hook/OrdermailHooks

Hookname Call Parameter / Result Type
ordermoveSendMail postOrdermoveSendMail
$mailconf
$orderdata
$template
Result
Array
Array
String
void

Tree/Leaf/Data

Hookname Call Parameter / Result Type
loadRecords addExtendedFields
$itemTable
$extendedFields
Result
String
String
String

Tree/Leaf/MasterData

Hookname Call Parameter / Result Type
getRecordsByMountpoints
getRecordsByMountpointsPreLoadRecords


getRecordsByMountpointsPostProcessRecords
$positions
$parentLeaf
Result
$records
$parentLeaf
Result
Array
\CommerceTeam\Commerce\Tree\Leaf\MasterData
void
Array
\CommerceTeam\Commerce\Tree\Leaf\MasterData
void

Utility/BackendUtility

Hookname Call Parameter / Result Type
copyProduct
beforeCopy



afterCopy
$uid
$uidLast
$overrideArray
Result
$newUid
$uid
$overrideArray
Result
Integer
Integer
Array
void
Integer
Integer
Array
void
copyCategory
beforeCopy



afterCopy
$uid
$uidLast
$overrideArray
Result
$newUid
$uid
$overrideArray
Result
Integer
Integer
Array
void
Integer
Integer
Array
void

Utility/GeneralUtility

Hookname Call Parameter / Result Type
generateSessionKey postGenerateSessionKey
$key
Result
String
String
sendMail
preProcessMail


ownMailRendering



postProcessMail
$mailconf
$additionalData
Result
$mailconf
$additionalData
$hooks
Result
$message
$mailconf
$additionalData
Result
Array
Array
void
Array
Array
Array
Boolean
String
Array
Array
String