I modified get_meta_album_set_data() and get_meta_album_set() so that the root page loads much faster and the other pages loads a bit faster.
/**
* get_meta_album_set_data()
*
* Get the entire album set based on the current category, this function is called recursively.
*
* ** Experimental, may cause sql problems on galleries with large numbers of albums.
*
* @param integer $cid Parent Category
* @param array $meta_album_set_array
* @return void
**/
function get_meta_album_set_data($cid,&$meta_album_set_array) //adapted from index.php get_subcat_data()
{
global $CONFIG, $cat;
if ($cid == USER_GAL_CAT) {
$sql = "SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} as a WHERE category>=" . FIRST_USER_CAT;
$result = cpg_db_query($sql);
$album_count = mysql_num_rows($result);
while ($row = mysql_fetch_array($result)) {
$meta_album_set_array[] = $row['aid'];
} // while
mysql_free_result($result);
} else {
$result = cpg_db_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']} WHERE category = {$cid}");
$album_count = mysql_num_rows($result);
while ($row = mysql_fetch_array($result)) {
$meta_album_set_array[] = $row['aid'];
} // while
mysql_free_result($result);
}
$result = cpg_db_query("SELECT cid FROM {$CONFIG['TABLE_CATEGORIES']} WHERE parent = '$cid'");
if (mysql_num_rows($result) > 0) {
$rowset = cpg_db_fetch_rowset($result);
foreach ($rowset as $subcat) {
if ($subcat['cid']) {
get_meta_album_set_data($subcat['cid'], $meta_album_set_array);
}
}
}
}
/**
* get_meta_album_set()
*
* Get the entire album set based on the current category.
*
* @param integer $cat Category
* @param array $meta_album_set_array
* @return void
**/
function get_meta_album_set($cat, &$meta_album_set)
{
global $USER_DATA, $FORBIDDEN_SET_DATA, $CONFIG;
if ($cpg_show_private_album || $USER_DATA['can_see_all_albums'] && $cat == 0) {
$meta_album_set ='';
} elseif ($cat < 0) {
$meta_album_set= 'AND aid IN (' . (- $cat) . ') ';
} elseif ($cat > 0) {
$meta_album_set_array=array();
get_meta_album_set_data($cat,$meta_album_set_array);
$meta_album_set_array = array_diff($meta_album_set_array,$FORBIDDEN_SET_DATA);
if (count($meta_album_set_array)) {
$meta_album_set = "AND aid IN (" . implode(',',$meta_album_set_array) . ") ";
} else {
$meta_album_set = "AND aid IN (-1) ";
}
} else {
$result = cpg_db_query("SELECT aid FROM {$CONFIG['TABLE_ALBUMS']}");
$album_count = mysql_num_rows($result);
while ($row = mysql_fetch_array($result)) {
$meta_album_set_array[] = $row['aid'];
}
mysql_free_result($result);
$meta_album_set_array = array_diff($meta_album_set_array,$FORBIDDEN_SET_DATA);
if (count($meta_album_set_array)) {
$meta_album_set = "AND aid IN (" . implode(',',$meta_album_set_array) . ") ";
} else {
$meta_album_set = "AND aid IN (-1) ";
}
}
}