SMF Development > Next SMF Discussion

[2.1] Hooks in 2.1

<< < (3/9) > >>

feline:
Add a hook in Subs for custom menu functions AFTER the load from cache:

call_integration_hook('integrate_dynamic_buttons', array(&$menu_buttons));

$context['menu_buttons'] = $menu_buttons;

Bugo:

--- Quote from: feline on October 14, 2011, 07:24:05 AM ---Add a hook in Subs for custom menu functions AFTER the load from cache:

call_integration_hook('integrate_dynamic_buttons', array(&$menu_buttons));

$context['menu_buttons'] = $menu_buttons;


--- End quote ---
Yes, it'a great idea.

live627:
And this (Oh, you ask what this technocrap is. A unified diff!)


--- Code: ---Index: Load.php
===================================================================
@@ -945,57 +984,49 @@
 
  if ($set == 'normal')
  {
- $select_columns = '
- IFNULL(lo.log_time, 0) AS is_online, IFNULL(a.id_attach, 0) AS id_attach, a.filename, a.attachment_type,
- mem.signature, mem.personal_text, mem.location, mem.gender, mem.avatar, mem.id_member, mem.member_name,
- mem.real_name, mem.email_address, mem.hide_email, mem.date_registered, mem.website_title, mem.website_url,
- mem.birthdate, mem.member_ip, mem.member_ip2, mem.icq, mem.aim, mem.yim, mem.msn, mem.posts, mem.last_login,
- mem.karma_good, mem.id_post_group, mem.karma_bad, mem.lngfile, mem.id_group, mem.time_offset, mem.show_online,
- mem.buddy_list, mg.online_color AS member_group_color, IFNULL(mg.group_name, {string:blank_string}) AS member_group,
- pg.online_color AS post_group_color, IFNULL(pg.group_name, {string:blank_string}) AS post_group, mem.is_activated, mem.warning,
- CASE WHEN mem.id_group = 0 OR mg.stars = {string:blank_string} THEN pg.stars ELSE mg.stars END AS stars' . (!empty($modSettings['titlesEnable']) ? ',
- mem.usertitle' : '');
- $select_tables = '
- LEFT JOIN {db_prefix}log_online AS lo ON (lo.id_member = mem.id_member)
- LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = mem.id_member)
- LEFT JOIN {db_prefix}membergroups AS pg ON (pg.id_group = mem.id_post_group)
- LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = mem.id_group)';
+ $select_columns = array(
+ 'IFNULL(lo.log_time, 0) AS is_online', 'IFNULL(a.id_attach, 0) AS id_attach', 'a.filename', 'a.attachment_type', 'mem.signature', 'mem.personal_text', 'mem.location', 'mem.gender', 'mem.avatar', 'mem.id_member', 'mem.member_name', 'mem.real_name', 'mem.email_address', 'mem.hide_email', 'mem.date_registered', 'mem.website_title', 'mem.website_url', 'mem.birthdate', 'mem.member_ip', 'mem.member_ip2', 'mem.icq', 'mem.aim', 'mem.yim', 'mem.msn', 'mem.posts', 'mem.last_login', 'mem.karma_good', 'mem.id_post_group', 'mem.karma_bad', 'mem.lngfile', 'mem.id_group', 'mem.time_offset', 'mem.show_online', 'mem.buddy_list', 'mg.online_color AS member_group_color', 'IFNULL(mg.group_name, {string:blank_string}) AS member_group', 'pg.online_color AS post_group_color', 'IFNULL(pg.group_name, {string:blank_string}) AS post_group', 'mem.is_activated', 'mem.warning', 'CASE WHEN mem.id_group = 0 OR mg.stars = {string:blank_string} THEN pg.stars ELSE mg.stars END AS stars',
+ );
+ if (!empty($modSettings['titlesEnable']))
+ $select_columns[] = 'mem.usertitle';
+ $select_tables = array(
+ 'LEFT JOIN {db_prefix}log_online AS lo ON (lo.id_member = mem.id_member)',
+ 'LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = mem.id_member)',
+ 'LEFT JOIN {db_prefix}membergroups AS pg ON (pg.id_group = mem.id_post_group)',
+ 'LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = mem.id_group)',
+ );
  }
  elseif ($set == 'profile')
  {
- $select_columns = '
- IFNULL(lo.log_time, 0) AS is_online, IFNULL(a.id_attach, 0) AS id_attach, a.filename, a.attachment_type,
- mem.signature, mem.personal_text, mem.location, mem.gender, mem.avatar, mem.id_member, mem.member_name,
- mem.real_name, mem.email_address, mem.hide_email, mem.date_registered, mem.website_title, mem.website_url,
- mem.openid_uri, mem.birthdate, mem.icq, mem.aim, mem.yim, mem.msn, mem.posts, mem.last_login, mem.karma_good,
- mem.karma_bad, mem.member_ip, mem.member_ip2, mem.lngfile, mem.id_group, mem.id_theme, mem.buddy_list,
- mem.pm_ignore_list, mem.pm_email_notify, mem.pm_receive_from, mem.time_offset' . (!empty($modSettings['titlesEnable']) ? ', mem.usertitle' : '') . ',
- mem.time_format, mem.secret_question, mem.is_activated, mem.additional_groups, mem.smiley_set, mem.show_online,
- mem.total_time_logged_in, mem.id_post_group, mem.notify_announcements, mem.notify_regularity, mem.notify_send_body,
- mem.notify_types, lo.url, mg.online_color AS member_group_color, IFNULL(mg.group_name, {string:blank_string}) AS member_group,
- pg.online_color AS post_group_color, IFNULL(pg.group_name, {string:blank_string}) AS post_group, mem.ignore_boards, mem.warning,
- CASE WHEN mem.id_group = 0 OR mg.stars = {string:blank_string} THEN pg.stars ELSE mg.stars END AS stars, mem.password_salt, mem.pm_prefs';
- $select_tables = '
- LEFT JOIN {db_prefix}log_online AS lo ON (lo.id_member = mem.id_member)
- LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = mem.id_member)
- LEFT JOIN {db_prefix}membergroups AS pg ON (pg.id_group = mem.id_post_group)
- LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = mem.id_group)';
+ $select_columns = array(
+ 'IFNULL(lo.log_time, 0) AS is_online', 'IFNULL(a.id_attach, 0) AS id_attach', 'a.filename', 'a.attachment_type', 'mem.signature', 'mem.personal_text', 'mem.location', 'mem.gender', 'mem.avatar', 'mem.id_member', 'mem.member_name', 'mem.real_name', 'mem.email_address', 'mem.hide_email', 'mem.date_registered', 'mem.website_title', 'mem.website_url', 'mem.openid_uri', 'mem.birthdate', 'mem.icq', 'mem.aim', 'mem.yim', 'mem.msn', 'mem.posts', 'mem.last_login', 'mem.karma_good', 'mem.karma_bad', 'mem.member_ip', 'mem.member_ip2', 'mem.lngfile', 'mem.id_group', 'mem.id_theme', 'mem.buddy_list', 'mem.pm_ignore_list', 'mem.pm_email_notify', 'mem.pm_receive_from', 'mem.time_offset', 'mem.time_format', 'mem.secret_question', 'mem.is_activated', 'mem.additional_groups', 'mem.smiley_set', 'mem.show_online', 'mem.total_time_logged_in', 'mem.id_post_group', 'mem.notify_announcements', 'mem.notify_regularity', 'mem.notify_send_body', 'mem.notify_types', 'lo.url', 'mg.online_color AS member_group_color', 'IFNULL(mg.group_name, {string:blank_string}) AS member_group', 'pg.online_color AS post_group_color', 'IFNULL(pg.group_name, {string:blank_string}) AS post_group', 'mem.ignore_boards', 'mem.warning', 'CASE WHEN mem.id_group = 0 OR mg.stars = {string:blank_string} THEN pg.stars ELSE mg.stars END AS stars', 'mem.password_salt', 'mem.pm_prefs',
+ );
+ if (!empty($modSettings['titlesEnable']))
+ $select_columns[] = 'mem.usertitle';
+ $select_tables = array(
+ 'LEFT JOIN {db_prefix}log_online AS lo ON (lo.id_member = mem.id_member)',
+ 'LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = mem.id_member)',
+ 'LEFT JOIN {db_prefix}membergroups AS pg ON (pg.id_group = mem.id_post_group)',
+ 'LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = mem.id_group)',
+ );
  }
  elseif ($set == 'minimal')
  {
- $select_columns = '
- mem.id_member, mem.member_name, mem.real_name, mem.email_address, mem.hide_email, mem.date_registered,
- mem.posts, mem.last_login, mem.member_ip, mem.member_ip2, mem.lngfile, mem.id_group';
- $select_tables = '';
+ $select_columns = array(
+ 'mem.id_member', 'mem.member_name', 'mem.real_name', 'mem.email_address', 'mem.hide_email', 'mem.date_registered', 'mem.posts', 'mem.last_login', 'mem.member_ip', 'mem.member_ip2', 'mem.lngfile', 'mem.id_group',
+ );
+ $select_tables = array();
  }
  else
  trigger_error('loadMemberData(): Invalid member data set \'' . $set . '\'', E_USER_WARNING);
 
+ call_hook('load_member_context', array(&$set, $users, &$select_columns, &$select_tables));
+
  if (!empty($users))
  {
  // Load the member's data.
  $request = $smcFunc['db_query']('', '
- SELECT' . $select_columns . '
+ SELECT ' . implode(', ', $select_columns) . '
  FROM {db_prefix}members AS mem' . $select_tables . '
  WHERE mem.' . ($is_name ? 'member_name' : 'id_member') . (count($users) == 1 ? ' = {' . ($is_name ? 'string' : 'int') . ':users}' : ' IN ({' . ($is_name ? 'array_string' : 'array_int') . ':users})'),
  array(
@@ -1268,6 +1299,7 @@
  }
  }
 
+ call_hook('load_member_context', array(&$memberContext[$user]));
  return true;
 }
 
@@ -1319,6 +1351,8 @@
  // Robots shouldn't be logging in or registering.  So, they aren't a bot.  Better to be wrong than sorry (or people won't be able to log in!), anyway.
  if ((isset($_REQUEST['action']) && in_array($_REQUEST['action'], array('login', 'login2', 'register'))) || !$user_info['is_guest'])
  $context['browser']['possibly_robot'] = false;
+
+ call_hook('detect_browser', array(&$context['browser']));
 }
 
 // Load a theme, by ID.
--- End code ---

Suki:
See, this is what I was talking about here  ;)

Suki:
oh! and magically they were merged :P

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version