streams/Zotlabs/Lib/LibBlock.php

102 lines
2.7 KiB
PHP
Raw Normal View History

2020-03-17 23:44:26 +00:00
<?php
namespace Zotlabs\Lib;
class LibBlock {
2020-05-07 02:19:46 +00:00
static $cache = [];
2020-06-03 03:36:21 +00:00
static $empty = [];
2020-05-07 02:19:46 +00:00
// This limits the number of DB queries for fetch_by_entity to once per page load.
static function fetch_from_cache($channel_id,$entity) {
2021-03-11 03:30:25 +00:00
if (! isset(self::$cache[$channel_id])) {
if (! isset(self::$empty[$channel_id])) {
2020-06-03 03:36:21 +00:00
self::$cache[$channel_id] = self::fetch($channel_id);
if (! self::$cache[$channel_id]) {
self::$empty[$channel_id] = true;
}
}
2020-05-07 02:19:46 +00:00
}
2021-03-11 03:30:25 +00:00
if (isset(self::$cache[$channel_id]) && self::$cache[$channel_id] && is_array(self::$cache[$channel_id])) {
2020-05-07 02:19:46 +00:00
foreach (self::$cache[$channel_id] as $entry) {
if (is_array($entry) && strcasecmp($entry['block_entity'],$entity) === 0) {
return $entry;
}
}
}
return false;
}
2020-03-17 23:44:26 +00:00
static function store($arr) {
$arr['block_entity'] = trim($arr['block_entity']);
if (! $arr['block_entity']) {
return false;
}
$arr['block_channel_id'] = ((array_key_exists('block_channel_id',$arr)) ? intval($arr['block_channel_id']) : 0);
$arr['block_type'] = ((array_key_exists('block_type',$arr)) ? intval($arr['block_type']) : BLOCKTYPE_CHANNEL );
$arr['block_comment'] = ((array_key_exists('block_comment',$arr)) ? escape_tags(trim($arr['block_comment'])) : EMPTY_STR);
2020-03-17 23:44:26 +00:00
if (! intval($arr['block_id'])) {
$r = q("select * from block where block_channel_id = %d and block_entity = '%s' and block_type = %d limit 1",
2020-03-17 23:44:26 +00:00
intval($arr['block_channel_id']),
dbesc($arr['block_entity']),
intval($arr['block_type'])
2020-03-17 23:44:26 +00:00
);
if ($r) {
$arr['block_id'] = $r[0]['block_id'];
}
}
if (intval($arr['block_id'])) {
return q("UPDATE block set block_channel_id = %d, block_entity = '%s', block_type = %d, block_comment = '%s' where block_id = %d",
intval($arr['block_channel_id']),
dbesc($arr['block_entity']),
intval($arr['block_type']),
dbesc($arr['block_comment']),
intval($arr['block_id'])
2020-03-19 23:56:48 +00:00
);
2020-03-17 23:44:26 +00:00
}
else {
return create_table_from_array('block',$arr);
}
}
static function remove($channel_id,$entity) {
return q("delete from block where block_channel_id = %d and block_entity = '%s'",
2020-03-19 23:56:48 +00:00
intval($channel_id),
2020-03-17 23:44:26 +00:00
dbesc($entity)
);
}
static function fetch_by_id($channel_id,$id) {
$r = q("select * from block where block_channel_id = %d and block_id = %d ",
intval($channel_id)
);
return (($r) ? array_shift($r) : $r);
}
static function fetch_by_entity($channel_id,$entity) {
2020-05-07 02:19:46 +00:00
return self::fetch_from_cache($channel_id,$entity);
2020-03-17 23:44:26 +00:00
}
static function fetch($channel_id,$type = false) {
$sql_extra = (($type === false) ? EMPTY_STR : " and block_type = " . intval($type));
$r = q("select * from block where block_channel_id = %d $sql_extra",
intval($channel_id)
);
return $r;
}
}