<?php $INC = isset($INC) ? $INC : dirname(__FILE__); require_once($INC . "/user.inc.php"); /* * Event functions */ $rg_admin_functions = array( 6000 => "rg_admin_invite", 6001 => "rg_admin_invite_one" ); rg_event_register_functions($rg_admin_functions); /* * Event for invites */ function rg_admin_invite($db, $event) { $ret = array(); rg_log_ml("DEBUG: event[list]=" . print_r($event['list'], TRUE)); foreach ($event['list'] as $line) { $line = trim($line); if (empty($line)) continue; $t = explode('|', $line, 2); $ret[] = array_merge($event, array( 'category' => 6001, 'prio' => 100, 'email' => trim($t[0]), 'name' => trim($t[1]) ) ); } return $ret; } /* * Event for invites (one e-mail version) */ function rg_admin_invite_one($db, $event) { global $rg_admin_email; $rg = array(); $subject = preg_replace('/{NAME}/', $event['name'], $event['subject']); $subject = "=?UTF-8?B?" . base64_encode(trim($subject)) . "?="; $header = rg_template("mail/common.head.txt", $rg); $body = preg_replace('/{NAME}/', $event['name'], $event['body']); $r = mail($event['email'], $subject, $body, $header, "-f $rg_admin_email"); if ($r === FALSE) return FALSE; return array(); } /* * Deals with invites */ function rg_admin_invites_high_level($db, $rg) { rg_log_enter("rg_admin_invites_high_level"); $ret = ""; $inv = array(); $inv['list'] = ""; $inv['subject'] = ""; $inv['body'] = ""; $errmsg = array(); $show_form = TRUE; while (1) { if (rg_var_int("doit") == 0) break; $inv['list'] = rg_var_str("inv::list"); $inv['subject'] = rg_var_str("inv::subject"); $inv['body'] = rg_var_str("inv::body"); if (!rg_valid_referer()) { $errmsg[] = "invalid referer; try again"; break; } if (!rg_token_valid($db, $rg, FALSE)) { $errmsg[] = "invalid token; try again"; break; } if (empty($inv['list'])) { $errmsg[] = "list is empty"; break; } if (empty($inv['subject'])) { $errmsg[] = "subject is empty"; break; } if (empty($inv['body'])) { $errmsg[] = "body is empty"; break; } $list = explode("\n", trim($inv['list'])); foreach ($list as $line) { $line = trim($line); if (empty($line)) continue; $t = explode('|', $line, 2); if (count($t) != 2) { $errmsg[] = 'invalid line: ' . rg_xss_safe($line); } else { if (!strstr($t[0], '@')) $errmsg[] = 'invalid e-mail in line: ' . rg_xss_safe($line); } } if (!empty($errmsg)) break; $event = array( 'category' => 6000, 'prio' => 50); $event = array_merge($event, $inv); $event['list'] = $list; $r = rg_event_add($db, $event); if ($r !== TRUE) { $errmsg[] = "cannot add event (" . rg_event_error() . ")"; break; } rg_event_signal_daemon("", 0); $ret .= rg_template("admin/invites/sent.html", $rg); $show_form = FALSE; break; } if ($show_form) { $rg['inv'] = $inv; $rg['HTML:errmsg'] = rg_template_errmsg($errmsg); $rg['rg_form_token'] = rg_token_get($db, $rg); $ret .= rg_template("admin/invites/invites.html", $rg); } rg_log_exit(); return $ret; } /* * Prepares an instalation for first use */ function rg_init($db, $rg) { global $rg_admin_name; global $rg_admin_email; rg_prof_start("rg_init"); rg_log_enter("rg_init"); $ret = ''; $doit = rg_var_uint('doit'); if ($doit == 0) { $rg['init']['username'] = 'admin'; $rg['init']['realname'] = $rg_admin_name; $rg['init']['email'] = $rg_admin_email; $rg['init']['pass'] = ''; $rg['init']['pass2'] = ''; $rg['init']['session_time'] = 600; } $errmsg = array(); $load_form = TRUE; while ($doit == 1) { $rg['init'] = array(); $rg['init']['uid'] = 0; $rg['init']['is_admin'] = 1; $rg['init']['rights'] = rg_rights_all('user'); $rg['init']['confirm_token'] = ''; $rg['init']['plan_id'] = 1; $rg['init']['username'] = rg_var_str('init::username'); $rg['init']['realname'] = rg_var_str('init::realname'); $rg['init']['email'] = rg_var_str('init::email'); $rg['init']['pass'] = rg_var_str('init::pass'); $rg['init']['pass2'] = rg_var_str('init::pass2'); $rg['init']['session_time'] = rg_var_uint('init::session_time'); $rg['init']['confirmed'] = 1; /* = no need to confirm */ if (!rg_valid_referer()) { $errmsg[] = "invalid referer; try again"; break; } if (!rg_token_valid($db, $rg, FALSE)) { $errmsg[] = "invalid token; try again"; break; } $r = rg_user_edit($db, $rg['init']); if ($r === FALSE) { $errmsg[] = rg_user_error(); break; } rg_state_set($db, 'first_install', time()); $ret .= rg_template('user/create_ok.html', $rg); $load_form = FALSE; break; } if ($load_form) { $rg['HTML:errmsg'] = rg_template_errmsg($errmsg); $rg['rg_form_token'] = rg_token_get($db, $rg); $ret .= rg_template("admin/init.html", $rg); } rg_log_exit(); rg_prof_end("rg_init"); return $ret; } ?>