1: <?php
2: /**
3: * Magento
4: *
5: * NOTICE OF LICENSE
6: *
7: * This source file is subject to the Open Software License (OSL 3.0)
8: * that is bundled with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://opensource.org/licenses/osl-3.0.php
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@magentocommerce.com so we can send you a copy immediately.
14: *
15: * DISCLAIMER
16: *
17: * Do not edit or add to this file if you wish to upgrade Magento to newer
18: * versions in the future. If you wish to customize Magento for your
19: * needs please refer to http://www.magentocommerce.com for more information.
20: *
21: * @category Mage
22: * @package Mage_Oauth
23: * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24: * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25: */
26:
27: /**
28: * OAuth token resource model
29: *
30: * @category Mage
31: * @package Mage_Oauth
32: * @author Magento Core Team <core@magentocommerce.com>
33: */
34: class Mage_Oauth_Model_Resource_Token extends Mage_Core_Model_Resource_Db_Abstract
35: {
36: /**
37: * Initialize resource model
38: *
39: * @return void
40: */
41: protected function _construct()
42: {
43: $this->_init('oauth/token', 'entity_id');
44: }
45:
46: /**
47: * Clean up old authorized tokens for specified consumer-user pairs
48: *
49: * @param Mage_Oauth_Model_Token $exceptToken Token just created to exclude from delete
50: * @return int The number of affected rows
51: */
52: public function cleanOldAuthorizedTokensExcept(Mage_Oauth_Model_Token $exceptToken)
53: {
54: if (!$exceptToken->getId() || !$exceptToken->getAuthorized()) {
55: Mage::throwException('Invalid token to except');
56: }
57: $adapter = $this->_getWriteAdapter();
58: $where = $adapter->quoteInto(
59: 'authorized = 1 AND consumer_id = ?', $exceptToken->getConsumerId(), Zend_Db::INT_TYPE
60: );
61: $where .= $adapter->quoteInto(' AND entity_id <> ?', $exceptToken->getId(), Zend_Db::INT_TYPE);
62:
63: if ($exceptToken->getCustomerId()) {
64: $where .= $adapter->quoteInto(' AND customer_id = ?', $exceptToken->getCustomerId(), Zend_Db::INT_TYPE);
65: } elseif ($exceptToken->getAdminId()) {
66: $where .= $adapter->quoteInto(' AND admin_id = ?', $exceptToken->getAdminId(), Zend_Db::INT_TYPE);
67: } else {
68: Mage::throwException('Invalid token to except');
69: }
70: return $adapter->delete($this->getMainTable(), $where);
71: }
72:
73: /**
74: * Delete old entries
75: *
76: * @param int $minutes
77: * @return int
78: */
79: public function deleteOldEntries($minutes)
80: {
81: if ($minutes > 0) {
82: $adapter = $this->_getWriteAdapter();
83:
84: return $adapter->delete(
85: $this->getMainTable(),
86: $adapter->quoteInto(
87: 'type = "' . Mage_Oauth_Model_Token::TYPE_REQUEST . '" AND created_at <= ?',
88: Varien_Date::formatDate(time() - $minutes * 60)
89: )
90: );
91: } else {
92: return 0;
93: }
94: }
95: }
96: