commit 0c52d6c4b3643730991278ce136d28371b6c6003 Author: Sophia Atkinson Date: Sun Mar 3 13:08:21 2024 -0800 Initial commit diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..fdddb29 --- /dev/null +++ b/LICENSE @@ -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 diff --git a/README b/README new file mode 100644 index 0000000..9a1d2d3 --- /dev/null +++ b/README @@ -0,0 +1,19 @@ +YOURLS XML 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.xml file with all of your short URLs + +Installation +------------ +1. In `/user/plugins`, create a new folder named `yourls-xml-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 +------------ \ No newline at end of file diff --git a/plugin.php b/plugin.php new file mode 100644 index 0000000..0a89d72 --- /dev/null +++ b/plugin.php @@ -0,0 +1,78 @@ +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + // Start building the XML string + $xml = ''; + $xml .= ''; + + // 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 sitemap + while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { + $shorturl = yourls_link($row['keyword']); + $timestamp = date('c', strtotime($row['timestamp'])); + + $xml .= ''; + $xml .= '' . htmlspecialchars($shorturl) . ''; + $xml .= '' . $timestamp . ''; + $xml .= 'weekly'; + $xml .= '0.8'; + $xml .= ''; + } + + // Close the XML + $xml .= ''; + + // Save the XML to sitemap.xml file + file_put_contents(YOURLS_ABSPATH . '/sitemap.xml', $xml); + } catch (PDOException $e) { + // Handle PDO exceptions + yourls_die('Error: ' . $e->getMessage()); + } +}