OSDN Git Service

ordid で並べ替えた時に、親カテゴリよりも若い nodeid が付与された時に表示されなくなる不具合に対応
authorshizuki <shizuki@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Mon, 27 Nov 2006 17:23:18 +0000 (17:23 +0000)
committershizuki <shizuki@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Mon, 27 Nov 2006 17:23:18 +0000 (17:23 +0000)
git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/plugin@499 1ca29b6e-896d-4ea0-84a5-967f57386b96

trunk/NP_Dtree/dtree/dtreedata.php

index a4f9e2b..c59c32e 100644 (file)
 <?php
-/**
- *
- * DATA creation script for dTree
- *
- */
-
 global $CONF, $manager;
-    $strRel = '../../../';
-    include($strRel . 'config.php');
+       $strRel = '../../../';
+       include($strRel . 'config.php');
 
-    $usePathInfo = ($CONF['URLMode'] == 'pathinfo');
+       $usePathInfo = ($CONF['URLMode'] == 'pathinfo');
 
 //  $objectId = requestVar('o');
-    $objectId = 'tree' . preg_replace('|[^0-9a-f]|i', '', substr(requestVar('o'), 4));
-    $blogid   = intRequestVar('bid');
-    if (empty($blogid)) $blogid = intval($CONF['DefaultBlog']);
-    $blogname = getBlogNameFromID($blogid);
-
-    $b =& $manager->getBlog($blogid);
-    $blogurl = $b->getURL();
-    if (!$blogurl) {
-        if($blog) {
-            $b_tmp =& $manager->getBlog($blogid);
-            $blogurl = $b_tmp->getURL();
-        }
-        if (!$blogurl) {
-            $blogurl = $CONF['IndexURL'];
-            if (!$usePathInfo) {
-                if ($data['type'] == 'pageparser') {
-                    $blogurl .= 'index.php';
-                } else {
-                    $blogurl = $CONF['Self'];
-                }
-            }
-        }
-    }
-    if ($usePathInfo) {
-        if (substr($blogurl, -1) == '/') { 
-            $blogurl = substr($blogurl, 0, -1);
-        }
-    }
+       $objectId    = 'tree' . preg_replace('|[^0-9a-f]|i', '', substr(requestVar('o'), 4));
+       $blogid      = intRequestVar('bid');
+       if (empty($blogid)) {
+               $blogid = intval($CONF['DefaultBlog']);
+       }
+       $blogname = getBlogNameFromID($blogid);
 
-    $CONF['BlogURL']        = $blogurl;
-    $CONF['ItemURL']        = $blogurl;
-    $CONF['CategoryURL']    = $blogurl;
-    $CONF['ArchiveURL']     = $blogurl;
-    $CONF['ArchiveListURL'] = $blogurl;
-    $CONF['SearchURL']      = $blogurl;
+       $b        =& $manager->getBlog($blogid);
+       $blogurl  =  $b->getURL();
+       if (!$blogurl) {
+               if($blog) {
+                       $b_tmp   =& $manager->getBlog($blogid);
+                       $blogurl =  $b_tmp->getURL();
+               }
+               if (!$blogurl) {
+                       $blogurl = $CONF['IndexURL'];
+                       if (!$usePathInfo) {
+                               if ($data['type'] == 'pageparser') {
+                                       $blogurl .= 'index.php';
+                               } else {
+                                       $blogurl  = $CONF['Self'];
+                               }
+                       }
+               }
+       }
 
-    echo $objectId . "=new dTree('" . htmlspecialchars($objectId) . "');\n";
-    
-    echo $objectId . ".add(0,-1,'" . htmlspecialchars($blogname) . "');\n";
-    
-    $resq = 'SELECT * FROM %s WHERE cblog = %d';
-    $res = sql_query(sprintf($resq, sql_table('category'), $blogid));
-    $n = 1;
-    while ($o = mysql_fetch_object($res)) {
-        $catid = intval($o->catid);
-        $nodeArray['cat'][$catid] = $n;
-//      $url = createBlogidLink($blogid, array('catid'=>$catid));
-        $url = createCategoryLink($catid);
-//      $url = createBlogidLink($blogid, array("$CategoryKey"=>$catid));
-        $printData = $objectId
-                   . ".add(" . $n
-                   . ",0,'"
-                   . htmlspecialchars($o->cname) . "','"
-                   . htmlspecialchars($url) . "','"
-                   . htmlspecialchars($o->cdesc) . "');\n";
-        echo $printData;
-        $catFilter[] = $catid;
-        $n++;
-    }
-    
-    if (!$manager->pluginInstalled('NP_MultipleCategories')) {
-        echo 'document.write(' . $objectId . ');';
-        if ($itemid = intRequestVar('id')) {
-            $que = 'SELECT icat as result FROM %s WHERE inumber = %d';
-            $catid = quickQuery(sprintf($que, sql_table('item'), $itemid));
-            $catid = intval($catid);
-            $nodeId = 's' . $objectId . $nodeArray['cat'][$catid];
-            echo "document.getElementById('" . htmlspecialchars($nodeId) . "').className = 'selectedNode';";
-        }
-        return;
-    }
+       if ($usePathInfo) {
+               if (substr($blogurl, -1) == '/') { 
+                       $blogurl = substr($blogurl, 0, -1);
+               }
+       }
 
