Removed unrelated code base
This commit is contained in:
@@ -1,138 +0,0 @@
|
||||
### PhpStorm ###
|
||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
|
||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
||||
|
||||
*.DS_Store
|
||||
|
||||
# User-specific stuff:
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/dictionaries
|
||||
|
||||
# Sensitive or high-churn files:
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.xml
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
|
||||
# Gradle:
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
.idea/
|
||||
|
||||
# CMake
|
||||
cmake-build-debug/
|
||||
|
||||
# Mongo Explorer plugin:
|
||||
.idea/**/mongoSettings.xml
|
||||
|
||||
## File-based project format:
|
||||
*.iws
|
||||
|
||||
## Plugin-specific files:
|
||||
|
||||
# IntelliJ
|
||||
/out/
|
||||
|
||||
# mpeltonen/sbt-idea plugin
|
||||
.idea_modules/
|
||||
|
||||
# JIRA plugin
|
||||
atlassian-ide-plugin.xml
|
||||
|
||||
# Cursive Clojure plugin
|
||||
.idea/replstate.xml
|
||||
|
||||
# Ruby plugin and RubyMine
|
||||
/.rakeTasks
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
### PhpStorm Patch ###
|
||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
||||
|
||||
# *.iml
|
||||
# modules.xml
|
||||
# .idea/misc.xml
|
||||
# *.ipr
|
||||
|
||||
# Sonarlint plugin
|
||||
.idea/sonarlint
|
||||
|
||||
### Symfony ###
|
||||
# Cache and logs (Symfony2)
|
||||
/app/cache/*
|
||||
/app/logs/*
|
||||
!app/cache/.gitkeep
|
||||
!app/logs/.gitkeep
|
||||
|
||||
# Email spool folder
|
||||
/app/spool/*
|
||||
|
||||
# Cache, session files and logs (Symfony3)
|
||||
/var/cache/*
|
||||
/var/logs/*
|
||||
/var/sessions/*
|
||||
!var/cache/.gitkeep
|
||||
!var/logs/.gitkeep
|
||||
!var/sessions/.gitkeep
|
||||
|
||||
# Parameters
|
||||
/app/config/parameters.yml
|
||||
/app/config/parameters.ini
|
||||
|
||||
# Managed by Composer
|
||||
/app/bootstrap.php.cache
|
||||
/var/bootstrap.php.cache
|
||||
/bin/*
|
||||
!bin/console
|
||||
!bin/symfony_requirements
|
||||
|
||||
# Assets and user uploads
|
||||
/web/bundles/
|
||||
/web/uploads/
|
||||
/web/upload/
|
||||
/web/public/
|
||||
|
||||
# PHPUnit
|
||||
/app/phpunit.xml
|
||||
/phpunit.xml
|
||||
|
||||
# Build data
|
||||
/build/
|
||||
|
||||
# Backup entities generated with doctrine:generate:entities command
|
||||
**/Entity/*~
|
||||
|
||||
### Symfony Patch ###
|
||||
/web/css/
|
||||
/web/js/
|
||||
docker-compose.yml
|
||||
|
||||
### Twake specific ###
|
||||
/build/
|
||||
/vendor/
|
||||
|
||||
### AWS ###
|
||||
/app/config/aws_config.yml
|
||||
|
||||
### Test ###
|
||||
/tests/code_coverage/
|
||||
/web/detached/*
|
||||
/drive/*
|
||||
/web/medias/public/uploads/*
|
||||
/app/Configuration/Parameters.php
|
||||
/app/Configuration/certs/apns_prod.pem
|
||||
/app/Configuration/certs/apns_dev.pem
|
||||
/cache/
|
||||
/backend/core/vendor/
|
||||
|
||||
cassandra.log
|
||||
@@ -1,148 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
require_once __DIR__ . "/Common/BaseController.php";
|
||||
require_once __DIR__ . "/Common/BaseBundles.php";
|
||||
require_once __DIR__ . "/Common/BaseBundle.php";
|
||||
require_once __DIR__ . "/Common/BaseRouting.php";
|
||||
require_once __DIR__ . "/Common/BaseServices.php";
|
||||
require_once __DIR__ . "/Common/Routing.php";
|
||||
require_once __DIR__ . "/Common/Container.php";
|
||||
require_once __DIR__ . "/Common/Services.php";
|
||||
require_once __DIR__ . "/Common/Configuration.php";
|
||||
require_once __DIR__ . "/Common/Providers.php";
|
||||
require_once __DIR__ . "/Common/CommandsManager.php";
|
||||
require_once __DIR__ . "/Common/Counter.php";
|
||||
|
||||
require_once __DIR__ . "/Configuration/Bundles.php";
|
||||
require_once __DIR__ . "/Configuration/Configuration.php";
|
||||
require_once __DIR__ . "/Configuration/Parameters.php";
|
||||
require_once __DIR__ . "/Configuration/Providers.php";
|
||||
require_once __DIR__ . "/Configuration/Commands.php";
|
||||
|
||||
use Common\CommandsManager;
|
||||
use Common\Counter;
|
||||
use Common\Routing;
|
||||
use Common\Container;
|
||||
use Common\Services;
|
||||
use Common\Providers;
|
||||
use Configuration\Bundles;
|
||||
use Configuration\Commands;
|
||||
use Configuration\Configuration;
|
||||
use Configuration\Parameters;
|
||||
use Pecee\SimpleRouter\SimpleRouter;
|
||||
use Twake\Core\Services\DoctrineAdapter\CassandraSessionHandler;
|
||||
|
||||
class App
|
||||
{
|
||||
|
||||
private $app_root_dir = "";
|
||||
|
||||
/** @var Routing */
|
||||
private $routing_service = null;
|
||||
|
||||
/** @var Container */
|
||||
private $container_service = null;
|
||||
|
||||
/** @var Services */
|
||||
private $services_service = null;
|
||||
|
||||
/** @var Providers */
|
||||
private $providers_service = null;
|
||||
|
||||
/** @var Counter */
|
||||
private $counter = null;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
$bundles = (new Bundles())->getBundles();
|
||||
$bundles_instances = [];
|
||||
|
||||
$this->app_root_dir = realpath(__DIR__ . "/../");
|
||||
$this->routing_service = new Routing($this);
|
||||
$this->container_service = new Container($this);
|
||||
$this->services_service = new Services($this);
|
||||
$this->providers_service = new Providers($this, new \Configuration\Providers());
|
||||
|
||||
// Import configuration
|
||||
$this->container_service->import(new Configuration($this), "configuration");
|
||||
$this->container_service->import(new Parameters($this), "parameters");
|
||||
|
||||
$this->counter = new Counter($this);
|
||||
|
||||
// Require and instanciate all defined bundles
|
||||
foreach ($bundles as $bundle) {
|
||||
|
||||
if (file_exists(__DIR__ . "/../src/" . $bundle . "/Bundle.php")) {
|
||||
require_once __DIR__ . "/../src/" . $bundle . "/Bundle.php";
|
||||
$class_name = str_replace("/", "\\", $bundle) . "\\Bundle";
|
||||
$bundles_instances[] = new $class_name($this);
|
||||
} else {
|
||||
error_log("No such bundle " . $bundle);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Init routing for all bundles
|
||||
foreach ($bundles_instances as $bundle_instance) {
|
||||
$bundle_instance->init();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function getRouting()
|
||||
{
|
||||
return $this->routing_service;
|
||||
}
|
||||
|
||||
public function getContainer()
|
||||
{
|
||||
return $this->container_service;
|
||||
}
|
||||
|
||||
public function getServices()
|
||||
{
|
||||
return $this->services_service;
|
||||
}
|
||||
|
||||
public function getProviders()
|
||||
{
|
||||
return $this->providers_service;
|
||||
}
|
||||
|
||||
public function getAppRootDir()
|
||||
{
|
||||
return $this->app_root_dir;
|
||||
}
|
||||
|
||||
public function getCommands()
|
||||
{
|
||||
return $this->commands;
|
||||
}
|
||||
|
||||
public function getCounter()
|
||||
{
|
||||
return $this->counter;
|
||||
}
|
||||
|
||||
public function runCli()
|
||||
{
|
||||
if (php_sapi_name() == "cli") {
|
||||
$this->commands = new CommandsManager($this, (new Commands())->commands);
|
||||
($this->commands)->run();
|
||||
}
|
||||
}
|
||||
|
||||
public function run()
|
||||
{
|
||||
try{
|
||||
SimpleRouter::start();
|
||||
}catch(\Exception $err){
|
||||
error_log($err);
|
||||
http_response_code(500);
|
||||
echo '{"error": "'.$err->getMessage().'"}';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,160 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App;
|
||||
|
||||
require_once __DIR__ . "/Common/BaseController.php";
|
||||
require_once __DIR__ . "/Common/BaseBundles.php";
|
||||
require_once __DIR__ . "/Common/BaseBundle.php";
|
||||
require_once __DIR__ . "/Common/BaseRouting.php";
|
||||
require_once __DIR__ . "/Common/BaseServices.php";
|
||||
require_once __DIR__ . "/Common/Routing.php";
|
||||
require_once __DIR__ . "/Common/Container.php";
|
||||
require_once __DIR__ . "/Common/Services.php";
|
||||
require_once __DIR__ . "/Common/Configuration.php";
|
||||
require_once __DIR__ . "/Common/Providers.php";
|
||||
require_once __DIR__ . "/Common/CommandsManager.php";
|
||||
require_once __DIR__ . "/Common/Counter.php";
|
||||
|
||||
require_once __DIR__ . "/Configuration/Bundles.php";
|
||||
require_once __DIR__ . "/Configuration/Configuration.php";
|
||||
require_once __DIR__ . "/Configuration/Parameters.php";
|
||||
require_once __DIR__ . "/Configuration/Providers.php";
|
||||
require_once __DIR__ . "/Configuration/Commands.php";
|
||||
|
||||
use Common\CommandsManager;
|
||||
use Common\Counter;
|
||||
use Common\Routing;
|
||||
use Common\Container;
|
||||
use Common\Services;
|
||||
use Common\Providers;
|
||||
use Configuration\Bundles;
|
||||
use Configuration\Commands;
|
||||
use Configuration\Configuration;
|
||||
use Configuration\Parameters;
|
||||
use Pecee\SimpleRouter\SimpleRouter;
|
||||
use Twake\Core\Services\DoctrineAdapter\CassandraSessionHandler;
|
||||
|
||||
class App
|
||||
{
|
||||
|
||||
private $app_root_dir = "";
|
||||
|
||||
/** @var Routing */
|
||||
private $routing_service = null;
|
||||
|
||||
/** @var Container */
|
||||
private $container_service = null;
|
||||
|
||||
/** @var Services */
|
||||
private $services_service = null;
|
||||
|
||||
/** @var Providers */
|
||||
private $providers_service = null;
|
||||
|
||||
/** @var Counter */
|
||||
private $counter = null;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
$bundles = (new Bundles())->getBundles();
|
||||
$bundles_instances = [];
|
||||
|
||||
$this->app_root_dir = realpath(__DIR__ . "/../");
|
||||
$this->routing_service = new Routing($this);
|
||||
$this->container_service = new Container($this);
|
||||
$this->services_service = new Services($this);
|
||||
$this->providers_service = new Providers($this, new \Configuration\Providers());
|
||||
|
||||
// Import configuration
|
||||
$this->container_service->import(new Configuration($this), "configuration");
|
||||
$this->container_service->import(new Parameters($this), "parameters");
|
||||
|
||||
$dsn = $this->getContainer()->getParameter("env.sentry");
|
||||
if($dsn){
|
||||
\Sentry\init(['dsn' => $dsn, 'error_types' => (E_ERROR | E_WARNING | E_PARSE)]);
|
||||
}
|
||||
|
||||
$segment = $this->getContainer()->getParameter("env.segment");
|
||||
$GLOBALS["segment_enabled"] = false;
|
||||
if($segment){
|
||||
$GLOBALS["segment_enabled"] = true;
|
||||
\Segment::init($segment);
|
||||
}
|
||||
|
||||
$this->counter = new Counter($this);
|
||||
|
||||
// Require and instanciate all defined bundles
|
||||
foreach ($bundles as $bundle) {
|
||||
|
||||
if (file_exists(__DIR__ . "/../src/" . $bundle . "/Bundle.php")) {
|
||||
require_once __DIR__ . "/../src/" . $bundle . "/Bundle.php";
|
||||
$class_name = str_replace("/", "\\", $bundle) . "\\Bundle";
|
||||
$bundles_instances[] = new $class_name($this);
|
||||
} else {
|
||||
error_log("No such bundle " . $bundle);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Init routing for all bundles
|
||||
foreach ($bundles_instances as $bundle_instance) {
|
||||
$bundle_instance->init();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function getRouting()
|
||||
{
|
||||
return $this->routing_service;
|
||||
}
|
||||
|
||||
public function getContainer()
|
||||
{
|
||||
return $this->container_service;
|
||||
}
|
||||
|
||||
public function getServices()
|
||||
{
|
||||
return $this->services_service;
|
||||
}
|
||||
|
||||
public function getProviders()
|
||||
{
|
||||
return $this->providers_service;
|
||||
}
|
||||
|
||||
public function getAppRootDir()
|
||||
{
|
||||
return $this->app_root_dir;
|
||||
}
|
||||
|
||||
public function getCommands()
|
||||
{
|
||||
return $this->commands;
|
||||
}
|
||||
|
||||
public function getCounter()
|
||||
{
|
||||
return $this->counter;
|
||||
}
|
||||
|
||||
public function runCli()
|
||||
{
|
||||
if (php_sapi_name() == "cli") {
|
||||
$this->commands = new CommandsManager($this, (new Commands())->commands);
|
||||
($this->commands)->run();
|
||||
}
|
||||
}
|
||||
|
||||
public function run()
|
||||
{
|
||||
try{
|
||||
SimpleRouter::start();
|
||||
}catch(\Exception $err){
|
||||
error_log($err);
|
||||
http_response_code(500);
|
||||
echo '{"error": "'.$err->getMessage().'"}';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
use App\App;
|
||||
|
||||
use Common\Http\Request;
|
||||
use Common\Http\Response;
|
||||
|
||||
|
||||
/**
|
||||
* Bundles root file super class
|
||||
*/
|
||||
abstract class BaseBundle
|
||||
{
|
||||
|
||||
/** @var App */
|
||||
protected $app = null;
|
||||
|
||||
protected $routing_prefix = "";
|
||||
protected $bundle_root = "";
|
||||
protected $bundle_namespace = "";
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->app = $app;
|
||||
}
|
||||
|
||||
public function init()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Load routes from Bundle php configuration
|
||||
*/
|
||||
protected function initRoutes()
|
||||
{
|
||||
|
||||
// For all defined route, create routing + connect lasy controller loader
|
||||
$routing_service = $this->app->getRouting();
|
||||
foreach ($this->routes as $route => $data) {
|
||||
|
||||
$final_route = preg_replace("/\\/+/", "/", $this->routing_prefix . "/" . $route);
|
||||
$handler = null;
|
||||
$methods = ["POST"];
|
||||
|
||||
if (is_string($data)) {
|
||||
$handler = $data;
|
||||
} else {
|
||||
$handler = $data["handler"];
|
||||
if (isset($data["methods"])) $methods = $data["methods"];
|
||||
}
|
||||
|
||||
$security = [];
|
||||
if (isset($data["security"])) $security = $data["security"];
|
||||
|
||||
$controller = explode(":", $handler);
|
||||
$handler = $controller[1];
|
||||
$controller = $controller[0];
|
||||
|
||||
foreach ($methods as $method) {
|
||||
|
||||
$method = strtolower($method);
|
||||
if (!in_array($method, ["get", "post", "delete", "put"])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$that = $this;
|
||||
$routing_service->addRoute($method, $final_route, function (Request $request = null) use ($that, $controller, $handler, $security) {
|
||||
|
||||
if (count($security) > 0) {
|
||||
foreach ($security as $security_service) {
|
||||
$service = $this->app->getServices()->get($security_service);
|
||||
if ($service) {
|
||||
$response = $service->applySecurity($request);
|
||||
if ($response && $response !== true) {
|
||||
return $response;
|
||||
}
|
||||
} else {
|
||||
error_log("Missing security service " . $service);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$controller = $that->loadController($controller);
|
||||
if (!$controller) {
|
||||
return new Response("No controller " . $handler . " found", 500);
|
||||
}
|
||||
if (!method_exists($controller, $handler)) {
|
||||
return new Response("No controller handler " . $handler . "->" . $handler . " found", 500);
|
||||
}
|
||||
return $controller->$handler($request ?: new Request());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Lasy load controller to handle request
|
||||
* $controller : string
|
||||
**/
|
||||
private function loadController($controller)
|
||||
{
|
||||
$controller_file = $this->bundle_root . "/Controller/" . $controller . ".php";
|
||||
if (file_exists($controller_file)) {
|
||||
require_once $controller_file;
|
||||
$class_name = $this->bundle_namespace . "\\Controller\\" . str_replace("/", "\\", $controller);
|
||||
return new $class_name($this->app);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load services to service manager
|
||||
*/
|
||||
protected function initServices()
|
||||
{
|
||||
$services_service = $this->app->getServices();
|
||||
foreach ($this->services as $service_name => $service_relative_path) {
|
||||
$service_path = preg_replace("/\\/+/", "/", $this->bundle_root . "/Services/" . $service_relative_path . ".php");
|
||||
$service_class_name = preg_replace("/\\\\+/", "\\", $this->bundle_namespace . "\\Services\\" . str_replace("/", "\\", $service_relative_path));
|
||||
|
||||
$services_service->set($service_name, $service_path, $service_class_name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
/**
|
||||
* Bundles root file super class
|
||||
*/
|
||||
abstract class BaseBundles
|
||||
{
|
||||
|
||||
protected $bundles = [];
|
||||
|
||||
public function getBundles()
|
||||
{
|
||||
return $this->bundles;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
use App\App;
|
||||
use Common\Http\Response;
|
||||
|
||||
/**
|
||||
* Controllers super class
|
||||
*/
|
||||
abstract class BaseController
|
||||
{
|
||||
|
||||
/** @var App */
|
||||
protected $app = null;
|
||||
|
||||
/** @var Container */
|
||||
protected $container = null;
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->container = $app->getContainer();
|
||||
}
|
||||
|
||||
/* Get service */
|
||||
public function get($key)
|
||||
{
|
||||
return $this->app->getServices()->get($key);
|
||||
}
|
||||
|
||||
public function isConnected()
|
||||
{
|
||||
return $this->getUser() && !is_string($this->getUser());
|
||||
}
|
||||
|
||||
public function getUser()
|
||||
{
|
||||
|
||||
$request = $this->app->getRouting()->getCurrentRequest();
|
||||
$user = $this->app->getServices()->get("app.session_handler")->getUser($request);
|
||||
|
||||
return $user ?: "anonymous"; //null is reserved to user == system
|
||||
}
|
||||
|
||||
public function getParameter($key, $fallback = null)
|
||||
{
|
||||
return $this->app->getContainer()->getParameter($key) ?: $fallback;
|
||||
}
|
||||
|
||||
public function redirect($url)
|
||||
{
|
||||
$response = new Response("");
|
||||
$response->setHeader("Location: " . $url, true);
|
||||
$response->sendHeaders();
|
||||
exit();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
|
||||
abstract class BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "";
|
||||
protected $routes = [];
|
||||
|
||||
public function getRoutes()
|
||||
{
|
||||
return $this->routes;
|
||||
}
|
||||
|
||||
public function getRoutesPrefix()
|
||||
{
|
||||
return $this->routing_prefix;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
abstract class BaseServices
|
||||
{
|
||||
|
||||
protected $services = [];
|
||||
|
||||
public function getServices()
|
||||
{
|
||||
return $this->services;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: romaricmourgues
|
||||
* Date: 17/02/2020
|
||||
* Time: 14:19
|
||||
*/
|
||||
|
||||
namespace Common\Commands;
|
||||
|
||||
|
||||
use App\App;
|
||||
|
||||
class ContainerAwareCommand
|
||||
{
|
||||
/** @var App */
|
||||
public $app;
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->configure();
|
||||
$this->app = $app;
|
||||
}
|
||||
|
||||
public function executeFromManager()
|
||||
{
|
||||
return $this->execute();
|
||||
}
|
||||
|
||||
protected function getApp()
|
||||
{
|
||||
return $this->app;
|
||||
}
|
||||
|
||||
protected function getContainer()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected function setName()
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function setDescription()
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function addOption()
|
||||
{
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function configure()
|
||||
{
|
||||
}
|
||||
|
||||
protected function execute()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
use App\App;
|
||||
|
||||
class CommandsManager
|
||||
{
|
||||
|
||||
public $app;
|
||||
public $commands = [];
|
||||
|
||||
public function __construct($app, $commands)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->commands = $commands;
|
||||
}
|
||||
|
||||
public function run()
|
||||
{
|
||||
array_shift($_SERVER["argv"]);
|
||||
$command = array_shift($_SERVER["argv"]);
|
||||
$arguments = $_SERVER["argv"];
|
||||
|
||||
if ($command && $this->commands[$command]) {
|
||||
|
||||
$this->execute($command, $arguments);
|
||||
|
||||
} else {
|
||||
if ($command) {
|
||||
error_log("Command \e[0;31;42m'" . $command . "'\e[0m was not found.");
|
||||
}
|
||||
$this->help();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function execute($command, $arguments)
|
||||
{
|
||||
if (!isset($this->commands[$command])) {
|
||||
return;
|
||||
}
|
||||
|
||||
$command = new $this->commands[$command]($this->app);
|
||||
|
||||
$command->executeFromManager();
|
||||
|
||||
}
|
||||
|
||||
private function help()
|
||||
{
|
||||
|
||||
error_log("\nAll commands:");
|
||||
foreach ($this->commands as $name => $command) {
|
||||
error_log("\e[0;31;42m" . $name . "\e[0m");
|
||||
}
|
||||
error_log("\n");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
/** All configuration super class */
|
||||
abstract class Configuration
|
||||
{
|
||||
|
||||
public $configuration = [];
|
||||
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
use App\App;
|
||||
|
||||
class Container
|
||||
{
|
||||
|
||||
/** @var App */
|
||||
private $app = null;
|
||||
|
||||
private $configuration = [];
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->app = $app;
|
||||
}
|
||||
|
||||
public function import(Configuration $configuration, $name)
|
||||
{
|
||||
$this->configuration[$name] = $configuration->configuration;
|
||||
}
|
||||
|
||||
public function getParameter($key)
|
||||
{
|
||||
return $this->get("parameters", $key);
|
||||
}
|
||||
|
||||
public function hasParameter($key)
|
||||
{
|
||||
return !!$this->get("parameters", $key);
|
||||
}
|
||||
|
||||
public function get($namespace, $key)
|
||||
{
|
||||
$key = explode(".", $key);
|
||||
$obj = $this->configuration[$namespace];
|
||||
$i = 0;
|
||||
while (is_array($obj) && $i < count($key)) {
|
||||
$obj = @$obj[$key[$i]];
|
||||
|
||||
if (is_object($obj) && is_subclass_of($obj, "Common\Configuration") && isset($obj->configuration)) {
|
||||
$obj = $obj->configuration;
|
||||
}
|
||||
|
||||
$i++;
|
||||
}
|
||||
return $obj;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
use App\App;
|
||||
|
||||
class Counter
|
||||
{
|
||||
|
||||
private $counters = [];
|
||||
private $timers_started = [];
|
||||
private $timers_values = [];
|
||||
|
||||
private $dev_mode = false;
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->dev_mode = $app->getContainer()->getParameter("env.timer") == true;
|
||||
}
|
||||
|
||||
public function incrementCounter($key)
|
||||
{
|
||||
if (!isset($this->counters["counter_" . $key])) {
|
||||
$this->counters["counter_" . $key] = 0;
|
||||
}
|
||||
$this->counters["counter_" . $key]++;
|
||||
}
|
||||
|
||||
public function readCounter($key)
|
||||
{
|
||||
return isset($this->counters["counter_" . $key]) ? $this->counters["counter_" . $key] : 0;
|
||||
}
|
||||
|
||||
public function startTimer($key)
|
||||
{
|
||||
$this->timers_started[$key] = microtime(true);
|
||||
}
|
||||
|
||||
public function stopTimer($key)
|
||||
{
|
||||
if (!isset($this->timers_values[$key])) {
|
||||
$this->timers_values[$key] = 0;
|
||||
}
|
||||
$this->timers_values[$key] += microtime(true) - $this->timers_started[$key];
|
||||
$this->counters["timer_" . $key] = $this->timers_values[$key];
|
||||
}
|
||||
|
||||
public function readTimer($key)
|
||||
{
|
||||
return isset($this->counters["timer_" . $key]) ? $this->counters["timer_" . $key] : -1;
|
||||
}
|
||||
|
||||
public function showResults()
|
||||
{
|
||||
if ($this->dev_mode) {
|
||||
error_log(json_encode($this->counters, JSON_PRETTY_PRINT));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common\Http;
|
||||
|
||||
|
||||
class Cookie
|
||||
{
|
||||
|
||||
protected $name;
|
||||
protected $value;
|
||||
protected $expire;
|
||||
protected $path;
|
||||
|
||||
private static $reservedCharsFrom = ['=', ',', ';', ' ', "\t", "\r", "\n", "\v", "\f"];
|
||||
private static $reservedCharsTo = ['%3D', '%2C', '%3B', '%20', '%09', '%0D', '%0A', '%0B', '%0C'];
|
||||
|
||||
public function __construct(string $name, string $value = null, $expire = 0, ?string $path = '/')
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->value = $value;
|
||||
$this->expire = 0 < $expire ? (int)$expire : 0;
|
||||
$this->path = empty($path) ? '/' : $path;
|
||||
}
|
||||
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
$str = str_replace(self::$reservedCharsFrom, self::$reservedCharsTo, $this->name);
|
||||
$str .= '=';
|
||||
|
||||
if ('' === (string)$this->value) {
|
||||
$str .= 'deleted; expires=' . gmdate('D, d-M-Y H:i:s T', time() - 31536001) . '; Max-Age=0; SameSite=Lax; Secure';
|
||||
} else {
|
||||
$str .= rawurlencode($this->value);
|
||||
|
||||
if (0 !== $this->expire) {
|
||||
$str .= '; expires=' . gmdate('D, d-M-Y H:i:s T', $this->expire) . '; Max-Age=' . $this->getMaxAge() . "; SameSite=Lax; Secure";
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->path) {
|
||||
$str .= '; path=' . $this->path;
|
||||
}
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
public function asArray()
|
||||
{
|
||||
return [str_replace(self::$reservedCharsFrom, self::$reservedCharsTo, $this->name), (string)$this->value, $this->expire];
|
||||
}
|
||||
|
||||
public function getMaxAge()
|
||||
{
|
||||
$maxAge = $this->expire - time();
|
||||
|
||||
return 0 >= $maxAge ? 0 : $maxAge;
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
public function getValue()
|
||||
{
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common\Http;
|
||||
|
||||
|
||||
class ParamBag
|
||||
{
|
||||
private $array = [];
|
||||
|
||||
public function __construct($array)
|
||||
{
|
||||
$this->array = $array;
|
||||
}
|
||||
|
||||
public function all()
|
||||
{
|
||||
return $this->array;
|
||||
}
|
||||
|
||||
public function get($key, $default = null)
|
||||
{
|
||||
return isset($this->array[$key]) ? $this->array[$key] : $default;
|
||||
}
|
||||
|
||||
public function has($key)
|
||||
{
|
||||
return isset($this->array[$key]);
|
||||
}
|
||||
|
||||
public function getBoolean($key, $default = false)
|
||||
{
|
||||
return isset($this->array[$key]) ? !!$this->array[$key] : $default;
|
||||
}
|
||||
|
||||
public function getInt($key, $default = false)
|
||||
{
|
||||
return isset($this->array[$key]) ? intval($this->array[$key]) : $default;
|
||||
}
|
||||
|
||||
public function reset($array)
|
||||
{
|
||||
$this->array = $array;
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common\Http;
|
||||
|
||||
|
||||
class Request
|
||||
{
|
||||
|
||||
private $content = "";
|
||||
/** @var ParamBag */
|
||||
public $headers = [];
|
||||
/** @var ParamBag */
|
||||
public $query = [];
|
||||
/** @var ParamBag */
|
||||
public $request = [];
|
||||
/** @var ParamBag */
|
||||
public $cookies = [];
|
||||
public $files = [];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
|
||||
$this->headers = new ParamBag(getallheaders());
|
||||
$this->content = file_get_contents('php://input');
|
||||
$this->query = new ParamBag($_GET);
|
||||
$this->request = new ParamBag($_POST);
|
||||
$this->files = new ParamBag($_FILES);
|
||||
|
||||
//Get all cookies
|
||||
$cookies = $_COOKIE;
|
||||
$header_cookies = [];
|
||||
try {
|
||||
$all_cookies = isset(getallheaders()["All-Cookies"]) ? getallheaders()["All-Cookies"] : "[]";
|
||||
$header_cookies = json_decode($all_cookies, 1);
|
||||
} catch (\Exception $err) {
|
||||
$header_cookies = [];
|
||||
}
|
||||
foreach ($header_cookies as $cookie) {
|
||||
$cookies[$cookie[0]] = $cookie[1];
|
||||
}
|
||||
$this->cookies = new ParamBag($cookies);
|
||||
|
||||
if (count($this->request->all()) === 0 || 0 === strpos($this->headers->get('Content-Type'), 'application/json')) {
|
||||
try{
|
||||
$data = json_decode($this->getContent(), true);
|
||||
$this->request = new ParamBag(is_array($data) ? $data : array());
|
||||
}catch(\Exception $err){
|
||||
//Nop
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function getContent()
|
||||
{
|
||||
return $this->content;
|
||||
}
|
||||
}
|
||||
@@ -1,106 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common\Http;
|
||||
|
||||
use WebSocket\Exception;
|
||||
|
||||
class Response
|
||||
{
|
||||
|
||||
private $content = "";
|
||||
private $status = 200;
|
||||
private $cookies = [];
|
||||
/** @var ParamBag */
|
||||
public $headers = [];
|
||||
|
||||
public function __construct($content = "", $status = 200)
|
||||
{
|
||||
$this->setContent($content);
|
||||
$this->httpStatus($status);
|
||||
$this->headers = new ParamBag([]);
|
||||
}
|
||||
|
||||
public function setHeader($header, $replace = true)
|
||||
{
|
||||
$headers = $this->headers->all();
|
||||
$header = explode(":", $header);
|
||||
$header_name = array_shift($header);
|
||||
$header_value = join(":", $header);
|
||||
$headers[$header_name] = $header_value;
|
||||
$this->headers->reset($headers);
|
||||
}
|
||||
|
||||
public function setCookie(Cookie $cookie)
|
||||
{
|
||||
$this->cookies[$cookie->getName()] = $cookie;
|
||||
}
|
||||
|
||||
public function getCookiesValues()
|
||||
{
|
||||
$key_value = [];
|
||||
foreach ($this->cookies as $name => $cookie) {
|
||||
$key_value[$name] = $cookie->getValue();
|
||||
}
|
||||
return $key_value;
|
||||
}
|
||||
|
||||
public function clearCookie($name)
|
||||
{
|
||||
$this->cookies[$name] = new Cookie($name, null, 1, "/");
|
||||
}
|
||||
|
||||
public function getContent()
|
||||
{
|
||||
if (is_array($this->content)) {
|
||||
$this->content["_cookies"] = $this->getCookiesValues();
|
||||
return json_encode($this->content);
|
||||
}
|
||||
return $this->content;
|
||||
}
|
||||
|
||||
public function setContent($content)
|
||||
{
|
||||
$this->content = $content;
|
||||
}
|
||||
|
||||
public function httpStatus($code)
|
||||
{
|
||||
$this->status = $code;
|
||||
}
|
||||
|
||||
public function getHttpStatus()
|
||||
{
|
||||
return $this->status;
|
||||
}
|
||||
|
||||
public function sendHeaders()
|
||||
{
|
||||
if(headers_sent()){
|
||||
return;
|
||||
}
|
||||
if (defined("TESTENV") && TESTENV) {
|
||||
return;
|
||||
}
|
||||
$all_cookies = [];
|
||||
foreach ($this->cookies as $cookie) {
|
||||
header("Set-Cookie: " . $cookie, false);
|
||||
$all_cookies[] = $cookie->asArray();
|
||||
}
|
||||
header("All-Cookies: " . json_encode($all_cookies), true);
|
||||
foreach ($this->headers->all() as $name => $value) {
|
||||
header($name . ": " . $value, true);
|
||||
}
|
||||
header("Access-Control-Expose-Headers: All-Cookies");
|
||||
}
|
||||
|
||||
public function send()
|
||||
{
|
||||
$this->sendHeaders();
|
||||
http_response_code($this->status);
|
||||
if (is_array($this->content) && !headers_sent()) {
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
}
|
||||
echo $this->getContent();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,95 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
use App\App;
|
||||
|
||||
class Providers extends \Pimple\Container
|
||||
{
|
||||
|
||||
/** @var App */
|
||||
private $app = null;
|
||||
|
||||
/** @var \Configuration\Providers */
|
||||
private $configuration = null;
|
||||
|
||||
private $services = [];
|
||||
|
||||
private $registered_services = [];
|
||||
|
||||
private $service_instances = [];
|
||||
|
||||
public $providers_options = [];
|
||||
|
||||
public function __construct(App $app, \Configuration\Providers $configuration)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->configuration = $configuration;
|
||||
|
||||
foreach ($configuration->providers as $name => $provider_config) {
|
||||
|
||||
//Each provider expose multiple services
|
||||
foreach ($provider_config["services"] as $service) {
|
||||
$this->services[$service] = $provider_config;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$this->provider_config = new \Pimple\Container();
|
||||
|
||||
}
|
||||
|
||||
public function get($key)
|
||||
{
|
||||
|
||||
if (isset($this->service_instances[$key])) {
|
||||
return $this->service_instances[$key];
|
||||
}
|
||||
|
||||
if (!isset($this->services[$key])) {
|
||||
error_log($key . " service was not found");
|
||||
return null;
|
||||
}
|
||||
|
||||
$service_register_name = $this->services[$key]["register"];
|
||||
if (empty($this->registered_services[$service_register_name])) {
|
||||
|
||||
if (isset($services[$key]["parameters"])) {
|
||||
$parameters_key = $services[$key]["parameters"];
|
||||
$parameters = $this->app->getContainer()->get("parameters", $parameters_key);
|
||||
foreach ($parameters as $key => $parameter) {
|
||||
$this->providers_options[$key] = $parameter;
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($services[$key]["configuration"])) {
|
||||
$parameters_key = $services[$key]["configuration"];
|
||||
$parameters = $this->app->getContainer()->get("configuration", $parameters_key);
|
||||
foreach ($parameters as $key => $parameter) {
|
||||
$this->providers_options[$key] = $parameter;
|
||||
}
|
||||
}
|
||||
|
||||
$service = new $service_register_name();
|
||||
$service->register($this->provider_config);
|
||||
$this->registered_services[$service_register_name] = $service;
|
||||
|
||||
}
|
||||
|
||||
try {
|
||||
$this->service_instances[$key] = $this->provider_config[$key];
|
||||
} catch (\Exception $e) {
|
||||
error_log($e);
|
||||
}
|
||||
|
||||
return $this->service_instances[$key];
|
||||
|
||||
}
|
||||
|
||||
public function getContainer()
|
||||
{
|
||||
return $this->provider_config;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,146 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
use App\App;
|
||||
use Common\Http\Request;
|
||||
use Common\Http\Response;
|
||||
use Pecee\SimpleRouter\SimpleRouter;
|
||||
|
||||
class Routing
|
||||
{
|
||||
|
||||
/** @var App */
|
||||
private $app = null;
|
||||
private $routes = [];
|
||||
private $routesToController = [];
|
||||
private $request = null;
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->request = new Request();
|
||||
}
|
||||
|
||||
public function addRoute($method, $route, $callback)
|
||||
{
|
||||
$route = preg_replace("/^\//", "", $route);
|
||||
$route = preg_replace("/\/$/", "", $route);
|
||||
|
||||
if (isset($this->routes[$route . ":" . $method])) {
|
||||
error_log("Route " . $route . " was already defined.");
|
||||
return;
|
||||
}
|
||||
$this->routes[$route . ":" . $method] = true;
|
||||
$this->routesToController[$route . ":" . $method] = $callback;
|
||||
|
||||
if ($method == "get") {
|
||||
$this->get($route, $callback);
|
||||
} else if ($method == "post") {
|
||||
$this->post($route, $callback);
|
||||
} else if ($method == "put") {
|
||||
$this->put($route, $callback);
|
||||
} else if ($method == "delete") {
|
||||
$this->delete($route, $callback);
|
||||
} else {
|
||||
error_log("Unable to register route " . $route . ": method " . $method . " is not implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
public function get($route, $callback)
|
||||
{
|
||||
SimpleRouter::get($route, function () use ($callback) {
|
||||
error_log("[Router] - GET " . $_SERVER["REQUEST_URI"]);
|
||||
try {
|
||||
$response = $this->beforeRender($callback($this->request));
|
||||
$response->send();
|
||||
} catch (\Exception $e) {
|
||||
error_log($e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function post($route, $callback)
|
||||
{
|
||||
SimpleRouter::post($route, function () use ($callback) {
|
||||
error_log("[Router] - POST " . $_SERVER["REQUEST_URI"]);
|
||||
try {
|
||||
$response = $this->beforeRender($callback($this->request));
|
||||
$response->send();
|
||||
} catch (\Exception $e) {
|
||||
error_log($e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function put($route, $callback)
|
||||
{
|
||||
SimpleRouter::put($route, function () use ($callback) {
|
||||
error_log("[Router] - PUT " . $_SERVER["REQUEST_URI"]);
|
||||
try {
|
||||
$response = $this->beforeRender($callback($this->request));
|
||||
$response->send();
|
||||
} catch (\Exception $e) {
|
||||
error_log($e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function delete($route, $callback)
|
||||
{
|
||||
SimpleRouter::delete($route, function () use ($callback) {
|
||||
error_log("[Router] - DELETE " . $_SERVER["REQUEST_URI"]);
|
||||
try {
|
||||
$response = $this->beforeRender($callback($this->request));
|
||||
$response->send();
|
||||
} catch (\Exception $e) {
|
||||
error_log($e);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//Allow any origin
|
||||
private function beforeRender(Response $response)
|
||||
{
|
||||
if (isset($_SERVER['HTTP_ORIGIN']) && strpos("http://localhost", $_SERVER['HTTP_ORIGIN']) == 0) {
|
||||
$response->setHeader('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN'], true);
|
||||
}
|
||||
$response->setHeader('Access-Control-Allow-Headers: ' . 'authorization, Content-Type, *', true);
|
||||
$response->setHeader('Access-Control-Allow-Credentials: ' . 'true', true);
|
||||
$response->setHeader('Access-Control-Allow-Methods: ' . 'GET, POST', true);
|
||||
$response->setHeader('Access-Control-Max-Age: ' . '600', true);
|
||||
$length = strlen($response->getContent());
|
||||
$response->setHeader('x-decompressed-content-length: ' . $length, true);
|
||||
|
||||
$content = $response->getContent();
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function execute($method, $route, Request $request)
|
||||
{
|
||||
$this->request = $request;
|
||||
|
||||
$route = preg_replace("/^\//", "", $route);
|
||||
$route = preg_replace("/\/$/", "", $route);
|
||||
|
||||
if (isset($this->routesToController[$route . ":" . strtolower($method)])) {
|
||||
$response = $this->routesToController[$route . ":" . strtolower($method)]($request);
|
||||
} else {
|
||||
error_log(json_encode($route . ":" . strtolower($method)) . " does not exists.");
|
||||
$response = new Response();
|
||||
}
|
||||
return $this->beforeRender($response);
|
||||
}
|
||||
|
||||
public function getRoutes()
|
||||
{
|
||||
return array_keys($this->routes);
|
||||
}
|
||||
|
||||
public function getCurrentRequest()
|
||||
{
|
||||
return $this->request;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Common;
|
||||
|
||||
use App\App;
|
||||
|
||||
class Services
|
||||
{
|
||||
|
||||
/** @var App */
|
||||
private $app = null;
|
||||
|
||||
private $services = [];
|
||||
private $services_instances = [];
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->app = $app;
|
||||
}
|
||||
|
||||
public function set($key, $class_src_path, $class_name)
|
||||
{
|
||||
if (isset($this->services[$key])) {
|
||||
error_log("The service " . $key . " is already defined.");
|
||||
return;
|
||||
}
|
||||
$this->services[$key] = [
|
||||
"src_path" => $class_src_path,
|
||||
"name" => $class_name
|
||||
];
|
||||
}
|
||||
|
||||
/** Lasy instanciate service */
|
||||
public function get($key)
|
||||
{
|
||||
|
||||
if (!isset($this->services[$key])) {
|
||||
error_log("The requested service " . $key . " is not defined.");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (isset($this->services_instances[$key])) {
|
||||
return $this->services_instances[$key];
|
||||
}
|
||||
|
||||
require_once $this->services[$key]["src_path"];
|
||||
$name = $this->services[$key]["name"];
|
||||
$this->services_instances[$key] = new $name($this->app);
|
||||
|
||||
return $this->services_instances[$key];
|
||||
}
|
||||
|
||||
public function isLoaded($key)
|
||||
{
|
||||
return isset($this->services[$key]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Configuration;
|
||||
|
||||
use Common\BaseBundles;
|
||||
|
||||
class Bundles extends BaseBundles
|
||||
{
|
||||
protected $bundles = [
|
||||
"Twake/Core",
|
||||
"Twake/Users",
|
||||
"Twake/Calendar",
|
||||
"Twake/Channels",
|
||||
"Twake/Discussion",
|
||||
"Twake/Drive",
|
||||
"Twake/GlobalSearch",
|
||||
"Twake/Market",
|
||||
"Twake/Notifications",
|
||||
"Twake/Tasks",
|
||||
"Twake/Upload",
|
||||
"Twake/Workspaces",
|
||||
|
||||
"DevelopersApiV1/Calendar",
|
||||
"DevelopersApiV1/Channels",
|
||||
"DevelopersApiV1/Core",
|
||||
"DevelopersApiV1/Drive",
|
||||
"DevelopersApiV1/General",
|
||||
"DevelopersApiV1/Messages",
|
||||
"DevelopersApiV1/Tasks",
|
||||
"DevelopersApiV1/Users",
|
||||
|
||||
"AdministrationApi/Apps",
|
||||
"AdministrationApi/Core",
|
||||
"AdministrationApi/Counter",
|
||||
"AdministrationApi/Group",
|
||||
"AdministrationApi/Users",
|
||||
"AdministrationApi/Workspaces",
|
||||
|
||||
"BuiltInConnectors/Common",
|
||||
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Configuration;
|
||||
|
||||
class Commands
|
||||
{
|
||||
public $commands = [
|
||||
"twake:schema:update" => "Twake\Core\Command\TwakeSchemaUpdateCommand",
|
||||
"twake:init" => "Twake\Core\Command\InitCommand",
|
||||
"twake:init_connector" => "BuiltInConnectors\Common\Command\InitConnector",
|
||||
"twake:update_services_status" => "Twake\Core\Command\UpdateServicesStatusCommand",
|
||||
"twake:routes" => "Twake\Core\Command\GetRoutesCommand",
|
||||
"twake:tasks_check_reminders" => "Twake\Tasks\Command\TaskReminderCheckerCommand",
|
||||
"twake:reindex" => "Twake\Core\Command\ReindexCommand",
|
||||
"twake:mapping" => "Twake\Core\Command\MappingCommand",
|
||||
"twake:calendar_check" => "Twake\Calendar\Command\ReminderCheckerCommand",
|
||||
"twake:mails_queue" => "Twake\Core\Command\MailsQueueCommand",
|
||||
"twake:notifications_mail" => "Twake\Notifications\Command\NotificationMailCommand",
|
||||
"twake:preview_worker" => "Twake\Drive\Command\DrivePreviewCommand",
|
||||
"twake:scheduled_notifications_consume_timetable" => "Twake\Core\Command\ScheduledNotificationsConsumeTimetable",
|
||||
"twake:scheduled_notifications_consume_shard" => "Twake\Core\Command\ScheduledNotificationsConsumeShard",
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Configuration;
|
||||
|
||||
use App\App;
|
||||
use Twake\Users\Services\UserProvider;
|
||||
|
||||
class Configuration extends \Common\Configuration
|
||||
{
|
||||
|
||||
public $configuration = [];
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->configuration = [
|
||||
"twig" => [
|
||||
'cache' => '/cache/twig'
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,221 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Configuration;
|
||||
|
||||
class Parameters extends \Common\Configuration
|
||||
{
|
||||
|
||||
public $configuration = [];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->configuration = [
|
||||
"env" => [
|
||||
"type" => "prod",
|
||||
"timer" => false,
|
||||
"admin_api_token" => "",
|
||||
"licence_key" => "",
|
||||
"standalone" => true,
|
||||
//"frontend_server_name" => "http://localhost:8000/", // define only if needed
|
||||
"server_name" => "http://localhost:8000/",
|
||||
"internal_server_name" => "http://nginx/"
|
||||
],
|
||||
"jwt" => [
|
||||
"secret" => "supersecret",
|
||||
"expiration" => 60*60, //1 hour
|
||||
"refresh_expiration" => 60*60*24*31 //1 month
|
||||
],
|
||||
"node" => [
|
||||
"api" => "http://node:3000/private/",
|
||||
"secret" => "api_supersecret"
|
||||
],
|
||||
"db" => [
|
||||
"driver" => "pdo_cassandra",
|
||||
"host" => "scylladb",
|
||||
"port" => 9042,
|
||||
"dbname" => "twake",
|
||||
"user" => "root",
|
||||
"password" => "root",
|
||||
"encryption_key" => "ab63bb3e90c0271c9a1c06651a7c0967eab8851a7a897766",
|
||||
"replication" => "{'class': 'SimpleStrategy', 'replication_factor': '1'}",
|
||||
"is_cassandra" => false
|
||||
],
|
||||
"es" => [
|
||||
"host" => "elasticsearch:9200"
|
||||
],
|
||||
"queues" => [
|
||||
"rabbitmq" => [
|
||||
"use" => true,
|
||||
"host" => "rabbitmq",
|
||||
"port" => 5672,
|
||||
"username" => "admin",
|
||||
"password" => "admin",
|
||||
"vhost" => false
|
||||
]
|
||||
],
|
||||
"storage" => [
|
||||
"drive_previews_tmp_folder" => "/tmp/",
|
||||
"drive_tmp_folder" => "/tmp/",
|
||||
"drive_salt" => "SecretPassword",
|
||||
"providers" => [
|
||||
[
|
||||
"label" => "someOpenStack",
|
||||
"type" => "openstack",
|
||||
"use" => false,
|
||||
"project_id" => "",
|
||||
"auth_url" => "https//auth.cloud.ovh.net/v3",
|
||||
"buckets_prefix" => "",
|
||||
"disable_encryption" => false,
|
||||
"buckets" => [
|
||||
"fr" => [
|
||||
"public" => "",
|
||||
"private" => "",
|
||||
"region" => "SBG5"
|
||||
]
|
||||
],
|
||||
"user" => [
|
||||
"id" => "",
|
||||
"password" => "",
|
||||
"domain_name" => "default"
|
||||
]
|
||||
],
|
||||
[
|
||||
"label" => "someS3",
|
||||
"type" => "S3",
|
||||
"base_url" => "http://127.0.0.1:9000",
|
||||
"use" => false,
|
||||
"version" => "latest",
|
||||
"disable_encryption" => false,
|
||||
"buckets_prefix" => "dev.",
|
||||
"buckets" => [
|
||||
"fr" => "eu-west-3"
|
||||
],
|
||||
"credentials" => [
|
||||
"key" => "",
|
||||
"secret" => ""
|
||||
]
|
||||
],
|
||||
[
|
||||
"label" => "someLocal",
|
||||
"type" => "local",
|
||||
"use" => true,
|
||||
"disable_encryption" => false,
|
||||
"location" => "../drive/",
|
||||
"preview_location" => "../web/medias/",
|
||||
"preview_public_path" => "/medias/"
|
||||
],
|
||||
],
|
||||
],
|
||||
"mail" => [
|
||||
"sender" => [
|
||||
"host" => "",
|
||||
"port" => "",
|
||||
"username" => "",
|
||||
"password" => "",
|
||||
"auth_mode" => "plain"
|
||||
],
|
||||
"template_dir" => "/src/Twake/Core/Resources/views/",
|
||||
"twake_domain_url" => "https://twakeapp.com/",
|
||||
"from" => "noreply@twakeapp.com",
|
||||
"from_name" => "Twake",
|
||||
"twake_address" => "Twake, 54000 Nancy, France",
|
||||
"dkim" => [
|
||||
"private_key" => "",
|
||||
"domain_name" => '',
|
||||
"selector" => ''
|
||||
],
|
||||
"mailjet"=> [
|
||||
"contact_list_subscribe"=> false,
|
||||
"contact_list_newsletter"=> false
|
||||
]
|
||||
],
|
||||
"push_notifications" => [
|
||||
"apns_certificate" => __DIR__ . "/certs/apns_prod.pem",
|
||||
"firebase_api_key" => "KEY",
|
||||
],
|
||||
|
||||
//Defaults values for all clients but editable in database
|
||||
"defaults" => [
|
||||
"applications" => [
|
||||
"twake_drive" => [ "default" => true ], //False to not install
|
||||
"twake_calendar" => [ "default" => true ],
|
||||
"twake_tasks" => [ "default" => true ],
|
||||
"connectors" => [
|
||||
"jitsi" => [ "default" => true ],
|
||||
]
|
||||
],
|
||||
"connectors" => [
|
||||
],
|
||||
"branding" => [
|
||||
"name" => "Twake",
|
||||
"enable_newsletter" => false,
|
||||
/*
|
||||
"header" => [
|
||||
"logo" => 'https://openpaas.linagora.com/images/white-logo.svg',
|
||||
"apps" => [
|
||||
[
|
||||
"name"=> 'Accueil',
|
||||
"url"=> 'https://openpaas.linagora.com/',
|
||||
"icon"=> 'https://openpaas.linagora.com/images/application-menu/home-icon.svg',
|
||||
],
|
||||
[
|
||||
"name"=> 'Inbox',
|
||||
"url"=> 'https://openpaas.linagora.com/#/unifiedinbox/inbox',
|
||||
"icon"=> 'https://openpaas.linagora.com/unifiedinbox/images/inbox-icon.svg',
|
||||
],
|
||||
[
|
||||
"name"=> 'Calendrier',
|
||||
"url"=> 'https://openpaas.linagora.com/#/calendar',
|
||||
"icon"=> 'https://openpaas.linagora.com/calendar/images/calendar-icon.svg',
|
||||
],
|
||||
[
|
||||
"name"=> 'Contacts',
|
||||
"url"=> 'https://openpaas.linagora.com/#/contact/addressbooks/',
|
||||
"icon"=> 'https://openpaas.linagora.com/contact/images/contacts-icon.svg',
|
||||
],
|
||||
],
|
||||
],
|
||||
"style" => [
|
||||
"color" => '#2196F3',
|
||||
"default_border_radius" => '2',
|
||||
],
|
||||
"link" => "https://open-paas.org/",
|
||||
"logo" => "https://open-paas.org/wp-content/uploads/2019/10/openpaas.png"
|
||||
*/
|
||||
],
|
||||
"auth" => [
|
||||
"internal" => [
|
||||
"use" => true,
|
||||
"disable_account_creation" => false,
|
||||
"disable_email_verification" => true
|
||||
],
|
||||
"openid" => [
|
||||
"use" => false,
|
||||
"provider_uri" => 'https://auth0.com',
|
||||
"client_id" => '',
|
||||
"client_secret" => '',
|
||||
//"disable_logout_redirect" => false
|
||||
"provider_config" => [
|
||||
//token_endpoint
|
||||
//token_endpoint_auth_methods_supported
|
||||
//userinfo_endpoint
|
||||
//end_session_endpoint
|
||||
//authorization_endpoint
|
||||
]
|
||||
],
|
||||
"cas" => [
|
||||
"use" => false,
|
||||
"base_url" => '',
|
||||
"email_key" => '',
|
||||
"lastname_key" => '',
|
||||
"firstname_key" => ''
|
||||
],
|
||||
"console" => [
|
||||
"use" => false
|
||||
]
|
||||
]
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Configuration;
|
||||
|
||||
class Providers
|
||||
{
|
||||
public $providers = [
|
||||
"doctrine" => [
|
||||
"services" => [
|
||||
"db"
|
||||
],
|
||||
"register" => "Twake\Core\Services\DoctrineAdapter\DoctrineServiceProvider",
|
||||
]
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
require_once __DIR__.'/../vendor/autoload.php';
|
||||
|
||||
use App\App;
|
||||
|
||||
$app = new App();
|
||||
$app->runCli();
|
||||
@@ -1,47 +0,0 @@
|
||||
{
|
||||
"name": "twake/twake-core",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Romaric Mourgues",
|
||||
"email": "romaric.mourgues@twakeapp.com"
|
||||
}
|
||||
],
|
||||
"repositories": [
|
||||
{
|
||||
"type": "vcs",
|
||||
"url": "https://github.com/Twake/Pusher"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=7.1",
|
||||
"doctrine/orm": "^2.5",
|
||||
"doctrine/doctrine-bundle": "^1.6",
|
||||
"doctrine/doctrine-cache-bundle": "^1.2",
|
||||
"phpunit/phpunit": "5.7",
|
||||
"aws/aws-sdk-php-symfony": "~2.0",
|
||||
"php-opencloud/openstack": "^3.0",
|
||||
"emojione/emojione": "3.1",
|
||||
"swiftmailer/swiftmailer": "^6.0",
|
||||
"twig/twig": "^2.12",
|
||||
"doctrine/dbal": "~2.2",
|
||||
"ramsey/uuid-doctrine": "^1.5",
|
||||
"spatie/pdf-to-text": "*",
|
||||
"soleon/sc-php": "^1.0",
|
||||
"pecee/simple-router": "4.2.0.6",
|
||||
"pimple/pimple": "~3.0",
|
||||
"mxp100/pusher": "dev-twake-1.0 as 1.0",
|
||||
"eluceo/ical": "^0.16.0",
|
||||
"php-amqplib/php-amqplib": "^2.11",
|
||||
"phpseclib/phpseclib": "^2.0",
|
||||
"sentry/sdk": "^2.1",
|
||||
"firebase/php-jwt": "^5.2",
|
||||
"segmentio/analytics-php": "^1.5"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"": "src/",
|
||||
"Common\\": "app/Common",
|
||||
"App\\": "app/"
|
||||
}
|
||||
}
|
||||
}
|
||||
Generated
-7547
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,198 +0,0 @@
|
||||
<?php
|
||||
|
||||
echo "Please confirm your action, it cannot be undone. IMPORTANT : this action should be done on a just cloned directory from git repository !!";
|
||||
$line = readline("Press any key then press enter");
|
||||
if(!$line){
|
||||
die();
|
||||
}
|
||||
|
||||
$exludedPathContaining = ["/.", "/src/Administration/", "/src/DevelopersApi/", "/tests", "/web/angular", "/web/app_dev.php", "/websocket_supervisor.sh", "/composer.lock", "/Ressources/Apis"];
|
||||
$exludedLinesContaining = [" Administration\\", " DevelopersApi\\"];
|
||||
|
||||
function remove($path){
|
||||
if (is_dir($path)) {
|
||||
$objects = scandir($path);
|
||||
foreach ($objects as $object) {
|
||||
if ($object != "." && $object != "..") {
|
||||
if (is_dir($path."/".$object))
|
||||
remove($path."/".$object);
|
||||
else
|
||||
unlink($path."/".$object);
|
||||
}
|
||||
}
|
||||
rmdir($path);
|
||||
}else{
|
||||
unlink($path);
|
||||
}
|
||||
}
|
||||
|
||||
function getDirContents($dir){
|
||||
global $exludedPathContaining, $exludedLinesContaining;
|
||||
|
||||
$files = scandir($dir);
|
||||
|
||||
foreach($files as $key => $value){
|
||||
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
|
||||
|
||||
if(strpos($path."/", "generate_onpremise_version.php") !== false
|
||||
|| strpos($path."/", "/drive/") !== false
|
||||
|| strpos($path."/", "/vendor/") !== false){
|
||||
continue;
|
||||
}
|
||||
|
||||
$removed = false;
|
||||
foreach ($exludedPathContaining as $filter) {
|
||||
if(strpos($path."/", $filter) !== false){
|
||||
remove($path);
|
||||
$removed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$removed){
|
||||
|
||||
if(!is_dir($path)) {
|
||||
|
||||
$extension = explode(".", $path);
|
||||
$extension = end($extension);
|
||||
|
||||
if($extension!="phar") {
|
||||
|
||||
$content = file_get_contents($path);
|
||||
|
||||
$lines = explode("\n", $content);
|
||||
$exclude = array();
|
||||
$removing = false;
|
||||
foreach ($lines as $line) {
|
||||
$found = false;
|
||||
foreach ($exludedLinesContaining as $contain) {
|
||||
if (strpos($line, $contain) !== false) {
|
||||
$found = true;
|
||||
}
|
||||
}
|
||||
if (strpos($line, "[REMOVE_ONPREMISE]") !== false) {
|
||||
$removing = true;
|
||||
}
|
||||
|
||||
if (!$found && !$removing) {
|
||||
if ($extension == "php") {
|
||||
$line = str_replace(", $", ",$", $line);
|
||||
$line = str_replace(") {", "){", $line);
|
||||
$line = str_replace("if (", "if(", $line);
|
||||
$line = str_replace("else {", "else{", $line);
|
||||
$line = str_replace(" =", "=", $line);
|
||||
$line = str_replace("= ", "=", $line);
|
||||
$line = str_replace(" ? ", "?", $line);
|
||||
$line = str_replace(" : ", ":", $line);
|
||||
|
||||
//Remove one line comments
|
||||
$line = preg_replace_callback('/\/\/.*|\/\*[\s\S]*?\*\/|("(\\.|[^"])*")/m',
|
||||
function ($matches) {
|
||||
if (\is_array($matches) && (\count($matches) > 1)) {
|
||||
return $matches[1];
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}, $line);
|
||||
|
||||
if (strpos($line, "if") !== false || strpos($line, "else") !== false) {
|
||||
$line .= "[ONPREMISE_LINE_BREAK]";
|
||||
}
|
||||
|
||||
if (trim($line) != '') {
|
||||
$exclude[] = trim($line);
|
||||
}
|
||||
} elseif ($extension == "yml") {
|
||||
$splited = explode("#", $line);
|
||||
|
||||
if (count($splited) > 1 && trim($splited[0]) == "") {
|
||||
array_pop($splited);
|
||||
$line = implode("#", $splited);
|
||||
}
|
||||
|
||||
if (trim($line) != '') {
|
||||
$exclude[] = $line;
|
||||
}
|
||||
} else {
|
||||
if (trim($line) != '') {
|
||||
$exclude[] = $line;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (strpos($line, "[/REMOVE_ONPREMISE]") !== false) {
|
||||
$removing = false;
|
||||
}
|
||||
}
|
||||
if ($extension == "php" && strpos($path . "/", "/src/") !== false) {
|
||||
if (strpos($path . "/", "/Entity/") !== false) {
|
||||
$content = implode("\n", $exclude);
|
||||
} else {
|
||||
$content = implode("", $exclude);
|
||||
}
|
||||
$content = str_replace("<?php ", "<?php", $content);
|
||||
$content = str_replace("<?php", "<?php ", $content);
|
||||
|
||||
|
||||
if (strpos($path . "/", "/Entity/") === false && strpos($path . "/", "/Controller/") === false) {
|
||||
preg_match_all("/\\$[a-zA-Z_][a-zA-Z_0-9]+/", $content, $variables);
|
||||
$variables = array_unique($variables[0]);
|
||||
$replaceA = [];
|
||||
$replaceB = [];
|
||||
foreach ($variables as $variable) {
|
||||
$variable = explode("$", $variable);
|
||||
$variable = $variable[1];
|
||||
if ($variable != 'this') {
|
||||
$replaceA[] = '/\\$' . $variable . "([^a-zA-Z0-9_])/";
|
||||
$replaceB[] = '$v' . md5($variable) . "$1";
|
||||
if (!preg_match('/function +' . $variable . '\\(/', $content)) {
|
||||
$replaceA[] = '/\\$this->' . $variable . "([^a-zA-Z0-9_])/";
|
||||
$replaceB[] = '$this->v' . md5($variable) . "$1";
|
||||
}
|
||||
}
|
||||
}
|
||||
$content = preg_replace($replaceA, $replaceB, $content);
|
||||
|
||||
//Re replace class vars
|
||||
preg_match_all("/var +\\$[a-zA-Z_][a-zA-Z_0-9]+/", $content, $variables);
|
||||
$variables = array_unique($variables[0]);
|
||||
|
||||
$replaceA = [];
|
||||
$replaceB = [];
|
||||
foreach ($variables as $variable) {
|
||||
$variable = explode(" ", $variable);
|
||||
$variable = $variable[1];
|
||||
$replaceA[] = '/\\$v' . md5($variable) . "([^a-zA-Z0-9_])/";
|
||||
$replaceB[] = $variable . "$1";
|
||||
}
|
||||
$content = preg_replace($replaceA, $replaceB, $content);
|
||||
|
||||
}
|
||||
|
||||
if (strpos($path . "/", "/Entity/") === false) {
|
||||
$content = preg_replace('!/\*.*?\*/!s', '', $content);
|
||||
}
|
||||
|
||||
} else {
|
||||
$content = implode("\n", $exclude);
|
||||
}
|
||||
|
||||
$content = str_replace("[ONPREMISE_LINE_BREAK]", "\n", $content);
|
||||
|
||||
file_put_contents($path, $content);
|
||||
|
||||
}
|
||||
|
||||
} else if($value != "." && $value != "..") {
|
||||
getDirContents($path);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
getDirContents('./')
|
||||
|
||||
?>
|
||||
@@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.8/phpunit.xsd"
|
||||
backupGlobals="false"
|
||||
colors="true"
|
||||
bootstrap="tests/autoload.php"
|
||||
convertNoticesToExceptions="false"
|
||||
convertWarningsToExceptions="false"
|
||||
>
|
||||
<php>
|
||||
<ini name="error_reporting" value="-1"/>
|
||||
</php>
|
||||
|
||||
<testsuites>
|
||||
<testsuite name="Project Test Suite">
|
||||
<directory>tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
</phpunit>
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Apps;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
require_once __DIR__ . "/Resources/Services.php";
|
||||
|
||||
use AdministrationApi\Apps\Resources\Routing;
|
||||
use AdministrationApi\Apps\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
|
||||
$this->services = (new Services())->getServices();
|
||||
$this->initServices();
|
||||
}
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Apps\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
|
||||
class Apps extends BaseController
|
||||
{
|
||||
|
||||
public function getAllApps(Request $request)
|
||||
{
|
||||
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
$offset = $request->request->get("offset");
|
||||
$limit = $request->request->get("limit");
|
||||
|
||||
$validate_struct = $validation->validateStructure(Array(), Array(), $limit, $offset);
|
||||
|
||||
if ($validate_struct) {
|
||||
$apps = $this->get("administration.apps")->getAllApps($limit, $offset);
|
||||
|
||||
$data["data"] = $apps;
|
||||
} else {
|
||||
$data["errors"][] = "invalid_request_structure";
|
||||
}
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
public function getOneApp(Request $request)
|
||||
{
|
||||
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
$app_id = $request->request->get("id");
|
||||
|
||||
$app_service = $this->get("administration.apps");
|
||||
|
||||
$app = $app_service->getOneApp($app_id);
|
||||
|
||||
if ($app) {
|
||||
$data["data"] = $app->getAsArray();
|
||||
} else {
|
||||
$data["errors"][] = "app_not_found";
|
||||
}
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
public function toggleValidation(Request $request)
|
||||
{
|
||||
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
$app_id = $request->request->get("id");
|
||||
|
||||
$app_service = $this->get("administration.apps");
|
||||
|
||||
$app = $app_service->toggleAppValidation($app_id);
|
||||
|
||||
if ($app) {
|
||||
$data["data"] = "";
|
||||
} else {
|
||||
$data["errors"][] = "app_not_validated";
|
||||
}
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Apps\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "api/backend/apps/";
|
||||
|
||||
protected $routes = [
|
||||
"getApps" => ["handler" => "Apps:getAllApps", "methods" => ["POST"]],
|
||||
"getOneApp" => ["handler" => "Apps:getOneApp", "methods" => ["POST"]],
|
||||
"toggleValidation" => ["handler" => "Apps:toggleValidation", "methods" => ["POST"]],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Apps\Resources;
|
||||
|
||||
use Common\BaseServices;
|
||||
|
||||
class Services extends BaseServices
|
||||
{
|
||||
protected $services = [
|
||||
"administration.apps" => "AdministrationApps",
|
||||
// arguments: [ "@app.twake_doctrine" ]
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Apps\Services;
|
||||
|
||||
|
||||
use App\App;
|
||||
|
||||
class AdministrationApps
|
||||
{
|
||||
|
||||
private $em;
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->em = $app->getServices()->get("app.twake_doctrine");
|
||||
}
|
||||
|
||||
public function getAllApps($limit, $offset)
|
||||
{
|
||||
|
||||
$appsRepository = $this->em->getRepository("Twake\Market:Application");
|
||||
|
||||
$apps_entities = $appsRepository->findBy(array(), array(), $limit, $offset/*, "__TOKEN__id"*/);
|
||||
|
||||
$apps = array();
|
||||
|
||||
foreach ($apps_entities as $app) {
|
||||
$apps[] = $app->getAsArray();
|
||||
}
|
||||
|
||||
return $apps;
|
||||
|
||||
}
|
||||
|
||||
public function getOneApp($id)
|
||||
{
|
||||
$appsRepository = $this->em->getRepository("Twake\Market:Application");
|
||||
|
||||
$app_tab = $appsRepository->findBy(array("id" => $id));
|
||||
|
||||
$app = false;
|
||||
|
||||
if (count($app_tab) == 1) {
|
||||
$app = $app_tab[0];
|
||||
}
|
||||
|
||||
return $app;
|
||||
}
|
||||
|
||||
public function toggleAppValidation($id)
|
||||
{
|
||||
$appsRepository = $this->em->getRepository("Twake\Market:Application");
|
||||
|
||||
$app_tab = $appsRepository->findBy(array("id" => $id));
|
||||
|
||||
$rep = false;
|
||||
|
||||
if (count($app_tab) == 1) {
|
||||
if ($app_tab[0]->getPublic()) {
|
||||
$app_tab[0]->setIsAvailableToPublic(!$app_tab[0]->getIsAvailableToPublic());
|
||||
$this->em->persist($app_tab[0]);
|
||||
$rep = true;
|
||||
}
|
||||
}
|
||||
|
||||
$this->em->flush();
|
||||
|
||||
return $rep;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Core;
|
||||
|
||||
require_once __DIR__ . "/Resources/Services.php";
|
||||
|
||||
use AdministrationApi\Core\Resources\Routing;
|
||||
use AdministrationApi\Core\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$this->services = (new Services())->getServices();
|
||||
$this->initServices();
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Core\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
|
||||
class Base extends BaseController
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Core\Resources;
|
||||
|
||||
use Common\BaseServices;
|
||||
|
||||
class Services extends BaseServices
|
||||
{
|
||||
protected $services = [
|
||||
"administration.validation" => "ValidationService",
|
||||
// arguments: [ %administration_token% ]
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Core\Services;
|
||||
|
||||
use App\App;
|
||||
|
||||
/**
|
||||
* Class ValidationService
|
||||
* @package AdministrationApi\Core\Services
|
||||
*/
|
||||
class ValidationService
|
||||
{
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
private $token;
|
||||
|
||||
/**
|
||||
* ValidationService constructor.
|
||||
* @param $token
|
||||
*/
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->token = $app->getContainer()->getParameter('env.admin_api_token');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $token
|
||||
* @return bool
|
||||
*/
|
||||
public function validateAuthentication($token)
|
||||
{
|
||||
return $token == $this->token;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function validateStructure($filter, $sort, $limit, $page)
|
||||
{
|
||||
if ($limit <= 0) {
|
||||
return false;
|
||||
}
|
||||
if ($page < 0) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Counter;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
require_once __DIR__ . "/Resources/Services.php";
|
||||
|
||||
use AdministrationApi\Counter\Resources\Routing;
|
||||
use AdministrationApi\Counter\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
|
||||
$this->services = (new Services())->getServices();
|
||||
$this->initServices();
|
||||
}
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Counter\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
|
||||
class Counter extends BaseController
|
||||
{
|
||||
|
||||
public function getCounter(Request $request)
|
||||
{
|
||||
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
|
||||
$keys = $request->request->get("key");
|
||||
|
||||
$begin_date = $request->request->get("begin");
|
||||
|
||||
$end_date = $request->request->get("end");
|
||||
|
||||
$counter_service = $this->get("administration.counter");
|
||||
|
||||
$counter_data = array();
|
||||
|
||||
if (is_array($keys)) {
|
||||
foreach ($keys as $key) {
|
||||
$counter_tab = $counter_service->getCounter($key, $begin_date, $end_date);
|
||||
if ($counter_tab) {
|
||||
$counter_data[$key] = $counter_tab;
|
||||
}
|
||||
}
|
||||
if (count($counter_data) == 0) {
|
||||
$data['errors'][] = "key_not_found";
|
||||
}
|
||||
} elseif ($keys) {
|
||||
$counter_tab = $counter_service->getCounter($keys, $begin_date, $end_date);
|
||||
if ($counter_tab) {
|
||||
$counter_data[$keys] = $counter_tab;
|
||||
} else {
|
||||
$data['errors'][] = "counter_not_found";
|
||||
}
|
||||
} else {
|
||||
$data['errors'][] = "key_not_found";
|
||||
}
|
||||
|
||||
$data['data'] = $counter_data;
|
||||
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Counter\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
/**
|
||||
* Counter
|
||||
*
|
||||
* @ORM\Table(name="stats_counter",options={"engine":"MyISAM", "scylladb_keys": {{"counter_key":"ASC", "date":"DESC"}} })
|
||||
* @ORM\Entity()
|
||||
*/
|
||||
class StatsCounter
|
||||
{
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="counter_key", type="string", length=50)
|
||||
* @ORM\Id
|
||||
*/
|
||||
protected $counter_key;
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="date", type="integer")
|
||||
* @ORM\Id
|
||||
*/
|
||||
protected $date;
|
||||
|
||||
/**
|
||||
* @ORM\Column(name="value", type="twake_counter")
|
||||
*/
|
||||
protected $value;
|
||||
|
||||
public function __construct($counter_key, $date)
|
||||
{
|
||||
$this->counter_key = $counter_key;
|
||||
$this->date = $date;
|
||||
$this->value = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getCounterKey()
|
||||
{
|
||||
return $this->counter_key;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getDate()
|
||||
{
|
||||
return $this->date;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getValue()
|
||||
{
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $value BE CAREFUL THIS IS A COUNTER ! SO IT WILL BE AN ADD NOT A SET
|
||||
*/
|
||||
public function setIncrementValue($value)
|
||||
{
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
public function getAsArray()
|
||||
{
|
||||
$date = \DateTime::createFromFormat("d-m-Y", "01-01-" . intdiv($this->getDate(), 1000));
|
||||
$days = $this->getDate() % 1000;
|
||||
$date->add(new \DateInterval("P" . $days . "D"));
|
||||
$date_string = date("d/m/Y", $date->getTimestamp());
|
||||
return array(
|
||||
"date" => $date_string,
|
||||
"value" => $this->getValue()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Counter\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "api/backend/counter/";
|
||||
|
||||
protected $routes = [
|
||||
"getCounter" => ["handler" => "Counter:getCounter", "methods" => ["POST"]],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Counter\Resources;
|
||||
|
||||
use Common\BaseServices;
|
||||
|
||||
class Services extends BaseServices
|
||||
{
|
||||
protected $services = [
|
||||
"administration.counter" => "CounterService",
|
||||
// arguments: [ "@app.twake_doctrine" ]
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Counter\Services;
|
||||
|
||||
use AdministrationApi\Counter\Entity\StatsCounter;
|
||||
use App\App;
|
||||
|
||||
class CounterService
|
||||
{
|
||||
|
||||
private $em;
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->em = $app->getServices()->get("app.twake_doctrine");
|
||||
}
|
||||
|
||||
public function incrementCounter($key, $increment = 1)
|
||||
{
|
||||
$counter_repository = $this->em->getRepository("AdministrationApi\Counter:StatsCounter");
|
||||
|
||||
$counter_tab = $counter_repository->findBy(Array('counter_key' => $key), array(), 1, null, 'date', 'DESC');
|
||||
$last_counter = $counter_tab[0];
|
||||
|
||||
$date_int = intval(date("Y")) * 1000 + intval(date("z"));
|
||||
|
||||
if (!$counter_tab || $last_counter->getDate() != $date_int) {
|
||||
$counter = new StatsCounter($key, $date_int);
|
||||
if ($last_counter) {
|
||||
$increment = $increment + $last_counter->getValue();
|
||||
}
|
||||
} else {
|
||||
$counter = $last_counter;
|
||||
}
|
||||
|
||||
if (!$increment) {
|
||||
return;
|
||||
}
|
||||
|
||||
$counter->setIncrementValue($increment);
|
||||
|
||||
$this->em->merge($counter);
|
||||
$this->em->flush();
|
||||
}
|
||||
|
||||
public function getCounter($key, $beginDate = null, $endDate = null)
|
||||
{
|
||||
$counter_repository = $this->em->getRepository("AdministrationApi\Counter:StatsCounter");
|
||||
|
||||
$counter_tab = $counter_repository->findBy(Array('counter_key' => $key), array(), 20, null, 'date', 'DESC');
|
||||
|
||||
$rep = false;
|
||||
|
||||
if ($beginDate) {
|
||||
$beginValue = strtotime($beginDate);
|
||||
$begin = intval(date('Y', $beginValue)) * 1000 + intval(date('z', $beginValue));
|
||||
}
|
||||
|
||||
if ($endDate) {
|
||||
$endValue = strtotime($endDate);
|
||||
$end = intval(date('Y', $endValue)) * 1000 + intval(date('z', $endValue));
|
||||
}
|
||||
|
||||
if ($counter_tab) {
|
||||
$rep = array();
|
||||
foreach ($counter_tab as $counter_entity) {
|
||||
$afterBegin = !isset($begin) || $counter_entity->getDate() >= $begin;
|
||||
$beforeEnd = !isset($end) || $counter_entity->getDate() <= $end;
|
||||
if ($afterBegin && $beforeEnd) {
|
||||
$rep[] = $counter_entity->getAsArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $rep;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Group;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
require_once __DIR__ . "/Resources/Services.php";
|
||||
|
||||
use AdministrationApi\Group\Resources\Routing;
|
||||
use AdministrationApi\Group\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
|
||||
$this->services = (new Services())->getServices();
|
||||
$this->initServices();
|
||||
}
|
||||
}
|
||||
@@ -1,248 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Group\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
|
||||
class Group extends BaseController
|
||||
{
|
||||
|
||||
public function getAllGroup(Request $request)
|
||||
{
|
||||
|
||||
// $data = Array(
|
||||
// "data" => Array(),
|
||||
// "errors" => Array()
|
||||
// );
|
||||
//
|
||||
// $validation = $this->get("administration.validation");
|
||||
// $token = $request->request->get("token");
|
||||
// $validate_token = $validation->validateAuthentication($token);
|
||||
//
|
||||
// if ($validate_token) {
|
||||
//
|
||||
// $offset = $request->request->get("offset");
|
||||
// $limit = $request->request->get("limit");
|
||||
//
|
||||
// $validate_struct = $validation->validateStructure(Array(), Array(), $limit, $offset);
|
||||
//
|
||||
// if ($validate_struct) {
|
||||
// $users = $this->get("administration.users")->getAllUsers($limit, $offset);
|
||||
//
|
||||
// $data["data"] = $users;
|
||||
// } else {
|
||||
// $data["errors"][] = "invalid_request_structure";
|
||||
// }
|
||||
// } else {
|
||||
// $data["errors"][] = "invalid_authentication_token";
|
||||
// }
|
||||
//
|
||||
// return new Response($data);
|
||||
|
||||
$scroll_id = $request->request->get("scroll_id");
|
||||
// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR";
|
||||
// $repository = "Twake\Workspaces:Group";
|
||||
|
||||
if (isset($scroll_id) && isset($repository)) {
|
||||
$globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository);
|
||||
} else {
|
||||
|
||||
$globalresult = $this->get('administration.group')->getAllGroups();
|
||||
}
|
||||
|
||||
$data = Array("data" => $globalresult);
|
||||
//return new Response("Hello !");
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
public function getAllWorkspace(Request $request)
|
||||
{
|
||||
|
||||
$scroll_id = $request->request->get("scroll_id");
|
||||
// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR";
|
||||
// $repository = "Twake\Workspaces:Group";
|
||||
|
||||
if (isset($scroll_id) && isset($repository)) {
|
||||
$globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository);
|
||||
} else {
|
||||
|
||||
$globalresult = $this->get('administration.group')->getAllWorkspace();
|
||||
}
|
||||
|
||||
$data = Array("data" => $globalresult);
|
||||
//return new Response("Hello !");
|
||||
return new Response($data);
|
||||
|
||||
}
|
||||
|
||||
public function getGroupbyname(Request $request)
|
||||
{
|
||||
|
||||
$scroll_id = $request->request->get("scroll_id");
|
||||
// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR";
|
||||
// $repository = "Twake\Workspaces:Group";
|
||||
|
||||
if (isset($scroll_id) && isset($repository)) {
|
||||
$globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository);
|
||||
} else {
|
||||
$options = Array(
|
||||
"name" => "test"
|
||||
);
|
||||
$globalresult = $this->get('administration.group')->getGroupbyName($options);
|
||||
}
|
||||
|
||||
$data = Array("data" => $globalresult);
|
||||
//return new Response("Hello !");
|
||||
return new Response($data);
|
||||
|
||||
}
|
||||
|
||||
public function getWpbyname(Request $request)
|
||||
{
|
||||
|
||||
|
||||
$scroll_id = $request->request->get("scroll_id");
|
||||
// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR";
|
||||
// $repository = "Twake\Workspaces:Group";
|
||||
|
||||
if (isset($scroll_id) && isset($repository)) {
|
||||
$globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository);
|
||||
} else {
|
||||
$options = Array(
|
||||
"name" => "test"
|
||||
);
|
||||
$globalresult = $this->get('administration.group')->getWpbyName($options);
|
||||
}
|
||||
|
||||
$data = Array("data" => $globalresult);
|
||||
//return new Response("Hello !");
|
||||
return new Response($data);
|
||||
|
||||
}
|
||||
|
||||
public function getUserbyMail(Request $request)
|
||||
{
|
||||
|
||||
|
||||
$scroll_id = $request->request->get("scroll_id");
|
||||
// $scroll_id = "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAezFnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtBZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FRAAAAAAAAB7UWeFZ5Z1FkT0VScXV4VVFzMWhyWWNRUQAAAAAAAAe2FnhWeWdRZE9FUnF1eFVRczFoclljUVEAAAAAAAAHtxZ4VnlnUWRPRVJxdXhVUXMxaHJZY1FR";
|
||||
// $repository = "Twake\Workspaces:Group";
|
||||
|
||||
if (isset($scroll_id) && isset($repository)) {
|
||||
$globalresult = $this->get('globalsearch.pagination')->getnextelement($scroll_id, $repository);
|
||||
} else {
|
||||
$options = Array(
|
||||
"mail" => "romar"
|
||||
);
|
||||
$globalresult = $this->get('administration.group')->getUserbyMail($options);
|
||||
}
|
||||
|
||||
$data = Array("data" => $globalresult);
|
||||
//return new Response("Hello !");
|
||||
return new Response($data);
|
||||
|
||||
}
|
||||
|
||||
public function getOneGroup(Request $request)
|
||||
{
|
||||
|
||||
// $data = Array(
|
||||
// "data" => Array(),
|
||||
// "errors" => Array()
|
||||
// );
|
||||
//
|
||||
// $validation = $this->get("administration.validation");
|
||||
// $token = $request->request->get("token");
|
||||
// $validate_token = $validation->validateAuthentication($token);
|
||||
//
|
||||
// if ($validate_token) {
|
||||
//
|
||||
// $user_id = $request->request->get("id");
|
||||
//
|
||||
// $user_service = $this->get("administration.users");
|
||||
//
|
||||
// $user = $user_service->getOneUser($user_id);
|
||||
//
|
||||
// if ($user) {
|
||||
//
|
||||
// if ($user == "Error") {
|
||||
// $data["errors"][] = "unknown_error";
|
||||
// } else {
|
||||
//
|
||||
// $devices = $user_service->getUserDevices($user);
|
||||
// $mails = $user_service->getUserMails($user);
|
||||
// $workspaces = $user_service->getUserWorkspaces($user);
|
||||
// $groups = $user_service->getUserGroups($user);
|
||||
//
|
||||
// $data["data"]["user"] = $user->getAsArray();
|
||||
// $data["data"]["user"]["creation_date"] = $user->getCreationDate();
|
||||
// $data["data"]["user"]["last_login"] = $user->getLastLogin();
|
||||
// $data["data"]["devices"] = $devices;
|
||||
// $data["data"]["mails"] = $mails;
|
||||
// $data["data"]["workspaces"] = $workspaces;
|
||||
// $data["data"]["groups"] = $groups;
|
||||
// }
|
||||
// } else {
|
||||
// $data["errors"][] = "user_not_found";
|
||||
// }
|
||||
// } else {
|
||||
// $data["errors"][] = "invalid_authentication_token";
|
||||
// }
|
||||
//
|
||||
// return new Response($data);
|
||||
}
|
||||
|
||||
public function findGroup(Request $request)
|
||||
{
|
||||
|
||||
// $data = array(
|
||||
// "data" => Array(),
|
||||
// "errors" => Array()
|
||||
// );
|
||||
//
|
||||
// $validation = $this->get("administration.validation");
|
||||
// $token = $request->request->get("token");
|
||||
// $validate_token = $validation->validateAuthentication($token);
|
||||
//
|
||||
// if ($validate_token) {
|
||||
// $search_string = $request->request->get("search");
|
||||
//
|
||||
// $users_service = $this->get("administration.users");
|
||||
//
|
||||
// $users = $users_service->findUserByUsername($search_string);
|
||||
//
|
||||
// if (!$users) {
|
||||
// $users = $users_service->findUserByEmail($search_string);
|
||||
// }
|
||||
//
|
||||
// if (!$users) {
|
||||
// $users = $users_service->findUserById($search_string);
|
||||
// }
|
||||
//
|
||||
// if (!$users) {
|
||||
//
|
||||
// $advanced_search = $this->get("app.users");
|
||||
//
|
||||
// $search_words = explode(" ", $search_string);
|
||||
//
|
||||
// $users = $advanced_search->search($search_words, Array("allow_email" => true));
|
||||
//
|
||||
// }
|
||||
//
|
||||
// if (count($users) == 0) {
|
||||
// $data['errors'][] = "user_not_found";
|
||||
// } else {
|
||||
// $data['data'] = $users;
|
||||
// }
|
||||
//
|
||||
// } else {
|
||||
// $data["errors"][] = "invalid_authentication_token";
|
||||
// }
|
||||
//
|
||||
// return new Response($data);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Group\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "api/backend/group/";
|
||||
|
||||
protected $routes = [
|
||||
|
||||
"getgroup" => ["handler" => "Group:getAllGroup", "methods" => ["POST"]],
|
||||
"getwp" => ["handler" => "Group:getAllWorkspace", "methods" => ["POST"]],
|
||||
"getgroupbyname" => ["handler" => "Group:getGroupbyname", "methods" => ["POST"]],
|
||||
"getwpbyname" => ["handler" => "Group:getWpbyname", "methods" => ["POST"]],
|
||||
"getuserbymail" => ["handler" => "Group:getUserbyMail", "methods" => ["POST"]],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Group\Resources;
|
||||
|
||||
use Common\BaseServices;
|
||||
|
||||
class Services extends BaseServices
|
||||
{
|
||||
protected $services = [
|
||||
"administration.group" => "AdministrationGroup",
|
||||
// arguments: [ "@app.twake_doctrine" ]
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,307 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Group\Services;
|
||||
|
||||
|
||||
use App\App;
|
||||
|
||||
class AdministrationGroup
|
||||
{
|
||||
|
||||
private $em;
|
||||
private $list_group = Array("group" => Array(), "scroll_id" => "");
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->em = $app->getServices()->get("app.twake_doctrine");
|
||||
}
|
||||
|
||||
public function getGroupbyName($options)
|
||||
{
|
||||
|
||||
if (isset($options["name"])) {
|
||||
$name = $options["name"];
|
||||
|
||||
$options = Array(
|
||||
"repository" => "Twake\Workspaces:Group",
|
||||
"index" => "group",
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"bool" => Array(
|
||||
"should" => Array(
|
||||
"bool" => Array(
|
||||
"filter" => Array(
|
||||
"regexp" => Array(
|
||||
"name" => ".*" . $name . ".*"
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
"sort" => Array(
|
||||
"creation_date" => Array(
|
||||
"order" => "desc"
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
//var_dump(json_encode($options,JSON_PRETTY_PRINT));
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
//var_dump(json_encode($options));
|
||||
foreach ($result["result"] as $group) {
|
||||
if($group && $group[0]){
|
||||
$this->list_group["group"][] = Array($group[0]->getAsArray(), $group[1][0]);
|
||||
}
|
||||
}
|
||||
// var_dump("nombre de resultat : " . count($this->list_files));
|
||||
// var_dump($this->list_group);
|
||||
$this->list_group["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_group ?: null;
|
||||
}
|
||||
|
||||
public function getAllUsers()
|
||||
{
|
||||
$options = Array(
|
||||
"repository" => "Twake\Users:User",
|
||||
"index" => "users",
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"match_all" => (object)[]
|
||||
),
|
||||
"sort" => Array(
|
||||
"creation_date" => Array(
|
||||
"order" => "desc"
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
//var_dump(json_encode($options));
|
||||
foreach ($result["result"] as $user) {
|
||||
//var_dump($file->getAsArray());
|
||||
$this->list_group["users"][] = Array($user[0]->getAsArray(), $user[1][0]);;
|
||||
}
|
||||
// var_dump("nombre de resultat : " . count($this->list_files));
|
||||
// var_dump($this->list_group);
|
||||
$this->list_group["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_group ?: null;
|
||||
}
|
||||
|
||||
public function getWpbyName($options)
|
||||
{
|
||||
|
||||
if (isset($options["name"])) {
|
||||
$name = $options["name"];
|
||||
|
||||
$options = Array(
|
||||
"repository" => "Twake\Workspaces:Workspace",
|
||||
"index" => "workspace",
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"bool" => Array(
|
||||
"should" => Array(
|
||||
"bool" => Array(
|
||||
"filter" => Array(
|
||||
"regexp" => Array(
|
||||
"name" => ".*" . $name . ".*"
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
"sort" => Array(
|
||||
"creation_date" => Array(
|
||||
"order" => "desc"
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
//var_dump(json_encode($options));
|
||||
foreach ($result["result"] as $group) {
|
||||
//var_dump($file->getAsArray());
|
||||
$this->list_group["group"][] = Array($group[0]->getAsArray(), $group[1][0]);;
|
||||
}
|
||||
// var_dump("nombre de resultat : " . count($this->list_files));
|
||||
// var_dump($this->list_group);
|
||||
$this->list_group["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_group ?: null;
|
||||
}
|
||||
|
||||
public function getAllGroup()
|
||||
{
|
||||
|
||||
// $group = new Group("group_admin_test_2");
|
||||
// $this->em->persist($group);
|
||||
// $this->em->flush();
|
||||
|
||||
$options = Array(
|
||||
"repository" => "Twake\Workspaces:Group",
|
||||
"index" => "group",
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"match_all" => (object)[]
|
||||
),
|
||||
"sort" => Array(
|
||||
"creation_date" => Array(
|
||||
"order" => "desc"
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
//var_dump(json_encode($options,JSON_PRETTY_PRINT));
|
||||
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
//var_dump(json_encode($options));
|
||||
foreach ($result["result"] as $group) {
|
||||
//var_dump($file->getAsArray());
|
||||
$this->list_group["group"][] = Array($group[0]->getAsArray(), $group[1][0]);;
|
||||
}
|
||||
// var_dump("nombre de resultat : " . count($this->list_files));
|
||||
// var_dump($this->list_group);
|
||||
$this->list_group["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_group ?: null;
|
||||
}
|
||||
|
||||
public function getAllWorkspace()
|
||||
{
|
||||
|
||||
// $group = new Group("group_for_workspace_1");
|
||||
// $this->em->persist($group);
|
||||
// $this->em->flush();
|
||||
//
|
||||
// $wp = new Workspace("workspace_admin_test_1");
|
||||
// $wp->setGroup($group);
|
||||
// $this->em->persist($wp);
|
||||
// $this->em->flush();
|
||||
|
||||
$options = Array(
|
||||
"repository" => "Twake\Workspaces:Workspace",
|
||||
"index" => "workspace",
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"match_all" => (object)[]
|
||||
),
|
||||
"sort" => Array(
|
||||
"creation_date" => Array(
|
||||
"order" => "desc"
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
//var_dump(json_encode($options,JSON_PRETTY_PRINT));
|
||||
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
//var_dump(json_encode($options));
|
||||
foreach ($result["result"] as $wp) {
|
||||
$this->list_group["group"][] = Array($wp[0]->getAsArray(), $wp[1][0]);;
|
||||
}
|
||||
// var_dump("nombre de resultat : " . count($this->list_files));
|
||||
// var_dump($this->list_group);
|
||||
$this->list_group["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_group ?: null;
|
||||
}
|
||||
|
||||
public function getUserbyMail($options)
|
||||
{
|
||||
|
||||
if (isset($options["mail"])) {
|
||||
$mail = $options["mail"];
|
||||
|
||||
//var_dump("passage");
|
||||
|
||||
$options = Array(
|
||||
"repository" => "Twake\Users:Mail",
|
||||
"index" => "mail",
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"bool" => Array(
|
||||
"should" => Array(
|
||||
"bool" => Array(
|
||||
"filter" => Array(
|
||||
"regexp" => Array(
|
||||
"mail" => ".*" . $mail . ".*"
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
// $mail = new Mail();
|
||||
// $mail->setMail("romaric@twakemail.fr");
|
||||
// $this->em->persist($mail);
|
||||
// $this->em->flush();
|
||||
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
//var_dump(json_encode($options));
|
||||
foreach ($result["result"] as $mail) {
|
||||
//var_dump($file->getAsArray());
|
||||
$this->list_group["group"][] = $mail[0]->getUser()
|
||||
->getId() . "";
|
||||
}
|
||||
// var_dump("nombre de resultat : " . count($this->list_files));
|
||||
// var_dump($this->list_group);
|
||||
$this->list_group["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_group ?: null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Users;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
require_once __DIR__ . "/Resources/Services.php";
|
||||
|
||||
use AdministrationApi\Users\Resources\Routing;
|
||||
use AdministrationApi\Users\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
|
||||
$this->services = (new Services())->getServices();
|
||||
$this->initServices();
|
||||
}
|
||||
}
|
||||
@@ -1,143 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Users\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
|
||||
class Users extends BaseController
|
||||
{
|
||||
|
||||
public function getAllUsers(Request $request)
|
||||
{
|
||||
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
|
||||
$repository = "Twake\Users:User";
|
||||
|
||||
$scroll_id = $request->request->get("scroll_id");
|
||||
|
||||
$options = Array();
|
||||
|
||||
if (isset($scroll_id) && isset($repository)) {
|
||||
$options["scroll_id"] = $scroll_id;
|
||||
}
|
||||
|
||||
$users = $this->get("administration.users")->getAllUsers($options);
|
||||
|
||||
$data["data"] = $users;
|
||||
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
public function getOneUser(Request $request)
|
||||
{
|
||||
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
|
||||
$user_id = $request->request->get("id");
|
||||
|
||||
$user_service = $this->get("administration.users");
|
||||
|
||||
$user = $user_service->getOneUser($user_id);
|
||||
|
||||
if ($user) {
|
||||
|
||||
if ($user == "Error") {
|
||||
$data["errors"][] = "unknown_error";
|
||||
} else {
|
||||
|
||||
$devices = $user_service->getUserDevices($user);
|
||||
$mails = $user_service->getUserMails($user);
|
||||
$workspaces = $user_service->getUserWorkspaces($user);
|
||||
$groups = $user_service->getUserGroups($user);
|
||||
|
||||
$data["data"]["user"] = $user->getAsArray();
|
||||
$data["data"]["user"]["creation_date"] = $user->getCreationDate();
|
||||
$data["data"]["user"]["last_login"] = $user->getLastLogin();
|
||||
$data["data"]["devices"] = $devices;
|
||||
$data["data"]["mails"] = $mails;
|
||||
$data["data"]["workspaces"] = $workspaces;
|
||||
$data["data"]["groups"] = $groups;
|
||||
}
|
||||
} else {
|
||||
$data["errors"][] = "user_not_found";
|
||||
}
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
public function findUser(Request $request)
|
||||
{
|
||||
|
||||
$data = array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
$search_string = $request->request->get("search");
|
||||
|
||||
$users_service = $this->get("administration.users");
|
||||
|
||||
$users = $users_service->findUserById($search_string);
|
||||
|
||||
if (count($users["users"]) == 0) {
|
||||
$options = Array(
|
||||
"mail" => $search_string
|
||||
);
|
||||
$users = $this->get('administration.users')->getUserbyMail($options);
|
||||
}
|
||||
|
||||
if (count($users["users"]) == 0) {
|
||||
|
||||
$advanced_search = $this->get("app.users");
|
||||
|
||||
$options = array(
|
||||
"name" => $search_string
|
||||
);
|
||||
|
||||
$users = $advanced_search->search($options);
|
||||
|
||||
}
|
||||
|
||||
$data['data'] = $users;
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Users\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "api/backend/users/";
|
||||
|
||||
protected $routes = [
|
||||
"getUsers" => ["handler" => "Users:getAllUsers", "methods" => ["POST"]],
|
||||
"getOne" => ["handler" => "Users:getOneUser", "methods" => ["POST"]],
|
||||
"findUser" => ["handler" => "Users:findUser", "methods" => ["POST"]],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Users\Resources;
|
||||
|
||||
use Common\BaseServices;
|
||||
|
||||
class Services extends BaseServices
|
||||
{
|
||||
protected $services = [
|
||||
"administration.users" => "AdministrationUsers",
|
||||
// arguments: [ "@app.twake_doctrine" ]
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,219 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Users\Services;
|
||||
|
||||
|
||||
use App\App;
|
||||
|
||||
class AdministrationUsers
|
||||
{
|
||||
|
||||
private $em;
|
||||
|
||||
private $list_user = Array("users" => Array(), "scroll_id" => "");
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->em = $app->getServices()->get("app.twake_doctrine");
|
||||
}
|
||||
|
||||
public function getAllUsers($options)
|
||||
{
|
||||
|
||||
$options = Array(
|
||||
"repository" => "Twake\Users:User",
|
||||
"index" => "users",
|
||||
"scroll_id" => $options["scroll_id"],
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"match_all" => (object)[]
|
||||
),
|
||||
"sort" => Array(
|
||||
"creation_date" => Array(
|
||||
"order" => "desc"
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
foreach ($result["result"] as $user) {
|
||||
if($user && $user[0]){
|
||||
$user_tab = $user[0]->getAsArray();
|
||||
$user_tab['mail'] = $this->getUserMails($user[0])[0];
|
||||
$user_tab['phone_number'] = $user[0]->getPhone();
|
||||
$user_tab['creation_date'] = $user[0]->getCreationDate();
|
||||
|
||||
$this->list_user["users"][] = Array($user_tab, $user[1][0]);
|
||||
}
|
||||
}
|
||||
$this->list_user["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_user ?: null;
|
||||
}
|
||||
|
||||
public function getUserMails($user)
|
||||
{
|
||||
if(is_string($user)){
|
||||
$usersRepository = $this->em->getRepository("Twake\Users:User");
|
||||
$user = $usersRepository->findBy(Array("user_id" => $user));
|
||||
}
|
||||
|
||||
$mailsRepository = $this->em->getRepository("Twake\Users:Mail");
|
||||
$mails_tab = $mailsRepository->findBy(Array("user_id" => $user));
|
||||
|
||||
$mails = array();
|
||||
|
||||
foreach ($mails_tab as $mail) {
|
||||
$mails[] = $mail->getMail();
|
||||
}
|
||||
|
||||
$mails[] = $user->getEmail()." (not verified)";
|
||||
|
||||
return $mails;
|
||||
}
|
||||
|
||||
public function getOneUser($user_id)
|
||||
{
|
||||
try {
|
||||
$usersRepository = $this->em->getRepository("Twake\Users:User");
|
||||
|
||||
$user = $usersRepository->find($user_id);
|
||||
|
||||
return $user;
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return "Error";
|
||||
}
|
||||
}
|
||||
|
||||
public function getUserDevices($user)
|
||||
{
|
||||
$devicesRepository = $this->em->getRepository("Twake\Users:Device");
|
||||
|
||||
$devices_tab = $devicesRepository->findBy(Array("user_id" => $user));
|
||||
|
||||
$devices = array();
|
||||
|
||||
foreach ($devices_tab as $device) {
|
||||
$devices[] = $device->getAsArray();
|
||||
}
|
||||
|
||||
return $devices;
|
||||
}
|
||||
|
||||
public function getUserWorkspaces($user)
|
||||
{
|
||||
$workspacesLinkRepository = $this->em->getRepository("Twake\Workspaces:WorkspaceUser");
|
||||
$workspacesRepository = $this->em->getRepository("Twake\Workspaces:Workspace");
|
||||
|
||||
$workspaces_tab = $workspacesLinkRepository->findBy(Array("user_id" => $user->getId()));
|
||||
|
||||
$workspaces = array();
|
||||
|
||||
foreach ($workspaces_tab as $workspace) {
|
||||
$ws = $workspacesRepository->findOneBy(["id"=>$workspace->getWorkspaceId()]);
|
||||
if($ws){
|
||||
$workspaces[] = $ws->getAsArray($this->em);
|
||||
}
|
||||
}
|
||||
|
||||
return $workspaces;
|
||||
}
|
||||
|
||||
public function getUserGroups($user)
|
||||
{
|
||||
$groupsRepository = $this->em->getRepository("Twake\Workspaces:GroupUser");
|
||||
|
||||
$groups_tab = $groupsRepository->findBy(Array("user_id" => $user->getId()));
|
||||
|
||||
$groups = array();
|
||||
|
||||
foreach ($groups_tab as $group) {
|
||||
$groups[] = $group->getGroup()->getAsArray();
|
||||
}
|
||||
|
||||
return $groups;
|
||||
}
|
||||
|
||||
public function findUserById($id)
|
||||
{
|
||||
|
||||
$usersRepository = $this->em->getRepository("Twake\Users:User");
|
||||
|
||||
$users = $usersRepository->findBy(Array("id" => $id));
|
||||
|
||||
$rep = array("users" => array(), "scroll_id" => "");
|
||||
|
||||
if (count($users) >= 1) {
|
||||
|
||||
foreach ($users as $user) {
|
||||
$user_tab = $user->getAsArray();
|
||||
$user_tab['mail'] = $user->getEmail();
|
||||
$rep["users"][] = array($user_tab, null);
|
||||
}
|
||||
}
|
||||
|
||||
return $rep;
|
||||
|
||||
}
|
||||
|
||||
public function getUserbyMail($options)
|
||||
{
|
||||
|
||||
if (isset($options["mail"])) {
|
||||
$mail = $options["mail"];
|
||||
|
||||
//var_dump("passage");
|
||||
|
||||
$options = Array(
|
||||
"repository" => "Twake\Users:Mail",
|
||||
"index" => "mail",
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"bool" => Array(
|
||||
"should" => Array(
|
||||
"bool" => Array(
|
||||
"filter" => Array(
|
||||
"regexp" => Array(
|
||||
"mail" => ".*" . $mail . ".*"
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
foreach ($result["result"] as $mail) {
|
||||
$mail = $mail[0];
|
||||
$user_id = $mail->getUserId();
|
||||
$user_tab = $user->getAsArray();
|
||||
$user_tab['mail'] = $this->getUserMails($user_id)[0];
|
||||
$user_tab['phone_number'] = $user->getPhone();
|
||||
$user_tab['creation_date'] = $user->getCreationDate();
|
||||
|
||||
$this->list_user["users"][] = array($user_tab, null);
|
||||
}
|
||||
$this->list_user["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_user ?: null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Workspaces;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
require_once __DIR__ . "/Resources/Services.php";
|
||||
|
||||
use AdministrationApi\Workspaces\Resources\Routing;
|
||||
use AdministrationApi\Workspaces\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
|
||||
$this->services = (new Services())->getServices();
|
||||
$this->initServices();
|
||||
}
|
||||
}
|
||||
@@ -1,190 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Workspaces\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
|
||||
class Groups extends BaseController
|
||||
{
|
||||
|
||||
public function getAllGroups(Request $request)
|
||||
{
|
||||
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
// $page = $request->request->get("page");
|
||||
// $limit = $request->request->get("limit");
|
||||
// $offset = $page * $limit;
|
||||
//
|
||||
// $validate_struct = $validation->validateStructure(Array(), Array(), $limit, $offset);
|
||||
//
|
||||
// if ($validate_struct) {
|
||||
// $groups = $this->get("administration.groups")->getAllGroups($limit,$offset);
|
||||
//
|
||||
// $data["data"] = $groups;
|
||||
// } else {
|
||||
// $data["errors"][] = "invalid_request_structure";
|
||||
// }
|
||||
$scroll_id = $request->request->get("scroll_id");
|
||||
$repository = "Twake\Workspaces:Group";
|
||||
|
||||
$options = Array();
|
||||
|
||||
if (isset($scroll_id) && isset($repository)) {
|
||||
$options["scroll_id"] = $scroll_id;
|
||||
}
|
||||
|
||||
$globalresult = $this->get('administration.groups')->getAllGroups($options);
|
||||
|
||||
$data["data"] = $globalresult;
|
||||
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
public function getOneGroup(Request $request)
|
||||
{
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
$id = $request->request->get("id");
|
||||
|
||||
$group_service = $this->get("administration.groups");
|
||||
|
||||
$group = $group_service->getOneGroup($id);
|
||||
|
||||
if ($group) {
|
||||
|
||||
$workspaces = $group_service->getGroupWorkspaces($group);
|
||||
$members = $group_service->getGroupMembers($group);
|
||||
$apps = $group_service->getGroupApps($group);
|
||||
|
||||
//TODO Get group Drive size
|
||||
|
||||
$data["data"]["group"] = $group->getAsArray();
|
||||
$data["data"]["group"]["creation_data"] = $group->getOnCreationData();
|
||||
$data["data"]["workspaces"] = $workspaces;
|
||||
$data["data"]["members"] = $members;
|
||||
$data["data"]["apps"] = $apps;
|
||||
|
||||
} else {
|
||||
$data["errors"][] = "group_not_found";
|
||||
}
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
public function findGroups(Request $request)
|
||||
{
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
|
||||
$group_scroll_id = $request->request->get("group_scroll_id");
|
||||
|
||||
$repository = "Twake\Workspaces:Group";
|
||||
|
||||
$search_string = $request->request->get("search");
|
||||
|
||||
$data['data']['group'] = array();
|
||||
$data['data']['workspaces'] = array();
|
||||
|
||||
$options = Array(
|
||||
"name" => $search_string
|
||||
);
|
||||
|
||||
if (isset($group_scroll_id) && isset($repository)) {
|
||||
$options["scroll_id"] = $group_scroll_id;
|
||||
}
|
||||
|
||||
$globalresult = $this->get('administration.groups')->getGroupbyName($options);
|
||||
|
||||
$group_service = $this->get("administration.groups");
|
||||
|
||||
foreach ($globalresult['group'] as $group) {
|
||||
|
||||
$id = $group[0]['id'];
|
||||
|
||||
$workspaces = $group_service->getGroupWorkspaces($id);
|
||||
|
||||
$data['data']['group'][] = $group[0];
|
||||
$data['data']['workspaces'] = array_merge($data['data']['workspaces'], $workspaces);
|
||||
}
|
||||
|
||||
$data['data']['group_scroll_id'] = $globalresult['scroll_id'];
|
||||
|
||||
$group = $group_service->getOneGroup($search_string);
|
||||
|
||||
if ($group) {
|
||||
$data['data']['group'][] = $group->getAsArray();
|
||||
}
|
||||
|
||||
$workspace_scroll_id = $request->request->get("workspace_scroll_id");
|
||||
|
||||
$repository = "Twake\Workspaces:Group";
|
||||
|
||||
if (isset($workspace_scroll_id) && isset($repository)) {
|
||||
$globalresult = $this->get('globalsearch.pagination')->getnextelement($workspace_scroll_id, $repository);
|
||||
} else {
|
||||
$options = Array(
|
||||
"name" => $search_string
|
||||
);
|
||||
$globalresult = $this->get('administration.workspaces')->getWpbyName($options);
|
||||
}
|
||||
|
||||
foreach ($globalresult['workspace'] as $workspace) {
|
||||
|
||||
$data['data']['workspaces'][] = $workspace[0];
|
||||
|
||||
}
|
||||
|
||||
$data['data']['workspaces_scroll_id'] = $globalresult['scroll_id'];
|
||||
|
||||
$workspace_service = $this->get("administration.workspaces");
|
||||
|
||||
$workspace = $workspace_service->getOneWorkspace($search_string);
|
||||
|
||||
if ($workspace) {
|
||||
$data['data']['workspaces'][] = $workspace->getAsArray($this->get("app.twake_doctrine"));
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Workspaces\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
|
||||
class Workspaces extends BaseController
|
||||
{
|
||||
|
||||
public function getOneWorkspace(Request $request)
|
||||
{
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
$id = $request->request->get("id");
|
||||
|
||||
$workspace_service = $this->get("administration.workspaces");
|
||||
|
||||
$workspace = $workspace_service->getOneWorkspace($id);
|
||||
|
||||
if ($workspace) {
|
||||
$members = $workspace_service->getWorkspaceMembers($workspace);
|
||||
$apps = $workspace_service->getWorkspaceApps($workspace);
|
||||
$invited_mails = $workspace_service->getInvitedUsers($workspace);
|
||||
|
||||
$data["data"]["workspace"] = $workspace->getAsArray($this->get("app.twake_doctrine"));
|
||||
$data["data"]["members"] = $members;
|
||||
$data["data"]["apps"] = $apps;
|
||||
$data["data"]["invited"] = $invited_mails;
|
||||
|
||||
//TODO Infos du workspace a recuperer : taille du Drive
|
||||
} else {
|
||||
$data["errors"][] = "workspace_not_found";
|
||||
}
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
public function getAllWorkspaces(Request $request)
|
||||
{
|
||||
$data = Array(
|
||||
"data" => Array(),
|
||||
"errors" => Array()
|
||||
);
|
||||
|
||||
$validation = $this->get("administration.validation");
|
||||
$token = $request->request->get("token");
|
||||
$validate_token = $validation->validateAuthentication($token);
|
||||
|
||||
if ($validate_token) {
|
||||
$scroll_id = $request->request->get("scroll_id");
|
||||
$repository = "Twake\Workspaces:Group";
|
||||
|
||||
$options = Array();
|
||||
|
||||
if (isset($scroll_id) && isset($repository)) {
|
||||
$options["scroll_id"] = $scroll_id;
|
||||
}
|
||||
|
||||
$globalresult = $this->get('administration.workspaces')->getAllWorkspace($options);
|
||||
|
||||
$data = Array("data" => $globalresult);
|
||||
} else {
|
||||
$data["errors"][] = "invalid_authentication_token";
|
||||
}
|
||||
|
||||
return new Response($data);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Workspaces\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "api/backend/workspaces/";
|
||||
|
||||
protected $routes = [
|
||||
"getGroups" => ["handler" => "Groups:getAllGroups", "methods" => ["POST"]],
|
||||
"getOneGroup" => ["handler" => "Groups:getOneGroup", "methods" => ["POST"]],
|
||||
"getAllWorkspaces" => ["handler" => "Workspaces:getAllWorkspaces", "methods" => ["POST"]],
|
||||
"getWorkspace" => ["handler" => "Workspaces:getOneWorkspace", "methods" => ["POST"]],
|
||||
"searchGroups" => ["handler" => "Groups:findGroups", "methods" => ["POST"]],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace AdministrationApi\Workspaces\Resources;
|
||||
|
||||
use Common\BaseServices;
|
||||
|
||||
class Services extends BaseServices
|
||||
{
|
||||
protected $services = [
|
||||
"administration.groups" => "AdministrationGroups",
|
||||
// arguments: [ "@app.twake_doctrine" ]
|
||||
"administration.workspaces" => "AdministrationWorkspaces",
|
||||
// arguments: [ "@app.twake_doctrine" ]
|
||||
];
|
||||
|
||||
}
|
||||
-194
@@ -1,194 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Workspaces\Services;
|
||||
|
||||
|
||||
use App\App;
|
||||
|
||||
class AdministrationGroups
|
||||
{
|
||||
|
||||
private $em;
|
||||
private $list_group = Array("group" => Array(), "scroll_id" => "");
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->em = $app->getServices()->get("app.twake_doctrine");
|
||||
}
|
||||
|
||||
public function getAllGroups($options)
|
||||
{
|
||||
|
||||
$options = Array(
|
||||
"repository" => "Twake\Workspaces:Group",
|
||||
"index" => "group",
|
||||
"size" => 10,
|
||||
"scroll_id" => $options["scroll_id"],
|
||||
"query" => Array(
|
||||
"match_all" => (object)[]
|
||||
),
|
||||
"sort" => Array(
|
||||
"creation_date" => Array(
|
||||
"order" => "desc"
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
//var_dump(json_encode($options,JSON_PRETTY_PRINT));
|
||||
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
//var_dump(json_encode($options));
|
||||
foreach ($result["result"] as $group) {
|
||||
//var_dump($file->getAsArray());
|
||||
$group_tab = $group[0]->getAsArray();
|
||||
$group_tab["nb_workspaces"] = count($group[0]->getWorkspaces());
|
||||
$group_tab["nb_members"] = count($this->getGroupMembers($group[0]));
|
||||
$group_tab["creation_data"] = $group[0]->getOnCreationData();
|
||||
$this->list_group["group"][] = Array($group_tab, $group[1][0]);
|
||||
}
|
||||
//var_dump("nombre de resultat : " . count($this->list_files));
|
||||
//var_dump($this->list_group);
|
||||
$this->list_group["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_group ?: null;
|
||||
}
|
||||
|
||||
public function getGroupMembers($group)
|
||||
{
|
||||
$membersRepository = $this->em->getRepository("Twake\Workspaces:GroupUser");
|
||||
|
||||
$members_tab = $membersRepository->findBy(Array("group" => $group));
|
||||
|
||||
$members = Array();
|
||||
|
||||
foreach ($members_tab as $member) {
|
||||
try{
|
||||
$members[] = $member->getUser()->getAsArray();
|
||||
}catch(\Exception $err){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return $members;
|
||||
}
|
||||
|
||||
public function getOneGroup($group_id)
|
||||
{
|
||||
|
||||
$groupsRepository = $this->em->getRepository("Twake\Workspaces:Group");
|
||||
|
||||
$group = $groupsRepository->find($group_id);
|
||||
|
||||
return $group;
|
||||
}
|
||||
|
||||
public function getGroupWorkspaces($group_id)
|
||||
{
|
||||
$groupsRepository = $this->em->getRepository("Twake\Workspaces:Group");
|
||||
|
||||
$group = $groupsRepository->find($group_id);
|
||||
|
||||
$rep = false;
|
||||
|
||||
if ($group) {
|
||||
$rep = array();
|
||||
|
||||
$workspaces_tab = $group->getWorkspaces();
|
||||
|
||||
foreach ($workspaces_tab as $workspace) {
|
||||
$rep[] = $workspace->getAsArray($this->em);
|
||||
}
|
||||
}
|
||||
return $rep;
|
||||
}
|
||||
|
||||
public function getGroupApps($group)
|
||||
{
|
||||
$groupAppRepository = $this->em->getRepository("Twake\Workspaces:GroupApp");
|
||||
|
||||
$apps_tab = $groupAppRepository->findBy(array("group" => $group));
|
||||
|
||||
$apps = array();
|
||||
|
||||
$appsRepository = $this->em->getRepository("Twake\Market:Application");
|
||||
|
||||
foreach ($apps_tab as $grpApp) {
|
||||
$app_id = $grpApp->getAppId();
|
||||
|
||||
$app = $appsRepository->findby(array('id' => $app_id));
|
||||
|
||||
if (count($app) == 1) {
|
||||
$apps[] = $app[0]->getAsArray();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $apps;
|
||||
}
|
||||
|
||||
public function getGroupbyName($options)
|
||||
{
|
||||
|
||||
if (isset($options["name"])) {
|
||||
$name = $options["name"];
|
||||
|
||||
$options = Array(
|
||||
"repository" => "Twake\Workspaces:Group",
|
||||
"index" => "group",
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"bool" => Array(
|
||||
"should" => Array(
|
||||
"bool" => Array(
|
||||
"filter" => Array(
|
||||
"regexp" => Array(
|
||||
"name" => ".*" . strtolower($name) . ".*"
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
"sort" => Array(
|
||||
"creation_date" => Array(
|
||||
"order" => "desc"
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
//var_dump(json_encode($options,JSON_PRETTY_PRINT));
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
//var_dump(json_encode($options));
|
||||
foreach ($result["result"] as $group) {
|
||||
//var_dump($file->getAsArray());
|
||||
$group_tab = $group[0]->getAsArray();
|
||||
$group_tab["nb_workspaces"] = count($group[0]->getWorkspaces());
|
||||
$group_tab["nb_members"] = count($this->getGroupMembers($group[0]));
|
||||
$group_tab["creation_data"] = $group[0]->getOnCreationData();
|
||||
$this->list_group["group"][] = Array($group_tab, $group[1][0]);
|
||||
}
|
||||
// var_dump("nombre de resultat : " . count($this->list_files));
|
||||
// var_dump($this->list_group);
|
||||
$this->list_group["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_group ?: null;
|
||||
}
|
||||
|
||||
}
|
||||
-180
@@ -1,180 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace AdministrationApi\Workspaces\Services;
|
||||
|
||||
use App\App;
|
||||
|
||||
class AdministrationWorkspaces
|
||||
{
|
||||
|
||||
private $em;
|
||||
private $list_workspace = Array("workspace" => Array(), "scroll_id" => "");
|
||||
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->em = $app->getServices()->get("app.twake_doctrine");
|
||||
}
|
||||
|
||||
public function getOneWorkspace($workspace_id)
|
||||
{
|
||||
$workspacesRepository = $this->em->getRepository("Twake\Workspaces:Workspace");
|
||||
|
||||
$workspace = $workspacesRepository->findOneBy(["id"=>$workspace_id]);
|
||||
|
||||
return $workspace;
|
||||
}
|
||||
|
||||
public function getWorkspaceMembers($workspace)
|
||||
{
|
||||
$membersRepository = $this->em->getRepository("Twake\Workspaces:WorkspaceUser");
|
||||
|
||||
$members_tab = $membersRepository->findBy(array("workspace_id" => $workspace->getId()));
|
||||
|
||||
$members = array();
|
||||
|
||||
foreach ($members_tab as $member) {
|
||||
$members[] = $member->getUser($this->em)->getAsArray();
|
||||
}
|
||||
|
||||
return $members;
|
||||
}
|
||||
|
||||
public function getWorkspaceApps($workspace)
|
||||
{
|
||||
$workspaceAppsRepository = $this->em->getrepository("Twake\Workspaces:WorkspaceApp");
|
||||
|
||||
$apps_tab = $workspaceAppsRepository->findBy(array("workspace_id" => $workspace));
|
||||
|
||||
$apps = array();
|
||||
|
||||
$appsRepository = $this->em->getRepository("Twake\Market:Application");
|
||||
|
||||
foreach ($apps_tab as $appWksp) {
|
||||
$app_id = $appWksp->getAppId();
|
||||
|
||||
$app = $appsRepository->findBy(array('id' => $app_id));
|
||||
|
||||
if (count($app) == 1) {
|
||||
$apps[] = $app[0]->getAsArray();
|
||||
}
|
||||
}
|
||||
|
||||
return $apps;
|
||||
}
|
||||
|
||||
public function getInvitedUsers($workspace)
|
||||
{
|
||||
$workspaceMailRepository = $this->em->getrepository("Twake\Workspaces:WorkspaceUserByMail");
|
||||
|
||||
$mails_tab = $workspaceMailRepository->findBy(array('workspace' => $workspace));
|
||||
|
||||
$mails = array();
|
||||
|
||||
foreach ($mails_tab as $ws_mail) {
|
||||
$mails[] = $ws_mail->getMail();
|
||||
}
|
||||
|
||||
return $mails;
|
||||
}
|
||||
|
||||
public function getWpbyName($options)
|
||||
{
|
||||
|
||||
if (isset($options["name"])) {
|
||||
$name = $options["name"];
|
||||
|
||||
$options = Array(
|
||||
"repository" => "Twake\Workspaces:Workspace",
|
||||
"index" => "workspace",
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"bool" => Array(
|
||||
"should" => Array(
|
||||
"bool" => Array(
|
||||
"filter" => Array(
|
||||
"regexp" => Array(
|
||||
"name" => ".*" . strtolower($name) . ".*"
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
"sort" => Array(
|
||||
"creation_date" => Array(
|
||||
"order" => "desc"
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
//var_dump(json_encode($options));
|
||||
foreach ($result["result"] as $workspace) {
|
||||
//var_dump($file->getAsArray());
|
||||
$this->list_workspace["workspace"][] = Array($workspace[0]->getAsArray(), $workspace[1][0]);;
|
||||
}
|
||||
// var_dump("nombre de resultat : " . count($this->list_files));
|
||||
// var_dump($this->list_group);
|
||||
$this->list_workspace["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_workspace ?: null;
|
||||
}
|
||||
|
||||
public function getAllWorkspace($options)
|
||||
{
|
||||
|
||||
// $group = new Group("group_for_workspace_1");
|
||||
// $this->em->persist($group);
|
||||
// $this->em->flush();
|
||||
//
|
||||
// $wp = new Workspace("workspace_admin_test_1");
|
||||
// $wp->setGroup($group);
|
||||
// $this->em->persist($wp);
|
||||
// $this->em->flush();
|
||||
$options = Array(
|
||||
"repository" => "Twake\Workspaces:Workspace",
|
||||
"index" => "workspace",
|
||||
"scroll_id" => $options["scroll_id"],
|
||||
"size" => 10,
|
||||
"query" => Array(
|
||||
"match_all" => (object)[]
|
||||
),
|
||||
"sort" => Array(
|
||||
"creation_date" => Array(
|
||||
"order" => "desc"
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
//var_dump(json_encode($options,JSON_PRETTY_PRINT));
|
||||
|
||||
// search in ES
|
||||
$result = $this->em->es_search($options);
|
||||
|
||||
|
||||
array_slice($result["result"], 0, 5);
|
||||
|
||||
$scroll_id = $result["scroll_id"];
|
||||
|
||||
//on traite les données recu d'Elasticsearch
|
||||
//var_dump(json_encode($options));
|
||||
foreach ($result["result"] as $wp) {
|
||||
$this->list_group["group"][] = Array($wp[0]->getAsArray(), $wp[1][0]);;
|
||||
}
|
||||
// var_dump("nombre de resultat : " . count($this->list_files));
|
||||
// var_dump($this->list_group);
|
||||
$this->list_group["scroll_id"] = $scroll_id;
|
||||
|
||||
return $this->list_group ?: null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Common;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
require_once __DIR__ . "/Resources/Services.php";
|
||||
|
||||
use BuiltInConnectors\Common\Resources\Routing;
|
||||
use BuiltInConnectors\Common\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
|
||||
$this->services = (new Services())->getServices();
|
||||
$this->initServices();
|
||||
|
||||
$path = __DIR__ . "/../Connectors/";
|
||||
$dir = new \DirectoryIterator($path);
|
||||
$connectors_bundles_instances = [];
|
||||
// Require and instanciate all defined connectors
|
||||
foreach ($dir as $fileinfo) {
|
||||
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
|
||||
try{
|
||||
$bundle = "BuiltInConnectors/Connectors/" . $fileinfo->getFilename();
|
||||
if (file_exists(__DIR__ . "/../../" . $bundle . "/Bundle.php")) {
|
||||
require_once __DIR__ . "/../../" . $bundle . "/Bundle.php";
|
||||
$class_name = str_replace("/", "\\", $bundle) . "\\Bundle";
|
||||
$connectors_bundles_instances[] = new $class_name($this->app);
|
||||
} else {
|
||||
error_log("No such connector bundle " . $bundle);
|
||||
}
|
||||
}catch(\Exception $err){
|
||||
error_log("No such connector bundle " . $fileinfo->getFilename());
|
||||
error_log($err->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Init routing for all bundles
|
||||
foreach ($connectors_bundles_instances as $bundle_instance) {
|
||||
$bundle_instance->init();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,143 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Common\Command;
|
||||
|
||||
use Common\Commands\ContainerAwareCommand;
|
||||
|
||||
class InitConnector extends ContainerAwareCommand
|
||||
{
|
||||
|
||||
protected function configure()
|
||||
{
|
||||
$this->setName("twake:init_connector");
|
||||
}
|
||||
|
||||
protected function execute()
|
||||
{
|
||||
|
||||
$arg_list = $_SERVER['argv'];
|
||||
|
||||
$connector_name = isset($arg_list[0]) ? $arg_list[0] : false;
|
||||
if(!$connector_name){
|
||||
|
||||
error_log("⚙️ Installing default connectors defined in configuration");
|
||||
|
||||
$connectors = $this->getApp()->getContainer()->getParameter("defaults.applications.connectors");
|
||||
if($connectors){
|
||||
foreach($connectors as $name => $configuration){
|
||||
$this->toggleConnector($name, !!$configuration, isset($configuration["default"]) && $configuration["default"]);
|
||||
}
|
||||
}
|
||||
|
||||
die;
|
||||
}
|
||||
$action_name = isset($arg_list[1]) ? $arg_list[1] : "enable";
|
||||
$enable = $action_name != "disable";
|
||||
|
||||
$second_action_name = isset($arg_list[2]) ? $arg_list[2] : "";
|
||||
$is_default = $second_action_name == "default";
|
||||
|
||||
$this->toggleConnector($connector_name, $enable, $is_default);
|
||||
|
||||
}
|
||||
|
||||
public function toggleConnector($connector_name, $enable, $is_default){
|
||||
|
||||
error_log(($enable?"Enabling" : "Disabling") . " " . $connector_name. ($is_default?" and default for future workspaces":"") . "!");
|
||||
|
||||
$path = __DIR__ . "/../../Connectors/";
|
||||
$dir = new \DirectoryIterator($path);
|
||||
$connectors_bundles_instances = [];
|
||||
// Require and instanciate all defined connectors
|
||||
foreach ($dir as $fileinfo) {
|
||||
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
|
||||
try{
|
||||
$bundle = "BuiltInConnectors/Connectors/" . $fileinfo->getFilename();
|
||||
if (file_exists(__DIR__ . "/../../../" . $bundle . "/Bundle.php")) {
|
||||
$class_name = str_replace("/", "\\", $bundle) . "\\Bundle";
|
||||
$connectors_bundles_instances[] = new $class_name($this->app);
|
||||
} else {
|
||||
error_log("No such connector bundle " . $bundle);
|
||||
}
|
||||
}catch(\Exception $err){
|
||||
error_log("No such connector bundle " . $fileinfo->getFilename());
|
||||
error_log($err->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$found = false;
|
||||
// Init routing for all bundles
|
||||
foreach ($connectors_bundles_instances as $bundle_instance) {
|
||||
if(method_exists($bundle_instance, "getDefinition")){
|
||||
$definition = $bundle_instance->getDefinition();
|
||||
|
||||
if($definition["simple_name"] == $connector_name){
|
||||
$found = true;
|
||||
|
||||
$server_route = rtrim($this->app->getContainer()->getParameter("env.internal_server_name")?:$this->app->getContainer()->getParameter("env.server_name"), "/");
|
||||
|
||||
$simple_name = $definition["simple_name"];
|
||||
$icon = $definition['icon_url'];
|
||||
if(!(strpos("http://", $icon) === 0 || strpos("https://", $icon) === 0)){
|
||||
$icon = rtrim($this->app->getContainer()->getParameter("env.server_name"), "/") . "/bundle/connectors/" . $definition["simple_name"] . "/icon";
|
||||
}
|
||||
|
||||
$app_exists = $this->app->getServices()->get("app.applications")->findAppBySimpleName($simple_name, true);
|
||||
|
||||
$application = [
|
||||
'simple_name' => $simple_name,
|
||||
'name' => $definition['name'],
|
||||
'description' => $definition['description'],
|
||||
'icon_url' => $icon,
|
||||
'website' => $definition['website'],
|
||||
'categories' => $definition['categories'],
|
||||
'privileges' => $definition['privileges'],
|
||||
'capabilities' => $definition['capabilities'],
|
||||
'hooks' => $definition['hooks'],
|
||||
'display' => $definition['display'],
|
||||
'api_allowed_ips' => $definition['api_allowed_ips'],
|
||||
'api_event_url' => $server_route . "/bundle/connectors/" . $definition["simple_name"] . "/" . ltrim($definition['api_event_url'], "/"),
|
||||
'public' => true
|
||||
];
|
||||
|
||||
if($enable){
|
||||
//Update database with this app
|
||||
if(!$app_exists){
|
||||
$new_app = $this->app->getServices()->get("app.applications")->createApp(null, $definition["name"], $simple_name, $definition["app_group_name"], null);
|
||||
$application["id"] = $new_app["id"];
|
||||
}else{
|
||||
$application["id"] = $app_exists["id"];
|
||||
}
|
||||
|
||||
$this->app->getServices()->get("app.applications")->update($application, null);
|
||||
$this->app->getServices()->get("app.applications")->toggleAppValidation($application["id"], true);
|
||||
|
||||
if($is_default){
|
||||
$this->app->getServices()->get("app.applications")->toggleAppDefault($application["id"], true);
|
||||
}
|
||||
|
||||
error_log("The connector is now available to the public.");
|
||||
}else{
|
||||
//If in database, set to non public
|
||||
if($app_exists){
|
||||
$application["public"] = false;
|
||||
$application["id"] = $app_exists["id"];
|
||||
$this->app->getServices()->get("app.applications")->toggleAppValidation($application["id"], false);
|
||||
$this->app->getServices()->get("app.applications")->toggleAppDefault($application["id"], false);
|
||||
}
|
||||
|
||||
error_log("The connector is now unavailable to the public.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if(!$found){
|
||||
error_log("This connector was not found.");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Common\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
|
||||
class Index extends BaseController
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Common\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
|
||||
/**
|
||||
* BuiltInConnectorsEntity
|
||||
*
|
||||
* @ORM\Table(name="built_in_connectors_entity",options={"engine":"MyISAM",
|
||||
* "scylladb_keys": {{"connector_id":"ASC", "document_id":"ASC"}}
|
||||
* })
|
||||
* @ORM\Entity
|
||||
*/
|
||||
class BuiltInConnectorsEntity
|
||||
{
|
||||
/**
|
||||
* @ORM\Column(type="twake_timeuuid")
|
||||
* @ORM\Id
|
||||
*/
|
||||
private $connector_id;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="twake_no_salt_text")
|
||||
* @ORM\Id
|
||||
*/
|
||||
private $document_id;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="twake_text")
|
||||
*/
|
||||
private $value;
|
||||
|
||||
/**
|
||||
* BuiltInConnectorsEntity constructor.
|
||||
* @param $connector_id
|
||||
*/
|
||||
public function __construct($connector_id, $document_id)
|
||||
{
|
||||
$this->connector_id = $connector_id;
|
||||
$this->document_id = $document_id;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getConnectorId()
|
||||
{
|
||||
return $this->connector_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getDocumentId()
|
||||
{
|
||||
return $this->document_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getValue()
|
||||
{
|
||||
return json_decode($this->value, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $value
|
||||
*/
|
||||
public function setValue($value): void
|
||||
{
|
||||
$this->value = json_encode($value);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Common\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "bundle/connectors/common/";
|
||||
|
||||
protected $routes = [
|
||||
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Common\Resources;
|
||||
|
||||
use Common\BaseServices;
|
||||
|
||||
class Services extends BaseServices
|
||||
{
|
||||
protected $services = [
|
||||
"connectors.common.main" => "MainConnectorService"
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,167 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Common\Services;
|
||||
|
||||
use Emojione\Client;
|
||||
use Emojione\Ruleset;
|
||||
use BuiltInConnectors\Common\Entity\BuiltInConnectorsEntity;
|
||||
|
||||
use Exception;
|
||||
|
||||
class MainConnectorService {
|
||||
|
||||
protected $app_simple_name = "";
|
||||
protected $credentials = [];
|
||||
|
||||
public function __construct($app)
|
||||
{
|
||||
$this->market_service = $app->getServices()->get("app.applications");
|
||||
$this->rest_client = $app->getServices()->get("app.restclient");
|
||||
$this->api_url = rtrim($app->getContainer()->getParameter("env.internal_server_name")?:$app->getContainer()->getParameter("env.server_name"), "/") . "/api/v1/";
|
||||
$this->server_url = rtrim($app->getContainer()->getParameter("env.server_name"), "/") . "/bundle/connectors/";
|
||||
$this->emojione_client = new Client(new Ruleset());
|
||||
$this->doctrine = $app->getServices()->get("app.twake_doctrine");
|
||||
}
|
||||
|
||||
public function setConnector($simple_name){
|
||||
$this->app_simple_name = $simple_name;
|
||||
}
|
||||
|
||||
private function getConnectorKeys(){
|
||||
$simple_name = $this->app_simple_name;
|
||||
if(!isset($this->credentials[$simple_name])){
|
||||
$this->credentials[$simple_name] = $this->market_service->getCredentials($simple_name);
|
||||
}
|
||||
return $this->credentials[$simple_name];
|
||||
}
|
||||
|
||||
public function postApi($route, $data, $timeout = 3, $raw = false){
|
||||
|
||||
$cred = $this->getConnectorKeys();
|
||||
|
||||
$custom = array(
|
||||
CURLOPT_HTTPHEADER => Array(
|
||||
"Authorization: Basic ".base64_encode($cred["api_id"].":".$cred["api_key"]),
|
||||
"Content-Type: application/json"
|
||||
),
|
||||
);
|
||||
|
||||
return $this->post(rtrim($this->api_url, "/") . "/" . ltrim($route, "/"), $data, $raw, $custom, $timeout);
|
||||
}
|
||||
|
||||
|
||||
public function post($route, $data, $raw = false, $custom_options = Array(), $timeout = 1){
|
||||
$data_string = json_encode($data);
|
||||
$restClient = $this->rest_client;
|
||||
|
||||
$custom = array(
|
||||
CURLOPT_CONNECTTIMEOUT => $timeout,
|
||||
CURLOPT_SSL_VERIFYPEER => false
|
||||
);
|
||||
|
||||
foreach ($custom_options as $key=>$value){
|
||||
$custom[$key] = $value;
|
||||
}
|
||||
|
||||
$resp = $restClient->post($route, $data_string, $custom);
|
||||
|
||||
try {
|
||||
if(!$raw) {
|
||||
$data = json_decode($resp->getContent(), 1);
|
||||
}else{
|
||||
$data = $resp->getContent();
|
||||
}
|
||||
return $data;
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function get($route, $raw = false, $custom_options = Array(), $timeout = 1){
|
||||
$restClient = $this->rest_client;
|
||||
|
||||
$custom = array(
|
||||
CURLOPT_CONNECTTIMEOUT => $timeout,
|
||||
CURLOPT_SSL_VERIFYPEER => false
|
||||
);
|
||||
|
||||
foreach ($custom_options as $key=>$value){
|
||||
$custom[$key] = $value;
|
||||
}
|
||||
|
||||
$resp = $restClient->get($route, $custom);
|
||||
|
||||
|
||||
try {
|
||||
if(!$raw) {
|
||||
$data = json_decode($resp->getContent(), 1);
|
||||
}else{
|
||||
$data = $resp->getContent();
|
||||
}
|
||||
return $data;
|
||||
} catch (\Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function getServerBaseUrl(){
|
||||
return $this->server_url;
|
||||
}
|
||||
|
||||
public function generateToken($length = 10){
|
||||
try {
|
||||
return bin2hex(random_bytes(intval($length / 2)));
|
||||
}catch(\Exception $e){
|
||||
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||
$charactersLength = strlen($characters);
|
||||
$randomString = '';
|
||||
for ($i = 0; $i < $length; $i++) {
|
||||
$randomString .= $characters[rand(0, $charactersLength - 1)];
|
||||
}
|
||||
return $randomString;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getAppName()
|
||||
{
|
||||
return $this->app_simple_name;
|
||||
}
|
||||
|
||||
/** Save connector document to db */
|
||||
public function saveDocument($id, $content){
|
||||
$cred = $this->getConnectorKeys();
|
||||
if(!$cred["api_id"]){
|
||||
return false;
|
||||
}
|
||||
$document = new BuiltInConnectorsEntity($cred["api_id"], $id);
|
||||
if($content === null){
|
||||
$this->doctrine->remove($document);
|
||||
}else{
|
||||
$document->setValue($content);
|
||||
$this->doctrine->persist($document);
|
||||
}
|
||||
$this->doctrine->flush();
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Remove connector document from db */
|
||||
public function removeDocument($id){
|
||||
return $this->saveDocument($id, null);
|
||||
}
|
||||
|
||||
/** Get connector document from db */
|
||||
public function getDocument($id){
|
||||
$cred = $this->getConnectorKeys();
|
||||
if(!$cred["api_id"]){
|
||||
return false;
|
||||
}
|
||||
$documentsRepo = $this->doctrine->getRepository("BuiltInConnectors\Common:BuiltInConnectorsEntity");
|
||||
$document = $documentsRepo->findOneBy(["connector_id" => $cred["api_id"], "document_id" => $id]);
|
||||
return $document?$document->getValue():null;
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Jitsi;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
require_once __DIR__ . "/Resources/Services.php";
|
||||
require_once __DIR__ . "/ConnectorDefinition.php";
|
||||
|
||||
use BuiltInConnectors\Connectors\Jitsi\ConnectorDefinition;
|
||||
use BuiltInConnectors\Connectors\Jitsi\Resources\Routing;
|
||||
use BuiltInConnectors\Connectors\Jitsi\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = "bundle/connectors/" . (new ConnectorDefinition())->definition["simple_name"] . $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
|
||||
$this->services = (new Services())->getServices();
|
||||
$this->initServices();
|
||||
|
||||
}
|
||||
|
||||
public function getDefinition(){
|
||||
return (new ConnectorDefinition())->definition;
|
||||
}
|
||||
|
||||
public function getConfiguration(){
|
||||
return (new ConnectorDefinition())->configuration;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
namespace BuiltInConnectors\Connectors\Jitsi;
|
||||
|
||||
class ConnectorDefinition
|
||||
{
|
||||
public $configuration = [
|
||||
'jitsi_domain' => 'meet.jit.si'
|
||||
];
|
||||
|
||||
public $definition = [
|
||||
'app_group_name' => 'twake',
|
||||
'categories' => [ 'voice_video' ],
|
||||
'name' => 'Jitsi',
|
||||
'simple_name' => 'jitsi',
|
||||
'description' => 'Jitsi allows you to create and join video calls directly from Twake.',
|
||||
'icon_url' => 'jitsi.png',
|
||||
'website' => 'https://twake.app',
|
||||
'privileges' => [],
|
||||
'capabilities' =>
|
||||
[
|
||||
'messages_send',
|
||||
'display_modal',
|
||||
'messages_save',
|
||||
],
|
||||
'hooks' => [],
|
||||
'display' =>
|
||||
[
|
||||
'messages_module' =>
|
||||
[
|
||||
'right_icon' => true,
|
||||
'commands' =>
|
||||
[
|
||||
[
|
||||
'command' => 'Meeting name',
|
||||
'description' => 'Create a Jisti call',
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
'api_allowed_ips' => '*',
|
||||
'api_event_url' => '/event'
|
||||
];
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Jitsi\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
use BuiltInConnectors\Connectors\Jitsi\ConnectorDefinition;
|
||||
|
||||
class Index extends BaseController
|
||||
{
|
||||
public function icon()
|
||||
{
|
||||
$configuration = (new ConnectorDefinition())->definition;
|
||||
$route = realpath(__DIR__."/../Resources/medias/".$configuration["icon_url"]);
|
||||
|
||||
$filename = basename($route);
|
||||
$file_extension = strtolower(substr(strrchr($filename,"."),1));
|
||||
|
||||
switch( $file_extension ) {
|
||||
case "gif": $ctype="image/gif"; break;
|
||||
case "png": $ctype="image/png"; break;
|
||||
case "jpeg":
|
||||
case "jpg": $ctype="image/jpeg"; break;
|
||||
case "svg": $ctype="image/svg+xml"; break;
|
||||
default:
|
||||
}
|
||||
|
||||
header('Content-type: ' . $ctype);
|
||||
|
||||
return new Response(file_get_contents($route));
|
||||
}
|
||||
|
||||
public function event(Request $request)
|
||||
{
|
||||
$data = $request->request->get("data");
|
||||
$event = $request->request->get("event");
|
||||
$type = $request->request->get("type");
|
||||
|
||||
$this->get('connectors.jitsi.event')->proceedEvent($type, $event, $data);
|
||||
|
||||
return new Response([]);
|
||||
}
|
||||
|
||||
public function call(Request $request){
|
||||
$user_id = $request->query->get("twake_user", false);
|
||||
|
||||
$id = explode("__", explode("twake_", array_pop(explode("/", $_SERVER['REQUEST_URI'])))[1]);
|
||||
|
||||
$group_id = str_replace("_", "-", $id[0]);
|
||||
$id = str_replace("_", "", $id[1]);
|
||||
$user = $this->get('connectors.jitsi.event')->getUserFromId(str_replace("twake-", "", str_replace("_", "-", $id)), $user_id, $group_id);
|
||||
|
||||
$loader = new \Twig\Loader\FilesystemLoader(realpath(__DIR__.'/../Views/'));
|
||||
$twig = new \Twig\Environment($loader, [
|
||||
'cache' => $this->app->getAppRootDir() . "/" . $this->app->getContainer()->get("configuration", "twig.cache"),
|
||||
]);
|
||||
$template = $twig->load("Templates/call.html.twig");
|
||||
|
||||
$configuration = (new ConnectorDefinition())->configuration;
|
||||
|
||||
return new Response($template->render(
|
||||
Array(
|
||||
"id" => $id,
|
||||
"user" => $user,
|
||||
"jitsi_domain" => $this->getParameter("defaults.connectors.jitsi.jitsi_domain", $configuration["jitsi_domain"])
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Jitsi\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "/";
|
||||
|
||||
protected $routes = [
|
||||
"icon" => ["handler" => "Index:icon", "methods" => ["GET"]],
|
||||
"event" => ["handler" => "Index:event", "methods" => ["POST"]],
|
||||
"call/{id}" => ["handler" => "Index:call", "methods" => ["GET"]],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Jitsi\Resources;
|
||||
|
||||
use Common\BaseServices;
|
||||
|
||||
class Services extends BaseServices
|
||||
{
|
||||
protected $services = [
|
||||
"connectors.jitsi.event" => "Event"
|
||||
];
|
||||
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.2 KiB |
@@ -1,137 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Jitsi\Services;
|
||||
|
||||
class Event
|
||||
{
|
||||
|
||||
public function __construct($app) {
|
||||
$this->main_service = $app->getServices()->get("connectors.common.main");
|
||||
}
|
||||
|
||||
public function getUserFromId($room_id, $user_id, $group_id = null){
|
||||
$this->main_service->setConnector("jitsi");
|
||||
|
||||
$user_object = $this->main_service->postApi("users/get", Array("user_id" => $user_id, "group_id" => $group_id));
|
||||
return $user_object["object"];
|
||||
}
|
||||
|
||||
public function proceedEvent($type, $event, $data)
|
||||
{
|
||||
$this->main_service->setConnector("jitsi");
|
||||
|
||||
$group = $data["group"];
|
||||
$user = $data["user"];
|
||||
$message = $data["message"];
|
||||
$channel = $data["channel"];
|
||||
$parent_message = $data["parent_message"];
|
||||
$creator = $data["user"];
|
||||
|
||||
if ($type == "action" && ($event == "command" || $event == "open")) {
|
||||
|
||||
$message = [
|
||||
"channel_id" => $channel["id"],
|
||||
"content" => Array(
|
||||
Array("type"=>"system", "content"=>"Choose a subject for your call"),
|
||||
Array("type"=>"br"),
|
||||
Array("type"=>"input", "content" => $data["command"], "placeholder" => "Meeting about ...", "passive_id" => "meeting_name"),
|
||||
Array("type"=>"br"),
|
||||
Array("type"=>"button", "style"=>"default", "action_id"=>"cancel", "content"=>"Cancel"),
|
||||
Array("type"=>"button", "style"=>"primary", "action_id"=>"create", "content"=>"Create")
|
||||
),
|
||||
"hidden_data" => Array(
|
||||
),
|
||||
"parent_message_id" => isset($parent_message["id"])?$parent_message["id"]:"",
|
||||
"ephemeral_message_recipients" => [$user["id"]],
|
||||
"_once_ephemeral_message" => true
|
||||
];
|
||||
|
||||
$data_string = Array(
|
||||
"group_id" => $group["id"],
|
||||
"workspace_id" => $channel["workspace_id"],
|
||||
"message" => $message
|
||||
);
|
||||
$message = $this->main_service->postApi("messages/save", $data_string);
|
||||
|
||||
}
|
||||
|
||||
if ($type == "interactive_message_action" && $event == "cancel") {
|
||||
|
||||
$data_string = Array(
|
||||
"group_id" => $group["id"],
|
||||
"workspace_id" => $channel["workspace_id"],
|
||||
"message" => $data["message"]
|
||||
);
|
||||
|
||||
$this->main_service->postApi("messages/remove", $data_string);
|
||||
|
||||
}
|
||||
|
||||
if ($type == "interactive_message_action" && $event == "create") {
|
||||
|
||||
$original_message = $message;
|
||||
|
||||
$room_id = $group["id"]."__".$original_message["channel_id"];
|
||||
|
||||
$url = rtrim($this->main_service->getServerBaseUrl(), "/") . "/jitsi/call/twake_" . str_replace("-", "_", $room_id);
|
||||
|
||||
$message = [];
|
||||
$message["channel_id"] = $original_message["channel_id"];
|
||||
$message["sender"] = $user["id"];
|
||||
$message["parent_message_id"] = isset($original_message["parent_message_id"])?$original_message["parent_message_id"]:"";
|
||||
$message["content"] = Array(
|
||||
["type" => "system", "content" => ["@" . $creator["username"] . " invite you to join the call ", ["type" => "bold", "content" => $data["form"]["meeting_name"]],". "]],
|
||||
["type" => "system", "content" => ["type" => "button", "inline" => "true", "style"=>"primary", "action_id"=>"show_link", "content" => "Show call link"]],
|
||||
["type" => "br"],
|
||||
["type" => "url", "user_identifier" => true, "url" => $url, "content" => ["type" => "button", "content" => ["Join call ", ["type" => "bold", "content" => $data["form"]["meeting_name"]]]]]);
|
||||
$message["hidden_data"] = Array(
|
||||
"allow_delete" => "everyone",
|
||||
"room_id" => $room_id
|
||||
);
|
||||
|
||||
$data_string = Array(
|
||||
"group_id" => $group["id"],
|
||||
"workspace_id" => $channel["workspace_id"],
|
||||
"message" => $data["message"]
|
||||
);
|
||||
$this->main_service->postApi("messages/remove", $data_string);
|
||||
|
||||
$data_string = Array(
|
||||
"group_id" => $group["id"],
|
||||
"workspace_id" => $channel["workspace_id"],
|
||||
"message" => $message
|
||||
);
|
||||
|
||||
$message = $this->main_service->postApi("messages/save", $data_string);
|
||||
|
||||
$message_id = $message["object"]["id"];
|
||||
|
||||
}
|
||||
|
||||
if ($type == "interactive_message_action" && $event == "show_link") {
|
||||
|
||||
$room_id = $message["hidden_data"]["room_id"];
|
||||
|
||||
$url = rtrim($this->main_service->getServerBaseUrl(), "/") . "/jitsi/call/twake_" . str_replace("-", "_", $room_id);
|
||||
|
||||
$display = Array(
|
||||
"type" => "system", "content" => [
|
||||
"Partagez ce lien avec les participants de l'appel.",
|
||||
Array("type" => "br"),
|
||||
Array("type" => "copiable", "content" => $url)
|
||||
]
|
||||
);
|
||||
|
||||
$data_string = Array(
|
||||
"group_id" => $group["id"],
|
||||
"user_id" => $data["user"]["id"],
|
||||
"connection_id" => $data["connection_id"],
|
||||
"form" => $display
|
||||
);
|
||||
$this->main_service->postApi("general/configure", $data_string);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
-59
@@ -1,59 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr" dir="ltr">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script src='https://{{ jitsi_domain }}/external_api.js'></script>
|
||||
|
||||
<title></title>
|
||||
</head>
|
||||
<body>
|
||||
<style>
|
||||
html, body, iframe {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
<div id="meet">
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
const domain = '{{ jitsi_domain }}';
|
||||
|
||||
window.history.pushState({"pageTitle":document.title},"", document.location.pathname);
|
||||
|
||||
var username = localStorage.getItem("username");
|
||||
var thumbnail = localStorage.getItem("thumbnail");
|
||||
{% if user %}
|
||||
username = '{{ user.username }}';
|
||||
localStorage.setItem("username", username);
|
||||
thumbnail = '{{ user.thumbnail }}';
|
||||
localStorage.setItem("thumbnail", thumbnail);
|
||||
{% endif %}
|
||||
|
||||
const options = {
|
||||
roomName: '{{id}}',
|
||||
};
|
||||
const api = new JitsiMeetExternalAPI(domain, options);
|
||||
|
||||
//To set name of a participant
|
||||
api.executeCommand('displayName', '@'+username);
|
||||
//To set an avatar
|
||||
if(thumbnail){
|
||||
api.executeCommand('avatarUrl', thumbnail);
|
||||
}
|
||||
|
||||
// api.addEventListener("participantJoined", function(object){
|
||||
// console.log(object);
|
||||
// console.log("nombre de participants",api.getNumberOfParticipants());
|
||||
// });
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Linshare;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
require_once __DIR__ . "/Resources/Services.php";
|
||||
require_once __DIR__ . "/ConnectorDefinition.php";
|
||||
|
||||
use BuiltInConnectors\Connectors\Linshare\ConnectorDefinition;
|
||||
use BuiltInConnectors\Connectors\Linshare\Resources\Routing;
|
||||
use BuiltInConnectors\Connectors\Linshare\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = "bundle/connectors/" . (new ConnectorDefinition())->definition["simple_name"] . $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
|
||||
$this->services = (new Services())->getServices();
|
||||
$this->initServices();
|
||||
|
||||
}
|
||||
|
||||
public function getDefinition(){
|
||||
return (new ConnectorDefinition())->definition;
|
||||
}
|
||||
|
||||
public function getConfiguration(){
|
||||
return (new ConnectorDefinition())->configuration;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
<?php
|
||||
namespace BuiltInConnectors\Connectors\Linshare;
|
||||
|
||||
class ConnectorDefinition
|
||||
{
|
||||
public $configuration = [
|
||||
'domain' => '',
|
||||
'key' => [
|
||||
"issuer" => "Twake",
|
||||
"private" => "-----BEGIN RSA PRIVATE KEY-----
|
||||
MIICWwIBAAKBgHpJ/MAWh52lMCOt4btMb06LHAXn3BrrQoKrZ5IEPPLKqGwl7MVn
|
||||
X6r+wEtMX5MmTQ68JHb4ohVVjKiJyySql/GXNcwGmx8jhTpFBzOTRDJBm60Z8wz3
|
||||
G4Uy0IPWt1TRz4oiS9V5cC69ZpvxOQd/yaeN9BDkI/Tda4fDOa3PRINRAgMBAAEC
|
||||
gYA1+uzf2dIZS26ZgUrQQ6gqcot3K+bj1w9v4LuCH+7LeZuoyYDfjocTUwqM8nSJ
|
||||
3vFK3M/32D6rziydxN1wHQGench+cfR8yun8V9EV7Y5bTIX8DwMvLGvBkZT0u5Ai
|
||||
J3g6JkWZTQHdthbOyADCgv7OxCjLrq9egE6py2R5cqk4NQJBALayivwy3WizoKNl
|
||||
hpTdnIngyUbQnRd/3Enx50qaM3qGjyIpENOsNBhJQDtfQf82MRjAhrrsPSDmGvjL
|
||||
HXFpqNsCQQCrWrIoGx68e//A5GR8dK7XfxBYaTPsXEXQD3uvegFxYxJJj26Qw8lx
|
||||
i6XKA2lZKuAiyISrk1UWezG/gCzkF5ZDAkBCyDjtv1oXr7GEiNQNDoTuEXEBpbgG
|
||||
owJPNVGqf3tZyl3/yqsP9N6GEiCck1F4jMKdnaKiKUCfCf3J+9UjY9AJAkA14SPJ
|
||||
xpVIkPjfLzGFjK75ZaO/GP1RocX14Rh0GbngbFVwud/7NwTdZhqwRZhXiErHxSMq
|
||||
S/5iPkRrQaNb6Sq/AkEAqQIOghY6T0SPrKfj+utFJMe0YchSU/bjApyE6U3pj1Vf
|
||||
JZ7e+kO+wtORxj1bDh9nE6YEvW/fOY6/Sw+HoyYW9w==
|
||||
-----END RSA PRIVATE KEY-----",
|
||||
"public" => "-----BEGIN PUBLIC KEY-----
|
||||
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgHpJ/MAWh52lMCOt4btMb06LHAXn
|
||||
3BrrQoKrZ5IEPPLKqGwl7MVnX6r+wEtMX5MmTQ68JHb4ohVVjKiJyySql/GXNcwG
|
||||
mx8jhTpFBzOTRDJBm60Z8wz3G4Uy0IPWt1TRz4oiS9V5cC69ZpvxOQd/yaeN9BDk
|
||||
I/Tda4fDOa3PRINRAgMBAAE=
|
||||
-----END PUBLIC KEY-----"
|
||||
]
|
||||
];
|
||||
|
||||
public $definition = [
|
||||
'app_group_name' => 'linshare',
|
||||
'categories' => [ 'files' ],
|
||||
'name' => 'Linshare',
|
||||
'simple_name' => 'linshare',
|
||||
'description' => 'Linshare allows you to send Linshare documents into Twake messages.',
|
||||
'icon_url' => 'linshare.jpg',
|
||||
'website' => 'https://www.linshare.org/',
|
||||
'privileges' => [],
|
||||
'capabilities' =>
|
||||
[
|
||||
"messages_save",
|
||||
'display_modal',
|
||||
],
|
||||
'hooks' => [],
|
||||
'display' => [
|
||||
"messages_module" => [
|
||||
"in_plus" => [
|
||||
"should_wait_for_popup" => true
|
||||
]
|
||||
],
|
||||
"configuration" => [
|
||||
"can_configure_in_workspace" => true
|
||||
]
|
||||
],
|
||||
'api_allowed_ips' => '*',
|
||||
'api_event_url' => '/event'
|
||||
];
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Linshare\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
use BuiltInConnectors\Connectors\Linshare\ConnectorDefinition;
|
||||
|
||||
class Index extends BaseController
|
||||
{
|
||||
public function icon()
|
||||
{
|
||||
$configuration = (new ConnectorDefinition())->definition;
|
||||
$route = realpath(__DIR__."/../Resources/medias/".$configuration["icon_url"]);
|
||||
|
||||
$filename = basename($route);
|
||||
$file_extension = strtolower(substr(strrchr($filename,"."),1));
|
||||
|
||||
switch( $file_extension ) {
|
||||
case "gif": $ctype="image/gif"; break;
|
||||
case "png": $ctype="image/png"; break;
|
||||
case "jpeg":
|
||||
case "jpg": $ctype="image/jpeg"; break;
|
||||
case "svg": $ctype="image/svg+xml"; break;
|
||||
default:
|
||||
}
|
||||
|
||||
header('Content-type: ' . $ctype);
|
||||
|
||||
return new Response(file_get_contents($route));
|
||||
}
|
||||
|
||||
public function event(Request $request)
|
||||
{
|
||||
$data = $request->request->get("data");
|
||||
$event = $request->request->get("event");
|
||||
$type = $request->request->get("type");
|
||||
|
||||
if($event == "workspace" && $type == "configuration" || $event == "save_configuration_domain"){
|
||||
$this->get('connectors.linshare.configure')->proceedEvent($type, $event, $data);
|
||||
}else{
|
||||
$this->get('connectors.linshare.event')->proceedEvent($type, $event, $data);
|
||||
}
|
||||
|
||||
return new Response([]);
|
||||
}
|
||||
|
||||
public function download(Request $request)
|
||||
{
|
||||
$file_uuid = $request->query->get("file_uuid");
|
||||
$group_id = $request->query->get("group_id");
|
||||
$owner_id = $request->query->get("owner_id");
|
||||
$sign = $request->query->get("sign");
|
||||
$twake_user = $request->query->get("twake_user");
|
||||
|
||||
$this->get('connectors.linshare.event')->download($twake_user, $file_uuid, $group_id, $owner_id, $sign);
|
||||
return new Response([]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Linshare\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "/";
|
||||
|
||||
protected $routes = [
|
||||
"icon" => ["handler" => "Index:icon", "methods" => ["GET"]],
|
||||
"event" => ["handler" => "Index:event", "methods" => ["POST"]],
|
||||
"download" => ["handler" => "Index:download", "methods" => ["GET"]],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Linshare\Resources;
|
||||
|
||||
use Common\BaseServices;
|
||||
|
||||
class Services extends BaseServices
|
||||
{
|
||||
protected $services = [
|
||||
"connectors.linshare.configure" => "Configure",
|
||||
"connectors.linshare.event" => "Event"
|
||||
];
|
||||
|
||||
}
|
||||
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 5.7 KiB |
@@ -1,77 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Linshare\Services;
|
||||
|
||||
use BuiltInConnectors\Connectors\Linshare\ConnectorDefinition;
|
||||
|
||||
class Configure
|
||||
{
|
||||
|
||||
public function __construct($app) {
|
||||
$this->app = $app;
|
||||
$this->main_service = $app->getServices()->get("connectors.common.main");
|
||||
}
|
||||
|
||||
public function proceedEvent($type, $event, $data) {
|
||||
$this->main_service->setConnector("linshare");
|
||||
$configuration = (new ConnectorDefinition())->configuration;
|
||||
$linshare_domain = $this->app->getContainer()->getParameter("defaults.connectors.linshare.domain", $configuration["domain"]);
|
||||
|
||||
$group = $data["group"];
|
||||
$entity = null;
|
||||
$user = $data["user"];
|
||||
$workspace = $data["workspace"];
|
||||
|
||||
if($event == "save_configuration_domain"){
|
||||
|
||||
$document_id = $group["id"]."_domain_conf";
|
||||
$document_value = $data["form"]["domain_url"];
|
||||
$this->main_service->saveDocument($document_id, $document_value);
|
||||
|
||||
$type = "configuration"; //Reopen/Update configuration
|
||||
}
|
||||
|
||||
if ($type == "configuration") {
|
||||
|
||||
$document_id = $group["id"]."_domain_conf";
|
||||
$document_value = $this->main_service->getDocument($document_id);
|
||||
if($document_value){
|
||||
$linshare_domain = $document_value;
|
||||
}
|
||||
|
||||
$linshare_publickey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.public", $configuration["key"]["public"]);
|
||||
|
||||
$form = Array("type" => "nop", "content" => [
|
||||
Array("type" => "nop" , "content" => "• To configure your company with LinShare you must enter your LinShare domain URL first."),
|
||||
Array("type" => "br"),
|
||||
Array("type" => "br"),
|
||||
Array("type" => "bold" , "content" => "Domain url"),
|
||||
Array("type" => "br"),
|
||||
Array("type" => "input", "placeholder" => "https://linshare.org", "content" => $linshare_domain, "passive_id" => "domain_url"),
|
||||
Array("type" => "button", "content" => "Save domain", "action_id" => "save_configuration_domain", "style" => "primary"),
|
||||
Array("type" => "br"),
|
||||
Array("type" => "system" , "content" => ["Current domain is ", Array("type" => "bold" , "content" => $linshare_domain)]),
|
||||
Array("type" => "br"),
|
||||
Array("type" => "br"),
|
||||
Array("type" => "nop" , "content" => "• To authorize Twake in LinShare, add this public key to LinShare adminitration."),
|
||||
Array("type" => "br"),
|
||||
Array("type" => "br"),
|
||||
Array("type" => "bold" , "content" => "Public key"),
|
||||
Array("type" => "br"),
|
||||
Array("type" => "mcode", "content" => $linshare_publickey)
|
||||
]);
|
||||
|
||||
$data_string = Array(
|
||||
"group_id" => $group["id"],
|
||||
"user_id" => $user["id"],
|
||||
"connection_id" => $data["connection_id"],
|
||||
"form" => $form
|
||||
);
|
||||
|
||||
$res = $this->main_service->postApi("general/configure", $data_string);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,245 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace BuiltInConnectors\Connectors\Linshare\Services;
|
||||
|
||||
use BuiltInConnectors\Connectors\Linshare\ConnectorDefinition;
|
||||
|
||||
class Event
|
||||
{
|
||||
|
||||
public function __construct($app) {
|
||||
$this->app = $app;
|
||||
$this->main_service = $app->getServices()->get("connectors.common.main");
|
||||
}
|
||||
|
||||
public function getJWT($user_email){
|
||||
$configuration = (new ConnectorDefinition())->configuration;
|
||||
|
||||
$data = [];
|
||||
$data["sub"] = $user_email;
|
||||
|
||||
$linshare_privatekey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.private", $configuration["key"]["private"]);
|
||||
$data["iss"] = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.issuer", $configuration["key"]["issuer"]) ?: "Twake";
|
||||
|
||||
// Create JWT
|
||||
$header = json_encode(['alg' => 'RS512']);
|
||||
$data["iat"] = date("U");
|
||||
$data["exp"] = date("U") + 5 * 60;
|
||||
$payload = json_encode($data);
|
||||
$base64UrlHeader = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($header));
|
||||
$base64UrlPayload = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($payload));
|
||||
openssl_sign( $base64UrlHeader . "." . $base64UrlPayload, $signature, $linshare_privatekey, OPENSSL_ALGO_SHA512);
|
||||
$base64UrlSignature = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($signature));
|
||||
$jwt = $base64UrlHeader . "." . $base64UrlPayload . "." . $base64UrlSignature;
|
||||
|
||||
return $jwt;
|
||||
}
|
||||
|
||||
public function proceedEvent($type, $event, $data) {
|
||||
$this->main_service->setConnector("linshare");
|
||||
$definition = (new ConnectorDefinition())->definition;
|
||||
|
||||
$group = $data["group"];
|
||||
$entity = null;
|
||||
$user = $data["user"];
|
||||
$workspace = $data["workspace"];
|
||||
$channel = $data["channel"];
|
||||
$parent_message = $data["parent_message"];
|
||||
$interactive_context = $data["interactive_context"];
|
||||
|
||||
if ($type == "action") {
|
||||
|
||||
$linshare_domain = $this->app->getContainer()->getParameter("defaults.connectors.linshare.domain", $configuration["domain"]);
|
||||
$document_id = $group["id"]."_domain_conf";
|
||||
$document_value = $this->main_service->getDocument($document_id);
|
||||
if($document_value){
|
||||
$linshare_domain = $document_value;
|
||||
}
|
||||
|
||||
// GET Documents from LinShare
|
||||
$token = $this->getJWT($user["email"]);
|
||||
$documents = $this->main_service->get(rtrim($linshare_domain, "/") . "/linshare/webservice/rest/user/documents/", false, [
|
||||
CURLOPT_HTTPHEADER => [
|
||||
"Accept: application/json",
|
||||
"Authorization: Bearer " . $token
|
||||
]
|
||||
]);
|
||||
|
||||
$values = [];
|
||||
foreach($documents as $document){
|
||||
$uuid = $document["uuid"];
|
||||
$values[] = [
|
||||
"name" => $document["name"],
|
||||
"value" => json_encode(["uuid"=>$uuid, "name"=>$document["name"]])
|
||||
];
|
||||
}
|
||||
$select = [
|
||||
"type" => "select",
|
||||
"title"=>"Choose file",
|
||||
"values" => $values,
|
||||
"passive_id" => "file_select"
|
||||
];
|
||||
|
||||
$form = Array("type" => "nop", "content" => [
|
||||
"Choose a file to send from your space",
|
||||
Array("type" => "br"),
|
||||
$select,
|
||||
Array("type" => "br"),
|
||||
Array("type" => "button", "action_id" => "send_file", "content" => "Envoyer", "interactive_context" => [
|
||||
"channel_id" => $channel["id"]
|
||||
]),
|
||||
]);
|
||||
|
||||
$data_string = Array(
|
||||
"group_id" => $group["id"],
|
||||
"user_id" => $user["id"],
|
||||
"connection_id" => $data["connection_id"],
|
||||
"form" => $form
|
||||
);
|
||||
|
||||
$res = $this->main_service->postApi("general/configure", $data_string);
|
||||
|
||||
}
|
||||
|
||||
if($type == "interactive_configuration_action" && $event == "send_file"){
|
||||
|
||||
$data_string = Array(
|
||||
"group_id" => $group["id"],
|
||||
"user_id" => $user["id"],
|
||||
"connection_id" =>$data["connection_id"]
|
||||
);
|
||||
$this->main_service->postApi("general/configure_close", $data_string);
|
||||
|
||||
$file = json_decode($data["form"]["file_select"], 1);
|
||||
$server_route = rtrim($this->app->getContainer()->getParameter("env.server_name"), "/");
|
||||
|
||||
if(!$file || !$file["name"]){
|
||||
return;
|
||||
}
|
||||
|
||||
$download_parameters = [
|
||||
"file_uuid=" . $file["uuid"],
|
||||
"group_id=" . $group["id"],
|
||||
"owner_id=" . $user["id"]
|
||||
];
|
||||
$download_route = $server_route . "/bundle/connectors/" . $definition["simple_name"] . "/download";
|
||||
$download_route = $download_route . "?" . join("&", $download_parameters);
|
||||
$linshare_privatekey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.private", $configuration["key"]["private"]);
|
||||
openssl_sign($file["uuid"] . $user["id"], $signature, $linshare_privatekey, OPENSSL_ALGO_SHA512);
|
||||
$download_route .= "&sign=" . str_replace(str_split('+/='), str_split('._-'), base64_encode($signature));
|
||||
|
||||
$message["channel_id"] = $interactive_context["channel_id"];
|
||||
$message["sender"] = $user["id"];
|
||||
$message["parent_message_id"] = isset($parent_message["id"])?$parent_message["id"]:"";
|
||||
|
||||
$message["content"] = Array(
|
||||
["type" => "url", "user_identifier" => true, "url" => $download_route, "content" => ["type" => "button", "content" => "Download " . $file["name"]]]
|
||||
);
|
||||
$message["hidden_data"] = Array(
|
||||
"allow_delete" => "everyone"
|
||||
);
|
||||
|
||||
$data_string = Array(
|
||||
"group_id" => $group["id"],
|
||||
"message" => $message
|
||||
);
|
||||
|
||||
$message = $this->main_service->postApi("messages/save", $data_string);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function download($twake_user, $file_uuid, $group_id, $owner_id, $sign){
|
||||
|
||||
$this->main_service->setConnector("linshare");
|
||||
|
||||
$linshare_publickey = $this->app->getContainer()->getParameter("defaults.connectors.linshare.key.public", $configuration["key"]["public"]);
|
||||
$r = openssl_verify($file_uuid . $owner_id, base64_decode(str_replace(str_split('._-'), str_split('+/='), $sign)), $linshare_publickey, OPENSSL_ALGO_SHA512);
|
||||
if(!$r){
|
||||
echo "This document isn't available.";
|
||||
die();
|
||||
}
|
||||
|
||||
|
||||
$linshare_domain = $this->app->getContainer()->getParameter("defaults.connectors.linshare.domain", $configuration["domain"]);
|
||||
$document_id = $group_id."_domain_conf";
|
||||
$document_value = $this->main_service->getDocument($document_id);
|
||||
if($document_value){
|
||||
$linshare_domain = $document_value;
|
||||
}
|
||||
|
||||
//Get user email
|
||||
$user_object = $this->main_service->postApi("users/get", Array("user_id" => $twake_user, "group_id" => $group_id));
|
||||
$requester_email = $user_object["object"]["email"];
|
||||
|
||||
//Get owner email
|
||||
$owner_email = $requester_email;
|
||||
if($twake_user != $owner_id){
|
||||
$user_object = $this->main_service->postApi("users/get", Array("user_id" => $owner_id, "group_id" => $group_id));
|
||||
$owner_email = $user_object["object"]["email"];
|
||||
}
|
||||
|
||||
//TODO download as the requester and not as the owner
|
||||
|
||||
//Test if user has access to this file
|
||||
$token = $this->getJWT($owner_email);
|
||||
$document = $this->main_service->get(rtrim($linshare_domain, "/") . "/linshare/webservice/rest/user/documents/".$file_uuid, false, [
|
||||
CURLOPT_HTTPHEADER => [
|
||||
"Accept: application/json",
|
||||
"Authorization: Bearer " . $token
|
||||
]
|
||||
]);
|
||||
|
||||
if(!$document){
|
||||
echo "This document isn't available.";
|
||||
die();
|
||||
}
|
||||
|
||||
$size = $document["size"];
|
||||
$quoted = $document["name"];
|
||||
|
||||
header('Content-Description: File Transfer');
|
||||
header('Content-Type: application/octet-stream');
|
||||
header('Content-Disposition: attachment; filename=' . $quoted);
|
||||
header('Content-Transfer-Encoding: binary');
|
||||
header('Connection: Keep-Alive');
|
||||
header('Expires: 0');
|
||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||
header('Pragma: public');
|
||||
if($size) header('Content-Length: ' . $size);
|
||||
|
||||
$url = rtrim($linshare_domain, "/") . "/linshare/webservice/rest/user/documents/".$file_uuid."/download";
|
||||
|
||||
$options = [
|
||||
CURLOPT_HTTPHEADER => [
|
||||
"Accept: application/json",
|
||||
"Authorization: Bearer " . $token
|
||||
]
|
||||
];
|
||||
|
||||
$options[CURLOPT_RETURNTRANSFER] = true;
|
||||
$options[CURLOPT_HEADER] = false;
|
||||
$options[CURLOPT_URL] = $url;
|
||||
$options[CURLOPT_CUSTOMREQUEST] = "GET";
|
||||
|
||||
$curl_write_flush = function ($curl_handle, $chunk)
|
||||
{
|
||||
echo $chunk;
|
||||
ob_flush(); // flush output buffer (Output Control configuration specific)
|
||||
flush(); // flush output body (SAPI specific)
|
||||
return strlen($chunk); // tell Curl there was output (if any).
|
||||
};
|
||||
|
||||
$curl = curl_init();
|
||||
curl_setopt_array($curl, $options);
|
||||
curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
|
||||
curl_setopt($curl, CURLOPT_WRITEFUNCTION, $curl_write_flush);
|
||||
curl_exec($curl);
|
||||
curl_close($curl);
|
||||
|
||||
die();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace DevelopersApiV1\Calendar;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
|
||||
use DevelopersApiV1\Calendar\Resources\Routing;
|
||||
use DevelopersApiV1\Calendar\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
}
|
||||
}
|
||||
@@ -1,122 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace DevelopersApiV1\Calendar\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
|
||||
class Calendar extends BaseController
|
||||
{
|
||||
public function removeEvent(Request $request)
|
||||
{
|
||||
$capabilities = ["calendar_event_remove"];
|
||||
|
||||
$application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities);
|
||||
if (is_array($application) && $application["error"]) {
|
||||
return new Response($application);
|
||||
}
|
||||
|
||||
$object = $request->request->get("object", null);
|
||||
$user = null;
|
||||
$object = $this->get("app.calendar.event")->remove($object, Array(), $user);
|
||||
|
||||
$event = Array(
|
||||
"client_id" => "system",
|
||||
"action" => "remove",
|
||||
"object_type" => "",
|
||||
"front_id" => $object["front_id"]
|
||||
);
|
||||
$workspace_calendars = $object["workspaces_calendars"] ? $object["workspaces_calendars"] : [];
|
||||
$workspace_ids = [];
|
||||
foreach ($workspace_calendars as $wc) {
|
||||
if (!in_array($wc["workspace_id"], $workspace_ids)) {
|
||||
$workspace_ids[] = $wc["workspace_id"];
|
||||
$this->get("app.websockets")->push("calendar_events/" . $wc["workspace_id"], $event);
|
||||
}
|
||||
}
|
||||
|
||||
$this->get("administration.counter")->incrementCounter("total_api_calendar_operation", 1);
|
||||
|
||||
return new Response(Array("result" => $object));
|
||||
}
|
||||
|
||||
public function saveEvent(Request $request)
|
||||
{
|
||||
$capabilities = ["calendar_event_save"];
|
||||
$application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities);
|
||||
if (is_array($application) && $application["error"]) {
|
||||
return new Response($application);
|
||||
}
|
||||
|
||||
$object = $request->request->get("object", null);
|
||||
$user = null;
|
||||
try {
|
||||
$object = $this->get("app.calendar.event")->save($object, Array(), $user);
|
||||
} catch (\Exception $e) {
|
||||
$object = false;
|
||||
}
|
||||
if (!$object) {
|
||||
return new Response(Array("error" => "unknown error or malformed query."));
|
||||
}
|
||||
|
||||
if ($object) {
|
||||
|
||||
$event = Array(
|
||||
"client_id" => "system",
|
||||
"action" => "save",
|
||||
"object_type" => "",
|
||||
"object" => $object
|
||||
);
|
||||
$workspace_calendars = $object["workspaces_calendars"] ? $object["workspaces_calendars"] : [];
|
||||
$workspace_ids = [];
|
||||
foreach ($workspace_calendars as $wc) {
|
||||
if (!in_array($wc["workspace_id"], $workspace_ids)) {
|
||||
$workspace_ids[] = $wc["workspace_id"];
|
||||
$this->get("app.websockets")->push("calendar_events/" . $wc["workspace_id"], $event);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$this->get("administration.counter")->incrementCounter("total_api_calendar_operation", 1);
|
||||
|
||||
return new Response(Array("object" => $object));
|
||||
|
||||
}
|
||||
|
||||
public function getCalendarList(Request $request)
|
||||
{
|
||||
$privileges = ["workspace_calendar"];
|
||||
|
||||
$application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges);
|
||||
if (is_array($application) && $application["error"]) {
|
||||
return new Response($application);
|
||||
}
|
||||
$objects = false;
|
||||
$user_id = $request->request->get("user_id", "");
|
||||
$workspace_id = $request->request->get("workspace_id", "");
|
||||
if ($workspace_id) {
|
||||
if ($user_id) {
|
||||
$user_entity = $this->get("app.users")->getById($user_id, true);
|
||||
}
|
||||
if ($user_entity) {
|
||||
$objects = $this->get("app.calendar.calendar")->get(Array("workspace_id" => $workspace_id), $user_entity);
|
||||
}
|
||||
}
|
||||
|
||||
if ($objects === false) {
|
||||
return new Response(Array("error" => "payload_error"));
|
||||
}
|
||||
|
||||
$res = [];
|
||||
foreach ($objects as $object) {
|
||||
$res[] = $object;
|
||||
}
|
||||
|
||||
$this->get("administration.counter")->incrementCounter("total_api_calendar_operation", 1);
|
||||
|
||||
return new Response(Array("data" => $res));
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace DevelopersApiV1\Calendar\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "api/v1/calendar/";
|
||||
|
||||
protected $routes = [
|
||||
#Calendar routing
|
||||
"event/remove" => ["handler" => "Calendar:removeEvent", "methods" => ["POST"]],
|
||||
"event/save" => ["handler" => "Calendar:saveEvent", "methods" => ["POST"]],
|
||||
"get_calendars" => ["handler" => "Calendar:getCalendarList", "methods" => ["POST"]],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace DevelopersApiV1\Channels;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
|
||||
use DevelopersApiV1\Channels\Resources\Routing;
|
||||
use DevelopersApiV1\Channels\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: ehlnofey
|
||||
* Date: 05/06/18
|
||||
* Time: 15:46
|
||||
*/
|
||||
|
||||
namespace DevelopersApiV1\Channels\Controller;
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
|
||||
|
||||
class Channel extends BaseController
|
||||
{
|
||||
|
||||
public function getDirectChannel(Request $request)
|
||||
{
|
||||
|
||||
$capabilities = [];
|
||||
|
||||
$application = $this->get("app.applications_api")->getAppFromRequest($request, $capabilities);
|
||||
if (is_array($application) && $application["error"]) {
|
||||
return new Response($application);
|
||||
}
|
||||
|
||||
$user_id = $request->request->get("user_id", "");
|
||||
|
||||
if ($user_id) {
|
||||
$user_entity = $this->get("app.users")->getById($user_id, true);
|
||||
if ($user_entity) {
|
||||
$object = $this->get("app.channels.direct_messages_system")->save(Array("app_id" => $application->getId(), "group_id" => $request->request->get("group_id", null)), Array(), $user_entity);
|
||||
}
|
||||
}
|
||||
|
||||
$this->get("administration.counter")->incrementCounter("total_api_messages_operation", 1);
|
||||
|
||||
return new Response(Array("object" => $object));
|
||||
|
||||
}
|
||||
|
||||
public function getChannelsByWorkspace(Request $request)
|
||||
{
|
||||
$privileges = ["channels"];
|
||||
|
||||
$application = $this->get("app.applications_api")->getAppFromRequest($request, [], $privileges);
|
||||
if (is_array($application) && $application["error"]) {
|
||||
return new Response($application);
|
||||
}
|
||||
$objects = false;
|
||||
$user_id = $request->request->get("user_id", "");
|
||||
$workspace_id = $request->request->get("workspace_id", "");
|
||||
if ($workspace_id) {
|
||||
if ($user_id) {
|
||||
$user_entity = $this->get("app.users")->getById($user_id, true);
|
||||
}
|
||||
if ($user_entity) {
|
||||
$objects = $this->get("app.channels.channels_system")->get(Array("workspace_id" => $workspace_id), $user_entity);
|
||||
}
|
||||
}
|
||||
|
||||
if ($objects === false) {
|
||||
return new Response(Array("error" => "payload_error"));
|
||||
}
|
||||
|
||||
$res = [];
|
||||
foreach ($objects as $object) {
|
||||
if (!$object["direct"] && !$object["application"]) {
|
||||
$res[] = $object;
|
||||
}
|
||||
}
|
||||
|
||||
$this->get("administration.counter")->incrementCounter("total_api_messages_operation", 1);
|
||||
|
||||
return new Response(Array("data" => $res));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace DevelopersApiV1\Channels\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "api/v1/channels/";
|
||||
|
||||
protected $routes = [
|
||||
#Message routing
|
||||
"get_direct_channel" => ["handler" => "Channel:getDirectChannel", "methods" => ["POST"]],
|
||||
"get_by_workspace" => ["handler" => "Channel:getChannelsByWorkspace", "methods" => ["POST"]],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace DevelopersApiV1\Core;
|
||||
|
||||
require_once __DIR__ . "/Resources/Routing.php";
|
||||
require_once __DIR__ . "/Resources/Services.php";
|
||||
|
||||
use DevelopersApiV1\Core\Resources\Routing;
|
||||
use DevelopersApiV1\Core\Resources\Services;
|
||||
use Common\BaseBundle;
|
||||
|
||||
class Bundle extends BaseBundle
|
||||
{
|
||||
|
||||
protected $bundle_root = __DIR__;
|
||||
protected $bundle_namespace = __NAMESPACE__;
|
||||
protected $routes = [];
|
||||
protected $services = [];
|
||||
|
||||
public function init()
|
||||
{
|
||||
$routing = new Routing();
|
||||
$this->routes = $routing->getRoutes();
|
||||
$this->routing_prefix = $routing->getRoutesPrefix();
|
||||
$this->initRoutes();
|
||||
|
||||
$this->services = (new Services())->getServices();
|
||||
$this->initServices();
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: lucie
|
||||
* Date: 08/06/18
|
||||
* Time: 14:17
|
||||
*/
|
||||
|
||||
namespace DevelopersApiV1\Core\Controller;
|
||||
|
||||
|
||||
use Common\BaseController;
|
||||
use Common\Http\Response;
|
||||
use Common\Http\Request;
|
||||
|
||||
class Base extends BaseController
|
||||
{
|
||||
|
||||
public function getInfoFromToken(Request $request)
|
||||
{
|
||||
$info = $this->get("api.v1.check_user_data")->getInfo($request->request->get("token", null));
|
||||
if ($info)
|
||||
return new Response($info->getAsArray());
|
||||
else
|
||||
return new Response(array("error" => "invalid_token"));
|
||||
}
|
||||
|
||||
public function BadRequest()
|
||||
{
|
||||
return new Response(Array("errors" => "0000", "description" => "Bad request"));
|
||||
}
|
||||
}
|
||||
@@ -1,178 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace DevelopersApiV1\Core\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
/**
|
||||
* AccessLog
|
||||
*
|
||||
* @ORM\Table(name="access_log",options={"engine":"MyISAM"})
|
||||
* @ORM\Entity()
|
||||
*/
|
||||
class AccessLog
|
||||
{
|
||||
/**
|
||||
* @ORM\Column(name="id", type="twake_timeuuid")
|
||||
* @ORM\Id
|
||||
*/
|
||||
private $id;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="integer")
|
||||
*/
|
||||
private $appid;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="integer")
|
||||
*/
|
||||
private $minutes;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="integer")
|
||||
*/
|
||||
private $readaccesscount;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="integer")
|
||||
*/
|
||||
private $writeaccesscount;
|
||||
|
||||
/**
|
||||
* @ORM\Column(type="integer")
|
||||
*/
|
||||
private $manageaccesscount;
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function setId($id)
|
||||
{
|
||||
$this->id = $id;
|
||||
}
|
||||
|
||||
public function getId()
|
||||
{
|
||||
return $this->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getAppId()
|
||||
{
|
||||
return $this->appid;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $appid
|
||||
*/
|
||||
public function setAppId($appid)
|
||||
{
|
||||
$this->appid = $appid;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getMinutes()
|
||||
{
|
||||
return $this->minutes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $minutes
|
||||
*/
|
||||
public function setMinutes($minutes)
|
||||
{
|
||||
$this->minutes = $minutes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getReadAccessCount()
|
||||
{
|
||||
return $this->readaccesscount;
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public function readAccessIncrease()
|
||||
{
|
||||
$this->readAccessCount++;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getWriteAccessCount()
|
||||
{
|
||||
return $this->writeaccesscount;
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public function writeAccessIncrease()
|
||||
{
|
||||
$this->writeAccessCount++;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getManageAccessCount()
|
||||
{
|
||||
return $this->manageaccesscount;
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
public function manageAccessIncrease()
|
||||
{
|
||||
$this->manageAccessCount++;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $readaccesscount
|
||||
*/
|
||||
public function setReadAccessCount($readaccesscount)
|
||||
{
|
||||
$this->readaccesscount = $readaccesscount;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param mixed $writeaccesscount
|
||||
*/
|
||||
public function setWriteAccessCount($writeaccesscount)
|
||||
{
|
||||
$this->writeaccesscount = $writeaccesscount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mixed $manageaccesscount
|
||||
*/
|
||||
public function setManageAccessCount($manageaccesscount)
|
||||
{
|
||||
$this->manageaccesscount = $manageaccesscount;
|
||||
}
|
||||
|
||||
public function clear($minutes)
|
||||
{
|
||||
$this->setMinutes($minutes);
|
||||
$this->setReadAccessCount(0);
|
||||
$this->setWriteAccessCount(0);
|
||||
$this->setManageAccessCount(0);
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->setId(0);
|
||||
$this->setAppId(0);
|
||||
$this->setMinutes(0);
|
||||
$this->setReadAccessCount(0);
|
||||
$this->setWriteAccessCount(0);
|
||||
$this->setManageAccessCount(0);
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace DevelopersApiV1\Core\Resources;
|
||||
|
||||
use Common\BaseRouting;
|
||||
|
||||
class Routing extends BaseRouting
|
||||
{
|
||||
|
||||
protected $routing_prefix = "api/v1/core/";
|
||||
|
||||
protected $routes = [
|
||||
"token" => ["handler" => "Base:getInfoFromToken", "methods" => ["POST"]],
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace DevelopersApiV1\Core\Resources;
|
||||
|
||||
use Common\BaseServices;
|
||||
|
||||
class Services extends BaseServices
|
||||
{
|
||||
protected $services = [
|
||||
"api.v1.check" => "CheckService",
|
||||
// arguments: ["@app.twake_doctrine", "@api.v1.access_log"]
|
||||
"api.v1.api_status" => "ApiStatus",
|
||||
// arguments: ["@app.twake_doctrine"]
|
||||
"api.v1.access_log" => "AccessLogSystem",
|
||||
// arguments: ["@app.twake_doctrine"]
|
||||
"api.v1.check_user_data" => "CheckUserInfo",
|
||||
// arguments: ["@app.twake_doctrine"]
|
||||
];
|
||||
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: ehlnofey
|
||||
* Date: 08/06/18
|
||||
* Time: 10:33
|
||||
*/
|
||||
|
||||
namespace DevelopersApiV1\Core\Services;
|
||||
|
||||
use DevelopersApiV1\Core\Entity\AccessLog;
|
||||
use App\App;
|
||||
|
||||
class AccessLogSystem
|
||||
{
|
||||
/**
|
||||
* AccessLog constructor.
|
||||
*/
|
||||
public function __construct(App $app)
|
||||
{
|
||||
$this->doctrine = $app->getServices()->get("app.twake_doctrine");
|
||||
|
||||
}
|
||||
|
||||
public function record($applicationId, $rightLevel)
|
||||
{
|
||||
$accessLogger = $this->doctrine->getRepository("DevelopersApiV1\Core:AccessLog")->findOneBy(Array("appid" => $applicationId));
|
||||
|
||||
if ($accessLogger == null) {
|
||||
$accessLogger = new AccessLog();
|
||||
$accessLogger->setAppId($applicationId);
|
||||
}
|
||||
|
||||
$minutes = $accessLogger->getMinutes();
|
||||
|
||||
if ($minutes != date("i"))
|
||||
$accessLogger->clear(date("i"));
|
||||
|
||||
if ($rightLevel == 1) //read
|
||||
$accessLogger->readAccessIncrease();
|
||||
elseif ($rightLevel == 2) //write
|
||||
$accessLogger->writeAccessIncrease();
|
||||
elseif ($rightLevel == 3) //manage
|
||||
$accessLogger->manageAccessIncrease();
|
||||
|
||||
$this->doctrine->persist($accessLogger);
|
||||
$this->doctrine->flush();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user