Initial commit, and final commit.
This commit is contained in:
commit
2c8e4bc2cf
|
@ -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.
|
|
@ -0,0 +1,3 @@
|
|||
# These are supported funding model platforms
|
||||
|
||||
github: telepathics
|
|
@ -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
|
|
@ -0,0 +1,3 @@
|
|||
.DS_Store
|
||||
/vendor/
|
||||
/build/
|
|
@ -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.
|
|
@ -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)
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -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 );
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -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();
|
Loading…
Reference in New Issue