Beispiel #1
0
 function items($asObject = true, $alternativeProductionID = false, $offset = false, $limit = false)
 {
     $productItems = eZPersistentObject::fetchObjectList(eZProductCollectionItem::definition(), null, array('productcollection_id' => $alternativeProductionID === false ? $this->ProductCollectionID : $alternativeProductionID), null, array('offset' => $offset, 'length' => $limit), $asObject);
     //        $discountPercent = $this->discountPercent();
     $addedProducts = array();
     foreach ($productItems as $productItem) {
         $discountPercent = 0.0;
         $isVATIncluded = true;
         $id = $productItem->attribute('id');
         $contentObject = $productItem->attribute('contentobject');
         //if the node is put into trash/delete, don't fetch it
         if ($contentObject !== null && $contentObject->attribute('main_node_id') !== null) {
             $vatValue = $productItem->attribute('vat_value');
             $count = $productItem->attribute('item_count');
             $discountPercent = $productItem->attribute('discount');
             $nodeID = $contentObject->attribute('main_node_id');
             $objectName = $contentObject->attribute('name');
             $isVATIncluded = $productItem->attribute('is_vat_inc');
             $price = $productItem->attribute('price');
             if ($isVATIncluded) {
                 $priceExVAT = $price / (100 + $vatValue) * 100;
                 $priceIncVAT = $price;
             } else {
                 $priceExVAT = $price;
                 $priceIncVAT = $price * (100 + $vatValue) / 100;
             }
             $totalPriceExVAT = $count * $priceExVAT * (100 - $discountPercent) / 100;
             $totalPriceIncVAT = $count * $priceIncVAT * (100 - $discountPercent) / 100;
             $addedProduct = array("id" => $id, "vat_value" => $vatValue, "item_count" => $count, "node_id" => $nodeID, "object_name" => $objectName, "price_ex_vat" => $priceExVAT, "price_inc_vat" => $priceIncVAT, "discount_percent" => $discountPercent, "total_price_ex_vat" => $totalPriceExVAT, "total_price_inc_vat" => $totalPriceIncVAT, 'item_object' => $productItem);
             $addedProducts[] = $addedProduct;
         }
     }
     return $addedProducts;
 }
 static function fetchList($conditions = null, $asObjects = true, $offset = false, $limit = false)
 {
     $limitation = null;
     if ($offset !== false or $limit !== false) {
         $limitation = array('offset' => $offset, 'length' => $limit);
     }
     return eZPersistentObject::fetchObjectList(eZProductCollectionItem::definition(), null, $conditions, null, $limitation, $asObjects);
 }
Beispiel #3
0
 /**
  * Fetch basket items (ordered by object id by default)
  *
  * @param bool $asObject
  * @param array|null $sorts Array with sort data sent directly to {@link eZPersistentObject::fetchObjectList()}
  */
 function items($asObject = true, $sorts = array('contentobject_id' => 'desc'))
 {
     $productItems = eZPersistentObject::fetchObjectList(eZProductCollectionItem::definition(), null, array('productcollection_id' => $this->ProductCollectionID), $sorts, null, $asObject);
     $addedProducts = array();
     foreach ($productItems as $productItem) {
         $discountPercent = 0.0;
         $isVATIncluded = true;
         $id = $productItem->attribute('id');
         $contentObject = $productItem->attribute('contentobject');
         if ($contentObject !== null) {
             $vatValue = $productItem->attribute('vat_value');
             // If VAT is unknown yet then we use zero VAT percentage for price calculation.
             $realVatValue = $vatValue;
             if ($vatValue == -1) {
                 $vatValue = 0;
             }
             $count = $productItem->attribute('item_count');
             $discountPercent = $productItem->attribute('discount');
             $nodeID = $contentObject->attribute('main_node_id');
             $objectName = $contentObject->name(false, $contentObject->currentLanguage());
             $isVATIncluded = $productItem->attribute('is_vat_inc');
             $price = $productItem->attribute('price');
             if ($isVATIncluded) {
                 $priceExVAT = $price / (100 + $vatValue) * 100;
                 $priceIncVAT = $price;
                 $totalPriceExVAT = $count * $priceExVAT * (100 - $discountPercent) / 100;
                 $totalPriceIncVAT = $count * $priceIncVAT * (100 - $discountPercent) / 100;
             } else {
                 $priceExVAT = $price;
                 $priceIncVAT = $price * (100 + $vatValue) / 100;
                 $totalPriceExVAT = $count * $priceExVAT * (100 - $discountPercent) / 100;
                 $totalPriceIncVAT = $count * $priceIncVAT * (100 - $discountPercent) / 100;
             }
             $addedProduct = array("id" => $id, "vat_value" => $realVatValue, "item_count" => $count, "node_id" => $nodeID, "object_name" => $objectName, "price_ex_vat" => $priceExVAT, "price_inc_vat" => $priceIncVAT, "discount_percent" => $discountPercent, "total_price_ex_vat" => $totalPriceExVAT, "total_price_inc_vat" => $totalPriceIncVAT, 'item_object' => $productItem);
             $addedProducts[] = $addedProduct;
         }
     }
     return $addedProducts;
 }
 static function verify($id)
 {
     $invalidItemArray = array();
     $collection = eZProductCollection::fetch($id);
     if (!is_object($collection)) {
         return $invalidItemArray;
     }
     $currency = $collection->attribute('currency_code');
     $productItemList = eZPersistentObject::fetchObjectList(eZProductCollectionItem::definition(), null, array("productcollection_id" => $id), null, null, true);
     $isValid = true;
     foreach ($productItemList as $productItem) {
         if (!$productItem->verify($currency)) {
             $invalidItemArray[] = $productItem;
             $isValid = false;
         }
     }
     if (!$isValid) {
         return $invalidItemArray;
     }
     return $isValid;
 }
