2014-01-28 64 views
1

我需要發送一個自定義電子郵件給用戶在我的moodle網站上註冊後,但我希望它具有所有用戶iformation顯示,我一直在尋找很多,發現這link,它用用戶名發送一個自定義的電子郵件給管理員,但我已經試圖發送更多的信息,比如我添加的自定義字段,甚至像手機這樣的默認字段,但我找不到方法,我希望你能幫助我。電子郵箱moodle用戶數據註冊後

回答

3

您可以使用'user_created'事件。 http://docs.moodle.org/dev/Events_API#Users

沒有測試過這一點,但你可以創建一個本地插件

創建本地文件夾

/local/newuser/ 

創建events.php

/local/newuser/db/events.php 

粘貼到events.php這

defined('MOODLE_INTERNAL') || die(); 

$handlers = array (
    'user_created' => array (
     'handlerfile'  => '/local/newuser/lib.php', 
     'handlerfunction' => 'local_newuser_user_created', 
     'schedule'   => 'instant', 
    ), 
); 

創建lib.php文件

/local/newuser/lib.php 

粘貼到lib.php這

defined('MOODLE_INTERNAL') || die(); 

function local_newuser_user_created($user) { 
    global $DB; 

    $body = ''; 

    // Original fields. 
    foreach ($user as $field => $value) { 
     $body .= $field . ' = ' . $value . "\n"; 
    } 

    // Custom fields. 
    $sql = "SELECT f.id, f.name, d.data 
      FROM {user_info_field} f 
      LEFT JOIN {user_info_data} d ON d.fieldid = f.id AND d.userid = :userid"; 
    $customfields = $DB->get_records_sql($sql, array('userid' => $user->id); 
    foreach ($customfields as $customfield) { 
     $body .= $customfield->name . ' = ' . $customfield->data . "\n"; 
    } 

    // Send the email to the admin user 
    $admin = get_admin(); 
    $subject = get_string('newuser'); 
    email_to_user($admin, $admin, $subject, $body); 

    return true; 
} 

最後創建version.php

/local/newuser/version.php 

並粘貼此

defined('MOODLE_INTERNAL') || die(); 

$plugin->version = 2014012901; // Plugin version. 
$plugin->requires = 2013051402; // Moodle version. 
$plugin->component = 'local_newuser'; // Full name of the plugin (used for diagnostics). 

然後在Moodle中轉到站點管理 - >通知來添加代碼。然後創建一個用戶和管理員應該收到一封電子郵件:)

+0

有關當前Moodle Events API 2.0的信息位於此處:https://docs.moodle.org/dev/Event_2 –

+0

我們可以爲Moodle 3.3+更新此更新嗎? –

0

