%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/lightco1/www/plugins/csviaddon/virtuemart/com_virtuemart/model/export/
Upload File :
Create Path :
Current File : /home/lightco1/www/plugins/csviaddon/virtuemart/com_virtuemart/model/export/userinfo.php

<?php
/**
 * @package     CSVI
 * @subpackage  VirtueMart
 *
 * @author      Roland Dalmulder <contact@csvimproved.com>
 * @copyright   Copyright (C) 2006 - 2015 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 VirtueMart user info.
 *
 * @package     CSVI
 * @subpackage  VirtueMart
 * @since       6.0
 */
class Com_VirtuemartModelExportUserinfo extends CsviModelExports
{
	/**
	 * Export the data.
	 *
	 * @return  bool  True if body is exported | False if body is not exported.
	 *
	 * @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();

			// Group by fields
			$groupbyfields = json_decode($this->template->get('groupbyfields', '', 'string'));
			$groupby = array();

			if (isset($groupbyfields->name))
			{
				$groupbyfields = array_flip($groupbyfields->name);
			}
			else
			{
				$groupbyfields = array();
			}

			// Sort selected fields
			$sortfields = json_decode($this->template->get('sortfields', '', 'string'));
			$sortby = array();

			if (isset($sortfields->name))
			{
				$sortbyfields = array_flip($sortfields->name);
			}
			else
			{
				$sortbyfields = array();
			}

			foreach ($exportfields as $field)
			{
				switch ($field->field_name)
				{
					case 'virtuemart_user_id':
					case 'created_on':
					case 'modified_on':
					case 'locked_on':
					case 'created_by':
					case 'modified_by':
					case 'locked_by':
					case 'name':
					case 'agreed':
						$userfields[] = $this->db->quoteName('#__virtuemart_userinfos.' . $field->field_name);

						if (array_key_exists($field->field_name, $groupbyfields))
						{
							$groupby[] = $this->db->quoteName('#__virtuemart_userinfos.' . $field->field_name);
						}

						if (array_key_exists($field->field_name, $sortbyfields))
						{
							$sortby[] = $this->db->quoteName('#__virtuemart_userinfos.' . $field->field_name);
						}
						break;
					case 'full_name':
						$userfields[] = $this->db->quoteName('#__virtuemart_userinfos.first_name');
						$userfields[] = $this->db->quoteName('#__virtuemart_userinfos.middle_name');
						$userfields[] = $this->db->quoteName('#__virtuemart_userinfos.last_name');

						if (array_key_exists($field->field_name, $groupbyfields))
						{
							$groupby[] = $this->db->quoteName('#__virtuemart_userinfos.first_name');
							$groupby[] = $this->db->quoteName('#__virtuemart_userinfos.middle_name');
							$groupby[] = $this->db->quoteName('#__virtuemart_userinfos.last_name');
						}

						if (array_key_exists($field->field_name, $sortbyfields))
						{
							$sortby[] = $this->db->quoteName('#__virtuemart_userinfos.first_name');
							$sortby[] = $this->db->quoteName('#__virtuemart_userinfos.middle_name');
							$sortby[] = $this->db->quoteName('#__virtuemart_userinfos.last_name');
						}
						break;
					case 'id':
						$userfields[] = $this->db->quoteName('#__users.id');

						if (array_key_exists($field->field_name, $groupbyfields))
						{
							$groupby[] = $this->db->quoteName('#__users.id');
						}

						if (array_key_exists($field->field_name, $sortbyfields))
						{
							$sortby[] = $this->db->quoteName('#__users.id');
						}
						break;
					case 'usergroup_name':
						$userfields[] = $this->db->quoteName('#__virtuemart_userinfos.virtuemart_user_id');

						if (array_key_exists($field->field_name, $groupbyfields))
						{
							$groupby[] = $this->db->quoteName('#__virtuemart_userinfos.virtuemart_user_id');
						}

						if (array_key_exists($field->field_name, $sortbyfields))
						{
							$sortby[] = $this->db->quoteName('#__virtuemart_userinfos.virtuemart_user_id');
						}
						break;
					case 'virtuemart_vendor_id':
						$userfields[] = $this->db->quoteName('#__virtuemart_vmusers.virtuemart_vendor_id');

						if (array_key_exists($field->field_name, $groupbyfields))
						{
							$groupby[] = $this->db->quoteName('#__virtuemart_vmusers.virtuemart_vendor_id');
						}

						if (array_key_exists($field->field_name, $sortbyfields))
						{
							$sortby[] = $this->db->quoteName('#__virtuemart_vmusers.virtuemart_vendor_id');
						}
						break;
					case 'state_2_code':
					case 'state_3_code':
					case 'state_name':
						$userfields[] = $this->db->quoteName('#__virtuemart_userinfos.virtuemart_state_id');

						if (array_key_exists($field->field_name, $groupbyfields))
						{
							$groupby[] = $this->db->quoteName('#__virtuemart_userinfos.virtuemart_state_id');
						}

						if (array_key_exists($field->field_name, $sortbyfields))
						{
							$sortby[] = $this->db->quoteName('#__virtuemart_userinfos.virtuemart_state_id');
						}
						break;
					case 'country_2_code':
					case 'country_3_code':
					case 'country_name':
					case 'virtuemart_country_id':
						$userfields[] = $this->db->quoteName('#__virtuemart_userinfos.virtuemart_country_id');

						if (array_key_exists($field->field_name, $groupbyfields))
						{
							$groupby[] = $this->db->quoteName('#__virtuemart_userinfos.virtuemart_country_id');
						}

						if (array_key_exists($field->field_name, $sortbyfields))
						{
							$sortby[] = $this->db->quoteName('#__virtuemart_userinfos.virtuemart_country_id');
						}
						break;
					case 'custom':
						break;
					default:
						$userfields[] = $this->db->quoteName($field->field_name);

						if (array_key_exists($field->field_name, $groupbyfields))
						{
							$groupby[] = $this->db->quoteName($field->field_name);
						}

						if (array_key_exists($field->field_name, $sortbyfields))
						{
							$sortby[] = $this->db->quoteName($field->field_name);
						}
						break;
				}
			}

			/** Export SQL Query
			 * Get all products - including items
			 * as well as products without a price
			 */
			$userfields = array_unique($userfields);
			$query = $this->db->getQuery(true);
			$query->select(implode(",\n", $userfields));
			$query->from($this->db->quoteName('#__virtuemart_userinfos'));
			$query->leftJoin(
				$this->db->quoteName('#__virtuemart_vmusers')
				. ' ON ' . $this->db->quoteName('#__virtuemart_vmusers.virtuemart_user_id') . ' = ' . $this->db->quoteName('#__virtuemart_userinfos.virtuemart_user_id')
			);
			$query->leftJoin(
				$this->db->quoteName('#__virtuemart_vmuser_shoppergroups') . ' ON ' . $this->db->quoteName('#__virtuemart_vmuser_shoppergroups.virtuemart_user_id') . ' = ' . $this->db->quoteName('#__virtuemart_userinfos.virtuemart_user_id')
			);
			$query->leftJoin(
				$this->db->quoteName('#__virtuemart_vendors') . ' ON ' . $this->db->quoteName('#__virtuemart_vendors.virtuemart_vendor_id') . ' = ' . $this->db->quoteName('#__virtuemart_vmusers.virtuemart_vendor_id')
			);
			$query->leftJoin(
				$this->db->quoteName('#__virtuemart_shoppergroups') . ' ON ' . $this->db->quoteName('#__virtuemart_shoppergroups.virtuemart_shoppergroup_id') . ' = ' . $this->db->quoteName('#__virtuemart_vmuser_shoppergroups.virtuemart_shoppergroup_id')
			);
			$query->leftJoin(
				$this->db->quoteName('#__users')
				. ' ON ' . $this->db->quoteName('#__users.id') . ' = ' . $this->db->quoteName('#__virtuemart_userinfos.virtuemart_user_id')
			);

