sql_query($sql)) ) { bb_die('Could not get entry #1'); } if (DB()->num_rows($result) == 0) { $sql_ary = array( 'user_id' => (int) $id, 'group_id' => 0, 'quota_type' => (int) $quota_type, 'quota_limit_id'=> (int) $quota_limit_id ); $sql = 'INSERT INTO ' . BB_QUOTA . ' ' . attach_mod_sql_build_array('INSERT', $sql_ary); } else { $sql = 'UPDATE ' . BB_QUOTA . " SET quota_limit_id = $quota_limit_id WHERE user_id = $id AND quota_type = $quota_type"; } DB()->sql_freeresult($result); } if (!($result = DB()->sql_query($sql))) { bb_die('Unable to update quota settings'); } } else if ($mode == 'group') { if (!$quota_limit_id) { $sql = 'DELETE FROM ' . BB_QUOTA . " WHERE group_id = $id AND quota_type = $quota_type"; if (!($result = DB()->sql_query($sql))) { bb_die('Unable to delete quota settings'); } } else { // Check if user is already entered $sql = 'SELECT group_id FROM ' . BB_QUOTA . " WHERE group_id = $id AND quota_type = $quota_type"; if (!($result = DB()->sql_query($sql))) { bb_die('Could not get entry #2'); } if (DB()->num_rows($result) == 0) { $sql = 'INSERT INTO ' . BB_QUOTA . " (user_id, group_id, quota_type, quota_limit_id) VALUES (0, $id, $quota_type, $quota_limit_id)"; } else { $sql = 'UPDATE ' . BB_QUOTA . " SET quota_limit_id = $quota_limit_id WHERE group_id = $id AND quota_type = $quota_type"; } if (!DB()->sql_query($sql)) { bb_die('Unable to update quota settings'); } } } } /** * sort multi-dimensional Array */ function sort_multi_array ($sort_array, $key, $sort_order, $pre_string_sort = 0) { $last_element = sizeof($sort_array) - 1; if (!$pre_string_sort) { $string_sort = (!is_numeric(@$sort_array[$last_element-1][$key]) ) ? true : false; } else { $string_sort = $pre_string_sort; } for ($i = 0; $i < $last_element; $i++) { $num_iterations = $last_element - $i; for ($j = 0; $j < $num_iterations; $j++) { $next = 0; // do checks based on key $switch = false; if (!$string_sort) { if (($sort_order == 'DESC' && intval(@$sort_array[$j][$key]) < intval(@$sort_array[$j + 1][$key])) || ($sort_order == 'ASC' && intval(@$sort_array[$j][$key]) > intval(@$sort_array[$j + 1][$key]))) { $switch = true; } } else { if (($sort_order == 'DESC' && strcasecmp(@$sort_array[$j][$key], @$sort_array[$j + 1][$key]) < 0) || ($sort_order == 'ASC' && strcasecmp(@$sort_array[$j][$key], @$sort_array[$j + 1][$key]) > 0)) { $switch = true; } } if ($switch) { $temp = $sort_array[$j]; $sort_array[$j] = $sort_array[$j + 1]; $sort_array[$j + 1] = $temp; } } } return $sort_array; } /** * Returns the filesize of the upload directory in human readable format */ function get_formatted_dirsize() { global $attach_config, $upload_dir, $lang; $upload_dir_size = 0; if ($dirname = @opendir($upload_dir)) { while ($file = @readdir($dirname)) { if ($file != 'index.php' && $file != '.htaccess' && !is_dir($upload_dir . '/' . $file) && !is_link($upload_dir . '/' . $file)) { $upload_dir_size += @filesize($upload_dir . '/' . $file); } } @closedir($dirname); } else { $upload_dir_size = $lang['NOT_AVAILABLE']; return $upload_dir_size; } return humn_size($upload_dir_size); } /* * Build SQL-Statement for the search feature */ function search_attachments($order_by, &$total_rows, $back_links = '') { global $lang; $where_sql = array(); // Get submitted Vars $search_vars = array('search_keyword_fname', 'search_keyword_comment', 'search_author', 'search_size_smaller', 'search_size_greater', 'search_count_smaller', 'search_count_greater', 'search_days_greater', 'search_forum', 'search_cat'); for ($i = 0; $i < sizeof($search_vars); $i++) { $$search_vars[$i] = get_var($search_vars[$i], ''); } // Author name search if ($search_author != '') { // Bring in line with 2.0.x expected username $search_author = addslashes(html_entity_decode($search_author)); $search_author = stripslashes(clean_username($search_author)); // Prepare for directly going into sql query $search_author = str_replace('*', '%', attach_mod_sql_escape($search_author)); // We need the post_id's, because we want to query the Attachment Table $sql = 'SELECT user_id FROM ' . BB_USERS . " WHERE username LIKE '$search_author'"; if (!($result = DB()->sql_query($sql))) { bb_die('Could not obtain list of matching users (searching for: ' . $search_author . ')' . $back_links); } $matching_userids = ''; if ( $row = DB()->sql_fetchrow($result) ) { do { $matching_userids .= (($matching_userids != '') ? ', ' : '') . intval($row['user_id']); } while ($row = DB()->sql_fetchrow($result)); DB()->sql_freeresult($result); } else { bb_die($lang['NO_ATTACH_SEARCH_MATCH'] . $back_links); } $where_sql[] = ' (t.user_id_1 IN (' . $matching_userids . ')) '; } // Search Keyword if ($search_keyword_fname != '') { $match_word = str_replace('*', '%', $search_keyword_fname); $where_sql[] = " (a.real_filename LIKE '" . attach_mod_sql_escape($match_word) . "') "; } if ($search_keyword_comment != '') { $match_word = str_replace('*', '%', $search_keyword_comment); $where_sql[] = " (a.comment LIKE '" . attach_mod_sql_escape($match_word) . "') "; } // Search Download Count if ($search_count_smaller != '' || $search_count_greater != '') { if ($search_count_smaller != '') { $where_sql[] = ' (a.download_count < ' . (int) $search_count_smaller . ') '; } else if ($search_count_greater != '') { $where_sql[] = ' (a.download_count > ' . (int) $search_count_greater . ') '; } } // Search Filesize if ($search_size_smaller != '' || $search_size_greater != '') { if ($search_size_smaller != '') { $where_sql[] = ' (a.filesize < ' . (int) $search_size_smaller . ') '; } else if ($search_size_greater != '') { $where_sql[] = ' (a.filesize > ' . (int) $search_size_greater . ') '; } } // Search Attachment Time if ($search_days_greater != '') { $where_sql[] = ' (a.filetime < ' . ( TIMENOW - ((int) $search_days_greater * 86400)) . ') '; } // Search Forum if ($search_forum) { $where_sql[] = ' (p.forum_id = ' . intval($search_forum) . ') '; } // Search Cat... nope... sorry :( $sql = 'SELECT a.*, t.post_id, p.post_time, p.topic_id FROM ' . BB_ATTACHMENTS . ' t, ' . BB_ATTACHMENTS_DESC . ' a, ' . BB_POSTS . ' p WHERE '; if (sizeof($where_sql) > 0) { $sql .= implode('AND', $where_sql) . ' AND '; } $sql .= 't.post_id = p.post_id AND a.attach_id = t.attach_id '; $total_rows_sql = $sql; $sql .= $order_by; if (!($result = DB()->sql_query($sql))) { bb_die('Could not query attachments #1' . $back_links); } $attachments = DB()->sql_fetchrowset($result); $num_attach = DB()->num_rows($result); DB()->sql_freeresult($result); if ($num_attach == 0) { bb_die($lang['NO_ATTACH_SEARCH_MATCH'] . $back_links); } if (!($result = DB()->sql_query($total_rows_sql))) { bb_die('Could not query attachments #2' . $back_links); } $total_rows = DB()->num_rows($result); DB()->sql_freeresult($result); return $attachments; } /** * perform LIMIT statement on arrays */ function limit_array($array, $start, $pagelimit) { // array from start - start+pagelimit $limit = (sizeof($array) < ($start + $pagelimit)) ? sizeof($array) : $start + $pagelimit; $limit_array = array(); for ($i = $start; $i < $limit; $i++) { $limit_array[] = $array[$i]; } return $limit_array; }