mDb->convertSortmode($sort_mode);
$query_cant = "select count(*) from `".BIT_DB_PREFIX."rss_modules` $mid";
$result = $this->mDb->query($query,$bindvars,$max_records,$offset);
$cant = $this->mDb->getOne($query_cant,$bindvars);
$ret = [];
while ($res = $result->fetchRow()) {
$res["minutes"] = $res["refresh"] / 60;
$ret[] = $res;
}
$retval = [];
$retval["data"] = $ret;
$retval["cant"] = $cant;
return $retval;
}
public function replace_rss_module($rss_id, $name, $description, $url, $refresh, $show_title, $show_pub_date) {
$ret = FALSE;
if( is_numeric( $rss_id ) ) {
//if($this->rss_module_name_exists($name)) return false; // TODO: Check the name
$refresh = 60 * $refresh;
if ($rss_id) {
$query = "update `".BIT_DB_PREFIX."rss_modules` set `name`=?,`description`=?,`refresh`=?,`url`=?,`show_title`=?,`show_pub_date`=? where `rss_id`=?";
$bindvars= [ $name, $description, $refresh, $url, $show_title, $show_pub_date, $rss_id ];
} else {
// was: replace into, no clue why.
$query = "insert into `".BIT_DB_PREFIX."rss_modules`(`name`,`description`,`url`,`refresh`,`content`,`last_updated`,`show_title`,`show_pub_date`)
values(?,?,?,?,?,?,?,?)";
$bindvars= [ $name, $description, $url, $refresh, '', 1000000, $show_title, $show_pub_date ];
}
$result = $this->mDb->query($query,$bindvars);
$ret = true;
}
return $ret;
}
public function remove_rss_module($rss_id) {
$ret = FALSE;
if( is_numeric( $rss_id ) ) {
$query = "delete from `".BIT_DB_PREFIX."rss_modules` where `rss_id`=?";
$result = $this->mDb->query($query,[$rss_id]);
$ret = true;
}
return $ret;
}
public function get_rss_module($rss_id) {
$ret = FALSE;
if( is_numeric( $rss_id ) ) {
$query = "select * from `".BIT_DB_PREFIX."rss_modules` where `rss_id`=?";
$result = $this->mDb->query($query,[$rss_id]);
if (!$result->numRows())
return false;
$ret = $result->fetchRow();
}
return $ret;
}
public function startElementHandler($parser, $name, $attribs) {
if ($this->flag) {
$this->buffer .= '<' . $name . '>';
}
if ($name == 'item' || $name == 'items') {
$this->flag = 1;
}
}
public function endElementHandler($parser, $name) {
if ($name == 'item' || $name == 'items') {
$this->flag = 0;
}
if ($this->flag) {
$this->buffer .= '' . $name . '>';
}
}
public function characterDataHandler($parser, $data) {
if ($this->flag) {
$this->buffer .= $data;
}
}
public function refresh_rss_module($rss_id) {
$info = $this->get_rss_module($rss_id);
if ($info) {
global $gBitSystem;
$data = $this->rss_iconv( KernelTools::bit_http_request($info['url']));
$now = $gBitSystem->getUTCTime();
$query = "update `".BIT_DB_PREFIX."rss_modules` set `content`=?, `last_updated`=? where `rss_id`=?";
$result = $this->mDb->query($query,[(string)$data,(int) $now, (int) $rss_id]);
return $data;
}
return false;
}
public function rss_module_name_exists($name) {
$query = "select `name` from `".BIT_DB_PREFIX."rss_modules` where `name`=?";
$result = $this->mDb->query($query,[$name]);
return $result->numRows();
}
public function get_rss_module_id($name) {
$query = "select `rss_id` from `".BIT_DB_PREFIX."rss_modules` where `name`=?";
$id = $this->mDb->getOne($query,[$name]);
return $id;
}
public function get_rss_show_title($rss_id) {
$ret = FALSE;
if( is_numeric( $rss_id ) ) {
$query = "select `show_title` from `".BIT_DB_PREFIX."rss_modules` where `rss_id`=?";
$ret = $this->mDb->getOne($query,[$rss_id]);
}
return $ret;
}
public function get_rss_show_pub_date($rss_id) {
$ret = FALSE;
if( is_numeric( $rss_id ) ) {
$query = "select `show_pub_date` from `".BIT_DB_PREFIX."rss_modules` where `rss_id`=?";
$show_pub_date = $this->mDb->getOne($query,[$rss_id]);
$ret = $show_pub_date;
}
return $ret;
}
public function rss_iconv($xmlstr, $tencod = "UTF-8") {
if (preg_match("/<\?xml.*encoding=\"(.*)\".*\?>/", $xmlstr, $xml_head)) {
$sencod = strtoupper($xml_head[1]);
switch ($sencod) {
case "ISO-8859-1":
// Use utf8_encode a more standard function
$xmlstr = mb_convert_encoding($xmlstr, "UTF-8", mb_detect_encoding($xmlstr));
break;
case "UTF-8":
case "US-ASCII":
// UTF-8 and US-ASCII don't need convertion
break;
default:
// Not supported encoding, we must use iconv() or recode()
if (function_exists('iconv')) {
// We have iconv use it
$new_xmlstr = @iconv($sencod, $tencod, $xmlstr);
if ($new_xmlstr === FALSE) {
// in_encod -> out_encod not supported, may be misspelled encoding
$sencod = strtr($sencod, [
"-" => "",
"_" => "",
" " => "",
]);
$new_xmlstr = @iconv($sencod, $tencod, $xmlstr);
if ($new_xmlstr === FALSE) {
// in_encod -> out_encod not supported, leave it
$tencod = $sencod;
break;
}
}
$xmlstr = $new_xmlstr;
// Fix an iconv bug, a few garbage chars beyound xml...
$xmlstr = preg_replace("/(.*<\/rdf:RDF>).*/s", "\$1", $xmlstr);
} elseif (function_exists('recode_string')) {
// I don't have recode support could somebody test it?
$xmlstr = @recode_string("$sencod..$tencod", $xmlstr);
}
// This PHP intallation don't have any EncodConvFunc...
// somebody could create bit_iconv(...)?
}
// Replace header, put the new encoding
$xmlstr = preg_replace("/(<\?xml.*)encoding=\".*\"(.*\?>)/", "\$1 encoding=\"$tencod\"\$2", $xmlstr);
}
return $xmlstr;
}
public function get_short_desc( $text ){
// first we can remove unwanted stuff like images and lists or whatever - this is rough
$pattern = [
"!]*>!is",
//"!