Reputation: 55
i need to send a custom email to the admin after user registration on my moodle site, but i want it to have all the user iformation displayed, i been searching a lot and found this link, it sends a custom email to the admin with the user name, but i've ben trying to send more info like custom fields added by me or even default fields like the phone but i can't find a way, i hope u help me.
Upvotes: 1
Views: 6855
Reputation: 10241
You could use the user_created
event.
Haven't tested this but you could create a local plugin
Create a local folder
/local/newuser/
Create events.php
/local/newuser/db/events.php
Paste this into events.php
defined('MOODLE_INTERNAL') || die();
$handlers = array (
'user_created' => array (
'handlerfile' => '/local/newuser/lib.php',
'handlerfunction' => 'local_newuser_user_created',
'schedule' => 'instant',
),
);
Create a lib.php file
/local/newuser/lib.php
Paste this into 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;
}
Finally create a version.php
/local/newuser/version.php
And paste this
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).
Then in Moodle go to site admin -> notifications to add the code. Then create a user and the admin should receive an email :)
Upvotes: 3
Reputation: 6431
You could also look at this plugin.
Discussion: https://moodle.org/mod/forum/discuss.php?d=212648#p926773
Code: https://github.com/itamart/moodle-local_messageprovider
Upvotes: 0
Reputation: 55
Thanks Russell England combining your suggestion with the link i had i came up with this function for the moodlelib.php, it need to be cleaned but it's working now
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);
}
Upvotes: 0
Reputation: 429
The function on your link start like that:
function send_confirmation_email($user) {
The "$user" variable it's an object and should have everything you need:
$user->firstname, $user->lastname, $user->phone1, $user->phone2, etc.. check out the data base table mdl_user.
Upvotes: 0