<?

/************************************************************************
*
*                  OMS Web Service Functions 1.4
*                  -----------------------------
*
*     Copyright:   (C) 2007 moving primates GmbH
*      Function:   GetArtistList
*   Description:   Gets a info of ALL artists which are online and inside
*                  your artist pool. You can set various filter for this
*                  function to limit output.
*   Change Date:   12/Jun/2007
*
*************************************************************************
*
*   REQUIRED ELEMENTS:
*
*   The following elements must be send with the request:
*
*   - Page      < value must be numeric
*   - PageSize  < value must be numeric
*   - OrderBy   < value must be "ArtistName" or "FirstOnlineDate"
*   - SortOrder < value must be "ASC" or "DESC"
*   - Fieldlist < must contain at least one child element
*
*   FIELD ELEMTNES:
*   
*   The following are Field elements which define what you get back from
*   the Web Service function. They must be named "Field", their value
*   must be the exact name of the following enumeration and they must be
*   created as a child element of "Fieldlist".
*
*   Field elements are optional, however it is required that you
*   create at least one; their send order is irrelevant.
*
*   - ArtistID
*   - ArtistName
*   - ArtistURL
*   - Website
*   - MusicalInfluence
*   - SoundsLike
*   - ArtistPictureExists
*   - FirstOnlineDate
*   - PostalCode
*   - City
*   - CountryID
*   - CountryCode
*   - CountryName
*   - ArtistGenreID
*   - ArtistGenreParentID
*   - ArtistGenreTopParentID
*   - ArtistGenreName
*   - ArtistParentGenreName
*   - ArtistTopParentGenreName
*
*   FILTER ELEMTNES:
*
*   If you want to use the filter options of this function create an
*   element called "Filter" and at least one of the following child
*   elements:
*
*   - GenreID                < value must be numeric GenreID or 0 for no filtering
*   - CountryID              < value must be numeric CountryID or 0 for no filtering
*
*   - City                   < value must be string, can be send blank for no filter
*    - CitySearchType         < must be "Contains", "StartsWith" or "Equals"
*
*   - PostalCode            < value must be string, can be send blank for no filter
*    - PostalCodeSearchType    < must be "Contains", "StartsWith" or "Equals"
*
*   - ArtistName            < value must be string, can be send blank for no filter
*    - ArtistNameSearchType    < must be "Contains", "StartsWith" or "Equals"
*
*************************************************************************
*   More info about elements and the functions can be found inside
*   the documentation.
************************************************************************/

include("inc/config.php"); // Example path, point it to your config.php


$dom = create_document();
$root = create_root_element($dom, "OMS");
create_element_attribute($root, "xmlns", $oms_cfg['artist_data_xmlns'] . "/GetArtistList");


// Here we are defining the REQUIRED elements

$el_page = create_element($dom, "Page");
set_element_value($dom, $el_page, "1");

$el_page_size = create_element($dom, "PageSize");
set_element_value($dom, $el_page_size, "5");

$el_order_by = create_element($dom, "OrderBy");
set_element_value($dom, $el_order_by, "ArtistName");

$el_sort_order = create_element($dom, "SortOrder");
set_element_value($dom, $el_sort_order, "ASC");

$el_fields_list = create_element($dom, "FieldList");


// Here we are defining the FIELDLIST and its elements (requesting all available)

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "ArtistID");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "ArtistName");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "ArtistURL");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "Website");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "MusicalInfluence");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "SoundsLike");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "ArtistPictureExists");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "FirstOnlineDate");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "PostalCode");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "City");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "CountryID");
add_child_element($el_fields_list, $el_field);
                                   
$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "CountryCode");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "CountryName");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "ArtistGenreID");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "ArtistGenreParentID");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "ArtistGenreTopParentID");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "ArtistGenreName");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "ArtistParentGenreName");
add_child_element($el_fields_list, $el_field);

$el_field = create_element($dom, "Field");
set_element_value($dom, $el_field, "ArtistTopParentGenreName");
add_child_element($el_fields_list, $el_field);


// Here we are defining the FILTER elements

$el_filter = create_element($dom, "Filter");

$el_genre_id = create_element($dom, "GenreID");
set_element_value($dom, $el_genre_id, "1");
add_child_element($el_filter, $el_genre_id);

$el_country_id = create_element($dom, "CountryID");
set_element_value($dom, $el_country_id, "0");
add_child_element($el_filter, $el_country_id);

$el_city = create_element($dom, "City");
set_element_value($dom, $el_city, "");
add_child_element($el_filter, $el_city);

$el_city = create_element($dom, "CitySearchType");
set_element_value($dom, $el_city, "Contains");
add_child_element($el_filter, $el_city);

$el_postal_code = create_element($dom, "PostalCode");
set_element_value($dom, $el_postal_code, "");
add_child_element($el_filter, $el_postal_code);

$el_postal_code = create_element($dom, "PostalCodeSearchType");
set_element_value($dom, $el_postal_code, "Contains");
add_child_element($el_filter, $el_postal_code);

