conn = $db; } /** * List function * * Displays the list of messages with it's pertinent variables * */ function list( $year, $month, $last_update, $text ){ $sql = "SELECT P.ID, 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, 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' WHERE P.post_type = 'conferencias' 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 ); } /** * 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){ $sql = "SELECT P.ID, P.post_title AS title, P.post_content AS content, P.post_date AS creation_date, P.post_modified AS last_updated, P.guid, IFNULL(NULLIF(TIME_TO_SEC(MD.duration), '' ), 0) AS duration, MD.date, MD.activity AS no_activity, MD.country, MD.state, MD.city, PMA.meta_value AS thumbnail, P.post_name as slug FROM wp_posts AS 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.ID = '$id'"; 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_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_post_files($id){ global $wpdb; $sql = "SELECT MF.youtube, MF.livestream, MF.video, MF.audio, MF.audio_flac, MF.pdf, MF.pdf_simple FROM wp_messagefiles as MF WHERE MF.post_id = '$id'"; return $this->execute_sql( $sql ); } function title_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 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 = 'conferencias' AND P.post_status = 'publish' AND P.post_title LIKE('%$q%') OR MD.city LIKE('%$q%') OR MD.state 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 = 'conferencias' 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` = 'conferencias' 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, 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 = 'conferencias' AND P.post_status = 'publish' AND MD.country = '$c' ORDER BY MD.date DESC"; return $this->execute_sql($sql); } }