Current File : /home/pacjaorg/public_html/km/components/com_djclassifieds/controllers/profileedit.php
<?php
/**
 * @package DJ-Classifieds
 * @copyright Copyright (C) DJ-Extensions.com, All rights reserved.
 * @license http://www.gnu.org/licenses GNU/GPL
 * @author url: http://dj-extensions.com
 * @author email contact@dj-extensions.com
 */

defined('_JEXEC') or die;

class DJClassifiedsControllerProfileedit extends JControllerLegacy
{	
	function save()
	{
		JTable::addIncludePath(JPATH_ROOT.'/administrator/components/com_djclassifieds/tables');
		$app = JFactory::getApplication();
		$user = JFactory::getUser();				
		$db = JFactory::getDBO();
		$par = $app->getParams('com_djclassifieds');
		$row = JTable::getInstance('Profiles', 'DJClassifiedsTable');

		$lang = JFactory::getLanguage();
		$lang->load('com_users', JPATH_SITE, null, true);
		
		JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_users/models', 'UsersModel');
		$users_model = JModelLegacy::getInstance('Profile', 'UsersModel');
		
		if(!$user->id){
			DJClassifiedsSEO::redirectLogIn(DJClassifiedsSEO::getCategoryRoute('0:all'));
		}
		
		$requestData = array();
		$requestData['id'] = $user->id;
		$requestData['name'] = $app->input->getStr('u_name','') ? $app->input->getStr('u_name','') : $user->name;
		$requestData['username'] = $app->input->getStr('u_username','') ? $app->input->getStr('u_username','') : $user->username;
		$requestData['password1'] = $app->input->getStr('u_password1','');
		$requestData['password2'] = $app->input->exists('u_password2') ? $app->input->getStr('u_password2','') : $requestData['password1'];
		$requestData['email1'] = $app->input->getStr('u_email1','') ? $app->input->getStr('u_email1','') : $user->email;
		$requestData['email2'] = $app->input->exists('u_email2') ? $app->input->getStr('u_email2','') : $requestData['email1'];
		$requestData['params'] = array();
		$requestData['profile'] = array();

		if($user->username == $user->email && $app->input->exists('u_email1') && !$app->input->exists('u_username')){ // if email used as username - update it
			$requestData['username'] = $requestData['email1'];
		}
		
		JForm::addFormPath(JPATH_ROOT.'/components/com_users/models/forms');
		JForm::addFormPath(JPATH_ROOT.'/components/com_users/forms');
		$users_form = $users_model->getForm();
		
		if (!$users_form){
			//JError::raiseError(500, $users_model->getError());	
			throw new Exception($users_model->getError());
			return false;
		}
		
		// Send an object which can be modified through the plugin event
		$objData = (object) $requestData;
		
		$app->triggerEvent('onContentNormaliseRequestData',array('com_users.user', $objData, $users_form));
		$requestData = (array) $objData;
		
		// get additional core users form data
		$post_arr = $app->input->post->getArray();
		foreach($users_form->getFieldsets() as $name => $group){
			// core User Fields support
			$name = strpos($name, 'fields-') !== false ? 'com_fields' : $name;

			if(!isset($post_arr['jform'][$name])){
				$users_form->removeGroup($name);
			}else{
				foreach($post_arr['jform'][$name] as $k => $v){
					$requestData[$name][$k] = $v;
				}
			}
		}

		// Validate the posted data.
		$data = $users_model->validate($users_form, $requestData);
		
		// Check for errors.
		if ($data === false)
		{
			// Get the validation messages.
			$errors = $users_model->getErrors();
		
			if($errors){
				// Push up to three validation messages out to the user.
				for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++)
				{
					if ($errors[$i] instanceof Exception)
					{
						$app->enqueueMessage($errors[$i]->getMessage(), 'warning');
					}
					else
					{
						$app->enqueueMessage($errors[$i], 'warning');
					}
				}
			}
		
			// Unset the passwords.
			unset($requestData['password1'], $requestData['password2']);
		
			// Save the data in the session.
			$app->setUserState('com_users.edit.profile.data', $requestData);
		
			// Redirect back to the edit screen.
			$userId = (int) $app->getUserState('com_users.edit.profile.id');									
			
			$this->setRedirect(JRoute::_(DJClassifiedsSEO::getViewUri('profileedit'), false));
		
			return false;
		}
		
		// Attempt to save the data.
		$return = $users_model->save($data);
		