$el_artist_name = create_element($dom, "ArtistName");
set_element_value($dom, $el_artist_name, "");
add_child_element($el_filter, $el_artist_name);

$el_artist_name = create_element($dom, "ArtistNameSearchType");
set_element_value($dom, $el_artist_name, "Contains");
add_child_element($el_filter, $el_artist_name);


// Preparing the XML which is going to be send

add_child_element($root, $el_fields_list);
add_child_element($root, $el_page);
add_child_element($root, $el_page_size);
add_child_element($root, $el_order_by);
add_child_element($root, $el_sort_order);
add_child_element($root, $el_filter);

$xml_str = dump_to_string($dom);

$par = array("String_1" => $oms_cfg['ws_login'],
            
"String_2" => $oms_cfg['ws_password'],
            
"String_3" => $xml_str );


// Executing the Web Service function "GetArtistList"

$GetArtistList = ProcessWSCall($oms_cfg['artist_data_ws_url'], "GetArtistList", $par, $oms_cfg['artist_data_xmlns']);


// Counting available artists

if(isset($GetArtistList['ArtistList']))
{
    
$artist_count = sizeof($GetArtistList['ArtistList'][0]['Artist']);
}
else
{
    
$artist_count = 0;
}


/************************************************************************
*
*   From here on we assign the content of the array to variables and
*   create some example output. This was done so you can see something
*   when opening the PHP files with your browser.
*
*   If you are looking for this code without any comments or output,
*   then check out the folder 'minimal_code'.
*
************************************************************************/

?>
<style type="text/css">
<!--
.font {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
}
-->
</style>
<span class="font"> <strong>We sent the following elements with our <u>REQUEST</u>:</strong><br />
<ul>
    <li><em>Page</em> - value was "1"</li>
    <li><em>PageSize</em> - value was "5"</li>
    <li><em>OrderBy</em> - value was "ArtistName"</li>
    <li><em>SortOrder</em> - value was "ASC"</li>
    <br />
    <li><em>Fieldlist</em> - the requested child elements were: <i>
        <ul>
            <li>ArtistName</li>
            <li>ArtistURL</li>
            <li>Website</li>
            <li>MusicalInfluence</li>
            <li>SoundsLike</li>
            <li>ArtistPictureExists</li>
            <li>FirstOnlineDate</li>
            <li>PostalCode</li>
            <li>City</li>
            <li>CountryID</li>
            <li>CountryCode</li>
            <li>CountryName</li>
            <li>ArtistGenreID</li>
            <li>ArtistGenreParentID</li>
            <li>ArtistGenreTopParentID</li>
            <li>ArtistGenreName</li>
            <li>ArtistParentGenreName</li>
            <li>ArtistTopParentGenreName</li>
        </ul>
        </i> </li>
    <br />
    <li><em>Filter</em> - the requested child elements were:
        <ul>
            <li><em>GenreID</em> - value was "0" (no filter) </li>
            <li><em>CountryID</em> - value was "0" (no filter) </li>
            <li><em>City</em> - value was left blank (no filter) </li>
            <li><em>CitySearchType</em> - value was &quot;Contains&quot; </li>
            <li><em>PostalCode</em> - value was left blank (no filter) </li>
            <li><em>PostalCode</em>SearchType - value was &quot;Contains&quot; </li>
            <li><em>ArtistName</em> - value was left blank (no filter) </li>
            <li><em>ArtistName</em>SearchType - value was &quot;Contains&quot; </li>
        </ul>
    </li>
</ul>
<br />
<strong>We got back the following array in <u>RESPONSE</u>:</strong><br />
<pre><? var_dump($GetArtistList); ?>
</pre>
<br />
<strong>We assign the array to  seperate variables and <u>OUTPUT</u> these (without any design here):</strong><br />
<?
        $ArtistCount
= $GetArtistList['ArtistCount'][0];
        
$Page = $GetArtistList['Page'][0];
        
$PageSize = $GetArtistList['PageSize'][0];
        
$OrderBy = $GetArtistList['OrderBy'][0];
        
$SortOrder = $GetArtistList['SortOrder'][0];

        
$FilterGenreID = $GetArtistList['Filter'][0]['GenreID'][0];
        
$FilterCountryID = $GetArtistList['Filter'][0]['CountryID'][0];
        
$FilterCity = $GetArtistList['Filter'][0]['City'][0];
        
$FilterCitySearchType = $GetArtistList['Filter'][0]['CitySearchType'][0];
        
$FilterPostalCode = $GetArtistList['Filter'][0]['PostalCode'][0];
        
$FilterPostalCodeSearchType = $GetArtistList['Filter'][0]['PostalCodeSearchType'][0];
        
$FilterArtistName = $GetArtistList['Filter'][0]['ArtistName'][0];
        
