method add documentation in bbn\Appui\Observer
Adds a new observer and returns its id or the id of an existing one.
function(array $cfg, $check_result = true)
{
if (
$this->id_user &&
(null !== $cfg['request']) &&
$this->check()
){
X::log($cfg, 'observers');
$t = new bbn\Util\Timer();
$t->start();
if ( is_string($cfg['request']) ){
$params = self::sanitizeParams($cfg['params'] ?? []);
$request = $cfg['request'];
}
else if ( is_array($cfg['request']) ){
$params = null;
$request = $cfg['request'];
}
else{
return null;
}
$res = $this->_exec($request, $params);
$duration = (int)ceil($t->stop() * 1000);
if ( is_array($request) ){
$request = json_encode($request);
}
$id_alias = $this->_get_id($request, $params);
X::log([$id_alias, $this->db->last(), $request, $params], 'observers');
//die(var_dump($id_alias, $this->db->last(), $request, $params));
// If it is a public observer it will be the id_alias and the main observer
if (
!$id_alias &&
!empty($cfg['public']) &&
$this->db->insertIgnore('bbn_observers', [
'request' => $request,
'params' => $params ?: null,
'name' => $cfg['name'] ?? null,
'frequency' => empty($cfg['frequency']) ? self::$default_frequency : $cfg['frequency'],
'duration' => $duration,
'id_user' => null,
'public' => 1,
'result' => $res
])
){
$id_alias = $this->db->lastId();
}
// Getting the ID of the observer corresponding to current user
if ( $id_obs = $this->_get_id_from_user($request, $params) ){
if ($check_result) {
$this->checkResult($id_obs);
}
return $id_obs;
}
else if ( $id_alias ){
if ( $this->db->insertIgnore('bbn_observers', [
'id_user' => $this->id_user,
'public' => 0,
'id_alias' => $id_alias,
'next' => null,
'result' => $res
]) ){
return $this->db->lastId();
}
}
else{
if ( $this->db->insertIgnore('bbn_observers', [
'request' => $request,
'params' => $params ?: null,
'name' => $cfg['name'] ?? null,
'duration' => $duration,
'id_user' => $this->id_user,
'public' => 0,
'result' => $res
]) ){
return $this->db->lastId();
}
}
}
return null;
}
Adds a new observer and returns its id or the id of an existing one. BBN is a suite of PHP and JS libraries and VueJS components - all open-source! bbn.io, build applications, the quick way
This website uses cookies to ensure you get the best experience on our website.
© 2011-2023
BBN Solutions