Almost complete site

Add dark / light theme

Add social sharing on meme pages

Add approving / pending admin section

Improve design

Add pagination on profiles

Make front end date time user friendly

Finish rough draft of site

And Much more...

Still need to fix a few minor things before it goes live. Almost
complete.
This commit is contained in:
dev 2021-07-26 19:39:11 -07:00
parent 52a9007882
commit dbfda5cf9e
39 changed files with 54195 additions and 663 deletions

View file

@ -0,0 +1,25 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Meme;
class ApiController extends Controller
{
public function documentation()
{
$data = [
'memes_example' => json_encode(Meme::get(), JSON_PRETTY_PRINT),
'memes_endpoint' => url('api/memes'),
];
return view('api', ['data' => $data]);
}
public function memes()
{
$memes = Meme::get();
return $memes;
}
}

View file

@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Meme;
class DashboardController extends Controller
{
@ -23,6 +24,12 @@ class DashboardController extends Controller
*/
public function index()
{
return view('dashboard');
if (\Auth::user()->is_admin === 1) {
$memes_pending = Meme::withoutGlobalScope('approved')->where('is_approved', 0)->get();
}
$data = [
'memes_pending' => $memes_pending ?? null,
];
return view('dashboard', ['data' => $data]);
}
}

View file

@ -71,6 +71,11 @@ class MemeController extends Controller
*/
public function store(Request $request)
{
$validatedData = $request->validate([
'title' => ['required', 'string', 'max:255'],
'caption' => ['string', 'max:255', 'nullable'],
'image' => ['required', 'image'],
]);
$user = \Auth::user();
$used_ids = Meme::pluck('address_id')->toArray();
$address = Address::whereNotIn('id', $used_ids)->first('id');
@ -78,7 +83,7 @@ class MemeController extends Controller
'user_id' => $user->id,
'address_id' => $address->id,
'title' => $request->input('title'),
// 'caption' => $request->input('caption'),
'caption' => $request->input('caption'),
'image' => $request->file('image'),
]);
}
@ -133,14 +138,27 @@ class MemeController extends Controller
//
}
public function approve($id)
{
if (\Auth::user()->is_admin === 1) {
$meme = Meme::withoutGlobalScope('approved')->find($id);
$meme->is_approved = 1;
$meme->save();
return redirect()->away(url()->previous());
}
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Meme $meme
* @return \Illuminate\Http\Response
*/
public function destroy(Meme $meme)
public function destroy($id)
{
//
if (\Auth::user()->is_admin === 1) {
Meme::withoutGlobalScope('approved')->where('id', $id)->delete();
return redirect()->away(url()->previous());
}
}
}

View file

@ -0,0 +1,14 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ThemeSwitcherController extends Controller
{
public function theme(Request $request, $style)
{
$request->session()->put('theme', $style);
return redirect()->away(url()->previous());
}
}

View file

@ -2,64 +2,10 @@
namespace App\Http\Controllers;
use App\Models\Tip;
use App\Models\Address;
use App\Models\Meme;
use Illuminate\Http\Request;
use MoneroIntegrations\MoneroPhp\walletRPC;
class TipController extends Controller
{
public function check()
{
try {
$walletRPC = new walletRPC('127.0.0.1', config('app.xmr_network_port')); // Change to match your wallet (monero-wallet-rpc) IP address and port; 18083 is the customary port for mainnet, 28083 for testnet, 38083 for stagenet
$open_wallet = $walletRPC->open_wallet(config('app.xmr_wallet_name'), '');
$get_transfers = $walletRPC->get_transfers('all', true);
// dd($get_transfers);
// dd($walletRPC->get_balance());
foreach ($get_transfers['in'] as $transfer) {
$address = Address::where('address', $transfer['address'])->first();
$tip_exists = Tip::where('txid', $transfer['txid'])->first();
if ($address && !$tip_exists) {
$tip = new Tip();
$tip->address_id = $address->id;
$tip->amount = $transfer['amount'];
$tip->txid = $transfer['txid'];
$tip->height = $transfer['height'];
$tip->save();
}
}
$walletRPC->close_wallet();
} catch (\Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
public function payout()
{
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
try {
$walletRPC = new walletRPC('127.0.0.1', config('app.xmr_network_port')); // Change to match your wallet (monero-wallet-rpc) IP address and port; 18083 is the customary port for mainnet, 28083 for testnet, 38083 for stagenet
$open_wallet = $walletRPC->open_wallet(config('app.xmr_wallet_name'), '');
$tip = Tip::where('is_sent', 0)->firstOrFail();
$meme = Meme::where('address_id', $tip->address_id)->first();
if ($meme->user->address) {
$send_funds = $walletRPC->sweep_all($meme->user->address, $tip->address->address_index);
$tip->is_sent = 1;
$tip->save();
}
$walletRPC->close_wallet();
} catch (\Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
/**
* Display a listing of the resource.
*

View file

@ -4,13 +4,16 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use App\Models\Meme;
class UserController extends Controller
{
public function show($id)
{
$user = User::where('id', $id)->firstOrFail();
$data = [
'user' => User::with('memes')->where('id', $id)->firstOrFail(),
'user' => $user,
'memes' => Meme::where('user_id', $user->id)->orderByDesc('created_at')->paginate(20),
];
return view('profile', ['data' => $data]);
}