Note: this list is kept only as a demonstration for CVSNotice. For the latest CVS notices, see the Xaraya and Postnuke sites
View Statistics - Next Notice - Previous NoticeDirectory filter : [ all ] / postnuke_modules / articles [ view in CVS ]
| Date | Directory [filter] | File(s) [view] | Author [filter] |
| 13 Aug 2002 22:14:50 | postnuke_modules/articles | pnuserapi.php,1.37,1.38 | Mike |
| support AND-ing of categories for article selection/counting | |||
Update of /home/cvsroot/postnuke_modules/articles
In directory ns7.hostnuke.net:/tmp/cvs-serv12830
Modified Files:
pnuserapi.php
Log Message:
support AND-ing of categories for article selection/counting
Index: pnuserapi.php
===================================================================
RCS file: /home/cvsroot/postnuke_modules/articles/pnuserapi.php,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -d -r1.37 -r1.38
*** pnuserapi.php 11 Aug 2002 00:02:51 -0000 1.37
--- pnuserapi.php 13 Aug 2002 22:14:48 -0000 1.38
***************
*** 53,58 ****
* @param $args['ptid'] publication type ID (for news, sections, reviews, ...)
* @param $args['status'] array of requested status(es) for the articles
! * @param $args['cids'] array of category IDs for which to get articles
* (for all categories don�t set it)
* @param $args['startdate'] articles published at startdate or later
* (unix timestamp format)
--- 53,60 ----
* @param $args['ptid'] publication type ID (for news, sections, reviews, ...)
* @param $args['status'] array of requested status(es) for the articles
! * @param $args['cids'] array of category IDs for which to get articles (OR)
* (for all categories don�t set it)
+ // TODO : better name for params
+ * @param $args['andcids'] array of category IDs for which to get articles (AND)
* @param $args['startdate'] articles published at startdate or later
* (unix timestamp format)
***************
*** 77,80 ****
--- 79,85 ----
$cids = array();
}
+ if (empty($andcids)) {
+ $andcids = array();
+ }
// Available fields in articles (for now)
***************
*** 108,112 ****
$required['title'] = 1;
// force cids as required when categories are given
! if (count($cids) > 0) {
$required['cids'] = 1;
}
--- 113,117 ----
$required['title'] = 1;
// force cids as required when categories are given
! if (count($cids) > 0 || count($andcids) > 0) {
$required['cids'] = 1;
}
***************
*** 145,148 ****
--- 150,154 ----
$categoriesdef = pnModAPIFunc('categories','user','leftjoin',
array('cids' => $cids,
+ 'andcids' => $andcids,
'modid' =>
pnModGetIDFromName('articles')));
***************
*** 188,192 ****
// add this for SQL compliance when there are multiple JOINs
! if (!empty($required['counter']) || count($cids) > 0) {
$from = '(' . $from . ')';
}
--- 194,199 ----
// add this for SQL compliance when there are multiple JOINs
! if (!empty($required['counter']) || count($cids) > 0 ||
! count($andcids) > 0) {
$from = '(' . $from . ')';
}
***************
*** 198,202 ****
// add this for SQL compliance when there are multiple JOINs
! if (count($cids) > 0) {
$from = '(' . $from . ')';
}
--- 205,209 ----
// add this for SQL compliance when there are multiple JOINs
! if (count($cids) > 0 || count($andcids) > 0) {
$from = '(' . $from . ')';
}
***************
*** 206,209 ****
--- 213,220 ----
$from .= ' LEFT JOIN ' . $categoriesdef['table'];
$from .= ' ON ' . $categoriesdef['field'] . ' = ' . $articlesdef['aid'];
+ if (!empty($categoriesdef['more'])) {
+ $from = '(' . $from . ')';
+ $from .= $categoriesdef['more'];
+ }
}
$sql .= ' FROM ' . $from;
***************
*** 219,223 ****
$where[] = $hitcountdef['where'];
}
! if (count($cids) > 0) {
// we rely on leftjoin() to create the necessary categories clauses
$where[] = $categoriesdef['where'];
--- 230,234 ----
$where[] = $hitcountdef['where'];
}
! if (count($cids) > 0 || count($andcids) > 0) {
// we rely on leftjoin() to create the necessary categories clauses
$where[] = $categoriesdef['where'];
***************
*** 485,490 ****
*
* @param $args['status'] array of requested status(es) for the articles
- * @param $args['cids'] array of category IDs
* @param $args['ptid'] publication type ID
* @param $args['reverse'] default is ptid => cid, reverse (1) is cid => ptid
* @returns array
--- 496,503 ----
*
* @param $args['status'] array of requested status(es) for the articles
* @param $args['ptid'] publication type ID
+ * @param $args['cids'] array of category IDs (OR)
+ * @param $args['andcids'] array of category IDs (AND), or
+ * @param $args['numcids'] number of categories to group by (AND)
* @param $args['reverse'] default is ptid => cid, reverse (1) is cid => ptid
* @returns array
***************
*** 527,531 ****
FROM '. $articlesdef['table'] . '
LEFT JOIN ' . $categoriesdef['table'] .'
! ON '. $categoriesdef['field'] . ' = ' . $articlesdef['field'] .'
WHERE '. $categoriesdef['where'] .' AND '. $articlesdef['where'] .'
GROUP BY '. $articlesdef['pubtypeid'] .', '. $categoriesdef['cid'];
--- 540,545 ----
FROM '. $articlesdef['table'] . '
LEFT JOIN ' . $categoriesdef['table'] .'
! ON '. $categoriesdef['field'] . ' = ' . $articlesdef['field'] .
! $categoriesdef['more'] . '
WHERE '. $categoriesdef['where'] .' AND '. $articlesdef['where'] .'
GROUP BY '. $articlesdef['pubtypeid'] .', '. $categoriesdef['cid'];
***************
*** 545,549 ****
}
while (!$result->EOF) {
! list($ptid, $cid, $count) = $result->fields;
if (empty($args['reverse'])) {
$pubcatcount[$ptid][$cid] = $count;
--- 559,569 ----
}
while (!$result->EOF) {
! // we may have 1 or more cid fields here, depending on what we're
! // counting (cfr. AND in categories)
! $fields = $result->fields;
! $ptid = array_shift($fields);
! $count = array_pop($fields);
! // TODO: use multi-level array for multi-category grouping ?
! $cid = join('+',$fields);
if (empty($args['reverse'])) {
$pubcatcount[$ptid][$cid] = $count;
***************
*** 644,648 ****
* count number of items depending on additional module criteria
*
! * @param $args['cids'] array of cids that we are counting for
*
* @param $args['authorid'] the ID of the author
--- 664,669 ----
* count number of items depending on additional module criteria
*
! * @param $args['cids'] array of cids that we are counting for (OR)
! * @param $args['andcids'] array of cids that we are counting for (AND)
*
* @param $args['authorid'] the ID of the author
***************
*** 671,676 ****
$sql .= ' FROM ' . $articlesdef['table'];
! if (!empty($args['cids']) && is_array($args['cids'])
! && count($args['cids']) > 0) {
// Load API
if (!pnModAPILoad('categories', 'user')) {
--- 692,702 ----
$sql .= ' FROM ' . $articlesdef['table'];
! if (!isset($args['cids'])) {
! $args['cids'] = array();
! }
! if (!isset($args['andcids'])) {
! $args['andcids'] = array();
! }
! if (count($args['cids']) > 0 || count($args['andcids']) > 0) {
// Load API
if (!pnModAPILoad('categories', 'user')) {
***************
*** 682,693 ****
}
// Get the LEFT JOIN ... ON ... and WHERE (!) parts from categories
! $categoriesdef = pnModAPIFunc('categories','user','leftjoin',
! array('cids' => $args['cids'],
! 'modid' =>
! pnModGetIDFromName('articles')));
$sql .= ' LEFT JOIN ' . $categoriesdef['table'];
$sql .= ' ON ' . $categoriesdef['field'] . ' = '
. $articlesdef['aid'];
$docid = 1;
}
--- 708,718 ----
}
// Get the LEFT JOIN ... ON ... and WHERE (!) parts from categories
! $args['modid'] = pnModGetIDFromName('articles');
! $categoriesdef = pnModAPIFunc('categories','user','leftjoin',$args);
$sql .= ' LEFT JOIN ' . $categoriesdef['table'];
$sql .= ' ON ' . $categoriesdef['field'] . ' = '
. $articlesdef['aid'];
+ $sql .= $categoriesdef['more'];
$docid = 1;
}
View Statistics - Next Notice - Previous Notice
| Visit Developer Site - Browse CVS Repository |
Syndicate via backend.rss (max. once per hour please) | Powered by CVSNotice 0.1.3 |