Php 注册后通过电子邮件发送moodle用户数据
在我的moodle网站上注册用户后,我需要向管理员发送一封自定义电子邮件,但我希望它显示所有用户信息,我搜索了很多,发现了这个,它向管理员发送了一封带有用户名的自定义电子邮件,但我一直在尝试发送更多信息,比如我添加的自定义字段,甚至是手机的默认字段,但我找不到方法,希望你能帮助我。你链接上的功能是这样开始的:Php 注册后通过电子邮件发送moodle用户数据,php,email,moodle,Php,Email,Moodle,在我的moodle网站上注册用户后,我需要向管理员发送一封自定义电子邮件,但我希望它显示所有用户信息,我搜索了很多,发现了这个,它向管理员发送了一封带有用户名的自定义电子邮件,但我一直在尝试发送更多信息,比如我添加的自定义字段,甚至是手机的默认字段,但我找不到方法,希望你能帮助我。你链接上的功能是这样开始的: 功能发送确认电子邮件($user){ “$user”变量是一个对象,应该包含您需要的所有内容: $user->firstname,$user->lastname,$user->phone1
功能发送确认电子邮件($user){ “$user”变量是一个对象,应该包含您需要的所有内容:
$user->firstname,$user->lastname,$user->phone1,$user->phone2等。请查看数据库表mdl\u user。您可以使用该事件 还没有测试过这个,但是你可以创建一个本地插件 创建本地文件夹
/local/newuser/
创建events.php
/local/newuser/db/events.php
defined('MOODLE_INTERNAL') || die();
$handlers = array (
'user_created' => array (
'handlerfile' => '/local/newuser/lib.php',
'handlerfunction' => 'local_newuser_user_created',
'schedule' => 'instant',
),
);
将其粘贴到events.php中
/local/newuser/db/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中,转到site admin->notifications添加代码。然后创建一个用户,管理员将收到一封电子邮件:)感谢Russell England将您的建议与我的链接结合起来,我为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@email.com';
$subject = get_string('newuser');
$headers = "From: administrador@email.com" . "\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);
}
你也可以看看这个插件 讨论:
代码:我将尝试此操作,但这将加载我建立的自定义字段?或者我需要创建另一个对象?有关当前Moodle Events API 2.0的信息位于此处:我做了完全相同的事情,但对我来说,lib.php中的代码没有得到执行。