From fc5ef85ec2fa45afb44795109899d93329f7b2c4 Mon Sep 17 00:00:00 2001 From: brettp Date: Fri, 16 Apr 2010 01:56:18 +0000 Subject: Merged [5623]:head from 1.7 to trunk. git-svn-id: http://code.elgg.org/elgg/trunk@5760 36083f99-b078-4883-b0ff-0f9b5a30f544 --- _graphics/indicator.gif | Bin 0 -> 1553 bytes engine/lib/elgglib.php | 5 + mod/categories/actions/save.php | 37 +++--- mod/categories/languages/en.php | 1 + mod/categories/listing.php | 40 ++++++ mod/categories/settings.php | 74 +++++------ mod/categories/start.php | 135 +++++++++++---------- mod/categories/views/default/categories.php | 90 +++++++------- mod/categories/views/default/categories/list.php | 54 +++++---- .../views/default/categories/settings.php | 22 ++-- mod/categories/views/default/categories/view.php | 29 +++-- mod/profile/actions/cropicon.php | 8 +- mod/profile/icondirect.php | 113 +++++++++++++---- mod/profile/start.php | 4 +- mod/search/search_hooks.php | 18 ++- mod/search/views/default/search/css.php | 7 +- mod/search/views/default/search/entity.php | 4 +- mod/thewire/views/rss/object/thewire.php | 50 ++++++++ 18 files changed, 436 insertions(+), 255 deletions(-) create mode 100644 _graphics/indicator.gif create mode 100644 mod/categories/listing.php create mode 100644 mod/thewire/views/rss/object/thewire.php diff --git a/_graphics/indicator.gif b/_graphics/indicator.gif new file mode 100644 index 000000000..085ccaeca Binary files /dev/null and b/_graphics/indicator.gif differ diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 0cb696e1d..77cc0d3a1 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -752,6 +752,11 @@ function elgg_view_annotation(ElggAnnotation $annotation, $bypass = true, $debug function elgg_view_entity_list($entities, $count, $offset, $limit, $fullview = true, $viewtypetoggle = true, $pagination = true) { $count = (int) $count; $limit = (int) $limit; + + // do not require views to explicitly pass in the offset + if (!$offset = (int) $offset) { + $offset = sanitise_int(get_input('offset', 0)); + } // do not require views to explicitly pass in the offset if (!$offset = (int) $offset) { diff --git a/mod/categories/actions/save.php b/mod/categories/actions/save.php index c8d8bd051..21602f659 100644 --- a/mod/categories/actions/save.php +++ b/mod/categories/actions/save.php @@ -1,23 +1,22 @@ - * @copyright Curverider Ltd 2008-2010 - * @link http://elgg.com/ - */ +/** + * Elgg categories plugin category saver + * + * @package ElggCategories + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ - $categories = get_input('categories'); - $categories = string_to_tag_array($categories); - - global $CONFIG; - $site = $CONFIG->site; - $site->categories = $categories; - system_message(elgg_echo("categories:save:success")); - - forward($_SERVER['HTTP_REFERER']); +$categories = get_input('categories'); +$categories = string_to_tag_array($categories); + +global $CONFIG; +$site = $CONFIG->site; +$site->categories = $categories; +system_message(elgg_echo("categories:save:success")); + +forward($_SERVER['HTTP_REFERER']); -?> diff --git a/mod/categories/languages/en.php b/mod/categories/languages/en.php index ecd01a9df..588c194e4 100644 --- a/mod/categories/languages/en.php +++ b/mod/categories/languages/en.php @@ -6,6 +6,7 @@ 'categories:settings' => 'Set site categories', 'categories:explanation' => 'To set some predefined site-wide categories that will be used throughout your system, enter them below, separated with commas. Compatible tools will then display them when the user creates or edits content.', 'categories:save:success' => 'Site categories were successfully saved.', + 'categories:results' => "Results for the site category: %s", ); diff --git a/mod/categories/listing.php b/mod/categories/listing.php new file mode 100644 index 000000000..ecc1bede5 --- /dev/null +++ b/mod/categories/listing.php @@ -0,0 +1,40 @@ + - * @copyright Curverider Ltd 2008-2010 - * @link http://elgg.com/ - */ - - // Load engine and restrict to admins - - require_once(dirname(dirname(dirname(__FILE__))) . '/engine/start.php'); - admin_gatekeeper(); - - // Set context - - set_context('admin'); - - // Get site and categories - - global $CONFIG; - $site = $CONFIG->site; - $categories = $site->categories; - - if (empty($categories)) $categories = array(); - - // Load category save view - - $body = elgg_view('categories/settings',array( - 'categories' => $categories, - )); - - // Layout - - $body = elgg_view_layout('two_column_left_sidebar','', $body); - - // View page - page_draw(elgg_echo('categories:settings'),$body); - -?> \ No newline at end of file +/** + * Elgg categories plugin settings page + * + * @package ElggCategories + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + +// Load engine and restrict to admins +require_once(dirname(dirname(dirname(__FILE__))) . '/engine/start.php'); +admin_gatekeeper(); + +// Set context +set_context('admin'); + +// Get site and categories +global $CONFIG; +$site = $CONFIG->site; +$categories = $site->categories; + +if (empty($categories)) { + $categories = array(); +} + +// Load category save view +$body = elgg_view('categories/settings',array('categories' => $categories)); + + +$body = elgg_view_layout('two_column_left_sidebar', '', $body); + +page_draw(elgg_echo('categories:settings'), $body); diff --git a/mod/categories/start.php b/mod/categories/start.php index 1a8e686fe..dd6da16d5 100644 --- a/mod/categories/start.php +++ b/mod/categories/start.php @@ -1,70 +1,79 @@ - * @copyright Curverider Ltd 2008-2010 - * @link http://elgg.com/ - */ - - /** - * Initialise categories actions etc - * - */ - function categories_init() { - - // Get config - global $CONFIG; - - elgg_extend_view('css', 'categories/css'); - - // Register action - register_action('categories/save',false,$CONFIG->pluginspath . 'categories/actions/save.php',true); - - } - - /** - * Set up menu items - * - */ - function categories_pagesetup() - { - if (get_context() == 'admin' && isadminloggedin()) { - global $CONFIG; - add_submenu_item(elgg_echo('categories:settings'), $CONFIG->wwwroot . 'mod/categories/settings.php'); - } - } - - /** - * Save categories - * - */ - function categories_save($event, $object_type, $object) { +/** + * Elgg categories plugin + * + * @package ElggCategories + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + +/** + * Initialise categories plugin + * + */ +function categories_init() { + + global $CONFIG; + + elgg_extend_view('css', 'categories/css'); + + register_action('categories/save',false,$CONFIG->pluginspath . 'categories/actions/save.php',true); + + register_page_handler('categories', 'categories_page_handler'); + +} + +/** + * Set up admin menu item + * + */ +function categories_pagesetup() { + if (get_context() == 'admin' && isadminloggedin()) { + global $CONFIG; + add_submenu_item(elgg_echo('categories:settings'), $CONFIG->wwwroot . 'mod/categories/settings.php'); + } +} + +/** + * Page handler + * + */ +function categories_page_handler() { + + include(dirname(__FILE__) . "/listing.php"); + return true; +} + +/** + * Save site categories + * + */ +function categories_save($event, $object_type, $object) { + + if ($object instanceof ElggEntity) { + + $marker = get_input('universal_category_marker'); + + if ($marker == 'on') { + + $categories = get_input('universal_categories_list'); - if ($object instanceof ElggEntity) { - - $marker = get_input('universal_category_marker'); - if ($marker == 'on') { - - $categories = get_input('universal_categories_list'); - if (empty($categories)) $categories = array(); - - $object->universal_categories = $categories; - - } - + if (empty($categories)) { + $categories = array(); } - return true; - + + $object->universal_categories = $categories; } - + } + + return true; +} - register_elgg_event_handler('init','system','categories_init'); - register_elgg_event_handler('pagesetup','system','categories_pagesetup'); - register_elgg_event_handler('update','all','categories_save'); - register_elgg_event_handler('create','all','categories_save'); -?> \ No newline at end of file +register_elgg_event_handler('init','system','categories_init'); +register_elgg_event_handler('pagesetup','system','categories_pagesetup'); +register_elgg_event_handler('update','all','categories_save'); +register_elgg_event_handler('create','all','categories_save'); diff --git a/mod/categories/views/default/categories.php b/mod/categories/views/default/categories.php index f5a41cfa1..98e87a05f 100644 --- a/mod/categories/views/default/categories.php +++ b/mod/categories/views/default/categories.php @@ -1,48 +1,52 @@ - * @copyright Curverider Ltd 2008-2010 - * @link http://elgg.com/ - */ - - if (isset($vars['entity']) && $vars['entity'] instanceof ElggEntity) { - $selected_categories = $vars['entity']->universal_categories; - } - $categories = $vars['config']->site->categories; - if (empty($categories)) $categories = array(); - if (empty($selected_categories)) $selected_categories = array(); - - if (!empty($categories)) { - if (!is_array($categories)) $categories = array($categories); - -?> - -

