require_once __DIR__ . '/../../../../vendor/autoload.php';
use Orchard\QueryWrapper;
$wrapperObj = getPDOQueryWrapper();
$page = ($page && is_numeric($page)) ? $page : 1;
$sort_by = isset($sort_by) ? stripslashes($sort_by) : '';
$sort_desc = ($sort_desc) ? stripslashes($sort_desc) : 0;
$pageRecord = ($pageRecord && is_numeric($pageRecord)) ? $pageRecord : 100;
$varQueryString = formatURLQueryString('page,pageRecord', array($_REQUEST));
$url = formatURLQueryString('sort_by,sort_desc,page,pageRecord', array($_REQUEST));
$pageNum = 0;
$total = 0;
$no_url = isset($no_url) ? $no_url : false;
if($sales_territory == "us_only")
{
$query = 'select upc from release_territory_restriction where country_id = 1';
$result = $wrapperObj->executeQuery($query, []);
if ($result === false) {
show_pdo_error($query, $wrapperObj->getLastStatement());
}
foreach ($result as $row) {
$restricted_upcs[] = $row['upc'];
}
$query = 'select t.id
from track t
inner join track_restriction tr on tr.upc = t.upc and tr.cd = t.cd and tr.track_id = t.track_id
where tr.restriction_type = "territory" and territory_or_dms_id = 1';
$result = $wrapperObj->executeQuery($query, []);
if ($result === false) {
show_pdo_error($query, $wrapperObj->getLastStatement());
}
foreach ($result as $row) {
$restricted_track_ids[] = $row['id'];
}
$query = "select vendor_id
from vendor_contract
where find_in_set(1, territory_carve_out) <> 0 and (cont_start <= CURDATE() and (cont_end >= CURDATE() OR cont_end = '0000-00-00' OR cont_end IS NULL))
group by vendor_id";
$dataParams = [];
$result = $wrapperObj->executeQuery($query, $dataParams);
if ($result === false) {
show_pdo_error($query, $wrapperObj->getLastStatement());
}
foreach ($result as $row) {
$restricted_vendor_ids[] = $row['vendor_id'];
}
}
$dataParams = [];
$select = "SELECT SQL_CALC_FOUND_ROWS v.vendor_id, v.company, a.artist_id, a.name as artist_name, r.upc,r.display_upc, r.release_name, DATE_FORMAT(r.ingestion_completed, '%m-%d-%Y') as date_added, r.deletions
, t.id as track_unique_id, t.track_name, t.cd, t.track_id, t.isrc, t.length_minute, t.length_seconds, group_concat(ta.name) as track_artists, t.publisher, t.writer ";
$from = "FROM vendor v ";
$where = " WHERE 1 AND r.not_for_distribution != 'SMEAnalyticsDummy' ";
switch ($sort_by){
case 'vendor_id':
$order_by = 'vendor_id';
break;
case 'company':
$order_by = 'company';
break;
case 'artist_name':
$order_by = "a.name";
break;
case 'release_name':
$order_by = 'r.release_name';
break;
case 'artist_id':
$order_by = 'a.artist_id';
break;
case 'upc':
$order_by = 'r.upc';
break;
case 'date_added':
$order_by = 'r.ingestion_completed';
break;
case 'deletion':
$order_by = 'r.deletions';
break;
case 'track_unique_id':
$order_by = 't.id';
break;
case 'isrc':
$order_by = 't.isrc';
break;
case 'track_name':
$order_by = 't.track_name';
break;
case 'cd':
$order_by = 't.cd';
break;
case 'track_id':
$order_by = 't.track_id';
break;
case 'length_minutes':
$order_by = 't.length_minute';
break;
case 'length_seconds':
$order_by = 't.length_seconds';
case 'publisher':
$order_by = 't.publisher';
break;
case 'writer':
$order_by = 't.writer';
break;
default:
$order_by = " artist_name, release_name, cd, track_id";
}
$err_msg = "";
switch ($input_type) {
case 'track_ids':
$track_id_arr = explode("\n", $input_ids);
if($oms_labels_only != "on" && (trim($input_ids) == "" || !is_array($track_id_arr) || sizeof($input_ids) <= 0))
{
$err_msg .= "
You must either select OMS Only Labels or provide a list of Track IDs.";
}
break;
case 'upcs':
$upc_arr = explode("\n", $input_ids);
if($oms_labels_only != "on" && (trim($input_ids) == "" || !is_array($upc_arr) || sizeof($input_ids) <= 0))
{
$err_msg .= "You must either select OMS Only Labels or provide a list of UPCs.";
}
break;
case 'isrcs':
$isrc_arr = explode("\n", $input_ids);
if($oms_labels_only != "on" && (trim($input_ids) == "" || !is_array($isrc_arr) || sizeof($input_ids) <= 0))
{
$err_msg .= "You must either select OMS Only Labels or provide a list of ISRCs.";
}
break;
case 'artist_ids':
$artist_id_arr = explode("\n", $input_ids);
if($oms_labels_only != "on" && (trim($input_ids) == "" || !is_array($artist_id_arr) || sizeof($input_ids) <= 0))
{
$err_msg .= "You must either select OMS Only Labels or provide a list of Artist IDs.";
}
break;
default:
$vendor_id_arr = explode("\n", $input_ids);
if($oms_labels_only != "on" && (trim($input_ids) == "" || !is_array($vendor_id_arr) || sizeof($input_ids) <= 0))
{
$err_msg .= "You must either select OMS Only Labels or provide a list of labels.";
}
}
if($oms_labels_only == "on")
{
$from .= " INNER JOIN
(select vc.vendor_id,vc.id,vc.cont_start,vc.cont_end from vendor_contract vc
where (vc.cont_start <= CURDATE() or (vc.cont_end >= CURDATE() OR vc.cont_end = '0000-00-00' OR vc.cont_end IS NULL) )
AND oms_type != 'none' AND oms_type IS NOT NULL
GROUP BY vendor_id
) vc ON vc.vendor_id = v.vendor_id";
}
$from .= " INNER JOIN artist_info a force index (vendor_id) ON a.vendor_id = v.vendor_id
INNER JOIN releases r ON a.artist_id = r.artist_id
INNER JOIN track t ON t.upc = r.upc
LEFT JOIN track_artist ta on ta.track_id = t.id ";
if($sales_territory == "us_only")
{
//Used tmp table to handle large number of restricted_upcs which do not work inside IN clause
$temp_table = 'TEMP_restricted_upcs_' . $_SESSION['S_USERID'];
$sql = 'DROP TABLE IF EXISTS ' . $temp_table;
if ($wrapperObj->executeQuery($sql, []) === false) {
show_pdo_error($sql, $wrapperObj->getLastStatement());
}
$sql = 'CREATE TEMPORARY TABLE ' . $temp_table . ' (
restricted_upc_id bigint(20) NOT NULL,
PRIMARY KEY (`restricted_upc_id`)
)';
if ($wrapperObj->executeQuery($sql, []) === false) {
show_pdo_error($sql, $wrapperObj->getLastStatement());
}
$restricted_upcs = array_unique($restricted_upcs);
$upc_ids = array_chunk($restricted_upcs, 1000);
foreach ($upc_ids as $ids) {
$insertDataParams = [];
$sql = 'INSERT INTO ' . $temp_table . ' VALUES ' . implode(',', array_fill(0, count($ids), '(?)'));
foreach ($ids as $id) {
$insertDataParams[] = $id;
}
if ($wrapperObj->executeQuery($sql, $insertDataParams, QueryWrapper::RETURN_INSERT_ID) === false) {
show_pdo_error($sql, $wrapperObj->getLastStatement());
}
}
$where .= ' AND r.upc not in (SELECT restricted_upc_id FROM ' . $temp_table . ' )
AND t.id not in (' . implode(',', array_fill(0, count($restricted_track_ids), '?')) . ')
AND v.vendor_id not in (' . implode(',', array_fill(0, count($restricted_vendor_ids), '?')) . ')';
foreach ($restricted_track_ids as $val) {
$dataParams[] = $val;
}
foreach ($restricted_vendor_ids as $val) {
$dataParams[] = $val;
}
}
if (trim($input_ids) != "") {
switch ($input_type) {
case 'track_ids':
if(is_array($track_id_arr) && sizeof($input_ids) > 0)
{
$tmp_str = "";
foreach($track_id_arr as $track_id)
{
$track_id = trim($track_id);
if($track_id != "")
{
if (is_numeric($track_id)) {
$tmp_str .= ', ?';
$dataParams[] = $track_id;
} else {
$err_msg .= "Invalid Track ID provided.";
break;
}
}
}
$tmp_str = trim($tmp_str, ",");
$where .= " AND t.id IN ($tmp_str) ";
}
break;
case 'upcs':
if(is_array($upc_arr) && sizeof($input_ids) > 0)
{
$tmp_str = "";
foreach($upc_arr as $upc)
{
$upc = trim($upc);
if($upc != "")
{
if (checkUPC($upc)) {
$tmp_str .= ', ?';
$dataParams[] = $upc;
} else {
$err_msg .= "Invalid UPC provided.";
break;
}
}
}
$tmp_str = trim($tmp_str, ",");
$where .= " AND r.upc IN ($tmp_str) ";
}
break;
case 'isrcs':
if(is_array($isrc_arr) && sizeof($input_ids) > 0)
{
$tmp_str = "";
foreach($isrc_arr as $isrc)
{
$isrc = trim($isrc);
if($isrc != "")
{
$tmp_str .= ', ?';
$dataParams[] = $isrc;
}
}
$tmp_str = trim($tmp_str, ",");
$where .= " AND t.isrc IN ($tmp_str) ";
}
break;
case 'artist_ids':
if(is_array($artist_id_arr) && sizeof($input_ids) > 0)
{
$tmp_str = "";
foreach($artist_id_arr as $artist_id)
{
$artist_id = trim($artist_id);
if($artist_id != "")
{
if (is_numeric($artist_id)) {
$tmp_str .= ', ?';
$dataParams[] = $artist_id;
} else {
$err_msg .= "Invalid Artist ID provided.";
break;
}
}
}
$tmp_str = trim($tmp_str, ",");
$where .= " AND a.artist_id IN ($tmp_str) ";
}
break;
default:
if(is_array($vendor_id_arr) && sizeof($input_ids) > 0)
{
$tmp_str = "";
foreach($vendor_id_arr as $vendor_id)
{
$vendor_id = trim($vendor_id);
if($vendor_id != "")
{
if (is_numeric($vendor_id)) {
$tmp_str .= ', ?';
$dataParams[] = $vendor_id;
} else {
$err_msg .= "Invalid Vendor ID provided.";
break;
}
}
}
$tmp_str = trim($tmp_str, ",");
$where .= " AND v.vendor_id IN ($tmp_str) ";
}
}
}
if(trim($from_date_added) != "")
{
$where .= ' AND r.ingestion_completed >= ?';
$dataParams[] = $from_date_added;
}
if(trim($to_date_added) != "")
{
$where .= ' AND r.ingestion_completed <= ?';
$dataParams[] = $to_date_added;
}
$where .= " GROUP BY t.id ";
$query = $select . $from . $where;
$query .= ' ORDER BY ' . $order_by . ($sort_desc ? ' DESC' : '');
if (!$no_url) {
$query .= ' LIMIT ?, ?';
$dataParams[] = (($page - 1) * $pageRecord);
$dataParams[] = $pageRecord;
}
if($err_msg == "")
{
$result = $wrapperObj->executeQuery($query, $dataParams);
if ($result === false) {
show_pdo_error($query, $wrapperObj->getLastStatement());
}
$dataParams = [];
$sql = 'SELECT FOUND_ROWS() AS total';
$total_count = $wrapperObj->executeQuery($sql, $dataParams);
if ($total_count === false) {
show_pdo_error($sql, $wrapperObj->getLastStatement());
}
$total_count_row = $total_count[0];
$total = $total_count_row['total'];
$pageNum = ceil($total/$pageRecord);
$varTable = "";
$varTable .= "
| ".($no_url ? "Label ID" : sortColumnHeader('Label ID', 'vendor_id', $url))." |
".($no_url ? "Label" : sortColumnHeader('Label', 'company', $url))." |
".($no_url ? "Artist ID" : sortColumnHeader('Artist ID', 'artist_id', $url))." |
".($no_url ? "Artist Name" : sortColumnHeader('Artist Name', 'artist_name', $url))." |
Track Artist(s) |
".($no_url ? "UPC" : sortColumnHeader('UPC', 'upc', $url))." |
".($no_url ? "Release Name" : sortColumnHeader('Release Name', 'release_name', $url))." |
".($no_url ? "Date Added" : sortColumnHeader('Date Added', 'date_added', $url))." |
".($no_url ? "Deletion" : sortColumnHeader('Deletion', 'deletion', $url))." |
".($no_url ? "Track Unique ID" : sortColumnHeader('Track Unique ID', 'track_unique_id', $url))." |
".($no_url ? "ISRC" : sortColumnHeader('ISRC', 'isrc', $url))." |
".($no_url ? "Track Name" : sortColumnHeader('Track Name', 'track_name', $url))." |
".($no_url ? "CD" : sortColumnHeader('CD', 'cd', $url))." |
".($no_url ? "Track #" : sortColumnHeader('Track #', 'track_id', $url))." |
".($no_url ? "Length Minutes" : sortColumnHeader('Length Minutes', 'length_minutes', $url))." |
".($no_url ? "Length Seconds" : sortColumnHeader('Length Seconds', 'length_seconds', $url))." |
".($no_url ? "Publisher" : sortColumnHeader('Publisher', 'publisher', $url))." |
".($no_url ? "Songwriter" : sortColumnHeader('Songwriter', 'writer', $url))." |
";
$i = 0;
$rci = 0;
if (count($result) > 0) {
$rci = 0;
foreach ($result as $row) {
$row_class = (++$rci & 1) ? '' : 'alt';
$varTable .= "
| {$row['vendor_id']} |
".($no_url?$row['company']:"{$row['company']}")." |
{$row['artist_id']} |
".($no_url?$row['artist_name']:"{$row['artist_name']}")." |
".$row['track_artists']." |
" . ($no_url ? '"'.$row['display_upc'].'"' : $row['display_upc']) ." |
".($no_url?$row['release_name']:"{$row['release_name']}")." |
{$row['date_added']} |
{$row['deletions']} |
{$row['track_unique_id']} |
{$row['isrc']} |
{$row['track_name']} |
{$row['cd']} |
{$row['track_id']} |
{$row['length_minute']} |
{$row['length_seconds']} |
{$row['publisher']} |
{$row['writer']} |
";
}
$varTable .= "
";
}
else {
$varTable .= "";
}
}
?>