$FilterArtistNameSearchType = $GetArtistList['Filter'][0]['ArtistNameSearchType'][0];
?>
<ul>
    <li>Artist Count: <? echo $ArtistCount; ?></li>
    <li>Page: <? echo $Page; ?></li>
    <li>Page Size: <? echo $PageSize; ?></li>
    <li>Order By: <? echo $OrderBy; ?></li>
    <li>Sort Order: <? echo $SortOrder; ?></li>
    <li>Filter Genre ID: <? echo $FilterGenreID; ?></li>
    <li>Filter Country ID: <? echo $FilterCountryID; ?></li>
    <li>Filter City: <? echo $FilterCity; ?></li>
    <li>Filter City Search Type: <? echo $FilterCitySearchType; ?></li>
    <li>Filter Postal Code: <? echo $FilterPostalCode; ?></li>
    <li>Filter Postal Code Search Type: <? echo $FilterPostalCodeSearchType; ?></li>
    <li>Filter Artist Name: <? echo $FilterArtistName; ?></li>
    <li>Filter Artist Name Search Type: <? echo $FilterArtistNameSearchType; ?></li>
</ul>
We are at page <? echo $Page; ?>, page size is set to <? echo $PageSize; ?>.<br />
Let's read out the <? echo $PageSize; ?> entries from the array:<br />
<br />
<ul>
<?    
    
for($i=0;$i<$artist_count;$i++)
    {
        
$ArtistID = $GetArtistList['ArtistList'][0]['Artist'][$i]['ArtistID'];
        
$ArtistName = $GetArtistList['ArtistList'][0]['Artist'][$i]['ArtistName'];
        
$ArtistURL = $GetArtistList['ArtistList'][0]['Artist'][$i]['ArtistURL'];
        
$Website = $GetArtistList['ArtistList'][0]['Artist'][$i]['Website'];
        
$MusicalInfluence = $GetArtistList['ArtistList'][0]['Artist'][$i]['MusicalInfluence'];
        
$SoundsLike = $GetArtistList['ArtistList'][0]['Artist'][$i]['SoundsLike'];
        
$ArtistPictureExists = $GetArtistList['ArtistList'][0]['Artist'][$i]['ArtistPictureExists'];
        
$FirstOnlineDate = $GetArtistList['ArtistList'][0]['Artist'][$i]['FirstOnlineDate'];
        
$PostalCode = $GetArtistList['ArtistList'][0]['Artist'][$i]['PostalCode'];
        
$City = $GetArtistList['ArtistList'][0]['Artist'][$i]['City'];
        
$CountryID = $GetArtistList['ArtistList'][0]['Artist'][$i]['CountryID'];
        
$CountryCode = $GetArtistList['ArtistList'][0]['Artist'][$i]['CountryCode'];
        
$CountryName = $GetArtistList['ArtistList'][0]['Artist'][$i]['CountryName'];
        
$ArtistGenreID = $GetArtistList['ArtistList'][0]['Artist'][$i]['ArtistGenreID'];
        
$ArtistGenreParentID = $GetArtistList['ArtistList'][0]['Artist'][$i]['ArtistGenreParentID'];
        
$ArtistGenreTopParentID = $GetArtistList['ArtistList'][0]['Artist'][$i]['ArtistGenreTopParentID'];
        
$ArtistGenreName = $GetArtistList['ArtistList'][0]['Artist'][$i]['ArtistGenreName'];
        
$ArtistParentGenreName = $GetArtistList['ArtistList'][0]['Artist'][$i]['ArtistParentGenreName'];
        
$ArtistTopParentGenreName = $GetArtistList['ArtistList'][0]['Artist'][$i]['ArtistTopParentGenreName'];
?>
    <p><strong>Entry No. <? echo $i+1; ?></strong></p>
    <li>Artist ID: <? echo $ArtistID; ?></li>
    <li>Artist Name: <? echo $ArtistName; ?></li>
    <li>Artist URL: <? echo $ArtistURL; ?></li>
    <li>WebSite: <? echo $Website; ?></li>
    <li>Musical Influence: <? echo $MusicalInfluence; ?></li>
    <li>Sounds Like: <? echo $SoundsLike; ?></li>
    <li>Artist Picture Exists: <? echo $ArtistPictureExists; ?></li>
    <li>First Online Date: <? echo $FirstOnlineDate; ?></li>
    <li>Postal Code: <? echo $PostalCode; ?></li>
    <li>City: <? echo $City; ?></li>
    <li>Country ID: <? echo $CountryID; ?></li>
    <li>Country Code: <? echo $CountryCode; ?></li>
    <li>Country Name: <? echo $CountryName; ?></li>
    <li>Artist Genre ID: <? echo $ArtistGenreID; ?></li>
    <li>Artist Genre Parent ID: <? echo $ArtistGenreParentID; ?></li>
    <li>Artist Genre Top Parent ID: <? echo $ArtistGenreTopParentID; ?></li>
    <li>Artist Genre Name: <? echo $ArtistGenreName; ?></li>
    <li>Artist Parent Genre Name: <? echo $ArtistParentGenreName; ?></li>
    <li>Artist Top Parent Genre Name: <? echo $ArtistTopParentGenreName; ?></li>
<?
    
}
?>
</ul>
</span>