0) ? $pageRecord : 100; if ($encoding_queue_id) { $dataParams = [$encoding_queue_id]; switch ($type) { case 'new': $status_clause = ' AND eqd.status = "new"'; break; case 'error': $status_clause = ' AND eqd.status IN ("image_missing","audio_missing","incorrect_audio_count","metadata_missing","metadata_error","audio_missing_for_delivery","image_missing_for_delivery","incorrect_audio_count_for_delivery","delivery_failure","system_error","audio_encoding_error","image_encoding_error","system_cancelled","video_missing","video_encoding_error","video_missing_for_delivery")'; break; case 'wait': switch ($subtype) { case "ready_to_encode": $status_clause = ' AND eqd.status = ?'; $dataParams[] = $subtype; break; case "ready_to_deliver": case "encoded": case "queued_for_delivery": $status_clause = ' AND eqd.status IN ("encoded","queued_for_delivery","ready_to_deliver")'; break; default: $status_clause = ' AND eqd.status IN ("ready_to_encode","encoded","queued_for_delivery","ready_to_deliver")'; } break; case 'process': switch ($subtype) { case "encoding": case "delivering": $status_clause = ' AND eqd.status = ?'; $dataParams[] = $subtype; break; default: $status_clause = ' AND eqd.status IN ("encoding","delivering")'; } break; case 'complete': $status_clause = ' AND eqd.status = "delivered"'; break; case 'cancelled': $status_clause = ' AND eqd.status IN ("cancelled", "ineligible")'; break; default: $status_clause = ' AND eqd.status = ""'; } $whereClause = 'eq.encoding_queue_id = ?' . $status_clause; } else { $dataParams = []; $search_criteria = array(); $whereClause = ''; /** see if we need to now check track types in the report by what they selected from contains_only dropdown */ if ((empty($contains_only)) || (!empty($contains_only) && count($contains_only) == 3)) { $track_check = false; } else { $track_check = true; } if ($encoding_order_id) { $whereClause .= ' AND eq.encoding_order_id = ?'; $dataParams[] = $encoding_order_id; $search_criteria[$criteria_counter]["name"] = "encoding_order_id"; $search_criteria[$criteria_counter]["value"] = $encoding_order_id; $criteria_counter++; } if ($err_log) { $whereClause .= ' AND eqd.error_log LIKE ?'; $dataParams[] = '%' . $err_log . '%'; $search_criteria[$criteria_counter]["name"] = "encoding_order_id"; $search_criteria[$criteria_counter]["value"] = $encoding_order_id; $criteria_counter++; } if ($encoder) { $whereClause .= ' AND eq.encoder_id = ?'; $dataParams[] = $encoder; $search_criteria[$criteria_counter]["name"] = "encoder"; $search_criteria[$criteria_counter]["value"] = $encoder; $criteria_counter++; } if (!empty($dd_status)) { $status_list = array(); $search_criteria[$criteria_counter]["name"] = "status[]"; $search_criteria[$criteria_counter]["value"] = implode(',', $dd_status); $criteria_counter++; } if ($eo_priority) { $whereClause .= ' AND eq.priority = ?'; $dataParams[] = $eo_priority; $search_criteria[$criteria_counter]["name"] = "eo_priority"; $search_criteria[$criteria_counter]["value"] = $eo_priority; $criteria_counter++; } if ($upcs) { $upcs_arr = array(); $upcs = trim($upcs, "\n"); $upcs = html_entity_decode($upcs); $upcs = str_replace("\r", '', $upcs); $upcs_arr = explode("\n", $upcs); $orClause = array(); if (count($upcs_arr)) { foreach ($upcs_arr as $v) { $v = str_pad($v, 12, 0, STR_PAD_LEFT); if (checkUPC($v)) { $orClause[] = 'eqd.upc = ?'; $dataParams[] = $v; } } if (count($orClause)) { $whereClause .= ' AND ( ' .implode(' OR ', $orClause) . ')'; } else { $whereClause .= ' AND 1=0 '; } $search_criteria[$criteria_counter]["name"] = "upcs[]"; $search_criteria[$criteria_counter]["value"] = implode(',', $upcs_arr); $criteria_counter++; } } if ($hd_dd_dms) { $whereClause .= ' AND eqd.dms_master_master_id IN ( ' . implode(',', array_fill(0, count($hd_dd_dms), '?')) . ')'; foreach ($hd_dd_dms as $key => $val) { $dataParams[] = $val; } $search_criteria[$criteria_counter]["name"] = "hd_dd_dms[]"; $search_criteria[$criteria_counter]["value"] = implode(',', $hd_dd_dms); $criteria_counter++; } if ($from_encoding_started && !empty(strtotime($from_encoding_started))) { $whereClause .= ' AND date(eqd.encoding_started) >= ?'; $dataParams[] = $from_encoding_started; $search_criteria[$criteria_counter]["name"] = "from_encoding_started"; $search_criteria[$criteria_counter]["value"] = $from_encoding_started; $criteria_counter++; } if ($to_encoding_started && !empty(strtotime($to_encoding_started))) { $whereClause .= ' AND date(eqd.encoding_started) <= ?'; $dataParams[] = $to_encoding_started; $search_criteria[$criteria_counter]["name"] = "to_encoding_started"; $search_criteria[$criteria_counter]["value"] = $to_encoding_started; $criteria_counter++; } if ($from_encoding_ended && !empty(strtotime($from_encoding_ended))) { $whereClause .= ' AND date(eqd.encoding_ended) >= ?'; $dataParams[] = $from_encoding_ended; $search_criteria[$criteria_counter]["name"] = "from_encoding_ended"; $search_criteria[$criteria_counter]["value"] = $from_encoding_ended; $criteria_counter++; } if ($to_encoding_ended && !empty(strtotime($to_encoding_ended))) { $whereClause .= ' AND date(eqd.encoding_ended) <= ?'; $dataParams[] = $to_encoding_ended; $search_criteria[$criteria_counter]["name"] = "to_encoding_ended"; $search_criteria[$criteria_counter]["value"] = $to_encoding_ended; $criteria_counter++; } if ($from_delivery_started && !empty(strtotime($from_delivery_started))) { $whereClause .= ' AND date(eqd.delivery_started) >= ?'; $dataParams[] = $from_delivery_started; $search_criteria[$criteria_counter]["name"] = "from_delivery_started"; $search_criteria[$criteria_counter]["value"] = $from_delivery_started; $criteria_counter++; } if ($to_delivery_started && !empty(strtotime($to_delivery_started))) { $whereClause .= ' AND date(eqd.delivery_started) <= ?'; $dataParams[] = $to_delivery_started; $search_criteria[$criteria_counter]["name"] = "to_delivery_started"; $search_criteria[$criteria_counter]["value"] = $to_delivery_started; $criteria_counter++; } if ($from_delivery_ended && !empty(strtotime($from_delivery_ended))) { $whereClause .= ' AND date(eqd.delivery_ended) >= ?'; $dataParams[] = $from_delivery_ended; $search_criteria[$criteria_counter]["name"] = "from_delivery_ended"; $search_criteria[$criteria_counter]["value"] = $from_delivery_ended; $criteria_counter++; } if ($to_delivery_ended && !empty(strtotime($to_delivery_ended))) { $whereClause .= ' AND date(eqd.delivery_ended) <= ?'; $dataParams[] = $to_delivery_ended; $search_criteria[$criteria_counter]["name"] = "to_delivery_ended"; $search_criteria[$criteria_counter]["value"] = $to_delivery_ended; $criteria_counter++; } if (is_array($error_types) and count($error_types)) { $status_list = array(); $tmpWhereClause = ''; foreach ($error_types as $error_type) { if ($error_type == 'encoding_stuck') { $tmpWhereClause .= ' OR ( eqd.status = "encoding" AND eqd.encoding_started < NOW() - INTERVAL 2 HOUR)'; } elseif ($error_type == 'delivering_stuck') { $tmpWhereClause .= ' OR ( eqd.status = "delivering" AND eqd.delivery_started < NOW() - INTERVAL 2 HOUR)'; } else { $status_list[] = $error_type; } } $status_list = array_unique($status_list); $whereClause .= ' AND (0'; if (count($status_list) > 0) { $whereClause .= ' OR (eqd.status IN (' . implode(',', array_fill(0, count($status_list), '?')) . '))'; foreach ($status_list as $key => $val) { $dataParams[] = $val; } } if ($tmpWhereClause != '') { $whereClause .= $tmpWhereClause; } $whereClause .= ')'; $search_criteria[$criteria_counter]["name"] = "error_types[]"; $search_criteria[$criteria_counter]["value"] = implode(',', $error_types); $criteria_counter++; } if (isset($mkt_priority) && !empty($mkt_priority)) { if (in_array($mkt_priority, array('a','b'))) { //get upcs for given priority: $mkt_q = 'SELECT upc FROM mkt_priority WHERE priority = ? GROUP BY upc'; $stmt = $artDb->getMysqlConnection()->prepare($mkt_q); if (!$stmt->execute([$mkt_priority])) { show_pdo_error($mkt_q, $stmt); } $mkt_upcs= array(); foreach ($stmt->fetchAll() as $mkt_row) { $mkt_upcs[] = $mkt_row['upc']; } if (count($mkt_upcs)> 0) { $whereClause .= ' AND eqd.upc IN (' . implode(',', array_fill(0, count($mkt_upcs), '?')) . ')'; foreach ($mkt_upcs as $key => $val) { $dataParams[] = $val; } } } else { //get upcs for given priority: $mkt_q = "SELECT priority, upc FROM mkt_priority GROUP BY upc"; $stmt = $artDb->getMysqlConnection()->prepare($mkt_q); if (!$stmt->execute()) { show_pdo_error($mkt_q, $stmt); } $mkt_upcs= array(); foreach ($stmt->fetchAll() as $mkt_row) { $mkt_upcs[] = $mkt_row['upc']; } if (count($mkt_upcs)> 0) { $whereClause .= ' AND eqd.upc NOT IN (' . implode(',', array_fill(0, count($mkt_upcs), '?')) . ')'; foreach ($mkt_upcs as $key => $val) { $dataParams[] = $val; } } } $search_criteria[$criteria_counter]["name"] = "mkt_priority"; $search_criteria[$criteria_counter]["value"] = $mkt_priority; $criteria_counter++; } if (isset($meta_update) && trim($meta_update) != '') { $whereClause .= ' AND eq.meta_update = ?'; $dataParams[] = $meta_update; $search_criteria[$criteria_counter]["name"] = "meta_update"; $search_criteria[$criteria_counter]["value"] = $meta_update; $criteria_counter++; } if ($delivery) { $whereClause .= ' AND dds.delivery IN (' . implode(',', array_fill(0, count($delivery), '?')) . ')'; foreach ($delivery as $key => $val) { $dataParams[] = $val; } $search_criteria[$criteria_counter]["name"] = "delivery[]"; $search_criteria[$criteria_counter]["value"] = implode(",", $delivery); $criteria_counter++; } if ($encoding) { $whereClause .= ' AND dds.encoding IN (' . implode(',',array_fill(0, count($encoding), '?')) . ')'; foreach ($encoding as $key => $val) { $dataParams[] = $val; } $search_criteria[$criteria_counter]["name"] = "encoding[]"; $search_criteria[$criteria_counter]["value"] = implode(",",$encoding); $criteria_counter++; } $_SESSION["S_SEARCH_CRITERIA"] = serialize($search_criteria); $whereClause = '1 '.$whereClause; } $sql = 'SELECT SQL_CALC_FOUND_ROWS eq.encoding_queue_id, eqd.encoding_queue_detail_id, cmm.customer_name as dms, eq.encoding_order_id, eq.priority, eqd.dms_master_master_id, eqd.upc, eqd.status, TIMEDIFF(eqd.encoding_ended, eqd.encoding_started) AS encoding_time, eqd.encoding_started, eqd.encoding_ended, TIMEDIFF(eqd.delivery_ended, eqd.delivery_started) AS delivery_time, eqd.delivery_started, eqd.delivery_ended, eqd.error_log, eqd.encoding_server, eqd.delivery_server,eqd.last_updated, pp.pid, db.remote_folder FROM `direct_delivery`.encoding_queue eq INNER JOIN `direct_delivery`.encoding_queue_detail eqd ON eq.encoding_queue_id = eqd.encoding_queue_id INNER JOIN `direct_delivery`.customer_master_master cmm ON cmm.customer_master_master_id = eqd.dms_master_master_id LEFT JOIN `direct_delivery`.delivery_batch_detail dbd ON dbd.encoding_queue_detail_id = eqd.encoding_queue_detail_id LEFT JOIN `direct_delivery`.delivery_batch db ON db.delivery_batch_id = dbd.delivery_batch_id LEFT JOIN `direct_delivery`.dms_delivery_spec dds ON cmm.customer_master_master_id = dds.dms_master_master_id AND dds.order_type = eq.encoding_order_type LEFT JOIN `direct_delivery`.process_pid pp ON pp.encoding_queue_detail_id = eqd.encoding_queue_detail_id WHERE '.$whereClause.' AND eq.encoding_order_type != "ringtone"'; if($order == 'hd') $sql .= " AND eq.encoder_id = 4 "; elseif($order == 'dd') $sql .= " AND eq.encoder_id <> 4 "; switch ($sort_by) { case 'upc': $order_by = 'eqd.upc'; break; case 'encoding_order_id': $order_by = 'eq.encoding_order_id'; break; case 'status': $order_by = 'eqd.status'; break; case 'encoding_started': $order_by = 'eqd.encoding_started'; break; case 'encoding_ended': $order_by = 'eqd.encoding_ended'; break; case 'encoding_time': $order_by = 'encoding_time'; break; case 'delivery_started': $order_by = 'eqd.delivery_started'; break; case 'delivery_ended': $order_by = 'eqd.delivery_ended'; break; case 'delivery_time': $order_by = 'delivery_time'; break; case 'encoding_server': $order_by = 'eqd.encoding_server'; break; case 'delivery_server': $order_by = 'eqd.delivery_server'; break; case 'dms': $order_by = 'dms'; break; default: if($type=="complete") { $order_by = 'eqd.delivery_ended'; $sort_by = 'delivery_ended'; } else { $order_by = 'eqd.encoding_started'; $sort_by = 'encoding_started'; } } $sql .= ' ORDER BY ' . $order_by . ($sort_desc ? ' DESC' : ''); /** if no track checking, then paginate and create LIMIT on the SQL */ if (!$track_check) { /** Add Limit in for pagination */ if (!$no_url) { $sql .= ' LIMIT ' . ($page - 1) * $pageRecord . ', ' . $pageRecord; } } $stmt = $ddDb->getMysqlConnection()->prepare($sql); if (!$stmt->execute($dataParams)) { show_pdo_error($sql, $stmt); } $eqd_detail_result = $stmt->fetchAll(); if (!$no_url) { /** Get total rows as if the limit was removed using FOUND_ROWS() */ $sql_count = 'SELECT FOUND_ROWS() AS total'; $stmt = $ddDb->getMysqlConnection()->prepare($sql_count); if (!$stmt->execute()) { show_pdo_error($sql_count, $stmt); } $total_count_row = $stmt->fetch(); $total = $total_count_row['total']; } else { $total = count($eqd_detail_result); } $varTable = ' '; if (($type == 'error' or $type == 'process' or $type == 'search') and !$no_url) { $varTable .= ''; } $varTable .= ' ' . ($no_url ? 'UPC' : sortColumnHeader('UPC', 'upc', $url)) . ' ' . ($no_url ? 'Encoding Order Id' : sortColumnHeader('Encoding Order Id', 'encoding_order_id', $url)).' ' . ($no_url ? 'DMS' : sortColumnHeader('DMS', 'dms', $url)).' ' . ($no_url ? 'Status' : sortColumnHeader('Status', 'status', $url)) . ' Batch Folder Marketing Priority ' . ($no_url ? 'Encoding Server' : sortColumnHeader('Encoding Server', 'encoding_server', $url)) . ' ' . ($no_url ? 'Encoding Started' : sortColumnHeader('Encoding Started', 'encoding_started', $url)) . ' ' . ($no_url ? 'Encoding Ended' : sortColumnHeader('Encoding Ended', 'encoding_ended', $url)) . ' ' . ($no_url ? 'Encoding Time' : sortColumnHeader('Encoding Time', 'encoding_time', $url)) . ' ' . ($no_url ? 'Delivery Server' : sortColumnHeader('Delivery Server', 'delivery_server', $url)) . ' ' . ($no_url ? 'Delivery Started' : sortColumnHeader('Delivery Started', 'delivery_started', $url)) . ' ' . ($no_url ? 'Delivery Ended' : sortColumnHeader('Delivery Ended', 'delivery_ended', $url)) . ' ' . ($no_url ? 'Delivery Time' : sortColumnHeader('Delivery Time', 'delivery_time', $url)) . ' ' . ($type != 'complete' ? 'Error Log' : '') . ' '; if (count($eqd_detail_result)) { foreach ($eqd_detail_result as $eqd_detail_row) { $encodingOrderId = $eqd_detail_row['encoding_order_id']; $encoding_queue_id = $encoding_queue_id ? $encoding_queue_id : $eqd_detail_row['encoding_queue_id']; $priority = $eqd_detail_row['priority']; } $upcsArray = array(); foreach ($eqd_detail_result as $eqd_detail_row) { $upcsArray[] = $eqd_detail_row['upc']; } $mkt_priority_arr = array(); if(count($upcsArray) > 0) { $sql = 'SELECT priority, upc FROM mkt_priority WHERE upc IN (' . implode(',',array_fill(0, count($upcsArray), '?')) . ') GROUP BY priority, upc'; $stmt = $artDb->getMysqlConnection()->prepare($sql); $dataParamsMkt = []; foreach ($upcsArray as $key => $val) { $dataParamsMkt[] = $val; } if (!$stmt->execute($dataParamsMkt)) { show_pdo_error($sql, $stmt); } $mkt_priority_rs = $stmt->fetchAll(); foreach ($mkt_priority_rs as $row) { $mkt_priority_arr[$row['upc']]=$row['priority']; } } $dms_list = array(); foreach ($eqd_detail_result as $eqd_detail_row) { $isVideoOrFilm = false; /** display results unless we determine the contains_only selection */ $display = 0; $check_track_type = 'SELECT DISTINCT(t.track_type) as track_type FROM track t WHERE t.upc = ?'; $stmt = $artDb->getMysqlConnection()->prepare($check_track_type); $stmt->execute([$eqd_detail_row['upc']]); $check_track_type_result = $stmt->fetchAll(); $track_types_per_upc_result = array(); /** get track types per upc in the release */ foreach ($check_track_type_result as $track_types_per_upc_row) { $track_types_per_upc_result[] = $track_types_per_upc_row['track_type']; } /** sets the flag as true whenever the releases is a music_video or a film */ if (in_array("video", $track_types_per_upc_result)){ $isVideoOrFilm = true; } /** if the track type constraint selector is selected, then get only results with correct track contraints */ if ($track_check) { /** assume invalid per $contains_only filter unless it doesn't qualify */ $display = check_contains_only($track_types_per_upc_result); /** found a non-qualifing entry, decrease final count by 1 */ if (!$display){ $total = $total - 1; } } else { /** contains_only not selected, display all */ $display = 1; } if ($display) { $dms_list[] = $eqd_detail_row['dms']; $row_class = (++$rci & 1) ? '' : 'alt'; $error_log = htmlspecialchars($eqd_detail_row['error_log']); $varTable .= ' '; if (($type == 'error' or $type == 'process' or $type == 'search') and !$no_url) { $no_reproc = check_for_reprocess($eqd_detail_row['encoding_queue_detail_id'], $ddDb); $show_checkbox = true; $start_time = null; $noRequeueStatuses = array( 'cancelled', 'delivered', 'encoding', 'delivering', 'ready_to_deliver', 'encoded', 'ready_to_encode', 'new', 'queued_for_delivery', 'ineligible', ); if ($eqd_detail_row['status'] == 'encoding') { $start_time = new DateTimeImmutable($eqd_detail_row['encoding_started']); } elseif ($eqd_detail_row['status'] == 'delivering') { $start_time = new DateTimeImmutable($eqd_detail_row['delivery_started']); } elseif (in_array($eqd_detail_row['status'], $noRequeueStatuses)) { $show_checkbox = false; } if (!empty($start_time)) { $current_time = new DateTimeImmutable(); $time_diff = $start_time->diff($current_time); $show_checkbox = ($time_diff->h >= 2); } $varTable .= ''; if ($show_checkbox) { $varTable .= ''; } $varTable .= ''; } $varTable.=' ' . ($no_url ? $eqd_detail_row['upc'] : '' . $eqd_detail_row['upc'] . '') . (in_array($eqd_detail_row['status'],array('encoding','delivering'))?'
(PID: '.$eqd_detail_row['pid'].')':'').' ' . $eqd_detail_row['encoding_order_id'] . ' ' . $eqd_detail_row['dms'] . ' ' . ucwords(str_replace('_', ' ', $eqd_detail_row['status'])) . ' ' . $eqd_detail_row['remote_folder'] . ''; if(count($upcsArray) > 0) { if(isset($mkt_priority_arr[$eqd_detail_row['upc']]) && $mkt_priority_arr[$eqd_detail_row['upc']] != '') { $varTable.='Yes'; } else { $varTable.='No'; } } else { $varTable.='No'; } $varTable.=' ' . $eqd_detail_row['encoding_server'] . ' ' . format_date($eqd_detail_row['encoding_started'], true) . ' ' . format_date($eqd_detail_row['encoding_ended'], true) . ' ' . $eqd_detail_row['encoding_time'] . ' ' . $eqd_detail_row['delivery_server'] . ' ' . format_date($eqd_detail_row['delivery_started'], true) . ' ' . format_date($eqd_detail_row['delivery_ended'], true) . ' ' . $eqd_detail_row['delivery_time'] . ' ' . ($type != 'complete' ? '' . ($no_url ? $error_log : ''.($error_log ? substr($error_log,0,100).'...' : '').'') .'' : '') . ' '; } } $dms_list = array_unique($dms_list); sort($dms_list); $dms_list = implode('; ',$dms_list); } else { $varTable .= 'No records found. '; } $varTable .= ' '; /** finally get the page number count for the paginator, one big page "1" if we're doing a report checking track type */ if ($track_check){ $pageNum = 1; } else { $pageNum = ceil($total/$pageRecord); } /** * function check_contains_only * weather or not the UPC contains only the contains only perameters for the report * * @param array $track_types_per_upc, an array of the track types per a specific UPC * @return bool, weather condition met or not */ function check_contains_only($track_types_per_upc){ global $contains_only; /** get selection of contains only search dropdown */ $music = array_search("music", $contains_only); if($music === 0) $music = 1; $video = array_search("video", $contains_only); if($video === 0) $video = 1; $mixed = array_search("mixed", $contains_only); if($mixed === 0) $mixed = 1; $contains_exclusive = false; /** check for music only */ if ($music){ $find_videos = array_search("video",$track_types_per_upc); if($find_videos === 0) $find_videos = true; if (!$find_videos){ $contains_exclusive = true; } } /** check for video only */ if($video){ $find_music = array_search("music",$track_types_per_upc); if($find_music === 0) $find_music = true; if (!$find_music){ $contains_exclusive = true; } } /** check for mixed only */ if ($mixed){ $find_music = array_search("music",$track_types_per_upc); if($find_music === 0) $find_music = true; $find_video = array_search("video",$track_types_per_upc); if($find_video === 0) $find_video = true; if ($find_music && $find_video){ $contains_exclusive = true; } } /** result */ return $contains_exclusive; }