Beispiel #5
0
 /**
  * Fetch product items that bellongs ot the order
  *
  * @param bool $asObject
  * @param array|null $sorts Array with sort data sent directly to {@link eZPersistentObject::fetchObjectList()}
  */
 function productItems($asObject = true, array $sorts = null)
 {
     $productItems = eZPersistentObject::fetchObjectList(eZProductCollectionItem::definition(), null, array('productcollection_id' => $this->ProductCollectionID), $sorts, null, $asObject);
     $addedProducts = array();
     foreach ($productItems as $productItem) {
         $contentObject = $productItem->attribute('contentobject');
         if ($this->IgnoreVAT == true) {
             $vatValue = 0;
         } else {
             $vatValue = $productItem->attribute('vat_value');
         }
         if ($contentObject) {
             $nodeID = $contentObject->attribute('main_node_id');
             $objectName = $contentObject->attribute('name');
         } else {
             $nodeID = false;
             $objectName = $productItem->attribute('name');
         }
         $price = $productItem->attribute('price');
         if ($productItem->attribute('is_vat_inc')) {
             $priceExVAT = $price / (100 + $vatValue) * 100;
             $priceIncVAT = $price;
         } else {
             $priceExVAT = $price;
             $priceIncVAT = $price * (100 + $vatValue) / 100;
         }
         $count = $productItem->attribute('item_count');
         $discountPercent = $productItem->attribute('discount');
         $realPricePercent = (100 - $discountPercent) / 100;
         $addedProducts[] = array("id" => $productItem->attribute('id'), "vat_value" => $vatValue, "item_count" => $count, "node_id" => $nodeID, "object_name" => $objectName, "price_ex_vat" => $priceExVAT, "price_inc_vat" => $priceIncVAT, "discount_percent" => $discountPercent, "total_price_ex_vat" => round($count * $priceExVAT * $realPricePercent, 2), "total_price_inc_vat" => round($count * $priceIncVAT * $realPricePercent, 2), 'item_object' => $productItem);
     }
     return $addedProducts;
 }
    /**
     * Deletes the current object, all versions and translations, and corresponding tree nodes from the database
     *
     * Transaction unsafe. If you call several transaction unsafe methods you must enclose
     * the calls within a db transaction; thus within db->begin and db->commit.
     */
    function purge()
    {
        $delID = $this->ID;
        // Who deletes which content should be logged.
        eZAudit::writeAudit( 'content-delete', array( 'Object ID' => $delID, 'Content Name' => $this->attribute( 'name' ),
                                                      'Comment' => 'Purged the current object: eZContentObject::purge()' ) );

        $db = eZDB::instance();

        $db->begin();

        $attrOffset = 0;
        $attrLimit = 20;
        while (
            $contentobjectAttributes = $this->allContentObjectAttributes(
                $delID, true, array( 'limit' => $attrLimit, 'offset' => $attrOffset )
            )
        )
        {
            foreach ( $contentobjectAttributes as $contentobjectAttribute )
            {
                $dataType = $contentobjectAttribute->dataType();
                if ( !$dataType )
                    continue;
                $dataType->deleteStoredObjectAttribute( $contentobjectAttribute );
            }
            $attrOffset += $attrLimit;
        }

        eZInformationCollection::removeContentObject( $delID );

        eZContentObjectTrashNode::purgeForObject( $delID );

        $db->query( "DELETE FROM ezcontentobject_tree
             WHERE contentobject_id='$delID'" );

        $db->query( "DELETE FROM ezcontentobject_attribute
             WHERE contentobject_id='$delID'" );

        $db->query( "DELETE FROM ezcontentobject_version
             WHERE contentobject_id='$delID'" );

        $db->query( "DELETE FROM ezcontentobject_name
             WHERE contentobject_id='$delID'" );

        $db->query( "DELETE FROM ezcobj_state_link WHERE contentobject_id=$delID" );

        $db->query( "DELETE FROM ezcontentobject
             WHERE id='$delID'" );

        $db->query( "DELETE FROM eznode_assignment
             WHERE contentobject_id = '$delID'" );

        $db->query( "DELETE FROM ezuser_role
             WHERE contentobject_id = '$delID'" );

        $db->query( "DELETE FROM ezuser_discountrule
             WHERE contentobject_id = '$delID'" );

        eZContentObject::fixReverseRelations( $delID, 'remove' );

        eZSearch::removeObjectById( $delID );

        // Check if deleted object is in basket/wishlist
        $sql = 'SELECT DISTINCT ezproductcollection_item.productcollection_id
                FROM   ezbasket, ezwishlist, ezproductcollection_item
                WHERE  ( ezproductcollection_item.productcollection_id=ezbasket.productcollection_id OR
                         ezproductcollection_item.productcollection_id=ezwishlist.productcollection_id ) AND
                       ezproductcollection_item.contentobject_id=' . $delID;
        $rows = $db->arrayQuery( $sql );
        if ( count( $rows ) > 0 )
        {
            $countElements = 50;
            $deletedArray = array();
            // Create array of productCollectionID will be removed from ezwishlist and ezproductcollection_item
            foreach ( $rows as $row )
            {
                $deletedArray[] = $row['productcollection_id'];
            }
            // Split $deletedArray into several arrays with $countElements values
            $splitted = array_chunk( $deletedArray, $countElements );
            // Remove eZProductCollectionItem and eZWishList
            foreach ( $splitted as $value )
            {
                eZPersistentObject::removeObject( eZProductCollectionItem::definition(), array( 'productcollection_id' => array( $value, '' ) ) );
                eZPersistentObject::removeObject( eZWishList::definition(), array( 'productcollection_id' => array( $value, '' ) ) );
            }
        }
        $db->query( 'UPDATE ezproductcollection_item
                     SET contentobject_id = 0
                     WHERE  contentobject_id = ' . $delID );

        // Cleanup relations in two steps to avoid locking table for to long
        $db->query( "DELETE FROM ezcontentobject_link
                     WHERE from_contentobject_id = '$delID'" );

        $db->query( "DELETE FROM ezcontentobject_link
                     WHERE to_contentobject_id = '$delID'" );

        // Cleanup properties: LastVisit, Creator, Owner
        $db->query( "DELETE FROM ezuservisit
             WHERE user_id = '$delID'" );

        $db->query( "UPDATE ezcontentobject_version
             SET creator_id = 0
             WHERE creator_id = '$delID'" );

        $db->query( "UPDATE ezcontentobject
             SET owner_id = 0
             WHERE owner_id = '$delID'" );

        if ( isset( $GLOBALS["eZWorkflowTypeObjects"] ) and is_array( $GLOBALS["eZWorkflowTypeObjects"] ) )
        {
            $registeredTypes =& $GLOBALS["eZWorkflowTypeObjects"];
        }
        else
        {
            $registeredTypes = eZWorkflowType::fetchRegisteredTypes();
        }

        // Cleanup ezworkflow_event etc...
        foreach ( array_keys( $registeredTypes ) as $registeredTypeKey )
        {
            $registeredType = $registeredTypes[$registeredTypeKey];
            $registeredType->cleanupAfterRemoving( array( 'DeleteContentObject' => $delID ) );
        }

        $db->commit();
    }