Overview

Packages

  • currencysymbol
  • MAbout
  • Mage
    • Admin
    • Adminhtml
    • AdminNotification
    • Api
    • Api2
    • Authorizenet
    • Backup
    • Bundle
    • Captcha
    • Catalog
    • CatalogIndex
    • CatalogInventory
    • CatalogRule
    • CatalogSearch
    • Centinel
    • Checkout
    • Cms
    • Compiler
    • Connect
    • Contacts
    • Core
    • Cron
    • CurrencySymbol
    • Customer
    • Dataflow
    • Directory
    • DirtectPost
    • Downloadable
    • Eav
    • GiftMessage
    • GoogleAnalytics
    • GoogleBase
    • GoogleCheckout
    • ImportExport
    • Index
    • Install
    • Log
    • Media
    • Newsletter
    • Oauth
    • Page
    • PageCache
    • Paygate
    • Payment
    • Paypal
    • PaypalUk
    • Persistent
    • Poll
    • ProductAlert
    • Rating
    • Reports
    • Review
    • Rss
    • Rule
    • Sales
    • SalesRule
    • Sedfriend
    • Sendfriend
    • Shipping
    • Sitemap
    • Tag
    • Tax
    • Usa
    • Weee
    • Widget
    • Wishlist
    • XmlConnect
  • None
  • Phoenix
    • Moneybookers
  • PHP
  • Zend
    • Date
    • Mime
    • XmlRpc

Classes

  • Mage_Api_Controller_Action
  • Mage_Api_Helper_Data
  • Mage_Api_IndexController
  • Mage_Api_Model_Acl
  • Mage_Api_Model_Acl_Assert_Ip
  • Mage_Api_Model_Acl_Assert_Time
  • Mage_Api_Model_Acl_Resource
  • Mage_Api_Model_Acl_Role
  • Mage_Api_Model_Acl_Role_Generic
  • Mage_Api_Model_Acl_Role_Group
  • Mage_Api_Model_Acl_Role_Registry
  • Mage_Api_Model_Acl_Role_User
  • Mage_Api_Model_Config
  • Mage_Api_Model_Mysql4_Acl
  • Mage_Api_Model_Mysql4_Acl_Role
  • Mage_Api_Model_Mysql4_Acl_Role_Collection
  • Mage_Api_Model_Mysql4_Permissions_Collection
  • Mage_Api_Model_Mysql4_Role
  • Mage_Api_Model_Mysql4_Role_Collection
  • Mage_Api_Model_Mysql4_Roles
  • Mage_Api_Model_Mysql4_Roles_Collection
  • Mage_Api_Model_Mysql4_Roles_User_Collection
  • Mage_Api_Model_Mysql4_Rules
  • Mage_Api_Model_Mysql4_Rules_Collection
  • Mage_Api_Model_Mysql4_User
  • Mage_Api_Model_Mysql4_User_Collection
  • Mage_Api_Model_Resource_Abstract
  • Mage_Api_Model_Resource_Acl
  • Mage_Api_Model_Resource_Acl_Role
  • Mage_Api_Model_Resource_Acl_Role_Collection
  • Mage_Api_Model_Resource_Permissions_Collection
  • Mage_Api_Model_Resource_Role
  • Mage_Api_Model_Resource_Role_Collection
  • Mage_Api_Model_Resource_Roles
  • Mage_Api_Model_Resource_Roles_Collection
  • Mage_Api_Model_Resource_Roles_User_Collection
  • Mage_Api_Model_Resource_Rules
  • Mage_Api_Model_Resource_Rules_Collection
  • Mage_Api_Model_Resource_User
  • Mage_Api_Model_Resource_User_Collection
  • Mage_Api_Model_Role
  • Mage_Api_Model_Roles
  • Mage_Api_Model_Rules
  • Mage_Api_Model_Server
  • Mage_Api_Model_Server_Adapter_Soap
  • Mage_Api_Model_Server_Adapter_Xmlrpc
  • Mage_Api_Model_Server_Handler
  • Mage_Api_Model_Server_Handler_Abstract
  • Mage_Api_Model_Server_V2_Adapter_Soap
  • Mage_Api_Model_Server_V2_Handler
  • Mage_Api_Model_Server_WSI_Adapter_Soap
  • Mage_Api_Model_Server_WSI_Handler
  • Mage_Api_Model_Session
  • Mage_Api_Model_User
  • Mage_Api_Model_Wsdl_Config
  • Mage_Api_Model_Wsdl_Config_Base
  • Mage_Api_SoapController
  • Mage_Api_V2_SoapController
  • Mage_Api_XmlrpcController

Interfaces

  • Mage_Api_Model_Server_Adapter_Interface

