Current File : /home/pacjaorg/public_html/kmm/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();
}
}