%PDF- %PDF-
Direktori : /home/lightco1/www/plugins/csviaddon/users/com_users/model/export/ |
Current File : /home/lightco1/www/plugins/csviaddon/users/com_users/model/export/user.php |
<?php /** * @package CSVI * @subpackage JoomlaUsers * * @author Roland Dalmulder <contact@csvimproved.com> * @copyright Copyright (C) 2006 - 2016 RolandD Cyber Produksi. All rights reserved. * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html * @link http://www.csvimproved.com */ defined('_JEXEC') or die; require_once JPATH_ADMINISTRATOR . '/components/com_csvi/models/exports.php'; /** * Export Joomla Users. * * @package CSVI * @subpackage JoomlaUsers * @since 6.0 */ class Com_UsersModelExportUser extends CsviModelExports { /** * Export the data. * * @return void. * * @since 6.0 */ protected function exportBody() { if (parent::exportBody()) { // Build something fancy to only get the fieldnames the user wants $userfields = array(); $exportfields = $this->fields->getFields(); foreach ($exportfields as $field) { switch ($field->field_name) { case 'fullname': $userfields[] = $this->db->quoteName('u.name', 'fullname'); break; case 'usergroup_name': $userfields[] = $this->db->quoteName('id'); break; case 'custom': break; default: $userfields[] = $this->db->quoteName($field->field_name); break; } } // Build the query $userfields = array_unique($userfields); $query = $this->db->getQuery(true); $query->select(implode(",\n", $userfields)); $query->from($this->db->quoteName('#__users', 'u')); // Filter by published state $user_state = $this->template->get('user_state'); if ($user_state != '*') { $query->where($this->db->quoteName('u.block') . ' = ' . (int) $user_state); } // Filter by active state $user_active = $this->template->get('user_active'); if ($user_active == '0') { $query->where($this->db->quoteName('u.activation') . ' = ' . $this->db->quote('')); } elseif ($user_active == '1') { $query->where($this->db->quoteName('u.activation') . ' = ' . $this->db->quote('32')); } // Filter by user group $user_groups = $this->template->get('user_group'); if ($user_groups && $user_groups[0] != '*') { $query->leftJoin( $this->db->quoteName('#__user_usergroup_map', 'map2') . ' ON ' . $this->db->quoteName('map2.user_id') . ' = ' . $this->db->quoteName('u.id') ); if (isset($user_groups)) { $query->where($this->db->quoteName('map2.group_id') . ' IN (' . implode(',', $user_groups) . ')'); } } // Filter on range $user_range = $this->template->get('user_range', 'user'); if ($user_range != '*') { jimport('joomla.utilities.date'); // Get UTC for now. $dNow = new JDate; $dStart = clone $dNow; switch ($user_range) { case 'past_week': $dStart->modify('-7 day'); break; case 'past_1month': $dStart->modify('-1 month'); break; case 'past_3month': $dStart->modify('-3 month'); break; case 'past_6month': $dStart->modify('-6 month'); break; case 'post_year': case 'past_year': $dStart->modify('-1 year'); break; case 'today': // Ranges that need to align with local 'days' need special treatment. $app = JFactory::getApplication(); $offset = $app->get('offset'); // Reset the start time to be the beginning of today, local time. $dStart = new JDate('now', $offset); $dStart->setTime(0, 0, 0); // Now change the timezone back to UTC. $tz = new DateTimeZone('GMT'); $dStart->setTimezone($tz); break; } if ($user_range == 'post_year') { $query->where($this->db->quoteName('u.registerDate') . ' < ' . $this->db->quote($dStart->format('Y-m-d H:i:s'))); } else { $query->where( $this->db->quoteName('u.registerDate') . ' >= ' . $this->db->quote($dStart->format('Y-m-d H:i:s')) . ' AND u.registerDate <=' . $this->db->quote($dNow->format('Y-m-d H:i:s')) ); } } // Add a limit if user wants us to $limits = $this->getExportLimit(); // Execute the query $this->csvidb->setQuery($query, $limits['offset'], $limits['limit']); $this->log->add('Export query' . $query->__toString(), false); // Check if there are any records $logcount = $this->csvidb->getNumRows(); if ($logcount > 0) { while ($record = $this->csvidb->getRow()) { $this->log->incrementLinenumber(); foreach ($exportfields as $field) { $fieldname = $field->field_name; // Set the field value if (isset($record->$fieldname)) { $fieldvalue = $record->$fieldname; } else { $fieldvalue = ''; } // Process the field switch ($fieldname) { case 'usergroup_name': $query = $this->db->getQuery(true); $query->select($this->db->quoteName('title')); $query->from($this->db->quoteName('#__usergroups')); $query->leftJoin( $this->db->quoteName('#__user_usergroup_map') . ' ON ' . $this->db->quoteName('#__user_usergroup_map.group_id') . ' = ' . $this->db->quoteName('#__usergroups.id') ); $query->where($this->db->quoteName('user_id') . ' = ' . $record->id); $this->db->setQuery($query); $groups = $this->db->loadColumn(); if (is_array($groups)) { $fieldvalue = implode('|', $groups); } else { $fieldvalue = ''; } break; } // Store the field value $this->fields->set($field->csvi_templatefield_id, $fieldvalue); } // Output the data $this->addExportFields(); // Output the contents $this->writeOutput(); } } else { $this->addExportContent(JText::_('COM_CSVI_NO_DATA_FOUND')); // Output the contents $this->writeOutput(); } } } }