function copydata ($Item) { parent::copydata ($Item); if (isset($Item->option->label)) $this->optionlabel = $Item->option->label; $this->addons = 'no'; if (empty($Item->addons) || !is_array($Item->addons)) return true; $addons = array(); // Create meta records for any addons foreach ((array)$Item->addons as $i => $Addon) { $Download = false; $Meta = new MetaObject(array( 'parent' => $this->id, 'context' => 'purchased', 'type' => 'meta', 'name' => $Addon->label )); $Meta->context = 'purchased'; $Meta->type = 'addon'; $Meta->name = $Addon->label; $Meta->numeral = $Addon->unitprice; // Add a meta record to the purchased line item for an addon download if (!empty($Addon->download)) { $hash = array($this->name,$Addon->label,$this->purchase,$this->product,$this->price,$i,time()); $Addon->dkey = sha1(join('',$hash)); $Download = new MetaObject(array( 'parent' => $this->id, 'context' => 'purchased', 'type' => 'download', 'name' => $Addon->dkey )); $Download->context = 'purchased'; $Download->type = 'download'; $Download->name = $Addon->dkey; $Download->value = $Addon->download; } $Meta->value = serialize($Addon); $addons[] = $Meta; if ($Download !== false) $addons[] = $Download; } $this->addons = $addons; }