Exemple #1
0
 public function copydata($Item, $prefix = '', array $ignores = array())
 {
     parent::copydata($Item);
     if (isset($Item->option->label)) {
         $this->optionlabel = $Item->option->label;
     }
     $this->price = $Item->option->id;
     // Generate download link for downloadables
     if ('Download' == $Item->type && !empty($this->download)) {
         $this->keygen();
         $this->download = (int) $this->download->id;
         // Convert download property to integer ID
     }
     $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 ShoppMetaObject(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 ShoppMetaObject(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;
 }