			// Filter by vendors
			$vendors = $this->template->get('vendors', false);

			if ($vendors && $vendors[0] != 'none')
			{
				$query->where($this->db->quoteName('#__virtuemart_vmusers.virtuemart_vendor_id') . ' IN (\'' . implode("','", $vendors) . '\')');
			}

			// Filter by permissions
			$permissions = $this->template->get('permissions', false);

			if ($permissions && $permissions[0] != 'none')
			{
				$query->where($this->db->quoteName('#__virtuemart_vmusers.perms') . ' IN (\'' . implode("','", $permissions) . '\')');
			}

			// Filter by address type
			$address = $this->template->get('userinfo_address', false);

			if ($address)
			{
				$query->where($this->db->quoteName('#__virtuemart_userinfos.address_type') . ' = ' . $this->db->quote(strtoupper($address)));
			}

			// Filter by user info modified date start
			$date = $this->template->get('userinfomdatestart', false);

			if ($date)
			{
				$userinfomdate = JFactory::getDate($date);
				$query->where($this->db->quoteName('#__virtuemart_userinfos.modified_on') . ' >= ' . $this->db->quote($userinfomdate->toSql()));
			}

			// Filter by user info date end
			$date = $this->template->get('userinfomdateend', false);

			if ($date)
			{
				$userinfomdate = JFactory::getDate($date);
				$query->where($this->db->quoteName('#__virtuemart_userinfos.modified_on') . ' <= ' . $this->db->quote($userinfomdate->toSql()));
			}