		// Check for errors.
		if ($return === false)
		{
			// Save the data in the session.
			$app->setUserState('com_users.edit.profile.data', $data);		
			// Redirect back to the edit screen.
			$this->setMessage(JText::sprintf('COM_DJCLASSIFIEDS_PROFILE_SAVE_FAILED', $users_model->getError()), 'warning');
			$this->setRedirect(JRoute::_(DJClassifiedsSEO::getViewUri('profileedit'), false));
		
			return false;
		}
		
		$query = "SELECT * FROM #__djcf_profiles WHERE user_id=".$user->id." LIMIT 1";
		$db->setQuery($query);
		$old_profile = $db->loadObject();
		
		$row->bind($app->input->post->getArray());

		$row->user_id = $user->id;

		$row->region_id = DJClassifiedsTheme::getIdFromTree($app->input->getVar('regions'));

		if($app->input->get('latitude',0) > 0 && $app->input->get('longitude',0) > 0){
			$row->latitude = $app->input->get('latitude');
			$row->longitude = $app->input->get('longitude');
		}elseif($row->region_id || $row->address){
			if($row->post_code){
				$loc_coord = DJClassifiedsGeocode::getLocationPostCode($row->post_code, $row->address, $row->region_id);
			}else{
				$loc_coord = DJClassifiedsGeocode::getLocation($row->address, $row->region_id);
			}
			if(!empty($loc_coord)){
				$row->latitude = $loc_coord['lat'];
				$row->longitude = $loc_coord['lng'];
			}
		}
		
		$row->verified = 0;
		if(isset($old_profile->verified) && $old_profile->verified==1){
			$row->verified = 1;
		}
		
		if(!$row->store()){
			throw new Exception($row->getError());
		}

		DJClassifiedsImage::saveImage('profile', $user->id, $par->get('profile_img_path','/components/com_djclassifieds/images/profile/'), $app->input->files->get('new_avatar'), $app->input->get('del_avatar'), array('th' => array('w' => $par->get('profth_width',120), 'h' => $par->get('profth_height',120)), 'ths' => array('w' => $par->get('prof_smallth_width',50), 'h' => $par->get('prof_smallth_height',50))), $par->get('img_maxsize', 0), $par->get('watermark',0));
		
		$query = "SELECT * FROM #__djcf_fields WHERE source=2 AND edition_blocked=0";
		$db->setQuery($query);
		$fields_list = $db->loadObjectList();

		DJClassifiedsField::saveFieldsValues($fields_list, $user->id);
			
		$app->triggerEvent('onAfterDJClassifiedsSaveProfile', array(&$user));
		
		$redirect = $par->get('profile_save_redirect','0') ? 'index.php?Itemid='.$par->get('profile_save_redirect','0') : DJClassifiedsSEO::getViewUri('profile', array('force_profile' => true));

		$app->enqueueMessage(JTExt::_('COM_DJCLASSIFIEDS_PROFILE_SAVED_SUCCESSFULLY'), 'success');	
		$app->redirect(JRoute::_($redirect, false));
	}

	public function getProfileFields()
	{
		header("Content-type: text/html; charset=utf-8");
		$app = JFactory::getApplication();
		$db = JFactory::getDBO();
		$user = JFactory::getUser();

		$group_id = $app->input->post->getInt('group_id', 0);
		
		$query = $db->getQuery(true);
		$query->select(array('fv.*', 'f.*'))
			->from('#__djcf_fields f')
			->join('LEFT', '#__djcf_fields_values_profile fv ON fv.field_id=f.id AND fv.user_id='.$user->id)
			->where('f.source = 2')
			->where('f.published = 1')
			->where('f.edition_blocked = 0')
			->order('f.ordering');

		$app->triggerEvent('onDJClassifiedsGetFormFieldsQuery', array(&$query, 'profileedit'));

		$db->setQuery($query);
		$fields_list = $db->loadObjectList();
							
		foreach($fields_list as $f){
			if(!DJClassifiedsAccess::hasAccessToFormField($f, $group_id)){
				continue;
			}
			if($f->user_id === null){
				DJClassifiedsField::setFieldDefaultValue($f, $user->id);
			}

			echo DJClassifiedsField::renderFormField($f, $user->id);
		}

		$app->close();
	}
}
Site is undergoing maintenance

PACJA Events

Maintenance mode is on

Site will be available soon. Thank you for your patience!