raspisms/controllers/internals/Console.php

157 lines
4.7 KiB
PHP
Raw Normal View History

2019-12-08 02:33:53 +01:00
<?php
/*
* This file is part of RaspiSMS.
*
* (c) Pierre-Lin Bonnemaison <plebwebsas@gmail.com>
*
* This source file is subject to the GPL-3.0 license that is bundled
* with this source code in the file LICENSE.
*/
namespace controllers\internals;
/**
2020-01-17 18:19:25 +01:00
* Class to call the console scripts.
2019-12-08 02:33:53 +01:00
*/
class Console extends \descartes\InternalController
{
/**
2020-01-17 18:19:25 +01:00
* Start launcher daemon.
*/
2020-01-17 18:19:25 +01:00
public function launcher()
2019-12-08 02:33:53 +01:00
{
new \daemons\Launcher();
2019-12-08 02:33:53 +01:00
}
/**
2020-01-17 18:19:25 +01:00
* Start sender daemon.
*/
2020-01-17 18:19:25 +01:00
public function sender()
{
new \daemons\Sender();
}
2020-01-17 18:19:25 +01:00
/**
2020-01-17 18:19:25 +01:00
* Start webhook daemon.
*/
2020-01-17 18:19:25 +01:00
public function webhook()
{
new \daemons\Webhook();
}
2020-06-23 21:06:13 +02:00
2020-04-16 07:50:30 +02:00
/**
* Start mailer daemon.
*/
public function mailer()
{
new \daemons\Mailer();
}
/**
2020-01-17 18:19:25 +01:00
* Start a phone daemon.
*
* @param $id_phone : Phone id
*/
2020-01-17 18:19:25 +01:00
public function phone($id_phone)
{
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD, 'UTF8');
$internal_phone = new \controllers\internals\Phone($bdd);
$phone = $internal_phone->get($id_phone);
if (!$phone)
{
exit(1);
}
new \daemons\Phone($phone);
}
2020-02-19 02:32:52 +01:00
/**
* Send a SMS using a phone
*
* @param $id_phone : Phone id
*/
public function send_sms($id_phone, $message)
{
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD, 'UTF8');
$internal_sended = new \controllers\internals\Sended($bdd);
$internal_phone = new \controllers\internals\Phone($bdd);
$id_phone = (int) $id_phone;
$phone = $internal_phone->get($id_phone);
if (!$phone)
{
exit(1);
}
$message = json_decode($message, true);
$adapter_class = $phone['adapter'];
$adapter = new $adapter_class($phone['adapter_datas']);
$response = $internal_sended->send($adapter, $phone['id_user'], $phone['id'], $message['text'], $message['destination'], $message['flash']);
var_dump($adapter);
if ($response['error'])
{
echo $response['error_message'] . "gfuck";
exit(1);
}
exit(0);
}
2020-02-19 02:32:52 +01:00
/**
* Create a user or update an existing user.
*
2020-02-19 02:32:52 +01:00
* @param $email : User email
* @param $password : User password
* @param $admin : Is user admin
* @param $api_key : User API key, if null random api key is generated
2020-03-30 01:52:53 +02:00
* @param $status : User status, default \models\User::STATUS_ACTIVE
* @param bool $encrypt_password : Should the password be encrypted, by default true
*
2020-06-22 19:49:59 +02:00
* exit code 0 on success | 1 on error
2020-02-19 02:32:52 +01:00
*/
public function create_update_user(string $email, string $password, bool $admin, ?string $api_key = null, string $status = \models\User::STATUS_ACTIVE, bool $encrypt_password = true)
2020-02-19 02:32:52 +01:00
{
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD, 'UTF8');
$internal_user = new \controllers\internals\User($bdd);
2020-02-21 03:55:14 +01:00
$user = $internal_user->get_by_email($email);
if ($user)
{
$api_key = $api_key ?? $internal_user->generate_random_api_key();
$success = $internal_user->update($user['id'], $email, $password, $admin, $api_key, $status, $encrypt_password);
2020-02-21 03:55:14 +01:00
exit($success ? 0 : 1);
}
$success = $internal_user->create($email, $password, $admin, $api_key, $status, $encrypt_password);
2020-03-30 01:52:53 +02:00
exit($success ? 0 : 1);
}
/**
2020-06-23 21:06:13 +02:00
* Update a user status.
2020-03-30 01:52:53 +02:00
*
2020-06-23 21:06:13 +02:00
* @param string $email : User email
2020-03-30 01:52:53 +02:00
* @param string $status : User status, default \models\User::STATUS_ACTIVE
*/
2020-06-23 21:06:13 +02:00
public function update_user_status(string $email, string $status)
2020-03-30 01:52:53 +02:00
{
$bdd = \descartes\Model::_connect(DATABASE_HOST, DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORD, 'UTF8');
$internal_user = new \controllers\internals\User($bdd);
$user = $internal_user->get_by_email($email);
if (!$user)
{
exit(1);
}
$success = $internal_user->update_status($user['id'], $status);
2020-02-21 03:55:14 +01:00
exit($success ? 0 : 1);
2020-02-19 02:32:52 +01:00
}
2019-12-08 02:33:53 +01:00
}