-
-

- - + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + +if (isset($vars['entity']) && $vars['entity'] instanceof ElggEntity) { + $selected_categories = $vars['entity']->universal_categories; +} +$categories = $vars['config']->site->categories; +if (empty($categories)) { + $categories = array(); +} +if (empty($selected_categories)) { + $selected_categories = array(); +} + +if (!empty($categories)) { + if (!is_array($categories)) { + $categories = array($categories); + } - echo elgg_view('input/checkboxes',array( - 'options' => $categories, - 'value' => $selected_categories, - 'internalname' => 'universal_categories_list' - )); - -?> - -

-
- - - } else { - echo ''; - } +

+
+

+ + $categories, + 'value' => $selected_categories, + 'internalname' => 'universal_categories_list' + )); + + ?> + +

+
+ + \ No newline at end of file +} else { + echo ''; +} diff --git a/mod/categories/views/default/categories/list.php b/mod/categories/views/default/categories/list.php index b6f9f4302..161a21655 100644 --- a/mod/categories/views/default/categories/list.php +++ b/mod/categories/views/default/categories/list.php @@ -1,41 +1,51 @@ site->categories; - - if ($categories) { - if (!is_array($categories)) $categories = array($categories); - +$categories = $vars['config']->site->categories; + +if ($categories) { + if (!is_array($categories)) { + $categories = array($categories); + } + if (!empty($vars['subtype'])) { $flag = array(); $owner_guid = ''; - if (isset($vars['owner_guid'])) $owner_guid = (int) $vars['owner_guid']; - if ($cats = get_tags(0,999,'universal_categories','object',$vars['subtype'],$owner_guid)) - foreach($cats as $cat) + if (isset($vars['owner_guid'])) { + $owner_guid = (int) $vars['owner_guid']; + } + if ($cats = get_tags(0,999,'universal_categories','object',$vars['subtype'],$owner_guid)) { + foreach($cats as $cat) { $flag[] = $cat->tag; - + } + } + } else { $flag = null; } - + if (is_null($flag) || !empty($flag)) { - -?> -

-
- + +

+
+ '. $category .''; + } } } - if (!empty($catstring)) echo "
    {$catstring}
"; - - ?> -
-{$catstring}"; + } + + ?> +
+ \ No newline at end of file +} diff --git a/mod/categories/views/default/categories/settings.php b/mod/categories/views/default/categories/settings.php index 6c55d88f9..7f38b6579 100644 --- a/mod/categories/views/default/categories/settings.php +++ b/mod/categories/views/default/categories/settings.php @@ -1,26 +1,24 @@ -
-

- -

- +
+

+ +

- $vars['url'] . 'action/categories/save', 'method' => 'post', 'body' => elgg_view('categories/settingsform',$vars) - ) + ) ); -?> + ?>
\ No newline at end of file diff --git a/mod/categories/views/default/categories/view.php b/mod/categories/views/default/categories/view.php index ef092ce84..7ee0170d9 100644 --- a/mod/categories/views/default/categories/view.php +++ b/mod/categories/views/default/categories/view.php @@ -1,19 +1,22 @@ universal_categories; - if (!empty($categories)) { - if (!is_array($categories)) $categories = array($categories); - foreach($categories as $category) { - $link = $vars['url'] . 'search?tagtype=universal_categories&tag=' . urlencode($category); - if (!empty($linkstr)) $linkstr .= ', '; - $linkstr .= '' . $category . ''; +$linkstr = ''; +if (isset($vars['entity']) && $vars['entity'] instanceof ElggEntity) { + + $categories = $vars['entity']->universal_categories; + if (!empty($categories)) { + if (!is_array($categories)) { + $categories = array($categories); + } + foreach($categories as $category) { + $link = $vars['url'] . 'pg/categories/list/?category=' . urlencode($category); + if (!empty($linkstr)) { + $linkstr .= ', '; } + $linkstr .= '' . $category . ''; } - } - echo $linkstr; -?> \ No newline at end of file +} + +echo $linkstr; diff --git a/mod/profile/actions/cropicon.php b/mod/profile/actions/cropicon.php index 70b8e9288..5bba84a8c 100644 --- a/mod/profile/actions/cropicon.php +++ b/mod/profile/actions/cropicon.php @@ -29,10 +29,10 @@ $filehandler->owner_guid = $profile_owner->getGUID(); $filehandler->setFilename("profile/" . $profile_owner->username . "master" . ".jpg"); $filename = $filehandler->getFilenameOnFilestore(); -$topbar = get_resized_image_from_existing_file($filename, 16, 16, true, $x1, $y1, $x2, $y2); -$tiny = get_resized_image_from_existing_file($filename, 25, 25, true, $x1, $y1, $x2, $y2); -$small = get_resized_image_from_existing_file($filename, 40, 40, true, $x1, $y1, $x2, $y2); -$medium = get_resized_image_from_existing_file($filename, 100, 100, true, $x1, $y1, $x2, $y2); +$topbar = get_resized_image_from_existing_file($filename, 16, 16, true, $x1, $y1, $x2, $y2, TRUE); +$tiny = get_resized_image_from_existing_file($filename, 25, 25, true, $x1, $y1, $x2, $y2, TRUE); +$small = get_resized_image_from_existing_file($filename, 40, 40, true, $x1, $y1, $x2, $y2, TRUE); +$medium = get_resized_image_from_existing_file($filename, 100, 100, true, $x1, $y1, $x2, $y2, TRUE); if ($small !== FALSE && $medium !== FALSE && $tiny !== FALSE) { $filehandler = new ElggFile(); diff --git a/mod/profile/icondirect.php b/mod/profile/icondirect.php index 353ce389c..8a46786ab 100644 --- a/mod/profile/icondirect.php +++ b/mod/profile/icondirect.php @@ -1,28 +1,89 @@ - * @copyright Curverider Ltd 2008-2010 - * @link http://elgg.com/ - */ - - // This should provide faster access to profile icons by not loading the - // engine but directly grabbing the file from the user's profile directory. - // The speedup was broken in Elgg 1.7 because of a change in directory structure. - // The link to this script is provided in profile_usericon_hook(). To work - // in 1.7 forward, the link has to be updated to provide more information. - // The profile icon filename should also be changed to not use username. - - // To see previous code, see svn history. - - // At the moment, this does not serve much of a purpose other than provide - // continuity. It currently just includes icon.php which uses the engine. - - // see #1989 and #2035 - - require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - require_once(dirname(__FILE__).'/icon.php'); +/** + * Elgg profile icon cache/bypass + * + * @package ElggProfile + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + +// Get DB settings +require_once(dirname(dirname(dirname(__FILE__))). '/engine/settings.php'); + +global $CONFIG; + + +$username = $_GET['username']; +$joindate = (int)$_GET['joindate']; +$guid = (int)$_GET['guid']; + +$size = strtolower($_GET['size']); +if (!in_array($size,array('large','medium','small','tiny','master','topbar'))) { + $size = "medium"; +} + +// security check on username string +if ( (strpos($username, '/')!==false) || + (strpos($username, '\\')!==false) || + (strpos($username, '"')!==false) || + (strpos($username, '\'')!==false) || + (strpos($username, '*')!==false) || + (strpos($username, '&')!==false) || + (strpos($username, ' ')!==false) ) { + // these characters are not allowed in usernames + exit; +} + + + +$mysql_dblink = @mysql_connect($CONFIG->dbhost,$CONFIG->dbuser,$CONFIG->dbpass, true); +if ($mysql_dblink) { + if (@mysql_select_db($CONFIG->dbname,$mysql_dblink)) { + + // get dataroot and simplecache_enabled in one select for efficiency + if ($result = mysql_query("select name, value from {$CONFIG->dbprefix}datalists where name in ('dataroot','simplecache_enabled')",$mysql_dblink)) { + $simplecache_enabled = true; + $row = mysql_fetch_object($result); + while ($row) { + if ($row->name == 'dataroot') { + $dataroot = $row->value; + } else if ($row->name == 'simplecache_enabled') { + $simplecache_enabled = $row->value; + } + $row = mysql_fetch_object($result); + } + } + + @mysql_close($mysql_dblink); + + // if the simplecache is enabled, we get icon directly + if ($simplecache_enabled) { + + // first try to read icon directly + $user_path = date('Y/m/d/', $joindate) . $guid; + $filename = $dataroot . $user_path . "/profile/" . $username . $size . ".jpg"; + $contents = @file_get_contents($filename); + if (!empty($contents)) { + header("Content-type: image/jpeg"); + header('Expires: ' . date('r',time() + 864000)); + header("Pragma: public"); + header("Cache-Control: public"); + header("Content-Length: " . strlen($contents)); + $splitString = str_split($contents, 1024); + foreach($splitString as $chunk) { + echo $chunk; + } + exit; + } + } + } + +} + +// simplecache is not turned on or something went wrong so load engine and try that way +require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); +require_once(dirname(__FILE__).'/icon.php'); diff --git a/mod/profile/start.php b/mod/profile/start.php index 9d5bb2e49..1b47445d7 100644 --- a/mod/profile/start.php +++ b/mod/profile/start.php @@ -273,7 +273,7 @@ function profile_usericon_hook($hook, $entity_type, $returnvalue, $params){ if ($filehandler->exists()) { //$url = $CONFIG->url . "pg/icon/$username/$size/$icontime.jpg"; - return $CONFIG->wwwroot . 'mod/profile/icondirect.php?lastcache='.$icontime.'&username='.$entity->username.'&size='.$size; + return $CONFIG->wwwroot . 'mod/profile/icondirect.php?lastcache='.$icontime.'&username='.$entity->username.'&joindate=' . $entity->time_created . '&guid=' . $entity->guid . '&size='.$size; } } } @@ -297,4 +297,4 @@ register_action("profile/editdefault/reset",false,$CONFIG->pluginspath . "profil register_action("profile/editdefault/reorder",false,$CONFIG->pluginspath . "profile/actions/reorder.php", true); register_action("profile/editdefault/editfield",false,$CONFIG->pluginspath . "profile/actions/editfield.php", true); register_action("profile/addcomment",false,$CONFIG->pluginspath . "profile/actions/addcomment.php"); -register_action("profile/deletecomment",false,$CONFIG->pluginspath . "profile/actions/deletecomment.php"); \ No newline at end of file +register_action("profile/deletecomment",false,$CONFIG->pluginspath . "profile/actions/deletecomment.php"); diff --git a/mod/search/search_hooks.php b/mod/search/search_hooks.php index 1af208d6e..a2063dbc1 100644 --- a/mod/search/search_hooks.php +++ b/mod/search/search_hooks.php @@ -240,8 +240,21 @@ function search_tags_hook($hook, $type, $value, $params) { } } + // different entities have different titles + switch($entity->type) { + case 'site': + case 'user': + case 'group': + $title_tmp = $entity->name; + break; + + case 'object': + $title_tmp = $entity->title; + break; + } + // Nick told me my idea was dirty, so I'm hard coding the numbers. - $title_tmp = strip_tags($entity->title); + $title_tmp = strip_tags($title_tmp); if (elgg_strlen($title_tmp) > 297) { $title_str = elgg_substr($title_tmp, 0, 297) . '...'; } else { @@ -257,7 +270,6 @@ function search_tags_hook($hook, $type, $value, $params) { $tags_str = implode('. ', $matched_tags_strs); $tags_str = search_get_highlighted_relevant_substrings($tags_str, $params['query']); - //$tags_str = "($tags_str)"; $entity->setVolatileData('search_matched_title', $title_str); $entity->setVolatileData('search_matched_description', $desc_str); @@ -392,4 +404,4 @@ function search_comments_hook($hook, $type, $value, $params) { function search_custom_types_comments_hook($hook, $type, $value, $params) { $value[] = 'comments'; return $value; -} \ No newline at end of file +} diff --git a/mod/search/views/default/search/css.php b/mod/search/views/default/search/css.php index 72b696059..d008dd3c0 100644 --- a/mod/search/views/default/search/css.php +++ b/mod/search/views/default/search/css.php @@ -78,12 +78,7 @@ } /* formatting for the search results */ -.search_listing .item_extra { - border: 1px solid #cccccc; - margin: 2px; - padding: 3px; -} .search_listing .item_timestamp { font-style: italic; -} \ No newline at end of file +} diff --git a/mod/search/views/default/search/entity.php b/mod/search/views/default/search/entity.php index 538cc8a64..e5659d6ab 100644 --- a/mod/search/views/default/search/entity.php +++ b/mod/search/views/default/search/entity.php @@ -42,9 +42,11 @@ $title = $entity->getVolatileData('search_matched_title'); $description = $entity->getVolatileData('search_matched_description'); $extra_info = $entity->getVolatileData('search_matched_extra'); $url = $entity->getVolatileData('search_url'); + if (!$url) { $url = $entity->getURL(); } + $title = "$title"; $time = $entity->getVolatileData('search_time'); if (!$time) { @@ -53,7 +55,7 @@ if (!$time) { $time = friendly_time(($tu > $tc) ? $tu : $tc); } ?> -
+

diff --git a/mod/thewire/views/rss/object/thewire.php b/mod/thewire/views/rss/object/thewire.php new file mode 100644 index 000000000..ce63c5549 --- /dev/null +++ b/mod/thewire/views/rss/object/thewire.php @@ -0,0 +1,50 @@ +getOwnerEntity(); +if ($owner) { + $title = sprintf(elgg_echo('thewire:by'), $owner->name); +} else { + $subtitle = strip_tags($vars['entity']->description); + $title = substr($subtitle,0,32); + if (strlen($subtitle) > 32) { + $title .= " ..."; + } +} + +?> + + +getGUID(); ?> +time_created) ?> +getURL()); ?> +<![CDATA[<?php echo $title; ?>]]> +description)); ?>]]> +getOwnerEntity(); + if ($owner) { +?> +name; ?> + +getLongitude()) && + ($vars['entity']->getLatitude()) + ) { + ?> + getLatitude(); ?> getLongitude(); ?> + + + -- cgit v1.2.3