-    if ($catFilter[1]) {
-        $catFilter = @join(', ', $catFilter);
-        $catFilter = ' IN (' . $catFilter . ')';
-    } else {
-        $catFilter = '=' . $catFilter;
-    }
-    
-    $query = 'SELECT * FROM %s WHERE catid %s ORDER BY ordid ASC';
-//    $query = 'SELECT * FROM %s WHERE catid %s ORDER BY scatid';
-    $res = sql_query(sprintf($query, sql_table('plug_multiple_categories_sub'), $catFilter));
-    while ($o = mysql_fetch_object($res)) {
-        $scatid = intval($o->scatid);
-        $nodeArray['subcat'][$scatid] = $n;
-        $n++;
-    }
-    $query = 'SELECT * FROM %s WHERE catid %s ORDER BY ordid ASC';
-//    $query = 'SELECT * FROM %s WHERE catid %s ORDER BY scatid';
-    $res = sql_query(sprintf($query, sql_table('plug_multiple_categories_sub'), $catFilter));
-    $mcategories =& $manager->getPlugin('NP_MultipleCategories');
-    if (method_exists($mcategories, "getRequestName")) {
-        $subrequest = $mcategories->getRequestName();
-    } else {
-        $subrequest = 'subcatid';
-    }
+       $CONF['BlogURL']        = $blogurl;
+       $CONF['ItemURL']        = $blogurl;
+       $CONF['CategoryURL']    = $blogurl;
+       $CONF['ArchiveURL']     = $blogurl;
+       $CONF['ArchiveListURL'] = $blogurl;
+       $CONF['SearchURL']      = $blogurl;
 
