[development] Accessing CCK field data (single, multiple, or shared) from another module

Rob Barreca rob at electronicinsight.com
Sun Mar 25 03:52:09 UTC 2007


>
> $db_info = content_database_info($field);
> $table = $db_info['table'];
>   
Karen,

You rock! Thanks for enlightening us.

Take care,

Rob Roy Barreca
Founder and COO
Electronic Insight Corporation
http://www.electronicinsight.com
rob at electronicinsight.com



Karen Stevenson wrote:
> To find the right table for a field for a SQL query, use the API, like this:
>
> $db_info = content_database_info($field);
> $table = $db_info['table'];
>
> That will always return the right table for the requested field. 
>
> $field needs to be the complete field array, not just the field name, so if you only have the field name, you would do:
>
> $field = content_fields(my_field_name);
> $db_info = content_database_info($field);
> $table = $db_info['table'];
>
> content_database_info($field) also contains info about the columns declared by the field so you know what field names to use in a SQL query. It returns an array that looks like:
>
> Array (
>     [table] => content_type_story
>     [columns] => Array (
>             [value] => Array  (
>                     [type] => varchar
>                     [length] => 50
>                     [not null] => 1
>                     [default] => ''
>                     [sortable] => 1
>                     [column] => field_phone_value
>                 )
>             [value2] => Array (
>                     [type] => int
>                     [length] => 10
>                     [unsigned] => 1
>                     [not null] => 1
>                     [default] => 0
>                     [column] => field_phone_type
>                 )
>         )
> )
>
>
> ----- Original Message ----
> From: Rob Barreca <rob at electronicinsight.com>
> To: development at drupal.org
> Sent: Thursday, March 22, 2007 7:55:31 PM
> Subject: Re: [development] Accessing CCK field data (single, multiple, or shared) from another module
>
>   
>> Is there a function for getting the data that you can just give a node
>> type and a field name and it handles the rest? 
>>     
> This is something I've just run into as well. I have a hardcoded to 
> query the DB for the multiple field table, but have a TODO in there to 
> find the right API call.
>
> Rob Roy Barreca
> Founder and COO
> Electronic Insight Corporation
> http://www.electronicinsight.com
> rob at electronicinsight.com
>
>
>
> Benjamin Melançon wrote:
>   
>> Gracious developers, CCK people especially...
>>
>> I wrote an access control module that works with the node relativity
>> module to cascade permissions to all nodes lower in a hierarchy.  I
>> hard-coded a query for a userreference field on a custom content type
>> as one way to give a user access to a node (and its descendants).
>>
>> In generalizing this, the current stumbling block is the way CCK
>> stores single instances in the content data table and shared instances
>> of a field in a separate table.
>>
>> Is there a function for getting the data that you can just give a node
>> type and a field name and it handles the rest?
>>
>> Or is there a place to check what the case is for a particular field?
>> (Even a "column_exists()" function would do it for me, but haven't
>> found one in PHP...)
>>
>> It's being developed in Drupal 5 and fixing this (as well as saving
>> explicitly permitted users when creating a new node) is all that's
>> needed for posting the project for general use.
>>
>> Many thanks,
>>
>> ben
>>
>> Agaric Design Collective
>> Open Source Web Development
>> http://AgaricDesign.com/
>>
>> People Who Give a Damn
>> building the infrastructure of a network for everyone
>> http://pwgd.org/
>>     
>
>
>
>
>
>
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20070324/0037f904/attachment.htm 


More information about the development mailing list