136 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
class RatingsTheme extends Themelet
 | 
						|
{
 | 
						|
    public function get_rater_html(int $image_id, string $rating, bool $can_rate): string
 | 
						|
    {
 | 
						|
        $human_rating = Ratings::rating_to_human($rating);
 | 
						|
        $html = "
 | 
						|
			<tr>
 | 
						|
				<th>Rating</th>
 | 
						|
				<td>
 | 
						|
		".($can_rate ? "
 | 
						|
					<span class='view'>$human_rating</span>
 | 
						|
					<span class='edit'>
 | 
						|
						".$this->get_selection_rater_html([$rating])."
 | 
						|
					</span>
 | 
						|
		" : "
 | 
						|
					$human_rating
 | 
						|
		")."
 | 
						|
				</td>
 | 
						|
			</tr>
 | 
						|
		";
 | 
						|
        return $html;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
    public function display_form(array $current_ratings, array $available_ratings)
 | 
						|
    {
 | 
						|
        global $page, $database;
 | 
						|
 | 
						|
        $html = make_form(make_link("admin/update_ratings"))."<table class='form'><tr>
 | 
						|
        <th>Change</th><td><select name='rating_old' required='required'><option></option>";
 | 
						|
            foreach ($current_ratings as $key=>$value) {
 | 
						|
                $html .= "<option value='$key'>$value</option>";
 | 
						|
            }
 | 
						|
        $html .= "</select></td></tr>
 | 
						|
        <tr><th>To</th><td><select name='rating_new'  required='required'><option></option>";
 | 
						|
        foreach ($available_ratings as $value) {
 | 
						|
            $html .= "<option value='$value->code'>$value->name</option>";
 | 
						|
        }
 | 
						|
        $html .= "</select></td></tr>
 | 
						|
        <tr><td colspan='2'><input type='submit' value='Update'></td></tr></table>
 | 
						|
        </form>\n";
 | 
						|
        $page->add_block(new Block("Update Ratings", $html));
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    // public function display_bulk_rater(string $terms)
 | 
						|
    // {
 | 
						|
    //     global $page;
 | 
						|
    //     $html = "
 | 
						|
	// 		".make_form(make_link("admin/bulk_rate"))."
 | 
						|
	// 			<input type='hidden' name='query' value='".html_escape($terms)."'>
 | 
						|
	// 			<select name='rating'>
 | 
						|
	// 				<option value='s'>Safe</option>
 | 
						|
	// 				<option value='q'>Questionable</option>
 | 
						|
	// 				<option value='e'>Explicit</option>
 | 
						|
	// 				<option value='u'>Unrated</option>
 | 
						|
	// 			</select>
 | 
						|
	// 			<input type='submit' value='Go'>
 | 
						|
	// 		</form>
 | 
						|
	// 	";
 | 
						|
    //     $page->add_block(new Block("List Controls", $html, "left"));
 | 
						|
    // }
 | 
						|
 | 
						|
    public function get_selection_rater_html(array $selected_options, bool $multiple = false, array $available_options = null) {
 | 
						|
        global $_shm_ratings;
 | 
						|
 | 
						|
		$output = "<select name='rating".($multiple ? "[]' multiple='multiple'" : "' ")." >";
 | 
						|
 | 
						|
        $options = Ratings::get_sorted_ratings();
 | 
						|
 | 
						|
		foreach($options as $option) {
 | 
						|
		    if($available_options!=null && !in_array($option->code, $available_options)) {
 | 
						|
		        continue;
 | 
						|
            }
 | 
						|
 | 
						|
			$output .= "<option value='".$option->code."' ".
 | 
						|
                (in_array($option->code,$selected_options) ? "selected='selected'": "")
 | 
						|
                .">".$option->name."</option>";
 | 
						|
		}
 | 
						|
		return $output."</select>";
 | 
						|
    }
 | 
						|
 | 
						|
    public function get_help_html(array $ratings)
 | 
						|
    {
 | 
						|
        $output =  '<p>Search for images with one or more possible ratings.</p>
 | 
						|
        <div class="command_example">
 | 
						|
        <pre>rating:'.$ratings[0]->search_term.'</pre>
 | 
						|
        <p>Returns images with the '.$ratings[0]->name.' rating.</p>
 | 
						|
        </div> 
 | 
						|
        <p>Ratings can be abbreviated to a single letter as well</p>
 | 
						|
        <div class="command_example">
 | 
						|
        <pre>rating:'.$ratings[0]->code.'</pre>
 | 
						|
        <p>Returns images with the '.$ratings[0]->name.' rating.</p>
 | 
						|
        </div> 
 | 
						|
        <p>If abbreviations are used, multiple ratings can be searched for.</p>
 | 
						|
        <div class="command_example">
 | 
						|
        <pre>rating:'.$ratings[0]->code.$ratings[1]->code.'</pre>
 | 
						|
        <p>Returns images with the '.$ratings[0]->name.' or '.$ratings[1]->name.' rating.</p>
 | 
						|
        </div> 
 | 
						|
        <p>Available ratings:</p>
 | 
						|
        <table>
 | 
						|
        <tr><th>Name</th><th>Search Term</th><th>Abbreviation</th></tr>
 | 
						|
        ';
 | 
						|
        foreach ($ratings as $rating) {
 | 
						|
            $output .= "<tr><td>{$rating->name}</td><td>{$rating->search_term}</td><td>{$rating->code}</td></tr>";
 | 
						|
        }
 | 
						|
        $output .= "</table>";
 | 
						|
        return $output;
 | 
						|
    public function get_user_options(User $user, array $selected_ratings, array $available_ratings): string
 | 
						|
    {
 | 
						|
        $html = "
 | 
						|
                <p>".make_form(make_link("user_admin/default_ratings"))."
 | 
						|
                    <input type='hidden' name='id' value='$user->id'>
 | 
						|
                    <table style='width: 300px;'>
 | 
						|
                        <thead>
 | 
						|
                            <tr><th colspan='2'>Default Rating Filter</th></tr>
 | 
						|
                        </thead>
 | 
						|
                        <tbody>
 | 
						|
                        <tr><td>This controls the default rating search results will be filtered by, and nothing else. To override in your search results, add rating:* to your search.</td></tr>
 | 
						|
                            <tr><td>
 | 
						|
                                ".$this->get_selection_rater_html($selected_ratings, true, $available_ratings)."
 | 
						|
                            </td></tr>
 | 
						|
                        </tbody>
 | 
						|
                        <tfoot>
 | 
						|
                            <tr><td><input type='submit' value='Save'></td></tr>
 | 
						|
                        </tfoot>
 | 
						|
                    </table>
 | 
						|
                </form>
 | 
						|
            ";
 | 
						|
        return $html;
 | 
						|
    }
 | 
						|
}
 |