2021-03-23 04:31:13 +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 models;
|
|
|
|
|
|
|
|
/**
|
2021-06-17 00:51:33 +02:00
|
|
|
* Manage bdd operations for calls.
|
|
|
|
*/
|
2021-03-23 04:31:13 +01:00
|
|
|
class Call extends StandardModel
|
|
|
|
{
|
|
|
|
const DIRECTION_INBOUND = 'inbound';
|
|
|
|
const DIRECTION_OUTBOUND = 'outbound';
|
2021-06-17 00:51:33 +02:00
|
|
|
|
2021-03-24 00:22:17 +01:00
|
|
|
/**
|
|
|
|
* Return a list of call for a user.
|
|
|
|
* Add a column contact_name and phone_name when available.
|
|
|
|
*
|
|
|
|
* @param int $id_user : user id
|
|
|
|
* @param ?int $limit : Number of entry to return or null
|
|
|
|
* @param ?int $offset : Number of entry to ignore or null
|
|
|
|
*
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function list_for_user(int $id_user, $limit, $offset)
|
|
|
|
{
|
|
|
|
$query = '
|
|
|
|
SELECT `call`.*, contact.name as contact_name, phone.name as phone_name
|
|
|
|
FROM `call`
|
|
|
|
LEFT JOIN contact
|
|
|
|
ON contact.number = `call`.destination
|
|
|
|
OR contact.number = `call`.origin
|
|
|
|
LEFT JOIN phone
|
|
|
|
ON phone.id = `call`.id_phone
|
|
|
|
WHERE `call`.id_user = :id_user
|
|
|
|
';
|
|
|
|
|
|
|
|
if (null !== $limit)
|
|
|
|
{
|
|
|
|
$limit = (int) $limit;
|
|
|
|
|
|
|
|
$query .= ' LIMIT ' . $limit;
|
|
|
|
if (null !== $offset)
|
|
|
|
{
|
|
|
|
$offset = (int) $offset;
|
|
|
|
$query .= ' OFFSET ' . $offset;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$params = [
|
|
|
|
'id_user' => $id_user,
|
|
|
|
];
|
|
|
|
|
|
|
|
return $this->_run_query($query, $params);
|
|
|
|
}
|
2021-03-23 04:31:13 +01:00
|
|
|
|
2021-03-23 17:39:13 +01:00
|
|
|
/**
|
2021-06-17 00:51:33 +02:00
|
|
|
* Get a call for a user by his phone and uid.
|
|
|
|
*
|
|
|
|
* @param int $id_user : user id
|
2021-03-23 17:39:13 +01:00
|
|
|
* @param int $id_phone : phone id
|
2021-06-17 00:51:33 +02:00
|
|
|
* @param int $uid : call uid
|
2021-03-23 17:39:13 +01:00
|
|
|
*
|
|
|
|
* @return array : the call or an empty array
|
|
|
|
*/
|
|
|
|
public function get_by_uid_and_phone_for_user($id_user, $id_phone, $uid)
|
|
|
|
{
|
|
|
|
$where = [
|
|
|
|
'id_user' => $id_user,
|
|
|
|
'id_phone' => $id_phone,
|
|
|
|
'uid' => $uid,
|
|
|
|
];
|
|
|
|
|
|
|
|
return $this->_select_one($this->get_table_name(), $where);
|
|
|
|
}
|
|
|
|
|
2021-03-23 04:31:13 +01:00
|
|
|
/**
|
|
|
|
* Return table name.
|
|
|
|
*/
|
|
|
|
protected function get_table_name(): string
|
|
|
|
{
|
|
|
|
return 'call';
|
|
|
|
}
|
|
|
|
}
|