release_date = array_key_exists('release_date', $arr) ? $arr['release_date'] : "";
$this->sale_start_date = array_key_exists('sale_start_date', $arr) ? $arr['sale_start_date'] : "";
$this->preorder_date = array_key_exists('preorder_date', $arr) ? $arr['preorder_date'] : "";
$this->artist_name = array_key_exists('artist_name', $arr) ? $arr['artist_name'] : "";
$this->release_name = array_key_exists('release_name', $arr) ? $arr['release_name'] : "";
$this->label_imprint = array_key_exists('label_imprint', $arr) ? $arr['label_imprint'] : "";
$this->genre = array_key_exists('genre', $arr) ? $arr['genre'] : "";
$this->genre_id = array_key_exists('genre_id', $arr) ? $arr['genre_id'] : "";
$this->status = array_key_exists('status', $arr) ? $arr['status'] : "";
$this->assigned_to = array_key_exists('assigned_to', $arr) ? $arr['assigned_to'] : "";
$this->manufacture_upc = array_key_exists('manufacture_upc', $arr) ? $arr['manufacture_upc'] : "";
$this->format = array_key_exists('format', $arr) ? $arr['format'] : "";
$this->new_catalog = array_key_exists('new_catalog', $arr) ? $arr['new_catalog'] : "";
$this->account = array_key_exists('account', $arr) ? $arr['account'] : "";
$this->account_id = array_key_exists('account_id', $arr) ? $arr['account_id'] : "";
$this->ingestion_completed = array_key_exists('date_added', $arr) ? $arr['date_added'] : "";
$this->isCatalog = array_key_exists('isCatalog', $arr) ? $arr['isCatalog'] : "";
$this->display_upc = array_key_exists('display_upc', $arr) ? $arr['display_upc'] : "";
$this->release_id = array_key_exists('release_id', $arr) ? $arr['release_id'] : "";
$this->uid = array_key_exists('uid', $arr) ? $arr['uid'] : "";
$this->upc = array_key_exists('upc', $arr) ? $arr['upc'] : "";
$this->label_priority = array_key_exists('label_priority', $arr) ? $arr['label_priority'] : "";
$this->int_mkt_manager = array_key_exists('int_mkt_manager', $arr) ? $arr['int_mkt_manager'] : false;
$this->owner = array_key_exists('owner', $arr) ? $arr['owner'] : false;
$this->territory_carve_out = array_key_exists('territory_carve_out', $arr) ? $arr['territory_carve_out'] : false;
$this->territory_carve_out_display = array_key_exists('territory_carve_out_display', $arr) ? $arr['territory_carve_out_display'] : false;
$this->dms_carve_out = array_key_exists('dms_carve_out', $arr) ? $arr['dms_carve_out'] : false;
$this->wrapperObj = $wrapperObj;
$this->isPDO = $wrapperObj instanceof QueryWrapper ? true : false;
}
function get_uid()
{
$uid = $this->isCatalog ? $this->upc : $this->release_id;
return array($this->isCatalog, $uid);
}
public function getReleaseId()
{
return $this->release_id;
}
public function get_release_date()
{
if ($this->release_date) {
return $this->release_date;
} else {
$sql = 'select release_date
from releases
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['release_date'];
}
return false;
}
}
public function get_release_date_by_countries($display_mode = 1, $trim = 1, $char = '')
{
$sql = 'select c.id, c.name, r.release_date
from release_country_dates r
inner join country c on c.id = r.country_id
where r.release_id = ?
order by c.name';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$display = array();
foreach ($rs as $row) {
if ($display_mode) {
$display[$row['name']] = $row['release_date'];
} else {
$display[$row['id']] = $row['release_date'];
}
}
if ($display_mode) {
$str = "";
foreach ($display as $k => $v) {
$str .= $k . " - " . $v . "
";
}
return $str;
}
return $display;
}
public function set_release_date($release_date)
{
$this->release_date = $release_date;
$sql = 'update releases
set release_date = ?
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$release_date ,$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('s', $release_date);
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function set_release_date_country($country_id, $release_date)
{
$sql = 'delete
from release_country_dates
where release_id = ? and country_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id, $country_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
$dataParams->addDataParam('i', $country_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$rs = $this->wrapperObj->executeQuery($sql, $dataParams, $return_type);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$sql = 'insert
into release_country_dates(release_id, release_date, country_id, upc)
values(?, ?, ?, ?)';
if ($this->isPDO) {
$dataParams = [];
$dataParams[] = $this->release_id;
$dataParams[] = $release_date;
$dataParams[] = $country_id;
$dataParams[] = $this->upc;
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
$dataParams->addDataParam('s', $release_date);
$dataParams->addDataParam('i', $country_id);
$dataParams->addDataParam('i', $this->upc);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function get_physical_release_date_by_countries($display_mode = 1, $trim = 1, $char = '')
{
$sql = 'select c.id, c.name, r.release_date
from physical_release_country_dates r
inner join country c on c.id = r.country_id
where r.release_id = ?
order by c.name';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$display = array();
foreach ($rs as $row) {
if ($display_mode) {
$display[$row['name']] = $row['release_date'];
} else {
$display[$row['id']] = $row['release_date'];
}
}
if ($display_mode) {
$str = "";
foreach ($display as $k => $v) {
$str .= $k . " - " . $v . "
";
}
return $str;
}
return $display;
}
public function get_country_name_by_id($country_id)
{
if ($country_id) {
$sql = 'select name
from country
where id = ?';
if ($this->isPDO) {
$dataParams = [$country_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $country_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['name'];
}
}
return false;
}
public function get_physical_release_date()
{
$sql = 'select physical_release_date
from releases
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['physical_release_date'];
}
return false;
}
public function set_physical_release_date($physical_release_date)
{
$sql = 'update releases
set physical_release_date = ?
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$physical_release_date, $this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('s', $physical_release_date);
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function set_physical_release_date_country($country_id, $release_date)
{
$sql = 'delete
from physical_release_country_dates
where release_id = ? and country_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id, $country_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
$dataParams->addDataParam('i', $country_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$rs = $this->wrapperObj->executeQuery($sql, $dataParams, $return_type);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$sql = 'insert into physical_release_country_dates(release_id, release_date, country_id)
values(?, ?, ?)';
if ($this->isPDO) {
$dataParams = [];
$dataParams[] = $this->release_id;
$dataParams[] = $release_date;
$dataParams[] = $country_id;
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
$dataParams->addDataParam('s', $release_date);
$dataParams->addDataParam('i', $country_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
$rs = $this->wrapperObj->executeQuery($sql, $dataParams, $return_type);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function get_release_name()
{
if ($this->release_name) {
return $this->release_name;
} else {
$sql = 'select release_name
from releases
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['release_name'];
}
return false;
}
}
public function get_new_catalog()
{
if ($this->new_catalog) {
return $this->new_catalog;
} else {
$sql = 'select new_release
from releases
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['new_release'];
}
return false;
}
}
public function set_new_catalog($new_release)
{
$this->new_catalog = $new_release;
$sql = 'update releases
set new_release = ?
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$new_release, $this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('s', $new_release);
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function get_genre($display_mode = 1)
{
if (($this->genre)) {
return $this->genre;
} elseif (($this->genre_id)) {
return $this->genre_id;
} else {
$sql = 'select g.genre_id, g.genre
from releases r
inner join genre g on g.genre_id = r.genre_id
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
if ($display_mode) {
$this->genre = $row['genre'];
return $row['genre'];
} else {
$this->genre_id = $row['genre_id'];
return $row['genre_id'];
}
}
return false;
}
}
public function get_all_genre()
{
$sql = "select genre_id, genre from genre order by genre ";
$dataParams = $this->isPDO ? [] : new QueryData();
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showerror($sql);
}
$genres = array();
foreach ($rs as $row) {
$genres[$row['genre_id']] = $row['genre'];
}
return $genres;
}
public function set_genre($genre_id)
{
$sql = 'update releases
set genre_id = ?
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$genre_id, $this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $genre_id);
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function get_genre_note()
{
$sql = 'select genre_note
from releases
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['genre_note'];
}
return "";
}
public function set_genre_note($genre_note)
{
$sql = 'update releases
set genre_note = ?
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$genre_note, $this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('s', $genre_note);
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function get_format()
{
if ($this->format) {
return $this->format;
} else {
$sql = 'select format
from releases r
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['format'];
}
return false;
}
}
public function get_all_format()
{
return array('Single', 'EP', 'LP', 'Double LP', 'Boxset');
}
public function set_format($format)
{
$this->format = $format;
$sql = 'update releases
set format = ?
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$format, $this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('s', $format);
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showerror($sql);
}
}
public function get_all_countries($with_name = 0)
{
$sql = "select id, name from country order by name ";
$dataParams = $this->isPDO ? [] : new QueryData();
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showerror($sql);
}
$countries = array();
foreach ($rs as $row) {
if ($with_name) {
$countries[$row['id']] = $row['name'];
} else {
$countries[] = $row['id'];
}
}
return $countries;
}
public static function getAllCountryCodes($pdoWrapperObj)
{
$sql = "select id, country_code from country order by name ";
$rs = $pdoWrapperObj->executeQuery($sql, []);
if ($rs === false) {
show_pdo_error($sql, $pdoWrapperObj->getLastStatement());
}
$countries = array();
foreach ($rs as $row) {
$countries[$row['id']] = $row['country_code'];
}
return $countries;
}
public static function getDistributionTypes($pdoWrapperObj)
{
$sql = "select * from distribution_type";
$rs = $pdoWrapperObj->executeQuery($sql, []);
if ($rs === false) {
show_pdo_error($sql, $pdoWrapperObj->getLastStatement());
}
$distributionTypes = array();
foreach ($rs as $row) {
$distributionTypes[$row['id']] = $row['name'];
}
return $distributionTypes;
}
public function get_all_states($with_name = 0)
{
$sql = "select id, name from orchard_state order by name ";
$dataParams = $this->isPDO ? [] : new QueryData();
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showerror($sql);
}
$states = array();
foreach ($rs as $row) {
if ($with_name) {
$states[$row['id']] = $row['name'];
} else {
$states[] = $row['id'];
}
}
return $states;
}
public function get_continent_by_country($country_id)
{
$sql = 'select continent
from country
where id = ?';
if ($this->isPDO) {
$dataParams = [$country_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $country_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return str_replace(' ', '_', $row['continent']);
}
return false;
}
public function get_label_territory_restrictions($display_mode = 1, $trim = 1, $char = 50)
{
if (!($this->territory_carve_out === false) && $display_mode == 0) {
return (count($this->territory_carve_out) ? $this->territory_carve_out : false);
} elseif (!($this->territory_carve_out_display === false) && $display_mode == 1) {
return (count($this->territory_carve_out_display) ? $this->territory_carve_out_display : false);
} else {
$label_id = $this->get_label(0);
$sql = "SELECT v.vendor_id, vcc.territory_carve_out
FROM vendor v
INNER JOIN vendor_contract vcc ON v.vendor_id=vcc.vendor_id
LEFT JOIN vendor_contract vcc2 ON vcc.vendor_id = vcc2.vendor_id AND vcc2.cont_start <= CURDATE()
AND ( vcc2.contract_type = 'per_release_term' AND
( vcc2.cont_start = '0000-00-00' OR vcc2.release_term <=0 OR ( vcc2.cont_start + interval vcc2.release_term month) > CURDATE())
OR ( (vcc2.contract_type <> 'per_release_term' OR vcc2.contract_type IS NULL) AND (vcc2.cont_end >= CURDATE() OR vcc2.cont_end IS NULL OR vcc2.cont_end = '0000-00-00'))
)
AND vcc.cont_start < vcc2.cont_start
where vcc2.id IS NULL AND vcc.cont_start <= CURDATE()
AND ( vcc.contract_type = 'per_release_term' AND
( vcc.cont_start = '0000-00-00' OR vcc.release_term <=0 OR ( vcc.cont_start + interval vcc.release_term month) > CURDATE())
OR ( (vcc.contract_type <> 'per_release_term' OR vcc.contract_type IS NULL) AND (vcc.cont_end >= CURDATE() OR vcc.cont_end IS NULL OR vcc.cont_end = '0000-00-00'))
)
and v.vendor_id = ?
ORDER BY v.vendor_id ";
if ($this->isPDO) {
$dataParams = [$label_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $label_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$territory_carveouts = array();
if ($row = $rs[0]) {
$territory_carveouts = $row['territory_carve_out'] ? explode(',', trim($row['territory_carve_out'], ',')) : array();
}
if ($display_mode == 1) {
$this->territory_carve_out_display = (count($territory_carveouts) ? get_name_from_country($this->wrapperObj, $territory_carveouts) : "");
return (count($territory_carveouts) ? get_name_from_country($this->wrapperObj, $territory_carveouts) : "");
}
$this->territory_carve_out = (count($territory_carveouts) ? ($territory_carveouts) : array());
return (count($territory_carveouts) ? ($territory_carveouts) : array());
}
}
public function get_territory_restrictions($display_mode = 1, $trim = 1, $char = 50)
{
$terr = array();
$sql = 'select c.id, c.name
from country c
inner join release_territory_restriction rtr
on c.id = rtr.country_id
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
foreach ($rs as $row) {
$terr[] = $row['id'];
}
$terr = array_unique($terr);
if ($display_mode == 1) {
return (count($terr) ? simplify_territory_display($this->wrapperObj, $terr, $trim, $char) : "");
}
return (count($terr) ? ($terr) : array());
}
public function set_territory_restrictions($territory_restrictions, $append = false)
{
if (!$append) {
$sql = 'delete
from release_territory_restriction
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
if (count($territory_restrictions)) {
$sql = 'insert ignore into release_territory_restriction(upc, country_id, release_id)
select r.upc, c.id, r.release_id
from releases r, country c
where r.release_id = ?
and c.id in (' . implode(',', array_fill(0, count($territory_restrictions) , '?')) . ')';
if ($this->isPDO) {
$dataParams = [];
$dataParams[] = $this->release_id;
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
foreach ($territory_restrictions as $val) {
$this->isPDO ? $dataParams[] = $val : $dataParams->addDataParam('i', $val);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
}
public function get_upc()
{
return $this->upc;
}
public function get_display_upc()
{
return $this->display_upc;
}
public function set_upc($upc)
{
$sql = 'update releases set upc = ?
where release_id = ? AND release_status <> "in_content"';
if ($this->isPDO) {
$dataParams = [$upc, $this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $upc);
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (!$this->isCatalog) $this->upc = $upc;
}
public function get_manufacturer_upc()
{
if ($this->manufacture_upc) {
return $this->manufacture_upc;
} else {
$sql = 'select manufacturer_upc
from releases r
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['manufacturer_upc'];
}
return false;
}
}
public function set_manufacturer_upc($manufacturer_upc)
{
$this->manufacture_upc = $manufacturer_upc;
$sql = 'update releases
set manufacturer_upc = ?
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$manufacturer_upc, $this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('s', $manufacturer_upc);
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function get_vendor_catalog_number()
{
$sql = 'select vendor_catalog_number
from releases r
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['vendor_catalog_number'];
}
return false;
}
public function set_vendor_catalog_number($vendor_catalog_number)
{
$sql = 'update releases
set vendor_catalog_number = ?
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$vendor_catalog_number, $this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('s', $vendor_catalog_number);
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function get_date_added()
{
if ($this->ingestion_completed) {
return $this->ingestion_completed;
} else {
$sql = 'select ingestion_completed
from releases r
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['ingestion_completed'];
}
return false;
}
}
public function set_date_added($date_added)
{
$this->ingestion_completed = $date_added;
}
public function get_assigned_to()
{
if ($this->assigned_to) {
return $this->assigned_to;
} else {
$sql = 'select concat(ou.f_name," ",ou.l_name) as assigned_to
from orchadmin_users ou
inner join vendor v on v.assigned_to = ou.id
inner join artist_info a on a.vendor_id = v.vendor_id
inner join releases r on r.artist_id = a.artist_id
where r.release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['assigned_to'];
}
return false;
}
}
public function get_artist($get_id = 0)
{
$sql = 'select a.artist_id, a.name
from artist_info a
inner join releases r on r.artist_id = a.artist_id
where r.release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
if ($get_id) {
return $row['artist_id'];
} else {
return $row['name'];
}
}
return false;
}
public function set_artist_id($artist_id)
{
if (!$this->isCatalog) {
$sql = 'update releases
set artist_id = ?
where release_id = ?
AND release_status <> "in_content"';
if ($this->isPDO) {
$dataParams = [$artist_id, $this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $artist_id);
$dataParams->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$rs = $this->wrapperObj->executeQuery($sql, $dataParams, $return_type);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
}
public function create_new_artist($new_artist_name, $country_id, $state, $other_state, $url)
{
$new_artist_id = 0;
if (!$this->isCatalog) {
$label_id = $this->get_label(0);
$sql = 'insert into artist_info (name, vendor_id, last_updated, orchard_country, address_state, address_other_state, url)
values (?, ?, now(), ?, ?, ?, ?)';
if ($this->isPDO) {
$dataParams = [];
$dataParams[] = $new_artist_name;
$dataParams[] = $label_id;
$dataParams[] = $country_id;
$dataParams[] = $state;
$dataParams[] = $other_state;
$dataParams[] = $url;
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('s', $new_artist_name);
$dataParams->addDataParam('i', $label_id);
$dataParams->addDataParam('i', $country_id);
$dataParams->addDataParam('i', $state);
$dataParams->addDataParam('s', $other_state);
$dataParams->addDataParam('s', $url);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
$new_artist_id = $this->wrapperObj->executeQuery($sql, $dataParams, $return_type);
if ($new_artist_id === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
return $new_artist_id;
}
public function set_artist_name($artist_name)
{
$this->artist_name = $artist_name;
}
public function get_all_artists_in_label($label_id)
{
if (!is_numeric($label_id)) {
$label_id = $this->get_label(0);
}
$map = array();
$sql = 'select artist_id, name
from artist_info
where vendor_id = ?
order by name';
if ($this->isPDO) {
$dataParams = [$label_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $label_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
foreach ($rs as $row) {
$map[$row['artist_id']] = $row['name'];
}
return $map;
}
public function get_label($display_mode = 1)
{
if (!is_numeric($this->account) && $this->account != '' && $display_mode === 1) {
return $this->account;
} elseif (is_numeric($this->account_id) && $this->account_id != '' && $display_mode === 0) {
return $this->account_id;
} else {
$sql = 'select v.vendor_id, if(v.company is null or v.company = " ", v.name, v.company) as company
from vendor v
inner join artist_info a on a.vendor_id = v.vendor_id
inner join releases r on r.artist_id = a.artist_id
where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs) > 0) {
if ($display_mode) {
$this->account = $rs[0]['company'];
return $rs[0]['company'];
} else {
$this->account_id = $rs[0]['vendor_id'];
return $rs[0]['vendor_id'];
}
}
return false;
}
}
public function set_label($label_name)
{
$this->account = $label_name;
}
public function get_audio_received()
{
$sql = 'select if(encoding = "Y", if(encoding_date is null or encoding_date = "0000-00-00", concat("Received on", date_received, ", encoding date not available."), encoding_date), "Encoding is No or Error") as audio_receive
from cd_receive
where upc = ?';
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$audio_receive_dates = array();
if (count($rs) > 0) {
foreach ($rs as $row) {
$audio_receive_dates[] = $row['audio_receive'];
}
}
if (count($audio_receive_dates)) {
return implode(',', $audio_receive_dates);
} else {
return "Not Received";
}
}
public function get_art_received()
{
$art_received_dates = array();
$sql = 'select if(cr.image_scan = "Y", if(cr.image_scan_date is null or cr.image_scan_date = "0000-00-00", concat("Received on ", cr.date_received, ", scan date not available."), cr.image_scan_date), "Image scan is No or Error") as art_received
from cd_receive cr where cr.upc = ?';
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
foreach ($rs as $row) {
$art_received_dates[] = $row['art_received'];
}
if (count($art_received_dates)) {
return implode(',', $art_received_dates);
} else {
return "Not Received";
}
}
public function get_date_received_in_asset_status()
{
if ($this->date_received_in_asset_status) {
return $this->date_received_in_asset_status;
} else {
$sql = 'select date_received
from cd_receive
where upc = ?
order by date_received desc';
if ($this->isPDO) {
$dataParams = [$this->upc];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
$this->date_received_in_asset_status = $row["date_received"];
return $row["date_received"];
}
}
return false;
}
public function get_date_received()
{
$sql = 'select ingestion_completed
from releases
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['ingestion_completed'];
} else {
return false;
}
}
public function get_label_dms_carveout($display_mode = 0)
{
$dms_carveouts = array();
if (!($this->dms_carve_out === false)) {
$dms_carveouts = (count($this->dms_carve_out) ? $this->dms_carve_out : array());
} else {
$label_id = $this->get_label(0);
$today = date("Y-m-d");
$sql = "SELECT v.vendor_id, vcc.id, vcc.cont_start, vcc.territory_carve_out, vcc.dms_carve_out
FROM vendor v
INNER JOIN vendor_contract vcc ON v.vendor_id=vcc.vendor_id
LEFT JOIN vendor_contract vcc2 ON vcc.vendor_id = vcc2.vendor_id AND vcc2.cont_start <= CURDATE()
AND ( vcc2.contract_type = 'per_release_term' AND
( vcc2.cont_start = '0000-00-00' OR vcc2.release_term <=0 OR ( vcc2.cont_start + interval vcc2.release_term month) > CURDATE())
OR ( (vcc2.contract_type <> 'per_release_term' OR vcc2.contract_type IS NULL) AND (vcc2.cont_end >= CURDATE() OR vcc2.cont_end IS NULL OR vcc2.cont_end = '0000-00-00'))
)
AND vcc.cont_start < vcc2.cont_start
where vcc2.id IS NULL AND vcc.cont_start <= CURDATE()
AND ( vcc.contract_type = 'per_release_term' AND
( vcc.cont_start = '0000-00-00' OR vcc.release_term <=0 OR ( vcc.cont_start + interval vcc.release_term month) > CURDATE())
OR ( (vcc.contract_type <> 'per_release_term' OR vcc.contract_type IS NULL) AND (vcc.cont_end >= CURDATE() OR vcc.cont_end IS NULL OR vcc.cont_end = '0000-00-00') )
)
and v.vendor_id = ?
ORDER BY v.vendor_id ";
if ($this->isPDO) {
$dataParams = [$label_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $label_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
$dms_carveouts_str = trim($row['dms_carve_out'], ',');
if ($dms_carveouts_str) {
if ($display_mode) {
$dataParams = $this->isPDO ? [] : new QueryData();
$dms_carveout_array = explode(',', $dms_carveouts_str);
$sql2 = 'select name
from customer_master
where customer_id in(' . implode(',', array_fill(0 ,count($dms_carveout_array), '?')) . ')';
foreach ($dms_carveout_array as $val) {
$this->isPDO ? $dataParams[] = $val : $dataParams->addDataParam('i', $val);
}
$rs2 = $this->wrapperObj->executeQuery($sql2, $dataParams);
if ($rs2 === false) {
$this->isPDO ? show_pdo_error($sql2, $this->wrapperObj->getLastStatement()) : showierror($sql2);
}
$dms_names = array();
foreach ($rs2 as $row2) {
$dms_names[] = $row2['name'];
}
$this->dms_carve_out = count($dms_names) ? $dms_names : array();
$dms_carveouts = count($dms_names) ? $dms_names : array();
} else {
$tmp_dms_carveouts = explode(',', $dms_carveouts_str);
$this->dms_carve_out = count($tmp_dms_carveouts) ? $tmp_dms_carveouts : array();
$dms_carveouts = count($tmp_dms_carveouts) ? $tmp_dms_carveouts : array();
}
} else {
$this->dms_carve_out = $dms_carveouts;
}
}
}
return $dms_carveouts;
}
public function get_label_dms_master_carveout($display_mode = 0)
{
$label_id = $this->get_label(0);
$sql = "SELECT vdmr.customer_master_master_id, cmm.customer_name, distribution_type_id, dt.name
FROM vendor v
INNER JOIN vendor_contract vcc ON v.vendor_id=vcc.vendor_id
LEFT JOIN vendor_contract vcc2 ON vcc.vendor_id = vcc2.vendor_id AND vcc2.cont_start <= CURDATE()
AND ( vcc2.contract_type = 'per_release_term' AND
( vcc2.cont_start = '0000-00-00' OR vcc2.release_term <=0 OR ( vcc2.cont_start + interval vcc2.release_term month) > CURDATE())
OR ( (vcc2.contract_type <> 'per_release_term' OR vcc2.contract_type IS NULL) AND (vcc2.cont_end >= CURDATE() OR vcc2.cont_end IS NULL OR vcc2.cont_end = '0000-00-00') )
)
AND vcc.cont_start < vcc2.cont_start
inner join vendor_dms_master_restriction vdmr on vdmr.vendor_contract_id = vcc.id
inner join distribution_type dt on dt.id = vdmr.distribution_type_id
inner join customer_master_master cmm on cmm.customer_master_master_id = vdmr.customer_master_master_id
where vcc2.id IS NULL AND vcc.cont_start <= CURDATE()
AND ( vcc.contract_type = 'per_release_term' AND
( vcc.cont_start = '0000-00-00' OR vcc.release_term <=0 OR ( vcc.cont_start + interval vcc.release_term month) > CURDATE())
OR ( (vcc.contract_type <> 'per_release_term' OR vcc.contract_type IS NULL) AND (vcc.cont_end >= CURDATE() OR vcc.cont_end IS NULL OR vcc.cont_end = '0000-00-00'))
)
and v.vendor_id = ?
order by cmm.customer_name ";
if ($this->isPDO) {
$dataParams = [$label_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $label_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$customer_master_master_ids_dist_types = array();
foreach ($rs as $row) {
if (!$display_mode) {
$customer_master_master_ids_dist_types[$row['distribution_type_id']][] = $row['customer_master_master_id'];
} else {
$customer_master_master_ids_dist_types[$row['name']][] = $row['customer_name'];
}
}
if (count($customer_master_master_ids_dist_types)) {
return $customer_master_master_ids_dist_types;
}
return false;
}
public static function get_customer_master_name_by_ids($wrapperObj, $ids)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$ids = trim($ids, ',');
if ($ids) {
$dataParams = $isPDO ? [] : new QueryData();
$ids_array = explode(',', $ids);
$sql = 'select name from customer_master where customer_id in (' . implode(',', (array_fill(0, count($ids_array), '?'))) . ')';
foreach ($ids_array as $val) {
$isPDO ? $dataParams[] = $val : $dataParams->addDataParam('i', $val);
}
$rs = $wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
$dms = array();
foreach ($rs as $row) {
$dms[] = $row['name'];
}
return implode(',', $dms);
}
return "";
}
public function get_customer_master_name_by_id($id)
{
$sql = 'select name
from customer_master
where customer_id = ?';
if ($this->isPDO) {
$dataParams = [$id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
return $row['name'];
}
return false;
}
public function get_dms_carveout($display_mode = 1, $trim = 1, $char = 50)
{
$sql = 'select cm.customer_id, cm.name as dms
from customer_master cm
inner join release_dms_restriction rdr on rdr.dms_customer_id = cm.customer_id
where rdr.release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false){
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$dms_carveouts = array();
foreach ($rs as $row) {
if ($display_mode) {
$dms_carveouts[] = $row['dms'];
} else {
$dms_carveouts[] = $row['customer_id'];
}
}
if (count($dms_carveouts)) {
if ($display_mode) {
return ($trim ? (substr(implode(',', $dms_carveouts), 0, $char) . "...") : implode(',', $dms_carveouts));
} else {
return $dms_carveouts;
}
}
return ($display_mode ? "" : $dms_carveouts);
}
public function get_all_dms_carveouts($display_mode = 1)
{
$sql = 'select cm.customer_id, cm.name
from customer_master cm inner join release_dms_restriction rdr on rdr.dms_customer_id = cm.customer_id
where rdr.release_id = ?
group by customer_id order by name';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$carve_outs = array();
foreach ($rs as $row) {
if ($display_mode) {
$carve_outs[$row['customer_id']] = $row['name'];
} else {
$carve_outs[] = $row['customer_id'];
}
}
return $carve_outs;
}
public function get_all_sub_stores()
{
$sql = "select customer_id, name from customer_master order by name ";
$dataParams = $this->isPDO ? [] : new QueryData();
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showerror($sql);
}
$customer_masters = array();
foreach ($rs as $row) {
$customer_masters[$row['customer_id']] = $row['name'];
}
return $customer_masters;
}
public function set_dms_carveout($dmss, $append = false)
{
if (!$append) {
$sql = 'delete from release_dms_restriction where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$rs = $this->wrapperObj->executeQuery($sql, $data_params, $return_type);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
if (is_array($dmss) and count($dmss)) {
$sql = 'insert ignore into release_dms_restriction (release_id, upc, dms_customer_id)
select r.release_id, r.upc, cm.customer_id
from releases r, customer_master cm
where r.release_id = ? and cm.customer_id in (' . implode(',', array_fill(0, count($dmss), '?')) . ')';
if ($this->isPDO) {
$data_params = [];
$data_params[] = $this->release_id;
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
foreach ($dmss as $dms_result) {
$this->isPDO ? $data_params[] = $dms_result : $data_params->addDataParam('i', $dms_result);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$rs = $this->wrapperObj->executeQuery($sql, $data_params, $return_type);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
}
public function set_dms_master_carveout($dist_type_dms_master_map = array(), $delete = true)
{
if ($delete) {
$del_query = 'DELETE FROM release_default_dms_master_restriction WHERE upc = ?';
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$rs_del_query = $this->wrapperObj->executeQuery($del_query, $data_params, $return_type);
if ($rs_del_query === false) {
$this->isPDO ? show_pdo_error($del_query, $this->wrapperObj->getLastStatement()) : showierror($del_query);
}
$del_query = 'DELETE FROM release_dms_master_restriction WHERE upc = ?';
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$rs_del_query = $this->wrapperObj->executeQuery($del_query, $data_params, $return_type);
if ($rs_del_query === false) {
$this->isPDO ? show_pdo_error($del_query, $this->wrapperObj->getLastStatement()) : showierror($del_query);
}
}
// get distribution types
$sql = 'SELECT id FROM distribution_type';
$dataParams = $this->isPDO ? [] : new QueryData();
$result = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($result === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showerror($sql);
}
$added_by = $_SESSION['S_USERID'];
foreach ($result as $row) {
if ($dist_type_dms_master_map[$row['id']] and count($dist_type_dms_master_map[$row['id']])) {
$sql = 'INSERT IGNORE INTO release_dms_master_restriction (customer_master_master_id, distribution_type_id, upc, last_updated, updated_by, release_id) VALUES ';
$query = "";
$dms_params = $this->isPDO ? [] : new QueryData();
foreach ($dist_type_dms_master_map[$row['id']] as $dms_master_id) {
if ($dms_master_id) {
$query .= '(?, ?, ?, NOW(), ?, ?),';
$this->isPDO ? $dms_params[] = $dms_master_id : $dms_params->addDataParam('i', $dms_master_id);
$this->isPDO ? $dms_params[] = $row['id'] : $dms_params->addDataParam('i', $row['id']);
$this->isPDO ? $dms_params[] = $this->upc : $dms_params->addDataParam('i', $this->upc);
$this->isPDO ? $dms_params[] = $added_by : $dms_params->addDataParam('i', $added_by);
$this->isPDO ? $dms_params[] = $this->release_id : $dms_params->addDataParam('i', $this->release_id);
} elseif ($dms_master_id == 0) {
$insert_query = 'INSERT IGNORE INTO release_default_dms_master_restriction (upc, distribution_type_id, release_id)
VALUES (?, ?, ?)';
$data_params = $this->isPDO ? [] : new QueryData();
$this->isPDO ? $data_params[] = $this->upc : $data_params->addDataParam('i', $this->upc);
$this->isPDO ? $data_params[] = $row['id'] : $data_params->addDataParam('i', $row['id']);
$this->isPDO ? $data_params[] = $this->release_id : $data_params->addDataParam('i', $this->release_id);
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
$rs_insert_query = $this->wrapperObj->executeQuery($insert_query, $data_params, $return_type);
if ($rs_insert_query === false) {
$this->isPDO ? show_pdo_error($insert_query, $this->wrapperObj->getLastStatement()) : showierror($insert_query);
}
}
}
if ($query != "") {
$sql .= trim($query, ',');
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$rs = $this->wrapperObj->executeQuery($sql, $dms_params, $return_type);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
}
} //while loop
}
public function get_dms_master_restriction($distribution_type_id = 1)
{
$tr_dms_master_carve_out = array();
$sql = 'SELECT customer_master_master_id
FROM release_dms_master_restriction
WHERE release_id = ?
AND distribution_type_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id, $distribution_type_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
$dataParams->addDataParam('s', $distribution_type_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
foreach ($rs as $row ) {
$tr_dms_master_carve_out[] = $row['customer_master_master_id'];
}
return $tr_dms_master_carve_out;
}
public function get_status()
{
if ($this->status) {
return $this->status;
} else {
if ($this->isCatalog) {
return "Catalog";
} else {
$sql = 'select release_status
from releases
where release_id = ?';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($row = $rs[0]) {
$this->status = $row['release_status'];
return $row['release_status'];
} else {
return false;
}
}
}
}
public function set_status($new_status)
{
self::set_release_status($this->wrapperObj, $this->release_id, $_SESSION['S_USERID'], $new_status);
if (!$this->isCatalog) $this->status = $new_status;
}
public function get_mkt_priority($display_mode = 1)
{
$priority_country = array();
$sql = 'select if(p.priority is null or p.priority = "", "No Priority", p.priority) as priority, p.country_id
from mkt_priority p
where p.release_id = ?
order by priority';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
foreach ($rs as $row) {
$priority_country[$row['priority']][] = $row['country_id'];
}
}
$display_str = '';
if (count($priority_country)) {
if (!$display_mode) {
return $priority_country;
}
foreach ($priority_country as $k => $v) {
if (count($v)) {
$display_str .= "[Priority " . strtoupper($k) . "] ";
if ($display_mode == 2) {
$display_str .= continent_country_count($this->wrapperObj, $v);
} else {
$display_str .= simplify_territory_display($this->wrapperObj, $v, 0, '');
}
}
}
}
if ($display_str) {
return $display_str;
} else {
return false;
}
}
public function set_mkt_priority($priority_country_map)
{
$sql = 'delete from mkt_priority where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($priority_country_map)) {
$sql = "insert into mkt_priority(upc, release_id, country_id, priority) values ";
$data_params = $this->isPDO ? [] : new QueryData();
foreach ($priority_country_map as $k => $v) {
foreach ($v as $each_country) {
$sql .= '(?, ?, ?, ?),';
$this->isPDO ? $data_params[] = $this->upc : $data_params->addDataParam('i', $this->upc);
$this->isPDO ? $data_params[] = $this->release_id : $data_params->addDataParam('i', $this->release_id);
$this->isPDO ? $data_params[] = $each_country : $data_params->addDataParam('i', $each_country);
$this->isPDO ? $data_params[] = $k : $data_params->addDataParam('s', $k);
}
}
$sql = trim($sql, ',');
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
}
public function get_int_mkt_priority($display_mode = 1)
{
$priority_country = array();
$sql = 'select if(p.priority is null or p.priority = "", "No Priority", p.priority) as priority, p.country_id
from int_mkt_priority p
where p.release_id = ?
order by priority';
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
foreach ($rs as $row) {
$priority_country[$row['priority']][] = $row['country_id'];
}
}
$display_str = '';
if (count($priority_country)) {
if (!$display_mode) {
return $priority_country;
}
foreach ($priority_country as $k => $v) {
if (count($v)) {
$display_str .= "Priority: " . strtoupper($k) . " ";
if ($display_mode == 2) {
$display_str .= continent_country_count($this->wrapperObj, $v);
} else {
$display_str .= simplify_territory_display($this->wrapperObj, $v, 0, '');
}
}
}
}
if ($display_str) {
return $display_str;
} else {
return false;
}
}
public function set_int_mkt_priority($priority_country_map)
{
$priority_str_map = array("one" => 1, "two" => 2, "three" => 3);
$sql = 'delete from int_mkt_priority where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($priority_country_map)) {
$data_params = $this->isPDO ? [] : new QueryData();
$sql = "insert into int_mkt_priority(upc, release_id, country_id, priority) values ";
foreach ($priority_country_map as $k => $v) {
foreach ($v as $each_country) {
$sql .= '(?, ?, ?, ?),';
$this->isPDO ? $data_params[] = $this->upc : $data_params->addDataParam('i', $this->upc);
$this->isPDO ? $data_params[] = $this->release_id : $data_params->addDataParam('i', $this->release_id);
$this->isPDO ? $data_params[] = $each_country : $data_params->addDataParam('i', $each_country);
$this->isPDO ? $data_params[] = $priority_str_map[$k] : $data_params->addDataParam('i', $priority_str_map[$k]);
}
}
$sql = trim($sql, ',');
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
}
public function set_program_info($fileElementName, $internal_public, $description, $type)
{
$varFileTypes = array('jpg', 'jpeg', 'gif', 'bmp', 'tif', 'doc', 'xls', 'ppt', 'txt', 'eps', 'psd', 'pdf');
$varDir = '../../../assets/program_info/';
$file = $_FILES[$fileElementName]['tmp_name'];
$filename = $_FILES[$fileElementName]['name'];
$ext = strtolower(substr(strrchr($filename, '.'), 1));
// error check required fields
$err_msg = '';
if (!$filename and !$description)
$err_msg .= '
Descripton or Attachment must be present.';
if ($filename and !in_array($ext, $varFileTypes))
$err_msg .= 'The allowed file extensions are jpg, jpeg, gif, bmp, tif, doc, xls, ppt, txt, eps, psd and pdf.';
if (!$err_msg) {
//remove old existing particular type of program_info
$sql = 'delete from mkt_program_info where mkt_program_id = ? and info_for = ' . QueryFormatString("release") . '
and info_for_id = ?';
if ($this->isPDO) {
$data_params = [$type, $this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $type);
$data_params->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$description = str_replace(' ', ' ', $description);
$sql = 'INSERT INTO mkt_program_info (mkt_program_id, info_for, info_for_id, description, date_added, last_updated, scope)
VALUES (?, ' . QueryFormatString('release') . ', ?, ?, NOW(), NOW(), ?)';
if ($this->isPDO) {
$data_params = [];
$data_params[] = $type;
$data_params[] = $this->release_id;
$data_params[] = $description;
$data_params[] = $internal_public;
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $type);
$data_params->addDataParam('i', $this->release_id);
$data_params->addDataParam('s', $description);
$data_params->addDataParam('s', $internal_public);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
$program_info_id = $this->wrapperObj->executeQuery($sql, $data_params, $return_type);
if ($program_info_id === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if ($file) {
if (is_uploaded_file($file)) {
chmod($file, 0666);
move_uploaded_file($file, $varDir . $program_info_id . '.' . $ext);
$sql = 'UPDATE mkt_program_info SET attachment = "Y" WHERE mkt_program_info_id = ?';
if ($this->isPDO) {
$data_params = [$program_info_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $program_info_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
}
}
@unlink($_FILES[$fileElementName]);
return $err_msg ? $err_msg : $program_info_id;
}
//only getting marketing blurb for now
public function get_mkt_program_info()
{
$sql = "SELECT mkt_program_info_id, scope, description, last_updated, date_added, if(mpi.mkt_program_id=15 and scope='public',1,if(mpi.mkt_program_id=15 and scope='internal_only',2,3)) AS sort_order
FROM mkt_program_info mpi
WHERE info_for = " . QueryFormatString('release') . "
AND info_for_id = ? AND mpi.mkt_program_id = 15
ORDER BY sort_order, last_updated DESC, date_added DESC";
if ($this->isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$mkt_pi = $this->wrapperObj->executeQuery($sql, $dataParams);
if ($mkt_pi === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$description = '';
$public_vs_internal = '';
$mkt_program_info_id = '';
if (count($mkt_pi)) {
foreach ($mkt_pi as $mkt_pi_row) {
$description = trim($mkt_pi_row['description']) ? trim($mkt_pi_row['description']) : '';
$public_vs_internal = $mkt_pi_row['scope'];
$mkt_program_info_id = $mkt_pi_row['mkt_program_info_id'];
if ($description || $public_vs_internal) break;
}
}
if ($mkt_program_info_id) {
return array('id' => $mkt_program_info_id, 'description' => $description, 'scope' => $public_vs_internal);
} else {
return false;
}
}
public function get_asset_type()
{
$sql = 'select track_type from track where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$asset_types = array();
if (count($rs)) {
foreach ($rs as $row) {
$asset_types[] = $row['track_type'];
}
}
$asset_types = array_unique($asset_types);
if (count($asset_types)) {
if (count($asset_types) == 1) {
return $asset_types[0];
} else {
return "Mixed";
}
}
return false;
}
public function get_video_track()
{
$sql = 'select id from track t where t.track_type = "video" and t.release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$tracks = array();
if (count($rs)) {
foreach ($rs as $row) {
$tmp_track = new RSD_Track($this->isCatalog, $row['id']);
$tracks[] = $tmp_track;
}
}
if (count($tracks)) {
return $tracks;
} else {
return false;
}
}
public function get_music_track()
{
$sql = 'select id from track t where t.track_type = "music" and t.release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$tracks = array();
if (count($rs)) {
foreach ($rs as $row) {
$tmp_track = new RSD_Track($this->isCatalog, $row['id']);
$tracks[] = $tmp_track;
}
}
if (count($tracks)) {
return $tracks;
} else {
return false;
}
}
public function get_pdf_received()
{
if ($this->isCatalog) {
$sql = 'SELECT asset_id, asset_type, asset_title, asset_file_name, bonus_material
FROM asset
WHERE asset_type = "release" AND product_id = ?
ORDER BY asset_title';
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$file_links = array();
if (count($rs)) {
foreach ($rs as $row) {
$file_links[] = 'Download';
}
}
if (count($file_links)) {
return implode('
', $file_links);
} else {
return "";
}
} else {
if ($this->upc) {
$sql = 'SELECT asset_id, asset_type, asset_title, asset_file_name, bonus_material
FROM asset
WHERE asset_type = "release" AND product_id = ?
ORDER BY asset_title';
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$file_links = array();
if (count($rs)) {
foreach ($rs as $row) {
$file_links[] = 'Download';
}
}
if (count($file_links)) {
return implode('
', $file_links);
} else {
return "";
}
} else {
return "";
}
}
}
public function upload_marketing_material($fileElementName, $asset_title, $bonus_material)
{
$str = '';
if ($this->upc) {
$error = "";
$msg = "";
if ($fileElementName) {
if (!empty($_FILES[$fileElementName]['error'])) {
switch ($_FILES[$fileElementName]['error']) {
case '1':
$error = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
break;
case '2':
$error = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
break;
case '3':
$error = 'The uploaded file was only partially uploaded';
break;
case '4':
$error = 'No file was uploaded.';
break;
case '6':
$error = 'Missing a temporary folder';
break;
case '7':
$error = 'Failed to write file to disk';
break;
case '8':
$error = 'File upload stopped by extension';
break;
case '999':
default:
$error = 'No error code avaiable';
}
} elseif (empty($_FILES[$fileElementName]['tmp_name']) || $_FILES[$fileElementName]['tmp_name'] == 'none') {
$error = 'No file was uploaded..';
} else {
//$msg .= " File Name: " . $_FILES[$fileElementName]['name'] . ", ";
//$msg .= " File Size: " . @filesize($_FILES[$fileElementName]['tmp_name']);
// move the file to correct folder. If success then update the database.
$asset_upload = new file_upload();
$source_dir = "../../../assets/release/";
$asset_upload->upload_dir = $source_dir;
if ($bonus_material) {
$asset_upload->extensions = array(".pdf"); // specify the allowed extensions here;
} else {
$asset_upload->extensions = array(".jpg", ".doc", ".pdf"); // specify the allowed extensions here;
}
$asset_upload->the_temp_file = $_FILES[$fileElementName]['tmp_name'];
$asset_upload->the_file = $this->upc . "_" . $_FILES[$fileElementName]['name'];
$asset_upload->http_error = $_FILES[$fileElementName]['error'];
$asset_upload->do_filename_check = "y"; // use this boolean to check for a valid filename
if ($asset_upload->upload()) {
//Since the file is uploaded and moved to the correct folder successfully update the database.
$insert = 'INSERT INTO asset (asset_type, product_id, asset_title, asset_file_name, bonus_material)
VALUES ("release", ?, ?, ?, ' . ($bonus_material ? '"Y"' : '"N"') . ')';
if ($this->isPDO) {
$data_params = [];
$data_params[] = $this->upc;
$data_params[] = $asset_title;
$data_params[] = $asset_upload->the_file;
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
$data_params->addDataParam('s', $asset_title);
$data_params->addDataParam('s', $asset_upload->the_file);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
if ($this->wrapperObj->executeQuery($insert, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($insert, $this->wrapperObj->getLastStatement()) : showierror($insert);
}
$msg .= "Upload Successful.";
}else {
if ($bonus_material && !in_array(".pdf", $asset_upload->extensions)) {
$error = 'Bonus Material can only be .pdf format.';
} elseif (!$bonus_material && !in_array(".pdf", $asset_upload->extensions) && !in_array(".doc",
$asset_upload->extensions) && !in_array(".jpg",
$asset_upload->extensions)) {
$error = 'Bonus Material can only be .jpg, .doc and .pdf.';
}
}
@unlink($_FILES[$fileElementName]);
}
$str = "{error: '" . $error . "',msg: '" . $msg . "',str:'" . $this->get_pdf_received() . "'}";
}
} else {
$str = "{error: 'UPC is needed.',msg: '',str:''}";
}
return $str;
}
public function get_focus_track_ids()
{
$sql = 'select focus_tracks from onesheet where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$tracks = '';
if (count($rs)) {
$tracks = $rs[0]['focus_tracks'];
}
if ($tracks) {
$focus_tracks = array();
$tracks = explode(',', $tracks);
foreach ($tracks as $v) {
$tmp_track = new RSD_Track($this->isCatalog, $v);
$focus_tracks[] = $tmp_track;
}
return $focus_tracks;
} else {
return false;
}
}
public function set_focus_track($track_ids)
{
if (is_array($track_ids) && count($track_ids)) {
$sql = 'select onesheet_id from onesheet where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$result = $this->wrapperObj->executeQuery($sql, $data_params);
if ($result === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($result)) {
$onesheet_id = $result[0]['onesheet_id'];
$sql = 'update onesheet set focus_tracks = ? where onesheet_id = ?';
if ($this->isPDO) {
$data_params = [implode(',', $track_ids), $onesheet_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('s', implode(',', $track_ids));
$data_params->addDataParam('i', $onesheet_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}else {
$sql = 'insert into onesheet (focus_tracks, upc, release_id)
values (?, ?, ?)';
if ($this->isPDO) {
$data_params = [];
$data_params[] = implode(',', $track_ids);
$data_params[] = $this->upc;
$data_params[] = $this->release_id;
} else {
$data_params = new QueryData();
$data_params->addDataParam('s', implode(',', $track_ids));
$data_params->addDataParam('i', $this->upc);
$data_params->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
}
}
public function set_bonus_tracks($track_ids)
{
$music = $this->get_music_track();
$video = $this->get_video_track();
foreach ($music as $v) {
$map = $v->get_uid();
$sql = 'update track set bonus = "N" where id = ?';
if ($this->isPDO) {
$data_params = [$map[1]];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $map[1]);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
foreach ($video as $v) {
$map = $v->get_uid();
$sql = 'update track set bonus = "N" where id = ?';
if ($this->isPDO) {
$data_params = [$map[1]];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $map[1]);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
if (count($track_ids)) {
foreach ($track_ids as $v) {
$sql = 'update track set bonus = "Y" where id = ?';
if ($this->isPDO) {
$data_params = [$v];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $v);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
}
}
public function get_bonus_track_ids()
{
$sql = 'select id from track where bonus = "Y" and release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$tracks = array();
if (count($rs)) {
foreach ($rs as $row) {
$tracks[] = $row['id'];
}
}
if (count($tracks)) {
$bonus_tracks = array();
foreach ($tracks as $v) {
$tmp_track = new RSD_Track($this->isCatalog, $v);
$bonus_tracks[] = $tmp_track;
}
return $bonus_tracks;
} else {
return false;
}
}
public function get_free_track_ids()
{
if ($this->isCatalog) {
$sql = "SELECT t.id
FROM proposal_response pr
INNER JOIN proposals p on p.proposal_id = pr.proposal_id
INNER JOIN proposal_response_list prl on prl.proposal_response_id = pr.proposal_response_id
INNER JOIN track t on t.id = prl.response_id
INNER JOIN releases r on r.upc = t.upc
WHERE prl.status = 'approved' and p.response_type = 'track' and r.upc = ?
group by t.id ";
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$free_tracks = array();
if (count($rs)) {
foreach ($rs as $row) {
$free_tracks[] = $row['id'];
}
}
if (count($free_tracks)) {
$ft = array();
foreach ($free_tracks as $v) {
$tmp_track = new RSD_Track($this->isCatalog, $v);
$ft[] = $tmp_track;
}
return $ft;
} else {
return false;
}
} else {
return false;
}
}
public function get_free_track_ids_count()
{
if ($this->isCatalog) {
$sql = "SELECT t.id
FROM proposal_response pr
INNER JOIN proposals p on p.proposal_id = pr.proposal_id
INNER JOIN proposal_response_list prl on prl.proposal_response_id = pr.proposal_response_id
INNER JOIN track t on t.id = prl.response_id
WHERE prl.status = 'approved' and p.response_type = 'track' and t.upc = ?
group by t.id ";
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
return count($rs);
}else {
return false;
}
}
public function get_tracks()
{
$sql = 'select id from track where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$tracks = array();
if (count($rs)) {
foreach ($rs as $row) {
$tracks[] = new RSD_Track($this->isCatalog, $row['id']);
}
}
return count($tracks) ? $tracks : false;
}
public function get_exclusivity($display_mode = 1, $trim = 1, $char = 50, $orientation = 0)
{
$sql = 'select id, dms_customer_id, sale_start_date from release_exclusive where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$store_dates = array();
if (count($rs)) {
foreach ($rs as $row) {
$store_dates[] = array($row['dms_customer_id'], $row['sale_start_date'], $row['id']);
}
}
if (count($store_dates)) {
if ($display_mode) {
$display = array();
if (count($store_dates)) {
foreach ($store_dates as $v) {
$sql = 'select name from customer_master where customer_id = ?';
if ($this->isPDO) {
$data_params = [$v[0]];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $v[0]);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
$display[] = $rs[0]['name'] . ' ' . ($v[1] ? $v[1] : '-');
}
}
}
return ($trim ? (substr(implode(",", $display), 0, $char) . "...") : implode(($orientation ? "
" : ','),
$display));
} else {
return $store_dates;
}
} else {
return false;
}
}
public function set_exclusivity($dmss, $sale_start_date)
{
if (count($dmss) && $sale_start_date) {
foreach ($dmss as $value) {
$check = 'SELECT re.id, cm.name FROM release_exclusive re
inner join customer_master cm on re.dms_customer_id = cm.customer_id
inner join customer_master cm2 on cm.territory = cm2.territory
WHERE release_id = ?
and cm2.customer_id = ?';
$data_params = $this->isPDO ? [] : new QueryData();
if ($this->isPDO) {
$data_params = [$this->release_id, $value];
} else {
$data_params->addDataParam('i', $this->release_id);
$data_params->addDataParam('i', $value);
}
$check_result = $this->wrapperObj->executeQuery($check, $data_params);
if ($check_result === false) {
$this->isPDO ? show_pdo_error($check, $this->wrapperObj->getLastStatement()) : showierror($check);
}
if (count($check_result) == 0) {
$insert_query = 'INSERT INTO release_exclusive (release_id, upc, dms_customer_id, sale_start_date)
SELECT release_id, upc, ?, ?
FROM releases
WHERE release_id = ?';
if ($this->isPDO) {
$data_params = [];
$data_params[] = $value;
$data_params[] = $sale_start_date;
$data_params[] = $this->release_id;
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $value);
$data_params->addDataParam('s', $sale_start_date);
$data_params->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
if ($this->wrapperObj->executeQuery($insert_query, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($insert_query, $this->wrapperObj->getLastStatement()) : showierror($insert_query);
}
} else {
$dms_name = $check_result[0]['name'];
return "Error: A release cannot have multiple exclusivity for the same territory. This release already has exclusive sale start date for $dms_name.";
}
}
} else {
return "Invalid Entry.";
}
}
public function get_imprint()
{
if ($this->label_imprint) {
return $this->label_imprint;
} else {
$sql = 'select label from releases where release_id = ? and label is not null and label <> ""';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
return $rs[0]['label'];
} else {
return false;
}
}
}
public function set_imprint($imprint)
{
$this->label_imprint = $imprint;
$sql = 'update releases set label = ? where upc = ?';
if ($this->isPDO) {
$data_params = [$imprint, $this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('s', $imprint);
$data_params->addDataParam('i', $this->upc);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function get_one_sheet_id()
{
$sql = "SELECT mkt_program_info_id, scope, description, last_updated, date_added, if(mpi.mkt_program_id=15 and scope='public',1,if(mpi.mkt_program_id=15 and scope='internal_only',2,3)) AS sort_order
FROM mkt_program_info mpi
WHERE info_for = " . QueryFormatString('release') . "
AND info_for_id = ? AND mpi.mkt_program_id = 12
ORDER BY sort_order, last_updated DESC, date_added DESC";
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$mkt_pi = $this->wrapperObj->executeQuery($sql, $data_params);
if ($mkt_pi === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$description = '';
$public_vs_internal = '';
$mkt_program_info_id = '';
if (count($mkt_pi)) {
foreach ($mkt_pi as $mkt_pi_row) {
$description = trim($mkt_pi_row['description']) != '' ? trim($mkt_pi_row['description']) : '';
$public_vs_internal = $mkt_pi_row['scope'];
$mkt_program_info_id = $mkt_pi_row['mkt_program_info_id'];
if ($description || $public_vs_internal) break;
}
}
if ($mkt_program_info_id) {
return array("description" => $description, "scope" => $public_vs_internal, "mkt_program_info_id" => $mkt_program_info_id);
} else {
return false;
}
}
public function get_one_sheet_link($mkt_program_info_id)
{
if ($mkt_program_info_id) {
$sql = 'SELECT description FROM mkt_program_info mpi WHERE mkt_program_info_id = ?';
if ($this->isPDO) {
$data_params = [$mkt_program_info_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $mkt_program_info_id);
}
$mkt_pi = $this->wrapperObj->executeQuery($sql, $data_params);
if ($mkt_pi === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($mkt_pi)) {
$description = $mkt_pi[0]['description'];
}
if ($description) {
return "" . strip_tags($description) . "";
} else {
return false;
}
}
}
public function get_sale_start_date()
{
if ($this->sale_start_date) {
return $this->sale_start_date;
} else {
$sql = 'select sale_start_date from releases where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
return $rs[0]['sale_start_date'];
}
return false;
}
}
public function get_preorder()
{
$sql = 'select preorder_date from releases where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
if ($rs[0]['preorder_date'] == '1900-01-01' || $rs[0]['preorder_date'] != NULL) {
return "Y";
}
}
return "N";
}
public function get_preorder_date()
{
$sql = 'select preorder_date from releases where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
return $rs[0]['preorder_date'];
}
return false;
}
public function set_sale_start_date($sale_start_date)
{
$this->sale_start_date = $sale_start_date;
$sql = 'update releases set sale_start_date = ? where release_id = ?';
if ($this->isPDO) {
$data_params = [$sale_start_date, $this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('s', $sale_start_date);
$data_params->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function render_tooltip_link($column, $width, $value, $style = 1, $params = '')
{
$id = time();
$str = "" .
$value . "";
return $str;
}
public function get_delivery_info($dms_customer_id, $display_mode = 0)
{
$delivery_info = array();
//get customer master master id
$sql = 'select customer_master_master_id from customer_master where customer_id = ?';
if ($this->isPDO) {
$data_params = [$dms_customer_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $dms_customer_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
$customer_master_master_id = $rs[0]['customer_master_master_id'];
}
if ($this->isCatalog) {
if ($display_mode) {
$sql = 'select dd.date_delivered, en.encoder
from delivery_history dd
inner join encoder en on en.encoder_id = dd.encoder_id
where dd.customer_master_master_id = ? and dd.upc = ?
order by dd.date_delivered asc limit 1';
if ($this->isPDO) {
$data_params = [$customer_master_master_id, $this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $customer_master_master_id);
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
return $rs[0]['encoder'] . ' - ' . $rs[0]['date_delivered'] . '...';
}
return '-';
} else {
$sql = 'select dd.date_delivered, en.encoder
from delivery_history dd
inner join encoder en on en.encoder_id = dd.encoder_id
where dd.customer_master_master_id = ? and dd.upc = ?';
if ($this->isPDO) {
$data_params = [$customer_master_master_id, $this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $customer_master_master_id);
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
foreach ($rs as $row) {
$delivery_info[$row['encoder']][] = $row['date_delivered'];
$delivery_info[$row['encoder']] = array_unique($delivery_info[$row['encoder']]);
}
}
if (count($delivery_info)) {
return $delivery_info;
}
return '-';
}
} else {
return '-';
}
}
public function get_rsd_comment()
{
$sql = 'select rsd_comment from releases where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
return $rs[0]['rsd_comment'];
}
return false;
}
public function set_rsd_comment($comment)
{
$sql = 'update releases set rsd_comment = ? where release_id = ?';
if ($this->isPDO) {
$data_params = [$comment, $this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('s', $comment);
$data_params->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($this->wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
public function get_pricing_tiers()
{
$sql = 'SELECT dmps.pricing_scheme_id, dmps.customer_master_master_id, dmps.pricing_scheme, dmps.product_type_id, pt.product_type
, dmps.default_pricing_tier, dpt.pricing_tier_id, dpt.pricing_tier, cmm.customer_name as DMS
FROM dms_master_pricing_scheme dmps
INNER JOIN customer_master_master cmm ON cmm.customer_master_master_id = dmps.customer_master_master_id
INNER JOIN product_type pt ON pt.id = dmps.product_type_id
INNER JOIN releases r ON r.product_type_id = pt.id OR (r.product_type_id IS NULL AND pt.id = 1)
INNER JOIN dms_pricing_tier dpt ON dpt.pricing_scheme_id = dmps.pricing_scheme_id
WHERE r.release_id = ? and dmps.scheme_level = "release"
ORDER BY dmps.pricing_scheme, dpt.pricing_tier';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$result = $this->wrapperObj->executeQuery($sql, $data_params);
if ($result === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$pricing_tiers = array();
$old_pricing_scheme_id = -1;
if (count($result)) {
foreach ($result as $row) {
$pricing_scheme_id = $row['pricing_scheme_id'];
if ($old_pricing_scheme_id != $pricing_scheme_id) {
$pricing_tiers[$pricing_scheme_id] = array(
'pricing_scheme' => $row['pricing_scheme'],
'DMS' => $row['DMS'],
'selected_tier' => null,
'custom_price' => null,
'default_tier' => $row['default_pricing_tier'],
'pricing_tiers' => array());
}
$pricing_tiers[$pricing_scheme_id]['pricing_tiers'][$row['pricing_tier_id']]['pricing_tier'] = $row['pricing_tier'];
$old_pricing_scheme_id = $pricing_scheme_id;
}
}
// get customer pricing tiers for the release.
$sql = 'SELECT dmps.pricing_scheme_id, dmps.customer_master_master_id, dmps.pricing_scheme, dmps.product_type_id, dpt.pricing_tier_id, rcp.custom_price
FROM dms_master_pricing_scheme dmps
INNER JOIN dms_pricing_tier dpt ON dpt.pricing_scheme_id = dmps.pricing_scheme_id
INNER JOIN release_pricing_tier rpt ON rpt.pricing_tier_id = dpt.pricing_tier_id
INNER JOIN release_custom_pricing rcp ON rcp.release_pricing_tier_id = rpt.id
WHERE rpt.release_id = ? AND dmps.scheme_level = "release" AND rpt.active = "Y"';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$result = $this->wrapperObj->executeQuery($sql, $data_params);
if ($result === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($result)) {
foreach ($result as $row) {
$pricing_tiers[$row['pricing_scheme_id']]['selected_tier'] = $row['pricing_tier_id'];
$pricing_tiers[$row['pricing_scheme_id']]['custom_price'] = $row['custom_price'];
}
}
if (count($pricing_tiers)) {
return $pricing_tiers;
}
return false;
}
public function get_pricing_tiers_display()
{
$pricing_tiers = array();
$sql = "SELECT dmps.pricing_scheme_id, dmps.customer_master_master_id, dmps.pricing_scheme, dmps.product_type_id, dpt.pricing_tier_id
FROM dms_master_pricing_scheme dmps
INNER JOIN dms_pricing_tier dpt ON dpt.pricing_scheme_id = dmps.pricing_scheme_id
INNER JOIN release_pricing_tier rpt ON rpt.pricing_tier_id = dpt.pricing_tier_id
WHERE rpt.release_id = ?
and dmps.scheme_level='release' and rpt.active='Y' ";
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$result = $this->wrapperObj->executeQuery($sql, $data_params);
if ($result === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($result)) {
foreach ($result as $row) {
$pricing_tiers[$row['pricing_scheme_id']]['selected_tier'] = $row['pricing_tier_id'];
}
}
return $pricing_tiers;
}
/**
* Uses the info contained in an array of Pricing Tier or Custom Price objects to return
* a new array with pricing scheme id's as keys and pricing tier id's or prices as values
*
* @param array $scheme_data - array of Pricing Tier or Custom Price objects
* @param int $offset - indicates where pricing scheme ID is in the object name.
* For pricing tiers, $offset is 3, for custom prices it is 2.
*
* @return array $new_scheme_data
*/
public static function reformat_pricing_scheme_data($scheme_data, $offset)
{
$new_scheme_data = array();
if (count($scheme_data) > 0) {
foreach ($scheme_data as $obj) {
$tmp_id = explode('_', $obj->id);
$pricing_scheme_id = $tmp_id[$offset];
$value = $obj->value;
$new_scheme_data[$pricing_scheme_id] = $value;
}
}
return $new_scheme_data;
}
/**
* New version of set_pricing_tiers which sets custom prices for
* custom pricing tiers
*
* @param array $pricing_tier_ids - array of Pricing Tier objects
* @param bit $array_map
* @param array $custom_prices
*
* @return int $returnValue
*/
public function set_pricing_tiers_new($wrapperObj, $pricing_tier_ids, $array_map = false, $custom_prices = array())
{
$err_msg = '';
$insert_query = '';
if (!$this->isCatalog) {
$page_type = 'label_copy';
} else {
$page_type = 'release';
}
if (is_array($pricing_tier_ids) && sizeof($pricing_tier_ids) > 0) {
if (!$array_map) {
$pricing_tier_ids = self::reformat_pricing_scheme_data($pricing_tier_ids, 3);
$custom_prices = self::reformat_pricing_scheme_data($custom_prices, 2);
}
foreach ($pricing_tier_ids as $pricing_scheme_id => $pricing_tier_id) {
if (empty($pricing_scheme_id) || !is_numeric($pricing_scheme_id)) {
break;
}
if (!is_numeric($pricing_tier_id) && trim($pricing_tier_id) != "") {
continue;
}
$existingIDs = Release_Pricing_Tier::getRPTIDsBySchemeID($wrapperObj, $pricing_scheme_id, $page_type, $this->uid);
$custom_price = (in_array($pricing_tier_id, Release_Pricing_Tier::getCustomPricingTierIDs($wrapperObj))) ? $custom_prices[$pricing_scheme_id] : '';
$rpt_vars = array('pricing_tier_id' => QueryFormatNumber($pricing_tier_id), 'custom_price' => QueryFormatNumber($custom_price),
'start_date' => date('Y-m-d'), 'end_date' => date('Y-m-d'), 'active' => 'Y');
($page_type == 'release') ? $rpt_vars['upc'] = QueryFormatNumber($this->upc) : $rpt_vars['release_id'] = QueryFormatNumber($this->release_id);
if (!$err_msg) {
$create_id = 0;
if (trim($pricing_tier_id) != "") {
// 1) Create new record with Start Date = current date
if (Release_Pricing_Tier::releasePricingTierExists($wrapperObj, $rpt_vars, $page_type) == 0) {
$create_id = Release_Pricing_Tier::createReleasePricingTier($wrapperObj, $rpt_vars, $page_type);
}
}
if (count($existingIDs) > 0) {
foreach ($existingIDs as $index => $pt_id) {
$RPT = new Release_Pricing_Tier($wrapperObj, $pt_id, $page_type);
$rptInfo = $RPT->getReleasePricingTierInfo($wrapperObj);
// 2) Deactivate old record
if ($create_id > 0 || trim($pricing_tier_id) == "") {
$new_data = array('active' => 'N');
$RPT->updateReleasePricingTier($wrapperObj, $new_data);
}
} // end of $existingIDs iteration
}
} // end of $err_msg condition
}
}
if (!$err_msg) {
return true;
}
return false;
}
public function highlight_row()
{
if ($this->uid) {
$this->unhighlight_row();
$sql = 'insert into release_schedule_dashboard_change_history (changed_by, change_date, criteria, uid, isCatalog)
values(?, now(), "Highlighted", ?, ?)';
$checkCatalog = $this->isCatalog ? 'Y' : 'N';
if ($this->isPDO) {
$data_params = [];
$data_params[] = $this->user_id;
$data_params[] = $this->uid;
$data_params[] = $checkCatalog;
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->user_id);
$data_params->addDataParam('i', $this->uid);
$data_params->addDataParam('s', $checkCatalog);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
$rs = $this->wrapperObj->executeQuery($sql, $data_params, $return_type);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
exit();
}
public function unhighlight_row()
{
if ($this->uid) {
$sql = 'delete from release_schedule_dashboard_change_history
where criteria = "Highlighted" and uid = ? and isCatalog = ?';
$checkCatalog = $this->isCatalog ? 'Y' : 'N';
if ($this->isPDO) {
$data_params = [$this->uid, $checkCatalog];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->uid);
$data_params->addDataParam('s', $checkCatalog);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$rs = $this->wrapperObj->executeQuery($sql, $data_params, $return_type);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
}
public function isHighlighted()
{
$sql = 'select * from release_schedule_dashboard_change_history
where criteria = "Highlighted" and uid = ? and isCatalog = ?';
$checkCatalog = $this->isCatalog ? 'Y' : 'N';
if ($this->isPDO) {
$data_params = [$this->uid, $checkCatalog];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->uid);
$data_params->addDataParam('s', $checkCatalog);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
return true;
}
return false;
}
public function get_label_priority()
{
if ($this->label_priority) {
return $this->label_priority;
} else {
$vendor_id = $this->get_label(0);
$sql = 'select priority from vendor where vendor_id = ?';
if ($this->isPDO) {
$data_params = [$vendor_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $vendor_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs) > 0) {
$this->label_priority = $rs[0]['priority'];
return $rs[0]['priority'];
}
}
return false;
}
public function get_date_ripped()
{
if ($this->date_ripped) {
return $this->date_ripped;
} else {
$sql = 'select encoding_date
from cd_receive
where upc = ? order by encoding_date desc limit 1';
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs) > 0) {
$this->date_ripped = $rs[0]['encoding_date'];
return $rs[0]['encoding_date'];
}
}
return false;
}
public function get_tracks_ripped()
{
if ($this->upc) {
$sql = 'select total_tracks from cd_receive where upc = ?';
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs) > 0) {
return $rs[0]['total_tracks'];
}
}
return false;
}
public function get_label_copy_asset_ripped_date()
{
if (!$this->isCatalog) {
$sql = 'select count(t.id) as music, count(tv.id) as video
from track t
left join track_video tv on tv.id = t.id and tv.id and track_type = "video"
where t.release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs) > 0) {
$row = $rs[0];
$music_tracks = $row['music'];
$video_tracks = $row['video'];
}
$encoding_date = '';
$video_mastered_date = '';
if ($this->upc) {
$sql = 'select encoding_date, video_mastered_date
from cd_receive where upc = ? order by encoding_date desc';
if ($this->isPDO) {
$data_params = [$this->upc];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->upc);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
$upc_date_map = array();
$z = 0;
if (count($rs) > 0) {
foreach ($rs as $row) {
$upc_date_map[$z]['encoding_date'] = $row["encoding_date"];
$upc_date_map[$z]['video_mastered_date'] = $row["video_mastered_date"];
$z++;
}
if ($music_tracks && !$video_tracks) {
$upc_date_map = multisort($upc_date_map, 'encoding_date', false, 1);
return $upc_date_map[0]['encoding_date'];
} elseif ((!$music_tracks && $video_tracks) || ($music_tracks && $video_tracks)) {
$upc_date_map = multisort($upc_date_map, 'video_mastered_date', false, 1);
$upc_date_map = array_reverse($upc_date_map);
return $upc_date_map[0]['video_mastered_date'];
}
}
}
}
return false;
}
public function get_int_mkt_manager($display_mode = 0)
{
$int_mkt_manager = '';
if ($this->int_mkt_manager && $display_mode == 1) {
$int_mkt_manager = $this->int_mkt_manager;
} else {
$sql = 'select int_mkt_manager, (select concat(f_name, "", l_name) from orchadmin_users where id = int_mkt_manager) as name
from releases
where release_id = ?';
if ($this->isPDO) {
$data_params = [$this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $this->release_id);
}
$rs = $this->wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs) > 0) {
$row = $rs[0];
$int_mkt_manager = $display_mode ? $row['name'] : $row['int_mkt_manager'];
$this->int_mkt_manager = $display_mode ? $row['name'] : $row['int_mkt_manager'];
}
}
return $int_mkt_manager;
}
public function get_owner()
{
return $this->owner;
}
public function set_int_mkt_manager($id)
{
$sql = 'update releases set int_mkt_manager = ?
where release_id = ?';
if ($this->isPDO) {
$data_params = [$id, $this->release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $id);
$data_params->addDataParam('i', $this->release_id);
}
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$rs = $this->wrapperObj->executeQuery($sql, $data_params, $return_type);
if ($rs === false) {
$this->isPDO ? show_pdo_error($sql, $this->wrapperObj->getLastStatement()) : showierror($sql);
}
}
//returns array of track types for a given release_id
public static function get_release_track_types($wrapperObj, $release_id)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$num_of_track_in_LC = array("music" => 0, "video" => 0);
$sql = 'SELECT t.track_type, COUNT(t.id) AS track_count
FROM releases ear
INNER JOIN track t ON t.release_id = ear.release_id
WHERE ear.release_id = ?
GROUP BY t.track_type';
if ($isPDO) {
$data_params = [$release_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $release_id);
}
$rs = $wrapperObj->executeQuery($sql, $data_params);
if ($rs === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($rs)) {
foreach ($rs as $row) {
$num_of_track_in_LC[$row['track_type']] = $row['track_count'];
}
}
return $num_of_track_in_LC;
}
//gets release_id by vendor_id and UPC
// @TODO: is release_status condition necessary?
public static function get_release_id($wrapperObj, $vendor_id, $varUPC)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$release_id = 0;
$sql = 'SELECT release_id
FROM releases r
INNER JOIN artist_info a ON a.artist_id = r.artist_id
INNER JOIN vendor v ON v.vendor_id = a.vendor_id
WHERE upc = ? AND v.vendor_id = ? AND r.release_status <> "in_content"';
if ($isPDO) {
$data_params = [$varUPC, $vendor_id];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $varUPC);
$data_params->addDataParam('i', $vendor_id);
}
$result = $wrapperObj->executeQuery($sql, $data_params);
if ($result === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
if (count($result)) {
$release_id = $result[0]['release_id'];
}
return $release_id;
}
public static function insert_release_info($wrapperObj, $data, $vendor_id = null)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$fields = array('upc', 'display_upc', 'artist_id', 'release_name', 'label', 'description', 'production_co', 'release_date',
'distribution',
'format', 'genre_id', 'new_release', 'channel_id', 'c_line', 'manufacturer_upc', 'sale_start_date', 'vendor_catalog_number',
'priority',
'product_type_id', 'product_subtype_id', 'tms_id', 'amd_id', 'season', 'episode', 'production_number', 'network',
'country_of_origin', 'meta_language',
'language_id', 'short_synopsis', 'brand', 'preorder_date', 'not_for_distribution');
$number_fields = array('upc', 'artist_id', 'genre_id', 'channel_id', 'priority', 'product_type_id', 'product_subtype_id',
'tms_id', 'amd_id', 'season', 'episode',
'production_number', 'country_of_origin');
$string_fields = array('display_upc', 'release_name', 'label', 'description', 'production_co', 'release_date', 'distribution',
'format', 'meta_language',
'new_release', 'c_line', 'manufacturer_upc', 'sale_start_date', 'vendor_catalog_number', 'network', 'language_id',
'short_synopsis', 'brand', 'preorder_date', 'not_for_distribution');
$no_tab_fields = array('release_name', 'label', 'c_line', 'manufacturer_upc', 'vendor_catalog_number');
$text_area_fields = array('description', 'short_synopsis');
$insert_fields = array();
$insert_values = array();
$data_params = $isPDO ? [] : new QueryData();
if ($data['distribution_format_id']) {
$insert_fields[] = 'distribution_format_id';
$insert_values[] = '?';
$isPDO ? $data_params[] = $data['distribution_format_id'] : $data_params->addDataParam('i', $data['distribution_format_id']);
}
if ($data['release_version']) {
$insert_fields[] = 'version';
$insert_values[] = '?';
$isPDO ? $data_params[] = trim($data['release_version']) : $data_params->addDataParam('s', trim($data['release_version']));
}
if ($data['product_code']) {
$insert_fields[] = 'product_code';
$insert_values[] = '?';
$isPDO ? $data_params[] = trim($data['product_code']) : $data_params->addDataParam('s', trim($data['product_code']));
}
$vendorInfo = Model_Vendor::getVendorByVendorID($vendor_id);
if ($vendorInfo->is_distributor == 'Y') {
$insert_fields[] = 'subaccount_id';
$insert_values[] = '?';
$subaccountId = trim($data['subaccount_id']) ? trim($data['subaccount_id']) : null;
$isPDO ? $data_params[] = $subaccountId : $data_params->addDataParam('i', $subaccountId);
}
if (trim($data['keywords'])) {
$keywordsArray = explode('|',$data['keywords']);
$insert_fields[] = 'keywords';
$insert_values[] = '?';
$isPDO ? $data_params[] = implode(',',$keywordsArray) : $data_params->addDataParam('s', implode(',',$keywordsArray));
}
foreach ($fields as $key) {
$insert_fields[] = $key;
if ($key == 'last_updated') {
$insert_values[] = 'NOW()';
} elseif ($key == 'preorder_date') {
$preorder_date = $data['preorder_date'];
if (($data['sale_start_date']) >= (date("Y-m-d"))) {
$insert_values[] = '"1900-01-01"';
} else {
$insert_values[] = 'null';
}
} elseif ($key == 'info_entered') {
$insert_values[] = 'CURDATE()';
} elseif ($key == 'distribution') {
$distributions = get_enum('releases', 'distribution', $wrapperObj);
$distribution = (isset($data[$key]) and in_array($data[$key], $distributions)) ? QueryFormatString(trim($data[$key])) : 'default(distribution)';
$insert_values[] = $distribution;
} elseif ($key == 'product_subtype_id') {
if ($data[$key]) {
$insert_values[] = '?';
$isPDO ? $data_params[] = $data[$key] : $data_params->addDataParam('i', $data[$key]);
} else {
$insert_values[] = 'null';
}
} elseif ($key == 'format') {
if ($data[$key]) {
$insert_values[] = '?';
$isPDO ? $data_params[] = $data[$key] : $data_params->addDataParam('s', $data[$key]);
} else {
$insert_values[] = '"Full Length"';
}
} else {
if (in_array($key, $number_fields)) {
$insert_values[] = '?';
$isPDO ? $data_params[] = trim($data[$key]) : $data_params->addDataParam('i', trim($data[$key]));
} elseif (in_array($key, $string_fields)) {
if (in_array($key, $no_tab_fields)) {
$insert_values[] = '?';
$isPDO ? $data_params[] = stripControlChars($data[$key]) : $data_params->addDataParam('s', stripControlChars($data[$key]));
} else if (trim($data[$key]) && in_array($key, $text_area_fields)) {
$insert_values[] = '?';
$isPDO ? $data_params[] = stripTextAreaControlChars($data[$key]) : $data_params->addDataParam('s', stripTextAreaControlChars($data[$key]));
} else {
$insert_values[] = '?';
$isPDO ? $data_params[] = trim($data[$key]) : $data_params->addDataParam('s', trim($data[$key]));
}
}
}
}
if (count($insert_fields) && count($insert_values)) {
$db = Doctrine_Manager::getInstance()->getCurrentConnection()->getDbh();
$projectObj = new Project($db);
$upc = isset($data['upc']) ? QueryFormatNumber($data['upc']) : null;
$vendor_catalog_number = (isset($data['vendor_catalog_number']) && !empty($data['vendor_catalog_number'])) ?
stripControlChars($data['vendor_catalog_number']) :
$upc;
$release_name = isset($data['release_name']) ?
stripControlChars($data['release_name']) :
null;
$artist_id = isset($data['artist_id']) ? QueryFormatNumber($data['artist_id']) : null;
try {
if ($data['subaccount_id'] || $data['project_code']) {
$subaccountId = ($vendorInfo->is_distributor == 'Y' && $data['subaccount_id']) ? $data['subaccount_id'] : null;
$projectCode = $data['project_code'] ? $data['project_code'] : $vendor_catalog_number;
$projectId = $projectObj->getProjectId($vendor_id, $subaccountId, $projectCode, $upc, $release_name, $artist_id);
} else {
$projectId = $projectObj->getProjectId($vendor_id, null, $vendor_catalog_number, $upc, $release_name, $artist_id);
}
$insert_fields[] = 'project_id';
$insert_values[] = '?';
$isPDO ? $data_params[] = $projectId : $data_params->addDataParam('i', $projectId);
} catch (Exception $ex) {
throw new Exception($ex->getMessage());
}
$sql = 'INSERT INTO releases (' . implode(',', $insert_fields) . ') VALUES (' . implode(',', $insert_values) . ')';
$return_type = $isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
$insert_id = $wrapperObj->executeQuery($sql, $data_params, $return_type);
if ($insert_id === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
return $insert_id; // id of new row
}
return 0;
}
// This function updates ex_a_release table with values from array provided
public function update_release($wrapperObj, $data)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$fields = array('artist_id', 'release_name', 'label', 'description', 'production_co', 'release_date', 'distribution',
'format', 'genre_id', 'new_release', 'channel_id', 'c_line', 'manufacturer_upc', 'sale_start_date', 'vendor_catalog_number',
'priority',
'product_type_id', 'product_subtype_id', 'tms_id', 'amd_id', 'season', 'episode', 'production_number', 'network',
'country_of_origin', 'meta_language',
'language_id', 'short_synopsis', 'brand', 'preorder_date', 'not_for_distribution');
$number_fields = array('artist_id', 'genre_id', 'channel_id', 'priority', 'product_type_id', 'tms_id', 'amd_id',
'season', 'episode',
'production_number', 'country_of_origin');
$string_fields = array('release_name', 'label', 'description', 'production_co', 'release_date', 'distribution', 'format',
'new_release', 'c_line', 'manufacturer_upc', 'sale_start_date', 'vendor_catalog_number', 'product_subtype_id',
'network', 'language_id', 'meta_language',
'short_synopsis', 'brand', 'preorder_date', 'not_for_distribution');
if (isset($data['product_code'])) {
array_push($fields, 'product_code');
array_push($string_fields, 'product_code');
}
$no_tab_fields = array('release_name', 'label', 'c_line', 'manufacturer_upc', 'vendor_catalog_number');
$text_area_fields = array('description', 'short_synopsis');
$update = array();
$data_params = $this->isPDO ? [] : new QueryData();
foreach ($fields as $key) {
if ($key == 'last_updated') {
$update[] = $key . ' = NOW()';
} else if ($key == 'preorder_date') {
if (($data['sale_start_date']) >= (date("Y-m-d"))) {
$update[] = $key . ' = "1900-01-01"';
}
} else if ($key == 'info_entered') {
$update[] = $key . ' = CURDATE()';
}
if (key_exists($key, $data)) {
if (trim($data[$key]) && in_array($key, $number_fields)) {
$update[] = $key . ' = ?';
$isPDO ? $data_params[] = $data[$key] : $data_params->addDataParam('i', $data[$key]);
} else if (trim($data[$key]) && in_array($key, $string_fields)) {
if (trim($data[$key]) && in_array($key, $no_tab_fields)) {
$update[] = $key . ' = ?';
$isPDO ? $data_params[] = stripControlChars($data[$key]) : $data_params->addDataParam('s', stripControlChars($data[$key]));
} else if (trim($data[$key]) && in_array($key, $text_area_fields)) {
$update[] = $key . ' = ?';
$isPDO ? $data_params[] = stripTextAreaControlChars($data[$key]) : $data_params->addDataParam('s', stripTextAreaControlChars($data[$key]));
} else {
$update[] = $key . ' = ?';
$isPDO ? $data_params[] = trim($data[$key]) : $data_params->addDataParam('s', trim($data[$key]));
}
}
}
}
// set distribution format id for the product
if (!empty($data['distribution_format_id'])) {
$update[] = 'distribution_format_id = ?';
$isPDO ? $data_params[] = $data['distribution_format_id'] : $data_params->addDataParam('i', $data['distribution_format_id']);
}
if (count($update)) {
$sql = 'UPDATE releases SET ' . implode(', ', $update) . ' WHERE release_id = ? AND release_status <> "in_content" LIMIT 1';
$isPDO ? $data_params[] = $this->release_id : $data_params->addDataParam('i', $this->release_id);
$return_type = $this->isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$affected_rows = $wrapperObj->executeQuery($sql, $data_params, $return_type);
if ($affected_rows === false) {
$this->isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
return $affected_rows;
}
return 0;
}
public static function set_upc_to_used($wrapperObj, $varUPC)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$sql = 'update upcs set status = "used", last_updated = now() where upc = ?';
if ($isPDO) {
$data_params = [$varUPC];
} else {
$data_params = new QueryData();
$data_params->addDataParam('i', $varUPC);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
}
public static function set_release_status($wrapperObj, $varReleaseID, $user_id, $status)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
// set status for exhibit a release
$sql = 'INSERT INTO release_status (release_id, status, date, changed_by)
SELECT release_id, ?, CURDATE(), ?
FROM releases
WHERE release_id = ? AND release_status <> "in_content"';
if ($isPDO) {
$data_params = [];
$data_params[] = $status;
$data_params[] = $user_id;
$data_params[] = $varReleaseID;
} else {
$data_params = new QueryData();
$data_params->addDataParam('s', $status);
$data_params->addDataParam('i', $user_id);
$data_params->addDataParam('i', $varReleaseID);
}
$return_type = $isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID;
if ($wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
$sql = 'UPDATE releases SET release_status = ? WHERE release_id = ? AND release_status <> "in_content"';
if ($isPDO) {
$data_params = [$status, $varReleaseID];
} else {
$data_params = new QueryData();
$data_params->addDataParam('s', $status);
$data_params->addDataParam('i', $varReleaseID);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($wrapperObj->executeQuery($sql, $data_params, $return_type) === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
}
public static function delete_release_info($release_id, $wrapperObj) {
self::delete_release_subgenres($release_id, $wrapperObj);
self::delete_release_artists($release_id, $wrapperObj);
RSD_Track::delete_release_track_info($release_id, $wrapperObj);
}
/**
*
* @param int $release_id
* @param $wrapperObj
*/
public static function delete_release_subgenres($release_id, $wrapperObj)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$sql = 'DELETE FROM release_subgenre WHERE release_id = ?';
if ($isPDO) {
$dataParams = [$release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $release_id);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
}
/**
*
* @param int $release_id
* @param $wrapperObj
*/
public static function delete_release_artists($release_id, $wrapperObj)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$sql = 'DELETE FROM release_artist WHERE release_id = ?';
if ($isPDO) {
$dataParams = [$release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $release_id);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
}
/*
* Returns an array of subgenres for insertion based on parameters provided
*
* @param array $subgenreArr - array of all valid subgenres arranged by genre_id
* @param int $genre_id
* @param string $subgenre_str - comma-separated subgenre string
* @return array $subgenres_to_add
*/
public static function get_subgenre_list($subgenreArr, $genre_id, $subgenre_str)
{
$varSubGenreArr = explode(',', $subgenre_str);
$subgenres_to_add = array();
if (is_array($varSubGenreArr)) {
for ($j = 0; $j < count($varSubGenreArr) and $j < 5; $j++) {
$subgenre = trim(strtolower($varSubGenreArr[$j]));
$subgenre_id = array_search($subgenre, $subgenreArr[$genre_id]) ? array_search($subgenre,
$subgenreArr[$genre_id]) : (array_key_exists($subgenre,
$subgenreArr[$genre_id]) ? $subgenre : 0);
if ($subgenre_id) {
if (!in_array($subgenre_id, $subgenres_to_add)) {
$subgenres_to_add[] = $subgenre_id;
}
}
}
}
return $subgenres_to_add;
}
/*
* Deletes release from release_film_genre table
* @param int $release_id
* @param $wrapperObj
*/
public static function delete_filmrelease_genre($release_id, $wrapperObj)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$sql = 'DELETE FROM release_film_genre WHERE release_id = ?';
if ($isPDO) {
$dataParams = [$release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $release_id);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
}
/*
* Inserts genre and secondary genre into release_film_genre table
* @param int $release_id,
* @param int $genre_id,
* @param string $is_primary
* @param $wrapperObj
* @return int $affected rows
*/
public static function insert_filmrelease_genre($release_id, $genre_id, $is_primary, $wrapperObj)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$sql = 'INSERT INTO release_film_genre (release_id, film_genre_id, is_primary)
values(?, ?, ?)';
if ($isPDO) {
$dataParams = [];
$dataParams[] = $release_id;
$dataParams[] = $genre_id;
$dataParams[] = $is_primary;
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $release_id);
$dataParams->addDataParam('i', $genre_id);
$dataParams->addDataParam('s', $is_primary);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$affectedRows = $wrapperObj->executeQuery($sql, $dataParams, $return_type);
if ($affectedRows === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
return $affectedRows;
}
/*
* Inserts array of subgenres into release_subgenre table
*
* @param array $subgenres - array of subgenres to be inserted
* @param int $release_id,
* @param array $subgenres
* @param $wrapperObj
* @return int $affected rows
* @TODO: add unique key on release_subgenre table for upc, release_id, subgenre_id columns
*/
public static function insert_release_subgenres_multiple($release_id, $subgenres, $wrapperObj)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$sql = 'DELETE FROM release_subgenre WHERE release_id = ?';
if ($isPDO) {
$deleteParams = [$release_id];
} else {
$deleteParams = new QueryData();
$deleteParams->addDataParam('i', $release_id);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($wrapperObj->executeQuery($sql, $deleteParams, $return_type) === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
$sql = 'INSERT INTO release_subgenre (release_id, upc, subgenre_id)
SELECT r.release_id, r.upc, s.orchard_id
FROM releases r, subgenre s
WHERE r.release_id = ?
AND s.orchard_id IN (' . implode(',', array_fill(0, count($subgenres), '?')) . ')';
if ($isPDO) {
$dataParams = [$release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $release_id);
}
foreach ($subgenres as $val) {
$isPDO ? $dataParams[] = $val : $dataParams->addDataParam('i', $val);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$affectedRows = $wrapperObj->executeQuery($sql, $dataParams, $return_type);
if ($affectedRows === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
return $affectedRows;
}
public static function insert_release_subgenre($release_id, $subgenre)
{
self::insert_release_subgenres_multiple($release_id, array($subgenres));
}
/*
* Returns an array of country ID's based on territory restrictions string and array of all country codes
*
* @param string $restriction_str - space-separated string of country codes
* @param array $countryCodesArr - array of all valid country codes
* @return array $restrictions_to_add
*/
public static function get_country_restrictions($restriction_str, $countryCodesArr)
{
$countries_arr = explode(" ", $restriction_str);
$restrictions_to_add = array();
foreach ($countries_arr as $k => $code) {
$code = strtolower($code);
if (in_array($code, array_keys($countryCodesArr)) && !in_array($countryCodesArr[$code], $restrictions_to_add)) {
$restrictions_to_add[] = $countryCodesArr[$code];
}
}
return $restrictions_to_add;
}
/*
* Inserts array of country ID's into release_territory_restriction table
*
* @param array $restriction_arr - array of restrictions to be inserted
* @param int $release_id,
* @param $wrapperObj
* @return int $affected rows
*/
public static function insert_release_territory_restrictions($release_id, $restriction_arr, $wrapperObj)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
self::delete_release_territory_restrictions($release_id, $wrapperObj);
$sql = 'INSERT INTO release_territory_restriction(release_id, upc, country_id)
SELECT r.release_id, r.upc, c.id
FROM releases r, country c
WHERE r.release_id = ?
AND c.id IN (' . implode(',', array_fill(0, count($restriction_arr), '?')) . ')';
if ($isPDO) {
$dataParams = [];
$dataParams[]= $release_id;
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $release_id);
}
foreach ($restriction_arr as $val) {
$isPDO ? $dataParams[] = $val : $dataParams->addDataParam('i', $val);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$affectedRows = $wrapperObj->executeQuery($sql, $dataParams, $return_type);
if ($affectedRows === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
return $affectedRows;
}
/**
*
* @param int $release_id
* @param $wrapperObj
*/
public static function delete_release_territory_restrictions($release_id, $wrapperObj)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$sql = 'DELETE FROM release_territory_restriction WHERE release_id = ?';
if ($isPDO) {
$dataParams = [$release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $release_id);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
}
/*
* Returns rating names available for a particular $product_type
*/
public static function get_rating_names($product_type)
{
$rating_names = array();
if ($product_type == 2) {
$rating_names = array('us_tv_rating', 'us_advisory_labels', 'ca_tv_rating', 'uk_tv_rating', 'de_tv_rating', 'fr_tv_rating',
'au_tv_rating', 'au_advisory_labels', 'jp_tv_rating');
} else if ($product_type == 3) {
$rating_names = array('us_film_rating', 'ca_film_rating', 'uk_film_rating', 'de_film_rating', 'fr_film_rating',
'au_film_rating', 'nz_film_rating', 'jp_film_rating');
}
return $rating_names;
}
/*
* Insert ratings from $upload array for a specific $product_type
* into release_rating_advisory_system db table
* if they are found in $ratingArr
* @param type $product_type
* @param type $upload
* @param type $ratingArr
* @param $wrapperObj
* @return int
*/
public static function add_release_ratings_multiple($product_type, $upload, $ratingArr, $wrapperObj)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$dataParams = $isPDO ? [] : new QueryData();
$sql = 'INSERT INTO release_rating_advisory_system (release_id, rating_advisory_system_id, reason) VALUES';
$count = 0;
$rating_names = self::get_rating_names($product_type);
foreach ($rating_names as $rating_name) {
if (array_key_exists($rating_name, $upload)) {
$system_values = rating_advisory_system::get_rating_system($rating_name);
if ($system_values['system'] && array_key_exists($system_values['system'], $ratingArr)) {
if ($system_values['type']
&& array_key_exists($system_values['type'], $ratingArr[$system_values['system']])
) {
$rating_id = array_search(
trim($upload[$rating_name]),
$ratingArr[$system_values['system']][$system_values['type']]
);
if ($rating_id) {
$rating_reason = $rating_name . '_reason';
if (array_key_exists($rating_reason, $upload) && $upload[$rating_reason]) {
if ($count > 0) {
$sql .= ',';
}
$sql .= ' (?, ?, ?)';
$isPDO ? $dataParams[] = $upload['release_id'] : $dataParams->addDataParam('i', $upload['release_id']);
$isPDO ? $dataParams[] = $rating_id : $dataParams->addDataParam('i', $rating_id);
$isPDO ? $dataParams[] = $upload[$rating_reason] : $dataParams->addDataParam('s', $upload[$rating_reason]);
$count++;
} else {
if ($count > 0) {
$sql .= ',';
}
$sql .= " (?, ?, '')";
$isPDO ? $dataParams[] = $upload['release_id'] : $dataParams->addDataParam('i', $upload['release_id']);
$isPDO ? $dataParams[] = $rating_id : $dataParams->addDataParam('i', $rating_id);
$count++;
}
}
}
}
}
}
if ($count) {
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
$affectedRows = $wrapperObj->executeQuery($sql, $dataParams, $return_type);
if ($affectedRows === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
return $affectedRows;
}
return 0;
}
/**
* Delete all release_rating_advisory_system rows for this release_id.
* @param int $release_id
* @param $wrapperObj
*/
public static function delete_release_ratings($release_id, $wrapperObj)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$sql = 'DELETE FROM release_rating_advisory_system WHERE release_id = ?';
if ($isPDO) {
$dataParams = [$release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $release_id);
}
$return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS;
if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
}
//Returns correctly formatted explicit lyrics string
public static function get_explicit_lyrics_value($varExplicitLyrics)
{
switch ($varExplicitLyrics) {
case 'N/A':
$varExplicitLyrics = 'N';
break;
case 'Clean':
$varExplicitLyrics = 'C';
break;
case 'Explicit':
$varExplicitLyrics = 'Y';
break;
default:
$varExplicitLyrics = 'N';
}
return $varExplicitLyrics;
}
//Returns video type used in rating_advisory_system table
public static function get_video_type_string($product_type)
{
switch ($product_type) {
case 2:
$product_type = 'tv';
break;
case 3:
case 4:
case 'concert_film':
default:
$product_type = 'film';
}
return $product_type;
}
// Returns an array of field names in the label copy release upload for the product type provided
public static function get_release_upload_fields($product_type)
{
switch ($product_type) {
case 1: // Music
$field_names = array('artist_name', 'country_of_origin', 'state', 'other_state', 'url', 'release_performer',
'release_composer', 'release_orchestra', 'release_ensemble', 'release_conductor', 'label', 'release_name',
'genre',
'subgenre', 'release_date', 'sale_start_date', 'distribution', 'c_line', 'upc', 'manufacturer_upc', 'vendor_catalog_number',
'cd', 'track_id', 'track_name', 'isrc', 'explicit_lyrics', 'track_performer', 'track_composer', 'track_orchestra',
'track_ensemble', 'track_conductor', 'p_line', 'minutes', 'seconds', 'track_writers', 'publisher1', 'publisher1_pct',
'publisher2', 'publisher2_pct', 'publisher3', 'publisher3_pct', 'publisher4', 'publisher4_pct', 'track_type',
'track_directors', 'track_producers');
break;
case 2: // TV Show
$field_names = array('upc', 'artist_id', 'manufacturer_upc', 'vendor_catalog_number', 'tms_id', 'artist_name', 'season',
'episode', 'production_number', 'release_name', 'channel', 'product_subtype_id', 'genre', 'meta_language',
'language_id', 'country_of_origin', 'new_release', 'c_line', 'network', 'label', 'brand', 'color', 'description',
'short_synopsis', 'not_for_distribution', 'release_date', 'sale_start_date', 'territory_carveout', 'track_directors', 'track_producers',
'track_writers', 'track_crew_members', 'track_cast_members', 'us_tv_rating', 'us_advisory_labels', 'ca_tv_rating',
'uk_tv_rating', 'de_tv_rating', 'fr_tv_rating', 'au_tv_rating', 'au_advisory_labels', 'jp_tv_rating', 'series_name',
'hours', 'minutes', 'seconds', 'closed_caption_exists', 'closed_caption_reason', 'aspect_ratio', 'resolution',
'fps', 'stereo_or_mono', 'mastered', 'subtitles_burned', 'preview_time');
break;
case 3: // Movie
$field_names = array('upc', 'manufacturer_upc', 'vendor_catalog_number', 'tms_id', 'amd_id', 'release_name',
'product_subtype_id',
'channel', 'genre', 'secondary_genre', 'language_id', 'country_of_origin', 'new_release', 'c_line', 'label',
'color', 'description', 'short_synopsis', 'not_for_distribution', 'release_date', 'sale_start_date', 'territory_carveout', 'download_to_own',
'paid_vod_dtr', 'ad_supported_vod', 'internet', 'mobile_network', 'cable_satellite', 'track_directors',
'track_producers',
'track_writers', 'track_crew_members', 'track_cast_members', 'pricing_tier', 'us_film_rating', 'us_film_rating_reason',
'ca_film_rating', 'ca_film_rating_reason', 'uk_film_rating', 'uk_film_rating_reason', 'de_film_rating',
'de_film_rating_reason', 'fr_film_rating', 'fr_film_rating_reason', 'au_film_rating', 'au_film_rating_reason',
'nz_film_rating', 'nz_film_rating_reason', 'jp_film_rating', 'jp_film_rating_reason', 'chapter1_start_time',
'chapter1_name',
'chapter2_start_time', 'chapter2_name', 'chapter3_start_time', 'chapter3_name', 'chapter4_start_time',
'chapter4_name',
'chapter5_start_time', 'chapter5_name', 'chapter6_start_time', 'chapter6_name', 'chapter7_start_time',
'chapter7_name',
'chapter8_start_time', 'chapter8_name', 'chapter9_start_time', 'chapter9_name', 'chapter10_start_time',
'chapter10_name',
'chapter11_start_time', 'chapter11_name', 'chapter12_start_time', 'chapter12_name', 'chapter13_start_time',
'chapter13_name',
'chapter14_start_time', 'chapter14_name', 'chapter15_start_time', 'chapter15_name', 'chapter16_start_time',
'chapter16_name',
'chapter17_start_time', 'chapter17_name', 'chapter18_start_time', 'chapter18_name', 'chapter19_start_time',
'chapter19_name',
'chapter20_start_time', 'chapter20_name', 'chapter21_start_time', 'chapter21_name', 'chapter22_start_time',
'chapter22_name',
'chapter23_start_time', 'chapter23_name', 'chapter24_start_time', 'chapter24_name', 'chapter25_start_time',
'chapter25_name',
'chapter26_start_time', 'chapter26_name', 'chapter27_start_time', 'chapter27_name', 'chapter28_start_time',
'chapter28_name',
'chapter29_start_time', 'chapter29_name', 'chapter30_start_time', 'chapter30_name', 'chapter31_start_time',
'chapter31_name',
'chapter32_start_time', 'chapter32_name', 'chapter33_start_time', 'chapter33_name', 'chapter34_start_time',
'chapter34_name',
'chapter35_start_time', 'chapter35_name');
break;
case 4: // Video, etc.
$field_names = array('upc', 'manufacturer_upc', 'vendor_catalog_number', 'release_name', 'product_subtype_id',
'channel', 'genre', 'language_id', 'country_of_origin', 'new_release', 'c_line', 'label', 'color', 'description',
'short_synopsis', 'release_date', 'sale_start_date', 'territory_carveout', 'track_directors', 'track_producers',
'track_writers', 'track_crew_members', 'track_cast_members', 'pricing_tier');
break;
case 'concert_film': // Concert Film
$field_names = array('upc', 'manufacturer_upc', 'vendor_catalog_number', 'release_name', 'language_id', 'country_of_origin',
'new_release', 'c_line', 'label', 'color', 'description', 'short_synopsis', 'release_date', 'sale_start_date',
'territory_carveout', 'track_directors', 'track_producers', 'track_crew_members', 'artist_name', 'pricing_tier',
'chapter1_start_time', 'chapter1_name', 'chapter1_artist', 'chapter1_isrc', 'chapter1_c_line', 'chapter1_p_line',
'chapter2_start_time', 'chapter2_name', 'chapter2_artist', 'chapter2_isrc', 'chapter2_c_line', 'chapter2_p_line',
'chapter3_start_time', 'chapter3_name', 'chapter3_artist', 'chapter3_isrc', 'chapter3_c_line', 'chapter3_p_line',
'chapter4_start_time', 'chapter4_name', 'chapter4_artist', 'chapter4_isrc', 'chapter4_c_line', 'chapter4_p_line',
'chapter5_start_time', 'chapter5_name', 'chapter5_artist', 'chapter5_isrc', 'chapter5_c_line', 'chapter5_p_line',
'chapter6_start_time', 'chapter6_name', 'chapter6_artist', 'chapter6_isrc', 'chapter6_c_line', 'chapter6_p_line',
'chapter7_start_time', 'chapter7_name', 'chapter7_artist', 'chapter7_isrc', 'chapter7_c_line', 'chapter7_p_line',
'chapter8_start_time', 'chapter8_name', 'chapter8_artist', 'chapter8_isrc', 'chapter8_c_line', 'chapter8_p_line',
'chapter9_start_time', 'chapter9_name', 'chapter9_artist', 'chapter9_isrc', 'chapter9_c_line', 'chapter9_p_line',
'chapter10_start_time', 'chapter10_name', 'chapter10_artist', 'chapter10_isrc', 'chapter10_c_line', 'chapter10_p_line',
'chapter11_start_time', 'chapter11_name', 'chapter11_artist', 'chapter11_isrc', 'chapter11_c_line', 'chapter11_p_line',
'chapter12_start_time', 'chapter12_name', 'chapter12_artist', 'chapter12_isrc', 'chapter12_c_line', 'chapter12_p_line',
'chapter13_start_time', 'chapter13_name', 'chapter13_artist', 'chapter13_isrc', 'chapter13_c_line', 'chapter13_p_line',
'chapter14_start_time', 'chapter14_name', 'chapter14_artist', 'chapter14_isrc', 'chapter14_c_line', 'chapter14_p_line',
'chapter15_start_time', 'chapter15_name', 'chapter15_artist', 'chapter15_isrc', 'chapter15_c_line', 'chapter15_p_line',
'chapter16_start_time', 'chapter16_name', 'chapter16_artist', 'chapter16_isrc', 'chapter16_c_line', 'chapter16_p_line',
'chapter17_start_time', 'chapter17_name', 'chapter17_artist', 'chapter17_isrc', 'chapter17_c_line', 'chapter17_p_line',
'chapter18_start_time', 'chapter18_name', 'chapter18_artist', 'chapter18_isrc', 'chapter18_c_line', 'chapter18_p_line',
'chapter19_start_time', 'chapter19_name', 'chapter19_artist', 'chapter19_isrc', 'chapter19_c_line', 'chapter19_p_line',
'chapter20_start_time', 'chapter20_name', 'chapter20_artist', 'chapter20_isrc', 'chapter20_c_line', 'chapter20_p_line');
break;
case 'music_video':
$field_names = array('subaccount_id', 'upc', 'manufacturer_upc', 'product_code', 'project_code', 'release_name', 'sale_start_date', 'release_date',
'primary_artist', 'orchard_artist', 'country_of_origin', 'featuring', 'remixer', 'release_version', 'track_directors', 'editor',
'track_producers', 'other', 'keywords', 'video_isrc', 'genre', 'subgenre', 'closed_caption_exists', 'closed_caption_reason', 'language',
'meta_language', 'explicit', 'imprint', 'c_line', 'p_line', 'runtime_hours', 'runtime_minutes', 'runtime_seconds', 'track_meta_language',
'aspect_ratio', 'audio', 'resolution', 'track_video_channel', 'fps', 'preview_in_point', 'include_exclude_territories', 'territory_carveout');
break;
}
return $field_names;
}
// Returns an array of required fields in label copy release upload for the product type provided
public static function get_required_upload_fields($product_type)
{
switch ($product_type) {
case 1:
$required_fields = array('artist_name', 'release_name', 'cd', 'track_id', 'genre', 'subgenre');
break;
case 2:
$required_fields = array('artist_name', 'release_name', 'season', 'episode', 'channel', 'product_subtype_id',
'genre', 'meta_language',
'language_id', 'country_of_origin', 'new_release', 'c_line', 'network', 'label', 'brand', 'color', 'description',
'short_synopsis', 'release_date', 'sale_start_date', 'us_tv_rating', 'ca_tv_rating', 'uk_tv_rating');
break;
case 3:
$required_fields = array('release_name', 'product_subtype_id', 'channel', 'genre', 'secondary_genre', 'language_id', 'country_of_origin',
'new_release',
'c_line', 'label', 'color', 'description', 'short_synopsis', 'release_date', 'sale_start_date', 'download_to_own',
'track_directors', 'track_producers', 'track_writers', 'track_cast_members', 'pricing_tier', 'chapter1_start_time',
'chapter1_name', 'us_film_rating', 'ca_film_rating', 'uk_film_rating');
break;
case 4:
$required_fields = array('release_name', 'product_subtype_id', 'channel', 'genre', 'language_id', 'country_of_origin',
'new_release',
'c_line', 'label', 'color', 'description', 'short_synopsis', 'release_date', 'sale_start_date', 'track_directors',
'track_producers', 'track_writers', 'track_cast_members', 'pricing_tier');
break;
case 'concert_film':
$required_fields = array('release_name', 'language_id', 'country_of_origin', 'new_release', 'c_line', 'label',
'color',
'description', 'short_synopsis', 'release_date', 'sale_start_date', 'track_directors', 'track_producers',
'artist_name',
'chapter1_start_time', 'chapter1_name', 'pricing_tier');
break;
case 'music_video':
$required_fields = array('release_name', 'sale_start_date', 'release_date', 'primary_artist', 'orchard_artist',
'video_isrc', 'genre', 'subgenre', 'language', 'meta_language', 'explicit', 'imprint', 'c_line', 'p_line');
break;
}
return $required_fields;
}
function process_release_type($release_type)
{
switch (strtolower($release_type)) {
case "new":
$release_type = "New";
break;
case "catalog":
$release_type = "Catalog";
break;
case "direct-to-dvd":
$release_type = "Direct_To_Video";
break;
default:
$release_type = "New";
break;
}
return $release_type;
}
// Verifies that all the required upload fields for the specified product type are present
public static function check_release_required_fields($product_type, $upload, $required_fields)
{
//Remove required validation for certain fields if they are not_for_distribution.
if ($product_type == 2 && $upload["not_for_distribution"] != "No") { //TV
$required_fields = array_diff($required_fields,
array('season', 'product_subtype_id', 'network', 'brand', 'color',
'description', 'short_synopsis', 'release_date', 'sale_start_date',
'c_line', 'label', 'us_tv_rating', 'ca_tv_rating', 'uk_tv_rating'));
} else if ($product_type == 3 && $upload["not_for_distribution"] != "No") { //Movie
$required_fields = array_diff($required_fields, array('color', 'track_writers', 'pricing_tier'));
}
$theError = '';
foreach ($required_fields as $field) {
if (!array_key_exists($field, $upload) || (!trim($upload[$field]) || strtolower(trim($upload[$field])) == "select one")) {
$theError .= '' . ucfirst(str_replace('_', ' ', $field)) . ' value is missing.' . "\n";
}
}
return $theError;
}
// Validates UPC and verifies it is not yet used by this vendor's releases
public static function validate_upc_unique($wrapperObj, $upc, $UPCs, $releaseName, $lastRelease, $vendor_id)
{
$theError = '';
if (!checkUPC($upc)) $theError .= 'Orchard UPC is in wrong format.' . $upc . '\n';
elseif (!is_numeric($upc)) $theError .= 'Orchard UPC must be numeric.' . '\n';
elseif (strlen($upc) < 12) $theError .= 'Orchard UPC must be a 12-digit number.' . '\n';
elseif (in_array($upc, $UPCs) and $lastRelease != $releaseName) {
$theError .= 'Orchard UPC is used by some other release in this upload batch.' . $lastRelease . ' ' . $releaseName . '' . '\n';
} else {
if (upc_in_use($wrapperObj, $upc, $vendor_id)) {
$theError .= 'This Orchard UPC is in use by another label:' . $upc . '\n';
}
}
return $theError;
}
// Validates single UPC without checking if it is used
public static function validate_upc($upc)
{
$theError = '';
if (!checkUPC($upc)) $theError .= 'Orchard UPC is in wrong format.' . $upc . '\n';
elseif (strlen($upc) < 12) $theError .= 'Orchard UPC must be a 12-digit number.' . '\n';
return $theError;
}
public static function validate_c_line($c_line_value)
{
$thePattern = '/^[1-9][0-9]{3}[\s]{1}(.)+/';
if (preg_match($thePattern, $c_line_value, $matches)) {
return '';
}
return '© Line is in wrong format.' . $c_line_value . "\n";
}
public static function validate_pricing_tier($wrapperObj, $pricing_tier, $product_type_id, $customer_master_master_id)
{
$pricing_tier_arr = release_pricing_tier::getPricingTierData($wrapperObj, $pricing_tier, $product_type_id, $customer_master_master_id);
if (!count($pricing_tier_arr)) {
return 'Invalid or non-existent pricing tier: ' . $pricing_tier . '' . '\n';
}
return '';
}
public static function validate_territory_carveout($carveout, $countryCodesArr, $product_type = null)
{
$theError = '';
$carveouts_arr = array_map("strtolower", explode(" ", $carveout));
$invalid_carveouts = array_diff($carveouts_arr, array_keys($countryCodesArr));
if (count($invalid_carveouts)) {
$theError .= 'Invalid or non-existent territory carveout: ';
$count = 0;
foreach ($invalid_carveouts as $value) {
if ($count) {
$theError .= ',';
}
if ($product_type == 'music_video') {
$theError .= strtoupper($value);
} else {
$theError .= $value;
}
$count++;
}
if ($product_type == 'music_video') {
$theError .= '. Please provide multiple countries in "|" separated format.';
} else {
$theError .= '' . '\n';
}
}
return $theError;
}
public static function validate_track_credits($upload)
{
if (!$upload['track_directors'] && !$upload['track_producers']) {
return 'Either a director or a producer is required for the chosen product type.' . '\n';
}
return '';
}
public static function validate_start_times($product_type, $upload)
{
if (!$upload['chapter1_start_time'] || !$upload['chapter1_name']) {
if ($product_type == 3) {
return 'Chapter 1 start time or name is missing.' . '\n';
} else if ($product_type == 'concert_film') {
return 'Song 1 start time or name is missing.' . '\n';
}
}
return '';
}
public static function validate_long_text($field_name, $value)
{
return self::validate_text($field_name, $value, 4000);
}
public static function validate_short_text($field_name, $value)
{
return self::validate_text($field_name, $value, 240);
}
public static function validate_long_series_name($field_name, $value)
{
return self::validate_text($field_name, $value, 255);
}
private static function validate_text($field_name, $value, $length)
{
if ($value and strlen(trim(utf8_decode($value))) > $length) {
return '' . $field_name . ' cannot be longer than ' . $length . ' characters.' . "\n";
}
return '';
}
public static function validate_date($field_name, $value)
{
if ($value and !strtotime(trim($value))) {
return '' . $field_name . ' is invalid.' . "\n";
}
return '';
}
public static function validate_country($country_name, $countryArr)
{
if (isset($countryArr[strtolower($country_name)])) {
return '';
} else if (in_array($country_name, $countryArr)) {
return '';
}
return 'Invalid country name.' . '\n';
}
public static function validate_genre($genre, $genreArr)
{
if (isset($genreArr[strtolower($genre)])) {
return '';
} else if (in_array($genre, $genreArr)) {
return '';
}
return 'Invalid genre.' . '\n';
}
public static function validate_subgenre($genre, $subgenre, $genreArr, $subgenreArr)
{
//$subgenreArr['select one'] = 0; //Makes unselected subgenre valid
$theError = '';
$genre = strtolower($genre);
$subgenre = strtolower($subgenre);
$genre_id = array_key_exists(strtolower($genre), $genreArr) ? $genreArr[$genre] : (array_search($genre,
$genreArr) ? array_search($genre,
$genreArr) : 0);
if (!$genre_id) {
$theError .= 'Invalid or non-existent genre. Subgenre cannot be saved if no genre is provided.' . '\n';
} else if ($subgenre != 'select one') {
$subgenre_id = array_search($subgenre, $subgenreArr[$genre_id]) ? array_search($subgenre,
$subgenreArr[$genre_id]) : (array_key_exists($subgenre,
$subgenreArr[$genre_id]) ? $subgenreArr[$genre_id][$subgenre] : 0);
if (!$subgenre_id) {
$theError .= 'Subgenre ' . $subgenre . ' is invalid or does not belong to genre ' . $genre . '.' . '\n';
}
}
return $theError;
}
public static function validate_subgenres_multiple($genre, $subgenres, $genreArr, $subgenreArr)
{
//$subgenreArr['select one'] = 0; //Makes unselected subgenre valid
$theError = '';
$genre = strtolower($genre);
$genre_id = array_key_exists(strtolower($genre), $genreArr) ? $genreArr[$genre] : (array_search($genre,
$genreArr) ? array_search($genre,
$genreArr) : 0);
if (!$genre_id) {
$theError .= 'Invalid or non-existent genre. Subgenres cannot be saved if no genre is provided.' . '\n';
} else {
$varSubGenreArr = explode(',', $subgenres);
if (is_array($varSubGenreArr)) {
for ($j = 0; $j < count($varSubGenreArr) and $j < 5; $j++) {
$subgenre = trim(strtolower($varSubGenreArr[$j]));
if ($subgenre != 'select one' && !array_search($subgenre, $subgenreArr[$genre_id])) {
$theError .= 'Subgenre ' . $subgenre . ' is invalid or does not belong to genre ' . $genre . '.' . '\n';
}
}
}
}
return $theError;
}
// Validates film genre and secondary genre should not be same
public static function validate_film_genre_subgenre($genre,$seconday_genre)
{
$theError = '';
if((strtolower(trim($genre)) != "select one" || strtolower(trim($seconday_genre)) != "select one") && ($genre == $seconday_genre))
{
$theError .= 'Genre ' . $genre . ' can not be same as secondary genre ' . $seconday_genre . '.' . '\n';
}
return $theError;
}
public static function validate_channel($channel, $channelArr)
{
if (isset($channelArr[strtolower($channel)])) {
return '';
} else if (in_array($channel, $channelArr)) {
return '';
}
return 'Invalid theme.' . '\n';
}
public static function validate_language($language, $languageArr)
{
if (isset($languageArr[strtolower($language)])) {
return '';
} else if (in_array(strtolower($language), $languageArr)) {
return '';
}
return 'Invalid language: ' . $language . '' . '\n';
}
/**
* Validates if the number is in range of min,max values.
* @param int $value
* @param int $min
* @param int $max
* @param string $fieldName
* @return string
*/
public static function validateIntRange($value, $min, $max, $fieldName)
{
if (!is_numeric($value)) {
return "Invalid $fieldName: $value is not a number. PHP_EOL";
} else if ($value < $min || $value > $max) {
return "Invalid $fieldName: $value should be between $min-$max. PHP_EOL";
}
return "";
}
/**
* Validates if the value is Yes or No
* @param string $value
* @param string $fieldName
* @return string
*/
public static function validateYesNo($value, $fieldName)
{
if (!in_array(strtolower($value), array("yes", "no"))) {
return "Invalid $fieldName: It should be to be Yes/No. PHP_EOL";
}
return "";
}
/**
* Validates if the aspect ratios are one of orchard"s accepted ratios.
* @param string $value
* @return string
*/
public static function validateAspectRatio($value)
{
$aspectRatios = array("4:3", "40:29", "10:7", "40:27", "20:13", "8:5", "5:3", "40:23", "16:9", "20:11",
"1.85:1", "40:21", "4:2", "40:19", "20:9", "40:17", "5:2", "8:3", "20:7");
if (!in_array($value, $aspectRatios)) {
return "Invalid Aspect Ratio: $value is not a valid. PHP_EOL";
}
return "";
}
/**
* Validates to see if value is one of orchard"s accepted resolution value.
* @param string $value
* @return string
*/
public static function validateResolution($value)
{
$resolutions = array("SD", "720HD", "1080HD");
if (!in_array($value, $resolutions)) {
return "Invalid Resolution: $value is not a valid. PHP_EOL";
}
return "";
}
/**
* Validates FPS numbers if they are accepted by orchard"s system
* @param string $value
* @return string
*/
public static function validateFps($value)
{
$fps = array(30, 25, 24, 15, 12);
if (!in_array($value, $fps)) {
return "Invalid FPS: $value is not a valid. PHP_EOL";
}
return "";
}
/**
* Validates Audio option value
* @param string $value
* @return string
*/
public static function validateStereoMono($value)
{
$audios = array("stereo", "5_1_surround", "mono");
if (!in_array($value, $audios)) {
return "Invalid Audio: $value is not a valid. PHP_EOL";
}
return "";
}
public static function get_release_types($wrapperObj)
{
//$releaseTypesArr = get_enum('ex_a_release', 'new_release');
$releaseTypesArr = get_enum('releases', 'new_release', $wrapperObj);
foreach ($releaseTypesArr as $key => $value) {
$releaseTypesArr[$key] = strtolower($value);
}
return $releaseTypesArr;
}
public static function get_color_types($wrapperObj)
{
// $colorArr = get_enum('ex_a_track_video', 'color');
$colorArr = get_enum('track_video', 'color', $wrapperObj);
foreach ($colorArr as $key => $value) {
$colorArr[$key] = strtolower($value);
}
return $colorArr;
}
public static function validate_subtype($product_subtype, $filmSubtypeArr, $product_type_id)
{
if ($product_type_id == 'concert_film') $product_type_id = 3;
if (in_array(strtolower(str_replace(" ", "_", $product_subtype)), $filmSubtypeArr[$product_type_id])) {
return '';
}
return 'Invalid subtype.' . '\n';
}
public static function validate_release_type($release_type, $releaseTypesArr)
{
if (in_array(strtolower($release_type), $releaseTypesArr)) {
return '';
}
return 'Invalid release type.' . "\n";
}
public static function validate_color($color, $colorArr)
{
if (in_array(strtolower(str_replace(" ", "_", $color)), $colorArr)) {
return '';
}
return 'Invalid color value.' . '\n';
}
/**
* Validates all uploaded release fields depending on product type
*
* @param string $product_type
* @param array $upload
* @param array $countryArr
* @param array $countryCodesArr
* @param array $genreArr
* @param array $subgenreArr
* @param array $channelArr
* @param array $languageArr
* @param array $filmSubtypeArr
* @param array $releaseTypesArr
* @param array $colorArr
* @param array $subtitleBurnedArr
* @param array $ccReasonArr
*
* @return string
*/
public static function validateReleaseUpload(
$wrapperObj,
$product_type,
$upload,
$countryArr,
$countryCodesArr,
$genreArr,
$subgenreArr,
$channelArr,
$languageArr,
$filmSubtypeArr,
$releaseTypesArr,
$colorArr,
$subtitleBurnedArr,
$ccReasonArr
) {
$theError = '';
if ($upload['c_line']) {
$theError .= self::validate_c_line($upload['c_line']);
}
if ($upload['pricing_tier'] && in_array($product_type, array(3, 'concert_film'))) {
$theError .= self::validate_pricing_tier($wrapperObj, $upload['pricing_tier'], 3, 1);
}
if ($upload['release_date']) {
$theError .= self::validate_date('Release date', $upload['release_date']);
}
if ($upload['sale_start_date']) {
$theError .= self::validate_date('Sale start date', $upload['sale_start_date']);
}
if ($product_type > 1) {
$theError .= self::validate_long_text('Release description', $upload['description']);
$theError .= self::validate_short_text('Short synopsis', $upload['short_synopsis']);
if ($upload['territory_carveout']) {
$theError .= self::validate_territory_carveout($upload['territory_carveout'], $countryCodesArr);
}
}
if (in_array($product_type, array(3, 4, 'concert_film'))) {
$theError .= self::validate_track_credits($upload);
}
if ($product_type == 'music_video' && trim($upload['territory_carveout']) !== '') {
$theError .= self::validate_territory_carveout($upload['territory_carveout'], $countryCodesArr, $product_type);
}
$theError .= self::validate_start_times($product_type, $upload);
if ($upload['country_of_origin']) {
$theError .= self::validate_country($upload['country_of_origin'], $countryArr);
}
$musicVideo = $product_type == 'music_video';
if (($product_type == 1 || $musicVideo) && $upload['genre'] && $upload['subgenre']) {
$theError .= self::validate_subgenres_multiple($upload['genre'], $upload['subgenre'], $genreArr,
$subgenreArr);
} else {
if ($upload['genre']) {
$theError .= self::validate_subgenre('Video', $upload['genre'], $genreArr, $subgenreArr);
}
}
if ($upload['p_line'] && $musicVideo) {
$theError .= self::validatePLine($upload['p_line']);
}
if ($musicVideo && !empty($upload['closed_caption_exists']) && strtolower($upload['closed_caption_exists']) == 'no') {
$theError .= self::validateClosedCaptionReason($upload['closed_caption_reason'], $ccReasonArr);
}
if ($upload['channel']) {
$theError .= self::validate_channel($upload['channel'], $channelArr);
}
if ($upload['language_id']) {
$theError .= self::validate_language($upload['language_id'], $languageArr);
}
if ($upload['product_subtype_id']) {
$theError .= self::validate_subtype($upload['product_subtype_id'], $filmSubtypeArr, $product_type);
}
if ($upload['new_release']) {
$theError .= self::validate_release_type($upload['new_release'], $releaseTypesArr);
}
if ($upload['color']) {
$theError .= self::validate_color($upload['color'], $colorArr);
}
if ($upload['series_name'] && $product_type == 2) {
$theError .= self::validate_long_series_name('Series Name', $upload['series_name']);
}
if ($upload['release_name'] && $product_type == 3) {
$theError .= self::validate_text('Movie Title', $upload['release_name'], 100);
}
if ($product_type == 2) {
//For TV release, if these value exist then they should match enum values
if ($upload['meta_language']) {
$theError .= self::validate_language($upload['meta_language'], $languageArr);
}
if ($upload['length_hour']) {
$theError .= self::validateIntRange($upload['length_hour'], 0, 24, 'Run Time (Hours)');
}
if ($upload['length_minute']) {
$theError .= self::validateIntRange($upload['length_minute'], 0, 60, 'Run Time (Minutes)');
}
if ($upload['length_seconds']) {
$theError .= self::validateIntRange($upload['length_seconds'], 0, 60, 'Run Time (Seconds)');
}
if ($upload['closed_caption_exists']) {
$theError .= self::validateYesNo($upload['closed_caption_exists'], 'Closed Captions');
}
if (strtolower($upload['closed_caption_exists']) == 'no') {
$theError .= self::validateClosedCaptionReason($upload['closed_caption_reason'], $ccReasonArr);
}
if ($upload['mastered']) {
$theError .= self::validateYesNo($upload['mastered'], 'Mastered');
}
if ($upload['subtitles_burned']) {
$theError .= self::validateSubtitlesBurned($upload['subtitles_burned'], $subtitleBurnedArr);
}
if ($upload['aspect_ratio']) {
$theError .= self::validateAspectRatio($upload['aspect_ratio']);
}
if ($upload['resolution']) {
$theError .= self::validateResolution($upload['resolution']);
}
if ($upload['fps']) {
$theError .= self::validateFps($upload['fps']);
}
if ($upload['stereo_or_mono']) {
$theError .= self::validateStereoMono($upload['stereo_or_mono']);
}
}
return $theError;
}
/**
* Validates Subtitle Burned field
* @param string $subtitleBurned
* @param array $subtitleBurnedArr
* @return string
*/
public static function validateSubtitlesBurned($subtitleBurned, $subtitleBurnedArr)
{
if (!array_key_exists($subtitleBurned, $subtitleBurnedArr)) {
return 'Invalid Subtitles Burned : It should be Burned In Subtitles/Forced Narrative.
';
}
}
/**
* Validates Closed Caption Reason if it is present in the database
*
* @param string $closedCaptionReason
* @param array $ccReasonArr
*
* @return string
*/
public static function validateClosedCaptionReason($closedCaptionReason, $ccReasonArr)
{
if (!in_array($closedCaptionReason, $ccReasonArr)) {
return 'Valid Closed Caption Reason is missing. ' . "\n";
}
return '';
}
/**
* Validates the P Line information
*
* @param string $pLineValue
*
* @return string
*/
public static function validatePLine($pLineValue)
{
$thePattern = '/^[1-9][0-9]{3}[\s]{1}(.)+/';
if (preg_match($thePattern, $pLineValue, $matches)) {
return '';
}
return 'P line information is in wrong format.' . $pLineValue . "\n";
}
/**
* getter method to return release_id property
* @return int $release_id
*/
public function get_product_id()
{
return $this->release_id;
}
/**
* Returns unique product name to create multiple releases for product and project code.
*
* @param string $productCode
* @param string $projectCode
* @param string $productName
*
* @return string
*/
public static function getUniqueProductName($productCode, $projectCode, $productName)
{
if (!empty($productCode) && !empty($projectCode)) {
return strtolower($productCode . '_' . $projectCode);
} else if (!empty($productCode)) {
return strtolower($productCode);
} else if (!empty($projectCode) && !empty($productName)) {
return strtolower($projectCode . '_' . $productName);
}
return $productName;
}
/**
* Check for unique product code from database
*
* @param array $uploadData
* @param int $vendorId
* @param object $mysqli
*
* @return mixed
*/
public static function isProductCodeUnique($uploadData, $vendorId, $wrapperObj)
{
$productCode = trim($uploadData['product_code']);
$subaccountId = !empty($uploadData['subaccount_id']) ? $uploadData['subaccount_id'] : null;
$projectCode = !empty($upload['project_code']) ? trim($upload['project_code']) : self::getProjectCode($productCode, $wrapperObj);
$result = self::checkUniqueProductAndProjectCode($productCode, $vendorId, $projectCode, $subaccountId, $wrapperObj);
return $result;
}
/**
* Return project code for the provided product code
*
* @param string $productCode
* @param object $mysqli
*
* @return string
*/
public static function getProjectCode($productCode, $wrapperObj)
{
$sql = 'SELECT p.project_code
FROM releases r
INNER JOIN project p ON p.project_id = r.project_id
WHERE r.product_code = ?';
$project = $wrapperObj->executeQuery($sql, [$productCode]);
if ($project === false) {
show_pdo_error($sql, $wrapperObj->getLastStatement());
}
return $project[0]['project_code'];
}
/**
* Return boolean or upc for product_code, vendor_id, project_code and subaccount_id
*
* @param string $productCode
* @param int $vendorId
* @param string $projectCode
* @param int $subaccountId
* @param object $mysqli
*
* @return mixed
*/
public static function checkUniqueProductAndProjectCode($productCode, $vendorId, $projectCode, $subaccountId, $wrapperObj)
{
$sql = 'SELECT r.release_id, r.display_upc
FROM releases r
INNER JOIN artist_info ar ON ar.artist_id = r.artist_id
INNER JOIN project p ON p.project_id = r.project_id
WHERE r.product_code = ? AND ar.vendor_id = ? AND p.project_code = ?';
$dataParams = [];
$dataParams[] = $productCode;
$dataParams[] = $vendorId;
$dataParams[] = $projectCode;
if ($subaccountId) {
$sql .= ' AND r.subaccount_id = ?';
$dataParams[] = $subaccountId;
}
$releaseData = $wrapperObj->executeQuery($sql, $dataParams);
if ($releaseData === false) {
show_pdo_error($sql, $wrapperObj->getLastStatement());
}
$upc = $releaseData[0]['display_upc'];
if ($upc) {
return $upc;
} else {
$db = Doctrine_Manager::getInstance()->getCurrentConnection()->getDbh();
$productObj = new Product($db);
return $productObj->isProductCodeUnique($productCode, $vendorId, $subaccountId);
}
}
/**
* Check for valid territory data
*
* @param array $uploadData
*
* @return string
*/
public static function validateTerritoryData($uploadData)
{
if (strtolower($uploadData['include_exclude_territories']) !== 'only include' && strtolower($uploadData['include_exclude_territories']) !== 'only exclude') {
return 'Invalid Value for "Only Include/Only Exclude".';
} elseif ($uploadData['include_exclude_territories'] && trim($uploadData['territory_carveout']) == '') {
return 'Must submit Territories (ISO Codes) when submitting Only Include/Only Exclude.';
} elseif ($uploadData['include_exclude_territories'] == '' && trim($uploadData['territory_carveout']) != '') {
return 'Must enter Only Include/Only Exclude when submitting Territories (ISO Codes).';
}
}
/**
* Get `distribution_type_id` from `release_default_dms_master_restriction` table
*
* @param $wrapperObj
*
* @return array
*/
public function get_default_dms_master_restriction($wrapperObj)
{
$isPDO = $wrapperObj instanceof QueryWrapper;
$result = array();
if (!empty($this->release_id)) {
$sql = 'SELECT distribution_type_id FROM release_default_dms_master_restriction WHERE release_id = ?';
if ($isPDO) {
$dataParams = [$this->release_id];
} else {
$dataParams = new QueryData();
$dataParams->addDataParam('i', $this->release_id);
}
$result = $wrapperObj->executeQuery($sql, $dataParams);
if ($result === false) {
$isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql);
}
}
return $result;
}
}