			// Filter by block status
			$blocked = $this->template->get('blocked', false);

			if ($blocked != '')
			{
				$query->where($this->db->quoteName('#__users.block') . ' = ' . (int) (($blocked) ? 1 : 0));
			}

			// Filter by activated status
			$activated = $this->template->get('activated', false);

			if ($activated !== false)
			{
				if ($activated == '0')
				{
					$query->where($query->length($this->db->quoteName('#__users.activation')) . ' = 32');

				}
				elseif ($activated == '1')
				{
					$query->where($this->db->quoteName('#__users.activation') . ' = ' . $this->db->quote(''));
				}
			}

			// Group the fields
			$groupby = array_unique($groupby);

			if (!empty($groupby))
			{
				$query->group($groupby);
			}

			// Sort set fields
			$sortby = array_unique($sortby);

			if (!empty($sortby))
			{
				$query->order($sortby);
			}

			// Add export limits
			$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 'created_on':
							case 'modified_on':
							case 'locked_on':
							case 'lastvisitdate':
								$date = JFactory::getDate($record->$fieldname);
								$fieldvalue = date($this->template->get('export_date_format'), $date->toUnix());
								break;
							case 'address_type':
								// Check if we have any content otherwise use the default value
								if (strlen(trim($fieldvalue)) == 0)
								{
									$fieldvalue = $field->default_value;
								}

								if ($fieldvalue == 'BT')
								{
									$fieldvalue = JText::_('COM_CSVI_BILLING_ADDRESS');
								}
								elseif ($fieldvalue == 'ST')
								{
									$fieldvalue = JText::_('COM_CSVI_SHIPPING_ADDRESS');
								}
								break;
							case 'full_name':
								$fieldvalue = str_replace('  ', ' ', $record->first_name . ' ' . $record->middle_name . ' ' . $record->last_name);
								break;
							case 'usergroup_name':
								$query = $this->db->getQuery(true)
									->select($this->db->quoteName('title'))
									->from($this->db->quoteName('#__usergroups'))
									->leftJoin(
										$this->db->quoteName('#__user_usergroup_map') . ' ON ' .
										$this->db->quoteName('#__user_usergroup_map.group_id') . ' = ' . $this->db->quoteName('#__usergroups.id')
									)
									->where($this->db->quoteName('user_id') . ' = ' . (int) $record->virtuemart_user_id);
								$this->db->setQuery($query);
								$fieldvalue = $this->db->loadResult();
								$this->log->add('Usergroup name');
								break;
							case 'state_2_code':
							case 'state_3_code':
							case 'state_name':
								$query = $this->db->getQuery(true);
								$query->select($fieldname);
								$query->from('#__virtuemart_states');
								$query->where('virtuemart_state_id = ' . $record->virtuemart_state_id);
								$this->db->setQuery($query);
								$fieldvalue = $this->db->loadResult();
								break;
							case 'country_2_code':
							case 'country_3_code':
							case 'country_name':
								$query = $this->db->getQuery(true);
								$query->select($fieldname);
								$query->from('#__virtuemart_countries');
								$query->where('virtuemart_country_id = ' . $record->virtuemart_country_id);
								$this->db->setQuery($query);
								$fieldvalue = $this->db->loadResult();
								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();
			}
		}
	}
}

Zerion Mini Shell 1.0