api/actividadeswp/v3/inc/actividad.php

660 lines
26 KiB
PHP

<?php
/**
* Main actividad class to handle all functions for actividades interaction for the API.
*
* This class uses the db.php files connection in PDO style and only returns SQL statements.
*
* @author XFATBoY (xfatboy@carpa.com)
* @since v1
*/
class Actividad{
private $conn;
private $table_name = "wp_posts";
public $id;
public $name;
public $description;
public $price;
public $category_id;
public $category_name;
public $created;
/**
* Main constructor
*
* Initializes with the db
*/
public function __construct($db){
$this->conn = $db;
}
/**
* Helper function to get all blogs and their languages
*/
function get_blog_by_locale($locale){
$r = '';
switch($locale){
case "fr_FR":
case "fr":
$r = "wp_4_";
break;
case "en":
case "en_US":
$r = "wp_2_";
break;
case "pt":
case "pt-br":
case "pt_br":
case "pt_BR":
$r = "wp_3_";
break;
case "es":
case "es_ES":
default:
$r = "wp_";
break;
}
return $r;
}
function translation_slug( $locale, $id ){
$sql = "SELECT
P.post_name as slug
FROM wp_posts P
WHERE P.ID = $id";
return $this->execute_sql( $sql );
}
function translation_list( $year, $month, $last_update, $text, $locale, $termid="ultimas", $all=false, $history=false, $limit=16 ){ //Default last updated
//Check locale and change accordingly to the right DB prefix for that locale
$sql = "SELECT
P.ID,
(SELECT
tt2.description AS translationmeta
FROM wp_posts P2
LEFT JOIN wp_term_relationships tr ON tr.object_id = P2.ID
LEFT JOIN wp_term_relationships tr2 ON tr2.object_id = P2.ID
LEFT JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy = 'language'
INNER JOIN wp_term_taxonomy tt2 ON tr2.term_taxonomy_id = tt2.term_taxonomy_id AND tt2.taxonomy = 'post_translations'
LEFT JOIN wp_terms t ON t.term_id = tr.term_taxonomy_id
WHERE P2.ID=P.ID AND t.slug = '$locale') AS translationmeta,
P.post_title AS title,
P.post_date AS date,
P.post_modified AS modified,
P.post_name AS slug,
WEEKDAY(P.post_date) AS dia,
PMM.meta_value AS mensaje_id,
PMA.meta_value AS mensaje_json
FROM wp_posts P
LEFT JOIN wp_postmeta PMA ON PMA.post_id = P.ID AND PMA.meta_key = 'mensaje_json'
LEFT JOIN wp_postmeta PMM ON PMM.post_id = P.ID AND PMM.meta_key = 'mensaje'
INNER JOIN wp_terms T ON T.slug = '$locale'
INNER JOIN wp_term_relationships TR ON TR.object_id = P.ID AND TR.term_taxonomy_id = T.term_id
WHERE P.post_status = 'publish'
AND P.post_type = 'actividades'";
if($history){
$sql .= "
AND PMM.meta_value IS NOT NULL
AND PMM.meta_value != ''
AND PMA.meta_value IS NOT NULL
AND PMA.meta_value != ''";
}
if($year!=''){
$sql .= " AND YEAR(P.post_date) = '$year'";
if($month!=''){
$sql .= " AND MONTH(P.post_date) = '$month'";
}
if($last_update!=''){
$sql .= " AND UNIX_TIMESTAMP(P.post_modified) > ". $last_update;
}
$sql .= " ORDER BY P.post_date DESC";
} else {
$sql .= " ORDER BY P.post_date DESC";
if(!$all){
if(!$limit){
$sql .= " LIMIT 16";
} else {
$sql .= " LIMIT " . $limit;
}
}
}
return $this->execute_sql( $sql );
}
function activity_meta($id){
$sql = "SELECT
PML.meta_value AS lugar,
PMC.meta_value AS city,
PMS.meta_value AS state,
PMCO.meta_value AS country,
PMT2.meta_value AS thumbnail,
PMN.meta_value AS numero_de_estudio_biblico,
PMA.meta_value AS actividad,
PMG.meta_value AS gallery,
PMY.meta_value AS youtube,
#PMU.meta_value AS url_del_mensaje,
PMI.meta_value AS mensaje,
PMJ.meta_value AS mensaje_json,
PMR.meta_value AS 'related_content',
PMRC.meta_value AS 'related_content_count',
PMCK.meta_value AS 'revisado'
FROM wp_posts P
LEFT JOIN wp_postmeta PML ON P.ID = PML.post_id AND PML.meta_key = 'lugar'
LEFT JOIN wp_postmeta PMC ON P.ID = PMC.post_id AND PMC.meta_key = 'city'
LEFT JOIN wp_postmeta PMS ON P.ID = PMS.post_id AND PMS.meta_key = 'state'
LEFT JOIN wp_postmeta PMCO ON P.ID = PMCO.post_id AND PMCO.meta_key = 'country'
LEFT JOIN wp_postmeta PMA ON P.ID = PMA.post_id AND PMA.meta_key = 'actividad'
LEFT JOIN wp_postmeta PMN ON P.ID = PMN.post_id AND PMN.meta_key = 'numero_de_estudio_biblico'
LEFT JOIN wp_postmeta PMG ON P.ID = PMG.post_id AND PMG.meta_key = 'gallery'
LEFT JOIN wp_postmeta PMY ON P.ID = PMY.post_id AND PMY.meta_key = 'youtube'
#LEFT JOIN wp_postmeta PMU ON P.ID = PMU.post_id AND PMU.meta_key = 'url_del_mensaje'
LEFT JOIN wp_postmeta PMI ON P.ID = PMI.post_id AND PMI.meta_key = 'mensaje'
LEFT JOIN wp_postmeta PMJ ON P.ID = PMJ.post_id AND PMJ.meta_key = 'mensaje_json'
LEFT JOIN wp_postmeta PMT ON P.ID = PMT.post_id AND PMT.meta_key = '_thumbnail_id'
LEFT JOIN wp_postmeta PMT2 ON PMT.meta_value = PMT2.post_id AND PMT2.meta_key = '_wp_attached_file'
LEFT JOIN wp_postmeta PMR ON P.ID = PMR.post_id AND PMR.meta_key = 'usar_contenido_relacionado'
LEFT JOIN wp_postmeta PMRC ON P.ID = PMRC.post_id AND PMRC.meta_key = 'contenido_relacionado'
LEFT JOIN wp_postmeta PMCK ON P.ID = PMCK.post_id AND PMCK.meta_key = 'revisado'
WHERE P.post_type = 'actividades'
AND P.post_status = 'publish'
AND P.ID = ".$id;
$data = $this->execute_sql( $sql );
$response = $data->fetch(PDO::FETCH_ASSOC);
return $response;
}
/**
* List function
*
* Displays the list of messages with it's pertinent variables
*
*/
function activities_list( $year, $month, $last_update, $text, $locale ){
$sql = "SELECT
P.ID,
(SELECT
tt2.description AS translationmeta
FROM wp_posts P2
LEFT JOIN wp_term_relationships tr ON tr.object_id = P2.ID
LEFT JOIN wp_term_relationships tr2 ON tr2.object_id = P2.ID
LEFT JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy = 'language'
INNER JOIN wp_term_taxonomy tt2 ON tr2.term_taxonomy_id = tt2.term_taxonomy_id AND tt2.taxonomy = 'post_translations'
LEFT JOIN wp_terms t ON t.term_id = tr.term_taxonomy_id
WHERE P2.ID='$id' AND t.slug = '$locale') AS translationmeta,
P.post_title AS title,
P.post_date AS creation_date,
P.post_modified as last_updated,";
if($text){
$sql .= "P.post_content as content,";
}
$sql .= "LENGTH(P.post_content) as bodylength,
IFNULL(NULLIF(TIME_TO_SEC(MD.duration), '' ), 0) AS duration,
MD.date,
MD.activity AS no_activity,
MD.city,
MD.country,
MD.state,
PMA.meta_value AS thumbnail,
PMAS.meta_value AS meta,
#O.option_value AS translationmeta,
P.post_name as slug
FROM wp_posts P
LEFT JOIN wp_messagedata MD ON P.id = MD.post_id
LEFT JOIN wp_postmeta PM ON PM.post_id = P.ID AND PM.meta_key = '_thumbnail_id'
LEFT JOIN wp_postmeta PMA ON PM.meta_value = PMA.post_id AND PMA.meta_key = '_wp_attached_file'
LEFT JOIN wp_postmeta PMAS ON PM.meta_value = PMAS.post_id AND PMAS.meta_key = '_wp_attachment_metadata'
#LEFT JOIN wp_options O ON O.option_name = CONCAT('msls_',P.ID)
WHERE P.post_type = 'actividades'
AND P.post_status = 'publish'";
if($year!=''){
$sql .= " AND YEAR(MD.date) = '$year'";
}
if($month!=''){
$sql .= " AND MONTH(MD.date) = '$month'";
}
if($last_update!=''){
$sql .= " AND UNIX_TIMESTAMP(P.post_modified) > ". $last_update;
}
$sql .= " ORDER BY P.post_date DESC";
return $this->execute_sql( $sql );
}
/**
* Summary function
*/
function summary($id,$locale){
$sql = "SELECT
P.ID,
P.post_title AS title,
P.post_date AS creation_date,
P.post_name AS slug,
P.post_modified AS last_updated,
PMA.meta_value AS activity,
PML.meta_value AS lugar,
PMC.meta_value AS city,
PMS.meta_value AS state,
PMCO.meta_value AS country,
PMN.meta_value AS bible_study
FROM wp_posts P
LEFT JOIN wp_postmeta PMA ON PMA.post_id = P.ID AND PMA.meta_key = 'actividad'
LEFT JOIN wp_postmeta PML ON PML.post_id = P.ID AND PML.meta_key = 'lugar'
LEFT JOIN wp_postmeta PMC ON PMC.post_id = P.ID AND PMC.meta_key = 'city'
LEFT JOIN wp_postmeta PMS ON PMS.post_id = P.ID AND PMS.meta_key = 'state'
LEFT JOIN wp_postmeta PMCO ON PMCO.post_id = P.ID AND PMCO.meta_key = 'country'
LEFT JOIN wp_postmeta PMN ON PMN.post_id = P.ID AND PMN.meta_key = 'numero_de_estudio_biblico'
LEFT JOIN wp_postmeta PMPID ON PMPID.meta_key = 'mensaje' AND PMPID.meta_value = $id
WHERE P.ID = PMPID.post_id
AND P.post_status = 'publish'
AND P.post_type = 'actividades'";
return $this->execute_sql( $sql );
}
/**
* Detail function
*
* Given an ID returns the message with all details
*
* @param id Int id of the message whose details want to be found.
*/
function detail($id,$locale){
$sql = "SELECT
P.ID,
(SELECT
tt2.description AS translationmeta
FROM wp_posts P2
LEFT JOIN wp_term_relationships tr ON tr.object_id = P2.ID
LEFT JOIN wp_term_relationships tr2 ON tr2.object_id = P2.ID
LEFT JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy = 'language'
INNER JOIN wp_term_taxonomy tt2 ON tr2.term_taxonomy_id = tt2.term_taxonomy_id AND tt2.taxonomy = 'post_translations'
LEFT JOIN wp_terms t ON t.term_id = tr.term_taxonomy_id
WHERE P2.ID='$id' AND t.slug = '$locale') AS translationmeta,
P.post_title AS title,
P.post_content AS content,
P.post_date AS creation_date,
PMA.meta_value AS mensaje,
P.post_name AS slug,
P.post_modified AS last_updated
FROM wp_posts P
LEFT JOIN wp_postmeta PMA ON PMA.post_id = P.ID AND PMA.meta_key = 'mensaje'
WHERE P.ID = '$id' LIMIT 1";
return $this->execute_sql( $sql );
}
/**
* Slug function
*
* Given a slug, returns the message with all details
*
* @param slug String Slug of the message whose details want to be found
*/
function detailBySlug($slug,$locale){
//Check locale and change accordingly to the right DB prefix for that locale
$prefix = $this->get_blog_by_locale( $locale );
$sql = "SELECT
P.ID,
(SELECT
tt2.description AS translationmeta
FROM wp_posts P2
LEFT JOIN wp_term_relationships tr ON tr.object_id = P2.ID
LEFT JOIN wp_term_relationships tr2 ON tr2.object_id = P2.ID
LEFT JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy = 'language'
INNER JOIN wp_term_taxonomy tt2 ON tr2.term_taxonomy_id = tt2.term_taxonomy_id AND tt2.taxonomy = 'post_translations'
LEFT JOIN wp_terms t ON t.term_id = tr.term_taxonomy_id
WHERE P2.post_name='$slug' AND t.slug = '$locale') AS translationmeta,
P.post_title AS title,
P.post_content AS content,
P.post_date AS creation_date,
P.post_name AS slug,
PMA.meta_value AS mensaje,
P.post_modified AS last_updated
FROM wp_posts P
LEFT JOIN wp_postmeta PMA ON PMA.post_id = P.ID AND PMA.meta_key = 'mensaje'
WHERE P.post_name='$slug'";
return $this->execute_sql( $sql );
}
/**
* Last update function
*
* Returns the last updated imtestamp for the message passed in via the @id
*
* @param id Int id for whom the last update should be found
*/
function last_update($id){
$sql = "SELECT
P.post_modified AS last_updated
FROM wp_posts P
WHERE P.ID = '$id'";
return $this->execute_sql( $sql );
}
/**
* Execute SQL function
*
* Executes a generic SQL statement and passes back the result.
*
* @param string sql SQl statement to be executed
* @return
*/
function execute_sql( $sql ){
$stmt = $this->conn->prepare($sql);
$stmt->execute();
return $stmt;
}
/**
* Relevant conferences function
*
* Get all relevant conferences and return
*/
function relevant_conferences(){
$sql = "SELECT
option_value
FROM wp_options
where option_name = 'options_conference'";
return $this->execute_sql( $sql );
}
function get_post_source($trid){
$sql = "SELECT
T.element_id AS post_id
FROM wp_icl_translations AS T
WHERE T.trid = '$trid'
AND T.language_code = 'es'";
return $this->execute_sql( $sql );
}
function get_post_interventions($id){
$sql = "SELECT
PM.meta_value
FROM wp_postmeta AS PM
WHERE PM.post_id = '$id'
AND PM.meta_key = 'intervenciones'";
return $this->execute_sql( $sql );
}
function get_interventions($id,$count){
$interventions = [];
for($i=0;$i<$count;$i++){
$sql = "SELECT
PMT.meta_value AS titulo,
PMF.meta_value AS fecha,
PML.meta_value AS lugar,
PMA.meta_value AS autor,
PMC.meta_value AS texto
FROM wp_postmeta AS PMT
LEFT JOIN wp_postmeta AS PMF ON PMF.post_id = '$id' AND PMF.meta_key = 'intervenciones_".$i."_fecha'
LEFT JOIN wp_postmeta AS PML ON PML.post_id = '$id' AND PML.meta_key = 'intervenciones_".$i."_lugar'
LEFT JOIN wp_postmeta AS PMA ON PMA.post_id = '$id' AND PMA.meta_key = 'intervenciones_".$i."_autor'
LEFT JOIN wp_postmeta AS PMC ON PMC.post_id = '$id' AND PMC.meta_key = 'intervenciones_".$i."_texto'
WHERE PMT.post_id = '$id'
AND PMT.meta_key = 'intervenciones_".$i."_titulo' ";
$data = $this->execute_sql( $sql );
$response = $data->fetch(PDO::FETCH_ASSOC);
//$interventions[$count] = $response;
array_push($interventions,$response);
}
return $interventions;
}
function get_related_content($id,$count){
$related = [];
for($i=0;$i<$count;$i++){
$sql = "SELECT
PM.meta_value AS conference_url
FROM wp_postmeta AS PM
WHERE PM.post_id = '$id'
AND PM.meta_key = 'contenido_relacionado_".$i."_conference_url'";
$data = $this->execute_sql( $sql );
$response = $data->fetch(PDO::FETCH_ASSOC);
array_push($related,$response);
}
return $related;
}
function get_post_language($id){
$sql = "SELECT
T.language_code,
T.trid
FROM wp_icl_translations AS T
WHERE T.element_id = '$id'
AND T.element_type = 'post_message'";
return $this->execute_sql( $sql );
}
function get_post_metadata($id){
$sql = "SELECT
IFNULL(NULLIF(TIME_TO_SEC(MD.duration), '' ), 0) AS duration,
MD.country,
MD.state,
MD.city AS city,
MD.activity AS no_activity
FROM wp_messagedata AS MD
WHERE post_id = '$id'";
return $this->execute_sql( $sql );
}
function get_activity_files($id){
$sql = "SELECT
PMAR.meta_value AS use_files,
PMNV.meta_value AS videos,
PMNA.meta_value AS audios,
PMNT.meta_value AS textos,
PMNE.meta_value AS enlaces
FROM wp_posts P
LEFT JOIN wp_postmeta PMAR ON P.ID = PMAR.post_id AND PMAR.meta_key = 'usar_archivos'
LEFT JOIN wp_postmeta PMNV ON P.ID = PMNV.post_id AND PMNV.meta_key = 'videos'
LEFT JOIN wp_postmeta PMNA ON P.ID = PMNA.post_id AND PMNA.meta_key = 'audios'
LEFT JOIN wp_postmeta PMNT ON P.ID = PMNT.post_id AND PMNT.meta_key = 'textos'
LEFT JOIN wp_postmeta PMNE ON P.ID = PMNE.post_id AND PMNE.meta_key = 'enlaces'
WHERE P.post_type = 'actividades'
AND P.post_status = 'publish'
AND P.ID = ".$id;
return $this->execute_sql( $sql );
}
function get_files( $id, $type, $qty ){
$t = [];
for($x=0;$x<$qty;$x++){
$fileSql = $this->get_file_sql($id, $type, $x);
$data = $this->execute_sql( $fileSql );
$response = $data->fetch(PDO::FETCH_ASSOC);
array_push( $t, $response );
}
return $t;
}
function get_file_sql( $id, $type, $idx){
if($type == 'enlaces'){
$fname = 'enlace';
} else {
$fname = 'archivo';
}
$sql = "SELECT
PMAT.meta_value as title,
PMAD.meta_value as description,
PMAF.meta_value as link,
PF.guid AS file
FROM wp_posts P
LEFT JOIN wp_postmeta PMAT ON PMAT.post_id = P.ID AND PMAT.meta_key = '".$type."_".$idx."_titulo'
LEFT JOIN wp_postmeta PMAD ON PMAD.post_id = P.ID AND PMAD.meta_key = '".$type."_".$idx."_descripcion'
LEFT JOIN wp_postmeta PMAF ON PMAF.post_id = P.ID AND PMAF.meta_key = '".$type."_".$idx."_".$fname."'
LEFT JOIN wp_posts PF ON PF.ID = PMAF.meta_value
WHERE P.ID = $id";
return $sql;
}
function get_post_file($id,$locale){
//Check locale and change accordingly to the right DB prefix for that locale
$prefix = $this->get_blog_by_locale( $locale );
$sql = "SELECT
P.guid as url
FROM ".$prefix."posts P
WHERE P.ID = '$id'";
return $this->execute_sql( $sql );
}
function title_search($q,$locale){
//Check locale and change accordingly to the right DB prefix for that locale
$prefix = $this->get_blog_by_locale( $locale );
$sql = "SELECT
P.ID,
P.post_title AS title,
P.post_date AS creation_date,
P.post_modified as last_updated,
O.option_value AS translationmeta,
P.post_name as slug
FROM ".$prefix."posts AS P
LEFT JOIN ".$prefix."options O ON O.option_name = CONCAT('msls_',P.ID)
WHERE P.post_type = 'actividades'
AND P.post_status = 'publish'
AND P.post_title LIKE('%$q%')";
return $this->execute_sql($sql);
}
function content_search($q){
$sql = "SELECT
P.ID,
P.post_title AS title,
P.post_date AS creation_date,
P.post_modified as last_updated,
IFNULL(NULLIF(TIME_TO_SEC(MD.duration), '' ), 0) AS duration,
MD.date,
MD.activity AS no_activity,
MD.city,
MD.country,
MD.state,
PMA.meta_value AS thumbnail,
P.post_name as slug,
MATCH(P.post_content) AGAINST ('$q' IN NATURAL LANGUAGE MODE) as score,
SUBSTRING(P.post_content, LOCATE('$q', P.post_content) - 20, 300 + LENGTH('$q') + 300) as excerpt
FROM wp_posts P
LEFT JOIN wp_messagedata MD ON P.id = MD.post_id
LEFT JOIN wp_postmeta PM ON PM.post_id = P.ID AND PM.meta_key = '_thumbnail_id'
LEFT JOIN wp_postmeta PMA ON PM.meta_value = PMA.post_id AND PMA.meta_key = '_wp_attached_file'
WHERE P.post_type = 'actividades'
AND P.post_status = 'publish'
AND MATCH(P.post_content) AGAINST ('$q' IN NATURAL LANGUAGE MODE)
ORDER BY score DESC";
return $this->execute_sql($sql);
}
function country_summary(){
$sql = "SELECT
count( P.ID ) as total,
MC.country_name as country,
MC.country_code as country_code
FROM `wp_posts` P
INNER JOIN wp_messagedata MD ON MD.post_id = P.ID
INNER JOIN wp_messagecountries MC ON MC.country_code = MD.country
WHERE `post_status` = 'publish'
AND `post_type` = 'actividades'
AND MC.language_code = 'es'
GROUP BY country_code
ORDER BY country;";
return $this->execute_sql($sql);
}
function country_list($c){
$sql = "SELECT
P.ID,
P.post_title AS title,
P.post_date AS creation_date,
P.post_modified as last_updated,
LENGTH(P.post_content) as bodylength,
IFNULL(NULLIF(TIME_TO_SEC(MD.duration), '' ), 0) AS duration,
MD.date,
MD.activity AS no_activity,
MD.city,
MD.country,
MD.state,
PMA.meta_value AS thumbnail,
P.post_name as slug
FROM wp_posts P
LEFT JOIN wp_messagedata MD ON P.id = MD.post_id
LEFT JOIN wp_postmeta PM ON PM.post_id = P.ID AND PM.meta_key = '_thumbnail_id'
LEFT JOIN wp_postmeta PMA ON PM.meta_value = PMA.post_id AND PMA.meta_key = '_wp_attached_file'
WHERE P.post_type = 'actividades'
AND P.post_status = 'publish'
AND MD.country = '$c'
ORDER BY MD.date DESC";
return $this->execute_sql($sql);
}
function year_list( $locale ){
$sql = "SELECT
COUNT(P.ID) as total,
YEAR(P.post_date) as year,
MONTH(P.post_date) as month
FROM wp_posts P
INNER JOIN wp_terms T ON T.slug = '$locale'
INNER JOIN wp_term_relationships TR ON TR.object_id = P.ID AND TR.term_taxonomy_id = T.term_id
WHERE P.post_type = 'actividades' AND P.post_status = 'publish'
GROUP BY YEAR(P.post_date), MONTH(P.post_date)
ORDER BY YEAR(P.post_date) DESC, MONTH(P.post_date) DESC;";
return $this->execute_sql($sql);
}
function year_list_history( $locale ){
$sql = "SELECT
COUNT(P.ID) as total,
YEAR(P.post_date) as year,
MONTH(P.post_date) as month
FROM wp_posts P
LEFT JOIN wp_postmeta PM ON PM.post_id = P.ID AND PM.meta_key = 'mensaje_json'
INNER JOIN wp_terms T ON T.slug = 'es'
INNER JOIN wp_term_relationships TR ON TR.object_id = P.ID AND TR.term_taxonomy_id = T.term_id
WHERE P.post_type = 'actividades'
AND P.post_status = 'publish'
AND PM.meta_value IS NOT NULL
AND PM.meta_value != ''
GROUP BY YEAR(P.post_date), MONTH(P.post_date)
ORDER BY YEAR(P.post_date) DESC, MONTH(P.post_date) DESC;";
return $this->execute_sql($sql);
}
function lgccctv_list(){
$sql = "SELECT P2.ID,
P2.post_date AS creation_date,
P2.post_title AS title,
PMT.meta_value AS titulo,
PMC.meta_value AS city,
PMS.meta_value AS state,
PMCO.meta_value AS country,
PMN.meta_value AS numero_de_estudio_biblico,
PMA.meta_value AS actividad
FROM wp_posts P2
LEFT JOIN wp_term_relationships tr ON tr.object_id = P2.ID
LEFT JOIN wp_term_relationships tr2 ON tr2.object_id = P2.ID
LEFT JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id AND tt.taxonomy = 'language'
INNER JOIN wp_term_taxonomy tt2 ON tr2.term_taxonomy_id = tt2.term_taxonomy_id AND tt2.taxonomy = 'post_translations'
LEFT JOIN wp_terms t ON t.term_id = tr.term_taxonomy_id
LEFT JOIN wp_postmeta PMC ON P2.ID = PMC.post_id AND PMC.meta_key = 'city'
LEFT JOIN wp_postmeta PMS ON P2.ID = PMS.post_id AND PMS.meta_key = 'state'
LEFT JOIN wp_postmeta PMCO ON P2.ID = PMCO.post_id AND PMCO.meta_key = 'country'
LEFT JOIN wp_postmeta PMA ON P2.ID = PMA.post_id AND PMA.meta_key = 'actividad'
LEFT JOIN wp_postmeta PMN ON P2.ID = PMN.post_id AND PMN.meta_key = 'numero_de_estudio_biblico'
LEFT JOIN wp_postmeta PMT ON P2.ID = PMT.post_id AND PMT.meta_key = 'intervenciones_0_titulo'
WHERE t.slug = 'es'
AND P2.post_type = 'actividades'
AND P2.post_status = 'publish'
order by P2.post_date ASC";
return $this->execute_sql( $sql );
}
}