Initial commit, and final commit.

This commit is contained in:
Sophia Atkinson 2024-03-02 11:46:07 -08:00
commit 2c8e4bc2cf
Signed by: Sophia
GPG Key ID: 73928E5CCCD28BE1
11 changed files with 376 additions and 0 deletions

129
.github/CONTRIBUTING.md vendored Normal file
View File

@ -0,0 +1,129 @@
# Contributing
Please take a moment to review this document in order to make the contribution
process easy and effective for everyone involved.
Submitting an issue that is improperly or incompletely written is a waste of time for everybody.
Following these guidelines helps to communicate that you respect the time of
the developers managing and developing this open source project. In return,
they should reciprocate that respect in addressing your issue or assessing
patches and features.
## Using the issue tracker
The issue tracker is the preferred channel for [bug reports](#bug-reports),
[feature requests](#feature-requests) and [submitting pull
requests](#pull-requests), but please respect the following restrictions:
* Please **do not** use the issue tracker for personal support requests.
Use [discussions](https://github.com/telepathics/yourls-emojis/discussions) instead to ask the community for help.
* Please **do not** derail or troll issues.
Keep the discussion on topic and respect the opinions of others.
## Bug reports
A bug is a _demonstrable problem_ that is caused by the code in the repository.
Good bug reports are extremely helpful - thank you!
Guidelines for bug reports:
1. **Use the GitHub issue search**
Check if the issue has already been reported. Reporting duplicates is a waste of
time for everyone. Search in **all issues**, open and closed.
2. **Check if the issue has been fixed**
Try to reproduce it using the latest `master` or development branch in the repository.
Maybe it has been fixed since the last stable release.
3. **Give details**
A good bug report shouldn't leave others needing to chase you up for more
information. Please try to be as detailed as possible in your report.
Give any information that is relevant to the bug:
* YOURLS & MySQL & PHP versions
* Server Software
* Browser name & version
What is the expected output? What do you see instead? See the report example below.
7. **Isolate the problem**
Isolate the problem as much as you can, reduce to the bare minimum required to reproduce the issue.
Don't describe a general situation that doesn't work as expected and just count on us to pin
point the problem.
## Feature requests
Feature requests are welcome. But take a moment to find out whether your idea
fits with the scope and aims of the project. It's up to *you* to make a strong
case to convince the YOURLS developers of the merits of this feature. Please
provide as much detail and context as possible.
## Pull requests
Good pull requests - patches, improvements, new features - are a fantastic
help. They should remain focused in scope and avoid containing unrelated
commits.
1. **Please ask first**
Before embarking on any significant pull request (e.g. implementing features,
refactoring code), otherwise you risk spending a lot of time working on
something that the developers might not want to merge into the project.
2. **Licensing**
By submitting a patch, you agree that your code will be licensed under the
[MIT License](https://github.com/telepathics/yourls-emojis/blob/master/LICENSE) terms.
3. **Coding Standards**
Please adhere to the coding conventions used throughout the project (indentation,
comments, etc.). Make sure you've tested your patch under
different scenarios (various browsers, non default installation path, etc.).
Adhering to the following this process is the best way to get your work
merged:
1. [Fork the repo](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo), clone your fork,
and configure the remotes.
```bash
# Clone your fork of the repo into the current directory
git clone https://github.com/<your-username>/<repo-name>
# Navigate to the newly cloned directory
cd <repo-name>
# Assign the original repo to a remote called "upstream"
git remote add upstream https://github.com/<upsteam-owner>/<repo-name>
```
2. If you cloned a while ago, get the latest changes from upstream.
```bash
git checkout <dev-branch>
git pull upstream <dev-branch>
```
3. Create a new topic branch (off the main project development branch) to
contain your feature, change, or fix.
```bash
git checkout -b <topic-branch-name>
```
4. Commit your changes in logical chunks. Please adhere to these [git commit
message guidelines](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
or your code is unlikely be merged into the main project. Use Git's
[interactive rebase](https://docs.github.com/en/github/using-git/about-git-rebase)
feature to tidy up your commits before making them public.
5. Locally merge (or rebase) the upstream development branch into your topic branch:
```bash
git pull [--rebase] upstream <dev-branch>
```
6. Push your topic branch up to your fork:
```bash
git push origin <topic-branch-name>
```
10. [Open a Pull Request](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-requests)
with a clear title and description.

3
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,3 @@
# These are supported funding model platforms
github: telepathics

36
.github/workflows/php.yml vendored Normal file
View File

@ -0,0 +1,36 @@
name: PHP Composer
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Validate composer.json and composer.lock
run: composer validate --strict
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v2
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
run: composer install --prefer-dist --no-progress
# Add a test script to composer.json, for instance: "test": "vendor/bin/phpunit"
# Docs: https://getcomposer.org/doc/articles/scripts.md
# - name: Run test suite
# run: composer run-script test

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.DS_Store
/vendor/
/build/

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 telepathics
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
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 OR COPYRIGHT HOLDERS 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.

36
README.md Normal file
View File

@ -0,0 +1,36 @@
# **This is not my code!** The original plugin was removed from GitHub at some point. This is a mirror. It has issues that I may fix at a later date, but for now, this is as you would have downloaded it from the original repository. All credit goes to [Telepathics](https://github.com/telepathics/) :)
# YOURLS Emojis
A YOURLS plugin that allows emojis in the custom short URLs.
## Description
Emojis in domain names and URLs are becoming increasingly popular, so I thought it would be fun to be able to include them in your YOURLS shortcodes.
[![Mentioned in Awesome YOURLS](https://awesome.re/mentioned-badge.svg)](https://github.com/YOURLS/awesome-yourls/)
[![Github Sponsors](https://img.shields.io/badge/sponsors-4-green.svg)](https://github.com/sponsors/telepathics)
[![PHP Composer](https://github.com/sophiaatkinson/yourls-emojis/actions/workflows/php.yml/badge.svg?branch=main)](https://github.com/sophiaatkinson/yourls-emojis/actions/workflows/php.yml)
## Installation
1. Unzip the [latest release](https://github.com/sophiaatkinson/yourls-emojis/releases) and move it into your YOURLS `/user/plugins` folder
2. Visit your plugins page (e.g. https://sho.rt/admin/plugins.php)
3. Activate the "Emojis" plugin by telepathics
4. Have fun!
### Upgrading
1. Delete (or replace) the old folder
2. Follow the aforementioned installation instructions
## Contributing
Feature suggestion? Bug to report?
~~__Before opening any issue, please search for existing [issues](https://github.com/telepathics/yourls-emojis/issues) (open and closed) and read the [Contributing Guidelines](https://github.com/telepathics/yourls-emojis/blob/main/.github/CONTRIBUTING.md).__~~
~~Also visit the living [to do](https://github.com/telepathics/yourls-emojis/projects/1) kanban board and [discussions](https://github.com/telepathics/yourls-emojis/discussions) page.~~
## License
Released under the [MIT License](https://opensource.org/licenses/MIT).
See also:
[YOURLS](https://github.com/YOURLS/YOURLS) ♡
[SteppingHat/php-emoji-detector](https://github.com/SteppingHat/php-emoji-detector) ♡ [unicode.org](https://unicode.org/Public/emoji/13.1/emoji-test.txt)

10
composer.json Normal file
View File

@ -0,0 +1,10 @@
{
"name": "telepathics/yourls-emojis",
"description": "A YOURLS plugin that allows emojis in the custom short URLs",
"license": "MIT",
"homepage": "https://github.com/telepathics/yourls-emojis",
"require": {
"php": ">=7.2",
"steppinghat/emoji-detector": "^1.1"
}
}

63
composer.lock generated Normal file
View File

@ -0,0 +1,63 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "d8ae5b9fddab58bd68089f83a8564e1e",
"packages": [
{
"name": "steppinghat/emoji-detector",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/SteppingHat/php-emoji-detector.git",
"reference": "d2301e9553795e1ac2f3f2638438b3808654c57f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/SteppingHat/php-emoji-detector/zipball/d2301e9553795e1ac2f3f2638438b3808654c57f",
"reference": "d2301e9553795e1ac2f3f2638438b3808654c57f",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-mbstring": "*",
"php": ">=7.1"
},
"require-dev": {
"symfony/phpunit-bridge": "^5.0@dev"
},
"type": "library",
"autoload": {
"psr-4": {
"SteppingHat\\EmojiDetector\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Javan Eskander",
"homepage": "https://javaneskander.com"
}
],
"description": "Detect and validate emoji in an input string",
"homepage": "https://github.com/steppinghat/emoji-detector",
"time": "2021-03-18T06:03:22+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": ">=7.2"
},
"platform-dev": [],
"plugin-api-version": "1.1.0"
}

50
plugin.php Normal file
View File

@ -0,0 +1,50 @@
<?php
/*
Plugin Name: Emojis
Description: Create an emoji-only short link, like http://sho.rt/ or http://sho.rt/😎🆒🔗
Version: 1.0
Author: telepathics
Author URI: https://telepathics.xyz
*/
if( !defined( 'YOURLS_ABSPATH' ) ) die();
require_once(__DIR__ . '/vendor/autoload.php');
use SteppingHat\EmojiDetector;
/*
* Accept detected emojis
*/
yourls_add_filter( 'get_shorturl_charset', 'path_emojis_in_charset');
function path_emojis_in_charset($in) {
return $in . file_get_contents(__DIR__ . '/util/emojis.txt');
}
/*
* Accepts URLs that are ONLY emojis
*/
yourls_add_filter( 'sanitize_url', 'path_emojis_sanitize_url' );
function path_emojis_sanitize_url($unsafe_url) {
$clean_url = '';
$detector = new SteppingHat\EmojiDetector\EmojiDetector();
$detect_emoji = $detector->detect(urldecode($unsafe_url));
if( sizeof($detect_emoji) > 0 ) {
foreach ($detect_emoji as $emoji) {
$clean_url .= $emoji->getEmoji();
}
return $clean_url;
}
return $unsafe_url;
}
/*
* filter wrong spacing whoopsies
* see @link https://github.com/YOURLS/YOURLS/issues/1303
*/
yourls_add_filter( 'sanitize_url', 'fix_long_url' );
function fix_long_url( $url, $unsafe_url ) {
$search = array ( '%2520', '%2521', '%2522', '%2523', '%2524', '%2525', '%2526', '%2527', '%2528', '%2529', '%252A', '%252B', '%252C', '%252D', '%252E', '%252F', '%253D', '%253F', '%255C', '%255F' );
$replace = array ( '%20', '%21', '%22', '%23', '%24', '%25', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C', '%2D', '%2E', '%2F', '%3D', '%3F', '%5C', '%5F' );
$url = str_ireplace ( $search, $replace ,$url );
return yourls_apply_filter( 'after_fix_long_url', $url, $unsafe_url );
}

1
util/emojis.txt Normal file

File diff suppressed because one or more lines are too long

24
util/get_emojis.php Normal file
View File

@ -0,0 +1,24 @@
<?php
/*
* you can update the emoji list by changing the unicode link below
* then, visit your site's /user/plugins/yourls-emojis/util/get_emojis.php page to run the script
*
* most recent 13.1 https://www.unicode.org/emoji/charts/full-emoji-list.html
*/
if( !defined( 'YOURLS_ABSPATH' ) ) die();
require_once __DIR__ . '/../vendor/autoload.php';
/*
* Last retrieved: April 11, 2021
*/
function get_emojis() {
$detect_emoji = Emoji\detect_emoji(file_get_contents('https://unicode.org/Public/emoji/13.1/emoji-test.txt'));
$file = fopen(__DIR__ . '/emojis.txt', 'w+');
if ( sizeof($detect_emoji) > 0 ) {
foreach ( $detect_emoji as $emoji ) {
fwrite($file, $emoji['emoji']);
}
}
}
get_emojis();