Php 注册后通过电子邮件发送moodle用户数据

Php 注册后通过电子邮件发送moodle用户数据,php,email,moodle,Php,Email,Moodle,在我的moodle网站上注册用户后,我需要向管理员发送一封自定义电子邮件,但我希望它显示所有用户信息,我搜索了很多,发现了这个,它向管理员发送了一封带有用户名的自定义电子邮件,但我一直在尝试发送更多信息,比如我添加的自定义字段,甚至是手机的默认字段,但我找不到方法,希望你能帮助我。你链接上的功能是这样开始的: 功能发送确认电子邮件($user){ “$user”变量是一个对象,应该包含您需要的所有内容: $user->firstname,$user->lastname,$user->phone1

在我的moodle网站上注册用户后,我需要向管理员发送一封自定义电子邮件,但我希望它显示所有用户信息,我搜索了很多,发现了这个,它向管理员发送了一封带有用户名的自定义电子邮件,但我一直在尝试发送更多信息,比如我添加的自定义字段,甚至是手机的默认字段,但我找不到方法,希望你能帮助我。

你链接上的功能是这样开始的:
功能发送确认电子邮件($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中的代码没有得到执行。