Отправить данные пользователя moodle после регистрации

мне нужно отправить пользовательскую электронную почту администратору после регистрации пользователя на моем сайте moodle, но я хочу, чтобы он отображал всю отображаемую пользователем информацию, я много искал и нашел эту ссылку , он отправляет собственное письмо администратору с помощью имя пользователя, но я пытаюсь отправить больше информации, как добавленные мной дополнительные поля или даже поля по умолчанию, такие как телефон, но я не могу найти способ, я надеюсь, что помогу мне.

Вы можете использовать событие user_created. http://docs.moodle.org/dev/Events_API#Users

Не тестировали это, но вы могли бы создать локальный плагин

Создание локальной папки

/local/newuser/ 

Создать event.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 перейдите к администратору сайта -> уведомления, чтобы добавить код. Затем создайте пользователя, и администратор должен получить электронное письмо 🙂

Функция в вашей ссылке начинается следующим образом:
функция send_confirmation_email ($ user) {

Переменная «$ user» – это объект и должна иметь все, что вам нужно:
$ user-> firstname, $ user-> lastname, $ user-> phone1, $ user-> phone2 и т. д. проверьте таблицу базы данных mdl_user.

Спасибо Расселл Англия, объединив ваше предложение со ссылкой, я придумал эту функцию для 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 US", "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); } 

Вы также можете посмотреть на этот плагин.

Обсуждение: https://moodle.org/mod/forum/discuss.php?d=212648#p926773

Код: https://github.com/itamart/moodle-local_messageprovider