formatting
This commit is contained in:
		
							parent
							
								
									aabc69033b
								
							
						
					
					
						commit
						55c6854003
					
				| @ -186,7 +186,7 @@ class Database | ||||
|     public function execute(string $query, array $args=[], bool $scoreql = false): PDOStatement | ||||
|     { | ||||
|         try { | ||||
|             if($scoreql===true) { | ||||
|             if ($scoreql===true) { | ||||
|                 $query = $this->scoreql_to_sql($query); | ||||
|             } | ||||
| 
 | ||||
| @ -222,7 +222,7 @@ class Database | ||||
|      */ | ||||
|     public function get_all(string $query, array $args=[], bool $scoreql = false): array | ||||
|     { | ||||
|         if($scoreql===true) { | ||||
|         if ($scoreql===true) { | ||||
|             $query = $this->scoreql_to_sql($query); | ||||
|         } | ||||
| 
 | ||||
| @ -237,7 +237,7 @@ class Database | ||||
|      */ | ||||
|     public function get_all_iterable(string $query, array $args=[], bool $scoreql = false): PDOStatement | ||||
|     { | ||||
|         if($scoreql===true) { | ||||
|         if ($scoreql===true) { | ||||
|             $query = $this->scoreql_to_sql($query); | ||||
|         } | ||||
|         $_start = microtime(true); | ||||
| @ -251,7 +251,7 @@ class Database | ||||
|      */ | ||||
|     public function get_row(string $query, array $args=[], bool $scoreql = false): ?array | ||||
|     { | ||||
|         if($scoreql===true) { | ||||
|         if ($scoreql===true) { | ||||
|             $query = $this->scoreql_to_sql($query); | ||||
|         } | ||||
|         $_start = microtime(true); | ||||
| @ -266,7 +266,7 @@ class Database | ||||
|      */ | ||||
|     public function exists(string $query, array $args=[], bool $scoreql = false): bool | ||||
|     { | ||||
|         if($scoreql===true) { | ||||
|         if ($scoreql===true) { | ||||
|             $query = $this->scoreql_to_sql($query); | ||||
|         } | ||||
|         $_start = microtime(true); | ||||
| @ -280,7 +280,7 @@ class Database | ||||
|      */ | ||||
|     public function get_col(string $query, array $args=[], bool $scoreql = false): array | ||||
|     { | ||||
|         if($scoreql===true) { | ||||
|         if ($scoreql===true) { | ||||
|             $query = $this->scoreql_to_sql($query); | ||||
|         } | ||||
|         $_start = microtime(true); | ||||
| @ -294,7 +294,7 @@ class Database | ||||
|      */ | ||||
|     public function get_col_iterable(string $query, array $args=[], bool $scoreql = false): Generator | ||||
|     { | ||||
|         if($scoreql===true) { | ||||
|         if ($scoreql===true) { | ||||
|             $query = $this->scoreql_to_sql($query); | ||||
|         } | ||||
|         $_start = microtime(true); | ||||
| @ -310,7 +310,7 @@ class Database | ||||
|      */ | ||||
|     public function get_pairs(string $query, array $args=[], bool $scoreql = false): array | ||||
|     { | ||||
|         if($scoreql===true) { | ||||
|         if ($scoreql===true) { | ||||
|             $query = $this->scoreql_to_sql($query); | ||||
|         } | ||||
|         $_start = microtime(true); | ||||
| @ -324,7 +324,7 @@ class Database | ||||
|      */ | ||||
|     public function get_one(string $query, array $args=[], bool $scoreql = false) | ||||
|     { | ||||
|         if($scoreql===true) { | ||||
|         if ($scoreql===true) { | ||||
|             $query = $this->scoreql_to_sql($query); | ||||
|         } | ||||
|         $_start = microtime(true); | ||||
|  | ||||
| @ -34,7 +34,7 @@ abstract class DBEngine | ||||
|         return 'CREATE TABLE '.$name.' ('.$data.')'; | ||||
|     } | ||||
| 
 | ||||
|     public abstract function set_timeout(PDO $db, int $time); | ||||
|     abstract public function set_timeout(PDO $db, int $time); | ||||
| } | ||||
| 
 | ||||
| class MySQL extends DBEngine | ||||
| @ -76,7 +76,6 @@ class MySQL extends DBEngine | ||||
|         // These only apply to read-only queries, which appears to be the best we can to mysql-wise
 | ||||
|         $db->exec("SET SESSION MAX_EXECUTION_TIME=".$time.";"); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| class PostgreSQL extends DBEngine | ||||
| @ -123,7 +122,6 @@ class PostgreSQL extends DBEngine | ||||
|     { | ||||
|         $db->exec("SET statement_timeout TO ".$time.";"); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| // shimmie functions for export to sqlite
 | ||||
|  | ||||
| @ -151,7 +151,7 @@ class Image | ||||
|         if (!$result) { | ||||
|             $querylet = Image::build_search_querylet($tag_conditions, $img_conditions); | ||||
|             $querylet->append(new Querylet(" ORDER BY ".(Image::$order_sql ?: "images.".$config->get_string(IndexConfig::ORDER)))); | ||||
|             if($limit!=null) { | ||||
|             if ($limit!=null) { | ||||
|                 $querylet->append(new Querylet(" LIMIT :limit ", ["limit" => $limit])); | ||||
|                 $querylet->append(new Querylet(" OFFSET :offset ", ["offset"=>$start])); | ||||
|             } | ||||
| @ -730,9 +730,11 @@ class Image | ||||
|                         "INSERT INTO tags(tag) VALUES (:tag)", | ||||
|                         ["tag"=>$tag] | ||||
|                     ); | ||||
|                     $database->execute($database->scoreql_to_sql( | ||||
|                     $database->execute( | ||||
|                         $database->scoreql_to_sql( | ||||
|                         "INSERT INTO image_tags(image_id, tag_id)
 | ||||
| 							VALUES(:id, (SELECT id FROM tags WHERE SCORE_STRNORM(tag) = SCORE_STRNORM(:tag)))"),
 | ||||
| 							VALUES(:id, (SELECT id FROM tags WHERE SCORE_STRNORM(tag) = SCORE_STRNORM(:tag)))" | ||||
|                     ), | ||||
|                         ["id"=>$this->id, "tag"=>$tag] | ||||
|                     ); | ||||
|                 } else { | ||||
|  | ||||
| @ -101,18 +101,18 @@ class Tag | ||||
| 
 | ||||
|     public static function compare(array $tags1, array $tags2): bool | ||||
|     { | ||||
|         if(count($tags1)!==count($tags2)) { | ||||
|         if (count($tags1)!==count($tags2)) { | ||||
|             return false; | ||||
|         } | ||||
| 
 | ||||
|         $tags1 = array_map("strtolower",$tags1); | ||||
|         $tags2 = array_map("strtolower",$tags2); | ||||
|         $tags1 = array_map("strtolower", $tags1); | ||||
|         $tags2 = array_map("strtolower", $tags2); | ||||
|         natcasesort($tags1); | ||||
|         natcasesort($tags2); | ||||
| 
 | ||||
| 
 | ||||
|         for($i = 0; $i < count($tags1); $i++) { | ||||
|             if($tags1[$i]!==$tags2[$i]) { | ||||
|         for ($i = 0; $i < count($tags1); $i++) { | ||||
|             if ($tags1[$i]!==$tags2[$i]) { | ||||
|                 var_dump($tags1); | ||||
|                 var_dump($tags2); | ||||
|                 return false; | ||||
| @ -140,7 +140,7 @@ class Tag | ||||
|         foreach ($tags as $tag) { | ||||
|             try { | ||||
|                 $tag = Tag::sanitize($tag); | ||||
|             } catch(Exception $e) { | ||||
|             } catch (Exception $e) { | ||||
|                 flash_message($e->getMessage()); | ||||
|                 continue; | ||||
|             } | ||||
|  | ||||
| @ -83,5 +83,4 @@ abstract class Permissions | ||||
|     public const CRON_ADMIN = "cron_admin"; | ||||
|     public const APPROVE_IMAGE = "approve_image"; | ||||
|     public const APPROVE_COMMENT = "approve_comment"; | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -352,16 +352,18 @@ function join_url(string $base, string ...$paths) | ||||
| 
 | ||||
| function get_dir_contents(string $dir): array | ||||
| { | ||||
|     if(empty($dir)) { | ||||
|     if (empty($dir)) { | ||||
|         throw new Exception("dir required"); | ||||
|     } | ||||
|     if(!is_dir($dir)) { | ||||
|     if (!is_dir($dir)) { | ||||
|         return []; | ||||
|     } | ||||
|     $results = array_diff( | ||||
|         scandir( | ||||
|             $dir), | ||||
|         ['..', '.']); | ||||
|             $dir | ||||
|         ), | ||||
|         ['..', '.'] | ||||
|     ); | ||||
| 
 | ||||
|     return $results; | ||||
| } | ||||
| @ -378,7 +380,8 @@ function scan_dir(string $path): array | ||||
|         $path, | ||||
|         FilesystemIterator::KEY_AS_PATHNAME | | ||||
|         FilesystemIterator::CURRENT_AS_FILEINFO | | ||||
|         FilesystemIterator::SKIP_DOTS); | ||||
|         FilesystemIterator::SKIP_DOTS | ||||
|     ); | ||||
|     foreach (new RecursiveIteratorIterator($ite) as $filename => $cur) { | ||||
|         try { | ||||
|             $filesize = $cur->getSize(); | ||||
|  | ||||
| @ -74,20 +74,23 @@ class Approval extends Extension | ||||
| 
 | ||||
|         $action = $event->action; | ||||
|         $event->redirect = true; | ||||
|         if($action==="approval") { | ||||
|         if ($action==="approval") { | ||||
|             $approval_action = $_POST["approval_action"]; | ||||
|             switch ($approval_action) { | ||||
|                 case "approve_all": | ||||
|                     $database->set_timeout(300000); // These updates can take a little bit
 | ||||
|                     $database->execute($database->scoreql_to_sql( | ||||
|                         "UPDATE images SET approved = SCORE_BOOL_Y, approved_by_id = :approved_by_id WHERE approved = SCORE_BOOL_N"), | ||||
|                     $database->execute( | ||||
|                         $database->scoreql_to_sql( | ||||
|                         "UPDATE images SET approved = SCORE_BOOL_Y, approved_by_id = :approved_by_id WHERE approved = SCORE_BOOL_N" | ||||
|                     ), | ||||
|                         ["approved_by_id"=>$user->id] | ||||
|                     ); | ||||
|                     break; | ||||
|                 case "disapprove_all": | ||||
|                     $database->set_timeout(300000); // These updates can take a little bit
 | ||||
|                     $database->execute($database->scoreql_to_sql( | ||||
|                         "UPDATE images SET approved = SCORE_BOOL_N, approved_by_id = NULL WHERE approved = SCORE_BOOL_Y")); | ||||
|                         "UPDATE images SET approved = SCORE_BOOL_N, approved_by_id = NULL WHERE approved = SCORE_BOOL_Y" | ||||
|                     )); | ||||
|                     break; | ||||
|                 default: | ||||
| 
 | ||||
| @ -100,7 +103,7 @@ class Approval extends Extension | ||||
|     { | ||||
|         global $user, $page, $config; | ||||
| 
 | ||||
|         if ( $config->get_bool(ApprovalConfig::IMAGES) && $event->image->approved===false && !$user->can(Permissions::APPROVE_IMAGE)) { | ||||
|         if ($config->get_bool(ApprovalConfig::IMAGES) && $event->image->approved===false && !$user->can(Permissions::APPROVE_IMAGE)) { | ||||
|             $page->set_mode(PageMode::REDIRECT); | ||||
|             $page->set_redirect(make_link("post/list")); | ||||
|         } | ||||
| @ -109,9 +112,9 @@ class Approval extends Extension | ||||
|     public function onPageSubNavBuilding(PageSubNavBuildingEvent $event) | ||||
|     { | ||||
|         global $user; | ||||
|         if($event->parent=="posts") { | ||||
|             if($user->can(Permissions::APPROVE_IMAGE)) { | ||||
|                 $event->add_nav_link("posts_unapproved", new Link('/post/list/approved%3Ano/1'), "Pending Approval",null, 60); | ||||
|         if ($event->parent=="posts") { | ||||
|             if ($user->can(Permissions::APPROVE_IMAGE)) { | ||||
|                 $event->add_nav_link("posts_unapproved", new Link('/post/list/approved%3Ano/1'), "Pending Approval", null, 60); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @ -122,7 +125,7 @@ class Approval extends Extension | ||||
|     { | ||||
|         global $user, $database, $config; | ||||
| 
 | ||||
|         if($config->get_bool(ApprovalConfig::IMAGES)) { | ||||
|         if ($config->get_bool(ApprovalConfig::IMAGES)) { | ||||
|             $matches = []; | ||||
| 
 | ||||
|             if (is_null($event->term) && $this->no_approval_query($event->context)) { | ||||
| @ -168,8 +171,10 @@ class Approval extends Extension | ||||
|     { | ||||
|         global $database, $user; | ||||
| 
 | ||||
|         $database->execute($database->scoreql_to_sql( | ||||
|             "UPDATE images SET approved = SCORE_BOOL_Y, approved_by_id = :approved_by_id WHERE id = :id AND approved = SCORE_BOOL_N"), | ||||
|         $database->execute( | ||||
|             $database->scoreql_to_sql( | ||||
|             "UPDATE images SET approved = SCORE_BOOL_Y, approved_by_id = :approved_by_id WHERE id = :id AND approved = SCORE_BOOL_N" | ||||
|         ), | ||||
|             ["approved_by_id"=>$user->id, "id"=>$image_id] | ||||
|         ); | ||||
|     } | ||||
| @ -178,8 +183,10 @@ class Approval extends Extension | ||||
|     { | ||||
|         global $database, $user; | ||||
| 
 | ||||
|         $database->execute($database->scoreql_to_sql( | ||||
|             "UPDATE images SET approved = SCORE_BOOL_N, approved_by_id = NULL WHERE id = :id AND approved = SCORE_BOOL_Y"), | ||||
|         $database->execute( | ||||
|             $database->scoreql_to_sql( | ||||
|             "UPDATE images SET approved = SCORE_BOOL_N, approved_by_id = NULL WHERE id = :id AND approved = SCORE_BOOL_Y" | ||||
|         ), | ||||
|             ["id"=>$image_id] | ||||
|         ); | ||||
|     } | ||||
| @ -187,7 +194,7 @@ class Approval extends Extension | ||||
|     public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event) | ||||
|     { | ||||
|         global $user, $config; | ||||
|         if($user->can(Permissions::APPROVE_IMAGE) && $config->get_bool(ApprovalConfig::IMAGES)) { | ||||
|         if ($user->can(Permissions::APPROVE_IMAGE) && $config->get_bool(ApprovalConfig::IMAGES)) { | ||||
|             $event->add_part($this->theme->get_image_admin_html($event->image)); | ||||
|         } | ||||
|     } | ||||
| @ -197,7 +204,7 @@ class Approval extends Extension | ||||
|         global $user, $config; | ||||
| 
 | ||||
|         if ($user->can(Permissions::APPROVE_IMAGE)&& $config->get_bool(ApprovalConfig::IMAGES)) { | ||||
|             if(in_array("approved:no", $event->search_terms)) { | ||||
|             if (in_array("approved:no", $event->search_terms)) { | ||||
|                 $event->add_action("bulk_approve_image", "Approve", "a"); | ||||
|             } else { | ||||
|                 $event->add_action("bulk_disapprove_image", "Disapprove"); | ||||
|  | ||||
| @ -4,7 +4,7 @@ class ApprovalTheme extends Themelet | ||||
| { | ||||
|     public function get_image_admin_html(Image $image) | ||||
|     { | ||||
|         if($image->approved===true) { | ||||
|         if ($image->approved===true) { | ||||
|             $html = " | ||||
| 			".make_form(make_link('disapprove_image/'.$image->id), 'POST')." | ||||
| 				<input type='hidden' name='image_id' value='$image->id'> | ||||
|  | ||||
| @ -905,7 +905,7 @@ class Artists extends Extension | ||||
|                     $pageNumber * $artistsPerPage | ||||
|                     , $artistsPerPage | ||||
|                 ] | ||||
|             ); | ||||
|         ); | ||||
| 
 | ||||
|         $number_of_listings = count($listing); | ||||
| 
 | ||||
|  | ||||
| @ -123,7 +123,7 @@ class BulkRemove extends Extension | ||||
|             $page->add_block(new Block( | ||||
|                 "Bulk Remove Error", | ||||
|                 "Please use Board Admin to use bulk remove." | ||||
|                 )); | ||||
|             )); | ||||
|         } | ||||
| 
 | ||||
|         //
 | ||||
|  | ||||
| @ -22,7 +22,6 @@ abstract class CronUploaderConfig | ||||
| 
 | ||||
|             $config->set_string(self::KEY, $upload_key); | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public static function get_user(): int | ||||
|  | ||||
| @ -22,7 +22,7 @@ class CronUploader extends Extension | ||||
| 
 | ||||
|     public function onPageSubNavBuilding(PageSubNavBuildingEvent $event) | ||||
|     { | ||||
|         if($event->parent=="system") { | ||||
|         if ($event->parent=="system") { | ||||
|             $event->add_nav_link("cron_docs", new Link('cron_upload'), "Cron Upload"); | ||||
|         } | ||||
|     } | ||||
| @ -58,7 +58,7 @@ class CronUploader extends Extension | ||||
|         $sb->add_int_option(CronUploaderConfig::COUNT, "Upload per run", true); | ||||
|         $sb->add_text_option(CronUploaderConfig::DIR, "Root dir", true); | ||||
|         $sb->add_text_option(CronUploaderConfig::KEY, "Key", true); | ||||
|         $sb->add_choice_option(CronUploaderConfig::USER, $users,"User", true); | ||||
|         $sb->add_choice_option(CronUploaderConfig::USER, $users, "User", true); | ||||
|         $sb->end_table(); | ||||
|         $sb->add_label("<a href='$documentation_link'>Read the documentation</a> for cron setup instructions."); | ||||
| 
 | ||||
| @ -130,7 +130,7 @@ class CronUploader extends Extension | ||||
|         $results = get_dir_contents($stage_dir); | ||||
| 
 | ||||
|         if (count($results) == 0) { | ||||
|             if(rmdir($stage_dir)===false) { | ||||
|             if (rmdir($stage_dir)===false) { | ||||
|                 flash_message("Nothing to stage from $folder, cannot remove folder"); | ||||
|             } else { | ||||
|                 flash_message("Nothing to stage from $folder, removing folder"); | ||||
| @ -203,24 +203,29 @@ class CronUploader extends Extension | ||||
|         } | ||||
| 
 | ||||
|         $this->theme->display_documentation( | ||||
|             $running, $queue_dirinfo, $uploaded_dirinfo, $failed_dirinfo, | ||||
|             $this->get_cron_cmd(), $this->get_cron_url(), $logs | ||||
|             $running, | ||||
|             $queue_dirinfo, | ||||
|             $uploaded_dirinfo, | ||||
|             $failed_dirinfo, | ||||
|             $this->get_cron_cmd(), | ||||
|             $this->get_cron_url(), | ||||
|             $logs | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     function get_queue_dir() | ||||
|     public function get_queue_dir() | ||||
|     { | ||||
|         $dir = CronUploaderConfig::get_dir(); | ||||
|         return join_path($dir, self::QUEUE_DIR); | ||||
|     } | ||||
| 
 | ||||
|     function get_uploaded_dir() | ||||
|     public function get_uploaded_dir() | ||||
|     { | ||||
|         $dir = CronUploaderConfig::get_dir(); | ||||
|         return join_path($dir, self::UPLOADED_DIR); | ||||
|     } | ||||
| 
 | ||||
|     function get_failed_dir() | ||||
|     public function get_failed_dir() | ||||
|     { | ||||
|         $dir = CronUploaderConfig::get_dir(); | ||||
|         return join_path($dir, self::FAILED_DIR); | ||||
| @ -262,7 +267,7 @@ class CronUploader extends Extension | ||||
|             throw new SCoreException("Cron upload key incorrect"); | ||||
|         } | ||||
|         $user_id = CronUploaderConfig::get_user(); | ||||
|         if(empty($user_id)) { | ||||
|         if (empty($user_id)) { | ||||
|             throw new SCoreException("Cron upload user not set"); | ||||
|         } | ||||
|         $user = User::by_id($user_id); | ||||
| @ -329,8 +334,6 @@ class CronUploader extends Extension | ||||
|                     $this->move_uploaded($img[0], $img[1], $output_subdir, true); | ||||
|                     $this->log_message(SCORE_LOG_ERROR, "(" . gettype($e) . ") " . $e->getMessage()); | ||||
|                     $this->log_message(SCORE_LOG_ERROR, $e->getTraceAsString()); | ||||
| 
 | ||||
| 
 | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
| @ -348,14 +351,13 @@ class CronUploader extends Extension | ||||
|             flock($lockfile, LOCK_UN); | ||||
|             fclose($lockfile); | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     private function move_uploaded(string $path, string $filename, string $output_subdir, bool $corrupt = false) | ||||
|     { | ||||
|         $relativeDir = dirname(substr($path, strlen(CronUploaderConfig::get_dir()) + 7)); | ||||
| 
 | ||||
|         if($relativeDir==".") { | ||||
|         if ($relativeDir==".") { | ||||
|             $relativeDir = ""; | ||||
|         } | ||||
| 
 | ||||
| @ -424,10 +426,11 @@ class CronUploader extends Extension | ||||
| 
 | ||||
|     private const PARTIAL_DOWNLOAD_EXTENSIONS = ['crdownload','part']; | ||||
| 
 | ||||
|     private function is_skippable_file(string $path) { | ||||
|     private function is_skippable_file(string $path) | ||||
|     { | ||||
|         $info = pathinfo($path); | ||||
| 
 | ||||
|         if(in_array(strtolower($info['extension']),self::PARTIAL_DOWNLOAD_EXTENSIONS)) { | ||||
|         if (in_array(strtolower($info['extension']), self::PARTIAL_DOWNLOAD_EXTENSIONS)) { | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
| @ -499,4 +502,3 @@ class CronUploader extends Extension | ||||
|         $page->set_data(implode("\r\n", $this->output_buffer)); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -2,9 +2,15 @@ | ||||
| 
 | ||||
| class CronUploaderTheme extends Themelet | ||||
| { | ||||
|     public function display_documentation(bool $running, array $queue_dirinfo, array $uploaded_dirinfo, array $failed_dirinfo, | ||||
|             string $cron_cmd, string $cron_url, ?array $log_entries) | ||||
|     { | ||||
|     public function display_documentation( | ||||
|         bool $running, | ||||
|         array $queue_dirinfo, | ||||
|         array $uploaded_dirinfo, | ||||
|         array $failed_dirinfo, | ||||
|         string $cron_cmd, | ||||
|         string $cron_url, | ||||
|         ?array $log_entries | ||||
|     ) { | ||||
|         global $page; | ||||
| 
 | ||||
| 
 | ||||
| @ -51,7 +57,7 @@ class CronUploaderTheme extends Themelet | ||||
| 			        <br />When you create the cron job, you choose when to upload new images.</li> | ||||
|             </ol>";
 | ||||
| 
 | ||||
|     $usage_html = "Upload your images you want to be uploaded to the queue directory using your FTP client or other means. 
 | ||||
|         $usage_html = "Upload your images you want to be uploaded to the queue directory using your FTP client or other means. 
 | ||||
| <br />(<b>{$queue_dirinfo['path']}</b>) | ||||
|                     <ol> | ||||
|                         <li>Any sub-folders will be turned into tags.</li> | ||||
| @ -81,9 +87,9 @@ class CronUploaderTheme extends Themelet | ||||
|         $page->add_block($block_install); | ||||
|         $page->add_block($block_usage); | ||||
| 
 | ||||
|         if(!empty($log_entries)) { | ||||
|         if (!empty($log_entries)) { | ||||
|             $log_html = "<table class='log'>"; | ||||
|             foreach($log_entries as $entry) { | ||||
|             foreach ($log_entries as $entry) { | ||||
|                 $log_html .= "<tr><th>{$entry["date_sent"]}</th><td>{$entry["message"]}</td></tr>"; | ||||
|             } | ||||
|             $log_html .= "</table>"; | ||||
| @ -111,13 +117,13 @@ class CronUploaderTheme extends Themelet | ||||
|         $html .= "<tr><td colspan='2'><input type='submit' value='Re-stage files to queue' /></td></tr>"; | ||||
|         $html .= "</table></form>"; | ||||
| 
 | ||||
|         $html .= make_form(make_link("admin/cron_uploader_clear_queue"), "POST",false,"","return confirm('Are you sure you want to delete everything in the queue folder?');") | ||||
|         $html .= make_form(make_link("admin/cron_uploader_clear_queue"), "POST", false, "", "return confirm('Are you sure you want to delete everything in the queue folder?');") | ||||
|             ."<table class='form'><tr><td>" | ||||
|             ."<input type='submit' value='Clear queue folder'></td></tr></table></form>"; | ||||
|         $html .= make_form(make_link("admin/cron_uploader_clear_uploaded"), "POST",false,"","return confirm('Are you sure you want to delete everything in the uploaded folder?');") | ||||
|         $html .= make_form(make_link("admin/cron_uploader_clear_uploaded"), "POST", false, "", "return confirm('Are you sure you want to delete everything in the uploaded folder?');") | ||||
|             ."<table class='form'><tr><td>" | ||||
|             ."<input type='submit' value='Clear uploaded folder'></td></tr></table></form>"; | ||||
|         $html .= make_form(make_link("admin/cron_uploader_clear_failed"), "POST",false,"","return confirm('Are you sure you want to delete everything in the failed folder?');") | ||||
|         $html .= make_form(make_link("admin/cron_uploader_clear_failed"), "POST", false, "", "return confirm('Are you sure you want to delete everything in the failed folder?');") | ||||
|             ."<table class='form'><tr><td>" | ||||
|             ."<input type='submit' value='Clear failed folder'></td></tr></table></form>"; | ||||
|         $html .= "</table>\n"; | ||||
|  | ||||
| @ -90,8 +90,10 @@ class DanbooruApi extends Extension | ||||
|         } elseif (isset($_GET['name'])) { | ||||
|             $namelist = explode(",", $_GET['name']); | ||||
|             foreach ($namelist as $name) { | ||||
|                 $sqlresult = $database->get_all($database->scoreql_to_sql( | ||||
|                     "SELECT id,tag,count FROM tags WHERE SCORE_STRNORM(tag) = SCORE_STRNORM(?)"), | ||||
|                 $sqlresult = $database->get_all( | ||||
|                     $database->scoreql_to_sql( | ||||
|                     "SELECT id,tag,count FROM tags WHERE SCORE_STRNORM(tag) = SCORE_STRNORM(?)" | ||||
|                 ), | ||||
|                     [$name] | ||||
|                 ); | ||||
|                 foreach ($sqlresult as $row) { | ||||
|  | ||||
| @ -66,6 +66,6 @@ class DowntimeTheme extends Themelet | ||||
| 	</body> | ||||
| </html> | ||||
| EOD | ||||
| ); | ||||
|         ); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -242,7 +242,7 @@ class Favorites extends Extension | ||||
|     { | ||||
|         global $database; | ||||
|         if ($do_set) { | ||||
|             if(!$database->exists("select 1 from user_favorites where image_id=:image_id and user_id=:user_id",["image_id"=>$image_id, "user_id"=>$user_id])) { | ||||
|             if (!$database->exists("select 1 from user_favorites where image_id=:image_id and user_id=:user_id", ["image_id"=>$image_id, "user_id"=>$user_id])) { | ||||
|                 $database->Execute( | ||||
|                     "INSERT INTO user_favorites(image_id, user_id, created_at) VALUES(:image_id, :user_id, NOW())", | ||||
|                     ["image_id"=>$image_id, "user_id"=>$user_id] | ||||
|  | ||||
| @ -269,7 +269,7 @@ class Forum extends Extension | ||||
|                 "GROUP BY f.id, f.sticky, f.title, f.date, u.name, u.email, u.class ". | ||||
|                 "ORDER BY f.sticky ASC, f.uptodate DESC LIMIT :limit OFFSET :offset", | ||||
|             ["limit"=>$threadsPerPage, "offset"=>$pageNumber * $threadsPerPage] | ||||
|                 ); | ||||
|         ); | ||||
| 
 | ||||
|         $this->theme->display_thread_list($page, $threads, $showAdminOptions, $pageNumber + 1, $totalPages); | ||||
|     } | ||||
| @ -302,7 +302,7 @@ class Forum extends Extension | ||||
|                 "ORDER BY p.date ASC ". | ||||
|                 "LIMIT :limit OFFSET :offset", | ||||
|             ["thread_id"=>$threadID, "offset"=>$pageNumber * $postsPerPage, "limit"=>$postsPerPage] | ||||
|                 ); | ||||
|         ); | ||||
|         $this->theme->display_thread($posts, $showAdminOptions, $threadTitle, $threadID, $pageNumber + 1, $totalPages); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -37,7 +37,7 @@ class HelpPages extends Extension | ||||
| 
 | ||||
|     private function get_pages(): array | ||||
|     { | ||||
|         if($this->pages==null) { | ||||
|         if ($this->pages==null) { | ||||
|             $e = new HelpPageListBuildingEvent(); | ||||
|             send_event($e); | ||||
|             $this->pages = $e->pages; | ||||
| @ -52,8 +52,6 @@ class HelpPages extends Extension | ||||
|         $pages = $this->get_pages(); | ||||
| 
 | ||||
|         if ($event->page_matches("help")) { | ||||
| 
 | ||||
| 
 | ||||
|             if ($event->count_args() == 0) { | ||||
|                 $name = array_key_first($pages); | ||||
|                 $page->set_mode(PageMode::REDIRECT); | ||||
| @ -63,7 +61,7 @@ class HelpPages extends Extension | ||||
|                 $page->set_mode(PageMode::PAGE); | ||||
|                 $name = $event->get_arg(0); | ||||
|                 $title = $name; | ||||
|                 if(array_key_exists($name, $pages)) { | ||||
|                 if (array_key_exists($name, $pages)) { | ||||
|                     $title = $pages[$name]; | ||||
|                 } else { | ||||
|                     return; | ||||
| @ -97,10 +95,10 @@ class HelpPages extends Extension | ||||
| 
 | ||||
|     public function onPageSubNavBuilding(PageSubNavBuildingEvent $event) | ||||
|     { | ||||
|         if($event->parent=="help") { | ||||
|         if ($event->parent=="help") { | ||||
|             $pages = $this->get_pages(); | ||||
|             foreach ($pages as $key=>$value) { | ||||
|                 $event->add_nav_link("help_".$key, new Link('help/'.$key),$value); | ||||
|                 $event->add_nav_link("help_".$key, new Link('help/'.$key), $value); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -22,7 +22,7 @@ class HomeTheme extends Themelet | ||||
| 	</body> | ||||
| </html> | ||||
| EOD | ||||
| ); | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     public function build_body(string $sitename, string $main_links, string $main_text, string $contact_link, $num_comma, string $counter_text) | ||||
|  | ||||
| @ -6,5 +6,4 @@ abstract class MediaConfig | ||||
|     const CONVERT_PATH = "media_convert_path"; | ||||
|     const VERSION = "ext_media_version"; | ||||
|     const MEM_LIMIT = 'media_mem_limit'; | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -14,14 +14,19 @@ class MediaResizeEvent extends Event | ||||
|     public $ignore_aspect_ratio; | ||||
|     public $allow_upscale; | ||||
| 
 | ||||
|     public function __construct(String $engine, string $input_path, string $input_type, string $output_path, | ||||
|                                 int $target_width, int $target_height, | ||||
|                                 bool $ignore_aspect_ratio = false, | ||||
|                                 string $target_format = null, | ||||
|                                 int $target_quality = 80, | ||||
|                                 bool $minimize = false, | ||||
|                                 bool $allow_upscale = true) | ||||
|     { | ||||
|     public function __construct( | ||||
|         String $engine, | ||||
|         string $input_path, | ||||
|         string $input_type, | ||||
|         string $output_path, | ||||
|         int $target_width, | ||||
|         int $target_height, | ||||
|         bool $ignore_aspect_ratio = false, | ||||
|         string $target_format = null, | ||||
|         int $target_quality = 80, | ||||
|         bool $minimize = false, | ||||
|         bool $allow_upscale = true | ||||
|     ) { | ||||
|         assert(in_array($engine, MediaEngine::ALL)); | ||||
|         $this->engine = $engine; | ||||
|         $this->input_path = $input_path; | ||||
| @ -54,5 +59,4 @@ class MediaCheckPropertiesEvent extends Event | ||||
|         $this->file_name = $file_name; | ||||
|         $this->ext = $ext; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -265,7 +265,7 @@ class Media extends Extension | ||||
|         $matches = []; | ||||
|         if (preg_match(self::CONTENT_SEARCH_TERM_REGEX, $event->term, $matches)) { | ||||
|             $field = $matches[1]; | ||||
|             if($field==="unknown") { | ||||
|             if ($field==="unknown") { | ||||
|                 $event->add_querylet(new Querylet($database->scoreql_to_sql("video IS NULL OR audio IS NULL OR image IS NULL"))); | ||||
|             } else { | ||||
|                 $event->add_querylet(new Querylet($database->scoreql_to_sql("$field = SCORE_BOOL_Y"))); | ||||
| @ -814,7 +814,7 @@ class Media extends Extension | ||||
|                 $new_height, | ||||
|                 $width, | ||||
|                 $height | ||||
|                 ) === false) { | ||||
|             ) === false) { | ||||
|                 throw new MediaException("Unable to copy resized image data to new image"); | ||||
|             } | ||||
| 
 | ||||
| @ -1039,7 +1039,7 @@ class Media extends Extension | ||||
|                 "ALTER TABLE images ADD COLUMN image SCORE_BOOL NULL" | ||||
|             )); | ||||
| 
 | ||||
|             switch($database->get_driver_name()) { | ||||
|             switch ($database->get_driver_name()) { | ||||
|                 case DatabaseDriver::PGSQL: | ||||
|                 case DatabaseDriver::SQLITE: | ||||
|                     $database->execute('CREATE INDEX images_image_idx ON images(image) WHERE image IS NOT NULL'); | ||||
| @ -1052,7 +1052,7 @@ class Media extends Extension | ||||
|             $database->set_timeout(300000); // These updates can take a little bit
 | ||||
| 
 | ||||
|             if ($database->transaction === true) { | ||||
|                $database->commit(); // Each of these commands could hit a lot of data, combining them into one big transaction would not be a good idea.
 | ||||
|                 $database->commit(); // Each of these commands could hit a lot of data, combining them into one big transaction would not be a good idea.
 | ||||
|             } | ||||
|             log_info("upgrade", "Setting predictable media values for known file types"); | ||||
|             $database->execute($database->scoreql_to_sql("UPDATE images SET image = SCORE_BOOL_N WHERE ext IN ('swf','mp3','ani','flv','mp4','m4v','ogv','webm')")); | ||||
|  | ||||
| @ -55,7 +55,7 @@ class NotATag extends Extension | ||||
|     public function onPageSubNavBuilding(PageSubNavBuildingEvent $event) | ||||
|     { | ||||
|         global $user; | ||||
|         if($event->parent==="tags") { | ||||
|         if ($event->parent==="tags") { | ||||
|             if ($user->can(Permissions::BAN_IMAGE)) { | ||||
|                 $event->add_nav_link("untags", new Link('untag/list/1'), "UnTags"); | ||||
|             } | ||||
|  | ||||
| @ -472,7 +472,7 @@ class OuroborosAPI extends Extension | ||||
|         if (empty($post->file) && !empty($post->file_url) && filter_var( | ||||
|             $post->file_url, | ||||
|             FILTER_VALIDATE_URL | ||||
|             ) !== false | ||||
|         ) !== false | ||||
|         ) { | ||||
|             // Transload from source
 | ||||
|             $meta['file'] = tempnam('/tmp', 'shimmie_transload_' . $config->get_string('transload_engine')); | ||||
|  | ||||
| @ -818,7 +818,7 @@ class Pools extends Extension | ||||
| 					SELECT COUNT(*) FROM pool_images p | ||||
| 					$query",
 | ||||
|             ["pid" => $poolID] | ||||
|             ) / $imagesPerPage); | ||||
|         ) / $imagesPerPage); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -341,7 +341,7 @@ class Ratings extends Extension | ||||
|                 $old = $_POST["rating_old"]; | ||||
|                 $new = $_POST["rating_new"]; | ||||
| 
 | ||||
|                 if($user->can(Permissions::BULK_EDIT_IMAGE_RATING)) { | ||||
|                 if ($user->can(Permissions::BULK_EDIT_IMAGE_RATING)) { | ||||
|                     $database->execute("UPDATE images SET rating = :new WHERE rating = :old", ["new"=>$new, "old"=>$old ]); | ||||
|                 } | ||||
| 
 | ||||
|  | ||||
| @ -63,9 +63,9 @@ class Trash extends Extension | ||||
|     public function onPageSubNavBuilding(PageSubNavBuildingEvent $event) | ||||
|     { | ||||
|         global $user; | ||||
|         if($event->parent=="posts") { | ||||
|             if($user->can(Permissions::VIEW_TRASH)) { | ||||
|                 $event->add_nav_link("posts_trash", new Link('/post/list/in%3Atrash/1'), "Trash",null, 60); | ||||
|         if ($event->parent=="posts") { | ||||
|             if ($user->can(Permissions::VIEW_TRASH)) { | ||||
|                 $event->add_nav_link("posts_trash", new Link('/post/list/in%3Atrash/1'), "Trash", null, 60); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -35,6 +35,9 @@ class DataUploadEvent extends Event | ||||
|         assert(is_array($metadata["tags"])); | ||||
|         assert(is_string($metadata["source"]) || is_null($metadata["source"])); | ||||
| 
 | ||||
|         // DB limits to 64 char filenames
 | ||||
|         $metadata['filename'] = substr($metadata['filename'], 0, 63); | ||||
| 
 | ||||
|         $this->metadata = $metadata; | ||||
| 
 | ||||
|         $this->set_tmpname($tmpname); | ||||
|  | ||||
| @ -25,7 +25,7 @@ class CustomHomeTheme extends HomeTheme | ||||
| 	</body> | ||||
| </html> | ||||
| EOD | ||||
| ); | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     public function build_body(string $sitename, string $main_links, string $main_text, string $contact_link, $num_comma, string $counter_text) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user