Skip to content

Change Log

aporia-records edited this page Sep 6, 2018 · 20 revisions

2017-08-28 — v1.4 — Initial GPL release


2017-08-30 — v1.41 — TIS Rewriting rules based on receiver society

BUG FIXES

  • Fixed import of 'REC' record types
  • Fixed sortShares() so that the Shares array index still starts at 1 rather than 0.

MINOR CHANGES

  • Work_ID and ISWC now imported into tracks array
  • Releases now contain an array to track Track_ID, ISRC, Work_ID, and ISWC for each track in the release
  • Optimized functions addTrack() and addRelease()

NEW FEATURES

  • TISrewrite: will re-write TIS territories as individual territories to Include for specific societies (this is useful if the society in question has trouble evaluating TIS equations)
  • Added new functions for use with master-side metadata: addRightsholder(), addContributor(), removeWorkDetail()

2017-09-15 — v1.42

BUG FIXES

  • addPerformer(): now returns the correct index of new names
  • 'REC' : fixed a bug that prevented mulitiple ISRCs from generating mulitple records
  • group record count is now correct in cases with multiple transaction groups
  • Publishers without ownership shares (e.g. administrators) now included in the SPU chain if collection shares are defined

MINOR CHANGES

  • 'REC' record output: rewrote encoding loop

NEW FEATURES

  • 'REC' record output: added ISRC and EAN/UPC validity checks - now will not include invalid values in 'REC' record types
  • encode_cwr(): invalid IPI numbers now replaced universally with spaces
  • validateShares(): collection values now checked as part of shares validation - will fail if the collection values in a specified territory sum to zero
  • addPerformer(): artists/performers will now be matched using an IPI value, if one is specified

2017-09-26 — v1.43 — IPI Name Number bug fix/maintenance:

BUG FIXES

  • encode_cwr(): leading zeros were removed from IPI Name numbers after the last update -- now fixed
  • writeCWR(): now fails if Submitter Name is missing in the shareholders array

MINOR CHANGES

  • validateWork(): now checks the Text Music Relationship for a valid entry, replaces invalid entries with spaces
  • encode_cwr(): error messages now added to the messages array, rather than displayed via printf()

2017-10-05 — v1.44 — IPI Name Number and ISWC checksum testing

BUG FIXES

  • addTerritory(): Collection values now automatically set to zero if the current territory is being excluded - see note 1 below

MINOR CHANGES

  • validateShare(): now checks that SPT collection values are within the valid range
  • encode_cwr(): now checks that IPI Base Numbers follow the valid pattern and that IPI Name Numbers have valid checksums, replaces invalid values with blanks
  • callback_check_ipi: renamed to callback_lookup_ipi for clarity

NEW FEATURES

  • is_valid_ipi_base(): tests whether an IPI Base Number follows the valid format; the check digit is not verified
  • is_valid_ipi_name(): tests whether an IPI Name number has a valid checksum - see note 2 below
  • is_valid_iwsc(): tests whether an ISWC string follows the valid pattern format and has a valid check digit
  • checkLuhn(): Luhn algorithm validity check - see note 3 below

NOTES

  1. Some societies (e.g. BMI and CMRRA) ignore the Include/Exclude Indicator flag, and merely set their TIS territory collection values in an additive (rather than subtractive) fashion. Although the CWR Functional Specifications do not specify that the collection values on an SPT record must be zero, in practice they do at societies that ignore the indicator flag.
  2. Thank you to Peter Klauser @ SUISA for contributing the IPI Name Number checksum formula.
  3. Mod 10/Luhn test was sourced from the wikipedia article
    (https://en.wikipedia.org/wiki/Luhn_algorithm)

2017-11-24 — v1.45 — IP Number and IPI Name Number distinction

CHANGES

  • 'IP Number' and 'IPI Name Number' have now been completely separated within the internal data model.
  • addShareholder(): now requires IP_Number in the argument array. IPI Name Numbers are only required for controlled shareholders.

BUG FIXES

  • encode_cwr(): IPI Name Numbers that evaluate to zero are now replaced by spaces, as per the CWR spec.

2017-12-01 — v1.46 — changes based on feedback from Matija Kolarić i@matijakolaric.com:

AporiaWorksRegistration.php:

  • additional validity checks around track-level metadata and Alternative Titles
  • validateshares(): now checks if controlled writers have at least one collection territory defined
  • validateshares(): now checks if 'Shares Change' when Subpublished entered was not one of 'N' or 'Y' - replaces with 'N'
  • addShareholder(): added support for 'Publisher Unknown Indicator' and 'Writer Unknown Indicator'
  • added support for Special Agreements Indicator in SPU/OPU records
  • addTerritory(): now fails if the TIS Numeric Code does not exist in the TIS lookup table.
  • NewWork(): now checks ISWC validity, and replaces invalid ISWCs with spaces.
  • 'Recorded_Flag' renamed to 'Recorded_Indicator' for consistency with the published CWR specifications.
  • New function getISRCs(): returns an array of ISRC codes linked to a Work
  • New setting: $this->Transliterate - if this is set TRUE, then the function transliterate() (in cwr-lib) will be used to transliterate non-valid characters to their valid equivalents. This will slow processing down, so you may wish to disable it.

cwr-lib.php:

  • the functions for CISAC validation have been reworked into the following:
    • is_valid_ipi_name(): verifies the 2 digit checksum of an IPI Name Number string
    • is_valid_ipi_base(): verifies the check digit of an IPI Base Number string
    • is_valid_iswc(): verifies the check digit of an ISWC string
  • is_not_array(): new function that reverses the booleen result of is_array()

2018-06-13 — v1.47 — bug fixes:

  • transliterate() - now uses Language_Code for specific rules
  • New runtime setting: $this->No_Society_Code. Default is 99 as per most recent lookup tables, but can optionally be set to ''.
  • bugfix: PER (performer) records were being skipped. Fixed with new function getPerfomers()
  • bugfix: HDR - submitter name was not found if the IP_Number differed from the IPI_Name_Number
  • bugfix: whitespace now trimmed from IPI_Name_Number, IPI_Base_Number and ISWC in the validation functions
  • bugfix: addPerformer() - was not working if there were more than 1 performer per work - now fixed
  • bugfix: Lower case titles were being filtered out. Now they are correctly converted to upper case.

2018-09-06 — v1.48 — bug fixes:

AporiaWorksRegistration.php:

  • CWR_Revision: now defaults to revision 1 if CWR version is set to 2.2
  • addShareholder(): now correctly returns true if a shareholder was successfully added
  • Publisher roles now correctly sorted: The first SPU record within a chain must be for an Original Publisher or Income Participant (Publisher Type = “E” or “PA”).
  • empty/null values for Society Code fields are now outputted correctly
  • setXRef(): will now skip any record with an Organisation Code of '000' or '099'
  • addShareholder(): Now strips invalid Society Codes and replaces with the No Society value
  • addPerformer(): Now converts names to upper-case

cwr-lib.php:

  • ISRC_Validity flag is now set after checking the ISRC supplied for a 'REC' record type

New functions:

  • addAltTitle(title, type, language) - will add an ALT list entry
  • getAltTitles() - returns the ALT list array
  • removeShare() - removes the current share and reindexes the shares array within the work