uid = $uid; $this->isCatalog = $isCatalog; } public function get_uid(){ return array($this->isCatalog, $this->uid); } public function get_id(){ return $this->uid; } public function get_isCatalog(){ return $this->isCatalog; } public function get_cd($wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; if ($isPDO) { $dataParams = [$this->uid]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $this->uid); } $sql = 'select cd from track where id = ?'; $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } if (count($rs)) { return $rs[0]['cd']; }else{ return false; } } public function get_track_id($wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; if ($isPDO) { $dataParams = [$this->uid]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $this->uid); } $sql = 'select track_id from track where id = ?'; $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } if (count($rs)) { return $rs[0]['track_id']; }else{ return false; } } public function get_length_minute($wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; if ($isPDO) { $dataParams = [$this->uid]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $this->uid); } $sql = 'select length_minute from track where id = ?'; $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } if (count($rs)) { return $rs[0]['length_minute']; }else{ return false; } } public function get_length_seconds($wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; if ($isPDO) { $dataParams = [$this->uid]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $this->uid); } $sql = 'select length_seconds from track where id = ?'; $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } if (count($rs)) { return $rs[0]['length_seconds']; }else{ return false; } } public function get_track_type($wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; if ($isPDO) { $dataParams = [$this->uid]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $this->uid); } $sql = 'select track_type from track where id = ?'; $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } if (count($rs)) { return $rs[0]['track_type']; }else{ return false; } } public function get_track_name($wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; if ($isPDO) { $dataParams = [$this->uid]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $this->uid); } $sql = 'select track_name from track where id = ?'; $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } if (count($rs)) { return $rs[0]['track_name']; }else{ return false; } } public function get_isrc($wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; if ($isPDO) { $dataParams = [$this->uid]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $this->uid); } $sql = 'select isrc from track where id = ?'; $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } if (count($rs)) { return $rs[0]['isrc']; }else{ return false; } } public function get_track_artists($wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; if ($isPDO) { $dataParams = [$this->uid]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $this->uid); } $track_artists = array(); $sql = 'select id, name from track_artist where track_id = ?'; $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } foreach ($rs as $row) { $track_artists[$row['id']] = $row['name']; } $this->track_artists = $track_artists; return $this->track_artists; } public function get_main_release_artist_name(MysqliWrapper $wrapperObj) { $dataParams = new QueryData(); $sql = 'select a.name from artist_info a inner join releases r on r.artist_id = a.artist_id inner join track t on t.upc = r.upc where t.id = ?'; $dataParams->addDataParam('i', $this->uid); $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { showierror($sql); } if (count($rs)) { return $rs[0]['name']; } } public function checkBlacklisted(MysqliWrapper $wrapperObj) { if(!$this->isCatalog){ $trackArtist = $this->get_track_artists($wrapperObj); $trackArtistNames = array(); foreach($trackArtist as $k => $v){ $trackArtistNames[] = $v; } $releaseArtistName = $this->get_main_release_artist_name($wrapperObj); $trackName = $this->get_track_name($wrapperObj); $matches = array(); //keywords match this track $dataParams = new QueryData(); $sql = 'SELECT bs.blacklist_id, bs.keywords, bs.artist_keywords, bs.type, bs.track_name, bs.songwriters, bs.status FROM blacklisted_songs bs WHERE trim(' . QueryFormatString($this->get_main_release_artist_name($wrapperObj)) . ') LIKE CONCAT(trim(bs.artist_keywords), "%") AND trim(' . QueryFormatString( $this->get_track_name($wrapperObj)) . ') LIKE CONCAT(trim(bs.keywords), "%") AND bs.type = "master" and bs.active="Y" '; if(count($trackArtistNames)){ $trackArtists = array(); $trackArtistSql = ''; foreach ($trackArtistNames as $artistName) { $trackArtists[] = 'trim(' . QueryFormatString($artistName) . ') LIKE CONCAT("%", trim(bs.artist_keywords), "%")'; } if (!empty($trackArtists)) { $trackArtistSql = ' AND (' . implode(' OR ', $trackArtists) . ')'; } $sql .= ' UNION SELECT bs.blacklist_id, bs.keywords, bs.artist_keywords, bs.type, bs.track_name, bs.songwriters, bs.status FROM blacklisted_songs bs WHERE trim(' . QueryFormatString( $this->get_track_name($wrapperObj)) . ') LIKE CONCAT(trim(bs.keywords), "%") AND bs.type = "master" and bs.active="Y" '; $sql .= $trackArtistSql; } $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { showierror($sql); } foreach ($rs as $row) { $matches[] = array("blacklist_id"=>$row["blacklist_id"], "type"=>$row["type"], "artist_keywords"=>$row["artist_keywords"], "keywords"=>$row["keywords"], "track_name"=>$row["track_name"], "songwriters"=>$row["songwriters"], "status"=>$row["status"]); } return $matches; } return false; } public static function add_track_artists($track_id, $type, $names, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $dataParams = $isPDO ? [] : new QueryData(); $sql = "INSERT INTO track_artist (track_id, type, name) VALUES"; $count = 0; $name_array = explode('|', $names); if(count($name_array)){ foreach($name_array as $name){ $name = trim($name); if($name){ if($count){ $sql .= ","; } $sql .= ' (?, ?, ?)'; $isPDO ? $dataParams[] = $track_id : $dataParams->addDataParam('i', $track_id); $isPDO ? $dataParams[] = $type : $dataParams->addDataParam('s', $type); $isPDO ? $dataParams[] = stripControlChars($name) : $dataParams->addDataParam('s', stripControlChars($name)); $count++; } } } if($count){ $return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS; $affected_rows = $wrapperObj->executeQuery($sql, $dataParams, $return_type); if ($affected_rows === false) { $isPDO ? show_pdo_error($delQuery, $wrapperObj->getLastStatement()) : showierror($sql); } return $affected_rows; } return 0; } public static function add_track_artists_multiple($track_id, $upload, $wrapperObj) { $track_artist_types = array('composer', 'performer', 'orchestra', 'ensemble', 'conductor'); foreach($track_artist_types as $type){ if(isset($upload["track_$type"]) && trim($upload["track_$type"])){ self::add_track_artists($track_id, $type, $upload["track_$type"], $wrapperObj); } } } public static function delete_track_credits($release_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $sql = 'DELETE tc.* FROM track_credit tc INNER JOIN track t on t.id = tc.track_id WHERE t.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); } } public static function add_track_credits($wrapperObj, $track_id, $type, $names, $amd_id = '') { $isPDO = $wrapperObj instanceof QueryWrapper; $dataParams = $isPDO ? [] : new QueryData(); $sql = "INSERT INTO track_credit (track_id, role, artist_first_name, artist_last_name, crew_or_cast, amg_id) VALUES"; $count = 0; $name_array = explode('|', $names); if(count($name_array)){ foreach($name_array as $name){ $name = trim($name); $first_last = explode(';', $name); $first_name = trim($first_last[0]); $last_name = trim($first_last[1]); if(in_array($type, array('crew', 'cast'))){ $last_role = explode('^', $last_name); $last_name = trim($last_role[0]); $role = trim($last_role[1]); } $role = ($role) ? $role : $type; if($name){ if($count){ $sql .= ","; } $sql .= ' (?, ?, ?, ?, ?, ?)'; $crew_or_cast = ($type == 'cast') ? 'cast' : 'crew'; $isPDO ? $dataParams[] = $track_id : $dataParams->addDataParam('i', $track_id); $isPDO ? $dataParams[] = $role : $dataParams->addDataParam('s', $role); $isPDO ? $dataParams[] = stripControlChars($first_name) : $dataParams->addDataParam('s', stripControlChars($first_name)); $isPDO ? $dataParams[] = stripControlChars($last_name) : $dataParams->addDataParam('s', stripControlChars($last_name)); $isPDO ? $dataParams[] = $crew_or_cast : $dataParams->addDataParam('s', $crew_or_cast); $isPDO ? $dataParams[] = $amd_id : $dataParams->addDataParam('s', $amd_id); $count++; } } } if($count){ $return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS; $affected_rows = $wrapperObj->executeQuery($sql, $dataParams, $return_type); if ($affected_rows === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } return $affected_rows; } return 0; } public static function add_track_credits_multiple($wrapperObj, $track_id, $upload, $product_type = '') { $track_credit_types = array('producer', 'director', 'writer', 'cast', 'crew'); if ($product_type == 'music_video') { array_push($track_credit_types, 'editor', 'other'); } foreach($track_credit_types as $type){ if(isset($upload["track_{$type}s"]) && trim($upload["track_{$type}s"])){ self::add_track_credits($wrapperObj, $track_id, $type, $upload["track_{$type}s"], $upload['amd_id']); } if(in_array($type, array('cast', 'crew')) && isset($upload["track_{$type}_members"]) && trim($upload["track_{$type}_members"])){ self::add_track_credits($wrapperObj, $track_id, $type, $upload["track_{$type}_members"], $upload['amd_id']); } } } public static function delete_track_credit($track_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $sql = 'DELETE FROM track_credit WHERE track_id = ?'; if ($isPDO) { $dataParams = [$track_id]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $track_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 array of all "to-be-deleted" data related to release_id public static function get_carry_over_track_data($release_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $track_carry_over_data = array(); $sql = 'SELECT id, release_id, cd, track_id, length_minute, length_seconds, mp3_url, stereo_or_mono, bonus, youtube_matches, youtube_uploads FROM track WHERE release_id = ?'; $dataParams = $isPDO ? [] : new QueryData(); if ($isPDO) { $dataParams = [$release_id]; } else { $dataParams->addDataParam('i', $release_id); } $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } foreach ($rs as $row) { $track_carry_over_data[$row['release_id'] . "_" . $row['cd'] . "_" . $row['track_id']] = $row; } return $track_carry_over_data; } //Returns an array of all tracks related to the release public static function get_tracks_for_deletion($release_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $sql = 'select id from track where release_id = ?'; $dataParams = $isPDO ? [] : new QueryData(); if ($isPDO) { $dataParams = [$release_id]; } else { $dataParams->addDataParam('i', $release_id); } $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } $tmp_tracks = array(); foreach ($rs as $row) { $tmp_tracks[] = $row['id']; } return $tmp_tracks; } public static function delete_licensing_review_info($tmp_tracks, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $dataParams = $isPDO ? [] : new QueryData(); foreach ($tmp_tracks as $track) { $isPDO ? $dataParams[] = $track : $dataParams->addDataParam('s', $track); } $sql = 'DELETE lrh.* FROM licensing_review_status_change_history lrh INNER JOIN licensing_review_status lrs ON lrs.id = lrh.licensing_review_id WHERE lrs.track_id IN (' . implode(', ', array_fill(0, count($tmp_tracks), '?')) . ')'; $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); } $sql = 'DELETE FROM licensing_review_status WHERE track_id IN (' . implode(', ', array_fill(0, count($tmp_tracks), '?')) . ')'; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } } public static function insert_tracks($wrapperObj, $uploaded_fields, $track_carry_over_data, $product_type = '') { $isPDO = $wrapperObj instanceof QueryWrapper; $varReleaseID = $uploaded_fields['release_id']; $dataParams = $isPDO ? [] : new QueryData(); $sql = 'INSERT INTO track (release_id, upc, cd, track_id, track_name, isrc, length_minute, length_seconds, ' . 'explicit_lyrics, offer_type, p_line, track_type, mp3_url, stereo_or_mono, bonus, youtube_matches, ' . 'youtube_uploads, closed_caption_exists, last_updated'; if ($uploaded_fields['closed_caption_exists'] === 0) { $sql .= ', closed_caption_reason_id'; } if ($product_type = 'music_video') { $sql .= ', meta_language'; } $sql .= ') VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, "all", ?, ?, ?, ?, ?, ?, ?, ?, now()'; $old_track_key = $varReleaseID . '_' . $uploaded_fields['cd'] . '_' . $uploaded_fields['track_id']; $length_minute = (!$uploaded_fields['minutes'] && count($track_carry_over_data)) ? $track_carry_over_data[$old_track_key]['length_minute'] : $uploaded_fields['minutes']; $length_seconds = (!$uploaded_fields['seconds'] && count($track_carry_over_data)) ? $track_carry_over_data[$old_track_key]['length_seconds'] : $uploaded_fields['seconds']; $mp3_url = count($track_carry_over_data) ? $track_carry_over_data[$old_track_key]['mp3_url'] : $uploaded_fields['mp3_url']; $stereo_or_mono = (!$uploaded_fields['stereo_or_mono'] && count($track_carry_over_data)) ? $track_carry_over_data[$old_track_key]['stereo_or_mono'] : stripControlChars($uploaded_fields['stereo_or_mono']); $bonus = trim(strtoupper($track_carry_over_data[$old_track_key]['bonus'])) == 'Y' ? 'Y' : 'N'; $youtube_matches = count($track_carry_over_data) ? $track_carry_over_data[$old_track_key]['youtube_matches'] : $uploaded_fields['youtube_matches']; $youtube_uploads = count($track_carry_over_data) ? $track_carry_over_data[$old_track_key]['youtube_uploads'] : $uploaded_fields['youtube_uploads']; $isPDO ? $dataParams[] = $varReleaseID : $dataParams->addDataParam('i', $varReleaseID); $isPDO ? $dataParams[] = $uploaded_fields['upc'] : $dataParams->addDataParam('i', $uploaded_fields['upc']); $isPDO ? $dataParams[] = $uploaded_fields['cd'] : $dataParams->addDataParam('i', $uploaded_fields['cd']); $isPDO ? $dataParams[] = $uploaded_fields['track_id'] : $dataParams->addDataParam('i', $uploaded_fields['track_id']); $isPDO ? $dataParams[] = stripControlChars($uploaded_fields['track_name']) : $dataParams->addDataParam('s', stripControlChars($uploaded_fields['track_name'])); $isPDO ? $dataParams[] = trimISRC(stripControlChars($uploaded_fields['isrc'])) : $dataParams->addDataParam('s', trimISRC(stripControlChars($uploaded_fields['isrc']))); $isPDO ? $dataParams[] = $length_minute : $dataParams->addDataParam('i', $length_minute); $isPDO ? $dataParams[] = $length_seconds : $dataParams->addDataParam('i', $length_seconds); $isPDO ? $dataParams[] = $uploaded_fields['explicit_lyrics'] : $dataParams->addDataParam('s', $uploaded_fields['explicit_lyrics']); $isPDO ? $dataParams[] = stripControlChars($uploaded_fields['p_line']) : $dataParams->addDataParam('s', stripControlChars($uploaded_fields['p_line'])); $isPDO ? $dataParams[] = $uploaded_fields['track_type'] : $dataParams->addDataParam('s', $uploaded_fields['track_type']); $isPDO ? $dataParams[] = $mp3_url : $dataParams->addDataParam('s', $mp3_url); $isPDO ? $dataParams[] = $stereo_or_mono : $dataParams->addDataParam('s', $stereo_or_mono); $isPDO ? $dataParams[] = $bonus : $dataParams->addDataParam('s', $bonus); $youtube_matches = (!empty($youtube_matches)) ? $youtube_matches : 'default(youtube_matches)'; if (!empty($youtube_matches)) { $isPDO ? $dataParams[] = $youtube_matches : $dataParams->addDataParam('s', $youtube_matches); } $isPDO ? $dataParams[] = $youtube_uploads : $dataParams->addDataParam('s', $youtube_uploads); $isPDO ? $dataParams[] = $uploaded_fields['closed_caption_exists'] : $dataParams->addDataParam('i', $uploaded_fields['closed_caption_exists']); if ($uploaded_fields['closed_caption_exists'] === 0) { $sql .= ', ?'; $isPDO ? $dataParams[] = $uploaded_fields['closed_caption_reason_id'] : $dataParams->addDataParam('i', $uploaded_fields['closed_caption_reason_id']); } if ($product_type = 'music_video') { $sql .= ', ?'; $isPDO ? $dataParams[] = $uploaded_fields['track_meta_language'] : $dataParams->addDataParam('s', $uploaded_fields['track_meta_language']); } $sql .= ')'; $return_type = $isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID; $insert_id = $wrapperObj->executeQuery($sql, $dataParams, $return_type); if ($insert_id === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } return $insert_id; } public static function insert_track_publishers_multiple($track_id, $upload, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $dataParams = $isPDO ? [] : new QueryData(); $sql = 'INSERT INTO track_publisher (publisher_name, ownership, track_id) VALUES '; $count = 0; for($i = 1; $i <= 4; $i++){ if(isset($upload["publisher{$i}_pct"]) && trim($upload["publisher{$i}_pct"]) && $track_id){ if($count > 0){ $sql .= ','; } $sql .= ' (?, ?, ?)'; $isPDO ? $dataParams[] = stripControlChars($upload["publisher$i"]) : $dataParams->addDataParam('s', stripControlChars($upload["publisher$i"])); $isPDO ? $dataParams[] = $upload["publisher{$i}_pct"] : $dataParams->addDataParam('d', $upload["publisher{$i}_pct"]); $isPDO ? $dataParams[] = $track_id : $dataParams->addDataParam('i', $track_id); $count++; } } if($count){ $return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS; $affected_rows = $wrapperObj->executeQuery($sql, $dataParams, $return_type); if ($affected_rows === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } return $affected_rows; } return 0; } public static function insert_track_writers($new_varTrackID, $varSongwriters, $upc, $cd, $track_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $song_writers_arr = explode('|', $varSongwriters); $count = 0; $dataParams = $isPDO ? [] : new QueryData(); $sql = 'INSERT INTO track_writer(writer_name, upc, cd, track_id, unique_track_id) VALUES'; if(count($song_writers_arr)){ foreach($song_writers_arr as $song_writer){ $song_writer = str_replace(";", " ", trim($song_writer)); if($song_writer){ if($count > 0){ $sql .= ','; } $sql .= ' (?, ?, ?, ?, ?)'; $isPDO ? $dataParams[] = stripControlChars($song_writer) : $dataParams->addDataParam('s', stripControlChars($song_writer)); $isPDO ? $dataParams[] = $upc : $dataParams->addDataParam('i', $upc); $isPDO ? $dataParams[] = $cd : $dataParams->addDataParam('i', $cd); $isPDO ? $dataParams[] = $track_id : $dataParams->addDataParam('i', $track_id); $isPDO ? $dataParams[] = $new_varTrackID : $dataParams->addDataParam('i', $new_varTrackID); $count++; } } } if($count){ $return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS; $affected_rows = $wrapperObj->executeQuery($sql, $dataParams, $return_type); if ($affected_rows === false) { $isPDO ? show_pdo_error($delQuery, $wrapperObj->getLastStatement()) : showierror($sql); } return $affected_rows; } return 0; } public static function insert_track_video($wrapperObj, $track_id, $uploaded_fields, $product_type = '') { $isPDO = $wrapperObj instanceof QueryWrapper; $insert_fields = array('color', 'release_date', 'aspect_ratio', 'resolution', 'fps', 'mastered', 'subtitles_burned'); if ($product_type = 'music_video') { array_push($insert_fields, 'channel'); } $fields_list = ''; $fields_value = ''; $dataParams = $isPDO ? [] : new QueryData(); $isPDO ? $dataParams[] = $track_id : $dataParams->addDataParam('i', $track_id); foreach($insert_fields as $field){ if(isset($uploaded_fields[$field]) && trim($uploaded_fields[$field])){ $fields_list .= ', ' . $field; $fields_value .= ', ?'; $isPDO ? $dataParams[] = $uploaded_fields[$field] : $dataParams->addDataParam('s', $uploaded_fields[$field]); } } $return_type = $isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID; $sql = 'INSERT INTO track_video (id' . $fields_list . ') VALUES (?' . $fields_value . ')'; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } } public static function delete_track_video($track_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $dataParams = $isPDO ? [] : new QueryData(); $sql = 'DELETE FROM track_video WHERE id = ?'; $isPDO ? $dataParams[] = $track_id : $dataParams->addDataParam('i', $track_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); } } public static function update_track_info($new_varTrackID, $track_carry_over_data, $uploaded_fields, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $varReleaseID = $uploaded_fields['release_id']; $varCDNumber = $uploaded_fields['cd']; $varTrackID = $uploaded_fields['track_id']; $original_track_id = $track_carry_over_data[$varReleaseID . "_" . $varCDNumber . "_" . $varTrackID]['id']; if ($isPDO) { $dataParams = [$new_varTrackID, $original_track_id]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $new_varTrackID); $dataParams->addDataParam('i', $original_track_id); } $return_type = $isPDO ? QueryWrapper::RETURN_AFFECTED_ROWS : MysqliWrapper::RETURN_AFFECTED_ROWS; $sql = 'UPDATE track_video set id = ? where id = ?'; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } $sql = 'UPDATE track_credit set track_id = ? where track_id = ?'; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } $sql = 'UPDATE track_video_marker set track_id = ? where track_id = ?'; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } $sql = 'UPDATE track_note set track_id = ? where track_id = ?'; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } } public static function delete_release_tracks($release_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; self::delete_release_track_info($release_id, $wrapperObj); $sql = 'DELETE FROM track 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); } } public static function delete_release_track_info($release_id, $wrapperObj) { self::delete_release_track_artists($release_id, $wrapperObj); self::delete_release_track_writers($release_id, $wrapperObj); self::delete_release_track_publishers($release_id, $wrapperObj); self::delete_track_credits($release_id, $wrapperObj); } public static function delete_release_track_artists($release_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $sql = 'DELETE ta.* FROM track_artist ta INNER JOIN track t ON t.id = ta.track_id WHERE t.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); } } public static function delete_release_track_writers($release_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $sql = 'DELETE tw.* FROM track_writer tw INNER JOIN track t ON t.id = tw.track_id WHERE t.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); } } public static function delete_release_track_publishers($release_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $sql = 'DELETE tp.* FROM track_publisher tp INNER JOIN track t ON t.id = tp.track_id WHERE t.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); } } public static function delete_video_track_info($new_varTrackID, $track_carry_over_data, $uploaded_fields, $track_type, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $varReleaseID = $uploaded_fields['release_id']; if($track_carry_over_data[$varReleaseID . "_" . $uploaded_fields['cd'] . "_" . $uploaded_fields['track_id']]['id']){ $dataParams = $isPDO ? [] : new QueryData(); if ($isPDO) { $dataParams = [$track_carry_over_data[$varReleaseID . '_' . $uploaded_fields['cd'] . '_' . $uploaded_fields['track_id']]['id']]; } else { $dataParams->addDataParam('i', $track_carry_over_data[$varReleaseID . '_' . $uploaded_fields['cd'] . '_' . $uploaded_fields['track_id']]['id']); } $sql = 'DELETE from track_video where 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); } $sql = 'DELETE from track_credit where track_id = ?'; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } $sql = 'DELETE from track_video_marker where track_id = ?'; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } $sql = 'DELETE from track_note where track_id = ?'; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } } if($track_type == 'video'){ $release_date = $uploaded_fields['release_date'] ? $uploaded_fields['release_date'] : NULL; $sql = 'INSERT INTO track_video (id, release_date, copyright) VALUES (?, ?, ?)'; if ($isPDO) { $dataParams = []; $dataParams[] = $new_varTrackID; $dataParams[] = $release_date; $dataParams[] = stripControlChars($uploaded_fields['c_line']); } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $new_varTrackID); $dataParams->addDataParam('s', $release_date); $dataParams->addDataParam('s', stripControlChars($uploaded_fields['c_line'])); } $return_type = $isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } } } /** * Delete all preview track_video_markers * @param int $track_id */ public static function delete_video_marker_preview_time($track_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; if ($isPDO) { $dataParams = [$track_id]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $track_id); } $sql = 'DELETE FROM track_video_marker WHERE track_id = ? and type = "preview"'; $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); } } /** * Adds 'preview' type entries to track_video_marker table for $track_id * @param int $track_id * @param string $preview_time */ public static function add_video_marker_preview_time($track_id, $preview_time, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $insert_query = 'INSERT INTO track_video_marker (track_id, time, type) VALUES (?, ?, "preview")'; if ($isPDO) { $dataParams = [$track_id, $preview_time]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $track_id); $dataParams->addDataParam('s', $preview_time); } $return_type = $isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID; if ($wrapperObj->executeQuery($insert_query, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($insert_query, $wrapperObj->getLastStatement()) : showierror($insert_query); } } public static function add_track_video_marker($track_id, $data, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $sql = 'INSERT INTO track_video_marker (track_id, chapter_number, chapter_name, time, type, start_timecode, end_timecode, isrc, usages, cline, pline, artists, song_name, cue_number) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; $chapter_type = $data['chapter_type'] ? $data['chapter_type'] : 'preview'; $chapter_start_time = $data['chapter_start_time'] ? $data['chapter_start_time'] : NULL; $chapter_end_time = $data['chapter_end_time'] ? $data['chapter_end_time'] : NULL; $isrc = $data['isrc'] ? $data['isrc'] : NULL; $usages = $data['usages'] ? $data['usages'] : NULL; $c_line = $data['c_line'] ? $data['c_line'] : NULL; $p_line = $data['p_line'] ? $data['p_line'] : NULL; $artists = $data['artists'] ? $data['artists'] : NULL; $song_name = $data['song_name'] ? $data['song_name'] : NULL; $cue_number = $data['cue_number'] ? $data['cue_number'] : NULL; if ($isPDO) { $dataParams = []; $dataParams[] = $track_id; $dataParams[] = $data['chapter_number']; $dataParams[] = $data['chapter_name']; $dataParams[] = $chapter_start_time; $dataParams[] = $chapter_type; $dataParams[] = $chapter_start_time; $dataParams[] = $chapter_end_time; $dataParams[] = $isrc; $dataParams[] = $usages; $dataParams[] = $c_line; $dataParams[] = $p_line; $dataParams[] = $artists; $dataParams[] = $song_name; $dataParams[] = $cue_number; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $track_id); $dataParams->addDataParam('i', $data['chapter_number']); $dataParams->addDataParam('s', $data['chapter_name']); $dataParams->addDataParam('s', $chapter_start_time); $dataParams->addDataParam('s', $chapter_type); $dataParams->addDataParam('s', $chapter_start_time); $dataParams->addDataParam('s', $chapter_end_time); $dataParams->addDataParam('s', $isrc); $dataParams->addDataParam('s', $usages); $dataParams->addDataParam('s', $c_line); $dataParams->addDataParam('s', $p_line); $dataParams->addDataParam('s', $artists); $dataParams->addDataParam('s', $song_name); $dataParams->addDataParam('i', $cue_number); } $return_type = $isPDO ? QueryWrapper::RETURN_INSERT_ID : MysqliWrapper::RETURN_INSERT_ID; if ($wrapperObj->executeQuery($sql, $dataParams, $return_type) === false) { $isPDO ? show_pdo_error($sql, $wrapperObj->getLastStatement()) : showierror($sql); } } // Inserts chapter and video cue data into the ex_a_track_video_marker table public static function add_track_video_markers_multiple($track_id, $upload, $product_type, $wrapperObj) { for($i = 1; $i <= 35; $i++){ $start_time = "chapter{$i}_start_time"; $next = $i + 1; $next_start_time = "chapter{$next}_start_time"; $chapter_name = "chapter{$i}_name"; if($product_type == 'concert_film'){ $chapter_isrc = "chapter{$i}_isrc"; $chapter_artists = "chapter{$i}_artist"; $chapter_c_line = "chapter{$i}_c_line"; $chapter_p_line = "chapter{$i}_p_line"; } if(array_key_exists($start_time, $upload) && array_key_exists($chapter_name, $upload) && $upload[$chapter_name]){ $upload['chapter_type'] = 'chapter'; $upload['chapter_number'] = $i; $upload['chapter_name'] = $upload[$chapter_name]; $upload['cue_number'] = ''; if($upload[$start_time]){ $upload['chapter_start_time'] = $upload[$start_time]; }else if($i == 1){ $upload['chapter_start_time'] = '00:00:00:00'; } if($upload[$next_start_time]){ $next_start_time_arr = explode(":", $upload[$next_start_time]); $upload[$next_start_time] = $next_start_time_arr[0].":".$next_start_time_arr[1].":".$next_start_time_arr[2].":".$next_start_time_arr[3]; $upload['chapter_end_time'] = date('H:i:s:u', strtotime('-1 second', strtotime($upload[$next_start_time]))); }else{ $upload['chapter_end_time'] = '00:00:00:00'; } if($product_type == 'concert_film'){ $upload['c_line'] = ''; $upload['p_line'] = ''; $upload['isrc'] = ''; $upload['artists'] = ''; $upload['song_name'] = ''; } self::add_track_video_marker($track_id, $upload, $wrapperObj); if($product_type == 'concert_film'){ $upload['chapter_type'] = 'music_cue'; $upload['cue_number'] = $i; if($upload[$start_time]){ $upload['chapter_start_time'] = $upload[$start_time]; }else if($i == 1){ $upload['chapter_start_time'] = '00:00:00:00'; } if($upload[$next_start_time]){ $upload['chapter_end_time'] = date('H:i:s:u', strtotime('-1 second', strtotime($upload[$next_start_time]))); }else{ $upload['chapter_end_time'] = '00:00:00:00'; } $upload['isrc'] = $upload[$chapter_isrc]; $upload['artists'] = $upload[$chapter_artists]; $upload['c_line'] = $upload[$chapter_c_line]; $upload['p_line'] = $upload[$chapter_p_line]; $upload['song_name'] = $upload[$chapter_name]; self::add_track_video_marker($track_id, $upload, $wrapperObj); } } } } public static function delete_track_video_markers($track_id, $wrapperObj) { $isPDO = $wrapperObj instanceof QueryWrapper; $sql = 'DELETE FROM track_video_marker WHERE track_id = ?'; if ($isPDO) { $dataParams = [$track_id]; } else { $dataParams = new QueryData(); $dataParams->addDataParam('i', $track_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); } } public static function validate_track_id($track_id){ if(!$track_id) return '
  • Track Number is missing.
  • '; elseif(!is_numeric($track_id) or $track_id <= 0) return '
  • Track Number must be a number greater than 0.
  • '; return ''; } public static function validate_cd($cd){ if(!$cd) return '
  • CD Volume Number is missing.
  • '; elseif(!is_numeric($cd) or $cd <= 0) return '
  • CD Volume Number must be a number greater than 0.
  • '; return ''; } public static function validate_isrc($isrc){ if(!checkISRC($isrc)){ return '
  • Track ISRC is in wrong format.
  • ' .$isrc. "\n"; } return ''; } public static function validate_publishers($upload){ $theError = ''; if($upload['publisher1'] or $upload['publisher2'] or $upload['publisher3'] or $upload['publisher4']){ $ownership = ceil($upload['publisher1_pct'] + $upload['publisher2_pct'] + $upload['publisher3_pct'] + $upload['publisher4_pct']); if($ownership != 100){ $theError .= '
  • Sum of Publishers\' percentages must be equal to 100
  • ' . "\n"; } } if($upload['publisher1_pct'] and !$upload['publisher1']){ $theError .= '
  • Publisher 1 is missing.
  • ' . "\n"; } if($upload['publisher2_pct'] and !$upload['publisher2']){ $theError .= '
  • Publisher 2 is missing.
  • ' . "\n"; } if($upload['publisher3_pct'] and !$upload['publisher3']){ $theError .= '
  • Publisher 3 is missing.
  • ' . "\n"; } if($upload['publisher4_pct'] and !$upload['publisher4']){ $theError .= '
  • Publisher 4 is missing.
  • ' . "\n"; } return $theError; } public static function validate_track_upload($product_type, $upload){ $theError = self::validate_track_id($upload['track_id']); $theError .= self::validate_cd($upload['cd']); if($upload['p_line']){ $theError .= RSD_Release::validate_c_line($upload['p_line']); } if(trimISRC($upload['isrc'])){ $theError .= self::validate_isrc(trimISRC($upload['isrc'])); } $theError .= self::validate_publishers($upload); return $theError; } public static function get_unique_track_id($upc, $cd, $track_id, MysqliWrapper $wrapperObj) { $dataParams = new QueryData(); $sql = 'SELECT id FROM track WHERE upc = ? AND cd = ? AND track_id = ?'; $dataParams->addDataParam('i', $upc); $dataParams->addDataParam('i', $cd); $dataParams->addDataParam('i', $track_id); $rs = $wrapperObj->executeQuery($sql, $dataParams); if ($rs === false) { showierror($sql); } if (count($rs)) { return $rs[0]['id']; } return 0; } /** * Validates the Preview in point * * @param string $previewInPoint * * @return string */ public static function validatePreviewInPoint($previewInPoint) { $thePattern = '/^(([0-9]+):([0-5][0-9]):([0-5][0-9]))|(([0-5][0-9]):([0-5][0-9]))$/'; $previewInPointCount = explode(':', $previewInPoint); if (preg_match($thePattern, $previewInPoint, $matches) && count($previewInPointCount) < 5) { return ''; } return '
  • Invalid Preview In Point.
  • ' . $previewInPoint . "\n"; } } ?>