1 | <?php |
||
2 | /* |
||
3 | Plugin Name: Random ShortURLs |
||
4 | Plugin URI: https://yourls.org/ |
||
5 | Description: Assign random keywords to shorturls, like bitly (sho.rt/hJudjK) |
||
6 | Version: 1.2 |
||
7 | Author: Ozh |
||
8 | Author URI: https://ozh.org/ |
||
9 | */ |
||
10 | |||
11 | /* Release History: |
||
12 | * |
||
13 | * 1.0 Initial release |
||
14 | * 1.1 Added: don't increment sequential keyword counter & save one SQL query |
||
15 | * Fixed: plugin now complies to character set defined in config.php |
||
16 | * 1.2 Adopted as YOURLS core plugin under a new name |
||
17 | * Now configured via YOURLS options instead of editing plugin file |
||
18 | */ |
||
19 | |||
20 | // No direct call |
||
21 | if( !defined( 'YOURLS_ABSPATH' ) ) die(); |
||
22 | |||
23 | // Only register things if the old third-party plugin is not present |
||
24 | if( function_exists('ozh_random_keyword') ) { |
||
25 | yourls_add_notice( "<b>Random ShortURLs</b> plugin cannot function unless <b>Random Keywords</b> is removed first." ); |
||
26 | } else { |
||
27 | // filter registration happens conditionally, to avoid conflicts |
||
28 | // settings action is left out here, as it allows checking settings before deleting the old plugin |
||
29 | yourls_add_filter( 'random_keyword', 'ozh_random_shorturl' ); |
||
30 | yourls_add_filter( 'get_next_decimal', 'ozh_random_shorturl_next_decimal' ); |
||
31 | } |
||
32 | |||
33 | // Generate a random keyword |
||
34 | function ozh_random_shorturl() { |
||
35 | $possible = yourls_get_shorturl_charset() ; |
||
0 ignored issues
–
show
Coding Style
introduced
by
![]() |
|||
36 | $str=''; |
||
37 | while( strlen( $str ) < yourls_get_option( 'random_shorturls_length', 5 ) ) { |
||
38 | $str .= substr($possible, rand( 0, strlen( $possible ) - 1 ), 1 ); |
||
39 | } |
||
40 | return $str; |
||
41 | } |
||
42 | |||
43 | // Don't increment sequential keyword tracker |
||
44 | function ozh_random_shorturl_next_decimal( $next ) { |
||
45 | return ( $next - 1 ); |
||
46 | } |
||
47 | |||
48 | // Plugin settings page etc. |
||
49 | yourls_add_action( 'plugins_loaded', 'ozh_random_shorturl_add_settings' ); |
||
50 | function ozh_random_shorturl_add_settings() { |
||
51 | yourls_register_plugin_page( 'random_shorturl_settings', 'Random ShortURLs Settings', 'ozh_random_shorturl_settings_page' ); |
||
52 | } |
||
53 | |||
54 | function ozh_random_shorturl_settings_page() { |
||
55 | // Check if form was submitted |
||
56 | if( isset( $_POST['random_length'] ) ) { |
||
57 | // If so, verify nonce |
||
58 | yourls_verify_nonce( 'random_shorturl_settings' ); |
||
59 | // and process submission if nonce is valid |
||
60 | ozh_random_shorturl_settings_update(); |
||
61 | } |
||
62 | |||
63 | $random_length = yourls_get_option('random_shorturls_length', 5); |
||
64 | $nonce = yourls_create_nonce( 'random_shorturl_settings' ); |
||
65 | |||
66 | echo <<<HTML |
||
67 | <main> |
||
68 | <h2>Random ShortURLs Settings</h2> |
||
69 | <form method="post"> |
||
70 | <input type="hidden" name="nonce" value="$nonce" /> |
||
71 | <p> |
||
72 | <label>Random Keyword Length</label> |
||
73 | <input type="number" name="random_length" min="1" max="128" value="$random_length" /> |
||
74 | </p> |
||
75 | <p><input type="submit" value="Save" class="button" /></p> |
||
76 | </form> |
||
77 | </main> |
||
78 | HTML; |
||
79 | } |
||
80 | |||
81 | function ozh_random_shorturl_settings_update() { |
||
82 | $random_length = $_POST['random_length']; |
||
83 | |||
84 | if( $random_length ) { |
||
85 | if( is_numeric( $random_length ) ) { |
||
86 | yourls_update_option( 'random_shorturls_length', intval( $random_length ) ); |
||
87 | } else { |
||
88 | echo "Error: Length given was not a number."; |
||
89 | } |
||
90 | } else { |
||
91 | echo "Error: No length value given."; |
||
92 | } |
||
93 | } |
||
94 |