你的鏈接功能啓動這樣的:
功能send_confirmation_email($用戶){

的「$用戶」變量它是一個對象,應該有你需要的一切:
$用戶>名字, $ user-> lastname,$ user-> phone1,$ user-> phone2等。檢出數據庫表mdl_user。

+0

我要試試這個,但是這將加載由我建立的自定義字段?或者我需要創建另一個對象? – Drintios

0

謝謝羅素英格蘭結合你的建議和鏈接我有我想出了這個函數爲moodlelib.php,它需要清理,但它現在的工作

function send_confirmation_email($user) { 


global $CFG; 
global $DB; 

$countries = array("AF"=>"AFGHANISTAN", 
"AX"=>"ALAND ISLANDS", 
"AL"=>"ALBANIA", 
"DZ"=>"ALGERIA", 
"AS"=>"AMERICAN SAMOA", 
"AD"=>"ANDORRA", 
"AO"=>"ANGOLA", 
"AI"=>"ANGUILLA", 
"AQ"=>"ANTARCTICA", 
"AG"=>"ANTIGUA AND BARBUDA", 
"AR"=>"ARGENTINA", 
"AM"=>"ARMENIA", 
"AW"=>"ARUBA", 
"AU"=>"AUSTRALIA", 
"AT"=>"AUSTRIA", 
"AZ"=>"AZERBAIJAN", 
"BS"=>"BAHAMAS", 
"BH"=>"BAHRAIN", 
"BD"=>"BANGLADESH", 
"BB"=>"BARBADOS", 
"BY"=>"BELARUS", 
"BE"=>"BELGIUM", 
"BZ"=>"BELIZE", 
"BJ"=>"BENIN", 
"BM"=>"BERMUDA", 
"BT"=>"BHUTAN", 
"BO"=>"BOLIVIA", 
"BA"=>"BOSNIA AND HERZEGOVINA", 
"BW"=>"BOTSWANA", 
"BV"=>"BOUVET ISLAND", 
"BR"=>"BRAZIL", 
"IO"=>"BRITISH INDIAN OCEAN TERRITORY", 
"BN"=>"BRUNEI DARUSSALAM", 
"BG"=>"BULGARIA", 
"BF"=>"BURKINA FASO", 
"BI"=>"BURUNDI", 
"KH"=>"CAMBODIA", 
"CM"=>"CAMEROON", 
"CA"=>"CANADA", 
"CV"=>"CAPE VERDE", 
"CI"=>"CâTE D'IVOIRE", 
"KY"=>"CAYMAN ISLANDS", 
"CF"=>"CENTRAL AFRICAN REPUBLIC", 
"TD"=>"CHAD", 
"CL"=>"CHILE", 
"CN"=>"CHINA", 
"CX"=>"CHRISTMAS ISLAND", 
"CC"=>"COCOS (KEELING) ISLANDS", 
"CO"=>"COLOMBIA", 
"KM"=>"COMOROS", 
"CG"=>"CONGO", 
"CD"=>"CONGO, THE DEMOCRATIC REPUBLIC OF THE", 
"CK"=>"COOK ISLANDS", 
"CR"=>"COSTA RICA", 
"HR"=>"CROATIA", 
"CU"=>"CUBA", 
"CY"=>"CYPRUS", 
"CZ"=>"CZECH REPUBLIC", 
"DK"=>"DENMARK", 
"DJ"=>"DJIBOUTI", 
"DM"=>"DOMINICA", 
"DO"=>"DOMINICAN REPUBLIC", 
"EC"=>"ECUADOR", 
"EG"=>"EGYPT", 
"SV"=>"EL SALVADOR", 
"GQ"=>"EQUATORIAL GUINEA", 
"ER"=>"ERITREA", 
"EE"=>"ESTONIA", 
"ET"=>"ETHIOPIA", 
"FK"=>"FALKLAND ISLANDS (MALVINAS)", 
"FO"=>"FAROE ISLANDS", 
"FJ"=>"FIJI", 
"FI"=>"FINLAND", 
"FR"=>"FRANCE", 
"GF"=>"FRENCH GUIANA", 
"PF"=>"FRENCH POLYNESIA", 
"TF"=>"FRENCH SOUTHERN TERRITORIES", 
"GA"=>"GABON", 
"GM"=>"GAMBIA", 
"GE"=>"GEORGIA", 
"DE"=>"GERMANY", 
"GH"=>"GHANA", 
"GI"=>"GIBRALTAR", 
"GR"=>"GREECE", 
"GL"=>"GREENLAND", 
"GD"=>"GRENADA", 
"GP"=>"GUADELOUPE", 
"GU"=>"GUAM", 
"GT"=>"GUATEMALA", 
"GN"=>"GUINEA", 
"GW"=>"GUINEA-BISSAU", 
"GY"=>"GUYANA", 
"HT"=>"HAITI", 
"HM"=>"HEARD ISLAND AND MCDONALD ISLANDS", 
"VA"=>"HOLY SEE (VATICAN CITY STATE)", 
"HN"=>"HONDURAS", 
"HK"=>"HONG KONG", 
"HU"=>"HUNGARY", 
"IS"=>"ICELAND", 
"IN"=>"INDIA", 
"ID"=>"INDONESIA", 
"IR"=>"IRAN ISLAMIC REPUBLIC OF", 
"IQ"=>"IRAQ", 
"IE"=>"IRELAND", 
"IL"=>"ISRAEL", 
"IT"=>"ITALY", 
"JM"=>"JAMAICA", 
"JP"=>"JAPAN", 
"JO"=>"JORDAN", 
"KZ"=>"KAZAKHSTAN", 
"KE"=>"KENYA", 
"KI"=>"KIRIBATI", 
"KP"=>"KOREA DEMOCRATIC PEOPLE\'S REPUBLIC OF", 
"KR"=>"KOREA REPUBLIC OF", 
"KW"=>"KUWAIT", 
"KG"=>"KYRGYZSTAN", 
"LA"=>"LAO PEOPLE\'S DEMOCRATIC REPUBLIC", 
"LV"=>"LATVIA", 
"LB"=>"LEBANON", 
"LS"=>"LESOTHO", 
"LR"=>"LIBERIA", 
"LY"=>"LIBYAN ARAB JAMAHIRIYA", 
"LI"=>"LIECHTENSTEIN", 
"LT"=>"LITHUANIA", 
"LU"=>"LUXEMBOURG", 
"MO"=>"MACAO", 
"MK"=>"MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF", 
"MG"=>"MADAGASCAR", 
"MW"=>"MALAWI", 
"MY"=>"MALAYSIA", 
"MV"=>"MALDIVES", 
"ML"=>"MALI", 
"MT"=>"MALTA", 
"MH"=>"MARSHALL ISLANDS", 
"MQ"=>"MARTINIQUE", 
"MR"=>"MAURITANIA", 
"MU"=>"MAURITIUS", 
"YT"=>"MAYOTTE", 
"MX"=>"MEXICO", 
"FM"=>"MICRONESIA, FEDERATED STATES OF", 
"MD"=>"MOLDOVA, REPUBLIC OF", 
"MC"=>"MONACO", 
"MN"=>"MONGOLIA", 
"MS"=>"MONTSERRAT", 
"MA"=>"MOROCCO", 
"MZ"=>"MOZAMBIQUE", 
"MM"=>"MYANMAR", 
"NA"=>"NAMIBIA", 
"NR"=>"NAURU", 
"NP"=>"NEPAL", 
"NL"=>"NETHERLANDS", 
"AN"=>"NETHERLANDS ANTILLES", 
"NC"=>"NEW CALEDONIA", 
"NZ"=>"NEW ZEALAND", 
"NI"=>"NICARAGUA", 
"NE"=>"NIGER", 
"NG"=>"NIGERIA", 
"NU"=>"NIUE", 
"NF"=>"NORFOLK ISLAND", 
"MP"=>"NORTHERN MARIANA ISLANDS", 
"NO"=>"NORWAY", 
"OM"=>"OMAN", 
"PK"=>"PAKISTAN", 
"PW"=>"PALAU", 
"PS"=>"PALESTINIAN TERRITORY, OCCUPIED", 
"PA"=>"PANAMA", 
"PG"=>"PAPUA NEW GUINEA", 
"PY"=>"PARAGUAY", 
"PE"=>"PERU", 
"PH"=>"PHILIPPINES", 
"PN"=>"PITCAIRN", 
"PL"=>"POLAND", 
"PT"=>"PORTUGAL", 
"PR"=>"PUERTO RICO", 
"QA"=>"QATAR", 
"RE"=>"REUNION", 
"RO"=>"ROMANIA", 
"RU"=>"RUSSIAN FEDERATION", 
"RW"=>"RWANDA", 
"SH"=>"SAINT HELENA", 
"KN"=>"SAINT KITTS AND NEVIS", 
"LC"=>"SAINT LUCIA", 
"PM"=>"SAINT PIERRE AND MIQUELON", 
"VC"=>"SAINT VINCENT AND THE GRENADINES", 
"WS"=>"SAMOA", 
"SM"=>"SAN MARINO", 
"ST"=>"SAO TOME AND PRINCIPE", 
"SA"=>"SAUDI ARABIA", 
"SN"=>"SENEGAL", 
"CS"=>"SERBIA AND MONTENEGRO", 
"SC"=>"SEYCHELLES", 
"SL"=>"SIERRA LEONE", 
"SG"=>"SINGAPORE", 
"SK"=>"SLOVAKIA", 
"SI"=>"SLOVENIA", 
"SB"=>"SOLOMON ISLANDS", 
"SO"=>"SOMALIA", 
"ZA"=>"SOUTH AFRICA", 
"GS"=>"SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS", 
"ES"=>"SPAIN", 
"LK"=>"SRI LANKA", 
"SD"=>"SUDAN", 
"SR"=>"SURINAME", 
"SJ"=>"SVALBARD AND JAN MAYEN", 
"SZ"=>"SWAZILAND", 
"SE"=>"SWEDEN", 
"CH"=>"SWITZERLAND", 
"SY"=>"SYRIAN ARAB REPUBLIC", 
"TW"=>"TAIWAN PROVINCE OF CHINA", 
"TJ"=>"TAJIKISTAN", 
"TZ"=>"TANZANIA UNITED REPUBLIC OF", 
"TH"=>"THAILAND", 
"TL"=>"TIMOR-LESTE", 
"TG"=>"TOGO", 
"TK"=>"TOKELAU", 
"TO"=>"TONGA", 
"TT"=>"TRINIDAD AND TOBAGO", 
"TN"=>"TUNISIA", 
"TR"=>"TURKEY", 
"TM"=>"TURKMENISTAN", 
"TC"=>"TURKS AND CAICOS ISLANDS", 
"TV"=>"TUVALU", 
"UG"=>"UGANDA", 
"UA"=>"UKRAINE", 
"AE"=>"UNITED ARAB EMIRATES", 
"GB"=>"UNITED KINGDOM", 
"US"=>"UNITED STATES", 
"UM"=>"UNITED STATES MINOR OUTLYING ISLANDS", 
"UY"=>"URUGUAY", 
"UZ"=>"UZBEKISTAN", 
"VU"=>"VANUATU", 
"VE"=>"VENEZUELA", 
"VN"=>"VIETNAM", 
"VG"=>"VIRGIN ISLANDS BRITISH", 
"VI"=>"VIRGIN ISLANDS U.S.", 
"WF"=>"WALLIS AND FUTUNA", 
"EH"=>"WESTERN SAHARA", 
"YE"=>"YEMEN", 
"ZM"=>"ZAMBIA", 
"ZW"=>"ZIMBABWE"); 


$site = get_site(); 
$supportuser = generate_email_supportuser(); 

$data = new stdClass(); 
$data->firstname = fullname($user); 
$data->sitename = format_string($site->fullname); 
$data->admin  = generate_email_signoff(); 

$subject = get_string('emailconfirmationsubject', '', format_string($site->fullname)); 

$username = urlencode($user->username); 
$username = str_replace('.', '%2E', $username); // prevent problems with trailing dots 
$data->link = $CFG->wwwroot .'/login/confirm.php?data='. $user->secret .'/'. $username; 
$message  = get_string('emailconfirmation', '', $data); 
$messagehtml = text_to_html(get_string('emailconfirmation', '', $data), false, false, true); 


$dataadmin = new stdClass(); 
$dataadmin->admindata  = generate_email_signoff(); 
$dataadmin->supportname = $dataadmin->admindata->supportname; 
$dataadmin->firstname  = $data->firstname; 
$dataadmin->sitename  = $data->sitename; 


$messageadmin  = get_string('emailconfirmationtoadmin', '', $dataadmin); 
$messagehtmladmin = text_to_html(get_string('emailconfirmationtoadmin', '', $dataadmin), false, false, true); 

$user->mailformat = 1; // Always send HTML version as well 

//email_to_user($user, $from, $subject, $messagetext, $messagehtml='', $attachment='', $attachname='', $usetrueaddress=true, $replyto='', $replytoname='', $wordwrapwidth=79) 

//get all the user fields and email them 


$body = ''; 

    // Original fields. 
foreach ($user as $field => $value) { 
    if($field == 'firstname'){ 
     $body .= 'Nombre: ' . ' ' . $value . "\n"; 
    } 
    if($field == 'lastname'){ 
     $body .= 'Apellido: '. ' ' . $value . "\n"; 
    } 
    if($field == 'email'){ 
     $body .= 'Correo: ' . ' ' . $value . "\n"; 
    } 
    if($field == 'city'){ 
     $body .= 'Ciudad: ' . ' ' . $value . "\n"; 
    } 
    if($field == 'country'){ 
     $body .= 'Pais: ' . ' ' . $countries[$value] . "\n"; 
    } 
} 

// Custom fields. 
$sql = "SELECT f.id, f.name, d.data 
     FROM {user_info_field} f 
     LEFT JOIN {user_info_data} d ON d.fieldid = f.id AND d.userid = :userid"; 
$customfields = $DB->get_records_sql($sql, array('userid' => $user->id)); 
foreach ($customfields as $customfield) { 
    if($customfield->name == 'Fecha en la que se constituye la empresa'){ 
     $body .= $customfield->name . ' : ' . ' ' . gmdate('d/F/Y', $customfield->data) . "\n"; 
    } 
    else{ 
     $body .= $customfield->name . ' : ' . ' ' . $customfield->data . "\n"; 
    } 
} 

// Send the email to a static user 
$admin = '[email protected]'; 
$subject = get_string('newuser'); 
$headers = "From: [email protected]" . "\r\n" ; 
mail($admin, $subject, $body, $headers); 


//send email to admin 
email_to_user($supportuser, $supportuser, $subject, $messageadmin, $messagehtmladmin); 

//directly email rather than using the messaging system to ensure its not routed to a popup or jabber 
return email_to_user($user, $supportuser, $subject, $message, $messagehtml); 
} 
相關問題