RE: dynamicdata getitems function

Paul Thomann <[email protected]> Wed, 10 Sep 2003 13:17:45 -0400
Newsgroups gmane.comp.cms.xaraya.knowledge-base
Message-ID <3A352CF455E0D311B50D00105ACEB91E100981@thomannasphalt1.thomannoffice.com>
By the way sorry about the sloppy formatting. It didn't cut and paste well
into the email message and it really wasn't formatted well to begin with.
I'll clean it up next time.

> -----Original Message-----
> From: Paul Thomann [mailto:[email protected]]
> Sent: Wednesday, September 10, 2003 1:13 PM
> To: 'Xaraya Knowledge Base'
> Subject: RE: [Xaraya_knowledge-base] dynamicdata getitems function
> 
> 
> > >Mikespub wrote:
> 
> > Hmmm, you should retrieve all the items you want, build a 
> > list of item ids,
> > and then pass that list to the getitems() function of 
> > hitcount or ratings :
> > 
> > $items = xarModAPIFunc('dynamicdata', 'user', 'getitems',
> >                        array('module' => 'mymodule',
> >                              'itemtype' => 0,
> >                              'sort' => 'myfield DESC',
> >                              'numitems' => 20));
> > $idlist = array_keys($items);
> > $hits = xarModAPIFunc('hitcount', 'user', 'getitems',
> >                        array('modname' => 'mymodule',
> >                              'itemtype' => 0,
> >                              'itemids' => $idlist));
> > foreach ($idlist as $id) {
> >     $items[$id]['counter'] = $hits[$id];
> > }
> > 
> > Or in reverse, if you need to start with the top N items, 
> > call topitems()
> > first, and then retrieve the list of items with those ids from DD :
> > 
> > $tophits = xarModAPIFunc('hitcount', 'user', 'topitems',
> >                          array('modname' => 'mymodule',
> >                                'itemtype' => 0,
> >                                'numitems' => 20));
> > $idlist = array();
> > foreach ($tophits as $tophit) {
> >     $idlist[] = $tophit['itemid'];
> > }
> > $items = xarModAPIFunc('dynamicdata', 'user', 'getitems',
> >                        array('module' => 'mymodule',
> >                              'itemtype' => 0,
> >                              'itemids' => $idlist));
> > foreach ($tophits as $tophit) {
> >     $id = $tophit['itemid'];
> >     if (isset($items[$id])) {
> >         $items[$id]['counter'] = $tophit['hits'];
> >     }
> > }
> > [or equivalent $object->getItems() calls]
> > 
> > That way, you only have 2 function/SQL calls instead of 1 + N...
> > 
> I did it this way. I had to add a few more conditionals in 
> order to get it
> to work with hits, ratings and pubdate. 
> 
>     if ($vars['toptype'] == 'rating') {
> 	$dynitems= xarModApiFunc('ratings','user','topitems',
> 								array(
> 	
> 'modname' => 'dyn_example'
> 								
> 	   
> 	
> ));
> 	
>             } elseif ($vars['toptype'] == 'dynitems') {
> 	$dynitems= xarModApiFunc('hitcount','user','topitems',
> 								array(
> 	
> 'modname' => 'dyn_example'
> 	
> ));
> 								
> 	   
> 								
> 	   
>             } else {
> 	$dynitems= xarModApiFunc('dynamicdata','user','getitems',
> 								array(
> 	
> 'module' => 'dyn_example'
> 	
> ));
> 	
>             }
> 
> and then a conditional in the foreach loop to deal with the different
> keynames in the associative arrays that are returned. 
> 
> > Better yet would be to retrieve everything at once, but that's not
> > feasible today (at least with DD).
> > 
> I look forward to that but really once you have the basic 
> principles down
> the rest seems to fall into place and isn't that difficult.
> 
> 
> > Thanks :) DD is probably a bit too complex for beginning site 
> > designers,
> > but it does offer some interesting functionality for more 
> > advanced users
> > - at least that was the intention :)
> I wouldn't call myself advanced. I seem to be getting the 
> hang of it though.
> 
> Paul
> _______________________________________________
> Xaraya_knowledge-base mailing list
> [email protected]
> http://lists.xaraya.com/mailman/listinfo/xaraya_knowledge-base
> 
> ---
> Incoming mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.512 / Virus Database: 309 - Release Date: 8/19/2003