Current File : /home/pacjaorg/www/km/components/com_djclassifieds/controllers/registration.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 DJClassifiedsControllerRegistration extends JControllerLegacy
{
public function checkUsername()
{
header("Content-type: text/html; charset=utf-8");
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$filterInput = Joomla\CMS\Filter\InputFilter::getInstance();
$username = $app->input->getVar('username');
$user_id = $app->input->getInt('user_id', 0);
DJClassifiedsTheme::loadLanguage('com_users', null);
if(preg_match('#[<>"\'%;()&\\\\]|\\.\\./#', $username) || Joomla\String\StringHelper::strlen($username) < 2 || $filterInput->clean($username, 'TRIM') !== $username || Joomla\String\StringHelper::strlen($username) > 150){
echo JText::sprintf('JLIB_DATABASE_ERROR_VALID_AZ09', 2);
}else{
$query = "SELECT count(id) FROM #__users WHERE username=".$db->q($username)." ".($user_id ? "AND id!=".$user_id." " : "");;
$db->setQuery($query);
$u_exist = $db->loadResult();
if($u_exist){
echo JText::_('COM_DJCLASSIFIEDS_REGISTER_USERNAME_MESSAGE');
}
}
$app->close();
}
public function checkEmail()
{
header("Content-type: text/html; charset=utf-8");
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$email = $app->input->getVar('email');
$user_id = $app->input->getInt('user_id', 0);
DJClassifiedsTheme::loadLanguage('com_users', null);
$query = "SELECT count(id) FROM #__users WHERE email=".$db->q($email)." ".($user_id ? "AND id!=".$user_id." " : "");
$db->setQuery($query);
$u_exist = $db->loadResult();
if(!filter_var($email, FILTER_VALIDATE_EMAIL) || $u_exist){
echo JText::_('COM_DJCLASSIFIEDS_PROFILE_EMAIL1_MESSAGE');
}
$app->close();
}
public function checkPassword()
{
header("Content-type: text/html; charset=utf-8");
$app = JFactory::getApplication();
DJClassifiedsTheme::loadLanguage('com_users', null);
JModelLegacy::addIncludePath(JPATH_ROOT . '/components/com_users/models/','RegistrationModel');
JForm::addFormPath(JPATH_ROOT.'/components/com_users/models/forms');
JForm::addFormPath(JPATH_ROOT.'/components/com_users/forms');
$users_model = $this->getModel($name = 'Registration', $prefix = 'UsersModel');
$requestData = array();
$requestData['password1'] = $app->input->getStr('password1');
$form = $users_model->getForm();
$data = $users_model->validate($form, $requestData);
if($data === false){
$errors = $users_model->getErrors();
for($i = 0, $n = count($errors); $i < $n; $i++){
$err_text = $errors[$i] instanceof Exception ? $errors[$i]->getMessage() : $errors[$i];
if(strpos($err_text, JText::_('COM_DJCLASSIFIEDS_PROFILE_PASSWORD1_LABEL')) !== false){
echo DJClassifiedsAccess::passwordRuleTest($requestData['password1']);
break;
}
}
}
$app->close();
}
function save()
{
JTable::addIncludePath(JPATH_ROOT.'/administrator/components/com_djclassifieds/tables');
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$par = $app->getParams('com_djclassifieds');
$app->setUserState('djcf.registration.data', $app->input->post->getArray());
$row = JTable::getInstance('Profiles', 'DJClassifiedsTable');
$Itemid = $app->input->getInt('Itemid');
DJClassifiedsTheme::loadLanguage('com_users', null);
// Check for request forgeries.
//JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
// If registration is disabled - Redirect to login page.
if (JComponentHelper::getParams('com_users')->get('allowUserRegistration') == 0)
{
$this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
return false;
}
JModelLegacy::addIncludePath(JPATH_ROOT . '/components/com_users/models/','RegistrationModel');
JForm::addFormPath(JPATH_ROOT.'/components/com_users/models/forms');
JForm::addFormPath(JPATH_ROOT.'/components/com_users/forms');
JForm::addFieldPath(JPATH_ROOT . '/components/com_users/models/fields');
$users_model = $this->getModel($name = 'Registration', $prefix = 'UsersModel');
// Get the user data.
$requestData = $app->input->post->get('jform', array(), 'array');
// support form without email confrm
$requestData['email2'] = isset($requestData['email2']) ? $requestData['email2'] : $requestData['email1'];
// support form without password confrm
$requestData['password2'] = isset($requestData['password2']) ? $requestData['password2'] : $requestData['password1'];
// support form without name/username
if(isset($requestData['name']) && isset($requestData['username'])){
$u_name = $requestData['name'];
$u_username = $requestData['username'];
}elseif(isset($requestData['name']) && !isset($requestData['username'])){
//$u_name = $u_username = $requestData['name'];
$u_name = $requestData['name'];
$u_username = $requestData['email1'];
}elseif(isset($requestData['username']) && !isset($requestData['name'])){
$u_name = $u_username = $requestData['username'];
}else{
$u_name = $u_username = $requestData['email1'];
}
$requestData['name'] = $u_name;
$requestData['username'] = $u_username;
// Validate the posted data.
$form = $users_model->getForm();
if (!$form)
{
//JError::raiseError(500, $users_model->getError());
throw new Exception($users_model->getError());
return false;
}
// core 'User - Profile' plugin's conflict workaround
$form->removeGroup('profile');
// DJ-Catalog2 plugin's conflict workaround
$form->removeGroup('djcatalog2profile');
// core 'System - Privacy Consent' plugin's conflict workaround
$form->removeGroup('privacyconsent');
// core User Fields conflict workaround
$form->removeGroup('com_fields');
// core 'User - Terms' plugin's conflict workaround
$form->removeGroup('terms');
$app->triggerEvent('onBeforeValidateDJClassifiedsSaveUser', array(&$users_model, &$requestData));
$form->removeField('captcha');
$data = $users_model->validate($form, $requestData);
$app->triggerEvent('onBeforeDJClassifiedsSaveUser', array(&$users_model, &$data));
if(!DJClassifiedsAccess::isCaptchaValid()){
$data = false;
// $users_model->setError(JText::_('COM_DJCLASSIFIEDS_INVALID_CODE'));
}
// Check for validation 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');
}
}
}
// Save the data in the session.
$app->setUserState('com_users.registration.data', $requestData);
// Redirect back to the registration screen.
$this->setRedirect(JRoute::_('index.php?option=com_djclassifieds&view=registration&Itemid='.$Itemid, false));
return false;
}
if($par->get('gdpr_agreement',1)>0){
$app->input->set('gdpr_privacy_policy_checkbox',1);
}
// Attempt to save the data.
$return = $users_model->register($data);
// Check for errors.
if ($return === false)
{
// Save the data in the session.
$app->setUserState('com_users.registration.data', $data);
// Redirect back to the edit screen.
$this->setMessage($users_model->getError(), 'warning');
$this->setRedirect(JRoute::_('index.php?option=com_djclassifieds&view=registration&Itemid='.$Itemid, false));
return false;
}
$username = $db->Quote($db->escape($data['username']), true);
$query = "SELECT id FROM #__users u WHERE u.username=".$username;
$db->setQuery($query);
$user_id = $db->loadResult();
$row->bind($app->input->post->getArray());
$row->user_id = $user_id;
$row->region_id = DJClassifiedsTheme::getIdFromTree($app->input->getVar('regions'));
if(($row->region_id || $row->address) && (($row->latitude=='0.000000000000000' && $row->longitude=='0.000000000000000') || (!$row->latitude && !$row->longitude))){
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->latitude = $row->latitude ? $row->latitude : 0;
$row->longitude = $row->longitude ? $row->longitude : 0;
if(!$row->store()){
throw new Exception($row->getError());
}
$group_id = $app->input->getInt('group_id',0);
if($group_id){
$query = "SELECT * FROM #__djcf_fields_groups WHERE id=".$group_id." AND published=1 LIMIT 1";
$db->setQuery($query);
$group = $db->loadObject();
if($group->groups_assignment){
$ug_arr = explode(',', $group->groups_assignment);
foreach($ug_arr as $ug){
JUserHelper::addUserToGroup($user_id, $ug);
}
}
}
$query = "SELECT * FROM #__djcf_fields WHERE source=2";
$db->setQuery($query);
$fields_list = $db->loadObjectList();
DJClassifiedsField::saveFieldsValues($fields_list, $user_id);
DJClassifiedsImage::saveImage('profile', $user_id, $par->get('profile_img_path','/components/com_djclassifieds/images/profile/'), $app->input->files->get('new_avatar'), null, 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));
// Flush the data from the session.
$app->setUserState('com_users.registration.data', null);
$app->setUserState('djcf.registration.data', null);
// Redirect to the profile screen.
if ($return === 'adminactivate')
{
$this->setMessage(JText::_('COM_DJCLASSIFIEDS_REGISTRATION_COMPLETE_VERIFY'));
$this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
}
elseif ($return === 'useractivate')
{
$this->setMessage(JText::_('COM_DJCLASSIFIEDS_REGISTRATION_COMPLETE_ACTIVATE'));
$this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
}
else
{
$this->setMessage(JText::_('COM_DJCLASSIFIEDS_REGISTRATION_SAVE_SUCCESS'));
$this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
}
if($par->get('registration_redirect','0')){
$this->setRedirect(JRoute::_('index.php?Itemid='.$par->get('registration_redirect','0'), false));
}
$app->triggerEvent('onAfterDJClassifiedsSaveUser', array(&$data, $user_id));
return true;
}
public function getProfileFields()
{
header("Content-type: text/html; charset=utf-8");
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$group_id = $app->input->getInt('group_id', 0);
$query = $db->getQuery(true);
$query->select(array('f.*'))
->from('#__djcf_fields f')
->where('f.source = 2')
->where('f.published = 1')
->where('f.edition_blocked = 0')
->where('(f.group_id = "0" OR CONCAT(",",f.group_id,",") LIKE "%,'.$group_id.',%")')
->where('f.in_registration = 1')
->order('f.ordering');
$app->triggerEvent('onDJClassifiedsGetFormFieldsQuery', array(&$query, 'registration'));
$db->setQuery($query);
$fields_list = $db->loadObjectList();
foreach($fields_list as $f){
DJClassifiedsField::setFieldDefaultValue($f);
echo DJClassifiedsField::renderFormField($f, 0, $app->getUserState('djcf.registration.data'));
}
$app->close();
}
}