100 ) { problem("Title length is not OK"); } logextra( "Title length is OK" ); $title = $provided_title; // Check summary $provided_summary = urldecode( $decoded_json["summary"] ); if ( empty($provided_summary) or strlen( $provided_summary) > 200 or strlen(str_replace('\\', '', $provided_summary)) > 100 ) { problem("Summary length is not OK"); } logextra( "Summary length is OK" ); $summary = $provided_summary; // Check Adult flag $provided_explicit = urldecode( $decoded_json["explicit"] ); if ( empty($provided_explicit) ) { problem("explicit is missing"); } logextra( "explicit exists" ); if ( strcmp($provided_explicit, "Yes") !== 0 ) { logextra( "explicit is not yes" ); if ( strcmp($provided_explicit, "Clean") !== 0 ) { problem("explicit needs to be either Yes or Clean"); } } logextra( "explicit is either Yes or Clean" ); $explicit = $provided_explicit; if ( $explicit === "Clean" ) { $explicit = 0; } else { $explicit = 1; } // Check notes $provided_notes = urldecode( $decoded_json["notes"] ); if ( empty($provided_notes) or strlen($provided_notes) > 100000 ) { problem("Notes are missing not less than max"); } logextra( "Notes are present and are under the max length" ); $notes = $provided_notes; // Check episode Lisence $provided_episode_license = urldecode( $decoded_json["episode_license"] ); if ( empty($provided_episode_license) or strlen($provided_episode_license) < 4 or strlen($provided_episode_license) > 11 ) { problem("episode_license length is not fine"); } logextra( "episode_license length is fine" ); $query = "SELECT short_name FROM licenses WHERE short_name = '$provided_episode_license'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } else { $db = mysqli_fetch_array($result, MYSQLI_ASSOC); if ( empty($db["short_name"]) ) { problem( "No result returned for this short_name:\"${provided_episode_license}\"" ); } } $episode_license = $provided_episode_license; logextra( "episode_license is a valid value \"${episode_license}\"" ); // Check Series ID $provided_series_id = urldecode( $decoded_json["series_id"] ); if ( ( empty($provided_series_id) and ($provided_series_id != 0 ) ) or (strlen($provided_series_id) > 3 ) ) { problem("Series id is not in the correct range"); } logextra( "series length is fine" ); if ( (strval(intval($provided_series_id)) != strval($provided_series_id)) ){ problem("series is not an int"); } logextra( "series is int" ); $query = "SELECT COUNT(id) AS count_id FROM miniseries WHERE id='$provided_series_id'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } else { $db = mysqli_fetch_array($result, MYSQLI_ASSOC); if ( empty($db["count_id"]) ) { problem( "No result count returned for this miniseries:\"${provided_series_id}\"" ); } $count_id = $db["count_id"]; if ( $count_id === 0 ) { problem( "No result returned for this query \"$query\"" ); } } $series_id = $provided_series_id; logextra( "Series ID was found \"$series_id\"" ); // Check Series Name $provided_series_name = urldecode( $decoded_json["series_name"] ); if ( empty( $provided_series_name ) or strlen( $provided_series_name ) < 3 or strlen( $provided_series_name ) > 50 ) { problem("series_name length is not correct"); } $query = "SELECT name FROM miniseries WHERE id='$series_id'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } else { $db = mysqli_fetch_array($result, MYSQLI_ASSOC); if ( empty($db["name"]) ) { problem( "No result name returned for this miniseries:\"${series_id}\"" ); } $db_series_name = $db["name"]; } logextra( "Series name has been found in db: \"$db_series_name\"" ); if ( $provided_series_name != $db_series_name ) { problem("Provided series_name \"$provided_series_name\" and db_series_name \"$db_series_name\" don't match."); } $series_name = $provided_series_name; logextra( "Series Name was found \"$series_name\"" ); // Check Tags $provided_tags = urldecode( $decoded_json["tags"] ); if ( empty( $provided_tags ) or strlen( $provided_tags ) < 3 or strlen( $provided_tags ) > 100 ) { problem("Tags are not the correct length"); } logextra( "Tags are the correct length" ); $tags = $provided_tags; // Check Host ID $provided_hostid = urldecode( $decoded_json["hostid"] ); if ( empty( $provided_hostid ) or ( $provided_hostid === 0 ) or ( $provided_hostid > 999 ) or ( strlen( $provided_hostid ) > 3 ) or ( strval( intval( $provided_hostid ) ) != strval( $provided_hostid ) ) ) { problem("Host id is not in the correct range \"${provided_hostid}\""); } logextra( "host id length is fine" ); $query = "SELECT COUNT(hostid) AS count_hostid FROM hosts WHERE hostid='$provided_hostid'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } else { $db = mysqli_fetch_array($result, MYSQLI_ASSOC); if ( empty($db["count_hostid"]) ) { problem( "No result count returned for this hostid:\"${provided_hostid}\"" ); } $count_hostid = $db["count_hostid"]; if ( $count_hostid === 0 ) { problem( "No result returned for this query \"$query\"" ); } } $host_id = $provided_hostid; logextra( "Host ID was found \"$host_id\"" ); // Check Host Name $provided_host_name = urldecode( $decoded_json["host_name"] ); if ( empty( $provided_host_name ) or strlen( $provided_host_name ) < 3 or strlen( $provided_host_name ) > 50 ) { problem("host_name length is not correct"); } $query = "SELECT host FROM hosts WHERE hostid='$host_id'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } else { $db = mysqli_fetch_array($result, MYSQLI_ASSOC); if ( empty($db["host"]) ) { problem( "No result host name returned for this host_id:\"${host_id}\"" ); } $db_host_name = $db["host"]; } logextra( "Host name has been found in db: \"$db_host_name\"" ); if ( $provided_host_name != $db_host_name ) { problem("Provided host_name \"$provided_host_name\" and db_host_name \"$db_host_name\" don't match."); } $host_name = $provided_host_name; logextra( "Host ID was found \"$host_name\"" ); // Check Host Lisence $provided_host_license = urldecode( $decoded_json["host_license"] ); if ( empty($provided_host_license) or strlen($provided_host_license) < 4 or strlen($provided_host_license) > 11 ) { problem("host_license length is not fine"); } logextra( "host_license length is fine" ); $query = "SELECT short_name FROM licenses WHERE short_name = '$provided_host_license'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } else { $db = mysqli_fetch_array($result, MYSQLI_ASSOC); if ( empty($db["short_name"]) ) { problem( "No result returned for this short_name:\"${provided_host_license}\"" ); } } $host_license = $provided_host_license; logextra( "host_license is a valid value \"${host_license}\"" ); // Check Episode Date $provided_ep_date = urldecode( $decoded_json["ep_date"] ); if ( !preg_match( "/^\d{4}-\d{2}-\d{2}$/", $provided_ep_date ) ) { problem("ep_date fails the regex match \"${provided_ep_date}\""); } if ( strtotime( $provided_ep_date ) === false ) { problem("ep_date didn't convert to date \"${provided_ep_date}\""); } $ep_date_epoch = strtotime( $provided_ep_date ); $ep_date = $provided_ep_date; logextra( "ep_date checkes passed: $ep_date, $ep_date_epoch" ); // Check Host Profile $provided_host_profile = urldecode( $decoded_json["host_profile"] ); if ( strlen( $provided_host_profile ) > 2000 ) { problem("host_profile is not the correct length"); } logextra( "host_profile is correct length" ); $host_profile = $provided_host_profile; // Check Host email $provided_email = urldecode( $decoded_json["email"] ); if ( empty( $provided_email ) or ( strlen( $provided_email ) > 100 ) ) { problem("Host email is not in the correct length \"${provided_email}\""); } logextra( "host email length is fine" ); if (!filter_var($provided_email, FILTER_VALIDATE_EMAIL)) { problem("Host email is not in the correct format. \"${provided_email}\""); } logextra( "host email passes validation $provided_email" ); $query = "SELECT COUNT(email) AS count_email FROM hosts WHERE email='$provided_email'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } else { $db = mysqli_fetch_array($result, MYSQLI_ASSOC); if ( empty($db["count_email"]) ) { problem( "The email address is not in the database:\"${provided_email}\"" ); } $count_email = $db["count_email"]; if ( $count_email === 0 ) { problem( "No result returned for this query \"$query\"" ); } } $email = $provided_email; logextra( "Host email was found in the database \"$email\"" ); // Confirm the provided Host ID, hostname and email match in the db. $query = "SELECT COUNT(hostid) AS count_hostid FROM hosts WHERE hostid='$host_id' AND host = '$host_name' AND email='$provided_email'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } else { $db = mysqli_fetch_array($result, MYSQLI_ASSOC); if ( empty($db["count_hostid"]) ) { problem( "The email address is not in the database:\"${provided_email}\"" ); } $count_hostid = $db["count_hostid"]; if ( $count_hostid === 0 ) { problem( "No result returned for this query \"$query\"" ); } } logextra( "Host email and host id were found in the database \"$host_id\", \"$host_name\", \"$email\", " ); // Check Duration $provided_duration = urldecode( $decoded_json["duration"] ); if ( empty( $provided_duration ) or $provided_duration < 120 or $provided_duration > 43200 ) { problem("Duration id is not in the correct range"); } logextra( "Duration length is fine" ); $duration = $provided_duration; logextra( "Duration was found \"$duration\"" ); // Check Episode Number $provided_ep_num = intval( urldecode( $decoded_json["ep_num"] ) ); if ( !isset( $provided_ep_num ) ) { problem("ep_num is not set "); } if ( empty( $provided_ep_num ) ) { problem("ep_num is empty "); } // SELECT MAX(ep_num) FROM `reservations` → 3627 // SELECT MIN(ep_num) FROM `reservations` WHERE ep_num > 0 → 3582 $result = mysqli_query($connection, 'SELECT MAX(ep_num) FROM `reservations`;'); if (!isset($result)) { problem("Can't get max eps from reservations"); } $max_eps_array = mysqli_fetch_row( $result ); $max_eps = $max_eps_array[0]; mysqli_free_result($result); $result = mysqli_query($connection, 'SELECT MIN(ep_num) FROM `reservations` WHERE ep_num > 0;'); if (!isset($result)) { problem("Can't get min eps from reservations"); } $min_eps_array = mysqli_fetch_row( $result ); $min_eps = $min_eps_array[0]; mysqli_free_result($result); if ( $provided_ep_num < $min_eps ) { problem("ep_num is too small"); } if ( $provided_ep_num > $max_eps ) { problem("ep_num is too big"); } if ( intval($provided_ep_num) === 9999 ) { problem("ep_num is a reserved show 9999"); } if ( intval($provided_ep_num) === 0 ) { problem("ep_num is 0"); } $ep_num = intval($provided_ep_num); // Workflow Check // SHOW_SUBMITTED → SHOW_POSTED → MEDIA_TRANSCODED → UPLOADED_TO_IA → UPLOADED_TO_RSYNC_NET $result = mysqli_query($connection, "SELECT ep_num FROM reservations WHERE ep_num='$ep_num' AND status='SHOW_SUBMITTED';"); if (!isset($result)) { problem("Cant get info from reservations db"); } $db_ep_num_array = mysqli_fetch_row( $result ); $db_ep_num = $db_ep_num_array[0]; mysqli_free_result($result); if ( $db_ep_num != $ep_num ){ problem("Cant find $ep_num with status of SHOW_SUBMITTED"); } $query = "SELECT COUNT(id) AS count_id FROM eps WHERE id = '$ep_num'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } else { $db = mysqli_fetch_array($result, MYSQLI_ASSOC); $count_id = $db["count_id"]; if ( $count_id != 0 ) { problem( "$count_id An existing episode has been posted with this episode id:\"${ep_num}\"" ); } } logextra( "The episode ID \"$ep_num\" has not already been assigned" ); ///////////////////////////////////////////////////////////////////////// // Update database - Actual Changes // Update host_profile $query = "SELECT profile FROM hosts WHERE hostid = '$host_id' and host = '$host_name'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } $db = mysqli_fetch_array($result, MYSQLI_ASSOC); if ( $db["profile"] != "$host_profile" ) { logextra("The host_profile is different to that in the db"); $host_profile = mysqli_real_escape_string( $connection, $host_profile ); $query = "UPDATE `hosts` SET `profile` = '$host_profile' WHERE `hosts`.`hostid` = '$host_id';"; $result = mysqli_query($connection, $query ); if (!isset($result)) { problem("could not update the host profile"); } else { logextra( "Updating the host profile" ); } } logextra( "The profile is the same to that in the db" ); // Update license $query = "SELECT license FROM hosts WHERE hostid = '$host_id' and host = '$host_name'"; $result = @mysqli_query($connection, $query); if($result === FALSE) { problem( "No result returned for this query \"$query\"" ); } else { $db = mysqli_fetch_array($result, MYSQLI_ASSOC); if ( empty( $db["license"] ) ) { problem( "No result returned for this license:\"${provided_episode_license}\"" ); } } $db_license = $db["license"]; if ( strcmp( $host_license, $db_license ) !== 0 ) { logextra("The host_license \"$host_license\" is not the same to that in the db \"$db_license\""); $host_license = mysqli_real_escape_string( $connection, $host_license ); $query = "UPDATE `hosts` SET `license` = '$host_license' WHERE `hosts`.`hostid` = '$host_id';"; $result = mysqli_query($connection, $query ); if (!isset($result)) { problem("could not update the host license"); } else { logextra( "Updating the host license" ); } } else { logextra( "The host_license is the same to that in the db \"$host_license\"" ); } $title = mysqli_real_escape_string( $connection, $title ); $summary = mysqli_real_escape_string( $connection, $summary ); $notes = mysqli_real_escape_string( $connection, $notes ); $tags = mysqli_real_escape_string( $connection, $tags ); $query_add = "INSERT INTO eps VALUES ('$ep_num', '{$ep_date}', '{$title}', '{$duration}', '{$summary}', '{$notes}', '{$host_id}', '{$series_id}', '{$explicit}', '{$episode_license}', '{$tags}', '0', '0', '0')"; $result = mysqli_query($connection, $query_add ); if(!$result) { problem("DB problem - The show $ep_num was not added to the eps db."); } if (mysqli_errno( $connection )) { $error = "MySQL error ".mysqli_errno( $connection ).": ".mysqli_error()."\n"; problem("MySQL error- The show $ep_num was not added to the eps db.\n$error"); } logextra( "Added the entry: $query_add" ); $result = mysqli_query($connection, "SELECT `id` FROM `eps` WHERE `id` = '$ep_num';"); if (!isset($result)) { problem("DB problem - The show $ep_num has not been added to the eps db"); } $db_ep_num_array = mysqli_fetch_row( $result ); $db_ep_num = $db_ep_num_array[0]; mysqli_free_result($result); if (mysqli_errno( $connection )) { $error = "MySQL error ".mysqli_errno( $connection ).": ".mysqli_error()."\n"; problem("MySQL error- The show $ep_num was not added to the eps db.\n$error"); } $result = mysqli_query($connection, "UPDATE reservations SET `status` = 'SHOW_POSTED' WHERE `ep_num` = '$ep_num' AND status='SHOW_SUBMITTED';" ); if (!isset($result)) { problem("DB problem - The show $ep_num has not been added to the eps db"); } if (mysqli_errno( $connection )) { $error = "MySQL error ".mysqli_errno( $connection ).": ".mysqli_error()."\n"; problem("Could not update the show status to SHOW_POSTED in the db"); } logextra( "Finished $ep_num ." ); ?>