mirror of
https://repo.getmonero.org/AnonDev/xmrmemes.git
synced 2025-05-31 14:44:19 -04:00
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:
parent
52a9007882
commit
dbfda5cf9e
39 changed files with 54195 additions and 663 deletions
25
app/Http/Controllers/ApiController.php
Normal file
25
app/Http/Controllers/ApiController.php
Normal 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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
14
app/Http/Controllers/ThemeSwitcherController.php
Normal file
14
app/Http/Controllers/ThemeSwitcherController.php
Normal 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());
|
||||
}
|
||||
}
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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]);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue