Ejemplo n.º 1
0
<?php

// staff only action
user_support_staff_gatekeeper();
$guid = (int) get_input("guid");
$user = elgg_get_logged_in_user_entity();
if (!empty($guid) && ($entity = get_entity($guid))) {
    if (elgg_instanceof($entity, "object", UserSupportTicket::SUBTYPE, "UserSupportTicket")) {
        create_annotation($entity->getGUID(), 'generic_comment', elgg_echo("user_support:support_ticket:closed"), "", $user->getGUID(), $entity->access_id);
        if ($entity->setStatus(UserSupportTicket::CLOSED)) {
            notify_user($entity->getOwnerGUID(), $user->getGUID(), elgg_echo('generic_comment:email:subject'), elgg_echo('generic_comment:email:body', array($entity->title, $user->name, elgg_echo("user_support:support_ticket:closed"), $entity->getURL(), $user->name, $user->getURL())));
            system_message(elgg_echo("user_support:action:ticket:close:success"));
        } else {
            register_error(elgg_echo("user_support:action:ticket:close:error:disable"));
        }
    } else {
        register_error(elgg_echo("InvalidClassException:NotValidElggStar", array($guid, "UserSupportTicket")));
    }
} else {
    register_error(elgg_echo("InvalidParameterException:MissingParameter"));
}
forward(REFERER);
Ejemplo n.º 2
0
/**
 * Gets called during system init
 *
 * @return void
 */
function user_support_init()
{
    // extend css
    elgg_extend_view("css/elgg", "css/user_support/site");
    elgg_extend_view("css/admin", "css/user_support/admin");
    elgg_extend_view("js/elgg", "js/user_support/site");
    elgg_extend_view("page/elements/footer", "user_support/button");
    elgg_extend_view("forms/comment/save", "user_support/support_ticket/comment");
    // register page handler for nice URL's
    elgg_register_page_handler("user_support", "user_support_page_handler");
    // register subtype handlers
    add_subtype("object", UserSupportFAQ::SUBTYPE, "UserSupportFAQ");
    add_subtype("object", UserSupportHelp::SUBTYPE, "UserSupportHelp");
    add_subtype("object", UserSupportTicket::SUBTYPE, "UserSupportTicket");
    // register subtypes for search
    elgg_register_entity_type("object", UserSupportFAQ::SUBTYPE);
    elgg_register_entity_type("object", UserSupportHelp::SUBTYPE);
    // register notifications
    elgg_register_notification_event("object", "comment");
    elgg_register_plugin_hook_handler("get", "subscriptions", "user_support_get_subscriptions_support_ticket_comment_hook");
    elgg_register_plugin_hook_handler("prepare", "notification:create:object:comment", "user_support_prepare_support_ticket_comment_message_hook");
    elgg_register_notification_event("object", UserSupportTicket::SUBTYPE);
    elgg_register_plugin_hook_handler("get", "subscriptions", "user_support_get_subscriptions_support_ticket_hook");
    elgg_register_plugin_hook_handler("prepare", "notification:create:object:" . UserSupportTicket::SUBTYPE, "user_support_prepare_support_ticket_message_hook");
    // update class for FAQ, since user_support v1.0
    if (!get_subtype_class("object", UserSupportFAQ::SUBTYPE)) {
        run_function_once("user_support_faq_class_update");
    }
    // add a group tool option for FAQ
    add_group_tool_option("faq", elgg_echo("user_support:group:tool_option"), false);
    elgg_extend_view("groups/tool_latest", "user_support/faq/group_module");
    // register widgets
    elgg_register_widget_type("faq", elgg_echo("user_support:widgets:faq:title"), elgg_echo("user_support:widgets:faq:description"), array("groups"));
    elgg_register_widget_type("support_ticket", elgg_echo("user_support:widgets:support_ticket:title"), elgg_echo("user_support:widgets:support_ticket:description"), array("dashboard"), true);
    if (user_support_staff_gatekeeper(false)) {
        elgg_register_widget_type("support_staff", elgg_echo("user_support:widgets:support_staff:title"), elgg_echo("user_support:widgets:support_staff:description"), array("dashboard", "admin"));
    }
    // register events
    elgg_register_event_handler("create", "object", "user_support_create_comment_event");
    // plugin hooks
    elgg_register_plugin_hook_handler("register", "menu:entity", "user_support_entity_menu_hook", 550);
    elgg_register_plugin_hook_handler("register", "menu:owner_block", "user_support_owner_block_menu_hook");
    elgg_register_plugin_hook_handler("register", "menu:title", "user_support_title_menu_hook");
    elgg_register_plugin_hook_handler("register", "menu:site", "user_support_site_menu_hook");
    elgg_register_plugin_hook_handler("register", "menu:page", "user_support_page_menu_hook");
    elgg_register_plugin_hook_handler("register", "menu:footer", "user_support_footer_menu_hook");
    elgg_register_plugin_hook_handler("register", "menu:user_hover", "user_support_user_hover_menu_hook");
    elgg_register_plugin_hook_handler("register", "menu:user_support", "user_support_user_support_menu_hook");
    elgg_register_plugin_hook_handler("register", "menu:annotation", "user_support_annotation_menu_hook");
    elgg_register_plugin_hook_handler("widget_url", "widget_manager", "user_support_widget_url_hook");
    elgg_register_plugin_hook_handler("permissions_check", "object", "user_support_permissions_check_hook");
    // register actions
    elgg_register_action("user_support/help/edit", dirname(__FILE__) . "/actions/help/edit.php", "admin");
    elgg_register_action("user_support/help/delete", dirname(__FILE__) . "/actions/help/delete.php", "admin");
    elgg_register_action("user_support/support_ticket/edit", dirname(__FILE__) . "/actions/ticket/edit.php");
    elgg_register_action("user_support/support_ticket/delete", dirname(__FILE__) . "/actions/ticket/delete.php");
    elgg_register_action("user_support/support_ticket/close", dirname(__FILE__) . "/actions/ticket/close.php");
    elgg_register_action("user_support/support_ticket/reopen", dirname(__FILE__) . "/actions/ticket/reopen.php");
    elgg_register_action("user_support/faq/edit", dirname(__FILE__) . "/actions/faq/edit.php");
    elgg_register_action("user_support/faq/delete", dirname(__FILE__) . "/actions/faq/delete.php");
    elgg_register_action("user_support/support_staff", dirname(__FILE__) . "/actions/support_staff.php", "admin");
}
Ejemplo n.º 3
0
/**
 * Add permissions to support staff
 *
 * @param string         $hook         the name of the hook
 * @param string         $type         the type of the hook
 * @param ElggMenuItem[] $return_value current return value
 * @param array          $params       supplied params
 *
 * @return ElggMenuItem[]
 */
