Empty commit

This commit is contained in:
Git 2013-06-15 08:00:45 +00:00
parent 94a7d23812
commit b04c53f9a3
20 changed files with 197 additions and 78 deletions

View File

@ -8,17 +8,17 @@ class Rules {
public static function display_site_tag_rules($OnUpload = false) {
?>
<ul>
<li>Tags should be comma-separated, and you should use a period (".") to separate words inside a tag &mdash; e.g. "<strong class="important_text_alt">hip.hop</strong>".</li>
<li>Tags should be comma-separated, and you should use a period (".") to separate words inside a tag&#8202;&mdash;&#8202;e.g. "<strong class="important_text_alt">hip.hop</strong>".</li>
<li>There is a list of official tags <?=($OnUpload ? 'to the left of the text box' : 'on <a href="upload.php">the torrent upload page</a>')?>. Please use these tags instead of "unofficial" tags (e.g. use the official "<strong class="important_text_alt">drum.and.bass</strong>" tag, instead of an unofficial "<strong class="important_text">dnb</strong>" tag). <strong>Please note that the "<strong class="important_text_alt">2000s</strong>" tag refers to music produced between 2000 and 2009.</strong></li>
<li>Avoid abbreviations if at all possible. So instead of tagging an album as "<strong class="important_text">alt</strong>", tag it as "<strong class="important_text_alt">alternative</strong>". Make sure that you use correct spelling.</li>
<li>Avoid using multiple synonymous tags. Using both "<strong class="important_text">prog.rock</strong>" and "<strong class="important_text_alt">progressive.rock</strong>" is redundant and annoying&mdash;just use the official "<strong class="important_text_alt">progressive.rock</strong>" tag.</li>
<li>Avoid using multiple synonymous tags. Using both "<strong class="important_text">prog.rock</strong>" and "<strong class="important_text_alt">progressive.rock</strong>" is redundant and annoying&#8202;&mdash;&#8202;just use the official "<strong class="important_text_alt">progressive.rock</strong>" tag.</li>
<li>Do not add "useless" tags, such as "<strong class="important_text">seen.live</strong>", "<strong class="important_text">awesome</strong>", "<strong class="important_text">rap</strong>" (is encompassed by "<strong class="important_text_alt">hip.hop</strong>"), etc. If an album is live, you can tag it as "<strong class="important_text_alt">live</strong>".</li>
<li>Only tag information on the album itself&mdash;<strong>not the individual release</strong>. Tags such as "<strong class="important_text">v0</strong>", "<strong class="important_text">eac</strong>", "<strong class="important_text">vinyl</strong>", "<strong class="important_text">from.oink</strong>", etc. are strictly forbidden. Remember that these tags will be used for other versions of the same album.</li>
<li>Only tag information on the album itself&#8202;&mdash;&#8202;<strong>not the individual release</strong>. Tags such as "<strong class="important_text">v0</strong>", "<strong class="important_text">eac</strong>", "<strong class="important_text">vinyl</strong>", "<strong class="important_text">from.oink</strong>", etc. are strictly forbidden. Remember that these tags will be used for other versions of the same album.</li>
<li><strong>You should be able to build up a list of tags using only the official tags <?=($OnUpload ? 'to the left of the text box' : 'on <a href="upload.php">the torrent upload page</a>')?>. If you are in any doubt about whether or not a tag is acceptable, do not add it.</strong></li>
</ul>
@ -40,9 +40,9 @@ public static function display_irc_chat_rules() {
<li>No arguing. You can't win an argument over the Internet, so you are just wasting your time trying.</li>
<li>No prejudice, especially related to race, religion, politics, ethnic background, etc. It is highly suggested to avoid this entirely.</li>
<li>Flooding is irritating and will warrant you a kick. This includes, but is not limited to, automatic "now playing" scripts, pasting large amounts of text, and multiple consecutive lines with no relevance to the conversation at hand.</li>
<li>Impersonation of other members&mdash;particularly staff members&mdash;will not go unpunished. If you are uncertain of a user's identity, check their vhost.</li>
<li>Impersonation of other members&#8202;&mdash;&#8202;particularly staff members&#8202;&mdash;&#8202;will not go unpunished. If you are uncertain of a user's identity, check their vhost.</li>
<li>Spamming is strictly forbidden. This includes, but is not limited to, personal sites, online auctions, and torrent uploads.</li>
<li>Obsessive annoyance&mdash;both to other users and staff&mdash;will not be tolerated.</li>
<li>Obsessive annoyance&#8202;&mdash;&#8202;both to other users and staff&#8202;&mdash;&#8202;will not be tolerated.</li>
<li>Do not PM, DCC, or Query anyone you don't know or have never talked to without asking first; this applies specifically to staff.</li>
<li>No language other than English is permitted in the official IRC channels. If we cannot understand it, we cannot moderate it.</li>
<li>The offering, selling, trading, and giving away of invites to this or any other site on our IRC network is <strong>strictly forbidden</strong>.</li>

View File

@ -154,6 +154,14 @@ CREATE TABLE `bookmarks_torrents` (
KEY `GroupID` (`GroupID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `changelog` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`time` datetime DEFAULT NULL,
`message` text COLLATE utf8_swedish_ci,
`author` varchar(30) COLLATE utf8_swedish_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci;
CREATE TABLE `collages` (
`ID` int(10) NOT NULL AUTO_INCREMENT,
`Name` varchar(100) CHARACTER SET utf8 COLLATE utf8_swedish_ci NOT NULL DEFAULT '',

View File

@ -39,7 +39,7 @@
<div class="pad" id="threadpoll">
<p><strong id="pollquestion"></strong></p>
<div id="pollanswers"></div>
<br /><input type="radio" name="vote" id="answer_0" value="0" /> <label for="answer_0">Blank &mdash; show the results!</label><br /><br />
<br /><input type="radio" name="vote" id="answer_0" value="0" /> <label for="answer_0">Blank&#8202;&mdash;&#8202;Show the results!</label><br /><br />
<input type="button" style="float: left;" value="Vote" />
</div>
</div>

View File

@ -94,7 +94,7 @@
<input type="radio" name="vote" id="answer_<?=$i?>" value="<?=$i?>" />
<label for="answer_<?=$i?>"><?=display_str($Answers[$i])?></label><br />
<? } ?>
<br /><input type="radio" name="vote" id="answer_0" value="0" /> <label for="answer_0">Blank &mdash; Show the results!</label><br /><br />
<br /><input type="radio" name="vote" id="answer_0" value="0" /> <label for="answer_0">Blank&#8202;&mdash;&#8202;Show the results!</label><br /><br />
<input type="button" onclick="ajax.post('index.php','poll',function(response) { $('#poll_container').raw().innerHTML = response });" value="Vote" />
</form>
<?

View File

@ -375,7 +375,7 @@
<? } ?>
<li>
<br />
<input type="radio" name="vote" id="answer_0" value="0" /> <label for="answer_0">Blank &mdash; Show the results!</label><br />
<input type="radio" name="vote" id="answer_0" value="0" /> <label for="answer_0">Blank&#8202;&mdash;&#8202;Show the results!</label><br />
</li>
</ul>
<? if ($ForumID == STAFF_FORUM) { ?>

View File

@ -22,7 +22,10 @@
$Cache->begin_transaction('user_info_heavy_'.$UserID);
$Cache->update_row(false, array('LastReadNews' => $News[0][0]));
$Cache->commit_transaction(0);
$DB->query("UPDATE users_info SET LastReadNews = '".$News[0][0]."' WHERE UserID = ".$UserID);
$DB->query("
UPDATE users_info
SET LastReadNews = '".$News[0][0]."'
WHERE UserID = $UserID");
$LoggedUser['LastReadNews'] = $News[0][0];
}
@ -38,7 +41,9 @@
?>
<div class="box">
<div class="head colhead_dark"><strong><a href="staffblog.php">Latest staff blog posts</a></strong></div>
<div class="head colhead_dark">
<strong><a href="staffblog.php">Latest staff blog posts</a></strong>
</div>
<?
if (($Blog = $Cache->get_value('staff_blog')) === false) {
$DB->query("
@ -55,7 +60,10 @@
$Cache->cache_value('staff_blog', $Blog, 1209600);
}
if (($SBlogReadTime = $Cache->get_value('staff_blog_read_'.$LoggedUser['ID'])) === false) {
$DB->query("SELECT Time FROM staff_blog_visits WHERE UserID = ".$LoggedUser['ID']);
$DB->query("
SELECT Time
FROM staff_blog_visits
WHERE UserID = ".$LoggedUser['ID']);
if (list($SBlogReadTime) = $DB->next_record()) {
$SBlogReadTime = strtotime($SBlogReadTime);
} else {
@ -90,18 +98,20 @@
<div class="head colhead_dark"><strong><a href="blog.php">Latest blog posts</a></strong></div>
<?
if (($Blog = $Cache->get_value('blog')) === false) {
$DB->query("SELECT
b.ID,
um.Username,
b.Title,
b.Body,
b.Time,
b.ThreadID
FROM blog AS b LEFT JOIN users_main AS um ON b.UserID=um.ID
$DB->query("
SELECT
b.ID,
um.Username,
b.Title,
b.Body,
b.Time,
b.ThreadID
FROM blog AS b
LEFT JOIN users_main AS um ON b.UserID=um.ID
ORDER BY Time DESC
LIMIT 20");
$Blog = $DB->to_array();
$Cache->cache_value('blog',$Blog,1209600);
$Cache->cache_value('blog', $Blog, 1209600);
}
?>
<ul class="stats nobullet">
@ -198,11 +208,16 @@
//End Torrent Stats
if (($RequestStats = $Cache->get_value('stats_requests')) === false) {
$DB->query("SELECT COUNT(ID) FROM requests");
$DB->query("
SELECT COUNT(ID)
FROM requests");
list($RequestCount) = $DB->next_record();
$DB->query("SELECT COUNT(ID) FROM requests WHERE FillerID > 0");
$DB->query("
SELECT COUNT(ID)
FROM requests
WHERE FillerID > 0");
list($FilledCount) = $DB->next_record();
$Cache->cache_value('stats_requests',array($RequestCount,$FilledCount),11280);
$Cache->cache_value('stats_requests', array($RequestCount, $FilledCount), 11280);
} else {
list($RequestCount,$FilledCount) = $RequestStats;
}
@ -261,20 +276,20 @@
ORDER BY Featured DESC
LIMIT 1");
list($TopicID) = $DB->next_record();
$Cache->cache_value('polls_featured',$TopicID,0);
$Cache->cache_value('polls_featured', $TopicID, 0);
}
if ($TopicID) {
if (($Poll = $Cache->get_value('polls_'.$TopicID)) === false) {
$DB->query("
SELECT Question, Answers, Featured, Closed
FROM forums_polls
WHERE TopicID='$TopicID'");
WHERE TopicID = '$TopicID'");
list($Question, $Answers, $Featured, $Closed) = $DB->next_record(MYSQLI_NUM, array(1));
$Answers = unserialize($Answers);
$DB->query("
SELECT Vote, COUNT(UserID)
FROM forums_polls_votes
WHERE TopicID='$TopicID'
WHERE TopicID = '$TopicID'
AND Vote != '0'
GROUP BY Vote");
$VoteArray = $DB->to_array(false, MYSQLI_NUM);
@ -290,9 +305,9 @@
$Votes[$i] = 0;
}
}
$Cache->cache_value('polls_'.$TopicID, array($Question,$Answers,$Votes,$Featured,$Closed), 0);
$Cache->cache_value('polls_'.$TopicID, array($Question, $Answers, $Votes, $Featured, $Closed), 0);
} else {
list($Question,$Answers,$Votes,$Featured,$Closed) = $Poll;
list($Question, $Answers, $Votes, $Featured, $Closed) = $Poll;
}
if (!empty($Votes)) {
@ -328,7 +343,7 @@
$Ratio = 0;
$Percent = 0;
}
?> <li><?=display_str($Answers[$i])?> (<?=number_format($Percent * 100,2)?>%)</li>
?> <li><?=display_str($Answers[$i])?> (<?=number_format($Percent * 100, 2)?>%)</li>
<li class="graph">
<span class="left_poll"></span>
<span class="center_poll" style="width: <?=round($Ratio * 140)?>px;"></span>
@ -348,7 +363,7 @@
<input type="radio" name="vote" id="answer_<?=$i?>" value="<?=$i?>" />
<label for="answer_<?=$i?>"><?=display_str($Answers[$i])?></label><br />
<? } ?>
<br /><input type="radio" name="vote" id="answer_0" value="0" /> <label for="answer_0">Blank &mdash; Show the results!</label><br /><br />
<br /><input type="radio" name="vote" id="answer_0" value="0" /> <label for="answer_0">Blank&#8202;&mdash;&#8202;Show the results!</label><br /><br />
<input type="button" onclick="ajax.post('index.php','poll',function(response) {$('#poll_container').raw().innerHTML = response});" value="Vote" />
</form>
</div>
@ -381,10 +396,10 @@
ORDER BY tr.Time DESC
LIMIT 10");
$Recommend = $DB->to_array();
$Cache->cache_value('recommend',$Recommend,1209600);
$Cache->cache_value('recommend', $Recommend, 1209600);
$Recommend_artists = Artists::get_artists($DB->collect('GroupID'));
$Cache->cache_value('recommend_artists',$Recommend_artists,1209600);
$Cache->cache_value('recommend_artists', $Recommend_artists, 1209600);
}
if (count($Recommend) >= 4) {
@ -393,7 +408,7 @@
<div class="box" id="recommended">
<div class="head colhead_dark">
<strong>Latest Vanity House additions</strong>
<a href="#" onclick="$('#vanityhouse').toggle(); this.innerHTML=(this.innerHTML=='Hide'?'Show':'Hide'); return false;" class="brackets">Show</a>
<a href="#" onclick="$('#vanityhouse').toggle(); this.innerHTML = (this.innerHTML == 'Hide' ? 'Show' : 'Hide'); return false;" class="brackets">Show</a>
</div>
<table class="torrent_table hidden" id="vanityhouse">
@ -446,14 +461,14 @@
<div id="newsbody<?=$NewsID?>" class="pad"><?=$Text->full_format($Body)?></div>
</div>
<?
if (++$Count > ($NewsCount-1)) {
if (++$Count > ($NewsCount - 1)) {
break;
}
}
?>
<div id="more_news" class="box">
<div class="head">
<em><span><a href="#" onclick="news_ajax(event, 3, <?=$NewsCount?>, <?= check_perms('admin_manage_news') ? 1 : 0; ?>); return false;">Click to load more news<noscript> (requires Javascript)</noscript></a>. </span>To browse old news posts, <a href="forums.php?action=viewforum&amp;forumid=19">click here</a>.</em>
<em><span><a href="#" onclick="news_ajax(event, 3, <?=$NewsCount?>, <?= check_perms('admin_manage_news') ? 1 : 0; ?>); return false;">Click to load more news<noscript> (requires JavaScript)</noscript></a>.</span> To browse old news posts, <a href="forums.php?action=viewforum&amp;forumid=19">click here</a>.</em>
</div>
</div>
</div>

View File

@ -1,4 +1,4 @@
<? View::show_header(); ?>
<div class="poetry">You've stumbled upon a door where your mind is the key. There are none who will lend you guidance; these trials are yours to conquer alone. Entering here will take more than mere logic and strategy, but the criteria are just as hidden as what they reveal. Find yourself, and you will find the very thing hidden behind this page. Beyond here is something like a utopia&mdash;beyond here is What.CD.</div>
<div class="poetry">You've stumbled upon a door where your mind is the key. There are none who will lend you guidance; these trials are yours to conquer alone. Entering here will take more than mere logic and strategy, but the criteria are just as hidden as what they reveal. Find yourself, and you will find the very thing hidden behind this page. Beyond here is something like a utopia&#8202;&mdash;&#8202;beyond here is What.CD.</div>
<span class="center">This is a mirage.</span>
<? View::show_footer(); ?>

View File

@ -717,7 +717,7 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => '[rule]4.1.4[/rule]. Release descriptions for applications must contain good information about the application. You should either have a small description of the program (either taken from its web site or from an NFO file) or a link to the information -- but ideally both. Torrents missing this information will be deleted when reported.
'pm' => '[rule]4.1.4[/rule]. Release descriptions for applications must contain good information about the application. You should either have a small description of the program (either taken from its web site or from an NFO file) or a link to the information&#8202;&mdash;&#8202;but ideally both. Torrents missing this information will be deleted when reported.
Your torrent was reported because it lacked adequate release information.'
)
),

View File

@ -262,7 +262,7 @@
</select>
<input type="text" id="tags" name="tags" size="45" value="<?=(!empty($Tags) ? display_str($Tags) : '')?>" />
<br />
Tags should be comma-separated, and you should use a period (".") to separate words inside a tag &mdash; e.g. "<strong class="important_text_alt">hip.hop</strong>".
Tags should be comma-separated, and you should use a period (".") to separate words inside a tag&#8202;&mdash;&#8202;e.g. "<strong class="important_text_alt">hip.hop</strong>".
<br /><br />
There is a list of official tags to the left of the text box. Please use these tags instead of "unofficial" tags (e.g. use the official "<strong class="important_text_alt">drum.and.bass</strong>" tag, instead of an unofficial "<strong class="important_text">dnb</strong>" tag.).
</td>

View File

@ -654,9 +654,9 @@
</td>
<td>
<? if ($IsFilled) { ?>
<a href="user.php?id=<?=$FillerID?>"><?=$FillerName?></a>
<a href="user.php?id=<?=$FillerID?>"><?=$FillerName?></a>
<? } else { ?>
--
&mdash;
<? } ?>
</td>
<td>

View File

@ -174,7 +174,7 @@
$UserIDs = $DB->to_array();
foreach ($UserIDs as $User) {
list($VoterID) = $User;
Misc::send_pm($VoterID, 0, "The request \"$FullName\" has been filled", 'One of your requests &mdash; [url=https://'.SSL_SITE_URL.'/requests.php?action=view&amp;id='.$RequestID.']'.$FullName.'[/url] &mdash; has been filled. You can view it here: [url]https://'.SSL_SITE_URL.'/torrents.php?torrentid='.$TorrentID.'[/url]');
Misc::send_pm($VoterID, 0, "The request \"$FullName\" has been filled", 'One of your requests&#8202;&mdash;&#8202;[url=https://'.SSL_SITE_URL.'/requests.php?action=view&amp;id='.$RequestID.']'.$FullName.'[/url]&#8202;&mdash;&#8202;has been filled. You can view it here: [url]https://'.SSL_SITE_URL.'/torrents.php?torrentid='.$TorrentID.'[/url]');
}
$RequestVotes = Requests::get_votes_array($RequestID);

View File

@ -25,7 +25,7 @@
<li>Your required ratio represents the minimum ratio you must maintain to avoid ratio watch. You can view your required ratio in the site header after the word &#39;required,&#39; or in the &#39;stats&#39; section of your user profile.
</li>
<li>Your required ratio is unique; each person&#39;s required ratio is calculated for their account specifically.</li>
<li>Your required ratio is calculated using (1) the total amount of data you&#39;ve downloaded and (2) the total number of torrents you&#39;re seeding. The seeding total is not limited to snatched torrents (completed downloads)&mdash;the total includes, but is not limited to, your uploaded torrents.
<li>Your required ratio is calculated using (1) the total amount of data you&#39;ve downloaded and (2) the total number of torrents you&#39;re seeding. The seeding total is not limited to snatched torrents (completed downloads)&#8202;&mdash;&#8202;the total includes, but is not limited to, your uploaded torrents.
</li>
<li>The required ratio system lowers your required ratio when you seed a greater number of torrents. The more torrents you seed, the lower your required ratio will be. The lower your required ratio is, the less likely it is that you&#39;ll enter ratio watch.
</li>

View File

@ -21,7 +21,7 @@
<strong>All users must have an equal chance to fill a request.</strong> Trading upload credit is not allowed. Abusing the request system to exchange favors for other users is not tolerated. That includes making specific requests for certain users (whether explicitly named or not). Making requests for releases, and then unfilling so that one particular user can fill the request is not allowed. If reported, both the requester and user filling the request will receive a warning and lose the request bounty.
</li>
<li>
<strong>No manipulation of the requester for bounty.</strong> The bounty is a reward for helping other users&mdash;it should not be a ransom. Any user who refuses to fill a request unless the bounty is increased will face harsh punishment.
<strong>No manipulation of the requester for bounty.</strong> The bounty is a reward for helping other users&#8202;&mdash;&#8202;it should not be a ransom. Any user who refuses to fill a request unless the bounty is increased will face harsh punishment.
</li>
</ul>
</div>

View File

@ -349,7 +349,7 @@
<li id="r2.3.15"><a href="#h2.3"><strong>&uarr;_</strong></a> <a href="#r2.3.15">2.3.15.</a> <strong>Multiple-disc torrents cannot have tracks with the same numbers in one directory.</strong> You may place all the tracks for disc one in one directory and all the tracks for disc two in another directory. If you prefer to use one directory for all the audio files, you must use successive numbering. For example, disc one has 15 tracks and disc two has 20 tracks. You may either number tracks in disc one as #01-#15 and those of disc two as #16-#35 in the same directory, or you may add a disc number before the track numbers such that the numbers are #1 06 for Disc One Track 06, and #2 03 for Disc 2 Track 03, and so forth.</li>
<li id="r2.3.16"><a href="#h2.3"><strong>&uarr;_</strong></a> <a href="#r2.3.16">2.3.16.</a> <strong>Properly tag your music files.</strong>
<ul>
<li id="r2.3.16.1"><a href="#r2.3.16"><strong>&uarr;_</strong></a> <a href="#r2.3.16.1">2.3.16.1.</a>Certain meta tags (e.g., ID3, Vorbis) are required on all music uploads. Make sure to use the proper format tags for your files (e.g., no ID3 tags for FLAC&mdash;see <a href="#r2.2.10.8">2.2.10.8</a>). ID3v2 tags for files are highly recommended over ID3v1.</li>
<li id="r2.3.16.1"><a href="#r2.3.16"><strong>&uarr;_</strong></a> <a href="#r2.3.16.1">2.3.16.1.</a>Certain meta tags (e.g., ID3, Vorbis) are required on all music uploads. Make sure to use the proper format tags for your files (e.g., no ID3 tags for FLAC&#8202;&mdash;&#8202;see <a href="#r2.2.10.8">2.2.10.8</a>). ID3v2 tags for files are highly recommended over ID3v1.</li>
<li id="r2.3.16.2"><a href="#r2.3.16"><strong>&uarr;_</strong></a> <a href="#r2.3.16.2">2.3.16.2.</a>ID3 tags are recommended for AC3 torrents, but are not mandatory because the format does not natively support file metadata tagging (for AC3, the file names become the vehicle for correctly labeling media files). Because of this lack of support, the Album and Artist information must be included in the torrent folder for AC3 and DTS files. In addition, the Track Number and Track Title information must be included in the file names for AC3 and DTS files; for various artists compilations, the Track Artist must be included in the file names as well. ensuring that they also satisfy <a href="#r2.3.14">2.3.14.</a></li>
<li id="r2.3.16.3"><a href="#r2.3.16"><strong>&uarr;_</strong></a> <a href="#r2.3.16.3">2.3.16.3.</a>Torrents uploaded with both good ID3v1 tags and blank ID3v2 tags (a dual set of tags) are trumpable by torrents with either just good ID3v1 tags or good ID3v2 tags (a single set of tags). See <a href="wiki.php?action=article&amp;id=170">this wiki</a> for more information on ID3 tags.</li>
<li id="r2.3.16.4"><a href="#r2.3.16"><strong>&uarr;_</strong></a> <a href="#r2.3.16.4">2.3.16.4.</a>If you upload an album missing one or more of the required tags, then another user may add the tags, re-upload, and report your torrent for deletion. The required tags are:
@ -594,7 +594,7 @@
</li>
<li id="r4.1.2"><a href="#h4.1"><strong>&uarr;_</strong></a> <a href="#r4.1.2">4.1.2.</a> <strong>All applications must come with a crack, keygen, or other method of ensuring that downloaders can install them easily.</strong> App torrents with keygens, cracks, or patches that do not work or torrents missing clear installation instructions will be deleted if reported. No exceptions.</li>
<li id="r4.1.3"><a href="#h4.1"><strong>&uarr;_</strong></a> <a href="#r4.1.3">4.1.3.</a> <strong>App releases must not be freely available tools.</strong> Application releases cannot be freely downloaded anywhere from any official source. Nor may you upload open source applications where the source code is available for free. Closed or shareware installers like Crossover Office are allowed. Note: If all official sources stop hosting and remove a freely available application and its source code from their site(s) due to varying reasons (e.g., legal concerns, dead development, etc.), the application ceases to be freely available. You may then upload it in that case.</li>
<li id="r4.1.4"><a href="#h4.1"><strong>&uarr;_</strong></a> <a href="#r4.1.4">4.1.4.</a> <strong>Release descriptions for applications must contain good information about the application.</strong> You should either have a small description of the program (either taken from its web site or from an NFO file) or a link to the information -- but ideally both. Torrents missing this information will be deleted when reported.</li>
<li id="r4.1.4"><a href="#h4.1"><strong>&uarr;_</strong></a> <a href="#r4.1.4">4.1.4.</a> <strong>Release descriptions for applications must contain good information about the application.</strong> You should either have a small description of the program (either taken from its web site or from an NFO file) or a link to the information&#8202;&mdash;&#8202;but ideally both. Torrents missing this information will be deleted when reported.</li>
<li id="r4.1.5"><a href="#h4.1"><strong>&uarr;_</strong></a> <a href="#r4.1.5">4.1.5.</a> <strong>The torrent title must have a descriptive name.</strong> The torrent title should at least include the application name and release version. Optionally, you may include additional labels for operating system and method of circumvention (e.g., crack, patch, keygen, or serial). For example, "AcrylicApps Wallet v3.0.1.493 MacOSX Cracked."</li>
<li id="r4.1.6"><a href="#h4.1"><strong>&uarr;_</strong></a> <a href="#r4.1.6">4.1.6.</a> <strong>Use relevant tags for your torrent.</strong> Add all applicable default <a href="?p=tag">Gazelle tags</a> to help downloaders find your torrent. The default tags are apps.mac for Mac applications, apps.windows for Windows applications, and apps.sound for audio applications. You may add additional tags if the default ones do not apply (such as apps.linux).</li>
<li id="r4.1.7"><a href="#h4.1"><strong>&uarr;_</strong></a> <a href="#r4.1.7">4.1.7.</a> <strong>Games of any kind are prohibited (see <a href="#r1.2.5">1.2.5</a>).</strong> </li>

View File

@ -193,7 +193,9 @@
case 'label_aliases':
include('managers/label_aliases.php');
break;
case 'change_log':
include('managers/change_log.php');
break;
case 'permissions':
if (!check_perms('admin_manage_permissions')) {
error(403);

View File

@ -0,0 +1,93 @@
<?
$PerPage = POSTS_PER_PAGE;
list($Page, $Limit) = Format::page_limit($PerPage);
$CanEdit = check_perms('users_mod');
if ($CanEdit && isset($_POST['perform'])) {
authorize();
if ($_POST['perform'] == 'add' && !empty($_POST['message'])) {
$Message = db_string($_POST['message']);
$Author = db_string($_POST['author']);
$DB->query("
INSERT INTO changelog (Message, Author, Time)
VALUES ('$Message', '$Author', NOW())");
}
if ($_POST['perform'] == 'remove' && !empty($_POST['change_id'])) {
$ID = (int) $_POST['change_id'];
$DB->query("
DELETE FROM changelog
WHERE ID = '$ID'");
}
}
$DB->query("
SELECT
SQL_CALC_FOUND_ROWS
ID,
Message,
Author,
Date(Time) as Time
FROM changelog
ORDER BY ID DESC
LIMIT $Limit");
$ChangeLog = $DB->to_array();
$DB->query('SELECT FOUND_ROWS()');
list($NumResults) = $DB->next_record();
View::show_header('Gazelle Change Log');
?>
<div class="thin">
<h2>Gazelle Change Log</h2>
<div class="linkbox">
<?
$Pages = Format::get_pages($Page, $NumResults, $PerPage, 11);
echo "\t\t$Pages\n";
?>
</div>
<div class="main_column">
<br />
<? if ($CanEdit) { ?>
<form method="post">
<div class="box">
<div class="head">
Manually submit a new change to the change log
</div>
<div class="pad">
<input type="hidden" name="perform" value="add" />
<input type="hidden" name="auth" value="<?=$LoggedUser['AuthKey']?>" />
<label><strong>Commit message: </strong><input type="text" name="message" size="50" value="" /></label>
<br /><br />
<label><strong>Author: </strong><input type="text" name="author" value="<?=$LoggedUser['Username']?>" /></label>
<br /><br />
<input type="submit" value="Submit" />
</div>
</div>
</form>
<br />
<? }
foreach ($ChangeLog as $Change) { ?>
<div class="box">
<div class="head">
<span style="float: left;"><?=$Change['Time']?> by <?=$Change['Author']?></span>
<? if ($CanEdit) { ?>
<span style="float: right;">
<form id="delete_<?=$Change['ID']?>" method="POST">
<input type="hidden" name="perform" value="remove" />
<input type="hidden" name="auth" value="<?=$LoggedUser['AuthKey']?>" />
<input type="hidden" name="change_id" value="<?=$Change['ID']?>" />
</form>
<a href="#" onclick="$('#delete_<?=$Change['ID']?>').raw().submit(); return false;" class="brackets">Delete</a>
</span>
<? } ?>
<br />
</div>
<div class="pad">
<?=$Change['Message']?>
</div>
</div>
<? } ?>
</div>
</div>
<? View::show_footer(); ?>

View File

@ -13,7 +13,7 @@
shell_exec('unzip GeoLiteCity-latest.zip');
shell_exec('rm GeoLiteCity-latest.zip');
if (($Locations = file("GeoLiteCity_".date('Ym')."07/GeoLiteCity-Location.csv", FILE_IGNORE_NEW_LINES)) === false) {
if (($Locations = file("GeoLiteCity_".date('Ym')."04/GeoLiteCity-Location.csv", FILE_IGNORE_NEW_LINES)) === false) {
error('Download or extraction of maxmind database failed');
}
array_shift($Locations);
@ -32,7 +32,7 @@
echo 'There are '.count($CountryIDs).' CountryIDs';
echo '<br />';
if (($Blocks = file("GeoLiteCity_".date('Ym')."07/GeoLiteCity-Blocks.csv", FILE_IGNORE_NEW_LINES)) === false) {
if (($Blocks = file("GeoLiteCity_".date('Ym')."04/GeoLiteCity-Blocks.csv", FILE_IGNORE_NEW_LINES)) === false) {
echo 'Error';
}
array_shift($Blocks);

View File

@ -32,8 +32,9 @@
<tr><td><a href="tools.php?action=tag_aliases">Tag aliases</a></td></tr>
<? } if (check_perms('users_mod') || $LoggedUser['ExtraClasses'][DELTA_TEAM]) { ?>
<tr><td><a href="tools.php?action=label_aliases">Label aliases</a></td></tr>
<? } if (check_perms('users_mod')) { ?>
<tr><td><a href="tools.php?action=change_log">Change Log</a></td></tr>
<? } ?>
</table>
</div>
<div class="permission_container">

View File

@ -118,7 +118,7 @@
<td class="label"><strong>One of these artists</strong></td>
<td>
<textarea name="artists<?=$i?>" style="width: 100%;" rows="5"><?=display_str($N['Artists'])?></textarea>
<p class="min_padding">Comma-separated list &mdash; e.g. <em>Pink Floyd, Led Zeppelin, Neil Young</em></p>
<p class="min_padding">Comma-separated list&#8202;&mdash;&#8202;e.g. <em>Pink Floyd, Led Zeppelin, Neil Young</em></p>
<input type="checkbox" name="excludeva<?=$i?>" id="excludeva_<?=$N['ID']?>"<? if ($N['ExcludeVA'] == '1') { echo ' checked="checked"';} ?> />
<label for="excludeva_<?=$N['ID']?>">Exclude Various Artists releases</label>
</td>
@ -134,14 +134,14 @@
<td class="label"><strong>At least one of these tags</strong></td>
<td>
<textarea name="tags<?=$i?>" style="width: 100%;" rows="2"><?=display_str($N['Tags'])?></textarea>
<p class="min_padding">Comma-separated list &mdash; e.g. <em>rock, jazz, pop</em></p>
<p class="min_padding">Comma-separated list&#8202;&mdash;&#8202;e.g. <em>rock, jazz, pop</em></p>
</td>
</tr>
<tr>
<td class="label"><strong>None of these tags</strong></td>
<td>
<textarea name="nottags<?=$i?>" style="width: 100%;" rows="2"><?=display_str($N['NotTags'])?></textarea>
<p class="min_padding">Comma-separated list &mdash; e.g. <em>rock, jazz, pop</em></p>
<p class="min_padding">Comma-separated list&#8202;&mdash;&#8202;e.g. <em>rock, jazz, pop</em></p>
</td>
</tr>
<tr>

View File

@ -1,55 +1,55 @@
function news_ajax(event, count, offset, privileged){
/*
function news_ajax(event, count, offset, privileged) {
/*
* event - The click event, passed to hide the element when necessary.
* count - Number of news items to fetch.
* offset - Database offset for fetching news.
* privilege - Gotta check your privilege (used to show/hide [Edit] on news).
*
*
* This function isn't wrapped in jQuery, be sure we use it
* instead of the mix-mashed Gazelle $ function.
*/
var $ = jQuery.noConflict();
//Unbind onclick to avoid spamclicks.
// Unbind onclick to avoid spamclicks.
$(event.target).attr('onclick', 'return false;');
//Fetch news data, check for errors etc.
// Fetch news data, check for errors etc.
$.get("ajax.php", {
action: "news_ajax",
count: count,
action: "news_ajax",
count: count,
offset: offset
})
.done(function(data) {
var response = $.parseJSON(data.response);
if (typeof data == 'undefined' || data == null || data.status != "success" || typeof response == 'undefined' || response == null){
console.log("ERR ajax_news("+(new Error).lineNumber+"): Unknown data or failure returned.");
//Return to original paremeters, no news were added.
$(event.target).attr('onclick', 'news_ajax(event, ' + count + ', '+ offset +', '+privileged+'); return false;');
if (typeof data == 'undefined' || data == null || data.status != "success" || typeof response == 'undefined' || response == null) {
console.log("ERR ajax_news(" + (new Error).lineNumber + "): Unknown data or failure returned.");
// Return to original paremeters, no news were added.
$(event.target).attr('onclick', 'news_ajax(event, ' + count + ', ' + offset + ', ' + privileged + '); return false;');
} else {
if(response.length == 0){
if (response.length == 0) {
$(event.target).parent().remove();
} else {
var targetClass = $('#more_news').prev().attr('class');
$.each(response, function(){
//Create a new element, insert the news.
$.each(response, function() {
// Create a new element, insert the news.
$('#more_news').before($('<div/>', {
id: 'news'+this[0],
id: 'news' + this[0],
Class: targetClass
}));
//I'm so happy with this condition statement.
if(privileged){
$('#news'+this[0]).append('<div class="head"><strong>'+this[1]+'</strong> '+this[2]+' - <a href="tools.php?action=editnews&amp;id='+this[0]+'" class="brackets">Edit</a></div>');
// I'm so happy with this condition statement.
if (privileged) {
$('#news' + this[0]).append('<div class="head"><strong>' + this[1] + '</strong> ' + this[2] + ' - <a href="tools.php?action=editnews&amp;id=' + this[0] + '" class="brackets">Edit</a></div>');
} else {
$('#news'+this[0]).append('<div class="head"><strong>'+this[1]+'</strong> '+this[2]+'</div>');
$('#news' + this[0]).append('<div class="head"><strong>' + this[1] + '</strong> ' + this[2] + '</div>');
}
$('#news'+this[0]).append('<div class="pad">'+this[3]+'</div>');
$('#news' + this[0]).append('<div class="pad">' + this[3] + '</div>');
});
//Update the onclick parameters to appropriate offset.
$(event.target).attr('onclick', 'news_ajax(event, ' + count + ', '+ (count+offset) +', '+privileged+'); return false;');
// Update the onclick parameters to appropriate offset.
$(event.target).attr('onclick', 'news_ajax(event, ' + count + ', ' + (count + offset) + ', ' + privileged + '); return false;');
}
}
})
.fail(function() {
console.log("WARN ajax_news("+(new Error).lineNumber+"): Ajax get failed.");
//Return to original paremeters, no news were added.
$(event.target).attr('onclick', 'news_ajax(event, ' + count + ', '+ offset +', '+privileged+'); return false;');
console.log("WARN ajax_news(" + (new Error).lineNumber + "): AJAX get failed.");
// Return to original paremeters, no news were added.
$(event.target).attr('onclick', 'news_ajax(event, ' + count + ', ' + offset + ', ' + privileged + '); return false;');
});
}
}