Искать  
 
   
 
members данные
Отправлено: 18 Март 2010 12:56 P.M.   [ Игнорировать ]
Member
RankRankRank
Всего сообщений:  191
Зарегистрирован  2009-03-17

клиент попросил присылать админу уведомление о залогиненном юзере с набором кастом филдов.
сделал.
по пути возник вопрос - чем отличаются last_visit   от last_activity в таблице exp_members
и почему отсутствует join_date в $SESS->userdata (вопрос риторический)?

Профиль
 
 
Отправлено: 19 Март 2010 05:21 P.M.   [ Игнорировать ]   [ # 1 ]
Sr. Member
Avatar
RankRankRankRank
Всего сообщений:  463
Зарегистрирован  2009-08-07
Nik - 18 Март 2010 12:56 P.M.

клиент попросил присылать админу уведомление о залогиненном юзере с набором кастом филдов.
сделал.

можешь поделиться.. тоже самое предстоит делать smile

 Подпись 

Ум - как бюст: надо иметь, но выпячивать не стоит
SSD Cloud Hosting

Профиль
 
 
Отправлено: 19 Март 2010 08:29 P.M.   [ Игнорировать ]   [ # 2 ]
Member
RankRankRank
Всего сообщений:  191
Зарегистрирован  2009-03-17

Опубликую тут, вообще полезные функции получились.

Не мудрствуя лукаво берем экстеншен Twomile_login_redirect_ext (ext.twomile_login_redirect_ext.php) который: Gives control over user destination after login or logout.

добавляем в этот класс выколупываение кастом филдов и отправку имейла на адрес указанный в уведомлениях о вновь зарегистрированных юзерах:

function _mfields()
    
{
        
global $DB;
        
        if ( 
count$this->mfields ) > ) return $this->mfields;
        
        
$query $DB->query("SELECT m_field_id, m_field_name, m_field_label, m_field_type, m_field_list_items, m_field_required, m_field_public, m_field_fmt FROM exp_member_fields");
                
        foreach (
$query->result as $row)
        

            $this
->mfields[$row['m_field_name']] = array(
                                            
'id'        => $row['m_field_id'],
                                            
'name'        => $row['m_field_name'],
                                            
'label'        => $row['m_field_label'],
                                            
'type'        => $row['m_field_type'],
                                            
'list'        => $row['m_field_list_items'],
                                            
'required'    => $row['m_field_required'],
                                            
'public'    => $row['m_field_public'],
                                            
'format'    => $row['m_field_fmt']
            
);
        
}
        
        
return $this->mfields;
    
}
    
function _memberData()
    
{
        
global $REGX;
        
//foreach ( $this->_custmfields($this->member_id) as $key => $val )
        
foreach ( $this->custmfields as $key => $val )
            
{
                $r 
.= "\n " $REGX->form_prep($key) .": "$REGX->form_prep($val);
            
}
        
return $r;
    
}
    
    
function _custmfields($member_id)
    
{
        
global $DB;
        
$custom    $DB->query"SELECT * FROM exp_member_data WHERE member_id = '".$member_id."'" );
            
            foreach ( 
$this->_mfields() as $key => $val )
            
{
                $this
->custmfields[$val['label']] = (isset($custom->row['m_field_id_'.$val['id']])) ? $custom->row['m_field_id_'.$val['id']] '';
            
}
        
         
return $this->custmfields;
    
}
    
function _sendEmail($msg,$subj)
    
{
        
global $PREFS$REGX$SESS;
            
        
$notify_address = ( $notify != '' ) ? $notify$PREFS->ini('mbr_notification_emails');
        
$notify_address    $REGX->remove_extra_commas$notify_address );  
    
        
$this->_custmfields($SESS->userdata['member_id']);
            
        
$to $notify_address;
            
        
$msg .= ":\n\n Last visited ".date("F j, Y, g:i a",$SESS->userdata['last_visit']);
        
$msg .= ":\n\n Last activity ".date("F j, Y, g:i a",$SESS->userdata['last_activity']);
        
$msg .= "\n\n".$this->_memberData();
            
        if ( ! 
class_exists('EEmail') )
        
{
            
require PATH_CORE.'core.email'.EXT;
        
}
        $email 
= new EEmail;
                 
            
$email->initialize();
            
$email->wordwrap true;
            
$email->from($PREFS->ini('webmaster_email'), $PREFS->ini('webmaster_name'));    
            
$email->to($to); 
            
$email->subject($subj);    
            
$email->message($msg);        
            
$email->Send();
    


вызываем отправку уведомления непосредственно перед редиректом:

$this->_sendEmail('Info of logged user','User Logged'); 
Профиль
 
 
Отправлено: 22 Март 2010 11:12 A.M.   [ Игнорировать ]   [ # 3 ]
Sr. Member
Avatar
RankRankRankRank
Всего сообщений:  463
Зарегистрирован  2009-08-07

Спасибо за пример..
Кстати, нашел интересный вариант.. реализация этой идеи с отображением в самой админке EE.
Logging Actions in your ExpressionEngine Add-ons

 Подпись 

Ум - как бюст: надо иметь, но выпячивать не стоит
SSD Cloud Hosting

Профиль