Skip to content
Commits on Source (20)
<?php
namespace Minds\Common;
use ReflectionClass;
abstract class ChannelMode
{
const OPEN = 0;
const MODERATED = 1;
const CLOSED = 2;
final public static function toArray() : array
{
return (new ReflectionClass(static::class))->getConstants();
}
final public static function isValid($value) : bool
{
return in_array($value, static::toArray(), true);
}
}
<?php
/**
* Converts a static class to use instances
*/
namespace Minds\Common;
class StaticToInstance
{
/** @var $class */
private $class;
public function __construct($class)
{
$this->setClass($class);
}
/**
* Set the class in question
* @return StripeStaticToOO
*/
public function setClass($class)
{
$this->class = new \ReflectionClass($class);
return clone $this;
}
/**
* Call the static functions as OO style
* @param string $method
* @param array $arguments
* @return midex
*/
public function __call($method, $arguments)
{
$instance = $this->class->newInstanceWithoutConstructor();
return $instance::$method(...$arguments);
}
}
<?php
namespace Minds\Controllers\Cli;
use Minds\Core;
use Minds\Core\Di\Di;
use Minds\Cli;
use Minds\Interfaces;
use Minds\Exceptions;
use Minds\Entities;
use Minds\Core\Data\ElasticSearch\Prepared;
use Minds\Core\Analytics\Iterators\SignupsOffsetIterator;
use Minds\Core\Boost\Network\Manager;
use Minds\Core\Util\BigNumber;
use Minds\Helpers\Counters;
class Stripe extends Cli\Controller implements Interfaces\CliControllerInterface
{
private $db;
private $es;
private $elasticRepository;
private $pendingBulkInserts = [];
public function __construct()
{
error_reporting(E_ALL);
ini_set('display_errors', 1);
}
public function help($command = null)
{
$this->out('TBD');
}
public function exec()
{
echo "1";
}
public function get_payment_intent()
{
$intent = new Core\Payments\Stripe\Intents\PaymentIntent();
$intent->setAmount(2000);
$intentManager = new Core\Payments\Stripe\Intents\Manager();
$intent = $intentManager->add($intent);
var_dump($intent);
}
public function get_setup_intent()
{
$intent = new Core\Payments\Stripe\Intents\SetupIntent();
$intentManager = new Core\Payments\Stripe\Intents\Manager();
$intent = $intentManager->add($intent);
var_dump($intent->getClientSecret());
}
public function get_setup_intent_payment_method()
{
$id = $this->getOpt('id');
$intentManager = new Core\Payments\Stripe\Intents\Manager();
$intent = $intentManager->get($id);
var_dump($intent);
}
}
......@@ -12,6 +12,7 @@ use Minds\Helpers;
use Minds\Interfaces;
use Minds\Entities;
use Minds\Api\Factory;
use Minds\Common\ChannelMode;
use ElggFile;
class channel implements Interfaces\Api
......@@ -242,6 +243,10 @@ class channel implements Interfaces\Api
}
}
if (isset($_POST['mode']) && ChannelMode::isValid($_POST['mode'])) {
$update['mode'] = $_POST['mode'];
}
if (isset($_POST['social_profiles']) && is_array($_POST['social_profiles'])) {
$profiles = [];
......@@ -304,14 +309,6 @@ class channel implements Interfaces\Api
$channel->enabled = 'no';
$channel->save();
$customer = (new Core\Payments\Customer())
->setUser($channel);
$stripe = Core\Di\Di::_()->get('StripePayments');
$customer = $stripe->getCustomer($customer);
if ($customer) {
$stripe->deleteCustomer($customer);
}
(new Core\Data\Sessions())->destroyAll($channel->guid);
}
......
......@@ -301,7 +301,7 @@ class boost implements Interfaces\Api
$maxDaily = Di::_()->get('Config')->get('max_daily_boost_views') / 1000;
return Factory::response([
'status' => 'error',
'message' => "Exceeded maximum of ".$maxDaily." offchain tokens per day."
'message' => "Exceeded maximum of ".$maxDaily." offchain tokens per 24 hours."
]);
}
......
......@@ -88,7 +88,7 @@ class feed implements Interfaces\Api
/** @var Core\Boost\Network\Iterator $iterator */
$iterator = Core\Di\Di::_()->get('Boost\Network\Iterator');
$iterator
->setLimit(12)
->setLimit(10)
->setOffset($offset)
->setRating($rating)
->setQuality($quality)
......@@ -118,11 +118,13 @@ class feed implements Interfaces\Api
$next = $iterator->getOffset();
if (isset($boosts[1]) && !$isBoostFeed) { // Always offset to 2rd in list if in rotator
if (!$offset) {
$next = $boosts[1]->getTimestamp();
} else {
$next = 0;
}
// if (!$offset) {
// $next = $boosts[1]->getTimestamp();
// } else {
// $next = 0;
// }
$len = count($boosts);
$next = $boosts[$len -1]->getTimestamp();
} elseif ($isBoostFeed) {
$len = count($boosts);
$next = $boosts[$len -1]->getTimestamp();
......@@ -130,7 +132,7 @@ class feed implements Interfaces\Api
// $ttl = 1800; // 30 minutes
// if (($next / 1000) < strtotime('48 hours ago')) {
$ttl = 150; // 2.5 minutes;
$ttl = 300; // 5 minutes;
// }
$cacher->set(Core\Session::getLoggedinUser()->guid . ':boost-offset-rotator', $next, $ttl);
......
......@@ -57,6 +57,9 @@ class container implements Interfaces\Api
case 'blogs':
$type = 'object:blog';
break;
case 'all':
$type = 'all';
break;
}
//
......
<?php
/**
*
*/
namespace Minds\Controllers\api\v2\payments\stripe;
use Minds\Api\Factory;
use Minds\Common\Cookie;
use Minds\Core\Di\Di;
use Minds\Core\Config;
use Minds\Core\Session;
use Minds\Interfaces;
use Minds\Core\Payments\Stripe;
class connect implements Interfaces\Api
{
public function get($pages)
{
$user = Session::getLoggedInUser();
$connectManager = new Stripe\Connect\Manager();
$account = $connectManager->getByUser($user);
return Factory::response([
'account' => $account->export(),
]);
}
public function post($pages)
{
return Factory::response([]);
}
public function put($pages)
{
return Factory::response([]);
}
public function delete($pages)
{
$user = Session::getLoggedInUser();
$account = new Stripe\Connect\Account();
$account->setUserGuid($user->getGuid())
->setUser($user)
->setId($user->getMerchant()['id']);
$connectManager = new Stripe\Connect\Manager();
$connectManager->delete($account);
return Factory::response([]);
}
}
<?php
/**
*
*/
namespace Minds\Controllers\api\v2\payments\stripe\connect;
use Minds\Api\Factory;
use Minds\Common\Cookie;
use Minds\Core\Di\Di;
use Minds\Core\Config;
use Minds\Core\Session;
use Minds\Interfaces;
use Minds\Core\Payments\Stripe;
class bank implements Interfaces\Api
{
public function get($pages)
{
$user = Session::getLoggedInUser();
$connectManager = new Stripe\Connect\Manager();
return Factory::response([
]);
}
public function post($pages)
{
$user = Session::getLoggedInUser();
$connectManager = new Stripe\Connect\Manager();
$account = $connectManager->getByUser($user);
if (!$account) {
return Factory::response([
'status' => 'error',
'message' => 'You must have a USD account to add a bank account',
]);
}
$account->setAccountNumber($_POST['accountNumber'])
->setCountry($_POST['country'])
->setRoutingNumber($_POST['routingNumber']);
try {
$connectManager->addBankAccount($account);
} catch (\Exception $e) {
return Factory::response([
'status' => 'error',
'message' => $e->getMessage(),
]);
}
return Factory::response([]);
}
public function put($pages)
{
return Factory::response([]);
}
public function delete($pages)
{
return Factory::response([]);
}
}
<?php
/**
*
*/
namespace Minds\Controllers\api\v2\payments\stripe;
use Minds\Api\Factory;
use Minds\Common\Cookie;
use Minds\Core\Di\Di;
use Minds\Core\Config;
use Minds\Core\Session;
use Minds\Interfaces;
use Minds\Core\Payments\Stripe;
class intents implements Interfaces\Api
{
public function get($pages)
{
return Factory::response([
]);
}
public function post($pages)
{
$user = Session::getLoggedInUser();
switch ($pages[0]) {
case 'apply':
$intent = new Stripe\Intents\SetupIntent();
$intent->setId($_POST['intent_id']);
$intentManager = new Stripe\Intents\Manager();
$intent = $intentManager->get($_POST['intent_id']);
$customersManager = new Stripe\Customers\Manager();
$customer = $customersManager->getFromUserGuid($user->getGuid());
if (!$customer) {
$customer = new Stripe\Customers\Customer;
$customer->setUser($user)
->setUserGuid($user->getGuid());
}
$customer->setPaymentMethod($intent->getPaymentMethod());
$customersManager->updatePaymentMethod($customer);
var_dump($customer); exit;
break;
}
return Factory::response([]);
}
public function put($pages)
{
$user = Session::getLoggedInUser();
$intent = new Stripe\Intents\SetupIntent();
$intentManager = new Stripe\Intents\Manager();
$intent = $intentManager->add($intent);
return Factory::response([
'intent' => $intent->export(),
]);
}
public function delete($pages)
{
$user = Session::getLoggedInUser();
$user->setCanary(false);
$user->save();
return Factory::response([]);
}
}
<?php
/**
*
*/
namespace Minds\Controllers\api\v2\payments\stripe;
use Minds\Api\Factory;
use Minds\Common\Cookie;
use Minds\Core\Di\Di;
use Minds\Core\Config;
use Minds\Core\Session;
use Minds\Interfaces;
use Minds\Core\Payments\Stripe;
class paymentmethods implements Interfaces\Api
{
public function get($pages)
{
$user = Session::getLoggedInUser();
$paymentMethodsManager = new Stripe\PaymentMethods\Manager();
$paymentMethods = $paymentMethodsManager->getList([
'limit' => 12,
'user_guid' => $user->getGuid(),
]);
return Factory::response([
'paymentmethods' => Factory::exportable($paymentMethods),
]);
}
public function post($pages)
{
return Factory::response([]);
}
public function put($pages)
{
return Factory::response([]);
}
public function delete($pages)
{
$paymentMethodsManager = new Stripe\PaymentMethods\Manager();
$paymentMethodsManager->delete($pages[0]);
return Factory::response([]);
}
}
<?php
/**
*
*/
namespace Minds\Controllers\api\v2\payments\stripe\paymentmethods;
use Minds\Api\Factory;
use Minds\Common\Cookie;
use Minds\Core\Di\Di;
use Minds\Core\Config;
use Minds\Core\Session;
use Minds\Interfaces;
use Minds\Core\Payments\Stripe;
class apply implements Interfaces\Api
{
public function get($pages)
{
return Factory::response([]);
}
public function post($pages)
{
$user = Session::getLoggedInUser();
$intent = new Stripe\Intents\SetupIntent();
$intent->setId($_POST['intent_id']);
$intentManager = new Stripe\Intents\Manager();
$paymentMethodsManager = new Stripe\PaymentMethods\Manager();
$customersManager = new Stripe\Customers\Manager();
// Get the intent
$intent = $intentManager->get($_POST['intent_id']);
// Grab our customerId
$customer = $customersManager->getFromUserGuid($user->getGuid());
// Build a payment method
$paymentMethod = new Stripe\PaymentMethods\PaymentMethod();
$paymentMethod->setId($intent->getPaymentMethod())
->setUserGuid($user->getGuid());
if ($customer) {
$paymentMethod->setCustomerId($customer->getId());
}
// Save the payment method
try {
$paymentMethodsManager->add($paymentMethod);
} catch (\Exception $e) {
return Factory::response([
'status' => 'error',
'message' => 'Sorry, there was an error. Please try again',
]);
}
return Factory::response([]);
}
public function put($pages)
{
return Factory::response([]);
}
public function delete($pages)
{
return Factory::response([]);
}
}
......@@ -45,6 +45,13 @@ class comments implements Interfaces\Api
$entitiesBuilder = Di::_()->get('EntitiesBuilder');
$entity = $entitiesBuilder->single($pages[0]);
if (!$entity) {
return Factory::response([
'status' => 'error',
'message' => 'entity not found',
]);
}
if (!$entity->canEdit($owner)) {
return Factory::response([
'status' => 'error',
......@@ -53,8 +60,8 @@ class comments implements Interfaces\Api
}
/** @var PermissionsManager */
$manager = Di::_()->get('Permissions\Manager');
$permissions = new Permissions();
$manager = Di::_()->get('Permissions\Entities\Manager');
$permissions = new EntityPermissions();
$permissions->setAllowComments($allowed);
$manager->save($entity, $permissions);
......
<?php
namespace Minds\Controllers\api\v2\permissions;
use Minds\Api\Factory;
use Minds\Interfaces;
use Minds\Core\Di\Di;
class roles implements Interfaces\Api
{
public function get($pages)
{
Factory::isLoggedIn();
if (!isset($pages[0])) {
return Factory::response([
'status' => 'error',
'message' => 'User guid must be provided',
]);
}
try {
/** @var Core\Permissions\Manager $manager */
$manager = Di::_()->get('Permissions\Manager');
$opts = [
'user_guid' => $pages[0],
'guids' => $_GET['guids'],
];
$permissions = $manager->getList($opts);
return Factory::response([
'status' => 'success',
'roles' => $permissions,
]);
} catch (Exception $ex) {
return Factory::response([
'status' => 'error',
'message' => $ex->getMessage(),
]);
}
return Factory::response([]);
}
public function post($pages)
{
// TODO: Implement put() method.
}
public function put($pages)
{
// TODO: Implement put() method.
}
public function delete($pages)
{
// TODO: Implement put() method.
}
}
<?php
/**
* BTC Wallet Controller
*
* @version 1
* @author Mark Harding
*/
namespace Minds\Controllers\api\v2\wallet;
use Minds\Core;
use Minds\Core\Entities\Actions;
use Minds\Helpers;
use Minds\Interfaces;
use Minds\Api\Factory;
use Minds\Core\Payments;
use Minds\Entities;
class btc implements Interfaces\Api
{
/**
* @param array $pages
*/
public function get($pages)
{
return Factory::response([]);
}
/**
* @param array $pages
*/
public function post($pages)
{
return Factory::response([]);
}
public function put($pages)
{
return Factory::response([]);
}
public function delete($pages)
{
return Factory::response([]);
}
}
<?php
/**
* BTC Wallet Controller
*
* @version 1
* @author Mark Harding
*/
namespace Minds\Controllers\api\v2\wallet\btc;
use Minds\Core;
use Minds\Core\Entities\Actions;
use Minds\Helpers;
use Minds\Interfaces;
use Minds\Api\Factory;
use Minds\Core\Payments;
use Minds\Entities;
class address implements Interfaces\Api
{
/**
* @param array $pages
*/
public function get($pages)
{
Factory::isLoggedIn();
$response = [
'address' => Core\Session::getLoggedInUser()->getBtcAddress(),
];
return Factory::response($response);
}
/**
* @param array $pages
*/
public function post($pages)
{
Factory::isLoggedIn();
$response = [];
$user = Core\Session::getLoggedInUser();
$save = new Actions\Save();
$user->setBtcAddress($_POST['address']);
$save->setEntity($user)
->save();
return Factory::response($response);
}
/**
* @param array $pages
*/
public function put($pages)
{
return Factory::response([]);
}
/**
* @param array $pages
*/
public function delete($pages)
{
return Factory::response([]);
}
}
<?php
/**
* USD Wallet Controller
*
* @version 1
* @author Mark Harding
*/
namespace Minds\Controllers\api\v2\wallet;
use Minds\Core;
use Minds\Helpers;
use Minds\Interfaces;
use Minds\Api\Factory;
use Minds\Core\Payments;
use Minds\Entities;
class usd implements Interfaces\Api
{
/**
* @param array $pages
*/
public function get($pages)
{
return Factory::response([]);
}
/**
* @param array $pages
*/
public function post($pages)
{
return Factory::response([]);
}
/**
* @param array $pages
*/
public function put($pages)
{
return Factory::response([]);
}
/**
* @param array $pages
*/
public function delete($pages)
{
return Factory::response([]);
}
}
<?php
/**
* USD Wallet Controller
*
* @version 1
* @author Mark Harding
*/
namespace Minds\Controllers\api\v2\wallet\usd;
use Minds\Core;
use Minds\Helpers;
use Minds\Interfaces;
use Minds\Api\Factory;
use Minds\Core\Payments;
use Minds\Entities;
class account implements Interfaces\Api
{
/**
* @param array $pages
*/
public function get($pages)
{
Factory::isLoggedIn();
$response = [];
$stripeConnectManager = Core\Di\Di::_()->get('Stripe\Connect\Manager');
try {
$account = $stripeConnectManager->getByUser(Core\Session::getLoggedInUser());
} catch (\Exception $e) {
return Factory::response([
'status' => 'error',
'message' => $e->getMessage()
]);
}
if (!$account) {
return Factory::response([
'status' => 'error',
'message' => 'Not a merchant account'
]);
}
$response['account'] = $account->export();
return Factory::response($response);
}
/**
* @param array $pages
*/
public function post($pages)
{
Factory::isLoggedIn();
$response = [];
$account = (new Payments\Stripe\Connect\Account())
->setId(Core\Session::getLoggedInUser()->getMerchant()['id'])
->setFirstName($_POST['firstName'])
->setLastName($_POST['lastName'])
->setGender($_POST['gender'])
->setDateOfBirth($_POST['dob'])
->setStreet($_POST['street'])
->setCity($_POST['city'])
->setState($_POST['state'])
->setPostCode($_POST['postCode'])
->setPhoneNumber($_POST['phoneNumber']);
if ($_POST['ssn']) {
$account->setSSN($_POST['ssn'] ? str_pad((string) $_POST['ssn'], 4, '0', STR_PAD_LEFT) : '');
}
if ($_POST['personalIdNumber']) {
$account->setPersonalIdNumber($_POST['personalIdNumber']);
}
if ($_POST['accountNumber']) {
$account->setAccountNumber($_POST['accountNumber']);
}
if ($_POST['routingNumber']) {
$account->setRoutingNumber($_POST['routingNumber']);
}
try {
$stripeConnectManager = Core\Di\Di::_()->get('Stripe\Connect\Manager');
$result = $stripeConnectManager->update($account);
} catch (\Exception $e) {
$response['status'] = "error";
$response['message'] = $e->getMessage();
}
return Factory::response($response);
}
/**
* @param array $pages
*/
public function put($pages)
{
Factory::isLoggedIn();
$response = [];
$vars = Core\Router::getPutVars();
$account = (new Payments\Stripe\Connect\Account())
->setUserGuid(Core\Session::getLoggedInUser()->guid)
->setUser(Core\Session::getLoggedInUser())
->setDestination('bank')
->setCountry($vars['country'])
->setSSN($vars['ssn'] ? str_pad((string) $vars['ssn'], 4, '0', STR_PAD_LEFT) : '')
->setPersonalIdNumber($vars['personalIdNumber'])
->setFirstName($vars['firstName'])
->setLastName($vars['lastName'])
->setGender($vars['gender'])
->setDateOfBirth($vars['dob'])
->setStreet($vars['street'])
->setCity($vars['city'])
->setState($vars['state'])
->setPostCode($vars['postCode'])
->setPhoneNumber($vars['phoneNumber'])
->setIp($_SERVER['HTTP_X_FORWARDED_FOR']);
try {
$stripeConnectManager = Core\Di\Di::_()->get('Stripe\Connect\Manager');
$account = $stripeConnectManager->add($account);
$response['account'] = $account->export();
} catch (\Exception $e) {
$response['status'] = "error";
$response['message'] = $e->getMessage();
}
return Factory::response($response);
}
public function delete($pages)
{
return Factory::response([]);
}
}
<?php
/**
* USD Wallet Controller
*
* @version 1
* @author Mark Harding
*/
namespace Minds\Controllers\api\v2\wallet\usd;
use Minds\Core;
use Minds\Helpers;
use Minds\Interfaces;
use Minds\Api\Factory;
use Minds\Core\Payments;
use Minds\Entities;
class status implements Interfaces\Api
{
/**
* @param array $pages
*/
public function get($pages)
{
Factory::isLoggedIn();
$merchants = Core\Di\Di::_()->get('Monetization\Merchants');
$merchants->setUser(Core\Sandbox::user(Core\Session::getLoggedInUser(), 'merchant'));
$isMerchant = (bool) $merchants->getId();
$canBecomeMerchant = !$merchants->isBanned();
return Factory::response([
'isMerchant' => $isMerchant,
'canBecomeMerchant' => $canBecomeMerchant,
]);
}
/**
* @param array $pages
*/
public function post($pages)
{
return Factory::response([]);
}
/**
* @param array $pages
*/
public function put($pages)
{
return Factory::response([]);
}
/**
* @param array $pages
*/
public function delete($pages)
{
return Factory::response([]);
}
}
<?php
/**
* USD Wallet Controller
*
* @version 1
* @author Mark Harding
*/
namespace Minds\Controllers\api\v2\wallet\usd;
use Minds\Core;
use Minds\Helpers;
use Minds\Interfaces;
use Minds\Api\Factory;
use Minds\Core\Payments;
use Minds\Entities;
class verification implements Interfaces\Api
{
/**
* @param array $pages
*/
public function get($pages)
{
return Factory::response([]);
}
/**
* @param array $pages
*/
public function post($pages)
{
Factory::isLoggedIn();
$response = [];
try {
$stripe = Core\Di\Di::_()->get('StripePayments');
$stripe->verifyMerchant(Core\Session::getLoggedInUser()->getMerchant()['id'], $_FILES['file']);
} catch (\Exception $e) {
$response['status'] = "error";
$response['message'] = $e->getMessage();
}
return Factory::response($response);
}
/**
* @param array $pages
*/
public function put($pages)
{
return Factory::response([]);
}
/**
* @param array $pages
*/
public function delete($pages)
{
return Factory::response([]);
}
}