* Get Joined DB * @param string requesting * @param array site_ids */
(
$requesting, $sites = [])
| 284 | * @param array site_ids |
| 285 | */ |
| 286 | public static function get_joined_db( |
| 287 | $requesting, $sites = []){ |
| 288 | |
| 289 | // TODO: Add "WHERE" with site id, so that we only equalify active site alerts. |
| 290 | |
| 291 | // Set conditions based on type. |
| 292 | if($requesting == 'equalified_alerts'){ |
| 293 | $table1 = 'alerts'; |
| 294 | $table2 = 'queued_alerts'; |
| 295 | $selected_columns = "DISTINCT $table1.id"; |
| 296 | }elseif($requesting == 'new_alerts'){ |
| 297 | $table1 = 'queued_alerts'; |
| 298 | $table2 = 'alerts'; |
| 299 | $selected_columns = "DISTINCT $table1.id, "; |
| 300 | $selected_columns.= "$table1.url, $table1.message, "; |
| 301 | $selected_columns.= "$table1.status, $table1.site_id, "; |
| 302 | $selected_columns.= "$table1.source, $table1.tags, "; |
| 303 | $selected_columns.= "$table1.more_info, $table1.more_info"; |
| 304 | } |
| 305 | |
| 306 | // SQL. |
| 307 | $sql = "SELECT $selected_columns FROM $table1 "; |
| 308 | $sql.= "LEFT JOIN $table2 "; |
| 309 | $sql.= "ON $table1.url=$table2.url "; |
| 310 | $sql.= "AND $table1.message=$table2.message "; |
| 311 | $sql.= "AND $table1.site_id=$table2.site_id "; |
| 312 | $sql.= "AND $table1.source=$table2.source "; |
| 313 | $sql.= "WHERE $table2.id IS NULL AND $table1.archived = 0 "; |
| 314 | if(!empty($sites)){ |
| 315 | foreach($sites as $site){ |
| 316 | $sql.= "AND $table1.site_id = $site->id "; |
| 317 | } |
| 318 | } |
| 319 | $params = array(); |
| 320 | |
| 321 | // Query |
| 322 | $result = self::query($sql, $params, true); |
| 323 | |
| 324 | // Result |
| 325 | $content = []; |
| 326 | if($result->num_rows > 0){ |
| 327 | while($row = $result->fetch_object()){ |
| 328 | $content[] = $row; |
| 329 | } |
| 330 | } |
| 331 | return $content; |
| 332 | |
| 333 | } |
| 334 | |
| 335 | /** |
| 336 | * Add DB Column |