function user_support_permissions_check_hook($hook, $type, $return_value, $params)
{
    if ($return_value) {
        return $return_value;
    }
    if (empty($params) || !is_array($params)) {
        return $return_value;
    }
    $entity = elgg_extract("entity", $params);
    if (empty($entity) || !elgg_instanceof($entity, "object", UserSupportTicket::SUBTYPE)) {
        return $return_value;
    }
    $user = elgg_extract("user", $params);
    if (empty($user) || !elgg_instanceof($user, "user")) {
        return $return_value;
    }
    return user_support_staff_gatekeeper(false, $user->getGUID());
}
Ejemplo n.º 4
0
<?php

elgg_gatekeeper();
$user = elgg_get_page_owner_entity();
if (!$user->canEdit() && !user_support_staff_gatekeeper(false)) {
    register_error(elgg_echo("user_support:staff_gatekeeper"));
    forward(REFERER);
}
$status = get_input("status", UserSupportTicket::OPEN);
if (!in_array($status, array(UserSupportTicket::OPEN, UserSupportTicket::CLOSED))) {
    $status = UserSupportTicket::OPEN;
}
$q = get_input("q");
$options = array("type" => "object", "subtype" => UserSupportTicket::SUBTYPE, "owner_guid" => $user->getGUID(), "full_view" => false, "metadata_name_value_pairs" => array("status" => $status), "order_by" => "e.time_updated desc", "no_results" => elgg_echo("notfound"));
if (!empty($q)) {
    $options["joins"] = array("JOIN " . elgg_get_config("dbprefix") . "objects_entity oe ON e.guid = oe.guid");
    $options["wheres"] = array("oe.description LIKE '%" . sanitise_string($q) . "%'");
}
$search_action = "user_support/support_ticket/owner/" . $user->username;
elgg_push_context("support_ticket_title");
// build page elements
if ($status == UserSupportTicket::CLOSED) {
    $search_action .= "/archive";
    if ($user->getGUID() == elgg_get_logged_in_user_guid()) {
        $title_text = elgg_echo("user_support:tickets:mine:archive:title");
    } else {
        $title_text = elgg_echo("user_support:tickets:owner:archive:title", array($user->name));
    }
} else {
    if ($user->getGUID() == elgg_get_logged_in_user_guid()) {
        $title_text = elgg_echo("user_support:tickets:mine:title");
Ejemplo n.º 5
0
<?php

$page_owner = elgg_get_page_owner_entity();
if ($page_owner->getGUID() != elgg_get_logged_in_user_guid()) {
    return;
}
if (!user_support_staff_gatekeeper(false, $page_owner->getGUID())) {
    return;
}
$plugin = elgg_extract("entity", $vars);
$noyes_options = array("no" => elgg_echo("option:no"), "yes" => elgg_echo("option:yes"));
$body = "<div>";
$body .= elgg_echo("user_support:usersettings:admin_notify") . "<br />";
$body .= elgg_view("input/dropdown", array("name" => "params[admin_notify]", "options_values" => $noyes_options, "value" => $plugin->getUserSetting("admin_notify", $page_owner->getGUID())));
$body .= "</div>";
echo $body;
Ejemplo n.º 6
0
elgg_set_page_owner_guid($entity->getOwnerGUID());
// build page elements
$title_text = "";
if (!empty($entity->support_type)) {
    $title_text = elgg_echo("user_support:support_type:" . $entity->support_type) . ": ";
}
$title = $entity->title;
if (strlen($title) > 50) {
    $title = elgg_get_excerpt($title, 50);
}
$title_text .= $title;
// build breadcrumb
if ($entity->getOwnerGUID() == elgg_get_logged_in_user_guid()) {
    elgg_push_breadcrumb(elgg_echo("user_support:menu:support_tickets:mine"), "user_support/support_ticket/owner/" . $entity->getOwnerEntity()->username);
} else {
    elgg_push_breadcrumb(elgg_echo("user_support:menu:support_tickets"), "user_support/support_ticket");
}
elgg_push_breadcrumb($title);
// show entity
$content = elgg_view_entity($entity);
// add comments
$comments_ia = elgg_set_ignore_access(true);
$content .= elgg_view_comments($entity);
elgg_set_ignore_access($comments_ia);
// build page
$page_data = elgg_view_layout("content", array("title" => $title_text, "content" => $content, "filter" => ""));
// restore access
if (user_support_staff_gatekeeper(false)) {
    elgg_set_ignore_access($ia);
}
echo elgg_view_page($title_text, $page_data);