?
Path : /home/admin/public_html/old/board/administrator/components/com_jupgrade/includes/ |
Current File : /home/admin/public_html/old/board/administrator/components/com_jupgrade/includes/migrate_users.php |
<?php /** * jUpgrade * * @version $Id$ * @package MatWare * @subpackage com_jupgrade * @author Matias Aguirre <maguirre@matware.com.ar> * @link http://www.matware.com.ar * @copyright Copyright 2006 - 2011 Matias Aguire. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ /** * Upgrade class for Users * * This class takes the users from the existing site and inserts them into the new site. * * @since 0.4.4 */ class jUpgradeUsers extends jUpgrade { /** * @var string The name of the source database table. * @since 0.4.4 */ protected $source = '#__users'; /** * Get the raw data for this part of the upgrade. * * @return array Returns a reference to the source data array. * @since 0.4.4 * @throws Exception */ protected function &getSourceData() { $rows = parent::getSourceData( '*', null, 'id' ); // Do some custom post processing on the list. foreach ($rows as &$row) { $row['params'] = $this->convertParams($row['params']); // Remove unused fields. unset($row['gid']); } return $rows; } /** * A hook to be able to modify params prior as they are converted to JSON. * * @param object $object A reference to the parameters as an object. * * @return void * @since 0.4. * @throws Exception */ protected function convertParamsHook(&$object) { $object->timezone = 'UTC'; } } /** * Upgrade class for Usergroups * * This class maps the old 1.5 usergroups to the new 1.6 system. * * @package MatWare * @subpackage com_jupgrade * @since 0.4.4 */ class jUpgradeUsergroups extends jUpgrade { /** * @var string The name of the source database table. * @since 0.4.4 */ protected $source = '#__core_acl_aro_groups'; /** * @var string The name of the destination database table. * @since 0.4.4 */ protected $destination = '#__usergroups'; /** * Get the raw data for this part of the upgrade. * * @return array * @since 0.4.4 * @throws Exception */ protected function &getSourceData() { $rows = parent::getSourceData( // Custom where clause. // We only want to get groups that we don't know about from custom group management extensions. // Our assumption is the core groups have not been tampered with (if they were, Joomla would not run well). '*', null, $this->db_old->quoteName('id').' > 30' ); // Set up the mapping table for the old groups to the new groups. $map = self::getUsergroupIdMap(); // Do some custom post processing on the list. // The schema for old groups is: id, parent_id, name, lft, rgt, value // The schema for new groups is: id, parent_id, lft, rgt, title foreach ($rows as &$row) { // Note, if we are here, these are custom groups we didn't know about. if (isset($row['parent_id'])) { if ($row['parent_id'] <= 30) { $row['parent_id'] = $map[$row['parent_id']]; } } // Use the old groups name for the new title. $row['title'] = $row['name']; // Remove unused fields. unset($row['name']); unset($row['value']); unset($row['lft']); unset($row['rgt']); } // TODO: Don't forget to do a rebuild on the groups table! return $rows; } /** * The public entry point for the class. * * @return void * @since 0.4.4 * @throws Exception */ public function upgrade() { if (parent::upgrade()) { // Rebuild the usergroup nested set values. $table = JTable::getInstance('Usergroup', 'JTable', array('dbo' => $this->db_new)); if (!$table->rebuild()) { echo JError::raiseError(500, $table->getError()); } } } } /** * Upgrade class for the Usergroup Map * * This translates the group mapping table from 1.5 to 1.6. * Group id's up to 30 need to be mapped to the new group id's. * Group id's over 30 can be used as is. * User id's are maintained in this upgrade process. * * @package MatWare * @subpackage com_jupgrade * @since 0.4.4 */ class jUpgradeUsergroupMap extends jUpgrade { /** * @var string The name of the source database table. * @since 0.4.4 */ protected $source = '#__core_acl_groups_aro_map'; /** * @var string The name of the destination database table. * @since 0.4.4 */ protected $destination = '#__user_usergroup_map'; /** * Get the raw data for this part of the upgrade. * * @return array * @since 0.4.4 * @throws Exception */ protected function &getSourceData() { $rows = parent::getSourceData(); // Set up the mapping table for the old groups to the new groups. $groupMap = jUpgradeUsergroups::getUsergroupIdMap(); // Set up the mapping table for the ARO id's to the new user id's. $userMap = $this->getUserIdAroMap(); // Do some custom post processing on the list. // The schema for old group map is: group_id, section_value, aro_id // The schema for new groups is: user_id, group_id foreach ($rows as &$row) { $row['user_id'] = $userMap[$row['aro_id']]; // Note, if we are here, these are custom groups we didn't know about. if ($row['group_id'] <= 30) { $row['group_id'] = $groupMap[$row['group_id']]; } // Remove unused fields. unset($row['section_value']); unset($row['aro_id']); } return $rows; } /** * Method to get a map of the User id to ARO id. * * @returns array An array of the user id's keyed by ARO id. * @since 0.4.4 * @throws Exception on database error. */ protected function getUserIdAroMap() { $this->db_old->setQuery( 'SELECT id, value' . ' FROM #__core_acl_aro' . ' ORDER BY id' ); $map = $this->db_old->loadAssocList('id', 'value'); $error = $this->db_old->getErrorMsg(); // Check for query error. if ($error) { throw new Exception($error); } return $map; } }