Files
roi-theme/wp-content/plugins/rss-feed/actions.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

403 lines
12 KiB
PHP
Executable File

<?php
require_once("includes.php");
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
class my_controller
{
public function __construct()
{
}
function apply_actions()
{
if(isset($_REQUEST["id"]) && $_REQUEST["id"]!=0)
$_REQUEST["rows"]=array($_REQUEST["id"]);
foreach($_REQUEST["rows"] as $id)
{
$funct=$_REQUEST["task"]."_item";
if(!method_exists($this,$funct))
die("Function ".$funct." is missing in the file actions.php");
$this->$funct($_REQUEST["module"],$id);
}
die("done");
}
function duplicate_item($module,$id)
{
global $db;
$item=$db->db_selectOne($module,"*","id='".$id."'");
unset($item["id"]);
$item["created"]=time();
$item["updated"]=time();
$item["generated_url"]=uniqid();
$db->db_insert("rss_feed",$item);
}
function delete_item($module,$id)
{
global $db;
$row=$db->db_selectOne($module,"*","id='".$id."'");
if(isset($row["image"]) && ($row["image"]) && file_exists("images/".$row["image"]))
unlink("images/".$row["image"]);
$db->db_query("delete from ".$module." where id=".$id);
}
function reload_item($module,$id)
{
global $db;
$row=$db->db_selectOne($module,"*","id='".$id."'");
$_REQUEST["feed"]=$row["generated_url"];
$called_from_file=true;
include("feed.php");
}
function aggregator_item($module,$id)
{
global $db;
global $table_prefix;
/*$rows=$db->db_select("wp_postmeta","*","post_id='69'");
foreach($rows as $row)
{
echo "'".$row["meta_key"]."'=>'".$row["meta_value"]."',<br>";
}
die("jj");*/
$data=$db->db_selectOne($module,"*","id='".$id."'");
if($data["content2"]=="")
{
$_REQUEST["feed"]=$data["generated_url"];
$called_from_file=true;
include("feed.php");
}
$item=array("post_author"=>1,
"post_date"=>date("Y-m-d H:i:s"),
"post_date_gmt"=>gmdate("Y-m-d H:i:s"),
"post_content"=>$data["description"],
"post_title"=>$data["name"],
"post_status"=>"publish",
"comment_status"=>"closed",
"ping_status"=>"closed",
"post_name"=>seo_string($data["name"]."_feed_".$data["id"]),
"post_modified"=>date("Y-m-d H:i:s"),
"post_modified_gmt"=>gmdate("Y-m-d H:i:s"),
"guid"=>"", //http://localhost/cms/wordpress-5.5.3/?post_type=wprss_feed&#038;p=27
"menu_order"=>0,
"post_type"=>"wprss_feed",
"comment_count"=>0);
$row=$db->db_selectOne($table_prefix."posts","*","ID>1");
if($row===false)
die("No post found");
foreach($row as $tit=>$val)
if($tit!="ID" && !isset($item[$tit]))
$item[$tit]=$val;
$db->db_insert($table_prefix."posts",$item);
$post_id=$db->last_insert_id();
$domain_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]";
$actual_link = $domain_link.$_SERVER["REQUEST_URI"];
$tab=explode("wp-admin",$actual_link);
$item_update=array("guid"=>$tab[0]."?post_type=wprss_feed&#038;p=".$post_id);
$db->db_update($table_prefix."posts",$item_update,"ID=".$post_id);
$url_feed=rssfeed__PLUGIN_URL."feed.php?feed=".$data["generated_url"];
$cats=array();
$cats_id=explode(",",$data["categories"]);
$cat_lists=array();
foreach($cats_id as $cat_id)
{
if(!isset($cat_lists[$cat_id]))
{
$cat=$db->db_selectOne($table_prefix."terms","term_id,name","term_id='".$cat_id."'");
if($cat===false)
continue;
$cat_lists[$cat_id]=$cat["name"];
}
$cats[]=array("id"=>$cat_id,"name"=>$cat_lists[$cat_id]);
}
$nb_cat=0;
$ftp_taxonomies_cat="";
$tot_cat=0;
if(sizeof($cats)>0)
{
$i=0;
foreach($cats as $category)
{
$ftp_taxonomies_cat.='i:'.$i.';s:'.strlen(addslashes($category["name"])).':"'.addslashes($category["name"]).'";';
$tot_cat++;
$i++;
}
}
if($_REQUEST["agr_id"]!=0)
{
$rows=$db->db_select($table_prefix."postmeta","meta_key,meta_value","post_id='".$_REQUEST["agr_id"]."'");
foreach($rows as $row)
$meta[$row["meta_key"]]=$row["meta_value"];
}
else
{
$meta=array('wprss_ftp_taxonomies'=>'a:1:{i:0;a:6:{s:8:"taxonomy";s:8:"category";s:5:"terms";a:0:{}s:4:"auto";s:5:"false";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}}',
'_edit_last'=>'1',
'_edit_lock'=>'1610986948:1',
'wprss_feed_is_updating'=>'',
'wprss_site_url'=>$data["url"],
'wprss_feed_image'=>'',
'wprss_ftp_post_type'=>'post',
'wprss_ftp_post_status'=>'publish',
'wprss_ftp_post_format'=>'standard',
'wprss_ftp_post_date'=>'original',
'wprss_ftp_comment_status'=>'true',
'wprss_ftp_force_full_content'=>'false',
'wprss_ftp_import_excerpt'=>'false',
'wprss_ftp_allow_embedded_content'=>'false',
'wprss_ftp_canonical_link'=>'true',
'wprss_ftp_post_taxonomy'=>'a:1:{i:0;s:8:"category";}',
'wprss_ftp_post_taxonomy_compare_method'=>'a:0:{i:0;s:3:"all";}',
'wprss_ftp_post_terms'=>'a:0:{i:0;a:2:{}}',
'wprss_ftp_def_author'=>'.',
'wprss_ftp_author_fallback_method'=>'existing',
'wprss_ftp_no_author_found'=>'fallback',
'wprss_ftp_fallback_author'=>'admin',
'wprss_ftp_save_images_locally'=>'true',
'wprss_ftp_save_all_image_sizes'=>'true',
'wprss_ftp_image_min_width'=>'80',
'wprss_ftp_image_min_height'=>'80',
'wprss_ftp_use_featured_image'=>'true',
'wprss_ftp_featured_image'=>'first',
'wprss_ftp_remove_ft_image'=>'false',
'wprss_ftp_must_have_ft_image'=>'false',
'wprss_ftp_singular_prepend'=>'false',
'wprss_ftp_singular_append'=>'false',
'wprss_ftp_word_limit_enabled'=>'general',
'wprss_ftp_trimming_type'=>'general',
'wprss_ftp_trimming_ellipsis'=>'false',
'wprss_ftp_powerpress_enabled'=>'false',
'wprss_ftp_disable_visual_editor'=>'false',
'wprss_url'=>"",
'wprss_limit'=>5,
'wprss_unique_titles'=>'',
'wprss_enclosure'=>'true',
'wprss_import_source'=>'false',
'feed_request_useragent'=>'',
'wprss_force_feed'=>'false',
'wprss_activate_feed'=>'',
'wprss_pause_feed'=>'',
'wprss_age_limit'=>'',
'wprss_age_unit'=>'days',
'wprss_update_interval'=>'global',
'wprss_state'=>'active',
'wprss_update_time'=>'',
'wprss_next_update'=>'1 mins',
'wprss_items_imported'=>'0');
if($ftp_taxonomies_cat)
{
$meta["wprss_ftp_taxonomies"]='a:1:{i:0;a:6:{s:8:"taxonomy";s:8:"category";s:5:"terms";a:'.$tot_cat.':{'.$ftp_taxonomies_cat.'}s:4:"auto";s:5:"false";s:14:"filter_subject";s:0:"";s:15:"filter_keywords";s:0:"";s:28:"post_taxonomy_compare_method";s:3:"all";}}';
$meta["wprss_ftp_post_terms"]='a:1:{i:0;a:'.$tot_cat.':{'.$ftp_taxonomies_cat.'}}';
}
}
$meta["wprss_limit"]=$data["nb_items"];
$meta["wprss_url"]=$url_feed;
foreach($meta as $tit=>$val)
{
$item=array("post_id"=>$post_id,"meta_key"=>$tit,"meta_value"=>$val);
$db->db_insert($table_prefix."postmeta",$item);
}
}
function get_list()
{
global $db;
require_once( 'admin/'.$_REQUEST["module"].'.php' );
die("");
}
function add_item()
{
global $db;
require_once( 'admin/'.$_REQUEST["module"].'_add.php' );
die("");
}
function add_item2()
{
$str=$_REQUEST["module"].'_add2';
$this->$str();
die("");
}
function get_feed_info($url)
{
require_once(libDirectory."curl.php");
require_once(libDirectory."curlManager.php");
$scraper=new curlManager();
$title=$desc="";
if($_REQUEST["type"]=="")
$_REQUEST["type"]="google";
switch($_REQUEST["type"])
{
case "facebook":$tab=explode(".com/",$_REQUEST["url"]);
if(!isset($tab[1]))
die("Error:url is not valid facebook page");
$_REQUEST["url"]="https://m.facebook.com/".$tab[1];
$content=delete_spaces($scraper->getContent($_REQUEST["url"]));
if(!preg_match('|<title>(.*?)</(.*?)name="description" content="(.*?)"|i', $content, $rowd))
die("Error: page url is not valid or not public");
$title=utf8_encode($rowd[1]);
$desc=utf8_encode($rowd[3]);break;
case "twitter":$tab=explode(".com/",$_REQUEST["url"]);
if(!isset($tab[1]))
die("Error:url is not valid twitter page");
$tab=explode("/",$tab[1]);
$tab=explode("?",$tab[0]);
$name=$tab[0];
$dict_aa = get_twitter_details($name);
if(!isset($dict_aa[0]["description"]))
die("can't find description please by sure that you anetr a valid public twitter url.<br> If the url ".$_REQUEST["url"]." is valid please try again ");
$title=xml_str_encode(utf8_encode(remove_emoji($dict_aa[0]["screen_name"])));
$desc=xml_str_encode(utf8_encode(remove_emoji($dict_aa[0]["description"])));
$_REQUEST["url"]="https://www.twitter.com/".$tab[0];
break;
}
return array("title"=>$title,"description"=>$desc);
}
function rss_feed_add2()
{
global $db;
if(empty(trim($_REQUEST["url"])))
die("Please enter url");
if (filter_var($_REQUEST["url"], FILTER_VALIDATE_URL) === false)
die("Please enter a valid url");
$infos=$this->get_feed_info($_REQUEST["url"]);
if(trim($_REQUEST["name"])=="")
$_REQUEST["name"]=$infos["title"];
$_REQUEST["title"]=$infos["title"];
if(trim($_REQUEST["description"])=="")
$_REQUEST["description"]=$infos["description"];
if(isset($_REQUEST["categories"]))
$cats=implode(",",get_included_categories($_REQUEST["categories"]));
else
$cats="";
$item=array('type'=>$_REQUEST["type"],'url'=>$_REQUEST["url"],'name'=>utf8_encode($_REQUEST["name"]),'often_check'=>$_REQUEST["often_check"],'nb_items'=>$_REQUEST["nb_items"],'nb_analyse'=>$_REQUEST["nb_analyse"],'description'=>utf8_encode($_REQUEST["description"]),'title'=>utf8_encode($_REQUEST["title"]),'categories'=>$cats,"domain"=>strtolower($_REQUEST["domain"]));
if($_REQUEST["id"])
{
$item["updated"]=time();
$db->db_update("rss_feed",$item,"id=".$_REQUEST["id"]);
}
else
{
$row=$db->db_selectOne("rss_feed","*","url='".$_REQUEST["url"]."'");
if($row!==false)
die("url already exists");
$item["created"]=time();
$item["updated"]=time();
$item["generated_url"]=uniqid();
$db->db_insert("rss_feed",$item);
}
die("done");
}
function import()
{
global $db;
$allowedExts = array("csv", "txt");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if( !in_array($extension, $allowedExts))
die("Only csv files are allowed");
if ($_FILES["file"]["error"] > 0)
die("Return Code: " . $_FILES["file"]["error"] . "<br>");
$i=0;
$tot=0;
$exist=0;
//feed,name,description,categories,frecuency,analyze,items
$fields=array("url",'name','description','categories','often_check','nb_analyse','nb_items','domain','type');
$nb=sizeof($fields);
if (($handle = fopen($_FILES["file"]["tmp_name"], "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$i++;
if($i==1)
continue;
$item=array();
for($j=0; $j<$nb;$j++)
{
$item[$fields[$j]]=$data[$j];
}
$row=$db->db_selectOne("rss_feed","*","url='".$item["url"]."'");
if($row!==false)
{
$exist++;
continue;
}
$item["title"]=$item["name"]=utf8_encode($item["name"]);
$item["description"]=utf8_encode($item["description"]);
$item["created"]=time();
$item["updated"]=time();
$item["generated_url"]=uniqid();
$db->db_insert("rss_feed",$item);
$tot++;
}
fclose($handle);
}
die("success:The file was successfully imported.<br> - New items: ".$tot."<br> - Existing items: ".$exist);
}
}
?>