/** * meeting request * * @param unknown $cal_id * @param unknown $params */ function churchcal_handleMeetingRequest($cal_id, $params) { global $base_url, $user; $i = new CTInterface(); $i->setParam("cal_id"); $i->setParam("person_id"); $i->setParam("mailsend_date"); $i->setParam("event_date"); $dt = new DateTime(); foreach ($params["meetingRequest"] as $id => $param) { $param["mailsend_date"] = $dt->format('Y-m-d H:i:s'); $param["person_id"] = $id; $param["event_date"] = $params["startdate"]; $param["cal_id"] = $cal_id; $db = db_query('SELECT mr.*, c.modified_pid, c.bezeichnung FROM {cc_meetingrequest} mr, {cc_cal} c WHERE c.id=mr.cal_id and mr.person_id=:person_id and mr.cal_id=:cal_id', array(":person_id" => $param["person_id"], ":cal_id" => $param["cal_id"]))->fetch(); if (!$db) { db_insert("cc_meetingrequest")->fields($i->getDBInsertArrayFromParams($param))->execute(false); // if person was not yet invited to churchtools send invitation $p = db_query("SELECT name, vorname, IF(spitzname, spitzname, vorname) AS nickname,\n IF (password IS NULL AND loginstr IS NULL AND lastlogin IS NULL,1,0) as invite\n FROM {cdb_person}\n WHERE id=:id", array(":id" => $id))->fetch(); $cal = db_query('SELECT c.* FROM {cc_cal} c WHERE c.id=:cal_id', array(":cal_id" => $param["cal_id"]))->fetch(); if ($p) { $data = array('p' => $p, 'caption' => $cal->bezeichnung, 'date' => churchcore_CCEventData2String($cal), 'loginUrl' => $base_url . "?q=home&id={$id}&loginstr=" . churchcore_createOnTimeLoginKey($id)); if ($data['invite'] = $p->invite) { include_once CHURCHDB . '/churchdb_ajax.php'; churchdb_invitePersonToSystem($id); } // get populated template and send email $lang = getUserLanguage($id); $content = getTemplateContent('email/meetingRequest', 'churchcal', $data, null, $lang); churchcore_sendEMailToPersonIDs($id, "[" . getConf('site_name') . "] " . t2($lang, 'new.meeting.request'), $content, null, true); } } else { /* * db_update("cc_meetingrequest") * ->fields($i->getDBInsertArrayFromParams($param)) * ->condition("person_id", * $param["person_id"], "=") * ->condition("cal_id", $param["cal_id"], "=") * ->execute(false); * churchcore_sendEMailToPersonIDs($id, "[".getConf('site_name')."] Anpassung in einer Termin-Anfrage", "anpassung", null, true); */ } } }
function churchcal_handleMeetingRequest($cal_id, $params) { global $base_url, $user; $i = new CTInterface(); $i->setParam("cal_id"); $i->setParam("person_id"); $i->setParam("mailsend_date"); $i->setParam("event_date"); $dt = new DateTime(); foreach ($params["meetingRequest"] as $id => $param) { $param["mailsend_date"] = $dt->format('Y-m-d H:i:s'); $param["person_id"] = $id; $param["event_date"] = $params["startdate"]; $param["cal_id"] = $cal_id; $db = db_query('select mr.*, c.modified_pid from {cc_meetingrequest} mr, {cc_cal} c where c.id=mr.cal_id and mr.person_id=:person_id and mr.cal_id=:cal_id', array(":person_id" => $param["person_id"], ":cal_id" => $param["cal_id"]))->fetch(); if ($db == false) { db_insert("cc_meetingrequest")->fields($i->getDBInsertArrayFromParams($param))->execute(false); $txt = "<h3>Hallo [Spitzname]!</h3><p>"; $txt .= "<P>Du wurdest auf " . variable_get('site_name', 'ChurchTools'); $txt .= ' von <i>' . $user->vorname . " " . $user->name . "</i>"; $txt .= " für einen Termin angefragt. "; $db = db_query("select if (password is null and loginstr is null and lastlogin is null,1,0) as invite from {cdb_person}\n where id=:id", array(":id" => $id))->fetch(); if ($db !== false) { if ($db->invite == 1) { include_once CHURCHDB . '/churchdb_ajax.php'; churchdb_invitePersonToSystem($id); $txt .= "Da Du noch nicht kein Zugriff auf das System hast, bekommst Du noch eine separate E-Mail, mit der Du Dich dann anmelden kannst!"; } $txt .= "<p>Zum Zu- oder Absagen bitte hier klicken:"; $loginstr = churchcore_createOnTimeLoginKey($id); $txt .= '<p><a href="' . $base_url . '?q=home&id=' . $id . '&loginstr=' . $loginstr . '" class="btn btn-primary">%sitename aufrufen</a>'; churchcore_sendEMailToPersonids($id, "[" . variable_get('site_name', 'ChurchTools') . "] Neue Termin-Anfrage", $txt, null, true); } } else { /* db_update("cc_meetingrequest") ->fields($i->getDBInsertArrayFromParams($param)) ->condition("person_id", $param["person_id"], "=") ->condition("cal_id", $param["cal_id"], "=") ->execute(false); churchcore_sendEMailToPersonids($id, "[".variable_get('site_name', 'ChurchTools')."] Anpassung in einer Termin-Anfrage", "anpassung", null, true);*/ } } }
public function sendInvitationMail($params) { churchdb_invitePersonToSystem($params["id"], $_SESSION["user"]); }
/** * info for pending requests * TODO: rename churchservice_openservice_rememberdays, f.e. to sendOpenServiceRememberMail * TODO: could sql queries be reduced? */ function churchservice_openservice_rememberdays() { global $base_url; include_once "churchservice_db.php"; $delay = (int) getConf('churchservice_openservice_rememberdays'); $dt = new datetime(); // get ONE eventService needed to send (not yet send or still pending). // from persons having an email ??und auch gemappt wurde??. // $sql = "SELECT es.id, p.id p_id, p.vorname, p.email, es.modified_pid, // IF (password IS NULL AND loginstr IS NULL AND lastlogin IS NULL,1,0) AS invite // FROM {cs_eventservice} es, {cs_event} e, {cc_cal} cal, {cs_service} s, {cdb_person} p // WHERE e.valid_yn=1 AND e.cc_cal_id=cal.id AND es.valid_yn=1 AND es.zugesagt_yn=0 // AND es.cdb_person_id IS NOT NULL AND es.service_id=s.id AND s.sendremindermails_yn=1 // AND es.event_id=e.id AND e.Startdate>=current_date // AND ((es.mailsenddate IS NULL) OR (DATEDIFF(current_date,es.mailsenddate)>=$delay)) // AND p.email!='' AND p.id=es.cdb_person_id LIMIT 1"; $sql = "SELECT es.id, p.id p_id, p.vorname, p.spitzname, p.name, p.email, es.modified_pid,\n IF (password IS NULL AND loginstr IS NULL AND lastlogin IS NULL,1,0) AS invite\n FROM {cs_eventservice} es, {cs_event} e, {cc_cal} cal, {cs_service} s, {cdb_person} p\n WHERE e.valid_yn=1 AND e.cc_cal_id=cal.id AND es.valid_yn=1 AND es.zugesagt_yn=0\n AND es.cdb_person_id IS NOT NULL AND es.service_id=s.id AND s.sendremindermails_yn=1\n AND es.event_id=e.id AND e.Startdate>=current_date\n AND ((es.mailsenddate IS NULL) OR (DATEDIFF(current_date,es.mailsenddate)>={$delay}))\n AND p.email!='' AND p.id=es.cdb_person_id\n GROUP BY p_id"; //group to get each person only once, so querying all together dont interfere with the other services of the same person $usersToMail = db_query($sql); $i = 0; // process only 15 services to prevent too many mails at once while ($i++ < 15 && ($u = $usersToMail->fetch())) { $data = array('inviter' => churchcore_getPersonById($u->modified_pid), 'url' => "{$base_url}?q=home&id={$u->p_id}&loginstr=" . churchcore_createOnTimeLoginKey($u->p_id), 'requestedServices' => array(), 'approvedServices' => array(), 'user' => $u, 'nickname' => $u->spitzname ? $u->spitzname : $u->vorname); // Person was not yet invited -> send invitation. if ($u->invite == 1) { include_once CHURCHDB . '/churchdb_ajax.php'; churchdb_invitePersonToSystem($u->p_id); } $servicesOfPerson = db_query("\n SELECT es.id AS id, es.zugesagt_yn AS approved, cal.bezeichnung AS event, DATE_FORMAT(e.startdate, '%d.%m.%Y %H:%i') AS datum,\n e.id AS event_id, s.bezeichnung AS service, sg.bezeichnung AS servicegroup, es.mailsenddate\n FROM {cs_eventservice} es, {cs_event} e, {cc_cal} cal, {cs_service} s, {cs_servicegroup} sg\n WHERE e.valid_yn=1 AND cal.id=e.cc_cal_id AND es.valid_yn=1 AND es.cdb_person_id=:p_id\n AND s.sendremindermails_yn=1 AND es.event_id=e.id AND es.service_id=s.id AND sg.id=s.servicegroup_id\n AND e.startdate>=current_date\n ORDER BY e.startdate", array(":p_id" => $u->p_id)); foreach ($servicesOfPerson as $s) { if ($s->approved == 1) { $data['approvedServices'][] = $s; } else { $data['requestedServices'][] = $s; } db_update("cs_eventservice")->fields(array("mailsenddate" => $dt->format('Y-m-d H:i:s')))->condition('id', $s->id, "=")->execute(); } $lang = getUserLanguage($u->p_id); $content = getTemplateContent('email/openServiceReminder', 'churchservice', $data, null, $lang); churchservice_send_mail("[" . getConf('site_name') . "] " . t2($lang, 'there.are.pending.services'), $content, $u->email); $usersToMail->next(); } }
/** * Infos f�r noch zu best�tigende Dienste */ function churchservice_openservice_rememberdays() { global $base_url; include_once "churchservice_db.php"; $delay = readConf('churchservice_openservice_rememberdays'); $dt = new datetime(); // Checken, ob EIN EventService noch nicht gesendet wurde, bzw. schon so alt ist. // Pr�fe dabei, ob die Person eine EMail-Adresse hat und auch gemappt wurde. $sql = "SELECT es.id, p.id p_id, p.vorname, p.email, es.modified_pid, if (password is null and loginstr is null and lastlogin is null,1,0) as invite \n FROM {cs_eventservice} es, {cs_event} e, {cc_cal} cal, {cs_service} s, {cdb_person} p \n where e.valid_yn=1 and e.cc_cal_id=cal.id and es.valid_yn=1 and es.zugesagt_yn=0 and es.cdb_person_id is not null\n and es.service_id=s.id and s.sendremindermails_yn=1 \n and es.event_id=e.id and e.Startdate>=current_date\n and ((es.mailsenddate is null) or (datediff(current_date,es.mailsenddate)>={$delay}))\n and p.email!='' and p.id=es.cdb_person_id limit 1"; $res = db_query($sql)->fetch(); $sql2 = "SELECT es.id id, cal.bezeichnung event, DATE_FORMAT(e.startdate, '%d.%m.%Y %H:%i') datum, e.id event_id,\n s.bezeichnung service, sg.bezeichnung servicegroup, es.mailsenddate\n FROM {cs_eventservice} es, {cs_event} e, {cc_cal} cal, {cs_service} s, {cs_servicegroup} sg \n where e.valid_yn=1 and cal.id=e.cc_cal_id and es.valid_yn=1 and es.zugesagt_yn=:zugesagt and es.cdb_person_id=:p_id\n and s.sendremindermails_yn=1 \n and es.event_id=e.id and es.service_id=s.id and sg.id=s.servicegroup_id\n and e.startdate>=current_date\n order by e.startdate"; $i = 0; // Lasse 15 EventServices durch, dann warten bis n�chste Cron, sonst werden es zu viele Mails while ($res && $i < 15) { // Wenn einer vorhanden ist, dann suche nach weiteren offenen Diensten f�r die Person $txt = "<h3>Hallo " . $res->vorname . ",</h3><p>"; $inviter = churchcore_getPersonById($res->modified_pid); $txt .= "Du wurdest in dem Dienstplan auf " . readConf('site_name', 'ChurchTools'); if ($inviter != null) { $txt .= ' von <i>' . $inviter->vorname . " " . $inviter->name . "</i>"; } $txt .= " zu Diensten vorgeschlagen. <br/>Zum Zu- oder Absagen bitte hier klicken:"; $loginstr = churchcore_createOnTimeLoginKey($res->p_id); $txt .= '<p><a href="' . $base_url . '?q=home&id=' . $res->p_id . '&loginstr=' . $loginstr . '" class="btn btn-primary">%sitename</a>'; $txt .= "<p><p><b>Folgende Dienst-Termine sind von Dir noch nicht bearbeitet:</b><ul>"; $arr = db_query($sql2, array(":p_id" => $res->p_id, ":zugesagt" => 0)); foreach ($arr as $res2) { $txt .= "<li> " . $res2->datum . " " . $res2->event . ": " . $res2->service . " (" . $res2->servicegroup . ")"; db_update("cs_eventservice")->fields(array("mailsenddate" => $dt->format('Y-m-d H:i:s')))->condition('id', $res2->id, "=")->execute(); } $txt .= '</ul>'; $arr = db_query($sql2, array(":p_id" => $res->p_id, ":zugesagt" => 1)); $txt2 = ""; foreach ($arr as $res2) { $txt2 .= "<li> " . $res2->datum . " - " . $res2->event . ": " . $res2->service . " (" . $res2->servicegroup . ")"; if ($res2->mailsenddate == null) { $txt2 .= " NEU!"; } db_update("cs_eventservice")->fields(array("mailsenddate" => $dt->format('Y-m-d H:i:s')))->condition('id', $res2->id, "=")->execute(); } if ($txt2 != "") { $txt .= "<p><p><b>Bei folgenden Diensten hast Du schon zugesagt:</b><ul>" . $txt2; $txt .= "</ul>"; } // Person wurde noch nicht eingeladen, also schicke gleich eine Einladung mit! if ($res->invite == 1) { include_once CHURCHDB . '/churchdb_ajax.php'; churchdb_invitePersonToSystem($res->p_id); $txt .= "<p><b>Da Du noch nicht kein Zugriff auf das System hast, bekommst Du noch eine separate E-Mail, mit der Du Dich dann anmelden kannst!.</b>"; } churchservice_send_mail("[" . readConf('site_name', 'ChurchTools') . "] Es sind noch Dienste offen", $txt, $res->email); $i = $i + 1; $res = db_query($sql)->fetch(); } }