/** * The handler for the index article. * * @param mixed $handler_id the array key from the request array * @param array $args the arguments given to the handler * @param Array &$data The local request data. * @return boolean Indicating success. */ function _handler_index($handler_id, $args, &$data) { $this->_request_data['name'] = "fi.kilonkipinat.account"; $this->_update_breadcrumb_line($handler_id); $title = $this->_l10n_midcom->get('index'); $_MIDCOM->set_pagetitle(":: {$title}"); $root_group_guid = $this->_config->get('root_group_to_show'); $persons = array(); if (isset($root_group_guid) && $root_group_guid != null && $root_group_guid != '') { $root_group = new midcom_db_group($root_group_guid); if ($root_group && $root_group->guid == $root_group_guid) { $mc_members = midcom_db_member::new_collector('gid', $root_group->id); $mc_members->add_value_property('uid'); $mc_members->execute(); $member_guids = $mc_members->list_keys(); $member_ids = array(); foreach ($member_guids as $guid => $array) { $member_ids[] = $mc_members->get_subkey($guid, 'uid'); } $qb_persons = fi_kilonkipinat_account_person_dba::new_query_builder(); $qb_persons->add_constraint('id', 'IN', $member_ids); $qb_persons->add_order('lastname', 'ASC'); $qb_persons->add_order('nickname', 'ASC'); $qb_persons->add_order('firstname', 'ASC'); $persons = $qb_persons->execute(); } } $this->_request_data['requests'] = ''; if ($_MIDCOM->auth->admin) { $regs_topic = midcom_helper_find_node_by_component('fi.kilonkipinat.accountregistration'); $regs_prefix = ''; if ($regs_topic) { $regs_prefix = $regs_topic['18']; } $mc = fi_kilonkipinat_accountregistration_accountrequest_dba::new_collector('status', FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_EMAILVALIDATED); // $mc->add_constraint('status', '=', fi_kilonkipinat_accountregistration_interface::FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_EMAILVALIDATED); $requests_count = $mc->count(); if ($requests_count > 0 && $regs_prefix != '') { $this->_request_data['requests'] = '<a href="' . $regs_prefix . 'list_pending/">' . $requests_count . ' tunnushakemusta</a>'; } } $this->_request_data['persons'] = $persons; return true; }
/** * The handler for the index article. * * @param mixed $handler_id the array key from the request array * @param array $args the arguments given to the handler * @param Array &$data The local request data. * @return boolean Indicating success. */ function _handler_manageRequest($handler_id, $args, &$data) { $_MIDCOM->auth->require_admin_user(); $this->_request_data['name'] = "fi.kilonkipinat.accountregistration"; $this->_update_breadcrumb_line($handler_id); $title = $this->_l10n_midcom->get('fi.kilonkipinat.accountregistration'); $_MIDCOM->set_pagetitle(":: {$title}"); $prefix = $this->_request_data['prefix']; $request = new fi_kilonkipinat_accountregistration_accountrequest_dba(trim($args[0])); if (!isset($request) || !isset($request->guid) || $request->guid == '' || $request->guid != $args[0]) { debug_push_class(__CLASS__, __FUNCTION__); debug_pop(); $_MIDCOM->generate_error(MIDCOM_ERRNOTFOUND, 'Failed to load request, cannot continue. Last Midgard error was: ' . midcom_application::get_error_string()); // This will exit. } $this->_request_data['request'] = $request; if (isset($_POST) && isset($_POST['username'])) { if (isset($_POST['isduplicate']) && $_POST['isduplicate'] == '1') { $request->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_INVALID; $request->update(); $message['title'] = $this->_l10n_midcom->get("Poistettu"); $message['content'] = $this->_l10n_midcom->get("Kyseinen hakemus on merkattu duplikaatiksi, ts poistettu."); } else { if (isset($_POST['merge_user_guid']) && $_POST['merge_user_guid'] != '') { $person = new fi_kilonkipinat_account_person_dba(trim($_POST['merge_user_guid'])); } else { $qb = fi_kilonkipinat_account_person_dba::new_query_builder(); $qb->add_constraint('username', '=', trim($_POST['username'])); $results = $qb->execute(); if (count($results) > 0) { $message['title'] = $this->_l10n_midcom->get("error"); $message['content'] = $this->_l10n_midcom->get("Kyseinen tyyppi on jo olemassa"); } else { $person = new fi_kilonkipinat_account_person_dba(); $person->username = trim($_POST['username']); $person->create(); } } if (isset($person)) { $person->firstname = $request->firstname; $person->lastname = $request->lastname; $person->email = $request->email; $password = fi_kilonkipinat_accountregistration_viewer::generatePassword($this->_config->get('password_length')); // Enforce crypt mode $salt = chr(rand(64, 126)) . chr(rand(64, 126)); $crypt_password = crypt($password, $salt); $person->password = $crypt_password; $person->update(); if (isset($_POST['add_to_groups']) && count($_POST['add_to_groups']) > 0) { foreach ($_POST['add_to_groups'] as $group_guid) { $group = new midcom_db_group($group_guid); if (isset($group) && isset($group->guid) && $group->guid == $group_guid) { $membership = new midcom_db_member(); $membership->uid = $person->id; $membership->gid = $group->id; $membership->create(); } } } $person->set_privilege('midgard:owner', "user:{$person->guid}"); $request->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_RESOLVED; $request->personGuid = $person->guid; $request->update(); $subject = 'Tunnuksesi kilonkipinat.fi-sivustolle'; $body = sprintf('Hei %s', $person->firstname); $body .= "\n\n"; $body .= sprintf('käyttäjätunnus: %s', $person->username); $body .= "\n\n"; $body .= sprintf('salasana: %s', $password); $mail = new org_openpsa_mail(); $mail->from = $this->_config->get('mail_sender_title') . ' <' . $this->_config->get('mail_sender_address') . '>'; $mail->to = $person->firstname . ' ' . $person->lastname . ' <' . $person->email . '>'; $mail->body = $body; $mail->subject = $subject; $message = array(); if ($mail->send('mail')) { $message['title'] = $this->_l10n_midcom->get("Onnistui"); $message['content'] = ''; } else { $message['title'] = $this->_l10n_midcom->get("error"); $message['content'] = $this->_l10n_midcom->get("Oops, something went wrong."); } } } $this->_request_data['message'] = $message; } return true; }
<?php if (isset($_GET) && isset($_GET['search_str']) && $_GET['search_str'] != '' && strlen(trim($_GET['search_str'])) > 2) { $search_str = trim($_GET['search_str']); $qb = fi_kilonkipinat_account_person_dba::new_query_builder(); $qb->begin_group('OR'); $qb->add_constraint('username', 'LIKE', '%' . $search_str . '%'); $qb->add_constraint('firstname', 'LIKE', '%' . $search_str . '%'); $qb->add_constraint('lastname', 'LIKE', '%' . $search_str . '%'); $qb->end_group(); $results = $qb->execute(); if (count($results) > 0) { echo "<table id=\"fi_kilonkipinat_accountregistration_merge_search_results\">\n"; echo "\t<tr>\n"; echo "\t\t<th>Etunimi</th>"; echo "\t\t<th>Sukunimi</th>"; echo "\t\t<th>Käyttäjätunnus</th>"; echo "\t\t<th>Sähköposti</th>"; echo "\t\t<th> </th>"; echo "\t</tr>\n"; foreach ($results as $result) { echo "\t<tr id=\"user_" . $result->guid . "\">\n"; echo "\t\t<td>" . $result->firstname . "</td>"; echo "\t\t<td>" . $result->lastname . "</td>"; echo "\t\t<td>" . $result->username . "</td>"; echo "\t\t<td>" . $result->email . "</td>"; echo "\t\t<td><a href=\"#\" onclick=\"chooseUser('" . $result->guid . "', '" . $result->username . "'); return false;\">Valitse</a></td>"; echo "\t</tr>\n"; } echo "</table>\n"; }
/** * The handler for the index article. * * @param mixed $handler_id the array key from the request array * @param array $args the arguments given to the handler * @param Array &$data The local request data. * @return boolean Indicating success. */ function _handler_index($handler_id, $args, &$data) { $this->_request_data['name'] = "fi.kilonkipinat.accountregistration"; $this->_update_breadcrumb_line($handler_id); $title = $this->_l10n_midcom->get('fi.kilonkipinat.accountregistration'); $_MIDCOM->set_pagetitle(":: {$title}"); $prefix = $this->_request_data['prefix']; $this->_request_data['sort_order'] = $this->_config->get('sort_order'); if (isset($_POST) && isset($_POST['action_type']) && ($_POST['action_type'] == 'reset_password' || $_POST['action_type'] == 'registration')) { $_MIDCOM->auth->request_sudo('fi.kilonkipinat.accountregistration'); if ($_POST['action_type'] == 'reset_password') { if (trim($_POST['username']) == '') { $error_msg = 'Täytä käyttäjätunnus-kenttä'; } else { $qb = fi_kilonkipinat_account_person_dba::new_query_builder(); $qb->add_constraint('username', '=', trim($_POST['username'])); $qb->set_limit(1); $user = $qb->execute(); if (isset($user) && count($user) > 0) { $reset_request = new fi_kilonkipinat_accountregistration_resetrequest_dba(); $reset_request->username = $user[0]->username; $reset_request->person = $user[0]->id; $reset_request->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_PASSWORDRESETREQUEST_STATUS_NEW; $reset_request->create(); $reset_request_quid = $reset_request->guid; $subject = sprintf('Salasanan vaihto palvelimella %s', $_SERVER['SERVER_NAME']); $body = sprintf('Hei %s', $user[0]->firstname); $body .= "\n\n"; $body .= sprintf($this->_l10n_midcom->get('Pyysit salasanasi resetointia palvelimella %s'), $_SERVER['SERVER_NAME']); $body .= "\n\n"; $body .= sprintf($this->_l10n_midcom->get('Resetoidaksesi salasanasi käyttäjätunnukselle %s, klikkaa alla olevaa linkkiä'), $user[0]->username); $body .= "\n\n"; $body .= 'http://' . $_SERVER['SERVER_NAME'] . $prefix . 'approve_reset/' . $reset_request_quid . '/'; $mail = new org_openpsa_mail(); $mail->from = $this->_config->get('mail_sender_title') . ' <' . $this->_config->get('mail_sender_address') . '>'; $mail->to = $user[0]->firstname . ' ' . $user[0]->lastname . ' <' . $user[0]->email . '>'; $mail->body = $body; $mail->subject = $subject; if ($mail->send('mail')) { $success_msg = $this->_l10n_midcom->get("Salasanan resetointipyyntö vastaanotettu, katso sähköpostiasi."); } } } } elseif ($_POST['action_type'] == 'registration') { if ($_POST['firstname'] == '' || $_POST['lastname'] == '' || $_POST['email'] == '') { $error_msg = 'Täytä kaikki pakolliset kentät'; } else { $accountrequest = new fi_kilonkipinat_accountregistration_accountrequest_dba(); $accountrequest->firstname = $_POST['firstname']; $accountrequest->lastname = $_POST['lastname']; $accountrequest->email = $_POST['email']; $accountrequest->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_NEW; $accountrequest->create(); $accountrequest_quid = $accountrequest->guid; $subject = sprintf('Käyttäjätunnuksen rekisteröinti palvelimelle %s', $_SERVER['SERVER_NAME']); $body = sprintf('Hei %s', $accountrequest->firstname); $body .= "\n\n"; $body .= sprintf($this->_l10n_midcom->get('Käyttäjätunnuksen rekisteröinti palvelimelle %s.'), $_SERVER['SERVER_NAME']); $body .= "\n\n"; $body .= $this->_l10n_midcom->get('Varmistaaksesi sähköpostisi, klikkaa alla olevaa linkkiä'); $body .= "\n\n"; $body .= 'http://' . $_SERVER['SERVER_NAME'] . $prefix . 'validate_email/' . $accountrequest_quid . '/'; $mail = new org_openpsa_mail(); $mail->from = $this->_config->get('mail_sender_title') . ' <' . $this->_config->get('mail_sender_address') . '>'; $mail->to = $accountrequest->firstname . ' ' . $accountrequest->lastname . ' <' . $accountrequest->email . '>'; $mail->body = $body; $mail->subject = $subject; if ($mail->send('mail')) { $success_msg = 'Käyttäjätunnuksen rekisteröinti vastaanotettu, katso sähköpostisi'; } } } $_MIDCOM->auth->drop_sudo('fi.kilonkipinat.accountregistration'); } $message = array(); if (isset($success_msg) && $success_msg != '') { $message['title'] = 'Onnistui'; $message['content'] = $success_msg; $this->_request_data['message'] = $message; } if (isset($error_msg) && $error_msg != '') { $message['title'] = 'Virhe'; $message['content'] = $error_msg; $this->_request_data['message'] = $message; } return true; }
public function loadPersons($person_guids) { $tmp_guids = explode('|', $person_guids); $guids = array(); foreach ($tmp_guids as $guid) { $guids[] = trim(str_replace('|', '', $guid)); } $persons_qb = fi_kilonkipinat_account_person_dba::new_query_builder(); $persons_qb->add_constraint('email', '<>', ''); $persons_qb->add_constraint('guid', 'IN', $guids); $persons = $persons_qb->execute(); return $persons; }