Exceptions

  • Mage_Api_Exception
  • Overview
  • Package
  • Class
  • Tree
  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_Api
 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: /**
 29:  * ACL user resource
 30:  *
 31:  * @category    Mage
 32:  * @package     Mage_Api
 33:  * @author      Magento Core Team <core@magentocommerce.com>
 34:  */
 35: class Mage_Api_Model_Resource_User extends Mage_Core_Model_Resource_Db_Abstract
 36: {
 37:     /**
 38:      * Resource initialization
 39:      *
 40:      */
 41:     protected function _construct()
 42:     {
 43:         $this->_init('api/user', 'user_id');
 44:     }
 45: 
 46:     /**
 47:      * Initialize unique fields
 48:      *
 49:      * @return Mage_Api_Model_Resource_User
 50:      */
 51:     protected function _initUniqueFields()
 52:     {
 53:         $this->_uniqueFields = array(
 54:             array(
 55:                 'field' => 'email',
 56:                 'title' => Mage::helper('api')->__('Email')
 57:             ),
 58:             array(
 59:                 'field' => 'username',
 60:                 'title' => Mage::helper('api')->__('User Name')
 61:             ),
 62:         );
 63:         return $this;
 64:     }
 65: 
 66:     /**
 67:      * Authenticate user by $username and $password
 68:      *
 69:      * @param Mage_Api_Model_User $user
 70:      * @return Mage_Api_Model_Resource_User
 71:      */
 72:     public function recordLogin(Mage_Api_Model_User $user)
 73:     {
 74:         $data = array(
 75:             'lognum'  => $user->getLognum()+1,
 76:         );
 77:         $condition = $this->_getReadAdapter()->quoteInto('user_id=?', $user->getUserId());
 78:         $this->_getWriteAdapter()->update($this->getTable('api/user'), $data, $condition);
 79:         return $this;
 80:     }
 81: 
 82:     /**
 83:      * Record api user session
 84:      *
 85:      * @param Mage_Api_Model_User $user
 86:      * @return Mage_Api_Model_Resource_User
 87:      */
 88:     public function recordSession(Mage_Api_Model_User $user)
 89:     {
 90:         $readAdapter    = $this->_getReadAdapter();
 91:         $writeAdapter   = $this->_getWriteAdapter();
 92:         $select = $readAdapter->select()
 93:             ->from($this->getTable('api/session'), 'user_id')
 94:             ->where('user_id = ?', $user->getId())
 95:             ->where('sessid = ?', $user->getSessid());
 96:         $loginDate = now();
 97:         if ($readAdapter->fetchRow($select)) {
 98:             $writeAdapter->update(
 99:                 $this->getTable('api/session'),
100:                 array ('logdate' => $loginDate),
101:                 $readAdapter->quoteInto('user_id = ?', $user->getId()) . ' AND '
102:                 . $readAdapter->quoteInto('sessid = ?', $user->getSessid())
103:             );
104:         } else {
105:             $writeAdapter->insert(
106:                 $this->getTable('api/session'),
107:                 array(
108:                     'user_id' => $user->getId(),
109:                     'logdate' => $loginDate,
110:                     'sessid' => $user->getSessid()
111:                 )
112:             );
113:         }
114:         $user->setLogdate($loginDate);
115:         return $this;
116:     }
117: 
118:     /**
119:      * Clean old session
120:      *
121:      * @param Mage_Api_Model_User $user
122:      * @return Mage_Api_Model_Resource_User
123:      */
124:     public function cleanOldSessions(Mage_Api_Model_User $user)
125:     {
126:         $readAdapter    = $this->_getReadAdapter();
127:         $writeAdapter   = $this->_getWriteAdapter();
128:         $timeout        = Mage::getStoreConfig('api/config/session_timeout');
129:         $timeSubtract     = $readAdapter->getDateAddSql(
130:             'logdate',
131:             $timeout,
132:             Varien_Db_Adapter_Interface::INTERVAL_SECOND);
133:         $writeAdapter->delete(
134:             $this->getTable('api/session'),
135:             array('user_id = ?' => $user->getId(), $readAdapter->quote(now()) . ' > '.$timeSubtract)
136:         );
137:         return $this;
138:     }
139: 
140:     /**
141:      * Load data by username
142:      *
143:      * @param string $username
144:      * @return array
145:      */
146:     public function loadByUsername($username)
147:     {
148:         $adapter = $this->_getReadAdapter();
149:         $select = $adapter->select()->from($this->getTable('api/user'))
150:             ->where('username=:username');
151:         return $adapter->fetchRow($select, array('username'=>$username));
152:     }
153: 
154:     /**
155:      * load by session id
156:      *
157:      * @param string $sessId
158:      * @return array
159:      */
160:     public function loadBySessId($sessId)
161:     {
162:         $result = array();
163:         $adapter = $this->_getReadAdapter();
164:         $select = $adapter->select()
165:             ->from($this->getTable('api/session'))
166:             ->where('sessid = ?', $sessId);
167:         if ($apiSession = $adapter->fetchRow($select)) {
168:             $selectUser = $adapter->select()
169:                 ->from($this->getTable('api/user'))
170:                 ->where('user_id = ?', $apiSession['user_id']);
171:                 if ($user = $adapter->fetchRow($selectUser)) {
172:                     $result = array_merge($user, $apiSession);
173:                 }
174:         }
175:         return $result;
176:     }
177: 
178:     /**
179:      * Clear by session
180:      *
181:      * @param string $sessid
182:      * @return Mage_Api_Model_Resource_User
183:      */
184:     public function clearBySessId($sessid)
185:     {
186:         $this->_getWriteAdapter()->delete(
187:             $this->getTable('api/session'),
188:             array('sessid = ?' => $sessid)
189:         );
190:         return $this;
191:     }
192: 
193:     /**
194:      * Retrieve api user role data if it was assigned to role
195:      *
196:      * @param int | Mage_Api_Model_User $user
197:      * @return null | array
198:      */
199:     public function hasAssigned2Role($user)
200:     {
201:         $userId = null;
202:         $result = null;
203:         if (is_numeric($user)) {
204:             $userId = $user;
205:         } else if ($user instanceof Mage_Core_Model_Abstract) {
206:             $userId = $user->getUserId();
207:         }
208: 
209:         if ($userId) {
210:             $adapter = $this->_getReadAdapter();
211:             $select = $adapter->select();
212:             $select->from($this->getTable('api/role'))
213:                 ->where('parent_id > 0 AND user_id = ?', $userId);
214:             $result = $adapter->fetchAll($select);
215:         }
216:         return $result;
217:     }
218: 
219:     /**
220:      * Action before save
221:      *
222:      * @param Mage_Core_Model_Abstract $user
223:      * @return Mage_Api_Model_Resource_User
224:      */
225:     protected function _beforeSave(Mage_Core_Model_Abstract $user)
226:     {
227:         if (!$user->getId()) {
228:             $user->setCreated(now());
229:         }
230:         $user->setModified(now());
231:         return $this;
232:     }
233: 
234:     /**
235:      * Delete the object
236:      *
237:      * @param Mage_Core_Model_Abstract $user
238:      * @return boolean
239:      */
240:     public function delete(Mage_Core_Model_Abstract $user)
241:     {
242:         $dbh = $this->_getWriteAdapter();
243:         $uid = (int) $user->getId();
244:         $dbh->beginTransaction();
245:         try {
246:             $dbh->delete($this->getTable('api/user'), array('user_id = ?' => $uid));
247:             $dbh->delete($this->getTable('api/role'), array('user_id = ?' => $uid));
248:         } catch (Mage_Core_Exception $e) {
249:             throw $e;
250:             return false;
251:         } catch (Exception $e) {
252:             $dbh->rollBack();
253:             return false;
254:         }
255:         $dbh->commit();
256:         return true;
257:     }
258: 
259:     /**
260:      * Save user roles
261:      *
262:      * @param Mage_Core_Model_Abstract $user
263:      * @return unknown
264:      */
265:     public function _saveRelations(Mage_Core_Model_Abstract $user)
266:     {
267:         $rolesIds = $user->getRoleIds();
268:         if (!is_array($rolesIds) || count($rolesIds) == 0) {
269:             return $user;
270:         }
271: 
272:         $adapter = $this->_getWriteAdapter();
273: 
274:         $adapter->beginTransaction();
275: 
276:         try {
277:             $adapter->delete(
278:                 $this->getTable('api/role'),
279:                 array('user_id = ?' => (int) $user->getId()));
280:             foreach ($rolesIds as $rid) {
281:                 $rid = intval($rid);
282:                 if ($rid > 0) {
283:                     //$row = $this->load($user, $rid);
284:                 } else {
285:                     $row = array('tree_level' => 0);
286:                 }
287:                 $row = array('tree_level' => 0);
288: 
289:                 $data = array(
290:                     'parent_id'     => $rid,
291:                     'tree_level'    => $row['tree_level'] + 1,
292:                     'sort_order'    => 0,
293:                     'role_type'     => Mage_Api_Model_Acl::ROLE_TYPE_USER,
294:                     'user_id'       => $user->getId(),
295:                     'role_name'     => $user->getFirstname()
296:                 );
297:                 $adapter->insert($this->getTable('api/role'), $data);
298:             }
299:             $adapter->commit();
300:         } catch (Mage_Core_Exception $e) {
301:             throw $e;
302:         } catch (Exception $e) {
303:             $adapter->rollBack();
304:         }
305:         return $this;
306:     }
307: 
308:     /**
309:      * Retrieve roles data
310:      *
311:      * @param Mage_Core_Model_Abstract $user
312:      * @return array
313:      */
314:     public function _getRoles(Mage_Core_Model_Abstract $user)
315:     {
316:         if (!$user->getId()) {
317:             return array();
318:         }
319:         $table   = $this->getTable('api/role');
320:         $adapter = $this->_getReadAdapter();
321:         $select  = $adapter->select()
322:             ->from($table, array())
323:             ->joinLeft(
324:                 array('ar' => $table),
325:                 $adapter->quoteInto(
326:                     "ar.role_id = {$table}.parent_id AND ar.role_type = ?",
327:                     Mage_Api_Model_Acl::ROLE_TYPE_GROUP),
328:                 array('role_id'))
329:             ->where("{$table}.user_id = ?", $user->getId());
330: 
331:         return (($roles = $adapter->fetchCol($select)) ? $roles : array());
332:     }
333: 
334:     /**
335:      * Add Role
336:      *
337:      * @param Mage_Core_Model_Abstract $user
338:      * @return Mage_Api_Model_Resource_User
339:      */
340:     public function add(Mage_Core_Model_Abstract $user)
341:     {
342:         $adapter = $this->_getWriteAdapter();
343:         $aRoles  = $this->hasAssigned2Role($user);
344:         if (sizeof($aRoles) > 0) {
345:             foreach ($aRoles as $idx => $data) {
346:                 $adapter->delete(
347:                     $this->getTable('api/role'),
348:                     array('role_id = ?' => $data['role_id'])
349:                 );
350:             }
351:         }
352: 
353:         if ($user->getId() > 0) {
354:             $role = Mage::getModel('api/role')->load($user->getRoleId());
355:         } else {
356:             $role = new Varien_Object(array('tree_level' => 0));
357:         }
358:         $adapter->insert($this->getTable('api/role'), array(
359:             'parent_id' => $user->getRoleId(),
360:             'tree_level'=> ($role->getTreeLevel() + 1),
361:             'sort_order'=> 0,
362:             'role_type' => Mage_Api_Model_Acl::ROLE_TYPE_USER,
363:             'user_id'   => $user->getUserId(),
364:             'role_name' => $user->getFirstname()
365:         ));
366: 
367:         return $this;
368:     }
369: 
370:     /**
371:      * Delete from role
372:      *
373:      * @param Mage_Core_Model_Abstract $user
374:      * @return Mage_Api_Model_Resource_User
375:      */
376:     public function deleteFromRole(Mage_Core_Model_Abstract $user)
377:     {
378:         if ($user->getUserId() <= 0) {
379:             return $this;
380:         }
381:         if ($user->getRoleId() <= 0) {
382:             return $this;
383:         };
384: 
385:         $adapter   = $this->_getWriteAdapter();
386:         $table     = $this->getTable('api/role');
387: 
388:         $condition = array(
389:             "{$table}.user_id = ?"  => $user->getUserId(),
390:             "{$table}.parent_id = ?"=> $user->getRoleId()
391:         );
392:         $adapter->delete($table, $condition);
393:         return $this;
394:     }
395: 
396:     /**
397:      * Retrieve roles which exists for user
398:      *
399:      * @param Mage_Core_Model_Abstract $user
400:      * @return array
401:      */
402:     public function roleUserExists(Mage_Core_Model_Abstract $user)
403:     {
404:         $result = array();
405:         if ($user->getUserId() > 0) {
406:             $adapter    = $this->_getReadAdapter();
407:             $select     = $adapter->select()->from($this->getTable('api/role'))
408:                 ->where('parent_id = ?', $user->getRoleId())
409:                 ->where('user_id = ?', $user->getUserId());
410:             $result = $adapter->fetchCol($select);
411:         }
412:         return $result;
413:     }
414: 
415:     /**
416:      * Check if user not unique
417:      *
418:      * @param Mage_Core_Model_Abstract $user
419:      * @return array
420:      */
421:     public function userExists(Mage_Core_Model_Abstract $user)
422:     {
423:         $usersTable = $this->getTable('api/user');
424:         $adapter    = $this->_getReadAdapter();
425:         $condition  = array(
426:             $adapter->quoteInto("{$usersTable}.username = ?", $user->getUsername()),
427:             $adapter->quoteInto("{$usersTable}.email = ?", $user->getEmail()),
428:         );
429:         $select = $adapter->select()
430:             ->from($usersTable)
431:             ->where(implode(' OR ', $condition))
432:             ->where($usersTable.'.user_id != ?', (int) $user->getId());
433:         return $adapter->fetchRow($select);
434:     }
435: }
436: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0