Current File : /home/pacjaorg/public_html/km/administrator/components/com_djclassifieds/models/profile.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 DJClassifiedsModelProfile extends DJClassifiedsAdminModel
{
protected $form_name = 'profile';
public function __construct($config = array())
{
$config['event_after_save'] = 'onDJClassifiedsModelAdminAfterSave';
$config['event_after_delete'] = 'onDJClassifiedsModelAdminAfterDelete';
parent::__construct($config);
}
public function getTable($type = 'Profiles', $prefix = 'DJClassifiedsTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
public function getForm($data = array(), $loadData = true)
{
// Get the form.
$form = $this->loadForm('com_djclassifieds.'.$this->form_name, $this->form_name, array('control' => 'jform', 'load_data' => $loadData));
if (empty($form)) {
return false;
}
return $form;
}
protected function loadFormData()
{
$app = JFactory::getApplication();
$data = JFactory::getApplication()->getUserState('com_djclassifieds.edit.'.$this->form_name.'.data', array());
if (empty($data)) {
$data = $this->getItem();
if(empty($data)){
$data = new stdClass();
}
$user_id = !empty($data->user_id) ? $data->user_id : $app->input->get('user_id');
if($user_id){
$jprofile = JFactory::getUser($user_id);
$data->avatar = $this->getAvatar();
$data->user_id = $jprofile->id;
$data->name = $jprofile->name;
$data->username = $jprofile->username;
$data->email = $jprofile->email;
$askmessages = $this->getAskMessages($user_id);
$askmessages_subform_arr = array();
foreach($askmessages as $key => $askmessage){
$askmessages_subform_arr['askmessages'.$key] = array(
'askmessage_id' => $askmessage->id,
'askmessage_user' => $askmessage->user_from ? ($askmessage->u_name ? $askmessage->u_name.' ('.$askmessage->user_from.')' : $askmessage->user_from) : JText::_('COM_DJCLASSIFIEDS_OPTION_GUEST'),
'askmessage_date' => $askmessage->date,
'askmessage_message' => $askmessage->message.($askmessage->custom_fields ? PHP_EOL.PHP_EOL.str_replace('<br />', PHP_EOL, $askmessage->custom_fields) : '')
);
}
$data->askmessages = $askmessages_subform_arr;
$data->disabled_emails = !empty($data->disabled_emails) ? explode(',', $data->disabled_emails) : array();
}
}
return $data;
}
protected function prepareTable($table)
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$id = $app->input->getArray()['jform']['user_id'];
$table->user_id = $id;
$query = $db->getQuery(true);
$query->select('*')->from('#__djcf_profiles')->where('user_id='.$id);
$db->setQuery($query);
$old = $db->loadObject();
/*
if($old->group_id != $table->group_id){
if($old->group_id){
$query = $db->getQuery(true);
$query->select('*')->from('#__djcf_fields_groups')->where('id='.$old->group_id);
$db->setQuery($query);
$prev_group = $db->loadObject();
if($prev_group->groups_assignment){
$ug_arr = explode(',', $prev_group->groups_assignment);
foreach($ug_arr as $ug){
JUserHelper::removeUserFromGroup($id, $ug);
}
}
}
if($table->group_id){
$query = $db->getQuery(true);
$query->select('*')->from('#__djcf_fields_groups')->where('id='.$table->group_id);
$db->setQuery($query);
$new_group = $db->loadObject();
if($new_group->groups_assignment){
$ug_arr = explode(',', $new_group->groups_assignment);
foreach($ug_arr as $ug){
JUserHelper::addUserToGroup($id, $ug);
}
}
}
}
*/
if($table->verified && (!$old || !$old->verified)){
$this->changeUserGroupOnVerify($id);
}
if(($table->region_id || $table->address) && (($table->latitude=='0.000000000000000' && $table->longitude=='0.000000000000000') || (!$table->latitude && !$table->longitude))){
if($table->post_code){
$loc_coord = DJClassifiedsGeocode::getLocationPostCode($table->post_code, $table->address, $table->region_id);
}else{
$loc_coord = DJClassifiedsGeocode::getLocation($table->address, $table->region_id);
}
if(!empty($loc_coord)){
$table->latitude = $loc_coord['lat'];
$table->longitude = $loc_coord['lng'];
}
}
$table->group_id = $table->group_id ? $table->group_id : 0;
$table->region_id = $table->region_id ? $table->region_id : 0;
$table->disabled_emails = $table->disabled_emails ? implode(',', $table->disabled_emails) : '';
}
function changeUserGroupOnVerify($user_id)
{
$app = JFactory::getApplication();
$par = JComponentHelper::getParams('com_djclassifieds');
$user = Jfactory::getUser($user_id);
$verify_ug_map = $par->get('verify_ug_map');
if($verify_ug_map){
foreach($verify_ug_map as $ug_map){
$before_match = false;
if(!$ug_map->ug_before){
$before_match = true;
}else{
foreach($ug_map->ug_before as $ug_before){
if(in_array($ug_before, $user->groups)){
$before_match = true;
JUserHelper::removeUserFromGroup($user_id, $ug_before);
$app->enqueueMessage(JText::sprintf('COM_DJCLASSIFIEDS_USER_X_REMOVED_FROM_USER_GROUP_Y', $user_id, $ug_before), 'success');
}
}
}
if($before_match){
foreach($ug_map->ug_after as $ug_after){
if(!in_array($ug_after, $user->groups)){
JUserHelper::addUserToGroup($user_id, $ug_after);
$app->enqueueMessage(JText::sprintf('COM_DJCLASSIFIEDS_USER_X_ADDED_TO_USER_GROUP_Y', $user_id, $ug_after), 'success');
}
}
}
}
}
}
function getAvatar()
{
$db = JFactory::getDBO();
$app = JFactory::getApplication();
$user_id = $app->input->get('user_id', '0');
$query = "SELECT * FROM #__djcf_images WHERE item_id=".$user_id." AND type='profile'";
$db->setQuery($query);
$avatar = $db->loadObject();
if($avatar){
$thumb_path = $avatar->path.$avatar->name.'_ths.'.$avatar->ext;
$avatar->image_path = file_exists(JPATH_ROOT.$thumb_path) ? $thumb_path : $avatar->path.$avatar->name.'.'.$avatar->ext;
}
return $avatar;
}
function getAskMessages($user_id)
{
$db = JFactory::getDBO();
$query = "SELECT a.*, u.name as u_name "
."FROM #__djcf_profiles_msg a "
."LEFT JOIN #__users u ON a.user_from=u.id "
."WHERE a.user_to=".$user_id." "
."ORDER BY a.date DESC";
$db->setQuery($query);
$askmessages = $db->loadObjectList();
return $askmessages;
}
}