Merge pull request #379 from DakuTree/patch-2
Misc tweaks/fixes (fixes/closes issue 17 & 323)
This commit is contained in:
commit
f4f94e6273
@ -91,7 +91,7 @@ class BaseThemelet {
|
|||||||
private function build_paginator($current_page, $total_pages, $base_url, $query) {
|
private function build_paginator($current_page, $total_pages, $base_url, $query) {
|
||||||
$next = $current_page + 1;
|
$next = $current_page + 1;
|
||||||
$prev = $current_page - 1;
|
$prev = $current_page - 1;
|
||||||
$rand = rand(1, $total_pages);
|
$rand = mt_rand(1, $total_pages);
|
||||||
|
|
||||||
$at_start = ($current_page <= 1 || $total_pages <= 1);
|
$at_start = ($current_page <= 1 || $total_pages <= 1);
|
||||||
$at_end = ($current_page >= $total_pages);
|
$at_end = ($current_page >= $total_pages);
|
||||||
|
@ -45,7 +45,7 @@ class Artists extends Extension {
|
|||||||
|
|
||||||
public function onSearchTermParse(SearchTermParseEvent $event) {
|
public function onSearchTermParse(SearchTermParseEvent $event) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
if(preg_match("/^author[=|:](.*)$/", $event->term, $matches)) {
|
if(preg_match("/^author[=|:](.*)$/i", $event->term, $matches)) {
|
||||||
$char = $matches[1];
|
$char = $matches[1];
|
||||||
$event->add_querylet(new Querylet("Author = :author_char", array("author_char"=>$char)));
|
$event->add_querylet(new Querylet("Author = :author_char", array("author_char"=>$char)));
|
||||||
}
|
}
|
||||||
|
@ -262,7 +262,7 @@ class CommentList extends Extension {
|
|||||||
|
|
||||||
public function onSearchTermParse(SearchTermParseEvent $event) {
|
public function onSearchTermParse(SearchTermParseEvent $event) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
if(preg_match("/^comments([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)$/", $event->term, $matches)) {
|
if(preg_match("/^comments([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)$/i", $event->term, $matches)) {
|
||||||
$cmp = ltrim($matches[1], ":") ?: "=";
|
$cmp = ltrim($matches[1], ":") ?: "=";
|
||||||
$comments = $matches[2];
|
$comments = $matches[2];
|
||||||
$event->add_querylet(new Querylet("images.id IN (SELECT DISTINCT image_id FROM comments GROUP BY image_id HAVING count(image_id) $cmp $comments)"));
|
$event->add_querylet(new Querylet("images.id IN (SELECT DISTINCT image_id FROM comments GROUP BY image_id HAVING count(image_id) $cmp $comments)"));
|
||||||
|
@ -117,7 +117,7 @@ class Favorites extends Extension {
|
|||||||
|
|
||||||
public function onSearchTermParse(SearchTermParseEvent $event) {
|
public function onSearchTermParse(SearchTermParseEvent $event) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
if(preg_match("/^favorites([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)$/", $event->term, $matches)) {
|
if(preg_match("/^favorites([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)$/i", $event->term, $matches)) {
|
||||||
$cmp = ltrim($matches[1], ":") ?: "=";
|
$cmp = ltrim($matches[1], ":") ?: "=";
|
||||||
$favorites = $matches[2];
|
$favorites = $matches[2];
|
||||||
$event->add_querylet(new Querylet("images.id IN (SELECT id FROM images WHERE favorites $cmp $favorites)"));
|
$event->add_querylet(new Querylet("images.id IN (SELECT id FROM images WHERE favorites $cmp $favorites)"));
|
||||||
|
@ -109,6 +109,7 @@
|
|||||||
* <li>downvoted_by=Username -- search for a user's dislikes
|
* <li>downvoted_by=Username -- search for a user's dislikes
|
||||||
* <li>upvoted_by_id=UserID -- search for a user's likes by user ID
|
* <li>upvoted_by_id=UserID -- search for a user's likes by user ID
|
||||||
* <li>downvoted_by_id=UserID -- search for a user's dislikes by user ID
|
* <li>downvoted_by_id=UserID -- search for a user's dislikes by user ID
|
||||||
|
* <li>order=score_(ASC, DESC) -- find all images sorted from by score
|
||||||
* </ul>
|
* </ul>
|
||||||
* <li>Image Rating
|
* <li>Image Rating
|
||||||
* <ul>
|
* <ul>
|
||||||
@ -300,12 +301,12 @@ class Index extends Extension {
|
|||||||
public function onSearchTermParse(SearchTermParseEvent $event) {
|
public function onSearchTermParse(SearchTermParseEvent $event) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
// check for tags first as tag based searches are more common.
|
// check for tags first as tag based searches are more common.
|
||||||
if(preg_match("/^tags([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)$/", $event->term, $matches)) {
|
if(preg_match("/^tags([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)$/i", $event->term, $matches)) {
|
||||||
$cmp = ltrim($matches[1], ":") ?: "=";
|
$cmp = ltrim($matches[1], ":") ?: "=";
|
||||||
$tags = $matches[2];
|
$tags = $matches[2];
|
||||||
$event->add_querylet(new Querylet('images.id IN (SELECT DISTINCT image_id FROM image_tags GROUP BY image_id HAVING count(image_id) '.$cmp.' '.$tags.')'));
|
$event->add_querylet(new Querylet('images.id IN (SELECT DISTINCT image_id FROM image_tags GROUP BY image_id HAVING count(image_id) '.$cmp.' '.$tags.')'));
|
||||||
}
|
}
|
||||||
else if(preg_match("/^ratio([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+):(\d+)$/", $event->term, $matches)) {
|
else if(preg_match("/^ratio([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+):(\d+)$/i", $event->term, $matches)) {
|
||||||
$cmp = preg_replace('/^:/', '=', $matches[1]);
|
$cmp = preg_replace('/^:/', '=', $matches[1]);
|
||||||
$args = array("width{$this->stpen}"=>int_escape($matches[2]), "height{$this->stpen}"=>int_escape($matches[3]));
|
$args = array("width{$this->stpen}"=>int_escape($matches[2]), "height{$this->stpen}"=>int_escape($matches[3]));
|
||||||
$event->add_querylet(new Querylet("width / height $cmp :width{$this->stpen} / :height{$this->stpen}", $args));
|
$event->add_querylet(new Querylet("width / height $cmp :width{$this->stpen} / :height{$this->stpen}", $args));
|
||||||
@ -331,28 +332,28 @@ class Index extends Extension {
|
|||||||
else if(preg_match("/^(source)[=|:](.*)$/i", $event->term, $matches)) {
|
else if(preg_match("/^(source)[=|:](.*)$/i", $event->term, $matches)) {
|
||||||
$source = strtolower($matches[2]);
|
$source = strtolower($matches[2]);
|
||||||
|
|
||||||
if(preg_match("/^(any|none)$/", $source)){
|
if(preg_match("/^(any|none)$/i", $source)){
|
||||||
$not = ($source == "any" ? "NOT" : "");
|
$not = ($source == "any" ? "NOT" : "");
|
||||||
$event->add_querylet(new Querylet("images.source IS $not NULL"));
|
$event->add_querylet(new Querylet("images.source IS $not NULL"));
|
||||||
}else{
|
}else{
|
||||||
$event->add_querylet(new Querylet('images.source LIKE :src', array("src"=>"%$source%")));
|
$event->add_querylet(new Querylet('images.source LIKE :src', array("src"=>"%$source%")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(preg_match("/^posted([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])([0-9-]*)$/", $event->term, $matches)) {
|
else if(preg_match("/^posted([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])([0-9-]*)$/i", $event->term, $matches)) {
|
||||||
$cmp = ltrim($matches[1], ":") ?: "=";
|
$cmp = ltrim($matches[1], ":") ?: "=";
|
||||||
$val = $matches[2];
|
$val = $matches[2];
|
||||||
$event->add_querylet(new Querylet("images.posted $cmp :posted{$this->stpen}", array("posted{$this->stpen}"=>$val)));
|
$event->add_querylet(new Querylet("images.posted $cmp :posted{$this->stpen}", array("posted{$this->stpen}"=>$val)));
|
||||||
}
|
}
|
||||||
else if(preg_match("/^size([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)x(\d+)$/", $event->term, $matches)) {
|
else if(preg_match("/^size([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)x(\d+)$/i", $event->term, $matches)) {
|
||||||
$cmp = ltrim($matches[1], ":") ?: "=";
|
$cmp = ltrim($matches[1], ":") ?: "=";
|
||||||
$args = array("width{$this->stpen}"=>int_escape($matches[2]), "height{$this->stpen}"=>int_escape($matches[3]));
|
$args = array("width{$this->stpen}"=>int_escape($matches[2]), "height{$this->stpen}"=>int_escape($matches[3]));
|
||||||
$event->add_querylet(new Querylet("width $cmp :width{$this->stpen} AND height $cmp :height{$this->stpen}", $args));
|
$event->add_querylet(new Querylet("width $cmp :width{$this->stpen} AND height $cmp :height{$this->stpen}", $args));
|
||||||
}
|
}
|
||||||
else if(preg_match("/^width([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)$/", $event->term, $matches)) {
|
else if(preg_match("/^width([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)$/i", $event->term, $matches)) {
|
||||||
$cmp = ltrim($matches[1], ":") ?: "=";
|
$cmp = ltrim($matches[1], ":") ?: "=";
|
||||||
$event->add_querylet(new Querylet("width $cmp :width{$this->stpen}", array("width{$this->stpen}"=>int_escape($matches[2]))));
|
$event->add_querylet(new Querylet("width $cmp :width{$this->stpen}", array("width{$this->stpen}"=>int_escape($matches[2]))));
|
||||||
}
|
}
|
||||||
else if(preg_match("/^height([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)$/", $event->term, $matches)) {
|
else if(preg_match("/^height([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)$/i", $event->term, $matches)) {
|
||||||
$cmp = ltrim($matches[1], ":") ?: "=";
|
$cmp = ltrim($matches[1], ":") ?: "=";
|
||||||
$event->add_querylet(new Querylet("height $cmp :height{$this->stpen}",array("height{$this->stpen}"=>int_escape($matches[2]))));
|
$event->add_querylet(new Querylet("height $cmp :height{$this->stpen}",array("height{$this->stpen}"=>int_escape($matches[2]))));
|
||||||
}
|
}
|
||||||
|
@ -214,7 +214,7 @@ class Notes extends Extension {
|
|||||||
$notes = int_escape($matches[1]);
|
$notes = int_escape($matches[1]);
|
||||||
$event->add_querylet(new Querylet("images.id IN (SELECT image_id FROM notes WHERE note = $notes)"));
|
$event->add_querylet(new Querylet("images.id IN (SELECT image_id FROM notes WHERE note = $notes)"));
|
||||||
}
|
}
|
||||||
else if(preg_match("/^notes([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)%/", $event->term, $matches)) {
|
else if(preg_match("/^notes([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(\d+)%/i", $event->term, $matches)) {
|
||||||
$cmp = ltrim($matches[1], ":") ?: "=";
|
$cmp = ltrim($matches[1], ":") ?: "=";
|
||||||
$notes = $matches[2];
|
$notes = $matches[2];
|
||||||
$event->add_querylet(new Querylet("images.id IN (SELECT id FROM images WHERE notes $cmp $notes)"));
|
$event->add_querylet(new Querylet("images.id IN (SELECT id FROM images WHERE notes $cmp $notes)"));
|
||||||
|
@ -63,7 +63,7 @@ class NumericScore extends Extension {
|
|||||||
}
|
}
|
||||||
die($html);
|
die($html);
|
||||||
}
|
}
|
||||||
if($event->page_matches("numeric_score_vote") && $user->check_auth_token()) {
|
else if($event->page_matches("numeric_score_vote") && $user->check_auth_token()) {
|
||||||
if(!$user->is_anonymous()) {
|
if(!$user->is_anonymous()) {
|
||||||
$image_id = int_escape($_POST['image_id']);
|
$image_id = int_escape($_POST['image_id']);
|
||||||
$char = $_POST['vote'];
|
$char = $_POST['vote'];
|
||||||
@ -76,7 +76,7 @@ class NumericScore extends Extension {
|
|||||||
$page->set_redirect(make_link("post/view/$image_id"));
|
$page->set_redirect(make_link("post/view/$image_id"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($event->page_matches("numeric_score/remove_votes_on") && $user->check_auth_token()) {
|
else if($event->page_matches("numeric_score/remove_votes_on") && $user->check_auth_token()) {
|
||||||
if($user->can("edit_other_vote")) {
|
if($user->can("edit_other_vote")) {
|
||||||
$image_id = int_escape($_POST['image_id']);
|
$image_id = int_escape($_POST['image_id']);
|
||||||
$database->execute(
|
$database->execute(
|
||||||
@ -89,83 +89,62 @@ class NumericScore extends Extension {
|
|||||||
$page->set_redirect(make_link("post/view/$image_id"));
|
$page->set_redirect(make_link("post/view/$image_id"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($event->page_matches("numeric_score/remove_votes_by") && $user->check_auth_token()) {
|
else if($event->page_matches("numeric_score/remove_votes_by") && $user->check_auth_token()) {
|
||||||
if($user->can("edit_other_vote")) {
|
if($user->can("edit_other_vote")) {
|
||||||
$this->delete_votes_by(int_escape($_POST['user_id']));
|
$this->delete_votes_by(int_escape($_POST['user_id']));
|
||||||
$page->set_mode("redirect");
|
$page->set_mode("redirect");
|
||||||
$page->set_redirect(make_link());
|
$page->set_redirect(make_link());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($event->page_matches("popular_by_day") || $event->page_matches("popular_by_month") || $event->page_matches("popular_by_year")) {
|
else if($event->page_matches("popular_by_day") || $event->page_matches("popular_by_month") || $event->page_matches("popular_by_year")) {
|
||||||
$t_images = $config->get_int("index_images");
|
//FIXME: popular_by isn't linked from anywhere
|
||||||
|
list($day, $month, $year) = array(date("d"), date("m"), date("Y"));
|
||||||
|
|
||||||
//TODO: Add Popular_by_week.
|
if(!empty($_GET['day'])){
|
||||||
|
$D = (int) $_GET['day'];
|
||||||
|
if($D >= 1 && $D <= 31) $day = $D;
|
||||||
|
}
|
||||||
|
if(!empty($_GET['month'])){
|
||||||
|
$M = (int) $_GET['month'];
|
||||||
|
if($M >= 1 && $M <= 12) $month = $M;
|
||||||
|
}
|
||||||
|
if(!empty($_GET['year'])){
|
||||||
|
$Y = (int) $_GET['year'];
|
||||||
|
if($Y >= 1970 && $Y < 2100) $year = $Y;
|
||||||
|
}
|
||||||
|
|
||||||
//year
|
|
||||||
if(empty($_GET['year'])){
|
|
||||||
$year = date("Y");
|
|
||||||
}else{
|
|
||||||
$year = $_GET['year'];
|
|
||||||
}
|
|
||||||
//month
|
|
||||||
if(empty($_GET['month']) || int_escape($_GET['month']) > 12){
|
|
||||||
$month = date("m");
|
|
||||||
}else{
|
|
||||||
$month = $_GET['month'];
|
|
||||||
}
|
|
||||||
//day
|
|
||||||
if(empty($_GET['day']) || int_escape($_GET['day']) > 31){
|
|
||||||
$day = date("d");
|
|
||||||
}else{
|
|
||||||
$day = $_GET['day'];
|
|
||||||
}
|
|
||||||
$totaldate = $year."/".$month."/".$day;
|
$totaldate = $year."/".$month."/".$day;
|
||||||
|
|
||||||
$sql =
|
$sql = "SELECT id FROM images
|
||||||
"SELECT * FROM images
|
WHERE EXTRACT(YEAR FROM posted) = :year
|
||||||
WHERE EXTRACT(YEAR FROM posted) = :year
|
";
|
||||||
";
|
$args = array("limit" => $config->get_int("index_images"), "year" => $year);
|
||||||
|
|
||||||
$agrs = array("limit" => $t_images, "year" => $year);
|
|
||||||
|
|
||||||
if($event->page_matches("popular_by_day")){
|
if($event->page_matches("popular_by_day")){
|
||||||
$sql .=
|
$sql .=
|
||||||
"AND EXTRACT(MONTH FROM posted) = :month
|
"AND EXTRACT(MONTH FROM posted) = :month
|
||||||
AND EXTRACT(DAY FROM posted) = :day
|
AND EXTRACT(DAY FROM posted) = :day";
|
||||||
AND NOT numeric_score=0
|
|
||||||
";
|
|
||||||
//array_push doesn't seem to like using double arrows
|
|
||||||
//this requires us to instead create two arrays and merge
|
|
||||||
$sgra = array("month" => $month, "day" => $day);
|
|
||||||
$args = array_merge($agrs, $sgra);
|
|
||||||
|
|
||||||
|
$args = array_merge($args, array("month" => $month, "day" => $day));
|
||||||
$dte = array($totaldate, date("F jS, Y", (strtotime($totaldate))), "\\y\\e\\a\\r\\=Y\\&\\m\\o\\n\\t\\h\\=m\\&\\d\\a\\y\\=d", "day");
|
$dte = array($totaldate, date("F jS, Y", (strtotime($totaldate))), "\\y\\e\\a\\r\\=Y\\&\\m\\o\\n\\t\\h\\=m\\&\\d\\a\\y\\=d", "day");
|
||||||
}
|
}
|
||||||
if($event->page_matches("popular_by_month")){
|
else if($event->page_matches("popular_by_month")){
|
||||||
$sql .=
|
$sql .= "AND EXTRACT(MONTH FROM posted) = :month";
|
||||||
"AND EXTRACT(MONTH FROM posted) = :month
|
|
||||||
AND NOT numeric_score=0
|
|
||||||
";
|
|
||||||
$sgra = array("month" => $month);
|
|
||||||
$args = array_merge($agrs, $sgra);
|
|
||||||
|
|
||||||
$title = date("F Y", (strtotime($totaldate)));
|
$args = array_merge($args, array("month" => $month));
|
||||||
$dte = array($totaldate, $title, "\\y\\e\\a\\r\\=Y\\&\\m\\o\\n\\t\\h\\=m", "month");
|
$dte = array($totaldate, date("F Y", (strtotime($totaldate))), "\\y\\e\\a\\r\\=Y\\&\\m\\o\\n\\t\\h\\=m", "month");
|
||||||
}
|
}
|
||||||
if($event->page_matches("popular_by_year")){
|
else if($event->page_matches("popular_by_year")){
|
||||||
$sql .= "AND NOT numeric_score=0";
|
$dte = array($totaldate, $year, "\\y\\e\\a\\r\=Y", "year");
|
||||||
$dte = array($totaldate, $year, "\y\e\a\\r\=Y", "year");
|
|
||||||
$args = $agrs;
|
|
||||||
}
|
}
|
||||||
$sql .= " ORDER BY numeric_score DESC LIMIT :limit OFFSET 0";
|
$sql .= " AND NOT numeric_score=0 ORDER BY numeric_score DESC LIMIT :limit OFFSET 0";
|
||||||
|
|
||||||
//filter images by year/score != 0 > limit to max images on one page > order from highest to lowest score
|
//filter images by score != 0 + date > limit to max images on one page > order from highest to lowest score
|
||||||
$result = $database->get_all($sql, $args);
|
|
||||||
|
|
||||||
|
$result = $database->get_col($sql, $args);
|
||||||
$images = array();
|
$images = array();
|
||||||
foreach($result as $singleResult) {
|
foreach($result as $id) { $images[] = Image::by_id($id); }
|
||||||
$images[] = Image::by_id($singleResult["id"]);
|
|
||||||
}
|
|
||||||
$this->theme->view_popular($images, $dte);
|
$this->theme->view_popular($images, $dte);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -217,12 +196,12 @@ class NumericScore extends Extension {
|
|||||||
|
|
||||||
public function onSearchTermParse(SearchTermParseEvent $event) {
|
public function onSearchTermParse(SearchTermParseEvent $event) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
if(preg_match("/^score([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(-?\d+)$/", $event->term, $matches)) {
|
if(preg_match("/^score([:]?<|[:]?>|[:]?<=|[:]?>=|[:|=])(-?\d+)$/i", $event->term, $matches)) {
|
||||||
$cmp = ltrim($matches[1], ":") ?: "=";
|
$cmp = ltrim($matches[1], ":") ?: "=";
|
||||||
$score = $matches[2];
|
$score = $matches[2];
|
||||||
$event->add_querylet(new Querylet("numeric_score $cmp $score"));
|
$event->add_querylet(new Querylet("numeric_score $cmp $score"));
|
||||||
}
|
}
|
||||||
if(preg_match("/^upvoted_by[=|:](.*)$/", $event->term, $matches)) {
|
else if(preg_match("/^upvoted_by[=|:](.*)$/i", $event->term, $matches)) {
|
||||||
$duser = User::by_name($matches[1]);
|
$duser = User::by_name($matches[1]);
|
||||||
if(is_null($duser)) {
|
if(is_null($duser)) {
|
||||||
throw new SearchTermParseException(
|
throw new SearchTermParseException(
|
||||||
@ -232,7 +211,7 @@ class NumericScore extends Extension {
|
|||||||
"images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=1)",
|
"images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=1)",
|
||||||
array("ns_user_id"=>$duser->id)));
|
array("ns_user_id"=>$duser->id)));
|
||||||
}
|
}
|
||||||
if(preg_match("/^downvoted_by[=|:](.*)$/", $event->term, $matches)) {
|
else if(preg_match("/^downvoted_by[=|:](.*)$/i", $event->term, $matches)) {
|
||||||
$duser = User::by_name($matches[1]);
|
$duser = User::by_name($matches[1]);
|
||||||
if(is_null($duser)) {
|
if(is_null($duser)) {
|
||||||
throw new SearchTermParseException(
|
throw new SearchTermParseException(
|
||||||
@ -242,18 +221,25 @@ class NumericScore extends Extension {
|
|||||||
"images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=-1)",
|
"images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=-1)",
|
||||||
array("ns_user_id"=>$duser->id)));
|
array("ns_user_id"=>$duser->id)));
|
||||||
}
|
}
|
||||||
if(preg_match("/^upvoted_by_id[=|:](\d+)$/", $event->term, $matches)) {
|
else if(preg_match("/^upvoted_by_id[=|:](\d+)$/i", $event->term, $matches)) {
|
||||||
$iid = int_escape($matches[1]);
|
$iid = int_escape($matches[1]);
|
||||||
$event->add_querylet(new Querylet(
|
$event->add_querylet(new Querylet(
|
||||||
"images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=1)",
|
"images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=1)",
|
||||||
array("ns_user_id"=>$iid)));
|
array("ns_user_id"=>$iid)));
|
||||||
}
|
}
|
||||||
if(preg_match("/^downvoted_by_id[=|:](\d+)$/", $event->term, $matches)) {
|
else if(preg_match("/^downvoted_by_id[=|:](\d+)$/i", $event->term, $matches)) {
|
||||||
$iid = int_escape($matches[1]);
|
$iid = int_escape($matches[1]);
|
||||||
$event->add_querylet(new Querylet(
|
$event->add_querylet(new Querylet(
|
||||||
"images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=-1)",
|
"images.id in (SELECT image_id FROM numeric_score_votes WHERE user_id=:ns_user_id AND score=-1)",
|
||||||
array("ns_user_id"=>$iid)));
|
array("ns_user_id"=>$iid)));
|
||||||
}
|
}
|
||||||
|
else if(preg_match("/^order[=|:](numeric_)?(score)[_]?(desc|asc)?$/i", $event->term, $matches)){
|
||||||
|
global $order_sql;
|
||||||
|
$default_order_for_column = "DESC";
|
||||||
|
$sort = isset($matches[3]) ? strtoupper($matches[3]) : $default_order_for_column;
|
||||||
|
$order_sql = "numeric_score $sort";
|
||||||
|
$event->add_querylet(new Querylet("1=1")); //small hack to avoid metatag being treated as normal tag
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onTagTermParse(TagTermParseEvent $event) {
|
public function onTagTermParse(TagTermParseEvent $event) {
|
||||||
|
@ -62,27 +62,28 @@ class NumericScoreTheme extends Themelet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function view_popular($images, $dte) {
|
public function view_popular($images, $dte) {
|
||||||
global $user, $page;
|
global $page, $config;
|
||||||
|
|
||||||
$pop_images = '';
|
$pop_images = "";
|
||||||
foreach($images as $image) {
|
foreach($images as $image) {
|
||||||
$thumb_html = $this->build_thumb_html($image);
|
$pop_images .= $this->build_thumb_html($image)."\n";
|
||||||
$pop_images .= '<span class="thumb">'.
|
|
||||||
'<a href="$image_link">'.$thumb_html.'</a>'.
|
|
||||||
'</span>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$b_dte = make_link("popular_by_".$dte[3]."?".date($dte[2], (strtotime('-1 '.$dte[3], strtotime($dte[0])))));
|
$b_dte = make_link("popular_by_".$dte[3]."?".date($dte[2], (strtotime('-1 '.$dte[3], strtotime($dte[0])))));
|
||||||
$f_dte = make_link("popular_by_".$dte[3]."?".date($dte[2], (strtotime('+1 '.$dte[3], strtotime($dte[0])))));
|
$f_dte = make_link("popular_by_".$dte[3]."?".date($dte[2], (strtotime('+1 '.$dte[3], strtotime($dte[0])))));
|
||||||
|
|
||||||
$html = '<center><h3><a href="'.$b_dte.'">«</a> '.$dte[1]
|
$html = "\n".
|
||||||
.' <a href="'.$f_dte.'">»</a>'
|
"<center>\n".
|
||||||
.'</h3></center>
|
" <h3>\n".
|
||||||
<br>'.$pop_images;
|
" <a href='{$b_dte}'>«</a> {$dte[1]} <a href='{$f_dte}'>»</a>\n".
|
||||||
|
" </h3>\n".
|
||||||
|
"</center>\n".
|
||||||
|
"<br/>\n".$pop_images;
|
||||||
|
|
||||||
|
|
||||||
$nav_html = "<a href=".make_link().">Index</a>";
|
$nav_html = "<a href=".make_link().">Index</a>";
|
||||||
|
|
||||||
|
$page->set_heading($config->get_string('title'));
|
||||||
$page->add_block(new Block("Navigation", $nav_html, "left", 10));
|
$page->add_block(new Block("Navigation", $nav_html, "left", 10));
|
||||||
$page->add_block(new Block(null, $html, "main", 30));
|
$page->add_block(new Block(null, $html, "main", 30));
|
||||||
}
|
}
|
||||||
|
@ -295,7 +295,7 @@ class Pools extends Extension {
|
|||||||
|
|
||||||
public function onSearchTermParse(SearchTermParseEvent $event) {
|
public function onSearchTermParse(SearchTermParseEvent $event) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
if(preg_match("/^pool[=|:]([0-9]+|any|none)$/", $event->term, $matches)) {
|
if(preg_match("/^pool[=|:]([0-9]+|any|none)$/i", $event->term, $matches)) {
|
||||||
$poolID = $matches[1];
|
$poolID = $matches[1];
|
||||||
|
|
||||||
if(preg_match("/^(any|none)$/", $poolID)){
|
if(preg_match("/^(any|none)$/", $poolID)){
|
||||||
@ -305,7 +305,7 @@ class Pools extends Extension {
|
|||||||
$event->add_querylet(new Querylet("images.id IN (SELECT DISTINCT image_id FROM pool_images WHERE pool_id = $poolID)"));
|
$event->add_querylet(new Querylet("images.id IN (SELECT DISTINCT image_id FROM pool_images WHERE pool_id = $poolID)"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(preg_match("/^pool_by_name[=|:](.*)$/", $event->term, $matches)) {
|
else if(preg_match("/^pool_by_name[=|:](.*)$/i", $event->term, $matches)) {
|
||||||
$poolTitle = str_replace("_", " ", $matches[1]);
|
$poolTitle = str_replace("_", " ", $matches[1]);
|
||||||
|
|
||||||
$pool = $this->get_single_pool_from_title($poolTitle);
|
$pool = $this->get_single_pool_from_title($poolTitle);
|
||||||
|
@ -121,7 +121,9 @@ class PoolsTheme extends Themelet {
|
|||||||
$this->sidebar_options($page, $pool, $check_all);
|
$this->sidebar_options($page, $pool, $check_all);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$page->add_block(new Block(html_escape($pool['title']), html_escape($pool['description']), "main", 10));
|
|
||||||
|
$bb = new BBCode();
|
||||||
|
$page->add_block(new Block(html_escape($pool['title']), $bb->format($pool['description']), "main", 10));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$pool_info = '
|
$pool_info = '
|
||||||
|
@ -45,11 +45,18 @@ class RandomImage extends Extension {
|
|||||||
$page->set_data(file_get_contents($image->get_image_filename()));
|
$page->set_data(file_get_contents($image->get_image_filename()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($action === "view") {
|
else if($action === "view") {
|
||||||
if(!is_null($image)) {
|
if(!is_null($image)) {
|
||||||
send_event(new DisplayingImageEvent($image, $page));
|
send_event(new DisplayingImageEvent($image, $page));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if($action === "widget") {
|
||||||
|
if(!is_null($image)) {
|
||||||
|
$page->set_mode("data");
|
||||||
|
$page->set_type("text/html");
|
||||||
|
$page->set_data($this->theme->build_thumb_html($image));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,166 +1,111 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Name: Update
|
* Name: [Beta] Update
|
||||||
* Author: DakuTree <dakutree@codeanimu.net>
|
* Author: DakuTree <dakutree@codeanimu.net>
|
||||||
* Link: http://www.codeanimu.net
|
* Link: http://www.codeanimu.net
|
||||||
* License: GPLv2
|
* License: GPLv2
|
||||||
* Description: Shimmie updater! (Requires php-curl library and admin panel extension)
|
* Description: Shimmie updater! (Requires admin panel extension & transload engine (cURL/fopen/Wget))
|
||||||
*/
|
*/
|
||||||
class Update extends Extension {
|
class Update extends Extension {
|
||||||
public function onInitExt(InitExtEvent $event) {
|
public function onInitExt(InitExtEvent $event) {
|
||||||
global $config;
|
global $config;
|
||||||
$config->set_default_string("update_guser", "shish");
|
$config->set_default_string("update_guserrepo", "shish/shimmie2");
|
||||||
$config->set_default_string("update_grepo", "shimmie2");
|
|
||||||
$config->set_default_string("commit_hash", "unknown");
|
$config->set_default_string("commit_hash", "unknown");
|
||||||
$config->set_default_string("commit_time", "unknown");
|
$config->set_default_string("update_time", "01/01/1970");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onSetupBuilding(SetupBuildingEvent $event) {
|
public function onSetupBuilding(SetupBuildingEvent $event) {
|
||||||
$sb = new SetupBlock("Update");
|
$sb = new SetupBlock("Update");
|
||||||
$sb->add_text_option("update_guser", "User: ");
|
$sb->add_text_option("update_guserrepo", "User/Repo: ");
|
||||||
$sb->add_text_option("update_grepo", "<br>Repo: ");
|
|
||||||
$event->panel->add_block($sb);
|
$event->panel->add_block($sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onAdminBuilding(AdminBuildingEvent $event) {
|
public function onAdminBuilding(AdminBuildingEvent $event) {
|
||||||
global $config, $page;
|
global $config;
|
||||||
|
if($config->get_string('transload_engine') !== "none"){
|
||||||
$latestCommit = $this->get_latest_commit();
|
$this->theme->display_admin_block();
|
||||||
if(is_null($latestCommit)) return;
|
}
|
||||||
|
|
||||||
$commitMessage = $latestCommit["commit"]["message"];
|
|
||||||
$commitDT = explode("T", $latestCommit["commit"]["committer"]["date"]);
|
|
||||||
$commitTD = explode("-", $commitDT[1]);
|
|
||||||
$commitDateTime = $commitDT[0]." (".$commitTD[0].")";
|
|
||||||
$commitSHA = substr($latestCommit["sha"],0,7);
|
|
||||||
|
|
||||||
$html = "".
|
|
||||||
"Current Commit: ".$config->get_string('commit_hash')." | ".$config->get_string('commit_time').
|
|
||||||
"<br>Latest Commit: ".$commitSHA." | ".$commitDateTime." | ".$commitMessage.
|
|
||||||
"<br><a href='" . make_link('update') . "'>Update</a>".
|
|
||||||
"";
|
|
||||||
$page->add_block(new Block("Software Update", $html, "main"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onPageRequest(PageRequestEvent $event) {
|
public function onPageRequest(PageRequestEvent $event) {
|
||||||
global $config, $user;
|
global $config, $user, $page;
|
||||||
if($event->page_matches("update") && $user->is_admin()) {
|
if($user->is_admin() && isset($_GET['sha'])){
|
||||||
$ok = $this->update_shimmie();
|
if($event->page_matches("update/download")){
|
||||||
|
$ok = $this->download_shimmie();
|
||||||
|
|
||||||
|
$page->set_mode("redirect");
|
||||||
|
if($ok) $page->set_redirect(make_link("update/update", "sha=".$_GET['sha']));
|
||||||
|
else $page->set_redirect(make_link("admin")); //TODO: Show error?
|
||||||
|
}elseif($event->page_matches("update/update")){
|
||||||
|
$ok = $this->update_shimmie();
|
||||||
|
|
||||||
|
$page->set_mode("redirect");
|
||||||
|
if($ok) $page->set_redirect(make_link("admin")); //TODO: Show success?
|
||||||
|
else $page->set_redirect(make_link("admin")); //TODO: Show error?
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function get_latest_commit() {
|
private function download_shimmie() {
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
if(!function_exists("curl_init")) return null;
|
$commitSHA = $_GET['sha'];
|
||||||
|
$g_userrepo = $config->get_string('update_guserrepo');
|
||||||
|
|
||||||
//Grab latest info via JSON.
|
$url = "https://codeload.github.com/".$g_userrepo."/zip/".$commitSHA;
|
||||||
$g_user = $config->get_string("update_guser");
|
$filename = "./data/update_{$commitSHA}.zip";
|
||||||
$g_repo = $config->get_string("update_grepo");
|
|
||||||
$base = "https://api.github.com/repos/".$g_user."/".$g_repo."/commits";
|
log_info("update", "Attempting to download Shimmie commit: ".$commitSHA);
|
||||||
$curl = curl_init();
|
if($headers = transload($url, $filename)){
|
||||||
curl_setopt($curl, CURLOPT_URL, $base);
|
if(($headers['Content-Type'] !== "application/zip") || ((int) $headers['Content-Length'] !== filesize($filename))){
|
||||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
unlink("./data/update_{$commitSHA}.zip");
|
||||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
log_warning("update", "Download failed: not zip / not same size as remote file.");
|
||||||
$content = curl_exec($curl);
|
return false;
|
||||||
curl_close($curl);
|
}
|
||||||
$commits = json_decode($content, true);
|
|
||||||
return $commits[0];
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
log_warning("update", "Download failed to download.");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function update_shimmie() {
|
private function update_shimmie() {
|
||||||
//This is a REALLY ugly function. (Damn my limited PHP knowledge >_<)
|
|
||||||
global $config, $page;
|
global $config, $page;
|
||||||
|
|
||||||
$latestCommit = $this->get_latest_commit();
|
$commitSHA = $_GET['sha'];
|
||||||
if(is_null($latestCommit)) return;
|
$g_userrepo = $config->get_string('update_guserrepo');
|
||||||
|
|
||||||
$commitDT = explode("T", $latestCommit["commit"]["committer"]["date"]);
|
log_info("update", "Download succeeded. Attempting to update Shimmie.");
|
||||||
$commitTD = explode("-", $commitDT[1]);
|
$config->set_bool("in_upgrade", TRUE);
|
||||||
$commitDateTime = $commitDT[0]." (".$commitTD[0].")";
|
$ok = FALSE;
|
||||||
$commitSHA = substr($latestCommit["sha"],0,7);
|
|
||||||
|
|
||||||
$html = "";
|
/** TODO: Backup all folders (except /data, /images, /thumbs) before attempting this?
|
||||||
$url = "http://nodeload.github.com/".$g_user."/".$g_repo."/zipball/".$commitSHA;
|
Either that or point to https://github.com/shish/shimmie2/blob/master/README.txt -> Upgrade from 2.3.X **/
|
||||||
$mfile = "master.zip";
|
|
||||||
if(glob("*-shimmie2-".$commitSHA)) { //#3
|
|
||||||
$dir = glob("*-shimmie2-".$commitSHA);
|
|
||||||
preg_match('@^([a-zA-Z0-9]+\-[0-9a-z]+\-)([^/]+)@i', $dir[0], $matches);
|
|
||||||
if(!empty($matches[2])) {
|
|
||||||
$html .= "commit: ".$matches[2];
|
|
||||||
$commit = $matches[2];
|
|
||||||
mkdir("./backup");
|
|
||||||
$html .= "<br>backup folder created!";
|
|
||||||
$d_dir = data_path("cache");
|
|
||||||
//This should empty the /data/cache/ folder.
|
|
||||||
if (is_dir($d_dir)) {
|
|
||||||
$objects = scandir($d_dir);
|
|
||||||
foreach ($objects as $object) {
|
|
||||||
if ($object != "." && $object != "..") {
|
|
||||||
if (filetype($d_dir."/".$object) == "dir") rmdir($d_dir."/".$object); else unlink($d_dir."/".$object);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reset($objects);
|
|
||||||
$html .= "<br>data folder emptied!";
|
|
||||||
}
|
|
||||||
copy ("./data/config/shimmie.conf.php", "./backup/shimmie.conf.php");//Although this stays the same, will keep backup just incase.
|
|
||||||
$folders = array("./core", "./lib", "./themes", "./.htaccess", "./doxygen.conf", "./index.php", "./install.php", "./ext", "./contrib");
|
|
||||||
foreach($folders as $folder){
|
|
||||||
//TODO: Check MD5 of each file, don't rename if same.
|
|
||||||
rename ($folder, "./backup".substr($folder, 1)); //Move old files to backup
|
|
||||||
rename ("./".$matches[0].substr($folder, 1), $folder); //Move new files to main
|
|
||||||
}
|
|
||||||
$html .= "<br>old shimmie setup has been moved to /backup/ (excluding images/thumbs)!";
|
|
||||||
if (is_dir($matches[0])) {
|
|
||||||
$objects = scandir($matches[0]);
|
|
||||||
foreach ($objects as $object) {
|
|
||||||
if ($object != "." && $object != "..") {
|
|
||||||
if (filetype($matches[0]."/".$object) == "dir") rmdir($matches[0]."/".$object); else unlink($matches[0]."/".$object);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reset($objects);
|
|
||||||
rmdir($matches[0]);
|
|
||||||
$html .= "<br>".$matches[0]." deleted!";
|
|
||||||
}
|
|
||||||
$html .= "<br>shimmie updated (although you may have gotten errors, it should have worked!";
|
|
||||||
$html .= "<br>due to the way shimmie loads extensions, all optional extensions have been disabled";
|
|
||||||
$config->set_string("commit_hash", $commit);
|
|
||||||
$config->set_string("commit_time", $commitDateTime);
|
|
||||||
$html .= "<br>new commit_hash has been set!";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$html .= "Error! Folder does not exist!?"; //Although this should be impossible, shall have it anyway.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
elseif (file_exists($mfile)) { //#2
|
|
||||||
$zip = new ZipArchive;
|
|
||||||
if ($zip->open($mfile) === TRUE) {
|
|
||||||
$zip->extractTo('./');
|
|
||||||
$zip->close();
|
|
||||||
$html .= "extracted!";
|
|
||||||
$html .= "<br><a href='javascript:history.go(0)'>refresh</a> the page to continue!";
|
|
||||||
unlink($mfile); //Deletes master.zip
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$html .= "failed!";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else { //#1
|
|
||||||
//Taken from the upload ext.
|
|
||||||
transload($url, $mfile);
|
|
||||||
|
|
||||||
if(file_exists($mfile)) {
|
$zip = new ZipArchive;
|
||||||
$html .= "downloaded!";
|
if ($zip->open("./data/update_$commitSHA.zip") === TRUE) {
|
||||||
$html .= "<br><a href='javascript:history.go(0)'>refresh</a> the page to continue!";
|
for($i = 1; $i < $zip->numFiles; $i++) {
|
||||||
}
|
$filename = $zip->getNameIndex($i);
|
||||||
else {
|
|
||||||
$html .= "download failed!";
|
if(substr($filename, -1) !== "/"){
|
||||||
$html .= "<br><a href='javascript:history.go(0)'>refresh</a> to try again!";
|
copy("zip://".dirname(dirname(__DIR__)).'/'."./data/update_$commitSHA.zip"."#".$filename, substr($filename, 50));
|
||||||
$html .= "<br>if you keep having this problem, you may have a problem with your transload engine!";
|
}
|
||||||
}
|
}
|
||||||
|
$ok = TRUE; //TODO: Do proper checking to see if everything copied properly
|
||||||
|
}else{ log_warning("update", "Update failed to open ZIP."); }
|
||||||
|
|
||||||
|
$zip->close();
|
||||||
|
unlink("./data/update_$commitSHA.zip");
|
||||||
|
$config->set_bool("in_upgrade", FALSE);
|
||||||
|
|
||||||
|
if($ok){
|
||||||
|
$config->set_string("commit_hash", $commitSHA);
|
||||||
|
$config->set_string("update_time", date('d-m-Y'));
|
||||||
|
log_info("update", "Update succeeded?");
|
||||||
}
|
}
|
||||||
|
|
||||||
$page->add_block(new Block("Update", $html));
|
return $ok;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
ext/update/script.js
Normal file
14
ext/update/script.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
$(function() {
|
||||||
|
if($('#updatecheck').length !== 0){
|
||||||
|
$.getJSON('https://api.github.com/repos/shish/shimmie2/commits', function(data){
|
||||||
|
var c = data[0];
|
||||||
|
$('#updatecheck').html('<a href="'+c['html_url']+'">'+c['sha']+'</a>' + " ("+c['commit']['message']+")");
|
||||||
|
|
||||||
|
var params = $.param({sha: c['sha'], date: c['commit']['committer']['date']});
|
||||||
|
$('#updatelink').attr('href', function(i, val){ return val + "?" + params; });
|
||||||
|
$('#updatelink').text("Update");
|
||||||
|
}).fail(function(){
|
||||||
|
$('#updatecheck').text("Loading failed. (Github down?)");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
14
ext/update/theme.php
Normal file
14
ext/update/theme.php
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
class UpdateTheme extends Themelet {
|
||||||
|
public function display_admin_block(){
|
||||||
|
global $page, $config;
|
||||||
|
|
||||||
|
$html = "".
|
||||||
|
"<b>Current Commit</b>: ".$config->get_string('commit_hash')." | (".$config->get_string('update_time').")".
|
||||||
|
"<br><b>Latest Commit</b>: <span id='updatecheck'>Loading...</span>".
|
||||||
|
"<br><a href='" . make_link('update/download') . "' id='updatelink'></a>";
|
||||||
|
//TODO: Show warning before use.
|
||||||
|
$page->add_block(new Block("Software Update", $html, "main", 75));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
@ -21,7 +21,7 @@ class Themelet extends BaseThemelet {
|
|||||||
private function build_paginator($current_page, $total_pages, $base_url, $query) {
|
private function build_paginator($current_page, $total_pages, $base_url, $query) {
|
||||||
$next = $current_page + 1;
|
$next = $current_page + 1;
|
||||||
$prev = $current_page - 1;
|
$prev = $current_page - 1;
|
||||||
$rand = rand(1, $total_pages);
|
$rand = mt_rand(1, $total_pages);
|
||||||
|
|
||||||
$at_start = ($current_page <= 3 || $total_pages <= 3);
|
$at_start = ($current_page <= 3 || $total_pages <= 3);
|
||||||
$at_end = ($current_page >= $total_pages -2);
|
$at_end = ($current_page >= $total_pages -2);
|
||||||
|
@ -21,7 +21,7 @@ class Themelet extends BaseThemelet {
|
|||||||
private function build_paginator($current_page, $total_pages, $base_url, $query) {
|
private function build_paginator($current_page, $total_pages, $base_url, $query) {
|
||||||
$next = $current_page + 1;
|
$next = $current_page + 1;
|
||||||
$prev = $current_page - 1;
|
$prev = $current_page - 1;
|
||||||
$rand = rand(1, $total_pages);
|
$rand = mt_rand(1, $total_pages);
|
||||||
|
|
||||||
$at_start = ($current_page <= 3 || $total_pages <= 3);
|
$at_start = ($current_page <= 3 || $total_pages <= 3);
|
||||||
$at_end = ($current_page >= $total_pages -2);
|
$at_end = ($current_page >= $total_pages -2);
|
||||||
|
@ -25,7 +25,7 @@ class Themelet extends BaseThemelet {
|
|||||||
private function build_paginator($current_page, $total_pages, $base_url, $query) {
|
private function build_paginator($current_page, $total_pages, $base_url, $query) {
|
||||||
$next = $current_page + 1;
|
$next = $current_page + 1;
|
||||||
$prev = $current_page - 1;
|
$prev = $current_page - 1;
|
||||||
$rand = rand(1, $total_pages);
|
$rand = mt_rand(1, $total_pages);
|
||||||
|
|
||||||
$at_start = ($current_page <= 1 || $total_pages <= 1);
|
$at_start = ($current_page <= 1 || $total_pages <= 1);
|
||||||
$at_end = ($current_page >= $total_pages);
|
$at_end = ($current_page >= $total_pages);
|
||||||
|
@ -37,7 +37,7 @@ class Themelet extends BaseThemelet {
|
|||||||
private function build_paginator($current_page, $total_pages, $base_url, $query) {
|
private function build_paginator($current_page, $total_pages, $base_url, $query) {
|
||||||
$next = $current_page + 1;
|
$next = $current_page + 1;
|
||||||
$prev = $current_page - 1;
|
$prev = $current_page - 1;
|
||||||
$rand = rand(1, $total_pages);
|
$rand = mt_rand(1, $total_pages);
|
||||||
|
|
||||||
$at_start = ($current_page <= 1 || $total_pages <= 1);
|
$at_start = ($current_page <= 1 || $total_pages <= 1);
|
||||||
$at_end = ($current_page >= $total_pages);
|
$at_end = ($current_page >= $total_pages);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user