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('&nbsp;', ' ', $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; } }