Beispiel #1
0
/**
 * make group digest
 * 
 * @param ElggGroup $group
 * @param ElggUser $user
 * @param string $interval
 * @return true (mail sent successfull) || false (some error) || -1 (no content)
 */
function digest_group(ElggGroup $group, ElggUser $user, $interval)
{
    global $SESSION;
    global $interval_ts_upper;
    global $interval_ts_lower;
    global $is_admin;
    static $custom_text_header;
    static $custom_text_footer;
    $result = false;
    // check if group digest is enabled
    if (digest_group_enabled()) {
        if (!empty($group) && elgg_instanceof($group, "group", null, "ElggGroup") && !empty($user) && elgg_instanceof($user, "user", null, "ElggUser")) {
            // remove some view extensions
            digest_prepare_run();
            // set timestamps for interval
            digest_set_interval_timestamps($interval);
            // store current user
            $current_user = elgg_get_logged_in_user_entity();
            // impersonate new user
            $SESSION["user"] = $user;
            $SESSION["username"] = $user->username;
            $SESSION["name"] = $user->name;
            $SESSION["guid"] = $user->getGUID();
            $SESSION["id"] = $user->getGUID();
            // prepare some vars for the different views
            $vars = array("user" => $user, "group" => $group, "ts_lower" => $interval_ts_lower, "ts_upper" => $interval_ts_upper, "interval" => $interval);
            // get data for user
            $userdata = elgg_view("digest/elements/group", $vars);
            if (!empty($userdata)) {
                // check if there are custom header/footer texts
                if (!isset($custom_text_header)) {
                    $custom_text_header = "";
                    if ($text = elgg_get_plugin_setting("custom_text_group_header", "digest")) {
                        $custom_text_header = elgg_view_module("digest", "", "<div class='elgg-output'>" . $text . "</div>");
                    }
                }
                if (!isset($custom_text_footer)) {
                    $custom_text_footer = "";
                    if ($text = elgg_get_plugin_setting("custom_text_group_footer", "digest")) {
                        $custom_text_footer = elgg_view_module("digest", "", "<div class='elgg-output'>" . $text . "</div>");
                    }
                }
                // there is content so send it to the user
                $params = array("title" => elgg_get_site_entity()->name, "content" => $custom_text_header . $userdata . $custom_text_footer, "footer" => elgg_view("digest/elements/footer", $vars), "digest_header" => elgg_view("digest/elements/header", $vars), "digest_online" => elgg_view("digest/elements/online", $vars), "digest_unsubscribe" => elgg_view("digest/elements/unsubscribe", $vars));
                // link to online view
                $digest_online_url = digest_get_online_url($vars);
                // message_subject
                $message_subject = elgg_echo("digest:message:title:group", array(elgg_get_site_entity()->name, $group->name, elgg_echo("digest:interval:" . $interval)));
                // message body
                $message_body = elgg_view_layout("digest", $params);
                // send message
                // if succesfull mail return true
                $result = digest_send_mail($user, $message_subject, $message_body, $digest_online_url);
            } else {
                // no data is still succesful
                $result = -1;
            }
            // save memory
            unset($userdata);
            // restore current user
            $SESSION["user"] = $current_user;
            if (elgg_is_logged_in()) {
                $SESSION["username"] = $current_user->username;
                $SESSION["name"] = $current_user->name;
                $SESSION["guid"] = $current_user->getGUID();
                $SESSION["id"] = $current_user->getGUID();
            } else {
                unset($SESSION["username"]);
                unset($SESSION["name"]);
                unset($SESSION["guid"]);
                unset($SESSION["id"]);
            }
            // save memory
            unset($current_user);
        }
    }
    return $result;
}
Beispiel #2
0
<?php

/**
* This view displays a link to the online version of this digest.
* In case the user can't view the Digest correcly in his/her email program
*
* Available in $vars
* 	$vars['user'] 		=> the current user for whom we're creating the digest
* 	$vars['group'] 		=> (optional) the current group for whom we're creating the digest
* 	$vars['ts_lower']	=> the lower time limit of the content in this digest
* 	$vars['ts_upper']	=> the upper time limit of the content in this digest
* 	$vars['interval']	=> the interval of the current digest
* 							(as defined in DIGEST_INTERVAL_DAILY, DIGEST_INTERVAL_WEEKLY, DIGEST_INTERVAL_FORTNIGHTLY, DIGEST_INTERVAL_MONTHLY)
*
*/
// make link
$digest_url = digest_get_online_url($vars);
echo elgg_echo("digest:elements:online", array("<a href='" . $digest_url . "'>", "</a>"));
Beispiel #3
0
        $ts_lower = $ts_upper - 60 * 60 * 24 * 7;
        break;
    case DIGEST_INTERVAL_FORTNIGHTLY:
        $ts_lower = $ts_upper - 60 * 60 * 24 * 14;
        break;
    case DIGEST_INTERVAL_MONTHLY:
        $ts_lower = $ts_upper - 60 * 60 * 24 * 31;
        break;
    default:
        $interval = DIGEST_INTERVAL_MONTHLY;
        $ts_lower = 1;
}
$user = elgg_get_logged_in_user_entity();
$vars = array("user" => $user, "ts_lower" => $ts_lower, "ts_upper" => $ts_upper, "interval" => $interval, "group" => $group);
$content = "";
if (!empty($header_text)) {
    $content .= elgg_view_module("digest", "", "<div class='elgg-output'>" . $header_text . "</div>");
}
$content .= elgg_view("digest/elements/" . $digest, $vars);
if (!empty($footer_text)) {
    $content .= elgg_view_module("digest", "", "<div class='elgg-output'>" . $footer_text . "</div>");
}
$params = array("title" => elgg_get_site_entity()->name, "content" => $content, "footer" => elgg_view("digest/elements/footer", $vars), "digest_header" => elgg_view("digest/elements/header", $vars), "digest_online" => elgg_view("digest/elements/online", $vars), "digest_unsubscribe" => elgg_view("digest/elements/unsubscribe", $vars));
$msgbody = elgg_view_layout("digest", $params);
echo $msgbody;
// mail the result?
if (get_input("mail")) {
    if (digest_send_mail($user, "Test message from Digest", $msgbody, digest_get_online_url($vars), true)) {
        echo "mail send<br />";
    }
}