Beispiel #1
0
 /**
  * Test gallery entity classes have been registered correctly
  */
 public function testSubtypeClasses()
 {
     $album_class = get_subtype_class('object', hjAlbum::SUBTYPE);
     $image_class = get_subtype_class('object', hjAlbumImage::SUBTYPE);
     $this->assertEqual($album_class, get_class(new hjAlbum()));
     $this->assertEqual($image_class, get_class(new hjAlbumImage()));
 }
Beispiel #2
0
/**
* This function adds a class handler to object->faq
* Since the old FAQ didn't had a class
*
* @return bool
*/
function user_support_faq_class_update()
{
    $class = get_subtype_class("object", UserSupportFAQ::SUBTYPE);
    if ($class != "UserSupportFAQ") {
        return update_subtype("object", UserSupportFAQ::SUBTYPE, "UserSupportFAQ");
    }
    return true;
}
Beispiel #3
0
 public static function fixClasses($event, $type, $object)
 {
     $classes = ['\\ColdTrick\\EventManager\\Event\\Day', '\\ColdTrick\\EventManager\\Event\\Slot'];
     foreach ($classes as $class) {
         if (get_subtype_class('object', $class::SUBTYPE) !== $class) {
             update_subtype('object', $class::SUBTYPE, $class);
         }
     }
 }
Beispiel #4
0
/**
 * Performs class upgrade before init as classes are needed during init
 *
 * @return void
 */
function profile_manager_plugins_boot()
{
    $classes = ['\\ColdTrick\\ProfileManager\\CustomProfileField', '\\ColdTrick\\ProfileManager\\CustomGroupField', '\\ColdTrick\\ProfileManager\\CustomProfileType', '\\ColdTrick\\ProfileManager\\CustomFieldCategory'];
    foreach ($classes as $class) {
        $current_class = get_subtype_class('object', $class::SUBTYPE);
        if ($current_class !== $class) {
            update_subtype('object', $class::SUBTYPE, $class);
        }
    }
}
Beispiel #5
0
 /**
  * Saves uploaded file to ElggFile with given attributes
  *
  * @param array  $attributes New file attributes and metadata
  * @apara string $prefix     Filestore prefix
  * @return \Upload
  */
 public function save(array $attributes = array(), $prefix = self::DEFAULT_FILESTORE_PREFIX)
 {
     $this->error_code = $this->error;
     $this->error = $this->getError();
     $this->filesize = $this->size;
     $this->path = $this->tmp_name;
     $this->mimetype = $this->detectMimeType();
     $this->simpletype = $this->parseSimpleType();
     if (!$this->isSuccessful()) {
         return $this;
     }
     $prefix = trim($prefix, '/');
     if (!$prefix) {
         $prefix = self::DEFAULT_FILESTORE_PREFIX;
     }
     $id = elgg_strtolower(time() . $this->name);
     $filename = implode('/', array($prefix, $id));
     $type = elgg_extract('type', $attributes, 'object');
     $subtype = elgg_extract('subtype', $attributes, 'file');
     $class = get_subtype_class($type, $subtype);
     if (!$class) {
         $class = '\\ElggFile';
     }
     try {
         $filehandler = new $class();
         foreach ($attributes as $key => $value) {
             $filehandler->{$key} = $value;
         }
         $filehandler->setFilename($filename);
         $filehandler->title = $this->name;
         $filehandler->originalfilename = $this->name;
         $filehandler->filesize = $this->size;
         $filehandler->mimetype = $this->mimetype;
         $filehandler->simpletype = $this->simpletype;
         $filehandler->open("write");
         $filehandler->close();
         if ($this->simpletype == 'image') {
             $img = new \hypeJunction\Files\Image($this->tmp_name);
             $img->save($filehandler->getFilenameOnFilestore(), hypeApps()->config->getSrcCompressionOpts());
         } else {
             move_uploaded_file($this->tmp_name, $filehandler->getFilenameOnFilestore());
         }
         if ($filehandler->save()) {
             $this->guid = $filehandler->getGUID();
             $this->file = $filehandler;
         }
     } catch (\Exception $ex) {
         elgg_log($ex->getMessage(), 'ERROR');
         $this->error = elgg_echo('upload:error:unknown');
     }
     return $this;
 }
Beispiel #6
0
/**
 * Get a list of all the exportable values for the given type/subtype
 *
 * @param string $type     the entity type
 * @param string $subtype  the entity subtype
 * @param bool   $readable readable values or just for processing (default: false)
 *
 * @return array
 */
