<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://groups.drupal.org" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Contributed Module Ideas</title>
 <link>http://groups.drupal.org/contributed-module-ideas</link>
 <description>The place to announce and brainstorm for new module development.</description>
 <language>en</language>
<item>
 <title>User Registration Trend Reports (module preview)</title>
 <link>http://groups.drupal.org/node/15083</link>
 <description>&lt;p&gt;A new module for Drupal 6 I developed over a couple different weekends. Shows how many users you have, no biggie there, but it also shows a breakdown of registrations per month so you can see your good months. The report also includes counts of unauthorized (vs. registered) users with a percentage against total registered users, and there&#039;s a table showing popular email domains and their simple stats too. (Drupal 6)&lt;br /&gt;
&lt;a href=&quot;http://www.flickr.com/photos/chrischarlton/2808810604/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://farm4.static.flickr.com/3135/2808810604_a3ce8129d0.jpg?v=0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I don&#039;t have a Drupal CVS account yet, and I hope this module will get me my keys.&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/los-angeles&quot;&gt;Los Angeles&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/15083#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/537">module</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/los-angeles">Los Angeles</group>
 <pubDate>Fri, 19 Sep 2008 23:27:45 +0000</pubDate>
 <dc:creator>Chris Charlton</dc:creator>
 <guid isPermaLink="false">15083 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Webserver authentication + LDAP</title>
 <link>http://groups.drupal.org/node/14614</link>
 <description>&lt;p&gt;I am working on a drupal site that will be used within a corporate intranet.  One of the challenges I have been working through is automatic authentication with our Active Directory server.&lt;/p&gt;
&lt;p&gt;The current configuration is that I am using the Webserver Authentication module which simply trusts any authentication done by the webserver.  In Apache, I have the SSPI module (sspi_auth_module) that is making an NTLM request to the browser then authenticating with the Active Directory server.  That configuration gives me the automatic authentication that I need (ie. the user loads any page on the drupal site, the user is automatically logged in using their domain credentials without typing a username and password.)&lt;/p&gt;
&lt;p&gt;The problem is that the Apache SSPI module doesn&#039;t pass on any additional information about the user (ie. real name, email address, phone number...).&lt;/p&gt;
&lt;p&gt;I am considering writing a module that would pull data from Active Directory (or any LDAP directory) after the authentication is completed by the webserver.  I am pretty sure I can pull the relevant code out of the LDAP Integration module (actually the ldapdata submodule) to look up the LDAP record.  I am not really sure yet how it should interface with the webserver_auth module.  Maybe it should be a separate module that uses the username and authmap entry (for example: only lookup ldap data if authmap module is webserver_auth) to load the ldap data into the users profile.&lt;/p&gt;
&lt;p&gt;Any thoughts and suggestions would be appreciated.&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/document-management&quot;&gt;Document Management&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/14614#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/6333">webserver_auth ldap_integration authentication</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/document-management">Document Management</group>
 <pubDate>Fri, 05 Sep 2008 21:28:53 +0000</pubDate>
 <dc:creator>kswan</dc:creator>
 <guid isPermaLink="false">14614 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Seesmic CCK field</title>
 <link>http://groups.drupal.org/node/14519</link>
 <description>&lt;p&gt;I would like a module which would allow the posting of Seesmic videos with a post. CCK seems the sensible way of doing this, then views integration would be great too.&lt;/p&gt;
&lt;p&gt;Any thoughts?&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/14519#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/108">CCK</category>
 <category domain="http://groups.drupal.org/taxonomy/term/6296">Seesmin</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Wed, 03 Sep 2008 11:34:11 +0000</pubDate>
 <dc:creator>timmillwood</dc:creator>
 <guid isPermaLink="false">14519 at http://groups.drupal.org</guid>
</item>
<item>
 <title>textaloud</title>
 <link>http://groups.drupal.org/node/14244</link>
 <description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;One of our clients wish to have &#039;textaloud&#039; functionality integrated into his websites.&lt;/p&gt;
&lt;p&gt;Guys are there any open source alternatives for this?&lt;/p&gt;
&lt;p&gt;how about building a module with such functionality?&lt;/p&gt;
&lt;p&gt;looking forward for all your comments ....&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/rajkot-india&quot;&gt;Rajkot (India)&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/14244#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/6202">textaloud</category>
 <group domain="http://groups.drupal.org/bangalore">Bangalore</group>
 <group domain="http://groups.drupal.org/chennai-drupal-community">Chennai Drupal Community</group>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/delhi">Delhi</group>
 <group domain="http://groups.drupal.org/drupalchix">Drupalchix</group>
 <group domain="http://groups.drupal.org/hyderabad">Hyderabad</group>
 <group domain="http://groups.drupal.org/india">India</group>
 <group domain="http://groups.drupal.org/kerala">Kerala</group>
 <group domain="http://groups.drupal.org/mumbai">Mumbai</group>
 <group domain="http://groups.drupal.org/nagpur">Nagpur</group>
 <group domain="http://groups.drupal.org/rajkot-india">Rajkot (India)</group>
 <pubDate>Mon, 25 Aug 2008 10:43:27 +0000</pubDate>
 <dc:creator>sree@drupal.org</dc:creator>
 <guid isPermaLink="false">14244 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Organic Blogs: True Multi-Blogging on Drupal...based off of OG?</title>
 <link>http://groups.drupal.org/node/14151</link>
 <description>&lt;p&gt;So I read a lot of posts decrying Drupal&#039;s lack of any true multiblogging function.  The blog module lets individual users keep a blog, but it doesn&#039;t profile for discrete, standalone blogs.&lt;/p&gt;
&lt;p&gt;I&#039;ve looked into taxonomy-based approaches and they don&#039;t get there either.&lt;/p&gt;
&lt;p&gt;But Organic Groups is more or less exactly what we need, we just need it to do what it&#039;s doing now a little bit differently/&lt;/p&gt;
&lt;p&gt;What if there was an &quot;Organic Blogs&quot; module that was basically a reworking of Organic Groups?&lt;/p&gt;
&lt;p&gt;-Instead of group manager, you&#039;d have the blog editor.&lt;br /&gt;
-Instead of joining the group, you&#039;d subscribe to it.&lt;br /&gt;
-Subscribers could then be promoted to blog contributors by the blog editor.&lt;/p&gt;
&lt;p&gt;As you can see, it wouldn&#039;t take a whole lot of original work to get this going, just renaming functions in OG.  You might be able to get rid of some functions along the way, too.&lt;/p&gt;
&lt;p&gt;Why wait for someone to build the ultimate multiblogging module, when it&#039;s already right in front of us?  It just needs to be reworked so it can run on the same drupal install as OG.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Note: I have no idea if there are rules against building a project on the back of another one like this.   It just seems like it&#039;d be a quick and effective way to get this function into Drupal.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Thoughts?&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/14151#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/6157">og groups blogging multiblogging drupalmu blogs</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Thu, 21 Aug 2008 07:34:43 +0000</pubDate>
 <dc:creator>bflora</dc:creator>
 <guid isPermaLink="false">14151 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Tournament Module</title>
 <link>http://groups.drupal.org/node/13804</link>
 <description>&lt;p&gt;I was thinking of setting up a small site similar to Game Battles or GGL to allow clans in online games to set up challenges and be able to create ladders, brackets, etc.  I have tried to use Organic Groups, but it&#039;s a little unwieldy.  Basically, I want to be able to create a team and then multiple rosters as &quot;children&quot; of the team.  As part of my learning experience, I&#039;ve decided to try my hand at creating a simple framework with the very basic functionality of a team/roster management system.  Any thoughts about other options, or any interest in this module at all?&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/13804#comments</comments>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Thu, 07 Aug 2008 18:37:10 +0000</pubDate>
 <dc:creator>sugardave@drupal.org</dc:creator>
 <guid isPermaLink="false">13804 at http://groups.drupal.org</guid>
</item>
<item>
 <title>GCal Events - upcoming event list that pulls from google calendar</title>
 <link>http://groups.drupal.org/node/13720</link>
 <description>&lt;p&gt;&lt;b&gt;Summary:&lt;/b&gt; A module which provides blocks which list the next few events on a google calendar.&lt;br /&gt;
&lt;b&gt;Similar Projects:&lt;/b&gt; CCK/Views/Calendar, Event Calendar, Google Calendar Embed&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Motivations:&lt;/b&gt;&lt;br /&gt;
CCK/Views/Calendar does not (yet) provide compliant ical feeds, is difficult to set up, difficult to add/modify events&lt;br /&gt;
Event Calendar does not (yet) work properly with Drupal 6.x&lt;br /&gt;
Google Calendar Embedding does not provide many configuration options. It doesn&#039;t allow you to specify a number of events to display, doesn&#039;t display events more than a month in advance, and doesn&#039;t adhere to the drupal themes.&lt;/p&gt;
&lt;p&gt;I wanted to use google calendar to hold the calendars for my site, since google is very easy+fast to add and change events and provides a compliant ical feed. I wanted to avoid synchronized calendars, since they tend to be buggy and fall out of sync.&lt;/p&gt;
&lt;p&gt;Not really a module idea anymore, since I already wrote up the module. It uses simplepie to download and parse a google XML feed and displays simple html to configurable blocks. I couldn&#039;t see an easy way to add a project listing, so I figured I would post the summary here and see if there is any interest in it.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Download&lt;/b&gt;&lt;br /&gt;
Latest Version 1.03alpha: &lt;a href=&quot;//www.mit.edu/~je18337/drupal/gcal_events_1.03alpha.tgz&quot;&gt;gcal_events.tgz&lt;/A&gt;&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/13720#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/253">events</category>
 <category domain="http://groups.drupal.org/taxonomy/term/5965">google calendar</category>
 <enclosure url="http://groups.drupal.org/files/gcal_events_screenshot.png" length="81090" type="image/png" />
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Tue, 05 Aug 2008 04:41:08 +0000</pubDate>
 <dc:creator>Se7enLC</dc:creator>
 <guid isPermaLink="false">13720 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Readonly (a profile module add-on)</title>
 <link>http://groups.drupal.org/node/13180</link>
 <description>&lt;p&gt;I have developed a module to allow profile fields to be read only. I have developed this in work (&lt;a href=&quot;http://www.ibo.org&quot; title=&quot;http://www.ibo.org&quot;&gt;http://www.ibo.org&lt;/a&gt;) but hope to release as a module once I get CVS acess.&lt;/p&gt;
&lt;p&gt;I have put the code on &lt;a href=&quot;http://drupalbin.com/2444&quot; title=&quot;http://drupalbin.com/2444&quot;&gt;http://drupalbin.com/2444&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My use case is we need coordinators to add a school affiliation in a Teachers profile, but we don&#039;t want the teacher to change this and affiliate themselves with any school they want.&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/13180#comments</comments>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Tue, 15 Jul 2008 14:00:20 +0000</pubDate>
 <dc:creator>timmillwood</dc:creator>
 <guid isPermaLink="false">13180 at http://groups.drupal.org</guid>
</item>
<item>
 <title>OpenMicroBlogging and Laconica (Identi.ca)</title>
 <link>http://groups.drupal.org/node/13038</link>
 <description>&lt;p&gt;&lt;a href=&quot;http://identi.ca/&quot;&gt;Identi.ca&lt;/a&gt; is pretty much an distributed implementation of &lt;a href=&quot;http://twitter.com&quot;&gt;Twitter&lt;/a&gt; and micro-blogging. It&#039;s written in PHP, is open source, is OpenID-enabled, and runs the &lt;a href=&quot;http://laconi.ca/&quot;&gt;Laconica&lt;/a&gt; software.&lt;/p&gt;
&lt;p&gt;This is where the distributed comes in. Micro-blogging is all about posting little notes, and subscribing to other people&#039;s little notes so that conversations take place. Since Identi.ca is open source, there could be any number of installations on any number of servers at any time. So, they implemented the &lt;a href=&quot;http://identi.ca/doc/openmublog&quot;&gt;OpenMicroBlogging&lt;/a&gt; protocol.  This allows you to subscribe to a user even if you&#039;re not on the same server as them.&lt;/p&gt;
&lt;p&gt;Where is Drupal in all this though? I want to be able to allow other to subscribe to my Drupal posts from Identi.ca, and subscribe to other people posts on my Drupal website.  Think a Identi.ca implementation on top of Drupal.  My Drupal installation becomes my Identi.ca profile.&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/13038#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/5694">Identi.ca</category>
 <category domain="http://groups.drupal.org/taxonomy/term/5693">Laconica</category>
 <category domain="http://groups.drupal.org/taxonomy/term/5692">OpenMicroBlogging</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Wed, 09 Jul 2008 14:27:51 +0000</pubDate>
 <dc:creator>Rob Loach</dc:creator>
 <guid isPermaLink="false">13038 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Dimdim integration</title>
 <link>http://groups.drupal.org/node/12994</link>
 <description>&lt;p&gt;Here&#039;s the lowdown on a project some of us have been kicking around as a potential &#039;code sprint&#039; and/or community coding effort.&lt;/p&gt;
&lt;p&gt;Dimdim (&lt;a href=&quot;http://www.dimdim.com/&quot; title=&quot;http://www.dimdim.com/&quot;&gt;http://www.dimdim.com/&lt;/a&gt;) is a free web conferencing service where you can share your desktop, show slides, collaborate, chat, talk and broadcast via webcam with absolutely no download required for attendees.&lt;/p&gt;
&lt;p&gt;Features&lt;br /&gt;
&lt;a href=&quot;http://www.dimdim.com/products/dimdim_features.html&quot; title=&quot;http://www.dimdim.com/products/dimdim_features.html&quot;&gt;http://www.dimdim.com/products/dimdim_features.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dimdim Open Source&lt;br /&gt;
&lt;a href=&quot;http://www.dimdim.com/opensource/dimdim_open_source_community_edition.html&quot; title=&quot;http://www.dimdim.com/opensource/dimdim_open_source_community_edition.html&quot;&gt;http://www.dimdim.com/opensource/dimdim_open_source_community_edition.ht...&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dimdim Open Source has all the features of the Enterprise version and can be downloaded and installed on your own servers immediately.&lt;/li&gt;
&lt;li&gt;This open source version is provided via a GNU Public License (GPL) and is primarily supported by a vibrant community.&lt;/li&gt;
&lt;li&gt;Documentation includes guides on how to integrate with other platforms such as Moodle and SugarCRM - &lt;a href=&quot;http://www.dimdim.com/opensource/dimdim_documentation.html&quot; title=&quot;http://www.dimdim.com/opensource/dimdim_documentation.html&quot;&gt;http://www.dimdim.com/opensource/dimdim_documentation.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Potential uses&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An improved training platform for the Drupal Dojo, companies, and individuals&lt;/li&gt;
&lt;li&gt;Remote sessions for DrupalCamps, DrupalCons, and local meetups&lt;/li&gt;
&lt;li&gt;A compliment to project/task based Drupal Groups&lt;/li&gt;
&lt;li&gt;Allow virtual companies to better communicate and collaborate&lt;/li&gt;
&lt;li&gt;much much more....&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So....&lt;br /&gt;
Does this sort of integration seem valuable/interesting? Any thoughts on what this would entail? How much time it would take? Should we create a &#039;task force&#039; and have at it?&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/los-angeles&quot;&gt;Los Angeles&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/12994#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/300">code sprint</category>
 <category domain="http://groups.drupal.org/taxonomy/term/722">collaboration</category>
 <category domain="http://groups.drupal.org/taxonomy/term/1414">drupal dojo</category>
 <category domain="http://groups.drupal.org/taxonomy/term/771">projects</category>
 <category domain="http://groups.drupal.org/taxonomy/term/115">proposal</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/drupal-dojo">Drupal Dojo</group>
 <group domain="http://groups.drupal.org/los-angeles">Los Angeles</group>
 <pubDate>Tue, 08 Jul 2008 00:23:52 +0000</pubDate>
 <dc:creator>gusaus</dc:creator>
 <guid isPermaLink="false">12994 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Role and User Access Control</title>
 <link>http://groups.drupal.org/node/12821</link>
 <description>&lt;p&gt;I eventually want to hunt for someone to do development on this idea, but first I&#039;d like to find out how it can be designed to be of greatest benefit to the community.&lt;/p&gt;
&lt;p&gt;I want to be able to manage access to a node, with CCK fields. The node should be viewable by both a role and at least a single (ideally multiple) user(s) not in the role.&lt;/p&gt;
&lt;p&gt;Some background, I need to send a report from a department to a single user. This needs to be replicated approximately 100 times to as many different users at the end of each month. Spouses in the system should be able to also see the report if they have a separate account. I envision using Views to provide an archive view for the user, some API magic to automate the creation of the reports. Everyone in the department needs to have access to the report so that they can handle support queries.&lt;/p&gt;
&lt;p&gt;Are there other potential use cases that could be integrated into development of such a module? I&#039;ve thought that this seems very much like a private message style module to me. Should it be an enhancement of one of the PM modules or a separate module in the access control family?&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/12821#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/102">access</category>
 <category domain="http://groups.drupal.org/taxonomy/term/1067">access control</category>
 <category domain="http://groups.drupal.org/taxonomy/term/257">ACL</category>
 <category domain="http://groups.drupal.org/taxonomy/term/1230">private messages</category>
 <category domain="http://groups.drupal.org/taxonomy/term/3299">privatemsg</category>
 <category domain="http://groups.drupal.org/taxonomy/term/5620">role</category>
 <category domain="http://groups.drupal.org/taxonomy/term/875">user</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Mon, 30 Jun 2008 16:13:58 +0000</pubDate>
 <dc:creator>flickerfly</dc:creator>
 <guid isPermaLink="false">12821 at http://groups.drupal.org</guid>
</item>
<item>
 <title>User CCK</title>
 <link>http://groups.drupal.org/node/12350</link>
 <description>&lt;p&gt;Do you know of a module that would/could tie a user profile to a CCK created content-type?&lt;br /&gt;
Here&#039;s our problem: we are moving away from CiviCRM (don&#039;t get me started with the issues). Can we tie a particular content-type (or multiple content-types) through the use something like the Subforms modules to user profiles? Can we then let user creation spawn two records-- a user record; and a new node coupled to the user record?  Then the content node could be used in isolation; or the user account could be edited later and those changes would alter the associated node?&lt;/p&gt;
&lt;p&gt;User profile is great, but that creates more information for a particular user profile. We have a list of users; we have a list of contacts in  content-types. There is some intersection of the two sets, but it&#039;s nowhere near 1:1, so we need to maintain the contact content-type and the user accounts but allow some commonality.&lt;/p&gt;
&lt;p&gt;So this would behave like and/or depend upon:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;user profile&lt;/li&gt;
&lt;li&gt;node access&lt;/li&gt;
&lt;li&gt;sub-forms&lt;/li&gt;
&lt;li&gt;cck&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I could see how I could write something like this, but I do not want to pave the same road twice if something like this exists.&lt;/p&gt;
&lt;p&gt;Thanks in advance,&lt;/p&gt;
&lt;p&gt;Mike&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/12350#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/108">CCK</category>
 <category domain="http://groups.drupal.org/taxonomy/term/169">profile</category>
 <category domain="http://groups.drupal.org/taxonomy/term/875">user</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Tue, 10 Jun 2008 14:36:22 +0000</pubDate>
 <dc:creator>dewolfe001</dc:creator>
 <guid isPermaLink="false">12350 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Cross post: project outline and UI design for an AJAX powered image gallery</title>
 <link>http://groups.drupal.org/node/11750</link>
 <description>&lt;p&gt;I just posted &lt;a href=&quot;http://www.raincitystudios.com/blogs-and-pods/hubert/outline-ui-design-ajax-image-gallery&quot;&gt;my outline and UI design for a new image gallery module to Drupal on the Raincity Studios blog&lt;/a&gt;. It uses CCK, imagefield, and imagecache, and has both galleries and images as nodes.&lt;/p&gt;
&lt;p&gt;I&#039;m looking for feedback on the idea, and to see if people are interested in having this built, either through a reverse bounty or some other method.&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/image&quot;&gt;Image&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/11750#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/108">CCK</category>
 <category domain="http://groups.drupal.org/taxonomy/term/10">image</category>
 <category domain="http://groups.drupal.org/taxonomy/term/886">imagecache</category>
 <category domain="http://groups.drupal.org/taxonomy/term/438">imagefield</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/image">Image</group>
 <pubDate>Tue, 27 May 2008 00:58:35 +0000</pubDate>
 <dc:creator>couzinhub</dc:creator>
 <guid isPermaLink="false">11750 at http://groups.drupal.org</guid>
</item>
<item>
 <title>New Module idea -- Twitter style follow/following </title>
 <link>http://groups.drupal.org/node/11063</link>
 <description>&lt;h3&gt;Purpose of module:&lt;/h3&gt;
&lt;p&gt;This module will implement Twitter-style following functionality for Drupal community websites. On Twitter you follow people you find interesting and people who find interesting follow you. People you are following show up on your home page in a river-of-news format. My proposed module would do the same thing for a Drupal community site. You follow people who&#039;s post you find interesting and are followed by people who find you interesting.&lt;/p&gt;
&lt;p&gt;I wrote a bit &lt;a href=&quot;http://groups.drupal.org/node/10314#comment-33209&quot;&gt;here about how the twitter model is useful.&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Module functionality&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Link to &quot;follow&quot; a user is added to each user page&lt;/li&gt;
&lt;li&gt;Stats block for each person -- # of following / # of followers / # of posts / # of comments / # of posts promoted to front page&lt;/li&gt;
&lt;li&gt;Create page listing activity of followers with rss feed&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Questions:&lt;/h3&gt;
&lt;p&gt;Should I use&lt;a href=&quot;http://drupal.org/project/buddylist2&quot;&gt;Buddylist2&lt;/a&gt; or &lt;a href=&quot;http://drupal.org/project/user_relationships&quot;&gt;User_relations&lt;/a&gt;? I&#039;m favoring buddylist2 at the moment because the API seems much more straightforward to use (My needs are very simple really -- I just need code to track who is following who) -- but this is based on a very cursory look at the code for the modules. I haven&#039;t used either of them on a production site. Which module do you think would be a better base for what I&#039;m trying to do?&lt;/p&gt;
&lt;p&gt;Is the activity module the best way to display activity from the people a use follows?&lt;/p&gt;
&lt;p&gt;Any other features I should consider adding which would make this module more useful to you?&lt;/p&gt;
&lt;p&gt;Other thoughts / suggestions / critiques?&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/social-networking-sites&quot;&gt;Social Networking Sites&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/11063#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/3589">twitter</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/social-networking-sites">Social Networking Sites</group>
 <pubDate>Mon, 28 Apr 2008 19:36:56 +0000</pubDate>
 <dc:creator>kyle_mathews</dc:creator>
 <guid isPermaLink="false">11063 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Node_media 2.0 and port to D6</title>
 <link>http://groups.drupal.org/node/10884</link>
 <description>&lt;p&gt;&lt;a href=&quot;http://drupal.org/project/node_meda&quot;&gt;Node_media&lt;/a&gt; is intended to be successor of &lt;a href=&quot;http://drupal.org/project/node_images&quot;&gt;node_images&lt;/a&gt;. Currently is in his very early stages of development and I want to contribute conducting efforts in right direction.&lt;/p&gt;
&lt;p&gt;Based on previous lines, this project should achieve 2 goals:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Stabilize current node_media to at least Release candidate for D5 and then start porting it&lt;/li&gt;
&lt;li&gt;Conduct candidate new features of node_images to node_media 2.0 (i.e.: thickbox, internatinalization, ...)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Please let me know your toughs and impressions, your feedback is welcome.&lt;/p&gt;
&lt;p&gt;Blessings!&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/10884#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/4922">drupal-6</category>
 <category domain="http://groups.drupal.org/taxonomy/term/1335">node_images</category>
 <category domain="http://groups.drupal.org/taxonomy/term/4923">node_media</category>
 <category domain="http://groups.drupal.org/taxonomy/term/560">porting</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Mon, 21 Apr 2008 21:04:18 +0000</pubDate>
 <dc:creator>develCuy</dc:creator>
 <guid isPermaLink="false">10884 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Organic Groups Subscriptions v1.0 Official release</title>
 <link>http://groups.drupal.org/node/10716</link>
 <description>&lt;p&gt;After 3 months of intense work... I&#039;m proud to announce first stable release of &lt;a href=&quot;http://drupal.org/project/subscriptions_og&quot; target=&quot;_blank&quot;&gt;Organic Groups Subscriptions&lt;/a&gt; ! now available.&lt;/p&gt;
&lt;p&gt;Special thanks to &lt;a href=&quot;http://groups.drupal.org/user/8445&quot;&gt;gustav&lt;/a&gt;, he is a wonderful mentor and project lead.&lt;/p&gt;
&lt;p&gt;Hope you enjoy it...&lt;/p&gt;
&lt;p&gt;Blessings!&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/mail&quot;&gt;Mail&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/10716#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/4854">official release</category>
 <category domain="http://groups.drupal.org/taxonomy/term/1568">organic groups</category>
 <category domain="http://groups.drupal.org/taxonomy/term/318">subscriptions</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/mail">Mail</group>
 <pubDate>Tue, 15 Apr 2008 00:21:46 +0000</pubDate>
 <dc:creator>develCuy</dc:creator>
 <guid isPermaLink="false">10716 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Maintenance Helper Module</title>
 <link>http://groups.drupal.org/node/10582</link>
 <description>&lt;p&gt;Every time I migrate a site (which seems to happen about once a month on average...) I find myself in a bit of a debate: I don&#039;t want to put the site into maintenance mode because I want people to be able to view the site, but I do want to prevent users from creating new content that would get lost in the migration.  Ideally you can cut this period down to a half hour or so through the use of short DNS &quot;time to live&quot; values, but there is also some amount of time where you have this problem.&lt;/p&gt;
&lt;p&gt;I&#039;m thinking of creating a helper module for this situation that would provide the following features:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;A new permission for &quot;Log in to site&quot; - since permissions require a valid user object that is only populated &lt;em&gt;after&lt;/em&gt; the log in this would be evaluated just after a user logs in.  If they don&#039;t have the permission, I would set a message (admin configurable) and redirect them to the &quot;/logout&quot; page.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A configurable message to show to users that would say something like &quot;Hey, we&#039;re doing some maintenance now and have therefore restricted the ability to login to the site.  Sorry!&quot;  This would warn users before they attempted to login so they know that they are probably wasting their time if they do it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A button to clear out existing sessions that users have for roles which do not have the permission to login.  The protection in item 1 is pretty useless if you don&#039;t also get rid of existing sessions.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So, does something like this exist?&lt;/p&gt;
&lt;p&gt;If not, what to call it?&lt;/p&gt;
&lt;p&gt;&quot;maintenance_helper&quot; seems a little long, though it is descriptive of the purpose.  &quot;login_permission&quot; is more accurate but doesn&#039;t describe why you would want it (which is both good and bad, I guess).&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/10582#comments</comments>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Wed, 09 Apr 2008 13:33:13 +0000</pubDate>
 <dc:creator>greggles</dc:creator>
 <guid isPermaLink="false">10582 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Request For Comment(RFC): User Reports Module</title>
 <link>http://groups.drupal.org/node/10318</link>
 <description>&lt;p&gt;I&#039;m excited about building a module that, if designed properly, would useful to others. I see how it might be useful for the development of a human resources department for personnel reviews and really any place where reports or static documents pass from one party to another.&lt;/p&gt;
&lt;p&gt;I am building a community site based around an organization. We produce custom reports for many of the community members and provide them through a very simple and custom php app on our website. I want to move this to drupal to take advantage of the other powers to build community, as well as flexibility to improve access to these reports for archive purposes.&lt;/p&gt;
&lt;p&gt;This has been floating around in my head for several months, but I&#039;ve not developed a drupal module before so &lt;em&gt;I crave review, comment and even participation.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;First, populating the data&lt;/strong&gt;&lt;br /&gt;
I have to deal with making this support the older system without creating more work. Currently, we FTP the reports generated by a local software to a server where it is picked up and handled accordingly. This is very little work on the users who have an app that does everything for them when they start it without even showing them an interface. They don&#039;t even know what FTP is, let alone what it does. Changing this would be bad.&lt;/p&gt;
&lt;p&gt;I figure a separate app that, on a cron run, takes the contents of a directory and loads them into the database as nodes. I expect this would be best as a separate module, with the idea that others could create similar ones to handle the similar tasks. I figure a lot of good code could be found in this project &lt;a href=&quot;http://drupal.org/project/import_html&quot; title=&quot;http://drupal.org/project/import_html&quot;&gt;http://drupal.org/project/import_html&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&#039;d also like the individual user to be able to add individual reports that have to do with them eventually, but that isn&#039;t one of my initial needs. It is something I&#039;d want to consider in the design, but not really code up for the first version. Of course, this probably will be as simple as creating a content type which would happen as a result of coding the rest. Drupal is looking like a really good solution! :-)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Second, characteristics of the data&lt;/strong&gt;&lt;br /&gt;
We have reports that are monthly, quarterly and yearly. We also have reports that go to and from a variety of departments. I&#039;d need to track the type of report, report name, date of submission, date due, report sender, report receiver, department of interest and maybe some other things. It would probably be good to have the sender and receiver have the ability to contain more than one user, and maybe even an entire role or group.&lt;/p&gt;
&lt;p&gt;If I understand correctly, CCK will provide me with the flexibility I need on this. I&#039;ll just need to have the module depend on CCK. I guess some of this would be more taxonomy than CCK.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Third, display of the data&lt;/strong&gt;&lt;br /&gt;
I expect, using Views, that I can organize displays of the reports to show an archive of past reports by type or perhaps even a calendar list of the reports. Some templating of the reports node would make sense, is that a function of the module dev or the theme dev?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fourth, privacy of the data&lt;/strong&gt;&lt;br /&gt;
I need to protect the data to ensure that the report sender and report receiver are the only ones who can view the node containing the report. Some data can occasionally be private. We&#039;d assume that the reports are private. Perhaps an optional checkbox could be used to easily extend the module to allow public reports. I&#039;m not sure how to best accomplish this. Perhaps one of the TAC-like modules or ACL, Content Access could do it simply. I&#039;m not entirely comfortable with my ability to make this decision because I&#039;m not sure I understand the different approaches as well as their strengths and weaknesses. Additionally, I&#039;d like to develop this in a way that any security module could be dropped into place and work fine, without complicating the user interface.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br /&gt;
If I understand my problem correctly, I expect what I really need to do is glue together Views, CCK, Taxonomy and some permission module into a package that meets this need. I plan on waiting for all these to pieces to be ready for D6 before I try to deploy anything. I&#039;d really like to hear from others about what they think of this and if anything in their experience would identify a problem or potentially another method that would be easier. I&#039;m especially interested in how to handle the privacy of data, but comments on anything would be appreciated.&lt;/p&gt;
&lt;p&gt;Finally, I need a better name. There is already a &quot;Reports Module&quot; which was my first choice. I&#039;m not sure &quot;User Reports Module&quot; sums up the idea succinctly. Your ideas are welcome. :-)&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/10318#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/1748">calendar</category>
 <category domain="http://groups.drupal.org/taxonomy/term/1806">cck module</category>
 <category domain="http://groups.drupal.org/taxonomy/term/409">import</category>
 <category domain="http://groups.drupal.org/taxonomy/term/4652">import_html module</category>
 <category domain="http://groups.drupal.org/taxonomy/term/537">module</category>
 <category domain="http://groups.drupal.org/taxonomy/term/477">permissions</category>
 <category domain="http://groups.drupal.org/taxonomy/term/118">rfc</category>
 <category domain="http://groups.drupal.org/taxonomy/term/497">security</category>
 <category domain="http://groups.drupal.org/taxonomy/term/116">views module</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Mon, 31 Mar 2008 16:13:28 +0000</pubDate>
 <dc:creator>flickerfly</dc:creator>
 <guid isPermaLink="false">10318 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Drupal Developer/Partner | FeedTheBull.com</title>
 <link>http://groups.drupal.org/node/9912</link>
 <description>&lt;p&gt;Over the last year and a half FeedTheBull has become one of the largest, independent social networks for the investment community. We have recently moved to the Drupal platform and are looking for an experienced Drupal developer to join our team. We have a strong direction of where we are going, and we would like to take someone along with us.&lt;/p&gt;
&lt;p&gt;Requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drupal Core 5.x +&lt;/li&gt;
&lt;li&gt;Module Development &lt;/li&gt;
&lt;li&gt;Custom Theme Development &lt;/li&gt;
&lt;li&gt;CCK&lt;/li&gt;
&lt;li&gt;Taxonomy&lt;/li&gt;
&lt;li&gt;JQuery/Interface&lt;/li&gt;
&lt;li&gt;Extensive Drupal experience&lt;/li&gt;
&lt;li&gt;Extensive experience with OOP PHP&lt;/li&gt;
&lt;li&gt;AJAX/XML&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Strong knowledge of web/database integration (SQL queries, dynamic SQL, stored procedures, etc.)&lt;/li&gt;
&lt;li&gt;Positive &quot;can do&quot; attitude backed by the willingness and ability to outline detailed plans for&lt;br /&gt;
execution with educated time frame estimates&lt;/li&gt;
&lt;li&gt;Excellent communication skills&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are interested, please contact us at bulls (at) feedthebull (dot) com for additional information.&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <category domain="http://groups.drupal.org/taxonomy/term/594">business</category>
 <category domain="http://groups.drupal.org/taxonomy/term/108">CCK</category>
 <category domain="http://groups.drupal.org/taxonomy/term/1431">developer</category>
 <category domain="http://groups.drupal.org/taxonomy/term/4373">drupal expert</category>
 <category domain="http://groups.drupal.org/taxonomy/term/4495">finance</category>
 <category domain="http://groups.drupal.org/taxonomy/term/1433">java</category>
 <category domain="http://groups.drupal.org/taxonomy/term/898">job</category>
 <category domain="http://groups.drupal.org/taxonomy/term/4374">owner</category>
 <category domain="http://groups.drupal.org/taxonomy/term/4372">partner</category>
 <category domain="http://groups.drupal.org/taxonomy/term/334">php</category>
 <category domain="http://groups.drupal.org/taxonomy/term/1891">programmer</category>
 <category domain="http://groups.drupal.org/taxonomy/term/778">stock market</category>
 <category domain="http://groups.drupal.org/taxonomy/term/197">taxonomy</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Tue, 18 Mar 2008 23:17:10 +0000</pubDate>
 <dc:creator>FeedTheBull</dc:creator>
 <guid isPermaLink="false">9912 at http://groups.drupal.org</guid>
</item>
<item>
 <title>HOWTO build an add-on for Subscriptions module</title>
 <link>http://groups.drupal.org/node/9818</link>
 <description>&lt;p&gt;The Subscriptions module provides a range of subscription types. Users can subscribe to individual content items, to all items of a particular content type, to all posts in a particular blog, or to all items tagged with a particular taxonomy term. The range of subscription types can be extended by additional add-on modules. This guide describes the hooks a module needs to implement to provide new subscription types.&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;In the examples given below we have a module called &#039;myplugin&#039; which implements a single new subscription type called &#039;mytype&#039;.&lt;/p&gt;
&lt;h2&gt;User Interface&lt;/h2&gt;
&lt;p&gt;In order to let users manage their subscriptions and administrators manage user and global settings, an add-on should implement the following hooks:&lt;/p&gt;
&lt;h3&gt;_hook_types()&lt;/h3&gt;
&lt;p&gt;This is a key function for providing useful information about your module. The returned information is used by the subscriptions module to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Construct a sub-tab for each new subscription type on the Subscriptions settings pages. &lt;/li&gt;
&lt;li&gt;Create an access permission for each new subscription type.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The function should return an array with one entry for each subscription type that your module creates, indexed by the machine-readable name of the subscription type. The value of each entry is itself an array with the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&#039;title&#039; The user-friendly name for the subscription type. It is used for example as the label of the sub-tab that each subscription type gets on the user and admin subscription pages.&lt;/li&gt;
&lt;li&gt;&#039;access&#039; The name of the permission for creating subscriptions of this type.&lt;/li&gt;
&lt;li&gt;&#039;page&#039; The function in charge of displaying the list of subscriptions of this type.&lt;/li&gt;
&lt;li&gt;&#039;fields&#039; Used for mailvars(Subscriptions_Mail) this is an array of two strings which you can choose freely for this subscription type. It does not matter what you choose as long as it is unique to this subscription type, so you could use machine-readable name of the subscription type. &lt;/li&gt;
&lt;li&gt;&#039;weight&#039; This determines the order in which subscription types are displayed in the user interface. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example 1:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;function &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;_myplugin_types&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;() {&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$types&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mytype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] = array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;title&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;My type&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;access&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;subscribe to my type&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;page&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;myplugin_page_mytype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;fields&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;myplugin&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mytype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;weight&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp; );&lt;br /&gt;&amp;nbsp; return &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$types&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;h3&gt;hook_count_user_subscriptions()&lt;/h3&gt;
&lt;p&gt;Used in order of provide a count of subscriptions a user has of a particular type, ie: amount of blogs a user is subscribed to, amount of threads (posts) a user is subscribed to, and so on.&lt;/p&gt;
&lt;p&gt;The function should return an array in the form:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;array(&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;myplugin&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mytype&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;#count&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;); &lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Example 2:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;function &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;myplugin_count_user_subscriptions&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$count&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$uid&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$type&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;_myplugin_types&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fields &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$type&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mytype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;fields&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$query &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;&lt;br /&gt;&amp;nbsp; SELECT count(*)&lt;br /&gt;&amp;nbsp; FROM {subscriptions}&lt;br /&gt;&amp;nbsp; WHERE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; module = &#039;node&#039; AND&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; field = &#039;mytype&#039; AND&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; recipient_uid = %d&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$count&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fields&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;]][&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$fields&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;]] = &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;db_result&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;db_query&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$query&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$uid&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$count&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Notice at previous example:&lt;br /&gt;
- Dependency on own _myplugin_types() which returns the types defined by your add-on, so $fields is used to provide a valid array structure of counts.&lt;br /&gt;
- Subscriptions table stores your plug-in data using string &#039;mytype&#039; (previously defined in _hook_types) as value for column: field&lt;br /&gt;
- &#039;node&#039; is the name of the module providing the data.&lt;/p&gt;
&lt;h3&gt;_hook_node_options()&lt;/h3&gt;
&lt;p&gt;Subscriptions_UI module provides a User Interface for users to manage subscriptions displaying a form in every node (a.k.a subscriptions controls or node form). Implement this function if you want to add options for your plug-in. See also: hook_form_alter(), in order of customize the node form before render.&lt;/p&gt;
&lt;p&gt;This function should return an array with a row for every type and every type with a row for each option.&lt;/p&gt;
&lt;p&gt;Example 3:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;function &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;_myplugin_node_options&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$account&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$content&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$options&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mytype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] = array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;name&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;The label of this option&#039;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#039;params&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;value&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$content_id&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;links&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;node/&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$content_id&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),&lt;br /&gt;&amp;nbsp; );&lt;br /&gt;&amp;nbsp; return &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$options&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
Notice at previous example:&lt;br /&gt;
- $account is a parameter you can use for validation.&lt;br /&gt;
- $content is an object (commonly a node).&lt;br /&gt;
- &#039;params&#039; is an option property. Must keep the form: array(&#039;value&#039; =&amp;gt; #ID).&lt;br /&gt;
- #ID or $content_id(in the example) is stored into subscriptions table in the column: value.&lt;/p&gt;
&lt;h3&gt;hook_mailkeys()&lt;/h3&gt;
&lt;p&gt;Used in order of let Mail Editor manage your plug-in&#039;s mail templates, since Subscriptions_Mail module depends on mail_edit.&lt;/p&gt;
&lt;p&gt;Example 4:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;function &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;_myplugin_node_options&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$account&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$options &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= array();&lt;br /&gt;&amp;nbsp; foreach (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;taxonomy &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;as &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$my_id &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$term&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// Taxonomy term&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$options&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;my_id&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][] = array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;name&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;t&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;To posts in %myplugin&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, array(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;%myplugin&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$term&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;params&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;value&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$my_id&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;link&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;myplugin/&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$my_id&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$options&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;my_id&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;weight&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] = -&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; return &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$options&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;h2&gt;SUBSCRIPTIONS FRAMEWORK&lt;/h2&gt;
&lt;p&gt;Once You know how to construct an UI for our add-on, it is time to deal with queue, subscription types and fields for mailvars.&lt;/p&gt;
&lt;h3&gt;hook_subscriptions()&lt;/h3&gt;
&lt;p&gt;It is on charge of rooting sub-hooks determined by param $op, those are:&lt;br /&gt;
- _subhook_types please refer to _hook_types(above)&lt;br /&gt;
- _subhook_node_options please refer to _hook_types(above)&lt;br /&gt;
- _subhook_queue&lt;br /&gt;
- _subhook_fields&lt;br /&gt;
- _subhook_stypes&lt;br /&gt;
- _subhook_stype&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Notice:&lt;/b&gt; _subhook_types and _subhook_node_options are defined in single functions, but _subhook_queue, _subhook_stypes, _subhook_stype, _subhook_fields were defined internally and managed using switch:&lt;/p&gt;
&lt;p&gt;Example 5:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;function &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;myplugin_subscriptions&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$op&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0 &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg1 &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg2 &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// $stypes Is used later in subhooks: stype and stypes&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;static &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$stypes &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= array(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mykey&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;node&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mytype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Example 6:&lt;br /&gt;
Sub-hook handler, you should copy it as is.&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;nbsp; $function &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;&amp;lt;em&amp;gt;myplugin&amp;lt;/em&amp;gt;&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$op&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// &amp;lt;!-- WARNING! COPY AS IS&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;function_exists&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$function&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$function&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg2&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// END --&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Example 7:&lt;br /&gt;
BEGIN OF SWITCH&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;switch (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$op&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;h3&gt;_subhook_queue()&lt;/h3&gt;
&lt;p&gt;Occurs when a notification event is going to be added.&lt;br /&gt;
&lt;b&gt;$arg0&lt;/b&gt; must be an array in the following form.&lt;br /&gt;
Example 8:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;array(&lt;br /&gt;&amp;nbsp; &amp;#039;module&amp;#039; =&amp;gt; &amp;#039;node&amp;#039;,&lt;br /&gt;&amp;nbsp; &amp;#039;node&amp;#039; =&amp;gt; (A node object),&lt;br /&gt;&amp;nbsp; &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;node&amp;#039;,&lt;br /&gt;&amp;nbsp; &amp;#039;action&amp;#039; =&amp;gt; &amp;#039;update&amp;#039;, // Used in conjunction of &amp;#039;type&amp;#039; to filter by send_updates&lt;br /&gt;);&lt;br /&gt;You can replace &amp;#039;node&amp;#039; by &amp;#039;comment&amp;#039; according to your needs.&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;$arg1&lt;/b&gt; not used.&lt;br /&gt;
&lt;b&gt;$arg2&lt;/b&gt; not used.&lt;/p&gt;
&lt;p&gt;Example 9:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;case &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;queue&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// $arg0 is $event array.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;module&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] == &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;node&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;node&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;node&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mytype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] = array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;join&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;INNER JOIN {mytable} a ON s.value = a.mytype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;where&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;a.nid = %d&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;args&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$node&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;nid&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;type&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] == &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;comment&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$where &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039; AND s.send_comments = 1&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elseif (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;type&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] == &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;node&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;action&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] == &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;update&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$where&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039; AND s.send_updates = 1&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$where&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;node&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mytype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;][&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;where&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;] .= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$where&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$params&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;h3&gt;_subhook_fields()&lt;/h3&gt;
&lt;p&gt;Occurs when notification emails are generated.&lt;br /&gt;
&lt;b&gt;$arg0&lt;/b&gt; must be &#039;node&#039; or &#039;comment&#039;.&lt;br /&gt;
&lt;b&gt;$arg1&lt;/b&gt; not used.&lt;br /&gt;
&lt;b&gt;$arg2&lt;/b&gt; not used.&lt;/p&gt;
&lt;p&gt;Example 10:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;case &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;fields&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;// Parameter is module&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if (&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0 &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;== &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;node&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;|| &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0 &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;== &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;comment&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$t &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;= &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;get_t&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;group_nid&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;mailvars_function&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;_subscriptions_content_node_mailvars&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;!type&#039; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$t&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;category&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;h3&gt;_subhook_stypes()&lt;/h3&gt;
&lt;p&gt;Alternative call to retrieve all subscription types a plugin may have.&lt;br /&gt;
Example 11:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;case &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;stypes&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$stypes&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;h3&gt;_subhook_stype()&lt;/h3&gt;
&lt;p&gt;Occurs when a subscription is added. Retrieves an specific subscription type.&lt;br /&gt;
&lt;b&gt;$arg0&lt;/b&gt; must be an array key of $stypes.&lt;br /&gt;
&lt;b&gt;$arg1&lt;/b&gt; must be merged with selected subscription type.&lt;br /&gt;
&lt;b&gt;$arg2&lt;/b&gt; must be merged with selected subscription type.&lt;/p&gt;
&lt;p&gt;Example 12:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;case &lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&#039;stype&#039;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (isset(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$stypes&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;]) ? &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;array_merge&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;( &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$stypes&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;], array(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$arg2&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)) : &lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;END OF SWITCH AND FUNCTION&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&amp;lt;?php&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;Blessings!&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/mail&quot;&gt;Mail&lt;/a&gt;&lt;/div&gt;</description>
 <group domain="http://groups.drupal.org/drupal-dojo">Drupal Dojo</group>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/mail">Mail</group>
 <pubDate>Sat, 15 Mar 2008 07:15:00 +0000</pubDate>
 <dc:creator>develCuy</dc:creator>
 <guid isPermaLink="false">9818 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Tag the net with Open Calais</title>
 <link>http://groups.drupal.org/node/9702</link>
 <description>&lt;p&gt;Reuters released a web service called &lt;a href=&quot;http://www.opencalais.com/&quot;&gt;Open Calais&lt;/a&gt;. It is built on &lt;a&gt;clear forest technology&lt;/a&gt; that has been around for a while.&lt;/p&gt;
&lt;p&gt;You can throw text at it and get tags organized by country, personalities, industry terms, ... in RDF format back. It is of better accuracy than &lt;a href=&quot;http://tagger.flaptor.com/findtags&quot; title=&quot;http://tagger.flaptor.com/findtags&quot;&gt;http://tagger.flaptor.com/findtags&lt;/a&gt;, &lt;a href=&quot;http://tagthe.net&quot; title=&quot;http://tagthe.net&quot;&gt;http://tagthe.net&lt;/a&gt; or yahoo terms extraction API (&lt;a href=&quot;http://www.programmableweb.com/api/yahoo-term-extraction&quot; title=&quot;http://www.programmableweb.com/api/yahoo-term-extraction&quot;&gt;http://www.programmableweb.com/api/yahoo-term-extraction&lt;/a&gt;, &lt;a href=&quot;http://drupal.org/project/yahoo_terms&quot; title=&quot;http://drupal.org/project/yahoo_terms&quot;&gt;http://drupal.org/project/yahoo_terms&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;You can try it here:&lt;br /&gt;
&lt;a href=&quot;http://autotagger.opensynapse.net/&quot; title=&quot;http://autotagger.opensynapse.net/&quot;&gt;http://autotagger.opensynapse.net/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;and with this firefox extension:&lt;br /&gt;
&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3999&quot; title=&quot;https://addons.mozilla.org/en-US/firefox/addon/3999&quot;&gt;https://addons.mozilla.org/en-US/firefox/addon/3999&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is an interesting article exploring the potential and the ideas behind this service: &lt;a href=&quot;http://www.readwriteweb.com/archives/reuters_calais.php&quot; title=&quot;http://www.readwriteweb.com/archives/reuters_calais.php&quot;&gt;http://www.readwriteweb.com/archives/reuters_calais.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Has anybody got some experience with open calais? Plans for creating a Drupal wrapper module?&lt;/p&gt;
&lt;p&gt;Alex&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/semantic-web&quot;&gt;Semantic Web&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/9702#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/839">RDF</category>
 <category domain="http://groups.drupal.org/taxonomy/term/4404">tagger</category>
 <category domain="http://groups.drupal.org/taxonomy/term/3320">webservices</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/semantic-web">Semantic Web</group>
 <pubDate>Wed, 12 Mar 2008 16:21:22 +0000</pubDate>
 <dc:creator>alex_b@drupal.org</dc:creator>
 <guid isPermaLink="false">9702 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Drupal Developer/Programmer/System Administrator, Global Digital Business | SONY BMG Music Entertainment</title>
 <link>http://groups.drupal.org/node/9467</link>
 <description>&lt;p&gt;Introducing ourselves&lt;br /&gt;
SONY BMG Music Entertainment is a global recorded music joint venture with a roster of current artists that includes a broad array of both local artists and international superstars, as well as a vast catalog that comprises some of the most important recordings in history. Sony BMG Music Entertainment is 50% owned by Bertelsmann A.G. and 50% owned by Sony Corporation of America.&lt;/p&gt;
&lt;p&gt;Job duties&lt;br /&gt;
  •Working with a team of designers and Drupal developers to create compelling and cutting edge web sites and web applications&lt;br /&gt;
 •Writing and executing scripts and utilities for deployment of new artist websites&lt;br /&gt;
 •Responsible for utilizing and extending the Drupal content management system where necessary&lt;br /&gt;
       -Collaborate with IT groups to optimize server configurations&lt;br /&gt;
 •Responsible for turning design and user interface mockups into functional web sites&lt;br /&gt;
 •Setting up development environments for PHP and HTML/CSS developers, and QAing their work&lt;br /&gt;
 •Some custom programming and web application development&lt;/p&gt;
&lt;p&gt;Job requirements&lt;br /&gt;
•Extensive knowledge of:&lt;br /&gt;
       -Web programming (PHP, Javascript, CSS)&lt;br /&gt;
       -Database management (MySQL, Postgre SQL)&lt;br /&gt;
       -Content management systems (Drupal)&lt;br /&gt;
       -Bash or other scripting language knowledge a must&lt;br /&gt;
       -Apache administration (virtual hosts, mod_rewrite, configuration)&lt;br /&gt;
       -Version control systems (SVN emphasis and CVS)&lt;br /&gt;
       -Linux/Unix (FreeBSD emphasis)&lt;br /&gt;
 •Experience designing complex web-based systems&lt;br /&gt;
       -UI design and development&lt;br /&gt;
 •Strong command of code optimization and software design principles&lt;br /&gt;
 •Multitask effectively in fast paced, deadline driven environments&lt;br /&gt;
 •2-3 years professional experience as a web developer/programmer&lt;br /&gt;
 •Attention to detail a must&lt;br /&gt;
 •Bonus points for:&lt;br /&gt;
       -Load balancing, multiple server management&lt;br /&gt;
       -DNS configuration&lt;/p&gt;
&lt;p&gt;Please apply via our online application at &lt;a href=&quot;http://www.sonybmg.com&quot; title=&quot;www.sonybmg.com&quot;&gt;www.sonybmg.com&lt;/a&gt;. Applications not accepted via our online application will NOT be accepted.&lt;/p&gt;
&lt;p&gt;SONY BMG MUSIC ENTERTAINMENT IS AN EQUAL OPPORTUNITY EMPLOYER M/F/D/V.&lt;/p&gt;
&lt;p&gt;Thank you for your interest in SONY BMG Music Entertainment.&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <category domain="http://groups.drupal.org/taxonomy/term/4302">programmer / drupal developer</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Thu, 06 Mar 2008 21:22:22 +0000</pubDate>
 <dc:creator>aklein</dc:creator>
 <guid isPermaLink="false">9467 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Idea: &quot;Trust&quot; module</title>
 <link>http://groups.drupal.org/node/9293</link>
 <description>&lt;p&gt;I&#039;m building/have built a social networking site, and coming across &lt;a href=&quot;http://www.twine.com/&quot;&gt;Twine&lt;/a&gt; made me realize that it would be nice to build some kind of &quot;Trust&quot; module, where users could specify what level of trust they attribute to others, and this trust level would affect how content shows up and is organized.&lt;/p&gt;
&lt;h2&gt;Trust Levels&lt;/h2&gt;
&lt;p&gt;Specifically, I&#039;m thinking of 5 levels of trust:&lt;br /&gt;
* &lt;strong&gt;Always Hide&lt;/strong&gt; - Essentially equivalent to &quot;block user,&quot; this would make it so the blocker doesn&#039;t see any content from the blocked user&lt;br /&gt;
* &lt;strong&gt;Collapse&lt;/strong&gt; - Instead of completely hiding the blocked user&#039;s content, the content is replaced with a link labeled something like &quot;Show [blocked user]&#039;s Post.&quot;   This link could appear in two places: (A) in the place the post would otherwise have appeared, and when clicked on would reveal the original post with AHAH/AJAX/JS (degradable to an HTML-based page-reload); (B) at the top or bottom of the page, to show/hide all blocked posts on the page for either (1) one or more users chosen from a list or (2) all blocked users.&lt;br /&gt;
* &lt;strong&gt;Conditional Hide&lt;/strong&gt; - Will behave like option one, except that the blocker can set options for when the blocked user&#039;s content appears.  For example, the blocker could set it so he doesn&#039;t see any blog posts from the blocked user.&lt;br /&gt;
* &lt;strong&gt;Approve User&lt;/strong&gt; - the default.  Make it so all user&#039;s content shows up normally.&lt;br /&gt;
* &lt;strong&gt;Trust User&lt;/strong&gt; - the real power of this module.  Would arrange content (probably in a separate part of the site) in a knowledge network, displaying only information from trusted users.  This would probably be arranged based on a taxonomy built for the purpose; users could also add their own &quot;connections&quot; between nodes based on their own, customizable taxonomy so they could organize content however they wanted.  The idea is for users to end up with filtered views (not literally from views.module, although that&#039;s a possibility) of content that they&#039;re (A) interested in and (B) think is well-written or otherwise valuable.&lt;/p&gt;
&lt;h3&gt;Conditional Hide&lt;/h3&gt;
&lt;p&gt;For the Conditional Hide option, the following conditions could exist:&lt;br /&gt;
* &lt;strong&gt;Content Type&lt;/strong&gt; - filter what is hidden by what content type it is, i.e. &#039;hide all blog posts from user A&#039;&lt;br /&gt;
* &lt;strong&gt;Taxonomy Term&lt;/strong&gt; - since much of the Trust Network would be built around taxonomies/categories, users could hide information from certain users that was posted into a certain taxonomy (this would include forums--at least in D5, I&#039;m not sure how that works in D6)&lt;br /&gt;
* &lt;strong&gt;Individual Nodes&lt;/strong&gt; - filter individual nodes (a lower priority feature)&lt;br /&gt;
* &lt;strong&gt;Responses to another user&lt;/strong&gt; - hide all comments for User A if the comments are on content posted by User B&lt;br /&gt;
* &lt;strong&gt;Posts in Organic Groups&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Each of these options would also need a &quot;not&quot; option -- that is, users should be able to say &quot;hide all posts from user A that are &lt;em&gt;not&lt;/em&gt; blog posts,&quot; not just &quot;hide all blog posts from user A.&quot;&lt;/p&gt;
&lt;h2&gt;Choosing Trust Levels&lt;/h2&gt;
&lt;p&gt;The Trust Levels could be chosen by the users in one of these ways:&lt;br /&gt;
* &lt;strong&gt;Profile&lt;/strong&gt; - the configuration could appear on each user&#039;s Profile page (if profile.module is enabled) or Profile node (if Usernode and/or NodeProfile is enabled)&lt;br /&gt;
* &lt;strong&gt;Content&lt;/strong&gt; - configuration could appear on content-viewing pages&lt;br /&gt;
* &lt;strong&gt;List&lt;/strong&gt; - a separate page would have a list of users with Trust/block settings&lt;/p&gt;
&lt;h4&gt;Choosing Trust Levels could occur via:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Link&lt;/strong&gt; - A link to configuration page&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;List Menus&lt;/strong&gt; - Series of drop-down lists&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Block&lt;/strong&gt; - a block containing the config options&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Configuration for trust levels would have to allow choosing:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The blocked/trusted user&lt;/li&gt;
&lt;li&gt;Trust Level&lt;/li&gt;
&lt;li&gt;Conditions/types for each Trust Level if applicable&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;These abilities would also have to exist:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Each of the options specified above would have to be toggle-able by the admin&lt;/li&gt;
&lt;li&gt;Each would have to have permissions associated with it&lt;/li&gt;
&lt;li&gt;Special permissions: view all Trust Networks, view own Trust Network, Edit all Trust Networks, Edit own Trust Network&lt;/li&gt;
&lt;li&gt;Some sort of &lt;strong&gt;Favorites/Bookmarking&lt;/strong&gt; tool; ideally, we could integrate with a module or modules that already exist.&lt;/li&gt;
&lt;li&gt;Blocks displaying user- and admin-customizable parts of the Trust Network&lt;/li&gt;
&lt;li&gt;Views integration - fields, filters, arguments, sorting&lt;/li&gt;
&lt;li&gt;Allow admin to re-name terms like &quot;Trust Network,&quot; &quot;Trust Relationship,&quot; etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;...&lt;/h2&gt;
&lt;p&gt;So: thoughts?  Is anyone interested in coding this?  I&#039;m basically just starting with PHP so this is a pretty ridiculously ambitious project for me to start out with, but I&#039;m willing to help as much as I can if someone will agree to build the main structure.&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/social-networking-sites&quot;&gt;Social Networking Sites&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/9293#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/1922">idea</category>
 <category domain="http://groups.drupal.org/taxonomy/term/312">modules</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/social-networking-sites">Social Networking Sites</group>
 <pubDate>Sat, 01 Mar 2008 02:34:58 +0000</pubDate>
 <dc:creator>IceCreamYou@drupal.org</dc:creator>
 <guid isPermaLink="false">9293 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Library API</title>
 <link>http://groups.drupal.org/node/9064</link>
 <description>&lt;p&gt;After spending hours with Taxonomy trying to use it to construct a single tiered Library, The problem was that the module of taxonomy was too specific to what it does.  I also saw that with in my code, I was running multiple select statements that were unnecessary.  In addition my library was small, and I feared using a growing database full of taxonomy data would hinder the performance of my script.   Simply put, Taxonomy was to high level for what I needed, and didn&#039;t provide the low level functionality and flexibility that I wanted.&lt;/p&gt;
&lt;p&gt;I needed to write my own library routine, and modifying taxonomy was not an option.  I wasn&#039;t using this to classify content, but as a simple place holder for strings.  I then went off to write taxonomy 2.0, but found the task was too large on its own to complete in a reasonable time. &lt;/p&gt;
&lt;p&gt;I came up with the idea to build a low level api that would be flexible enough to hold my data, and found that it was easy to include functionality that would be useful for other applications, such as taxonomy, categories, dictionaries, Thesaurus, or to provide other module developers the frame work to include the library within administration functions or end user applications.&lt;/p&gt;
&lt;p&gt;The framework I came up with was a 3 class system, Library, Terms, and Term.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Library&lt;/b&gt; would contain basic information on the details of the data set that would enable it for most applications.  However I realize that this module in itself was not going to provide the necessary specialized data for taxonomy.  I therefor set it up to be inherited by other applications, and expanded using basic OOP practices.  In addition, the flexibility of the OOP structure could provide this extra data as the application developer found necessary, or could be replaced entirely with its own logic and criteria.&lt;br /&gt;
For example Taxonomy may implement my library by adding node id (or content_ID) based features.  I use the term content_ID, because comments, user profile, and other applications are not included within the node based system.  This must also be paired up with a content_type field, that could identify the difference.  Content_ID then could be User_ID or Comment_ID.  As you can see this is a flexible system.  Lastly I added a arbitrary field for providing additional data, that an application developer could use to provide any last relational data that the above doesn&#039;t cover.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Terms&lt;/b&gt; provides a collection of individual terms and functions to load, save, delete, create.
&lt;li&gt;Each Terms can be assigned its own table, and can be produced with an argument in the create terms process.  My Library class stores this table information.  Therefor each developer can utilize his own table structure for the library, and not be lumped with the same data of hundreds of other terms.  This is optional functionality of course.&lt;/li&gt;
&lt;li&gt;The terms class will provide the overall mass loading, saving, deleting, etc functionality that will be necessary.  It will keep a collection of terms on load, and can be stored in for small libraries.&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Term&lt;/b&gt; will provide individual string functions for updating and saving single field terms.  Inserts, Selects, Deletes, and Updates are provided at this level.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As you can see this provides the functionality needed for the developer to quickly add lists of terms for his project. But this does not limit the compatibility and special needs of certain applications.  Take the Thesaurus or Dictionary example.  An added table would be needed in each case to build the relations of terms together.  When we deal with words, it is a mistake to assume that a parent child relationship could provide us with the flexibility needed in linking values.  Words simply don&#039;t have parents, instead they are simply associated with each other.  Parents and Children implies ownership, yet no single word is the owner of another word, and in multiple languages, including English, a word can have multiple separate associations.  Therefor this three tiered approach allows for these specific needs by avoiding, inheriting, overriding the base functionality of any of the 3 tiers!  Going back to the dictionary terms, we could build one link table associated with the many different associations a dictionary possesses.  Even different definitions for each word.  Another link table can then provide the Thesaurus capability!&lt;/p&gt;
&lt;p&gt;A potential benefit of this structure is predefined form and display abilities that can be shared among multiple applications.  Example: Developer A builds a block that will benefit Developer B.  Because of the low level nature of this API, sharing this code becomes easier, and the deployment of applications will be accelerated.  Also we must take into account that each application will utilize this differently.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;So is this concept a dream, waiting for some developer to write the code?&lt;/b&gt; NO!  The library classes in its base form is almost finished, and will be implemented in another module I am writing!  What will remain is the utilization and expansion of the library to add more display routines and the implementation of this basic API into other aspects of the system.&lt;/p&gt;
&lt;p&gt;I can (and will) write the field displays and theme functions for the applications I am writing this for, but to expand on this and to create additional forms and displays, I will need the development community as a whole to contribute the routines they write when they implement this within their individual applications.&lt;/p&gt;
&lt;p&gt;Problems with current systems that can be seen, where this can be beneficial is in the taxonomy application where a Many to Many association can be deployed rather then the 1 to many relationships that currently exist.  The localization routine is indexed by words and phrases, the potential downside of this is in languages that may have multiple words that fundimentally mean the same thing but that are used differently.  By creating an ID based system within this, translators can employ this ability easier.  Categories (and breadcrumbs) is a parent child relationship, that is hierarchical in nature, and can also be stored using my functions.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Why would you re-write your current code to utilize my framework?&lt;/b&gt; because the documentation of the API will be complete, end customers (the developers of the website) can use my lower level functions to modify and control the terms and their definitions, and the class structure provides an easy way for one module or function to pass along the object without re-creating the library on each call, greatly reducing the number of queries on the database.  Lastly a generalized unification of code creates reliability and security by provided a single source to maintain and upgrade, thus effecting its children with the new abilities.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;What I need to know is if this is worth my time to submit, and if interest is established using such a system.  If its not adopted, then the use of it is null and void, and I will simply publish it with my unrelated module.  I am looking for feedback on this idea!&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
Mike&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/9064#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/189">api</category>
 <category domain="http://groups.drupal.org/taxonomy/term/1511">categories</category>
 <category domain="http://groups.drupal.org/taxonomy/term/3858">library</category>
 <category domain="http://groups.drupal.org/taxonomy/term/3709">localization</category>
 <category domain="http://groups.drupal.org/taxonomy/term/197">taxonomy</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Thu, 21 Feb 2008 02:08:55 +0000</pubDate>
 <dc:creator>mgparisi@drupal.org</dc:creator>
 <guid isPermaLink="false">9064 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Private / Personal Vocabularies in Taxonomy (hack og_vocab?)</title>
 <link>http://groups.drupal.org/node/8763</link>
 <description>&lt;p&gt;Just looking around for components for an issue tracking system. One key feature would be that users can setup their own controlled vocabulary for their issues...&lt;/p&gt;
&lt;p&gt;Googling around&lt;br /&gt;
* First result: other people &lt;a href=&quot;http://drupal.org/node/153035&quot;&gt;already&lt;/a&gt; have wanted this, but i could not find a premade module that does it&lt;br /&gt;
* Second: there is an &lt;a href=&quot;http://drupal.org/node/618&quot;&gt;old issue&lt;/a&gt; about this with a fine sketch from moshe&lt;br /&gt;
* Third: the og_vocab module does something quite similar imho: a vocabulary for each group.&lt;br /&gt;
This module might be a good starting point to start hacking. Right now i&#039;m not enough into drupal to do it but i&#039;ll leave this as a note to myself and interested audiences. :-)&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/taxonomy&quot;&gt;Taxonomy&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/8763#comments</comments>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/taxonomy">Taxonomy</group>
 <pubDate>Sat, 09 Feb 2008 00:50:12 +0000</pubDate>
 <dc:creator>aexl</dc:creator>
 <guid isPermaLink="false">8763 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Jailing a user..</title>
 <link>http://groups.drupal.org/node/8628</link>
 <description>&lt;p&gt;Hi all.. I&#039;ve found a little tool to be usefull in one of my sites. Let me explain.. Under certain situations, I should be sure the user completes a step of a form or a quiz, or just I do need the user to select one Item or accept the terms and conditions before letting him continue, but I have a lot of documentation in the site about how to help filling these forms, or just with enough knowledge to help the user to comply the requeriments.. Even if the user must complete the operation, it should be able to see other content in the site, but do nothing else..&lt;/p&gt;
&lt;p&gt;An example, just in my case: the user should fill an account setup form, but should be able to go trough the faq/doc/forum, or just search the site. Any other request, like account editting, content posting or so should not be available, and gracefully redirect the user to the incomplete process of the account setup.&lt;/p&gt;
&lt;p&gt;So the Idea is to &#039;jail&#039; a user in the operation stage you want, but with enough room to find information or read something.. Once the operation is complete, you may free the user again.&lt;/p&gt;
&lt;p&gt;These two apis will do the job:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;jail_user_jail([url],[user id])   Jail a user in an url
 - url (current url by default): url to jail the user 
 - uid (current user id by default: user to jail

jail_user_free([user id])     free the user
 - uid (current user id by default): User id to free
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The module provides the APIs and keeps track of jailed users. It also provides an interface to list jailed users and operations to free them.&lt;/p&gt;
&lt;p&gt;Control about what the user can see while jailed is just an uri check against allowed paths. The &quot;allowed&quot; uris for a user are configured per site as a global &#039;free look&#039; of the site even if the user is jailed. Most of the time this uris will be documentation trees or things like that.&lt;/p&gt;
&lt;p&gt;Some usage examples could be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jail the users to a poll, and free them when they submit their vote, or when the poll expires. This way uses have to cast a vote before they do any other thing.&lt;/li&gt;
&lt;li&gt;Punish a user to not be able to access any url having /add or /edit untill he writes a private message to an admin about his site &#039;suspictious&#039; usage.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(In my case), when a user is attacked and his planet energy is too low, I should left the user &#039;blind&#039;, without access to any of his content (neither the private message system), but with free access to the documentation tree, to read the doc/forum/faq, untill the energy level is high enough to operate the &quot;communication centre&quot;..&lt;/p&gt;
&lt;p&gt;I&#039;ve done most of the code just because I need in one of my game sites, so I launch the request here just to see if someone else may consider this piece usefull enough, before creating a contrib module. Maybe some few feature requests will help to improve this kind of operations.&lt;/p&gt;
&lt;p&gt;That&#039;s all.. thank you!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/8628#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/4003">multistep requirement forms</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Sun, 03 Feb 2008 02:08:46 +0000</pubDate>
 <dc:creator>ilo@drupal.org</dc:creator>
 <guid isPermaLink="false">8628 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Lenses (selecting a subset of fields from a node)</title>
 <link>http://groups.drupal.org/node/8361</link>
 <description>&lt;p&gt;I&#039;m working on an idea for a new module and was wondering if anyone had any feedback.  It may overlap a bit with existing modules (especially Views), but I think it&#039;s different and potentially interesting.&lt;/p&gt;
&lt;p&gt;Basically, the idea is this: Sometimes, when viewing/editing/creating a particular type of content, you might want to do so through a &quot;lens&quot; that only shows you a subset of fields that you are interested in at that particular time.  You only want to deal with those particular fields, without having to deal with the node as a whole (which may be very large and complex).&lt;/p&gt;
&lt;p&gt;Maybe this is best illustrated with an example.  Suppose you have a content type &quot;food&quot; with a whole bunch of fields:  &quot;meat&quot;, &quot;poultry&quot;, &quot;fish&quot;, &quot;fruits&quot;, &quot;vegetables&quot;, &quot;grains&quot;, etc.  Now suppose some vegetarians visit the website and we want them to be able to focus on editing the &quot;fruits&quot;, &quot;vegetables&quot; and &quot;grains&quot; fields (the other stuff would just be a distraction to them).&lt;/p&gt;
&lt;p&gt;So we want them to be able access a page (maybe something like /node/123/vegetarian) where they see a version of node/123 that only shows their fields of interest and hides the rest.  Similarly, we want to give them a simplified node edit/submission form (maybe at /node/123/vegetarian/edit) where they can edit their fields of interest without having to scroll through other fields they don&#039;t care about.&lt;/p&gt;
&lt;p&gt;Presumably, lenses would be defined in terms of fields rather than content types.  In other words, once you have a &quot;vegetarian&quot; lens defined, you could apply it to any content type you want.  So if you have another content type on your website, let&#039;s say &quot;things that start with the letter V&quot; (bear with me here ;), with fields &quot;violins&quot;, &quot;vegetables&quot;, &quot;voting booths&quot;, etc., then applying the same vegetarian lens as above would pull out the &quot;vegetables&quot; field only.&lt;/p&gt;
&lt;p&gt;Does this make sense?  Are there any existing modules that make it easy to do this?  Some possibly-related modules that I&#039;m aware of include:&lt;/p&gt;
&lt;p&gt;(a) &lt;a href=&quot;http://drupal.org/project/cck_field_perms&quot;&gt;CCK Field Permissions&lt;/a&gt;.  The main difference, though, is that we don&#039;t necessarily want to &lt;em&gt;restrict&lt;/em&gt; certain fields from being accessed -- the vegetarians may very well sometimes want to view/edit the full node rather than limiting themselves to the vegetarian fields.  Similarly, even people who aren&#039;t vegetarians may sometimes want to view/edit a simplified version of the node that focuses on the vegetarian items.&lt;/p&gt;
&lt;p&gt;(b) &lt;a href=&quot;http://drupal.org/project/formfilter&quot;&gt;Formfilter&lt;/a&gt;.  Also similar, but it only works on forms, and it seems to only let you make a simple yes/no decision about whether each field will be filtered out -- there&#039;s no way to have multiple &quot;lenses&quot; for the same form.&lt;/p&gt;
&lt;p&gt;(c) &lt;a href=&quot;http://drupal.org/project/views&quot;&gt;Views&lt;/a&gt;.  There are definitely similarities here, and it might even be possible to reproduce the entire functionality of a lens using Views; however, it seems a little clunky.  I&#039;m no Views expert, but it looks to me like you would need to create two (or even three) different Views, one for displaying the nodes and one for editing them (and for the latter you would have to use something like &lt;a href=&quot;http://drupal.org/project/editview&quot;&gt;Editview&lt;/a&gt; or &lt;a href=&quot;http://drupal.org/project/editablefields&quot;&gt;Editablefields&lt;/a&gt;), plus you would be limited to a List or Table View because those are the only ones that let you choose fields.  Overall, it seems to me that this isn&#039;t a natural fit for Views, because Views is mainly designed for selecting a list of &lt;em&gt;nodes&lt;/em&gt; from the website, whereas &quot;lenses&quot; are about selecting a list of &lt;em&gt;fields&lt;/em&gt; for a particular node.  So in some ways I think the idea of lenses could complement Views and maybe improve/replace the &quot;Fields&quot; option that Views currently has.  In other words, you could create a View that selects a set of nodes and then applies a particular lens to them, so that all nodes within the View only show a certain subset of their fields.&lt;/p&gt;
&lt;p&gt;Anyway, I&#039;m interested in this functionality for a couple different sites I&#039;m involved with -- and for totally different reasons on each site, so it seems like maybe it&#039;s something that could have a wide range of applications...?  I&#039;ll consider starting to code this soon, but since it will be my first (real) module, I could definitely use some help and/or suggestions ;)  Thanks!&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/views-developers&quot;&gt;Views Developers&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/8361#comments</comments>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/views-developers">Views Developers</group>
 <pubDate>Tue, 22 Jan 2008 05:32:59 +0000</pubDate>
 <dc:creator>David_Rothstein</dc:creator>
 <guid isPermaLink="false">8361 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Sessions on &quot;Community: Role of the Contributor&quot; Wanted For Drupalcon 2008</title>
 <link>http://groups.drupal.org/node/8296</link>
 <description>&lt;p&gt;My name is Matthew Pare and I&#039;m a Co-Chair for the &quot;&lt;a href=&quot;http://boston2008.drupalcon.org/community-and-core-track-description&quot;&gt;Community and Core&lt;/a&gt;&quot; track for &lt;a href=&quot;http://boston2008.drupalcon.org/&quot;&gt;Drupalcon Boston 2008&lt;/a&gt;. Over the last couple of weeks we have been planning and brainstorming to make &lt;a href=&quot;http://boston2008.drupalcon.org/&quot;&gt;Drupalcon Boston 2008&lt;/a&gt; the best Drupalcon to date! One of our recommended track session topics is &quot;Community: Role of the Contributor&quot; and since your viewing this post on the &lt;a href=&quot;http://groups.drupal.org/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt; group I thought you would be excellent candidates for submitting sessions on the topic.&lt;/p&gt;
&lt;h3&gt;How To Submit Your Session&lt;/h3&gt;
&lt;p&gt;We have several &lt;a href=&quot;http://boston2008.drupalcon.org/community-and-core-track-description&quot;&gt;recommended topics for Community and Core&lt;/a&gt; sessions but now its your turn to &lt;a href=&quot;http://boston2008.drupalcon.org/node/add/session&quot;&gt;&lt;strong&gt;submit your session&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Visit &lt;a href=&quot;http://boston2008.drupalcon.org/&quot;&gt;boston2008.drupalcon.org&lt;/a&gt; to learn more about Drupalcon Boston 2008, &lt;a href=&quot;http://boston2008.drupalcon.org/user/register&quot;&gt;register to attend&lt;/a&gt;,  &lt;a href=&quot;http://boston2008.drupalcon.org/sessions&quot;&gt;&lt;strong&gt;view already submitted sessions&lt;/strong&gt;&lt;/a&gt;, and even &lt;a href=&quot;http://boston2008.drupalcon.org/node/add/session&quot;&gt;&lt;strong&gt;submit your own session&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Save the Date&lt;/h3&gt;
&lt;p&gt;Drupalcon Boston 2008 takes place from &lt;strong&gt;March 3, 2008 to March 6, 2008&lt;/strong&gt; in Boston Convention and Expo Center. In addition, there will also be a Drupal Code Sprint on March 7.&lt;/p&gt;
&lt;h3&gt;Useful Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://boston2008.drupalcon.org/node/add/session&quot;&gt;Submit a Session&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://boston2008.drupalcon.org/sessions&quot;&gt;View already registered sessions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://boston2008.drupalcon.org/logistics-and-accommodations&quot;&gt;Logistics and Accommodations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://boston2008.drupalcon.org/conference-program-tracks-and-sessions&quot;&gt;Conference Program, Tracks, and Sessions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://boston2008.drupalcon.org/business-and-marketing-track-descriptions&quot;&gt;Business and marketing track&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://boston2008.drupalcon.org/design-and-user-experience-track-descriptions&quot;&gt;Design and user experience track&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://boston2008.drupalcon.org/site-building-track-descriptions&quot;&gt;Site building track&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;http://boston2008.drupalcon.org/community-and-core-track-description&quot;&gt;Community and core&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please submit your session proposals as soon as possible and I hope to see you all in Boston real soon.&lt;/p&gt;
&lt;p&gt;Cheers,&lt;br&gt;&lt;br /&gt;
-mpare&lt;br&gt;&lt;br /&gt;
&lt;em&gt;DON&#039;T MISS EARTH&#039;S LARGEST GATHERING OF DRUPAL PROFESSIONALS!&lt;br /&gt;
Drupalcon Boston 2008 - March 3-6, 2008&lt;br /&gt;
Learn more at &lt;a href=&quot;http://boston2008.drupalcon.org&quot; title=&quot;http://boston2008.drupalcon.org&quot;&gt;http://boston2008.drupalcon.org&lt;/a&gt;&lt;br&gt;&lt;/em&gt;&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/8296#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/247">drupalcon</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Sat, 19 Jan 2008 01:04:27 +0000</pubDate>
 <dc:creator>mpare</dc:creator>
 <guid isPermaLink="false">8296 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Desktop CCK</title>
 <link>http://groups.drupal.org/node/8065</link>
 <description>&lt;p&gt;I saw this great piece from John VanDyk : &lt;a href=&quot;http://www.sysarchitects.com/node/64&quot; title=&quot;http://www.sysarchitects.com/node/64&quot;&gt;http://www.sysarchitects.com/node/64&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We&#039;ve been having problems with our staff and their connectivity to the server. That is a separate track of what we are running down. But this got me thinking: could I write a desktop application?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A standalone application that can reside on the desktop
&lt;li&gt;Negotiate login to the site
&lt;li&gt;Get a CCK content-type schema and produce a form
&lt;li&gt;Open up a form with ActiveX controls
&lt;li&gt;Post to the site via an API call (or something like a PHP cURL submission)
&lt;li&gt;Also, save a copy locally so that you could work offline.
&lt;li&gt;Keep a local copy-- and check to see if the local copy and remote copy match
&lt;/ul&gt;
&lt;p&gt;Then our content people can work offline. Because the desktop app is self-contained it would bypass the question of browser issues.&lt;/p&gt;
&lt;p&gt;Thoughts? Dumb idea? Has it been done already? Could this become a SoC project? Would it be practical?&lt;/p&gt;
&lt;p&gt;All the best,&lt;/p&gt;
&lt;p&gt;Mike&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/8065#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/3805">CCK desktop Drupal API</category>
 <group domain="http://groups.drupal.org/content-construction-kit-cck">Content Construction Kit (CCK)</group>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Tue, 08 Jan 2008 17:46:43 +0000</pubDate>
 <dc:creator>dewolfe001</dc:creator>
 <guid isPermaLink="false">8065 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Node Access Manager</title>
 <link>http://groups.drupal.org/node/7603</link>
 <description>&lt;p&gt;In the last week, I&#039;ve helped two people deal with {node_access} table issues.  &lt;a href=&quot;http://drupal.org/node/197878&quot; title=&quot;http://drupal.org/node/197878&quot;&gt;http://drupal.org/node/197878&lt;/a&gt; is fairly typical of this sort of problem.&lt;/p&gt;
&lt;p&gt;Node Access is spooky stuff for most people, and there is generally no way to fix Node Access issues -- or bulk reset NA rules -- without writing SQL.&lt;/p&gt;
&lt;p&gt;For the &lt;a href=&quot;http://drupal.org/project/domain&quot;&gt;Domain Access&lt;/a&gt; suite, I wrote the Domain Content module, which does some of this.  I also wrote the &lt;a href=&quot;http://drupal.org/node/197126&quot;&gt;Devel Node Access Tester&lt;/a&gt; (for Drupal 6), which lets you assign dummy rules to your dummy nodes.&lt;/p&gt;
&lt;p&gt;I&#039;m thinking of a small modules that will let you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Review the contents of your {node_access} table.&lt;/li&gt;
&lt;li&gt;Batch update node access rules for your nodes.&lt;/li&gt;
&lt;li&gt;Report on which modules you use that set node access.&lt;/li&gt;
&lt;li&gt;Reset {node_access} to its default state.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thoughts?&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/contributed-module-ideas&quot;&gt;Contributed Module Ideas&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/7603#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/3444">node access</category>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <pubDate>Mon, 10 Dec 2007 00:34:26 +0000</pubDate>
 <dc:creator>agentrickard@drupal.org</dc:creator>
 <guid isPermaLink="false">7603 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Should someone write a &quot;Submit as&quot; module?</title>
 <link>http://groups.drupal.org/node/7583</link>
 <description>&lt;p&gt;Yesterday I downloaded and played with the &lt;a href=&quot;http://drupal.org/project/drigg&quot;&gt;Drigg module&lt;/a&gt;. Among its features is an option to let a privileged role submit content as a different user. The list of spoof users is also an administration option. The motivation for this is clear... it lets a handful of people easily make a site look like a bustling community. This is great for jumpstarting your Drigg site (which is designed to be a Digg clone), but how ethical is it? Furthermore, don&#039;t websites usually do this anyway, just using more labor intensive means such as logging in as different users?&lt;/p&gt;
&lt;p&gt;This morning I briefly considered writing a separate module that adds the &quot;Submit as feature&quot;. It is very useful for what it does, and fits a different purpose than either the &lt;a href=&quot;http://drupal.org/project/masquerade&quot;&gt;Masquerade&lt;/a&gt; or &lt;a href=&quot;http://drupal.org/project/devel&quot;&gt;Devel&lt;/a&gt; modules, both of which let you switch users. The devel module in particular could easily be used to switch users and submit content using different account names.&lt;/p&gt;
&lt;p&gt;The &quot;Submit as&quot; module would take a cue from Drigg, however, and let the administrator define the set of users who can be spoofed. This fits the task at hand much better. The devel module is for developers who need to easily see what the site looks and feels like to various users, and is almost never used on a live site. The masquerade module lets you designate one user account as the test user and certain roles can switch back and forth between their account and the test user, so this is appropriate for customer support and testing. The submit_as module would better fit the purpose of enabling a small number of users the power to simulate a large number of users.&lt;/p&gt;
&lt;p&gt;It&#039;d be an easy module to write, and lots of people would use it. Should it be written?&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/peer-review&quot;&gt;Peer Review&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/7583#comments</comments>
 <group domain="http://groups.drupal.org/building-site-traffic">Building Site Traffic</group>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/drupal-for-evil">Drupal for Evil</group>
 <group domain="http://groups.drupal.org/peer-review">Peer Review</group>
 <pubDate>Sat, 08 Dec 2007 12:06:26 +0000</pubDate>
 <dc:creator>robertDouglass</dc:creator>
 <guid isPermaLink="false">7583 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Least permissions and node_access</title>
 <link>http://groups.drupal.org/node/7095</link>
 <description>&lt;p&gt;OK, so I&#039;m working on integrating Domain Access with OG.&lt;/p&gt;
&lt;p&gt;Problem is, the current node_access system uses OR based permissions.  What I really need is the option to set AND based permissions.  For example:&lt;/p&gt;
&lt;p&gt;-- Current node_access rules&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt; return TRUE IF (og == TRUE) OR (Domain Access == TRUE);&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;-- Desired rules&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt; return TRUE IF (og == TRUE) AND (Domain Access == TRUE);&lt;/code&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;See &lt;a href=&quot;http://drupal.org/node/191375&quot; title=&quot;http://drupal.org/node/191375&quot;&gt;http://drupal.org/node/191375&lt;/a&gt; for a full discussion and some possible options.&lt;/p&gt;
&lt;p&gt;To summarize, I&#039;m thinking about rewriting the node_access function and adding a hook_access_logic() function to allow for this type of granularity.&lt;/p&gt;
&lt;p&gt;There is also a related problem that node_access checks don&#039;t run if $node-&amp;gt;status == 0 -- which is a problem for my use case.&lt;/p&gt;
&lt;div class=&quot;og_rss_groups&quot;&gt;&lt;a href=&quot;/multisite&quot;&gt;Multisite&lt;/a&gt;&lt;/div&gt;</description>
 <comments>http://groups.drupal.org/node/7095#comments</comments>
 <category domain="http://groups.drupal.org/taxonomy/term/3444">node access</category>
 <group domain="http://groups.drupal.org/access-control">Access Control</group>
 <group domain="http://groups.drupal.org/contributed-module-ideas">Contributed Module Ideas</group>
 <group domain="http://groups.drupal.org/multisite">Multisite</group>
 <pubDate>Tue, 13 Nov 2007 15:24:50 +0000</pubDate>
 <dc:creator>agentrickard@drupal.org</dc:creator>
 <guid isPermaLink="false">7095 at http://groups.drupal.org</guid>
</item>
<item>
 <title>Feed element 