mirror of
https://github.com/SophiaAtkinson/yourls-html-sitemap.git
synced 2025-06-26 17:47:42 -07:00
Initial commit
This commit is contained in:
24
LICENSE
Normal file
24
LICENSE
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
This is free and unencumbered software released into the public domain.
|
||||||
|
|
||||||
|
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||||
|
distribute this software, either in source code form or as a compiled
|
||||||
|
binary, for any purpose, commercial or non-commercial, and by any
|
||||||
|
means.
|
||||||
|
|
||||||
|
In jurisdictions that recognize copyright laws, the author or authors
|
||||||
|
of this software dedicate any and all copyright interest in the
|
||||||
|
software to the public domain. We make this dedication for the benefit
|
||||||
|
of the public at large and to the detriment of our heirs and
|
||||||
|
successors. We intend this dedication to be an overt act of
|
||||||
|
relinquishment in perpetuity of all present and future rights to this
|
||||||
|
software under copyright law.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
For more information, please refer to <https://unlicense.org>
|
19
README.md
Normal file
19
README.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
YOURLS HTML Sitemap Generator
|
||||||
|
====================
|
||||||
|
|
||||||
|
Plugin for [YOURLS](https://yourls.org) `v1.19.2`.
|
||||||
|
|
||||||
|
*I haven't tested it with older versions so tread with caution :)*
|
||||||
|
|
||||||
|
Description
|
||||||
|
-----------
|
||||||
|
Generates a sitemap.html file with all of your short URLs
|
||||||
|
|
||||||
|
Installation
|
||||||
|
------------
|
||||||
|
1. In `/user/plugins`, create a new folder named `yourls-html-sitemap`.
|
||||||
|
2. Drop these files in that directory.
|
||||||
|
3. Go to the Plugins administration page ( *eg* `http://sho.rt/admin/plugins.php` ) and activate the plugin.
|
||||||
|
|
||||||
|
Thats all folks
|
||||||
|
------------
|
85
plugin.php
Normal file
85
plugin.php
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?php
|
||||||
|
/*
|
||||||
|
Plugin Name: YOURLS HTML Sitemap Generator
|
||||||
|
Plugin URI: https://github.com/yourls/yourls
|
||||||
|
Description: Generates a sitemap.html file with all of your short URLs
|
||||||
|
Version: 1.0
|
||||||
|
Author: Sophia Atkinson
|
||||||
|
Author URI: https://sophia.wtf
|
||||||
|
*/
|
||||||
|
|
||||||
|
// No direct call
|
||||||
|
if (!defined('YOURLS_ABSPATH')) die();
|
||||||
|
|
||||||
|
// Include YOURLS loader
|
||||||
|
require_once YOURLS_ABSPATH . '/includes/load-yourls.php';
|
||||||
|
|
||||||
|
// Hook to add the sitemap action
|
||||||
|
yourls_add_action('pre_html_head', 'generate_html_sitemap');
|
||||||
|
|
||||||
|
// Function to generate the sitemap.html file
|
||||||
|
function generate_html_sitemap() {
|
||||||
|
global $ydb;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Initialize PDO connection
|
||||||
|
$pdo = new PDO('mysql:host=' . YOURLS_DB_HOST . ';dbname=' . YOURLS_DB_NAME, YOURLS_DB_USER, YOURLS_DB_PASS);
|
||||||
|
|
||||||
|
// Set PDO to throw exceptions
|
||||||
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||||
|
|
||||||
|
// Start building the HTML string
|
||||||
|
$html = '<!DOCTYPE html>';
|
||||||
|
$html .= '<html>';
|
||||||
|
$html .= '<head>';
|
||||||
|
$html .= '<title>YOURLS HTML Sitemap</title>';
|
||||||
|
$html .= '</head>';
|
||||||
|
$html .= '<body>';
|
||||||
|
$html .= '<h1>YOURLS HTML Sitemap</h1>';
|
||||||
|
$html .= '<ul>';
|
||||||
|
|
||||||
|
// Check if the 'private' column exists in the YOURLS database table
|
||||||
|
$table_name = YOURLS_DB_TABLE_URL;
|
||||||
|
$stmt = $pdo->query("DESCRIBE `$table_name`");
|
||||||
|
$private_column_exists = false;
|
||||||
|
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||||
|
if ($row['Field'] === 'private') {
|
||||||
|
$private_column_exists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($private_column_exists) {
|
||||||
|
// Retrieve all public short URLs
|
||||||
|
$stmt = $pdo->prepare("SELECT `keyword`, `url`, `timestamp` FROM `$table_name` WHERE `private` = '0'");
|
||||||
|
$stmt->execute();
|
||||||
|
} else {
|
||||||
|
// Retrieve all short URLs (assuming all are public)
|
||||||
|
$stmt = $pdo->prepare("SELECT `keyword`, `url`, `timestamp` FROM `$table_name`");
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Loop through each link and add it to the HTML sitemap
|
||||||
|
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||||
|
$shorturl = yourls_link($row['keyword']);
|
||||||
|
$longurl = htmlspecialchars($row['url']);
|
||||||
|
$timestamp = date('c', strtotime($row['timestamp']));
|
||||||
|
|
||||||
|
$html .= '<li>';
|
||||||
|
$html .= '<a href="' . $shorturl . '">' . $shorturl . '</a>';
|
||||||
|
$html .= ' - ' . $longurl . ' - Last Modified: ' . $timestamp;
|
||||||
|
$html .= '</li>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close the HTML
|
||||||
|
$html .= '</ul>';
|
||||||
|
$html .= '</body>';
|
||||||
|
$html .= '</html>';
|
||||||
|
|
||||||
|
// Save the HTML to sitemap.html file
|
||||||
|
file_put_contents(YOURLS_ABSPATH . '/sitemap.html', $html);
|
||||||
|
} catch (PDOException $e) {
|
||||||
|
// Handle PDO exceptions
|
||||||
|
yourls_die('Error: ' . $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user