* Friends' files: pg/file/friends/ * View file: pg/file/view// * New file: pg/file/new/<guid> * Edit file: pg/file/edit/<guid> * Group files: pg/file/group/<guid>/owner * * Title is ignored * * @param array $page * @return NULL */ function file_page_handler($page) { if (!isset($page[0])) { $page[0] = 'all'; } $file_dir = elgg_get_plugin_path() . 'file'; $page_type = $page[0]; switch ($page_type) { case 'owner': $owner = get_user_by_username($page[1]); set_input('guid', $owner->guid); include "$file_dir/index.php"; break; case 'friends': set_input('username', $page[1]); include "$file_dir/friends.php"; break; case 'view': set_input('guid', $page[1]); include "$file_dir/view.php"; break; case 'new': set_input('guid', $page[1]); include "$file_dir/upload.php"; break; case 'edit': set_input('guid', $page[1]); include "$file_dir/edit.php"; break; case 'group': set_input('guid', $page[1]); include "$file_dir/index.php"; break; case 'all': default: include "$file_dir/world.php"; break; } } /** * Returns a more meaningful message * * @param unknown_type $hook * @param unknown_type $entity_type * @param unknown_type $returnvalue * @param unknown_type $params */ function file_notify_message($hook, $entity_type, $returnvalue, $params) { $entity = $params['entity']; $to_entity = $params['to_entity']; $method = $params['method']; if (($entity instanceof ElggEntity) && ($entity->getSubtype() == 'file')) { $descr = $entity->description; $title = $entity->title; global $CONFIG; $url = elgg_get_site_url() . "pg/view/" . $entity->guid; if ($method == 'sms') { $owner = $entity->getOwnerEntity(); return $owner->name . ' ' . elgg_echo("file:via") . ': ' . $url . ' (' . $title . ')'; } if ($method == 'email') { $owner = $entity->getOwnerEntity(); return $owner->name . ' ' . elgg_echo("file:via") . ': ' . $entity->title . "\n\n" . $descr . "\n\n" . $entity->getURL(); } if ($method == 'web') { $owner = $entity->getOwnerEntity(); return $owner->name . ' ' . elgg_echo("file:via") . ': ' . $entity->title . "\n\n" . $descr . "\n\n" . $entity->getURL(); } } return null; } /** * Add a menu item to the user ownerblock */ function file_owner_block_menu($hook, $type, $return, $params) { if (elgg_instanceof($params['entity'], 'user')) { $url = "pg/file/owner/{$params['entity']->username}"; $item = new ElggMenuItem('file', elgg_echo('file'), $url); $return[] = $item; } else { if ($params['entity']->file_enable != "no") { $url = "pg/file/group/{$params['entity']->guid}/owner"; $item = new ElggMenuItem('file', elgg_echo('file:group'), $url); $return[] = $item; } } return $return; } /** * Returns an overall file type from the mimetype * * @param string $mimetype The MIME type * @return string The overall type */ function get_general_file_type($mimetype) { switch($mimetype) { case "application/msword": return "document"; break; case "application/pdf": return "document"; break; } if (substr_count($mimetype,'text/')) return "document"; if (substr_count($mimetype,'audio/')) return "audio"; if (substr_count($mimetype,'image/')) return "image"; if (substr_count($mimetype,'video/')) return "video"; if (substr_count($mimetype,'opendocument')) return "document"; return "general"; } /** * Returns a list of filetypes to search specifically on * * @param int|array $owner_guid The GUID(s) of the owner(s) of the files * @param true|false $friends Whether we're looking at the owner or the owner's friends * @return string The typecloud */ function get_filetype_cloud($owner_guid = "", $friends = false) { if ($friends) { if ($friendslist = get_user_friends($user_guid, "", 999999, 0)) { $friendguids = array(); foreach($friendslist as $friend) { $friendguids[] = $friend->getGUID(); } } $friendofguid = $owner_guid; $owner_guid = $friendguids; } else { $friendofguid = false; } elgg_register_tag_metadata_name('simpletype'); $options = array( 'type' => 'object', 'subtype' => 'file', 'owner_guid' => $owner_guid, 'threshold' => 0, 'limit' => 10, 'tag_names' => array('simpletype') ); $types = elgg_get_tags($options); return elgg_view('file/typecloud',array('owner_guid' => $owner_guid, 'friend_guid' => $friendofguid, 'types' => $types)); } /** * Register file as an embed type. * * @param unknown_type $hook * @param unknown_type $type * @param unknown_type $value * @param unknown_type $params */ function file_embed_get_sections($hook, $type, $value, $params) { $value['file'] = array( 'name' => elgg_echo('file'), 'layout' => 'list', 'icon_size' => 'small', ); return $value; } /** * Return a list of files for embedding * * @param unknown_type $hook * @param unknown_type $type * @param unknown_type $value * @param unknown_type $params */ function file_embed_get_items($hook, $type, $value, $params) { $options = array( 'owner_guid' => get_loggedin_userid(), 'type_subtype_pair' => array('object' => 'file'), 'count' => TRUE ); if ($count = elgg_get_entities($options)) { $value['count'] += $count; unset($options['count']); $options['offset'] = $params['offset']; $options['limit'] = $params['limit']; $items = elgg_get_entities($options); $value['items'] = array_merge($items, $value['items']); } return $value; } /** * Register file as an embed type. * * @param unknown_type $hook * @param unknown_type $type * @param unknown_type $value * @param unknown_type $params */ function file_embed_get_upload_sections($hook, $type, $value, $params) { $value['file'] = array( 'name' => elgg_echo('file'), 'view' => 'file/embed_upload' ); return $value; } /** * Populates the ->getUrl() method for file objects * * @param ElggEntity $entity File entity * @return string File URL */ function file_url($entity) { $title = $entity->title; $title = elgg_get_friendly_title($title); return "pg/file/view/" . $entity->getGUID() . "/" . $title; } // Make sure test_init is called on initialisation elgg_register_event_handler('init','system','file_init'); // Register actions elgg_register_action("file/upload", $CONFIG->pluginspath . "file/actions/file/upload.php"); elgg_register_action("file/save", $CONFIG->pluginspath . "file/actions/file/save.php"); elgg_register_action("file/delete", $CONFIG->pluginspath. "file/actions/file/delete.php"); // temporary - see #2010 elgg_register_action("file/download", $CONFIG->pluginspath. "file/actions/file/download.php");