From 7c46bafe4b2c2c00dc894345df4dcc14f8e1ffbe Mon Sep 17 00:00:00 2001 From: Luca Haid Date: Thu, 18 Sep 2025 11:03:05 +0200 Subject: [PATCH] added api for officecenter tvs --- .../CpeprovisioningController.php | 57 ++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/application/Cpeprovisioning/CpeprovisioningController.php b/application/Cpeprovisioning/CpeprovisioningController.php index e93af1803..6035bfa14 100644 --- a/application/Cpeprovisioning/CpeprovisioningController.php +++ b/application/Cpeprovisioning/CpeprovisioningController.php @@ -2,8 +2,17 @@ class CpeprovisioningController extends mfBaseController { - protected function init() - { + protected function init() { + if (defined('TT_CPE_PROV_ALLOW_COUNTS_IP') && + in_array($_SERVER['REMOTE_ADDR'], TT_CPE_PROV_ALLOW_COUNTS_IP) && + !mfLoginController::isLoggedIn()) { + if ($this->action !== 'CountOpenProvisionings') { + http_response_code(403); + die('Forbidden'); + } + return; + } + $this->needlogin = true; $this->me = new User(); $this->me->loadMe(); @@ -583,5 +592,49 @@ class CpeprovisioningController extends mfBaseController die(); } + protected function countOpenProvisioningsAction() { + $r = $this->request; + $filter = $this->getPreparedFilter($r->filter ?? []); + $filter['routerconfig_finished'] = 0; // only open ones + + $orders = OrderModel::search($filter); + $orderproductsprefetch = OrderProductModel::precache(); + + $openCount = 0; + + foreach ($orders as $order) { + if ($filter["hide_delayed_finish"] && $order->finish_after) { + if ($order->finish_after > date("U") + (31 * 86400)) { + continue; + } + } + + if (isset($orderproductsprefetch['terminations'][$order->id]) && is_array($orderproductsprefetch['terminations'][$order->id]) && count($orderproductsprefetch['terminations'][$order->id])) { + if (!$order->cpeprovisioning_enabled && $orderproductsprefetch['terminations'][$order->id][0]['statuscode'] < TT_TERMSTATUS_CONNECTED) { + continue; + } + } + + if (array_key_exists($order->id, $orderproductsprefetch)) { + foreach ($orderproductsprefetch[$order->id] as $orderproduct) { + if (!$orderproduct || !is_array($orderproduct)) continue; + + if ($orderproduct['routerconfig_finished'] == 1) { + continue; + } + + $productattributes = $orderproduct['attributes']; + if (is_array($productattributes) && count($productattributes)) { + if (array_key_exists("bras_type", $productattributes) && $productattributes) { + $openCount++; + } + } + } + } + } + + self::returnJson(['open_count' => $openCount]); + } + }