-    while ($u = mysql_fetch_object($res)) {
-        $scatid = intval($u->scatid);
-        $parent_id = intval($u->parentid);
-        $cat_id = intval($u->catid);
-//      $url = createBlogidLink($blogid, array('catid'=>$u->catid, 'subcatid'=>$scatid));
-        $url = createCategoryLink($cat_id, array($subrequest => $scatid));
-//      $url = createBlogidLink($blogid, array("$CategoryKey"=>$u->catid, 'subcatid'=>$scatid));
+       echo $objectId . "=new dTree('"
+          . htmlspecialchars($objectId, ENT_QUOTES, _CHARSET)
+          . "');\n";
+       
+       echo $objectId . ".add(0,-1,'"
+          . htmlspecialchars($blogname, ENT_QUOTES, _CHARSET)
+          . "');\n";
+       
+       $resq = 'SELECT * FROM %s WHERE cblog = %d';
+       $res  = sql_query(sprintf($resq, sql_table('category'), $blogid));
+       $n    = 1;
+       while ($o = mysql_fetch_object($res)) {
+               $catid = intval($o->catid);
+               $nodeArray['cat'][$catid] = $n;
+               $url       = createCategoryLink($catid);
+               $printData = $objectId
+                                  . ".add(" . $n
+                                  . ",0,'"
+                                  . htmlspecialchars($o->cname, ENT_QUOTES, _CHARSET) . "','"
+                                  . htmlspecialchars($url, ENT_QUOTES, _CHARSET) . "','"
+                                  . htmlspecialchars($o->cdesc, ENT_QUOTES, _CHARSET) . "');\n";
+               echo $printData;
+               $catFilter[] = $catid;
+               $n++;
+               unset($printData);
+       }
+       
+       if (!$manager->pluginInstalled('NP_MultipleCategories')) {
+               echo 'document.write(' . $objectId . ');';
+               if ($itemid = intRequestVar('id')) {
+                       $que    = 'SELECT icat as result FROM %s WHERE inumber = %d';
+                       $catid  = quickQuery(sprintf($que, sql_table('item'), $itemid));
+                       $catid  = intval($catid);
+                       $nodeId = 's' . $objectId . $nodeArray['cat'][$catid];
+                       echo "document.getElementById('"
+                          . htmlspecialchars($nodeId, ENT_QUOTES, _CHARSET)
+                          . "').className = 'selectedNode';";
+               }
+               return;
+       }
 
-        $pnode = (!empty($parent_id)) ? $nodeArray['subcat'][$parent_id] : $nodeArray['cat'][$cat_id];
-        $printData = $objectId . ".add(" . $nodeArray['subcat'][$scatid] . ","
-                   . $pnode . ",'"
-                   . htmlspecialchars($u->sname) . "','"
-                   . htmlspecialchars($url) . "','"
-                   . htmlspecialchars($u->sdesc) . "');\n";
-        echo $printData;
-    }
+       if ($catFilter[1]) {
+               $catFilter = implode(', ', $catFilter);
+               $catFilter = ' IN (' . $catFilter . ')';
+       } else {
+               $catFilter = ' = ' . $catFilter;
+       }
+       
+       $scatTable   =  sql_table('plug_multiple_categories_sub');
+       $mcategories =& $manager->getPlugin('NP_MultipleCategories');
+       if (method_exists($mcategories, 'getRequestName')) {
+               $subrequest = $mcategories->getRequestName();
+       } else {
+               $subrequest = 'subcatid';
+       }
+//     $query = 'SELECT * FROM %s WHERE catid%s';
+       $query = 'SELECT * FROM %s WHERE catid%s ORDER BY ordid ASC';
+       $query = sprintf($query, $scatTable, $catFilter);
+       $res   = sql_query($query);
+       while ($o = mysql_fetch_object($res)) {
+               $scatid                       = intval($o->scatid);
+               $nodeArray['subcat'][$scatid] = $n;
+               $n++;
+       }
 
-    echo "document.write(" . $objectId . ");\n";
+//     $query = 'SELECT * FROM %s WHERE catid%s';
+//     $query = sprintf($query, $scatTable, $catFilter);
+       $res = sql_query($query);
+       while ($u = mysql_fetch_object($res)) {
+               $scatid    = intval($u->scatid);
+               $parent_id = intval($u->parentid);
+               $cat_id    = intval($u->catid);
+               $linkParam = array(
+                                                  $subrequest => $scatid
+                                                 );
+               $url       = createCategoryLink($cat_id, $linkParam);
 
+               if (!empty($parent_id)) {
+                       $pnode = $nodeArray['subcat'][$parent_id];
+               } else {
+                       $pnode = $nodeArray['cat'][$cat_id];
+               }
+               $printData[$pnode][$scatid] = $objectId
+                                                                       . ".add"
+                                                                       . "(" . $nodeArray['subcat'][$scatid] . ","
+                                                                       . $pnode . ","
+                                                                       . "'" . htmlspecialchars($u->sname, ENT_QUOTES, _CHARSET) . "',"
+                                                                       . "'" . htmlspecialchars($url, ENT_QUOTES, _CHARSET) . "',"
+                                                                       . "'" . htmlspecialchars($u->sdesc, ENT_QUOTES, _CHARSET) . "'"
+                                                                       . ");\n";
+       }
+       ksort($printData);
+       foreach($printData as $parentNode => $scatNode) {
+               foreach($scatNode as $showData) {
+                       echo $showData;
+               }
+       }
 
-    if ($sid = intRequestVar('sid')) {
-//      $sid = intRequestVar('sid');
-        $nodeId = 's' . $objectId . $nodeArray['subcat'][$sid];
-        echo "document.getElementById('" . $nodeId . "').className='urlselected';\n";
-        echo $objectId . ".openTo(" . $nodeArray['subcat'][$sid] . ",true);\n";
-    } elseif ($cid = intRequestVar('cid')) {
-//      $cid = intRequestVar('cid');
-        $nodeId = 's' . $objectId . $nodeArray['cat'][$cid];
-        echo "document.getElementById('" . $nodeId . "').className='urlselected';\n";
-        echo $objectId . ".openTo(" . $nodeArray['cat'][$cid] . ",true);\n";
-    }
+       echo "document.write(" . $objectId . ");\n";
 