function csv_exporter_get_exportable_values($type, $subtype = '', $readable = false)
{
    $result = [];
    if (empty($type)) {
        return $result;
    }
    if ($type == 'object' && empty($subtype)) {
        return $result;
    }
    $class = get_subtype_class($type, $subtype);
    if (!empty($class)) {
        $dummy = new $class();
    } else {
        switch ($type) {
            case 'object':
                $dummy = new ElggObject();
                break;
            case 'group':
                $dummy = new ElggGroup();
                break;
            case 'site':
                $dummy = new ElggSite();
                break;
            case 'user':
                $dummy = new ElggUser();
                break;
        }
    }
    $exports = (array) $dummy->toObject();
    $defaults = array_keys($exports);
    if ($readable) {
        $new_defaults = [];
        foreach ($defaults as $name) {
            if (elgg_language_key_exists($name)) {
                $lan = elgg_echo($name);
            } elseif (elgg_language_key_exists("csv_exporter:exportable_value:{$name}")) {
                $lan = elgg_echo("csv_exporter:exportable_value:{$name}");
            } else {
                $lan = $name;
            }
            $new_defaults[$lan] = $name;
        }
        $defaults = $new_defaults;
    }
    $params = ['type' => $type, 'subtype' => $subtype, 'readable' => $readable, 'defaults' => $defaults];
    $result = elgg_trigger_plugin_hook('get_exportable_values', 'csv_exporter', $params, $defaults);
    if (is_array($result)) {
        // prevent duplications
        $result = array_unique($result);
    }
    return $result;
}
 /**
  * {@inheritdoc}
  *
  * @tip: if you are extending the category form, use can access these values in the volatileData of the category
  */
 public function execute()
 {
     $nodes = array();
     $config = $this->input_categories;
     foreach ($config['hierarchy'] as $key => $node_id) {
         $node_id = (int) $node_id;
         $guid = (int) $config['guid'][$key];
         $title = $config['title'][$key];
         $desc = $config['description'][$key];
         $access_id = $config['access_id'][$key];
         $subtype = $config['subtype'][$key];
         $category = get_entity($guid);
         if (!$category) {
             $class = get_subtype_class('object', $subtype) ?: get_class(new ElggObject());
             $category = new $class();
             $category->subtype = $subtype ? $subtype : hypeCategories()->config->get('subtype');
             $category->owner_guid = elgg_get_logged_in_user_guid();
             $category->container_guid = $this->root_guid;
         }
         if (!$category) {
             $nodes[$node_id] = false;
             continue;
         }
         if (!$title) {
             $category->delete();
             $nodes[$node_id] = false;
             continue;
         } else {
             $category->title = $title;
             $category->description = $desc;
             $category->access_id = $access_id;
             $category->priority = $key + 1;
             // we don't want 0
             $form_values = array();
             foreach ($config as $param_name => $entity_params) {
                 $form_values[$param_name] = $entity_params[$key];
             }
             $category->setVolatileData('formValues', $form_values);
             $category->save();
         }
         if ($_FILES['categories']['error']['icon'][$key] == UPLOAD_ERR_OK) {
             hypeApps()->iconFactory->create($category, $_FILES['categories']['tmp_name']['icon'][$key]);
         }
         $nodes[$node_id] = $category;
     }
     $this->nodes = $nodes;
     foreach ($this->hierarchy as $key => $root) {
         $this->updateHierarchy((int) $root['id'], $root['children']);
     }
     $this->result->addMessage(elgg_echo('categories:manage:success'));
 }
Beispiel #8
0
function widget_manager_init()
{
    // check valid WidgetManagerWidget class
    if (get_subtype_class("object", "widget") == "ElggWidget") {
        update_subtype("object", "widget", "WidgetManagerWidget");
    }
    elgg_trigger_event("widgets_init", "widget_manager");
    if (elgg_is_active_plugin("groups") && elgg_get_plugin_setting("group_enable", "widget_manager") == "yes") {
        // add the widget manager tool option
        $group_option_enabled = false;
        if (elgg_get_plugin_setting("group_option_default_enabled", "widget_manager") == "yes") {
            $group_option_enabled = true;
        }
        if (elgg_get_plugin_setting("group_option_admin_only", "widget_manager") != "yes") {
            // add the tool option for group admins
            add_group_tool_option('widget_manager', elgg_echo('widget_manager:groups:enable_widget_manager'), $group_option_enabled);
        } elseif (elgg_is_admin_logged_in()) {
            add_group_tool_option('widget_manager', elgg_echo('widget_manager:groups:enable_widget_manager'), $group_option_enabled);
        } elseif ($group_option_enabled) {
            // register event to make sure newly created groups have the group option enabled
            elgg_register_event_handler("create", "group", "widget_manager_create_group_event_handler");
            elgg_register_plugin_hook_handler('get_list', 'default_widgets', 'widget_manager_group_widgets_default_list');
        }
    }
    // extend CSS
    elgg_extend_view("css/elgg", "widget_manager/css/global");
    elgg_extend_view("css/admin", "widget_manager/css/global");
    elgg_extend_view("js/elgg", "widget_manager/js/site");
    elgg_extend_view("js/admin", "widget_manager/js/admin");
    // register a widget title url handler
    elgg_register_entity_url_handler("object", "widget", "widget_manager_widget_url_handler");
    // multi dashboard support
    add_subtype("object", MultiDashboard::SUBTYPE, "MultiDashboard");
    if (elgg_is_logged_in() && widget_manager_multi_dashboard_enabled()) {
        elgg_register_page_handler("multi_dashboard", "widget_manager_multi_dashboard_page_handler");
        $options = array("type" => "object", "subtype" => MultiDashboard::SUBTYPE, "owner_guid" => elgg_get_logged_in_user_guid(), "count" => true);
        $tab_count = elgg_get_entities($options);
        if ($tab_count < MULTI_DASHBOARD_MAX_TABS) {
            elgg_register_menu_item("extras", array("name" => "multi_dashboard", "text" => elgg_view_icon("home"), "href" => "multi_dashboard/edit/?internal_url=" . urlencode(current_page_url()), "title" => elgg_echo("widget_manager:multi_dashboard:extras"), "rel" => "nofollow", "id" => "widget-manager-multi_dashboard-extras"));
        }
        elgg_extend_view("page/elements/sidebar", "widget_manager/multi_dashboard/sidebar", 400);
        elgg_register_event_handler("create", "object", "widget_manager_create_object_handler");
        elgg_register_plugin_hook_handler("route", "dashboard", "widget_manager_dashboard_route_handler");
        elgg_register_plugin_hook_handler("action", "widgets/add", "widget_manager_widgets_add_action_handler");
        elgg_register_action("multi_dashboard/edit", dirname(__FILE__) . "/actions/multi_dashboard/edit.php");
        elgg_register_action("multi_dashboard/delete", dirname(__FILE__) . "/actions/multi_dashboard/delete.php");
        elgg_register_action("multi_dashboard/drop", dirname(__FILE__) . "/actions/multi_dashboard/drop.php");
        elgg_register_action("multi_dashboard/reorder", dirname(__FILE__) . "/actions/multi_dashboard/reorder.php");
    }
}
Beispiel #9
0
/**
 * Get a list of all the exportable values for the given type/subtype
 *
 * @param string $type     the entity type
 * @param string $subtype  the entity subtype
 * @param bool   $readable readable values or just for processing (default: false)
 *
 * @return array
 */
function csv_exporter_get_exportable_values($type, $subtype = "", $readable = false)
{
    $result = array();
    if (empty($type)) {
        return $result;
    }
    if ($type == "object" && empty($subtype)) {
        return $result;
    }
    $class = get_subtype_class($type, $subtype);
    if (!empty($class)) {
        $dummy = new $class();
    } else {
        switch ($type) {
            case "object":
                $dummy = new ElggObject();
                break;
            case "group":
                $dummy = new ElggGroup();
                break;
            case "site":
                $dummy = new ElggSite();
                break;
            case "user":
                $dummy = new ElggUser();
                break;
        }
    }
    $defaults = $dummy->getExportableValues();
    if ($readable) {
        $new_defaults = array();
        foreach ($defaults as $name) {
            if ($name != elgg_echo($name)) {
                $lan = elgg_echo($name);
            } else {
                $lan = elgg_echo("csv_exporter:exportable_value:" . $name);
            }
            $new_defaults[$lan] = $name;
        }
        $defaults = $new_defaults;
    }
    $params = array("type" => $type, "subtype" => $subtype, "readable" => $readable, "defaults" => $defaults);
    $result = elgg_trigger_plugin_hook("get_exportable_values", "csv_exporter", $params, $defaults);
    if (is_array($result)) {
        // prevent duplications
        $result = array_unique($result);
    }
    return $result;
}
 /**
  * Builds an ElggEntity from a set of attributes
  *
  * @param mixed $attributes ElggEntity, GUID or entity attributes, including type and subtype
  * @return ElggEntity
  */
 public function build($attributes = null)
 {
     if ($attributes instanceof \ElggEntity) {
         return $attributes;
     }
     if (is_numeric($attributes)) {
         return $this->get($attributes);
     }
     $attributes = (array) $attributes;
     if (!empty($attributes['guid'])) {
         return $this->get($attributes['guid']);
     }
     $type = elgg_extract('type', $attributes, 'object');
     $subtype = elgg_extract('subtype', $attributes, ELGG_ENTITIES_ANY_VALUE);
     unset($attributes['type']);
     unset($attributes['subtype']);
     $class = get_subtype_class($type, $subtype);
     if (class_exists($class)) {
         $entity = new $class();
     } else {
         switch ($type) {
             case 'object':
                 $entity = new \ElggObject();
                 $entity->subtype = $subtype;
                 break;
             case 'user':
                 $entity = new \ElggUser();
                 $entity->subtype = $subtype;
                 break;
             case 'group':
                 $entity = new \ElggGroup();
                 $entity->subtype = $subtype;
                 break;
         }
     }
     foreach ($attributes as $key => $value) {
         if (in_array($key, $this->getAttributeNames($entity))) {
             $entity->{$key} = $value;
         }
     }
     return $entity;
 }
Beispiel #11
0
/**
 * Are there upgrade scripts to be run?
 *
 * @return bool
 */
function tidypics_is_upgrade_available()
{
    // sets $version based on code
    require_once elgg_get_plugins_path() . "tidypics/version.php";
    $local_version = elgg_get_plugin_setting('version', 'tidypics');
    if ($local_version === null) {
        // no version set so either new install or really old one
        if (!get_subtype_class('object', 'image') || !get_subtype_class('object', 'album')) {
            $local_version = 0;
        } else {
            // set initial version for new install
            elgg_set_plugin_setting('version', $version, 'tidypics');
            $local_version = $version;
        }
    } elseif ($local_version === '1.62') {
        // special work around to handle old upgrade system
        $local_version = 2010010101;
        elgg_set_plugin_setting('version', $local_version, 'tidypics');
    }
    if ($local_version == $version) {
        return false;
    } else {
        return true;
    }
}
Beispiel #12
0
Datei: start.php Projekt: n8b/VMN
/**
 * Function that runs on system init. Used to perform initialization of the widget manager features.
 *
 * @return void
 */
function widget_manager_init()
{
    // check valid WidgetManagerWidget class
    if (get_subtype_class("object", "widget") == "ElggWidget") {
        update_subtype("object", "widget", "WidgetManagerWidget");
    }
    // loads the widgets
    widget_manager_widgets_init();
    elgg_register_plugin_hook_handler("widget_settings", "all", "widget_manager_all_widget_settings_hook_handler");
    $group_enable = elgg_get_plugin_setting("group_enable", "widget_manager");
    if (elgg_is_active_plugin("groups") && in_array($group_enable, array("yes", "forced"))) {
        // cleanup widgets in group context
        elgg_extend_view("page/layouts/widgets/add_panel", "widget_manager/group_tool_widgets", 400);
        if ($group_enable == "yes") {
            // add the widget manager tool option
            $group_option_enabled = false;
            if (elgg_get_plugin_setting("group_option_default_enabled", "widget_manager") == "yes") {
                $group_option_enabled = true;
            }
            if (elgg_get_plugin_setting("group_option_admin_only", "widget_manager") != "yes") {
                // add the tool option for group admins
                add_group_tool_option('widget_manager', elgg_echo('widget_manager:groups:enable_widget_manager'), $group_option_enabled);
            } elseif (elgg_is_admin_logged_in()) {
                add_group_tool_option('widget_manager', elgg_echo('widget_manager:groups:enable_widget_manager'), $group_option_enabled);
            } elseif ($group_option_enabled) {
                // register event to make sure newly created groups have the group option enabled
                elgg_register_event_handler("create", "group", "widget_manager_create_group_event_handler");
            }
        }
        // register event to make sure all groups have the group option enabled if forces
        // and configure tool enabled widgets
        elgg_register_event_handler("update", "group", "widget_manager_update_group_event_handler");
        // make default widget management available
        elgg_register_plugin_hook_handler('get_list', 'default_widgets', 'widget_manager_group_widgets_default_list');
    }
    // extend CSS
    elgg_extend_view("css/elgg", "css/widget_manager/site");
    elgg_extend_view("css/elgg", "css/widget_manager/global");
    elgg_extend_view("css/admin", "css/widget_manager/admin");
    elgg_extend_view("css/admin", "css/widget_manager/global");
    elgg_extend_view("js/elgg", "js/widget_manager/site");
    elgg_extend_view("js/admin", "js/widget_manager/admin");
    elgg_register_plugin_hook_handler("format", "friendly:time", "widget_manager_friendly_time_hook");
    // register a widget title url handler
    // core widgets
    elgg_register_plugin_hook_handler("entity:url", "object", "widget_manager_widgets_url");
    // widget manager widgets
    elgg_register_plugin_hook_handler("entity:url", "object", "widget_manager_widgets_url_hook_handler");
    // cacheable widget handlers
    elgg_register_plugin_hook_handler("cacheable_handlers", "widget_manager", "widget_manager_cacheable_handlers_hook_handler");
    // index page
    elgg_register_plugin_hook_handler("route", "all", "widget_manager_route_index_handler");
    // add extra widget pages
    $extra_contexts = elgg_get_plugin_setting("extra_contexts", "widget_manager");
    if ($extra_contexts) {
        $contexts = string_to_tag_array($extra_contexts);
        if ($contexts) {
            foreach ($contexts as $context) {
                elgg_register_page_handler($context, "widget_manager_extra_contexts_page_handler");
            }
        }
    }
    elgg_register_plugin_hook_handler("action", "plugins/settings/save", "widget_manager_plugins_settings_save_hook_handler");
    elgg_register_plugin_hook_handler("action", "widgets/add", "widget_manager_widgets_action_hook_handler");
    elgg_register_plugin_hook_handler("action", "widgets/move", "widget_manager_widgets_action_hook_handler");
    elgg_register_plugin_hook_handler("permissions_check", "object", "widget_manager_permissions_check_object_hook_handler");
    elgg_register_event_handler("create", "object", "widget_manager_create_object_handler");
    // multi dashboard support
    add_subtype("object", MultiDashboard::SUBTYPE, "MultiDashboard");
    if (elgg_is_logged_in() && widget_manager_multi_dashboard_enabled()) {
        elgg_register_page_handler("multi_dashboard", "widget_manager_multi_dashboard_page_handler");
        elgg_register_plugin_hook_handler('register', 'menu:extras', 'widget_manager_register_extras_menu');
        // add js initialisation view
        elgg_extend_view("page/elements/sidebar", "widget_manager/multi_dashboard/sidebar", 400);
        elgg_register_plugin_hook_handler("route", "dashboard", "widget_manager_dashboard_route_handler");
        elgg_register_plugin_hook_handler("action", "widgets/add", "widget_manager_widgets_add_action_handler");
        elgg_register_action("multi_dashboard/edit", dirname(__FILE__) . "/actions/multi_dashboard/edit.php");
        elgg_register_action("multi_dashboard/delete", dirname(__FILE__) . "/actions/multi_dashboard/delete.php");
        elgg_register_action("multi_dashboard/drop", dirname(__FILE__) . "/actions/multi_dashboard/drop.php");
        elgg_register_action("multi_dashboard/reorder", dirname(__FILE__) . "/actions/multi_dashboard/reorder.php");
    }
    elgg_register_ajax_view("widget_manager/widgets/settings");
    elgg_register_ajax_view("widgets/user_search/content");
    // register actions
    elgg_register_action("widget_manager/manage", dirname(__FILE__) . "/actions/manage.php", "admin");
    elgg_register_action("widget_manager/widgets/toggle_fix", dirname(__FILE__) . "/actions/widgets/toggle_fix.php", "admin");
    elgg_register_action("widget_manager/force_tool_widgets", dirname(__FILE__) . "/actions/force_tool_widgets.php", "admin");
    elgg_register_action("widget_manager/widgets/toggle_collapse", dirname(__FILE__) . "/actions/widgets/toggle_collapse.php");
}
Beispiel #13
0
/**
 * Register a crud subtype class into elgg engine
 */
function crud_register_subtype($name, $class_name = NULL)
{
    if (empty($class_name)) {
        $class_name = "CrudObject";
    }
    if (get_subtype_id('object', $name)) {
        if (get_subtype_class('object', $name) != $class_name) {
            update_subtype('object', $name, $class_name);
        }
    } else {
        add_subtype('object', $name, $class_name);
    }
}
Beispiel #14
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");
}
 /**
  * Save uploaded files
  *
  * @param string $input_name Form input name
  * @param array  $attributes File attributes
  * @return ElggFile[]
  */
 protected function saveUploadedFiles($input_name, array $attributes = [])
 {
     $files = [];
     $uploaded_files = $this->getUploadedFiles($input_name);
     $subtype = elgg_extract('subtype', $attributes, 'file', false);
     unset($attributes['subtype']);
     $class = get_subtype_class('object', $subtype);
     if (!$class || !class_exists($class) || !is_subclass_of($class, ElggFile::class)) {
         $class = ElggFile::class;
     }
     foreach ($uploaded_files as $upload) {
         if (!$upload->isValid()) {
             $error = new \stdClass();
             $error->error = elgg_get_friendly_upload_error($upload->getError());
             $files[] = $error;
             continue;
         }
         $file = new $class();
         $file->subtype = $subtype;
         foreach ($attributes as $key => $value) {
             $file->{$key} = $value;
         }
         $old_filestorename = '';
         if ($file->exists()) {
             $old_filestorename = $file->getFilenameOnFilestore();
         }
         $originalfilename = $upload->getClientOriginalName();
         $file->originalfilename = $originalfilename;
         if (empty($file->title)) {
             $file->title = htmlspecialchars($file->originalfilename, ENT_QUOTES, 'UTF-8');
         }
         $file->upload_time = time();
         $prefix = $file->filestore_prefix ?: 'file';
         $prefix = trim($prefix, '/');
         $filename = elgg_strtolower("{$prefix}/{$file->upload_time}{$file->originalfilename}");
         $file->setFilename($filename);
         $file->filestore_prefix = $prefix;
         $hook_params = ['file' => $file, 'upload' => $upload];
         $uploaded = _elgg_services()->hooks->trigger('upload', 'file', $hook_params);
         if ($uploaded !== true && $uploaded !== false) {
             $filestorename = $file->getFilenameOnFilestore();
             try {
                 $uploaded = $upload->move(pathinfo($filestorename, PATHINFO_DIRNAME), pathinfo($filestorename, PATHINFO_BASENAME));
             } catch (FileException $ex) {
                 elgg_log($ex->getMessage(), 'ERROR');
                 $uploaded = false;
             }
         }
         if (!$uploaded) {
             $error = new \stdClass();
             $error->error = elgg_echo('dropzone:file_not_entity');
             $files[] = $error;
             continue;
         }
         if ($old_filestorename && $old_filestorename != $file->getFilenameOnFilestore()) {
             // remove old file
             unlink($old_filestorename);
         }
         $mime_type = $file->detectMimeType(null, $upload->getClientMimeType());
         $file->setMimeType($mime_type);
         $file->simpletype = elgg_get_file_simple_type($mime_type);
         _elgg_services()->events->triggerAfter('upload', 'file', $file);
         if (!$file->save() || !$file->exists()) {
             $file->delete();
             $error = new \stdClass();
             $error->error = elgg_echo('dropzone:file_not_entity');
             $files[] = $error;
             continue;
         }
         if ($file->saveIconFromElggFile($file)) {
             $file->thumbnail = $file->getIcon('small')->getFilename();
             $file->smallthumb = $file->getIcon('medium')->getFilename();
             $file->largethumb = $file->getIcon('large')->getFilename();
         }
         $success = new \stdClass();
         $success->file = $file;
         $files[] = $success;
     }
     return $files;
 }
Beispiel #16
0
/**
 * Utility function used by import_entity_plugin_hook() to
 * process an ODDEntity into an unsaved \ElggEntity.
 *
 * @param ODDEntity $element The OpenDD element
 *
 * @return \ElggEntity the unsaved entity which should be populated by items.
 * @todo Remove this.
 * @access private
 *
 * @throws ClassException|InstallationException|ImportException
 * @deprecated 1.9
 */
function oddentity_to_elggentity(ODDEntity $element)
{
    elgg_deprecated_notice(__FUNCTION__ . ' is deprecated', 1.9);
    $class = $element->getAttribute('class');
    $subclass = $element->getAttribute('subclass');
    // See if we already have imported this uuid
    $tmp = get_entity_from_uuid($element->getAttribute('uuid'));
    if (!$tmp) {
        // Construct new class with owner from session
        $classname = get_subtype_class($class, $subclass);
        if ($classname) {
            if (class_exists($classname)) {
                $tmp = new $classname();
                if (!$tmp instanceof \ElggEntity) {
                    $msg = $classname . " is not a " . get_class() . ".";
                    throw new \ClassException($msg);
                }
            } else {
                error_log("Class '" . $classname . "' was not found, missing plugin?");
            }
        } else {
            switch ($class) {
                case 'object':
                    $tmp = new \ElggObject();
                    break;
                case 'user':
                    $tmp = new \ElggUser();
                    break;
                case 'group':
                    $tmp = new \ElggGroup();
                    break;
                case 'site':
                    $tmp = new \ElggSite();
                    break;
                default:
                    $msg = "Type " . $class . " is not supported. This indicates an error in your installation, most likely caused by an incomplete upgrade.";
                    throw new \InstallationException($msg);
            }
        }
    }
    if ($tmp) {
        if (!$tmp->import($element)) {
            $msg = "Could not import element " . $element->getAttribute('uuid');
            throw new \ImportException($msg);
        }
        return $tmp;
    }
    return NULL;
}
Beispiel #17
0
/**
 * Utility function used by import_entity_plugin_hook() to
 * process an ODDEntity into an unsaved ElggEntity.
 *
 * @param ODDEntity $element The OpenDD element
 *
 * @return ElggEntity the unsaved entity which should be populated by items.
 * @todo Remove this.
 * @access private
 */
function oddentity_to_elggentity(ODDEntity $element)
{
    $class = $element->getAttribute('class');
    $subclass = $element->getAttribute('subclass');
    // See if we already have imported this uuid
    $tmp = get_entity_from_uuid($element->getAttribute('uuid'));
    if (!$tmp) {
        // Construct new class with owner from session
        $classname = get_subtype_class($class, $subclass);
        if ($classname != "") {
            if (class_exists($classname)) {
                $tmp = new $classname();
                if (!$tmp instanceof ElggEntity) {
                    $msg = elgg_echo('ClassException:ClassnameNotClass', array($classname, get_class()));
                    throw new ClassException($msg);
                }
            } else {
                error_log(elgg_echo('ClassNotFoundException:MissingClass', array($classname)));
            }
        } else {
            switch ($class) {
                case 'object':
                    $tmp = new ElggObject($row);
                    break;
                case 'user':
                    $tmp = new ElggUser($row);
                    break;
                case 'group':
                    $tmp = new ElggGroup($row);
                    break;
                case 'site':
                    $tmp = new ElggSite($row);
                    break;
                default:
                    $msg = elgg_echo('InstallationException:TypeNotSupported', array($class));
                    throw new InstallationException($msg);
            }
        }
    }
    if ($tmp) {
        if (!$tmp->import($element)) {
            $msg = elgg_echo('ImportException:ImportFailed', array($element->getAttribute('uuid')));
            throw new ImportException($msg);
        }
        return $tmp;
    }
    return NULL;
}
Beispiel #18
0
function hj_framework_edit_object_action()
{
    $form_name = get_input('form_name', false);
    elgg_make_sticky_form($form_name);
    if (!hj_framework_validate_form($form_name)) {
        return false;
    }
    $guid = get_input('guid', ELGG_ENTITIES_ANY_VALUE);
    $event = $guid ? 'edit' : 'create';
    $type = get_input('type');
    $subtype = get_input('subtype');
    $class = get_subtype_class($type, $subtype);
    //get the attachments
    $attachments = $_FILES['attachments'];
    if ($class) {
        $entity = new $class($guid);
    } else {
        switch (get_input('type', 'object')) {
            case 'object':
                $entity = new ElggObject($guid);
                break;
            case 'user':
                $entity = new ElggUser($guid);
                break;
            case 'group':
                $entity = new ElggGroup($guid);
                break;
            default:
                return false;
                break;
        }
    }
    if ($guid) {
        // Entity already exists
        if ((int) get_input('container_guid', 0) > 0) {
            $entity->container_guid = get_input('container_guid', ELGG_ENTITIES_ANY_VALUE);
        }
        if ($title = get_input('title', '')) {
            $entity->title = $title;
        }
        if ($description = get_input('description', '')) {
            $entity->description = $description;
        }
        if ($access_id = get_input('access_id', ACCESS_DEFAULT)) {
            $entity->access_id = $access_id;
        }
    } else {
        // Creating new entity
        $entity->subtype = get_input('subtype', 'hjformsubmission');
        if ($owner_guid = get_input('owner_guid', ELGG_ENTITIES_ANY_VALUE)) {
            $entity->owner_guid = $owner_guid;
        }
        if ($container_guid = get_input('container_guid', ELGG_ENTITIES_ANY_VALUE)) {
            $entity->container_guid = $container_guid;
        }
        $entity->title = get_input('title', '');
        $entity->description = get_input('description', '');
        $entity->access_id = get_input('access_id', ACCESS_DEFAULT);
    }
    $guid = $entity->save();
    if (!$guid) {
        register_error(elgg_echo('hj:framework:error:cannotcreateentity'));
        return false;
    } else {
        //check to see if existing attachments
        $existingAttachments = elgg_get_entities_from_relationship(array("relationship" => "attachment", "relationship_guid" => $guid, "inverse_relationship" => true));
        foreach ($existingAttachments as $attachment) {
            $updatedAttachment = new ElggFile($attachment->guid);
            $updatedAttachment->access_id = $access_id;
            $updatedAttachment->save();
        }
        //$entity = get_entity($guid);
        if ($attachments) {
            $count = count($attachments['name']);
            for ($i = 0; $i < $count; $i++) {
                if ($attachments['error'][$i] || !$attachments['name'][$i]) {
                    continue;
                }
                $name = $attachments['name'][$i];
                $file = new ElggFile();
                $file->container_guid = $guid;
                $file->title = $name;
                $file->access_id = (int) $entity->access_id;
                $prefix = "file/";
                $filestorename = elgg_strtolower(time() . $name);
                $file->setFilename($prefix . $filestorename);
                $file->open("write");
                $file->close();
                move_uploaded_file($attachments['tmp_name'][$i], $file->getFilenameOnFilestore());
                $saved = $file->save();
                if ($saved) {
                    $mime_type = ElggFile::detectMimeType($attachments['tmp_name'][$i], $attachments['type'][$i]);
                    $info = pathinfo($name);
                    $office_formats = array('docx', 'xlsx', 'pptx');
                    if ($mime_type == "application/zip" && in_array($info['extension'], $office_formats)) {
                        switch ($info['extension']) {
                            case 'docx':
                                $mime_type = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
                                break;
                            case 'xlsx':
                                $mime_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                                break;
                            case 'pptx':
                                $mime_type = "application/vnd.openxmlformats-officedocument.presentationml.presentation";
                                break;
                        }
                    }
                    // check for bad ppt detection
                    if ($mime_type == "application/vnd.ms-office" && $info['extension'] == "ppt") {
                        $mime_type = "application/vnd.ms-powerpoint";
                    }
                    //add_metastring("projectId");
                    //$file->projectId = $project_guid;
                    $file->setMimeType($mime_type);
                    $file->originalfilename = $name;
                    if (elgg_is_active_plugin('file')) {
                        $file->simpletype = file_get_simple_type($mime_type);
                    }
                    $saved = $file->save();
                    if ($saved) {
                        $file->addRelationship($guid, 'attachment');
                    }
                }
            }
        }
        $accesslevel = get_input('accesslevel', false);
        $params = array('entity' => $entity);
        $form = hj_framework_prepare_form($form_name, $params);
        $fields = $form['form']['fields'];
        $ignore_fields = array('guid', 'type', 'subtype', 'owner_guid', 'container_guid', 'access_id', 'title', 'description');
        foreach ($fields as $name => $options) {
            if (in_array($name, $ignore_fields)) {
                continue;
            }
            if (!$options) {
                continue;
            }
            $type = elgg_extract('input_type', $options, 'text');
            $accesslevel_id = isset($accesslevel[$name]) ? $accesslevel[$name] : $entity->access_id;
            $params = array('name' => $name, 'form_name' => $form_name, 'field' => $options, 'access_id' => $accesslevel_id, 'entity' => $entity, 'event' => $event);
            if (!elgg_trigger_plugin_hook('process:input', "form:input:name:{$name}", $params, false) && !elgg_trigger_plugin_hook('process:input', "form:input:type:{$type}", $params, false)) {
                $value = get_input($name);
                set_input($name, null);
                //				if (!$value) {
                //					elgg_delete_metadata(array(
                //						'guid' => $entity->guid,
                //						'metadata_name' => $name
                //					));
                //
                //					continue;
                //				}
                //
                //				if (is_array($value) && count($value) > 1) {
                //					elgg_delete_metadata(array(
                //						'guid' => $entity->guid,
                //						'metadata_name' => $name
                //					));
                //					foreach ($value as $val) {
                //						if (!empty($val)) {
                //							create_metadata($entity->guid, $name, $val, '', $entity->owner_guid, $accesslevel_id, true);
                //						}
                //					}
                //				} else {
                //					if (is_array($value)) {
                //						$value = implode(',', $value);
                //					}
                //					create_metadata($entity->guid, $name, $value, '', $entity->owner_guid, $accesslevel_id);
                //				}
                $entity->{$name} = $value;
            }
        }
        $entity->save();
        elgg_trigger_plugin_hook('process:form', "form:{$form_name}", array('form_name' => $form_name, 'entity' => $entity), null);
    }
    $forward_url = elgg_trigger_plugin_hook('action:forward', 'form', array('entity' => $entity, 'form_name' => $form_name), $entity->getURL());
    foreach ($_POST['user-callout-id'] as $callout_user) {
        $callout_user_guids[] = $callout_user;
    }
    if ($callout_user_guids) {
        $calloutUsers = new UserCallout(get_entity(elgg_get_logged_in_user_guid()), $callout_user_guids, "a forum post", $forward_url);
        $calloutUsers->sendUserNotifications();
    }
    system_message(elgg_echo('hj:framework:submit:success'));
    elgg_clear_sticky_form($form_name);
    hj_framework_clear_form_validation_status($form_name);
    return array('entity' => $entity, 'forward' => $forward_url);
}