diff options
Diffstat (limited to 'start.php')
-rw-r--r-- | start.php | 102 |
1 files changed, 85 insertions, 17 deletions
@@ -61,6 +61,9 @@ function videolist_init() { // register for embed elgg_register_plugin_hook_handler('embed_get_sections', 'all', 'videolist_embed_get_sections'); elgg_register_plugin_hook_handler('embed_get_items', 'videolist', 'videolist_embed_get_items'); + + // handle URLs without scheme + elgg_register_plugin_hook_handler('videolist:preprocess', 'url', 'videolist_preprocess_url'); // Register actions $actions_path = elgg_get_plugins_path() . "videolist/actions/videolist"; @@ -128,6 +131,12 @@ function videolist_page_handler($page) { /** * Add a menu item to the user ownerblock + * + * @param string $hook + * @param string $type + * @param array $return + * @param array $params + * @return array */ function videolist_owner_block_menu($hook, $type, $return, $params) { if (elgg_instanceof($params['entity'], 'user')) { @@ -145,6 +154,10 @@ function videolist_owner_block_menu($hook, $type, $return, $params) { return $return; } +/** + * @param ElggObject $videolist_item + * @return string + */ function videolist_url($videolist_item) { $guid = $videolist_item->guid; $title = elgg_get_friendly_title($videolist_item->title); @@ -154,6 +167,9 @@ function videolist_url($videolist_item) { /** * Event handler for videolist * + * @param string $event + * @param string $object_type + * @param ElggObject $object */ function videolist_object_notifications($event, $object_type, $object) { static $flag; @@ -177,11 +193,11 @@ function videolist_object_notifications($event, $object_type, $object) { * Intercepts the notification on an event of new video being created and prevents a notification from going out * (because one will be sent on the annotation) * - * @param unknown_type $hook - * @param unknown_type $entity_type - * @param unknown_type $returnvalue - * @param unknown_type $params - * @return unknown + * @param string $hook + * @param string $entity_type + * @param array $returnvalue + * @param array $params + * @return bool */ function videolist_object_notifications_intercept($hook, $entity_type, $returnvalue, $params) { if (isset($params)) { @@ -198,10 +214,11 @@ function videolist_object_notifications_intercept($hook, $entity_type, $returnva /** * Register videolist as an embed type. * - * @param unknown_type $hook - * @param unknown_type $type - * @param unknown_type $value - * @param unknown_type $params + * @param string $hook + * @param string $type + * @param array $value + * @param array $params + * @return array */ function videolist_embed_get_sections($hook, $type, $value, $params) { $value['videolist'] = array( @@ -216,14 +233,15 @@ function videolist_embed_get_sections($hook, $type, $value, $params) { /** * Return a list of videos for embedding * - * @param unknown_type $hook - * @param unknown_type $type - * @param unknown_type $value - * @param unknown_type $params + * @param string $hook + * @param string $type + * @param array $value + * @param array $params + * @return array */ function videolist_embed_get_items($hook, $type, $value, $params) { $options = array( - 'owner_guid' => get_loggedin_userid(), + 'owner_guid' => elgg_get_logged_in_user_guid(), 'type_subtype_pair' => array('object' => 'videolist_item'), 'count' => TRUE ); @@ -245,13 +263,18 @@ function videolist_embed_get_items($hook, $type, $value, $params) { /** * Override the default entity icon for videoslist items * + * @param string $hook + * @param string $type + * @param string $returnvalue + * @param array $params * @return string Relative URL */ function videolist_icon_url_override($hook, $type, $returnvalue, $params) { $videolist_item = $params['entity']; - $size = $params['size']; - - if($videolist_item->getSubtype() != 'videolist_item'){ + /* @var ElggObject $videolist_item */ + $size = $params['size']; + + if($videolist_item->getSubtype() != 'videolist_item'){ return $returnvalue; } @@ -266,6 +289,51 @@ function videolist_icon_url_override($hook, $type, $returnvalue, $params) { } /** + * @param ElggObject $videolist_item + * @return array + */ +function videolist_get_video_dimensions(ElggObject $videolist_item) { + $dimensions = array( + 'width' => 600, + 'height' => 400, + ); + $params['entity'] = $videolist_item; + $params['videotype'] = $videolist_item->videotype; + $dimensions = elgg_trigger_plugin_hook( + 'videolist:setdimensions', + $params['videotype'], + $params, + $dimensions); + if (! is_array($dimensions)) { + $dimensions = array(); + } + if (empty($dimensions['width']) || ! is_numeric($dimensions['width'])) { + $dimensions['width'] = 600; + } + if (empty($dimensions['height']) || ! is_numeric($dimensions['height'])) { + $dimensions['height'] = 400; + } + return $dimensions; +} + +/** + * Prepend HTTP scheme if missing + * @param string $hook + * @param string $type + * @param string $returnvalue + * @param array $params + * @return string + */ +function videolist_preprocess_url($hook, $type, $returnvalue, $params) { + $parsed = parse_url($returnvalue); + if (empty($parsed['host']) && ! empty($parsed['path']) && $parsed['path'][0] !== '/') { + // user probably forgot scheme + $returnvalue = 'http://' . $returnvalue; + } + return $returnvalue; +} + +/** * Process upgrades for the videolist plugin */ function videolist_run_upgrades() { |