+       if ($sid = intRequestVar('sid')) {
+               $nodeId = 's' . $objectId . $nodeArray['subcat'][$sid];
+               echo "document.getElementById('" . $nodeId . "').className='urlselected';\n";
+               echo $objectId . ".openTo(" . $nodeArray['subcat'][$sid] . ",true);\n";
+       } elseif ($cid = intRequestVar('cid')) {
+               $nodeId = 's' . $objectId . $nodeArray['cat'][$cid];
+               echo "document.getElementById('" . $nodeId . "').className='urlselected';\n";
+               echo $objectId . ".openTo(" . $nodeArray['cat'][$cid] . ",true);\n";
+       }
 
+       if ($itemid = intRequestVar('id')) {
+               $que    = 'SELECT icat as result FROM %s WHERE inumber = %d';
+               $catid  = quickQuery($que, sql_table('item'), $itemid);
+               $catid  = intva($catid);
+               $nodeId = 's' . $objectId.$nodeArray['cat'][$catid];
+               echo "document.getElementById('" . $nodeId . "').className='selectedNode';\n";
+               
+               //multi catid
+               $que = 'SELECT categories as result FROM %s WHERE item_id = %d';
+               $catids = quickQuery(sprintf($que, sql_table('plug_multiple_categories'), $itemid));
+               if ($catids) {
+                       $catids = explode(',', $catids);
+                       for ($i=0;$i<count($catids);$i++) {
+                               $catidTemp = intval($catids[$i]);
+                               if ($catidTemp != $catid) {
+                                       $nodeId = 's' . $objectId . $nodeArray['cat'][$catidTemp];
+                                       echo "document.getElementById('" . $nodeId . "').className='selectedCatNode';\n";
+                               }
+                       }
+               }
 
-    if ($itemid = intRequestVar('id')) {
-        $que = 'SELECT icat as result FROM %s WHERE inumber = %d';
-        $catid = quickQuery($que, sql_table('item'), $itemid);
-        $catid = intva($catid);
-//      $catid = quickQuery('SELECT icat as result FROM ' . sql_table('item') . ' WHERE inumber = ' . $itemid);
-        $nodeId = 's' . $objectId.$nodeArray['cat'][$catid];
-        echo "document.getElementById('" . $nodeId . "').className='selectedNode';\n";
-        
-        //multi catid
-        $que = 'SELECT categories as result FROM %s WHERE item_id = %d';
-        $catids = quickQuery(sprintf($que, sql_table('plug_multiple_categories'), $itemid));
-        if ($catids) {
-            $catids = explode(',', $catids);
-            for ($i=0;$i<count($catids);$i++) {
-                $catidTemp = intval($catids[$i]);
-                if ($catidTemp != $catid) {
-                    $nodeId = 's' . $objectId . $nodeArray['cat'][$catidTemp];
-                    echo "document.getElementById('" . $nodeId . "').className='selectedCatNode';\n";
-                }
-            }
-        }
-        
-        //(multi) subcatid
-        $que = 'SELECT subcategories as result FROM %s WHERE item_id = %d';
-        $scatids = quickQuery(sprintf($que, sql_table('plug_multiple_categories'), $itemid));
-        if ($scatids) {
-            $scatids = explode(',', $scatids);
-            for ($i=0;$i<count($scatids);$i++) {
-                $scatid = intval($scatids[$i]);
-                $nodeId = 's' . $objectId . $nodeArray['subcat'][$scatid];
-                echo "document.getElementById('" . $nodeId . "').className='selectedScatNode';\n";
-                echo $objectId . ".openTo(" . $nodeArray['subcat'][$scatid] . ",true);\n";
-            }
-        }
-    }
+               //(multi) subcatid
+               $que     = 'SELECT subcategories as result FROM %s WHERE item_id = %d';
+               $que     = sprintf($que, sql_table('plug_multiple_categories'), $itemid);
+               $scatids = quickQuery($que);
+               if ($scatids) {
+                       $scatids = explode(',', $scatids);
+                       $scatCnt = count($scatids);
+                       for ($i=0; $i<$scatCnt; $i++) {
+                               $scatid = intval($scatids[$i]);
+                               $nodeId = 's' . $objectId . $nodeArray['subcat'][$scatid];
+                               echo "document.getElementById('" . $nodeId . "').className='selectedScatNode';\n";
+                               echo $objectId . ".openTo(" . $nodeArray['subcat'][$scatid] . ",true);\n";
+                       }
+               }
+       }
 ?>
\ No newline at end of file