Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * @copyright Metaways Infosystems GmbH, 2011
- * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
- * @copyright Aimeos (aimeos.org), 2015
- * @package MShop
- * @subpackage Order
- */
- namespace Aimeos\MShop\Order\Manager\Base\Address;
- /**
- * Default order address manager implementation.
- *
- * @package MShop
- * @subpackage Order
- */
- class MarchioAddressManager
- extends \Aimeos\MShop\Order\Manager\Base\Address\Standard
- {
- protected function createItemBase(array $values = array())
- {
- return new \Aimeos\MShop\Order\Item\Base\Address\MarchioAddressItem($values);
- }
- public function saveItem(\Aimeos\MShop\Common\Item\Iface $item, $fetch = true)
- {
- $iface = '\\Aimeos\\MShop\\Order\\Item\\Base\\Address\\Iface';
- if (!($item instanceof $iface)) {
- throw new \Aimeos\MShop\Order\Exception(sprintf('Object is not of required type "%1$s"', $iface));
- }
- if (!$item->isModified()) {
- return;
- }
- $context = $this->getContext();
- $dbm = $context->getDatabaseManager();
- $dbname = $this->getResourceName();
- $conn = $dbm->acquire($dbname);
- try {
- $id = $item->getId();
- $date = date('Y-m-d H:i:s');
- if ($id === null) {
- /** mshop/order/manager/base/address/standard/insert/mysql
- * Inserts a new order record into the database table
- *
- * @see mshop/order/manager/base/address/standard/insert/ansi
- */
- /** mshop/order/manager/base/address/standard/insert/ansi
- * Inserts a new order record into the database table
- *
- * Items with no ID yet (i.e. the ID is NULL) will be created in
- * the database and the newly created ID retrieved afterwards
- * using the "newid" SQL statement.
- *
- * The SQL statement must be a string suitable for being used as
- * prepared statement. It must include question marks for binding
- * the values from the order item to the statement before they are
- * sent to the database server. The number of question marks must
- * be the same as the number of columns listed in the INSERT
- * statement. The order of the columns must correspond to the
- * order in the saveItems() method, so the correct values are
- * bound to the columns.
- *
- * The SQL statement should conform to the ANSI standard to be
- * compatible with most relational database systems. This also
- * includes using double quotes for table and column names.
- *
- * @param string SQL statement for inserting records
- * @since 2014.03
- * @category Developer
- * @see mshop/order/manager/base/address/standard/update/ansi
- * @see mshop/order/manager/base/address/standard/newid/ansi
- * @see mshop/order/manager/base/address/standard/delete/ansi
- * @see mshop/order/manager/base/address/standard/search/ansi
- * @see mshop/order/manager/base/address/standard/count/ansi
- */
- $path = 'mshop/order/manager/base/address/standard/insert';
- } else {
- /** mshop/order/manager/base/address/standard/update/mysql
- * Updates an existing order record in the database
- *
- * @see mshop/order/manager/base/address/standard/update/ansi
- */
- /** mshop/order/manager/base/address/standard/update/ansi
- * Updates an existing order record in the database
- *
- * Items which already have an ID (i.e. the ID is not NULL) will
- * be updated in the database.
- *
- * The SQL statement must be a string suitable for being used as
- * prepared statement. It must include question marks for binding
- * the values from the order item to the statement before they are
- * sent to the database server. The order of the columns must
- * correspond to the order in the saveItems() method, so the
- * correct values are bound to the columns.
- *
- * The SQL statement should conform to the ANSI standard to be
- * compatible with most relational database systems. This also
- * includes using double quotes for table and column names.
- *
- * @param string SQL statement for updating records
- * @since 2014.03
- * @category Developer
- * @see mshop/order/manager/base/address/standard/insert/ansi
- * @see mshop/order/manager/base/address/standard/newid/ansi
- * @see mshop/order/manager/base/address/standard/delete/ansi
- * @see mshop/order/manager/base/address/standard/search/ansi
- * @see mshop/order/manager/base/address/standard/count/ansi
- */
- $path = 'mshop/order/manager/base/address/standard/update';
- /*
- * TODO: NEXT
- * 1 - Set new config with mysql statement.
- * 2 - Update bindings
- * 3 - Check if values are updated correctly on DB.
- * 4 - Solve bug (see https://aimeos.org/help/post3349.html#p3349)
- * 5 - Finish payment sending "real" data
- * 6 - Complete payment with credit card.
- * 7 - Handle PS notifications
- * 8 - Validate if order status are updated as status changes in PS.
- * 9 - Commit. Be Happy!
- * */
- }
- $stmt = $this->getCachedStatement($conn, $path);
- $stmt->bind(1, $item->getBaseId(), \Aimeos\MW\DB\Statement\Base::PARAM_INT);
- $stmt->bind(2, $context->getLocale()->getSiteId(), \Aimeos\MW\DB\Statement\Base::PARAM_INT);
- $stmt->bind(3, $item->getAddressId(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(4, $item->getType(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(5, $item->getCompany(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(6, $item->getVatID(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(7, $item->getSalutation(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(8, $item->getTitle(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(9, $item->getFirstname(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(10, $item->getLastname(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(11, $item->getAddress1(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(12, $item->getAddress2(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(13, $item->getAddress3(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(14, $item->getPostal(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(15, $item->getCity(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(16, $item->getState(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(17, $item->getCountryId(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(18, $item->getLanguageId(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(19, $item->getTelephone(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(20, $item->getEmail(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(21, $item->getTelefax(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(22, $item->getWebsite(), \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(23, $item->getFlag(), \Aimeos\MW\DB\Statement\Base::PARAM_INT);
- $stmt->bind(24, $date, \Aimeos\MW\DB\Statement\Base::PARAM_STR);
- $stmt->bind(25, $context->getEditor());
- if ($id !== null) {
- $stmt->bind(26, $id, \Aimeos\MW\DB\Statement\Base::PARAM_INT);
- $item->setId($id);
- } else {
- $stmt->bind(26, $date); // ctime
- }
- $stmt->execute()->finish();
- if ($id === null && $fetch === true) {
- /** mshop/order/manager/base/address/standard/newid/mysql
- * Retrieves the ID generated by the database when inserting a new record
- *
- * @see mshop/order/manager/base/address/standard/newid/ansi
- */
- /** mshop/order/manager/base/address/standard/newid/ansi
- * Retrieves the ID generated by the database when inserting a new record
- *
- * As soon as a new record is inserted into the database table,
- * the database server generates a new and unique identifier for
- * that record. This ID can be used for retrieving, updating and
- * deleting that specific record from the table again.
- *
- * For MySQL:
- * SELECT LAST_INSERT_ID()
- * For PostgreSQL:
- * SELECT currval('seq_mord_id')
- * For SQL Server:
- * SELECT SCOPE_IDENTITY()
- * For Oracle:
- * SELECT "seq_mord_id".CURRVAL FROM DUAL
- *
- * There's no way to retrive the new ID by a SQL statements that
- * fits for most database servers as they implement their own
- * specific way.
- *
- * @param string SQL statement for retrieving the last inserted record ID
- * @since 2014.03
- * @category Developer
- * @see mshop/order/manager/base/address/standard/insert/ansi
- * @see mshop/order/manager/base/address/standard/update/ansi
- * @see mshop/order/manager/base/address/standard/delete/ansi
- * @see mshop/order/manager/base/address/standard/search/ansi
- * @see mshop/order/manager/base/address/standard/count/ansi
- */
- $path = 'mshop/order/manager/base/address/standard/newid';
- $item->setId($this->newId($conn, $path));
- }
- $dbm->release($conn, $dbname);
- } catch (\Exception $e) {
- $dbm->release($conn, $dbname);
- throw $e;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement