منتدى استراحات زايد

منتدى استراحات زايد (http://vb.ma7room.com/index.php)
-   منتدى أخبار المواقع والمنتديات العربية والأجنبية (http://vb.ma7room.com/forumdisplay.php?f=183)
-   -   Make Notifications Pluggable? I'd like your feedback. (http://vb.ma7room.com/showthread.php?t=349450)

محروم.كوم 03-07-2010 09:00 PM

Make Notifications Pluggable? I'd like your feedback.
 
Hi All,

I've been looking at the code to add new types of notifications and it looks like the current method of generating them is pretty inflexible in so far as it's impossible to write them without modifications to the source code.

I'll use a [related] bug that I filed to have join requests added as an example:

In looking at includes/class_bootstrap.php, you'll see the function build_notifications and a quick read of this functions shows you that you can only ever create customizations that are built from columns that exist in the user table. What this means is that any new notification type that you want to add requires , minimally, a modification of:
  • vb_user table (add a column)
  • modifying class_dm_user.php to include the new column in the $validfields array
  • modify class_dm_user.php to add post-delete behavior for the user (although this is required regardless)
But it also means that you need to constantly keep track of the state of the notification count. In my case of using the public usergroup join requests you also have to account for the following events:
  • user requests access to group
  • user cancels request to group
  • usergroup leader accepts request
  • usergroup rejects request
  • administrator accepts request (admincp)
  • administrator rejects request (admincp)
  • moderator accepts request (modcp)
  • moderator rejects request (modcp)
  • new usergroup leader is added to a public group
  • user is removed as a usergroup leader
  • public usergroup is deleted
  • public user group is made non-public
In the case of join requests, that's a lot of modifications to make and, quite frankly, in the case of the join requests code (which I'm finding, is a mess of non-pluggability) is completely impossible to do without modifications to several files.

This would have been MUCH easier for joinrequests if all of the existing code used called a global functions_usergrouprequest.php that provided for the adding of leaders, adding requests, accepting requests, etc. (or use a DM instead of a library).

Anyways, the net-net is that the current method of creating new types of notifications is pretty rigid and I'm wondering if any of you other programmers out there would like to see a more pluggable interface to create these things without having to make code changes.

I recognize that most programmers are uber and follow good OO or Modular programming methodologies, but the fact that adding these things requires mods to the class_dm_user.php file means that we can never create these things for our own mods without turning our products into hacks.

Note: there are hooks in the build_notifications function in includes/class_bootstrap.php file, but they are really just read-only hooks because the current system requires that the count of the notification types be a referenced in $vbulletin->userinfo[ ];

Your thoughts?

Cheers,
Dave.


الساعة الآن 01:20 PM

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.2 TranZ By Almuhajir


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227