JNDI Extended Operation problem

Hi,
I am using JNDI extended operation for accessing Directory server. The request I make is responded in the form of Extended response which holds the value in ASN.1 BER format.
Can u plz suggest me any solution , so that I will be able to decode the BER format parameters retrieved , in understandable format.

Maybe you should specify jndi name for your bean in deployment descriptor (ejb-jar.xml) of EJB jar module?
<ejb-jar> 
  <enterprise-beans>
    <ejb>
      <ejb-name>MyBean</ejb-name>
      <jndi-name>JNDINameOfMyBean</jndi-name>
    </ejb>
  </enterprise-beans>
</ejb-jar>And then lookup for JNDINameOfMyBean.

Similar Messages

  • Can I simply reinstall CS4 to resolve my operation problems?

    Can I simply reinstall Adobe CS4 (design std) on my Mac OS X to resolve my operation problems, such as "Unknown error" messges while using Ai and ID. My software has been trouble free for about a yr and half and suddenly several odd problems popped up in the last few months. If you think reinstalling will help, please give me a general direction for doing so. Thanks in advance!

    Hello,
    I heard that holding CMD+Option+r at bootup connects to Apple's servers & Lion download, hasn't been confirmed yet.

  • Match rules of Extended Operation

    I used match rules of Extended Operation to search the certificates in ldap server(ldap v3), the filter is "userCertificate:2.5.13.35:=digitalSignature" ,but the server returned the error code LDAP_UNAVAILABLE_CRITICAL_EXTENSION,why? and what other things should i do to get the right result?

    Is that a matching rule that only matches the signature field of the certificate? If so, then Sun DS (and Netscape DS) does not support that. If you want to support searching and filtering on fields of the certificate, you will have to save those fields as separate attributes of the entry. There is an LDAP extension supported by some servers, but not Sun DS. BTW, it is very difficult to implement. Even the Certificate Server does not try to implement it - it just stores the fields as separate attributes.

  • Extended Operation Plugin

    Hello All,
    I want to create an extended operation plugin for OID, Oracle Internet Directory. I have not come across any tutorial to create the plugin. Kindly direct me to any such tutorial. That would be great help.
    Thanks,
    Regards,
    Suprita

    If you wish to build a Management Plug-in for OID, you will find all your answers at http://www.oracle.com/technology/products/oem/extensions/index.html.

  • Java JNDI LDAP connectivity problem.  NoSuchAttributeException

    Hello,
    I am trying to add a user to Active Directory server through LDAP. Following is the code I am using:
    ======================================================================
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, "ldap://192.123.321.123:389");
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, "user1");
    env.put(Context.SECURITY_CREDENTIALS, "user123");
    try {
    System.out.println("68");
    Context ctx = new InitialContext(env);
    System.out.println("71");
    BasicAttribute oc = new BasicAttribute("objectclass", "top");
    oc.add("person");
    oc.add("organizationalperson");
    oc.add("User");
    BasicAttribute ouSet = new BasicAttribute("ou");
    ouSet.add("test");
    BasicAttributes attrs = new BasicAttributes(true);
    attrs.put(oc);
    attrs.put(ouSet);
    attrs.put("cn", "ndubey001");
    attrs.put("sn", "ndubey001");
    attrs.put("sAMAccountName", "ndubey001");
    attrs.put("givenName", "ndubey001");
    attrs.put("name", "ndubey001");
    ctx.bind("uid=ndubey001,ou=test,o=myserver.com", attrs);
    System.out.println("74");
    ctx.close();
    } catch (NamingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    ======================================================================
    I have tried with so many different combinations. Most of the times the parameters I am passing looks okay but I keep getting the same exception as follows:
    ======================================================================
    68
    71
    javax.naming.directory.NoSuchAttributeException: [LDAP: error code 16 - 00000057: LdapErr: DSID-0C090B38, comment: Error in attribute conversion operation, data 0, vece
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
         at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
         at com.sun.jndi.ldap.LdapCtx.c_bind(Unknown Source)
         at com.sun.jndi.ldap.LdapCtx.c_bind(Unknown Source)
         at com.sun.jndi.toolkit.ctx.ComponentContext.p_bind(Unknown Source)
         at com.sun.jndi.toolkit.ctx.PartialCompositeContext.bind(Unknown Source)
         at com.sun.jndi.toolkit.ctx.PartialCompositeContext.bind(Unknown Source)
         at javax.naming.InitialContext.bind(Unknown Source)
         at LDAPTest.main(LDAPTest.java:99)Coming out
    ======================================================================
    Can anyone tell what is the exact problem ?
    Cheers,
    Nitin                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    Too many errors to even consider correcting your code (objectClasses, UID attribute, ctx.create)....
    Refer to the following for a description & sample code:
    JNDI, Active Directory (Creating new users & demystifying userAccountControl
    http://forum.java.sun.com/thread.jspa?threadID=582103&tstart=15

  • PHP arrow operator problem

    I'm half way through writing a web interface for mpd. I needed a way to interact with it so I searched around and found this. It's a php class that interfaces with mpd.
    I downloaded it and it comes with an example php file for using it. The only problem is that when I use the example page it just prints out anything after the arrow operator. As far as I'm aware the arrow operator is for accessing class methods and variables but I've never actually done any OOP with PHP.
    Anyway here is the example file:
    <?
    * mpd-class-example.php - Example interface using mpd.class.php
    * Version 1.2, released 05/05/2004
    * Copyright (C) 2003-2004 Benjamin Carlisle ([email protected])
    * http://mpd.24oz.com/ | http://www.musicpd.org/
    * This program illustrates the basic commands and usage of the MPD class.
    * *** PLEASE NOTE *** My intention in including this file is not to provide you with an
    * out-of-the-box MPD jukebox, but instead to provide a general understanding of how I saw
    * the class as being utilized. If you'd like to see more examples, please let me know. But
    * this should provide you with a good starting point for your own program development.
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License, or
    * (at your option) any later version.
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    * GNU General Public License for more details.
    * You should have received a copy of the GNU General Public License
    * along with this program; if not, write to the Free Software
    * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    ?>
    <HTML>
    <style type="text/css"><!-- .defaultText { font-family: Arial, Helvetica, sans-serif; font-size: 9pt; font-style: normal; font-weight: normal; color: #111111} .err { color: #DD3333 } --></style>
    <BODY class="defaultText">
    <?
    include('mpd.class.php');
    $myMpd = new mpd('localhost',2100);
    if ( $myMpd->connected == FALSE ) {
    echo "Error Connecting: " . $myMpd->errStr;
    } else {
    switch ($_REQUEST[m]) {
    case "add":
    if ( is_null($myMpd->PLAdd($_REQUEST[filename])) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    case "rem":
    if ( is_null($myMpd->PLRemove($_REQUEST[id])) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    case "setvol":
    if ( is_null($myMpd->SetVolume($_REQUEST[vol])) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    case "play":
    if ( is_null($myMpd->Play()) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    case "stop":
    if ( is_null($myMpd->Stop()) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    case "pause":
    if ( is_null($myMpd->Pause()) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    default:
    break;
    ?>
    <DIV ALIGN=CENTER>[ <A HREF="<? echo $_SERVER[PHP_SELF] ?>">Refresh Page</A> ]</DIV>
    <HR>
    <B>Connected to MPD Version <? echo $myMpd->mpd_version ?> at <? echo $myMpd->host ?>:<? echo $myMpd->port ?></B><BR>
    State:
    <?
    switch ($myMpd->state) {
    case MPD_STATE_PLAYING: echo "MPD is Playing [<A HREF='".$_SERVER[PHP_SELF]."?m=pause'>Pause</A>] [<A HREF='".$_SERVER[PHP_SELF]."?m=stop'>Stop</A>]"; break;
    case MPD_STATE_PAUSED: echo "MPD is Paused [<A HREF='".$_SERVER[PHP_SELF]."?m=pause'>Unpause</A>]"; break;
    case MPD_STATE_STOPPED: echo "MPD is Stopped [<A HREF='".$_SERVER[PHP_SELF]."?m=play'>Play</A>]"; break;
    default: echo "(Unknown State!)"; break;
    ?>
    <BR>
    Volume: <? echo $myMpd->volume ?> [ <A HREF='<? echo $_SERVER[PHP_SELF] ?>?m=setvol&vol=0'>0</A> | <A HREF='<? echo $_SERVER[PHP_SELF] ?>?m=setvol&vol=25'>25</A> | <A HREF='<? echo $_SERVER[PHP_SELF] ?>?m=setvol&vol=75'>75</A> | <A HREF='<? echo $_SERVER[PHP_SELF] ?>?m=setvol&vol=100'>100</A> ]<BR>
    Uptime: <? echo secToTimeStr($myMpd->uptime) ?><BR>
    Playtime: <? echo secToTimeStr($myMpd->playtime) ?><BR>
    <? if ( $myMpd->state == MPD_STATE_PLAYING or $myMpd->state == MPD_STATE_PAUSED ) { ?>
    Currently Playing: <? echo $myMpd->playlist[$myMpd->current_track_id]['Artist']." - ".$myMpd->playlist[$myMpd->current_track_id]['Title'] ?><BR>
    Track Position: <? echo $myMpd->current_track_position."/".$myMpd->current_track_length." (".(round(($myMpd->current_track_position/$myMpd->current_track_length),2)*100)."%)" ?><BR>
    Playlist Position: <? echo ($myMpd->current_track_id+1)."/".$myMpd->playlist_count." (".(round((($myMpd->current_track_id+1)/$myMpd->playlist_count),2)*100)."%)" ?><BR>
    <? } ?>
    <HR>
    <B>Playlist - Total: <? echo $myMpd->playlist_count ?> tracks (Click to Remove)</B><BR>
    <?
    if ( is_null($myMpd->playlist) ) echo "ERROR: " .$myMpd->errStr."\n";
    else {
    foreach ($myMpd->playlist as $id => $entry) {
    echo ( $id == $myMpd->current_track_id ? "<B>" : "" ) . ($id+1) . ". <A HREF='".$_SERVER[PHP_SELF]."?m=rem&id=".$id."'>".$entry['Artist']." - ".$entry['Title']."</A>".( $id == $myMpd->current_track_id ? "</B>" : "" )."<BR>\n";
    ?>
    <HR>
    <B>Sample Search for the String 'U2' (Click to Add to Playlist)</B><BR>
    <?
    $sl = $myMpd->Search(MPD_SEARCH_ARTIST,'U2');
    if ( is_null($sl) ) echo "ERROR: " .$myMpd->errStr."\n";
    else {
    foreach ($sl as $id => $entry) {
    echo ($id+1) . ": <A HREF='".$_SERVER[PHP_SELF]."?m=add&filename=".urlencode($entry['file'])."'>".$entry['Artist']." - ".$entry['Title']."</A><BR>\n";
    if ( count($sl) == 0 ) echo "<I>No results returned from search.</I>";
    // Example of how you would use Bulk Add features of MPD
    // $myarray = array();
    // $myarray[0] = "ACDC - Thunderstruck.mp3";
    // $myarray[1] = "ACDC - Back In Black.mp3";
    // $myarray[2] = "ACDC - Hells Bells.mp3";
    // if ( is_null($myMpd->PLAddBulk($myarray)) ) echo "ERROR: ".$myMpd->errStr."\n";
    ?>
    <HR>
    <B>Artist List</B><BR>
    <?
    if ( is_null($ar = $myMpd->GetArtists()) ) echo "ERROR: " .$myMpd->errStr."\n";
    else {
    while(list($key, $value) = each($ar) ) {
    echo ($key+1) . ". " . $value . "<BR>";
    $myMpd->Disconnect();
    // Used to make number of seconds perty.
    function secToTimeStr($secs) {
    $days = ($secs%604800)/86400;
    $hours = (($secs%604800)%86400)/3600;
    $minutes = ((($secs%604800)%86400)%3600)/60;
    $seconds = (((($secs%604800)%86400)%3600)%60);
    if (round($days)) $timestring .= round($days)."d ";
    if (round($hours)) $timestring .= round($hours)."h ";
    if (round($minutes)) $timestring .= round($minutes)."m";
    if (!round($minutes)&&!round($hours)&&!round($days)) $timestring.=" ".round($seconds)."s";
    return $timestring;
    ?>
    </BODY></HTML>
    The class file:
    <?php
    * mpd.class.php - PHP Object Interface to the MPD Music Player Daemon
    * Version 1.2, Released 05/05/2004
    * Copyright (C) 2003-2004 Benjamin Carlisle ([email protected])
    * http://mpd.24oz.com/ | http://www.musicpd.org/
    * This program is free software; you can redistribute it and/or modify
    * it under the terms of the GNU General Public License as published by
    * the Free Software Foundation; either version 2 of the License, or
    * (at your option) any later version.
    * This program is distributed in the hope that it will be useful,
    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    * GNU General Public License for more details.
    * You should have received a copy of the GNU General Public License
    * along with this program; if not, write to the Free Software
    * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    // Create common command definitions for MPD to use
    define("MPD_CMD_STATUS", "status");
    define("MPD_CMD_STATISTICS", "stats");
    define("MPD_CMD_VOLUME", "volume");
    define("MPD_CMD_SETVOL", "setvol");
    define("MPD_CMD_PLAY", "play");
    define("MPD_CMD_STOP", "stop");
    define("MPD_CMD_PAUSE", "pause");
    define("MPD_CMD_NEXT", "next");
    define("MPD_CMD_PREV", "previous");
    define("MPD_CMD_PLLIST", "playlistinfo");
    define("MPD_CMD_PLADD", "add");
    define("MPD_CMD_PLREMOVE", "delete");
    define("MPD_CMD_PLCLEAR", "clear");
    define("MPD_CMD_PLSHUFFLE", "shuffle");
    define("MPD_CMD_PLLOAD", "load");
    define("MPD_CMD_PLSAVE", "save");
    define("MPD_CMD_KILL", "kill");
    define("MPD_CMD_REFRESH", "update");
    define("MPD_CMD_REPEAT", "repeat");
    define("MPD_CMD_LSDIR", "lsinfo");
    define("MPD_CMD_SEARCH", "search");
    define("MPD_CMD_START_BULK", "command_list_begin");
    define("MPD_CMD_END_BULK", "command_list_end");
    define("MPD_CMD_FIND", "find");
    define("MPD_CMD_RANDOM", "random");
    define("MPD_CMD_SEEK", "seek");
    define("MPD_CMD_PLSWAPTRACK", "swap");
    define("MPD_CMD_PLMOVETRACK", "move");
    define("MPD_CMD_PASSWORD", "password");
    define("MPD_CMD_TABLE", "list");
    // Predefined MPD Response messages
    define("MPD_RESPONSE_ERR", "ACK");
    define("MPD_RESPONSE_OK", "OK");
    // MPD State Constants
    define("MPD_STATE_PLAYING", "play");
    define("MPD_STATE_STOPPED", "stop");
    define("MPD_STATE_PAUSED", "pause");
    // MPD Searching Constants
    define("MPD_SEARCH_ARTIST", "artist");
    define("MPD_SEARCH_TITLE", "title");
    define("MPD_SEARCH_ALBUM", "album");
    // MPD Cache Tables
    define("MPD_TBL_ARTIST","artist");
    define("MPD_TBL_ALBUM","album");
    class mpd {
    // TCP/Connection variables
    var $host;
    var $port;
    var $password;
    var $mpd_sock = NULL;
    var $connected = FALSE;
    // MPD Status variables
    var $mpd_version = "(unknown)";
    var $state;
    var $current_track_position;
    var $current_track_length;
    var $current_track_id;
    var $volume;
    var $repeat;
    var $random;
    var $uptime;
    var $playtime;
    var $db_last_refreshed;
    var $num_songs_played;
    var $playlist_count;
    var $num_artists;
    var $num_albums;
    var $num_songs;
    var $playlist = array();
    // Misc Other Vars
    var $mpd_class_version = "1.2";
    var $debugging = FALSE; // Set to TRUE to turn extended debugging on.
    var $errStr = ""; // Used for maintaining information about the last error message
    var $command_queue; // The list of commands for bulk command sending
    // =================== BEGIN OBJECT METHODS ================
    /* mpd() : Constructor
    * Builds the MPD object, connects to the server, and refreshes all local object properties.
    function mpd($srv,$port,$pwd = NULL) {
    $this->host = $srv;
    $this->port = $port;
    $this->password = $pwd;
    $resp = $this->Connect();
    if ( is_null($resp) ) {
    $this->errStr = "Could not connect";
    return;
    } else {
    list ( $this->mpd_version ) = sscanf($resp, MPD_RESPONSE_OK . " MPD %s\n");
    if ( ! is_null($pwd) ) {
    if ( is_null($this->SendCommand(MPD_CMD_PASSWORD,$pwd)) ) {
    $this->connected = FALSE;
    return; // bad password or command
    if ( is_null($this->RefreshInfo()) ) { // no read access -- might as well be disconnected!
    $this->connected = FALSE;
    $this->errStr = "Password supplied does not have read access";
    return;
    } else {
    if ( is_null($this->RefreshInfo()) ) { // no read access -- might as well be disconnected!
    $this->connected = FALSE;
    $this->errStr = "Password required to access server";
    return;
    /* Connect()
    * Connects to the MPD server.
    * NOTE: This is called automatically upon object instantiation; you should not need to call this directly.
    function Connect() {
    if ( $this->debugging ) echo "mpd->Connect() / host: ".$this->host.", port: ".$this->port."\n";
    $this->mpd_sock = fsockopen($this->host,$this->port,$errNo,$errStr,10);
    if (!$this->mpd_sock) {
    $this->errStr = "Socket Error: $errStr ($errNo)";
    return NULL;
    } else {
    while(!feof($this->mpd_sock)) {
    $response = fgets($this->mpd_sock,1024);
    if (strncmp(MPD_RESPONSE_OK,$response,strlen(MPD_RESPONSE_OK)) == 0) {
    $this->connected = TRUE;
    return $response;
    break;
    if (strncmp(MPD_RESPONSE_ERR,$response,strlen(MPD_RESPONSE_ERR)) == 0) {
    $this->errStr = "Server responded with: $response";
    return NULL;
    // Generic response
    $this->errStr = "Connection not available";
    return NULL;
    /* SendCommand()
    * Sends a generic command to the MPD server. Several command constants are pre-defined for
    * use (see MPD_CMD_* constant definitions above).
    function SendCommand($cmdStr,$arg1 = "",$arg2 = "") {
    if ( $this->debugging ) echo "mpd->SendCommand() / cmd: ".$cmdStr.", args: ".$arg1." ".$arg2."\n";
    if ( ! $this->connected ) {
    echo "mpd->SendCommand() / Error: Not connected\n";
    } else {
    // Clear out the error String
    $this->errStr = "";
    $respStr = "";
    // Check the command compatibility:
    if ( ! $this->_checkCompatibility($cmdStr) ) {
    return NULL;
    if (strlen($arg1) > 0) $cmdStr .= " \"$arg1\"";
    if (strlen($arg2) > 0) $cmdStr .= " \"$arg2\"";
    fputs($this->mpd_sock,"$cmdStr\n");
    while(!feof($this->mpd_sock)) {
    $response = fgets($this->mpd_sock,1024);
    // An OK signals the end of transmission -- we'll ignore it
    if (strncmp(MPD_RESPONSE_OK,$response,strlen(MPD_RESPONSE_OK)) == 0) {
    break;
    // An ERR signals the end of transmission with an error! Let's grab the single-line message.
    if (strncmp(MPD_RESPONSE_ERR,$response,strlen(MPD_RESPONSE_ERR)) == 0) {
    list ( $junk, $errTmp ) = split(MPD_RESPONSE_ERR . " ",$response );
    $this->errStr = strtok($errTmp,"\n");
    if ( strlen($this->errStr) > 0 ) {
    return NULL;
    // Build the response string
    $respStr .= $response;
    if ( $this->debugging ) echo "mpd->SendCommand() / response: '".$respStr."'\n";
    return $respStr;
    /* QueueCommand()
    * Queues a generic command for later sending to the MPD server. The CommandQueue can hold
    * as many commands as needed, and are sent all at once, in the order they are queued, using
    * the SendCommandQueue() method. The syntax for queueing commands is identical to SendCommand().
    function QueueCommand($cmdStr,$arg1 = "",$arg2 = "") {
    if ( $this->debugging ) echo "mpd->QueueCommand() / cmd: ".$cmdStr.", args: ".$arg1." ".$arg2."\n";
    if ( ! $this->connected ) {
    echo "mpd->QueueCommand() / Error: Not connected\n";
    return NULL;
    } else {
    if ( strlen($this->command_queue) == 0 ) {
    $this->command_queue = MPD_CMD_START_BULK . "\n";
    if (strlen($arg1) > 0) $cmdStr .= " \"$arg1\"";
    if (strlen($arg2) > 0) $cmdStr .= " \"$arg2\"";
    $this->command_queue .= $cmdStr ."\n";
    if ( $this->debugging ) echo "mpd->QueueCommand() / return\n";
    return TRUE;
    /* SendCommandQueue()
    * Sends all commands in the Command Queue to the MPD server. See also QueueCommand().
    function SendCommandQueue() {
    if ( $this->debugging ) echo "mpd->SendCommandQueue()\n";
    if ( ! $this->connected ) {
    echo "mpd->SendCommandQueue() / Error: Not connected\n";
    return NULL;
    } else {
    $this->command_queue .= MPD_CMD_END_BULK . "\n";
    if ( is_null($respStr = $this->SendCommand($this->command_queue)) ) {
    return NULL;
    } else {
    $this->command_queue = NULL;
    if ( $this->debugging ) echo "mpd->SendCommandQueue() / response: '".$respStr."'\n";
    return $respStr;
    /* AdjustVolume()
    * Adjusts the mixer volume on the MPD by <modifier>, which can be a positive (volume increase),
    * or negative (volume decrease) value.
    function AdjustVolume($modifier) {
    if ( $this->debugging ) echo "mpd->AdjustVolume()\n";
    if ( ! is_numeric($modifier) ) {
    $this->errStr = "AdjustVolume() : argument 1 must be a numeric value";
    return NULL;
    $this->RefreshInfo();
    $newVol = $this->volume + $modifier;
    $ret = $this->SetVolume($newVol);
    if ( $this->debugging ) echo "mpd->AdjustVolume() / return\n";
    return $ret;
    /* SetVolume()
    * Sets the mixer volume to <newVol>, which should be between 1 - 100.
    function SetVolume($newVol) {
    if ( $this->debugging ) echo "mpd->SetVolume()\n";
    if ( ! is_numeric($newVol) ) {
    $this->errStr = "SetVolume() : argument 1 must be a numeric value";
    return NULL;
    // Forcibly prevent out of range errors
    if ( $newVol < 0 ) $newVol = 0;
    if ( $newVol > 100 ) $newVol = 100;
    // If we're not compatible with SETVOL, we'll try adjusting using VOLUME
    if ( $this->_checkCompatibility(MPD_CMD_SETVOL) ) {
    if ( ! is_null($ret = $this->SendCommand(MPD_CMD_SETVOL,$newVol))) $this->volume = $newVol;
    } else {
    $this->RefreshInfo(); // Get the latest volume
    if ( is_null($this->volume) ) {
    return NULL;
    } else {
    $modifier = ( $newVol - $this->volume );
    if ( ! is_null($ret = $this->SendCommand(MPD_CMD_VOLUME,$modifier))) $this->volume = $newVol;
    if ( $this->debugging ) echo "mpd->SetVolume() / return\n";
    return $ret;
    /* GetDir()
    * Retrieves a database directory listing of the <dir> directory and places the results into
    * a multidimensional array. If no directory is specified, the directory listing is at the
    * base of the MPD music path.
    function GetDir($dir = "") {
    if ( $this->debugging ) echo "mpd->GetDir()\n";
    $resp = $this->SendCommand(MPD_CMD_LSDIR,$dir);
    $dirlist = $this->_parseFileListResponse($resp);
    if ( $this->debugging ) echo "mpd->GetDir() / return ".print_r($dirlist)."\n";
    return $dirlist;
    /* PLAdd()
    * Adds each track listed in a single-dimensional <trackArray>, which contains filenames
    * of tracks to add, to the end of the playlist. This is used to add many, many tracks to
    * the playlist in one swoop.
    function PLAddBulk($trackArray) {
    if ( $this->debugging ) echo "mpd->PLAddBulk()\n";
    $num_files = count($trackArray);
    for ( $i = 0; $i < $num_files; $i++ ) {
    $this->QueueCommand(MPD_CMD_PLADD,$trackArray[$i]);
    $resp = $this->SendCommandQueue();
    $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->PLAddBulk() / return\n";
    return $resp;
    /* PLAdd()
    * Adds the file <file> to the end of the playlist. <file> must be a track in the MPD database.
    function PLAdd($fileName) {
    if ( $this->debugging ) echo "mpd->PLAdd()\n";
    if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLADD,$fileName))) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->PLAdd() / return\n";
    return $resp;
    /* PLMoveTrack()
    * Moves track number <origPos> to position <newPos> in the playlist. This is used to reorder
    * the songs in the playlist.
    function PLMoveTrack($origPos, $newPos) {
    if ( $this->debugging ) echo "mpd->PLMoveTrack()\n";
    if ( ! is_numeric($origPos) ) {
    $this->errStr = "PLMoveTrack(): argument 1 must be numeric";
    return NULL;
    if ( $origPos < 0 or $origPos > $this->playlist_count ) {
    $this->errStr = "PLMoveTrack(): argument 1 out of range";
    return NULL;
    if ( $newPos < 0 ) $newPos = 0;
    if ( $newPos > $this->playlist_count ) $newPos = $this->playlist_count;
    if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLMOVETRACK,$origPos,$newPos))) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->PLMoveTrack() / return\n";
    return $resp;
    /* PLShuffle()
    * Randomly reorders the songs in the playlist.
    function PLShuffle() {
    if ( $this->debugging ) echo "mpd->PLShuffle()\n";
    if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLSHUFFLE))) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->PLShuffle() / return\n";
    return $resp;
    /* PLLoad()
    * Retrieves the playlist from <file>.m3u and loads it into the current playlist.
    function PLLoad($file) {
    if ( $this->debugging ) echo "mpd->PLLoad()\n";
    if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLLOAD,$file))) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->PLLoad() / return\n";
    return $resp;
    /* PLSave()
    * Saves the playlist to <file>.m3u for later retrieval. The file is saved in the MPD playlist
    * directory.
    function PLSave($file) {
    if ( $this->debugging ) echo "mpd->PLSave()\n";
    $resp = $this->SendCommand(MPD_CMD_PLSAVE,$file);
    if ( $this->debugging ) echo "mpd->PLSave() / return\n";
    return $resp;
    /* PLClear()
    * Empties the playlist.
    function PLClear() {
    if ( $this->debugging ) echo "mpd->PLClear()\n";
    if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLCLEAR))) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->PLClear() / return\n";
    return $resp;
    /* PLRemove()
    * Removes track <id> from the playlist.
    function PLRemove($id) {
    if ( $this->debugging ) echo "mpd->PLRemove()\n";
    if ( ! is_numeric($id) ) {
    $this->errStr = "PLRemove() : argument 1 must be a numeric value";
    return NULL;
    if ( ! is_null($resp = $this->SendCommand(MPD_CMD_PLREMOVE,$id))) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->PLRemove() / return\n";
    return $resp;
    /* SetRepeat()
    * Enables 'loop' mode -- tells MPD continually loop the playlist. The <repVal> parameter
    * is either 1 (on) or 0 (off).
    function SetRepeat($repVal) {
    if ( $this->debugging ) echo "mpd->SetRepeat()\n";
    $rpt = $this->SendCommand(MPD_CMD_REPEAT,$repVal);
    $this->repeat = $repVal;
    if ( $this->debugging ) echo "mpd->SetRepeat() / return\n";
    return $rpt;
    /* SetRandom()
    * Enables 'randomize' mode -- tells MPD to play songs in the playlist in random order. The
    * <rndVal> parameter is either 1 (on) or 0 (off).
    function SetRandom($rndVal) {
    if ( $this->debugging ) echo "mpd->SetRandom()\n";
    $resp = $this->SendCommand(MPD_CMD_RANDOM,$rndVal);
    $this->random = $rndVal;
    if ( $this->debugging ) echo "mpd->SetRandom() / return\n";
    return $resp;
    /* Shutdown()
    * Shuts down the MPD server (aka sends the KILL command). This closes the current connection,
    * and prevents future communication with the server.
    function Shutdown() {
    if ( $this->debugging ) echo "mpd->Shutdown()\n";
    $resp = $this->SendCommand(MPD_CMD_SHUTDOWN);
    $this->connected = FALSE;
    unset($this->mpd_version);
    unset($this->errStr);
    unset($this->mpd_sock);
    if ( $this->debugging ) echo "mpd->Shutdown() / return\n";
    return $resp;
    /* DBRefresh()
    * Tells MPD to rescan the music directory for new tracks, and to refresh the Database. Tracks
    * cannot be played unless they are in the MPD database.
    function DBRefresh() {
    if ( $this->debugging ) echo "mpd->DBRefresh()\n";
    $resp = $this->SendCommand(MPD_CMD_REFRESH);
    // Update local variables
    $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->DBRefresh() / return\n";
    return $resp;
    /* Play()
    * Begins playing the songs in the MPD playlist.
    function Play() {
    if ( $this->debugging ) echo "mpd->Play()\n";
    if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_PLAY) )) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->Play() / return\n";
    return $rpt;
    /* Stop()
    * Stops playing the MPD.
    function Stop() {
    if ( $this->debugging ) echo "mpd->Stop()\n";
    if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_STOP) )) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->Stop() / return\n";
    return $rpt;
    /* Pause()
    * Toggles pausing on the MPD. Calling it once will pause the player, calling it again
    * will unpause.
    function Pause() {
    if ( $this->debugging ) echo "mpd->Pause()\n";
    if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_PAUSE) )) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->Pause() / return\n";
    return $rpt;
    /* SeekTo()
    * Skips directly to the <idx> song in the MPD playlist.
    function SkipTo($idx) {
    if ( $this->debugging ) echo "mpd->SkipTo()\n";
    if ( ! is_numeric($idx) ) {
    $this->errStr = "SkipTo() : argument 1 must be a numeric value";
    return NULL;
    if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_PLAY,$idx))) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->SkipTo() / return\n";
    return $idx;
    /* SeekTo()
    * Skips directly to a given position within a track in the MPD playlist. The <pos> argument,
    * given in seconds, is the track position to locate. The <track> argument, if supplied is
    * the track number in the playlist. If <track> is not specified, the current track is assumed.
    function SeekTo($pos, $track = -1) {
    if ( $this->debugging ) echo "mpd->SeekTo()\n";
    if ( ! is_numeric($pos) ) {
    $this->errStr = "SeekTo() : argument 1 must be a numeric value";
    return NULL;
    if ( ! is_numeric($track) ) {
    $this->errStr = "SeekTo() : argument 2 must be a numeric value";
    return NULL;
    if ( $track == -1 ) {
    $track = $this->current_track_id;
    if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_SEEK,$track,$pos))) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->SeekTo() / return\n";
    return $pos;
    /* Next()
    * Skips to the next song in the MPD playlist. If not playing, returns an error.
    function Next() {
    if ( $this->debugging ) echo "mpd->Next()\n";
    if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_NEXT))) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->Next() / return\n";
    return $rpt;
    /* Previous()
    * Skips to the previous song in the MPD playlist. If not playing, returns an error.
    function Previous() {
    if ( $this->debugging ) echo "mpd->Previous()\n";
    if ( ! is_null($rpt = $this->SendCommand(MPD_CMD_PREV))) $this->RefreshInfo();
    if ( $this->debugging ) echo "mpd->Previous() / return\n";
    return $rpt;
    /* Search()
    * Searches the MPD database. The search <type> should be one of the following:
    * MPD_SEARCH_ARTIST, MPD_SEARCH_TITLE, MPD_SEARCH_ALBUM
    * The search <string> is a case-insensitive locator string. Anything that contains
    * <string> will be returned in the results.
    function Search($type,$string) {
    if ( $this->debugging ) echo "mpd->Search()\n";
    if ( $type != MPD_SEARCH_ARTIST and
    $type != MPD_SEARCH_ALBUM and
    $type != MPD_SEARCH_TITLE ) {
    $this->errStr = "mpd->Search(): invalid search type";
    return NULL;
    } else {
    if ( is_null($resp = $this->SendCommand(MPD_CMD_SEARCH,$type,$string))) return NULL;
    $searchlist = $this->_parseFileListResponse($resp);
    if ( $this->debugging ) echo "mpd->Search() / return ".print_r($searchlist)."\n";
    return $searchlist;
    /* Find()
    * Find() looks for exact matches in the MPD database. The find <type> should be one of
    * the following:
    * MPD_SEARCH_ARTIST, MPD_SEARCH_TITLE, MPD_SEARCH_ALBUM
    * The find <string> is a case-insensitive locator string. Anything that exactly matches
    * <string> will be returned in the results.
    function Find($type,$string) {
    if ( $this->debugging ) echo "mpd->Find()\n";
    if ( $type != MPD_SEARCH_ARTIST and
    $type != MPD_SEARCH_ALBUM and
    $type != MPD_SEARCH_TITLE ) {
    $this->errStr = "mpd->Find(): invalid find type";
    return NULL;
    } else {
    if ( is_null($resp = $this->SendCommand(MPD_CMD_FIND,$type,$string))) return NULL;
    $searchlist = $this->_parseFileListResponse($resp);
    if ( $this->debugging ) echo "mpd->Find() / return ".print_r($searchlist)."\n";
    return $searchlist;
    /* Disconnect()
    * Closes the connection to the MPD server.
    function Disconnect() {
    if ( $this->debugging ) echo "mpd->Disconnect()\n";
    fclose($this->mpd_sock);
    $this->connected = FALSE;
    unset($this->mpd_version);
    unset($this->errStr);
    unset($this->mpd_sock);
    /* GetArtists()
    * Returns the list of artists in the database in an associative array.
    function GetArtists() {
    if ( $this->debugging ) echo "mpd->GetArtists()\n";
    if ( is_null($resp = $this->SendCommand(MPD_CMD_TABLE, MPD_TBL_ARTIST))) return NULL;
    $arArray = array();
    $arLine = strtok($resp,"\n");
    $arName = "";
    $arCounter = -1;
    while ( $arLine ) {
    list ( $element, $value ) = split(": ",$arLine);
    if ( $element == "Artist" ) {
    $arCounter++;
    $arName = $value;
    $arArray[$arCounter] = $arName;
    $arLine = strtok("\n");
    if ( $this->debugging ) echo "mpd->GetArtists()\n";
    return $arArray;
    /* GetAlbums()
    * Returns the list of albums in the database in an associative array. Optional parameter
    * is an artist Name which will list all albums by a particular artist.
    function GetAlbums( $ar = NULL) {
    if ( $this->debugging ) echo "mpd->GetAlbums()\n";
    if ( is_null($resp = $this->SendCommand(MPD_CMD_TABLE, MPD_TBL_ALBUM, $ar ))) return NULL;
    $alArray = array();
    $alLine = strtok($resp,"\n");
    $alName = "";
    $alCounter = -1;
    while ( $alLine ) {
    list ( $element, $value ) = split(": ",$alLine);
    if ( $element == "Album" ) {
    $alCounter++;
    $alName = $value;
    $alArray[$alCounter] = $alName;
    $alLine = strtok("\n");
    if ( $this->debugging ) echo "mpd->GetAlbums()\n";
    return $alArray;
    //***************************** INTERNAL FUNCTIONS ******************************//
    /* _computeVersionValue()
    * Computes a compatibility value from a version string
    function _computeVersionValue($verStr) {
    list ($ver_maj, $ver_min, $ver_rel ) = split("\.",$verStr);
    return ( 100 * $ver_maj ) + ( 10 * $ver_min ) + ( $ver_rel );
    /* _checkCompatibility()
    * Check MPD command compatibility against our internal table. If there is no version
    * listed in the table, allow it by default.
    function _checkCompatibility($cmd) {
    // Check minimum compatibility
    $req_ver_low = $this->COMPATIBILITY_MIN_TBL[$cmd];
    $req_ver_hi = $this->COMPATIBILITY_MAX_TBL[$cmd];
    $mpd_ver = $this->_computeVersionValue($this->mpd_version);
    if ( $req_ver_low ) {
    $req_ver = $this->_computeVersionValue($req_ver_low);
    if ( $mpd_ver < $req_ver ) {
    $this->errStr = "Command '$cmd' is not compatible with this version of MPD, version ".$req_ver_low." required";
    return FALSE;
    // Check maxmum compatibility -- this will check for deprecations
    if ( $req_ver_hi ) {
    $req_ver = $this->_computeVersionValue($req_ver_hi);
    if ( $mpd_ver > $req_ver ) {
    $this->errStr = "Command '$cmd' has been deprecated in this version of MPD.";
    return FALSE;
    return TRUE;
    /* _parseFileListResponse()
    * Builds a multidimensional array with MPD response lists.
    * NOTE: This function is used internally within the class. It should not be used.
    function _parseFileListResponse($resp) {
    if ( is_null($resp) ) {
    return NULL;
    } else {
    $plistArray = array();
    $plistLine = strtok($resp,"\n");
    $plistFile = "";
    $plCounter = -1;
    while ( $plistLine ) {
    list ( $element, $value ) = split(": ",$plistLine);
    if ( $element == "file" ) {
    $plCounter++;
    $plistFile = $value;
    $plistArray[$plCounter]["file"] = $plistFile;
    } else {
    $plistArray[$plCounter][$element] = $value;
    $plistLine = strtok("\n");
    return $plistArray;
    /* RefreshInfo()
    * Updates all class properties with the values from the MPD server.
    * NOTE: This function is automatically called upon Connect() as of v1.1.
    function RefreshInfo() {
    // Get the Server Statistics
    $statStr = $this->SendCommand(MPD_CMD_STATISTICS);
    if ( !$statStr ) {
    return NULL;
    } else {
    $stats = array();
    $statLine = strtok($statStr,"\n");
    while ( $statLine ) {
    list ( $element, $value ) = split(": ",$statLine);
    $stats[$element] = $value;
    $statLine = strtok("\n");
    // Get the Server Status
    $statusStr = $this->SendCommand(MPD_CMD_STATUS);
    if ( ! $statusStr ) {
    return NULL;
    } else {
    $status = array();
    $statusLine = strtok($statusStr,"\n");
    while ( $statusLine ) {
    list ( $element, $value ) = split(": ",$statusLine);
    $status[$element] = $value;
    $statusLine = strtok("\n");
    // Get the Playlist
    $plStr = $this->SendCommand(MPD_CMD_PLLIST);
    $this->playlist = $this->_parseFileListResponse($plStr);
    $this->playlist_count = count($this->playlist);
    // Set Misc Other Variables
    $this->state = $status['state'];
    if ( ($this->state == MPD_STATE_PLAYING) || ($this->state == MPD_STATE_PAUSED) ) {
    $this->current_track_id = $status['song'];
    list ($this->current_track_position, $this->current_track_length ) = split(":",$status['time']);
    } else {
    $this->current_track_id = -1;
    $this->current_track_position = -1;
    $this->current_track_length = -1;
    $this->repeat = $status['repeat'];
    $this->random = $status['random'];
    $this->db_last_refreshed = $stats['db_update'];
    $this->volume = $status['volume'];
    $this->uptime = $stats['uptime'];
    $this->playtime = $stats['playtime'];
    $this->num_songs_played = $stats['songs_played'];
    $this->num_artists = $stats['num_artists'];
    $this->num_songs = $stats['num_songs'];
    $this->num_albums = $stats['num_albums'];
    return TRUE;
    /* ------------------ DEPRECATED METHODS -------------------*/
    /* GetStatistics()
    * Retrieves the 'statistics' variables from the server and tosses them into an array.
    * NOTE: This function really should not be used. Instead, use $this->[variable]. The function
    * will most likely be deprecated in future releases.
    function GetStatistics() {
    if ( $this->debugging ) echo "mpd->GetStatistics()\n";
    $stats = $this->SendCommand(MPD_CMD_STATISTICS);
    if ( !$stats ) {
    return NULL;
    } else {
    $statsArray = array();
    $statsLine = strtok($stats,"\n");
    while ( $statsLine ) {
    list ( $element, $value ) = split(": ",$statsLine);
    $statsArray[$element] = $value;
    $statsLine = strtok("\n");
    if ( $this->debugging ) echo "mpd->GetStatistics() / return: " . print_r($statsArray) ."\n";
    return $statsArray;
    /* GetStatus()
    * Retrieves the 'status' variables from the server and tosses them into an array.
    * NOTE: This function really should not be used. Instead, use $this->[variable]. The function
    * will most likely be deprecated in future releases.
    function GetStatus() {
    if ( $this->debugging ) echo "mpd->GetStatus()\n";
    $status = $this->SendCommand(MPD_CMD_STATUS);
    if ( ! $status ) {
    return NULL;
    } else {
    $statusArray = array();
    $statusLine = strtok($status,"\n");
    while ( $statusLine ) {
    list ( $element, $value ) = split(": ",$statusLine);
    $statusArray[$element] = $value;
    $statusLine = strtok("\n");
    if ( $this->debugging ) echo "mpd->GetStatus() / return: " . print_r($statusArray) ."\n";
    return $statusArray;
    /* GetVolume()
    * Retrieves the mixer volume from the server.
    * NOTE: This function really should not be used. Instead, use $this->volume. The function
    * will most likely be deprecated in future releases.
    function GetVolume() {
    if ( $this->debugging ) echo "mpd->GetVolume()\n";
    $volLine = $this->SendCommand(MPD_CMD_STATUS);
    if ( ! $volLine ) {
    return NULL;
    } else {
    list ($vol) = sscanf($volLine,"volume: %d");
    if ( $this->debugging ) echo "mpd->GetVolume() / return: $vol\n";
    return $vol;
    /* GetPlaylist()
    * Retrieves the playlist from the server and tosses it into a multidimensional array.
    * NOTE: This function really should not be used. Instead, use $this->playlist. The function
    * will most likely be deprecated in future releases.
    function GetPlaylist() {
    if ( $this->debugging ) echo "mpd->GetPlaylist()\n";
    $resp = $this->SendCommand(MPD_CMD_PLLIST);
    $playlist = $this->_parseFileListResponse($resp);
    if ( $this->debugging ) echo "mpd->GetPlaylist() / return ".print_r($playlist)."\n";
    return $playlist;
    /* ----------------- Command compatibility tables --------------------- */
    var $COMPATIBILITY_MIN_TBL = array(
    MPD_CMD_SEEK => "0.9.1" ,
    MPD_CMD_PLMOVE => "0.9.1" ,
    MPD_CMD_RANDOM => "0.9.1" ,
    MPD_CMD_PLSWAPTRACK => "0.9.1" ,
    MPD_CMD_PLMOVETRACK => "0.9.1" ,
    MPD_CMD_PASSWORD => "0.10.0" ,
    MPD_CMD_SETVOL => "0.10.0"
    var $COMPATIBILITY_MAX_TBL = array(
    MPD_CMD_VOLUME => "0.10.0"
    } // ---------------------------- end of class ------------------------------
    ?>
    and the HTML output:
    <HTML>
    <style type="text/css"><!-- .defaultText { font-family: Arial, Helvetica, sans-serif; font-size: 9pt; font-style: normal; font-weight: normal; color: #111111} .err { color: #DD3333 } --></style>
    <BODY class="defaultText">
    connected == FALSE ) {
    echo "Error Connecting: " . $myMpd->errStr;
    } else {
    switch ($_REQUEST[m]) {
    case "add":
    if ( is_null($myMpd->PLAdd($_REQUEST[filename])) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    case "rem":
    if ( is_null($myMpd->PLRemove($_REQUEST[id])) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    case "setvol":
    if ( is_null($myMpd->SetVolume($_REQUEST[vol])) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    case "play":
    if ( is_null($myMpd->Play()) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    case "stop":
    if ( is_null($myMpd->Stop()) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    case "pause":
    if ( is_null($myMpd->Pause()) ) echo "<SPAN CLASS=err>ERROR: " .$myMpd->errStr."</SPAN>";
    break;
    default:
    break;
    ?>
    <DIV ALIGN=CENTER>[ <A HREF="<? echo $_SERVER[PHP_SELF] ?>">Refresh Page</A> ]</DIV>
    <HR>
    <B>Connected to MPD Version mpd_version ?> at host ?>:port ?></B><BR>
    State:
    state) {
    case MPD_STATE_PLAYING: echo "MPD is Playing [<A HREF='".$_SERVER[PHP_SELF]."?m=pause'>Pause</A>] [<A HREF='".$_SERVER[PHP_SELF]."?m=stop'>Stop</A>]"; break;
    case MPD_STATE_PAUSED: echo "MPD is Paused [<A HREF='".$_SERVER[PHP_SELF]."?m=pause'>Unpause</A>]"; break;
    case MPD_STATE_STOPPED: echo "MPD is Stopped [<A HREF='".$_SERVER[PHP_SELF]."?m=play'>Play</A>]"; break;
    default: echo "(Unknown State!)"; break;
    ?>
    <BR>
    Volume: volume ?> [ <A HREF='<? echo $_SERVER[PHP_SELF] ?>?m=setvol&vol=0'>0</A> | <A HREF='<? echo $_SERVER[PHP_SELF] ?>?m=setvol&vol=25'>25</A> | <A HREF='<? echo $_SERVER[PHP_SELF] ?>?m=setvol&vol=75'>75</A> | <A HREF='<? echo $_SERVER[PHP_SELF] ?>?m=setvol&vol=100'>100</A> ]<BR>
    Uptime: uptime) ?><BR>
    Playtime: playtime) ?><BR>
    state == MPD_STATE_PLAYING or $myMpd->state == MPD_STATE_PAUSED ) { ?>
    Currently Playing: playlist[$myMpd->current_track_id]['Artist']." - ".$myMpd->playlist[$myMpd->current_track_id]['Title'] ?><BR>
    Track Position: current_track_position."/".$myMpd->current_track_length." (".(round(($myMpd->current_track_position/$myMpd->current_track_length),2)*100)."%)" ?><BR>
    Playlist Position: current_track_id+1)."/".$myMpd->playlist_count." (".(round((($myMpd->current_track_id+1)/$myMpd->playlist_count),2)*100)."%)" ?><BR>
    <HR>
    <B>Playlist - Total: playlist_count ?> tracks (Click to Remove)</B><BR>
    playlist) ) echo "ERROR: " .$myMpd->errStr."\n";
    else {
    foreach ($myMpd->playlist as $id => $entry) {
    echo ( $id == $myMpd->current_track_id ? "<B>" : "" ) . ($id+1) . ". <A HREF='".$_SERVER[PHP_SELF]."?m=rem&id=".$id."'>".$entry['Artist']." - ".$entry['Title']."</A>".( $id == $myMpd->current_track_id ? "</B>" : "" )."<BR>\n";
    ?>
    <HR>
    <B>Sample Search for the String 'U2' (Click to Add to Playlist)</B><BR>
    Search(MPD_SEARCH_ARTIST,'U2');
    if ( is_null($sl) ) echo "ERROR: " .$myMpd->errStr."\n";
    else {
    foreach ($sl as $id => $entry) {
    echo ($id+1) . ": <A HREF='".$_SERVER[PHP_SELF]."?m=add&filename=".urlencode($entry['file'])."'>".$entry['Artist']." - ".$entry['Title']."</A><BR>\n";
    if ( count($sl) == 0 ) echo "<I>No results returned from search.</I>";
    // Example of how you would use Bulk Add features of MPD
    // $myarray = array();
    // $myarray[0] = "ACDC - Thunderstruck.mp3";
    // $myarray[1] = "ACDC - Back In Black.mp3";
    // $myarray[2] = "ACDC - Hells Bells.mp3";
    // if ( is_null($myMpd->PLAddBulk($myarray)) ) echo "ERROR: ".$myMpd->errStr."\n";
    ?>
    <HR>
    <B>Artist List</B><BR>
    GetArtists()) ) echo "ERROR: " .$myMpd->errStr."\n";
    else {
    while(list($key, $value) = each($ar) ) {
    echo ($key+1) . ". " . $value . "<BR>";
    $myMpd->Disconnect();
    // Used to make number of seconds perty.
    function secToTimeStr($secs) {
    $days = ($secs%604800)/86400;
    $hours = (($secs%604800)%86400)/3600;
    $minutes = ((($secs%604800)%86400)%3600)/60;
    $seconds = (((($secs%604800)%86400)%3600)%60);
    if (round($days)) $timestring .= round($days)."d ";
    if (round($hours)) $timestring .= round($hours)."h ";
    if (round($minutes)) $timestring .= round($minutes)."m";
    if (!round($minutes)&&!round($hours)&&!round($days)) $timestring.=" ".round($seconds)."s";
    return $timestring;
    ?>
    </BODY></HTML>
    As you can see it doesn't seem to understand the pointer operator. Do I have to enable anything in the PHP config files or something?

    It's set up correctly. Also, it does parse PHP, just not after the arrow.
    Here is my php.ini:
    ; With mbstring support this will automatically be converted into the encoding
    ; given by corresponding encode setting. When empty mbstring.internal_encoding
    ; is used. For the decode settings you can distinguish between motorola and
    ; intel byte order. A decode setting cannot be empty.
    ; http://php.net/exif.encode-unicode
    ;exif.encode_unicode = ISO-8859-15
    ; http://php.net/exif.decode-unicode-motorola
    ;exif.decode_unicode_motorola = UCS-2BE
    ; http://php.net/exif.decode-unicode-intel
    ;exif.decode_unicode_intel = UCS-2LE
    ; http://php.net/exif.encode-jis
    ;exif.encode_jis =
    ; http://php.net/exif.decode-jis-motorola
    ;exif.decode_jis_motorola = JIS
    ; http://php.net/exif.decode-jis-intel
    ;exif.decode_jis_intel = JIS
    [Tidy]
    ; The path to a default tidy configuration file to use when using tidy
    ; http://php.net/tidy.default-config
    ;tidy.default_config = /usr/local/lib/php/default.tcfg
    ; Should tidy clean and repair output automatically?
    ; WARNING: Do not use this option if you are generating non-html content
    ; such as dynamic images
    ; http://php.net/tidy.clean-output
    tidy.clean_output = Off
    [soap]
    ; Enables or disables WSDL caching feature.
    ; http://php.net/soap.wsdl-cache-enabled
    soap.wsdl_cache_enabled=1
    ; Sets the directory name where SOAP extension will put cache files.
    ; http://php.net/soap.wsdl-cache-dir
    soap.wsdl_cache_dir="/tmp"
    ; (time to live) Sets the number of second while cached file will be used
    ; instead of original one.
    ; http://php.net/soap.wsdl-cache-ttl
    soap.wsdl_cache_ttl=86400
    ; Sets the size of the cache limit. (Max. number of WSDL files to cache)
    soap.wsdl_cache_limit = 5
    [sysvshm]
    ; A default size of the shared memory segment
    ;sysvshm.init_mem = 10000
    [ldap]
    ; Sets the maximum number of open links or -1 for unlimited.
    ldap.max_links = -1
    [mcrypt]
    ; For more information about mcrypt settings see http://php.net/mcrypt-module-open
    ; Directory where to load mcrypt algorithms
    ; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
    ;mcrypt.algorithms_dir=
    ; Directory where to load mcrypt modes
    ; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
    ;mcrypt.modes_dir=
    [dba]
    ;dba.default_handler=
    ; Local Variables:
    ; tab-width: 4
    ; End:
    Last edited by BaconPie (2010-11-04 20:11:33)

  • Coherence 3.4.2 JMX: invoking operation problem

    Hi,
    we have run into two issues invoking JMX ModelMBean operations via JMX in Coherence 3.4.2
    1. if a JMX operation has got any parameters /like doFoo(String a)/
    it can not be invoked at all
    this issue can be worked around by overriding RequiredJMXBean.invoke()
    2. if any of a JMX operation's parameters is of a primitive type /doFoo(int i)/
    a different error message is generated
    this issue can not be worked around by overriding RequiredJMXBean.invoke()
    because RequiredJMXBean.invoke() doesn't get invoked in this case
    ---here's sample code, a full project, 4 files total ---
    /* please put this into src/main/java/foo/c34/Main.java */
    package foo.c34;
    import javax.management.MBeanParameterInfo;
    import javax.management.modelmbean.ModelMBeanAttributeInfo;
    import javax.management.modelmbean.ModelMBeanConstructorInfo;
    import javax.management.modelmbean.ModelMBeanInfo;
    import javax.management.modelmbean.ModelMBeanInfoSupport;
    import javax.management.modelmbean.ModelMBeanNotificationInfo;
    import javax.management.modelmbean.ModelMBeanOperationInfo;
    import javax.management.modelmbean.RequiredModelMBean;
    import com.tangosol.net.CacheFactory;
    import com.tangosol.net.management.Registry;
    * This sample program demonstrates Coherence 3.4.2 JMX difficulties with invoking methods
    * Please invoke this program with
    * -Dcom.sun.management.jmxremote
    * otherwise bean "Coherence" won't be exposed in JMX console
    * Not sure why this is necessary because this would imply this is no longer required
    * http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
    * ===
    * To see the problem please try invoking method "operation1" and "operation2"
    * via JMX console.
    * Different error messages will be shown for each method
    * To work around "operation1" problem please comment out this line
    * final RequiredModelMBean rmb = new RequiredModelMBean();
    * land uncomment the alternative one
    * final RequiredModelMBean rmb = new WorkaroundRequiredModelMBean();
    * You shall be able to invoke "operation1" then.
    * Please note that you still won't be able to invoke "operation2"
    public class Main {
       public static void main(final String[] args) throws Exception {
          configureProperties();
          Registry registry = CacheFactory.ensureCluster().getManagement();
          final RequiredModelMBean rmb = new RequiredModelMBean();
          //final RequiredModelMBean rmb = new WorkaroundRequiredModelMBean();
          final ModelMBeanInfo mbi = createModelMBeanInfo();
          rmb.setModelMBeanInfo(mbi);
          final Object managed = new Managed();
          rmb.setManagedResource(managed, "ObjectReference");
          final String name = registry.ensureGlobalName("type=A");
          registry.register(name, rmb);
          for (;;) {
             Thread.sleep(1000);
       private static ModelMBeanInfo createModelMBeanInfo() {
          final MBeanParameterInfo p1 = new MBeanParameterInfo("a", "java.lang.Integer", "a desc");
          final MBeanParameterInfo p2 = new MBeanParameterInfo("a", "int", "a desc");
          final ModelMBeanOperationInfo op1 = new ModelMBeanOperationInfo("operation1", "operation 1",
                new MBeanParameterInfo[]{p1}, "void", ModelMBeanOperationInfo.UNKNOWN);
          final ModelMBeanOperationInfo op2 = new ModelMBeanOperationInfo("operation2", "operation 2",
                new MBeanParameterInfo[]{p2}, "void", ModelMBeanOperationInfo.UNKNOWN);
          return new ModelMBeanInfoSupport("foo", "desc", new ModelMBeanAttributeInfo[0],
                new ModelMBeanConstructorInfo[0], new ModelMBeanOperationInfo[]{op1, op2},
                      new ModelMBeanNotificationInfo[0]);
       public static class Managed {
          public void operation1(Integer p1) {
             System.out.println("operation1 invoked p1=" + p1);
          public void operation2(int p2) {
             System.out.println("operation2 invoked p2=" + p2);
       private static void configureProperties() {
          System.setProperty("tangosol.coherence.cacheconfig", "a-cache-config.xml");
          System.setProperty("tangosol.coherence.ttl", "0");
          System.setProperty("tangosol.coherence.log", "jdk");
          System.setProperty("tangosol.coherence.log.level", "9");
          System.setProperty("tangosol.coherence.clusterport", "5878");
          System.setProperty("com.sun.management.jmxremote", "");
          System.setProperty("tangosol.coherence.management", "all");
          System.setProperty("tangosol.coherence.management.remote", "true");
    /* please put this into src/main/java/foo/c34/WorkaroundRequiredModelMBean.java */
    package foo.c34;
    import javax.management.MBeanException;
    import javax.management.ReflectionException;
    import javax.management.RuntimeOperationsException;
    import javax.management.modelmbean.RequiredModelMBean;
    public class WorkaroundRequiredModelMBean extends RequiredModelMBean {
       public WorkaroundRequiredModelMBean() throws MBeanException, RuntimeOperationsException {
       public Object invoke(final String opName, final Object[] params,
             final String[] signature) throws MBeanException, ReflectionException {
          final String[] fakeSignature = fakeSignature(opName);
          return super.invoke(opName, params, fakeSignature);
       protected String[] fakeSignature(final String methodName) {
          if (methodName.equals("operation1")) {
             return new String[]{"java.lang.Integer"};
          if (methodName.equals("operation2")) {
             return new String[]{"int"};
          return new String[0];
    <!DOCTYPE cache-config SYSTEM "cache-config.dtd">
    <!-- please put this into src/main/resources/a-cache-config.xml -->
    <cache-config>  
       <caching-scheme-mapping>
          <cache-mapping>
             <cache-name>*</cache-name>
             <scheme-name>AAA</scheme-name>
          </cache-mapping>
       </caching-scheme-mapping>
       <caching-schemes>
          <local-scheme>
             <scheme-name>AAALocal</scheme-name>
             <autostart>true</autostart>
             <high-units>0</high-units>
          </local-scheme>
          <distributed-scheme>
             <scheme-name>AAA</scheme-name>
             <service-name>AAACache</service-name>
             <backing-map-scheme>
                <local-scheme>
                   <scheme-ref>AAALocal</scheme-ref>
                </local-scheme>
             </backing-map-scheme>
             <autostart>true</autostart>
          </distributed-scheme>
       </caching-schemes>
    </cache-config>
    <!-- please put this into pom.xml at project root level -->
    <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
       <modelVersion>4.0.0</modelVersion>
       <groupId>foo-group</groupId>
       <artifactId>c34-jmx-demo</artifactId>
       <name>Coherence 34 JMX Demo</name>
       <version>0.0.1-SNAPSHOT</version>
       <description>Demonstrate Coherece 3.4 JMX Difficulties</description>
       <dependencies>
          <dependency>
             <groupId>com.oracle</groupId>
             <artifactId>coherence</artifactId>
             <version>3.4.2</version>
          </dependency>
       </dependencies>
    </project>

    Hi Dave,
    I wanted to let you know that we do not have an answer yet but we are looking into it. Thanks!
    Out of curiosity what type of impact is this having with your application?We've managed to temporarily work around both of the issues.
    Of course we shall be very glad to remove the work-arounds when it becomes possible.

  • Extended notifications problem

    Hi experts,
    I am trying to configure extended notifications for around 7 to 8 different taks
    pertaining to different workflows.
    I could successfully do it for 1 task.
    Then after successful testing I did add more filters to the same configuration
    under same subscription and delivery.
    I even created new schedules for the new filters. But unfortunately it is not working.
    I could debug the standard program SWN_SELSEN and found that the particular WAPI call to
    select the delta Work Items from SWWWIHEAD and SWWWIHIST is failing because of some
    timestamp mismatch.
    Can you please provide me some help regarding this ?
    Thanks,
    Deb

    Hi Purvesh,
    You can find the step by step procdure in the following blog.
    How to get Work items @ your Outlook Inbox
    You can find all the definitions and theories in the SAP Help link provided in the same blog.
    I initially followed the above and could successfully do it for 1 task.
    However, I was stuck in achieving the same for multiple task belonging to different workflows.
    Here is how I did it:
    1)  Do the configuration in SWNCONFIG as per the blog and SAP Help
         A)  Create your own delivery schdule
         B)  Create your own subscription using the above delivery schedule
         C)  Create your own filters
         D)  Create your own selection schedule
    2) Then run the report SWN_SELSEN to do the actual selection and delivery based on the schedules    you created.
    The key is creating the filters. Follow the SAP Help link closely and try it. If you face any problems
    the please let me know.
    Please award appropriate points.
    Thanks & Regards
    Deb
    Edited by: debabrata mohanty on Dec 10, 2008 11:26 AM

  • Photoshop CS6 Extended 3D Problem

    I have reloaded Photoshop 3D Extended 6 times having removed every trace of ADOBE out of my registry, in order to try and get the 3D section to load - to no avail. I have tried everything I can but nothing seems to work ( I am a beginner) for me. Details of my machine are as follows:-
    Adobe Photoshop Version: 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00) x64
    Operating System: Windows 7 64-bit
    Version: 6.1 Service Pack 1
    System architecture: Intel CPU Family:6, Model:10, Stepping:7 with MMX, SSE Integer, SSE FP, SSE2, SSE3, SSE4.1, SSE4.2
    Physical processor count: 4
    Processor speed: 3291 MHz
    Built-in memory: 8173 MB
    Free memory: 6403 MB
    Memory available to Photoshop: 7223 MB
    Memory used by Photoshop: 60 %
    Image tile size: 128K
    Image cache levels: 4
    OpenGL Drawing: Enabled.
    OpenGL Drawing Mode: Advanced
    OpenGL Allow Normal Mode: True.
    OpenGL Allow Advanced Mode: True.
    OpenGL Allow Old GPUs: Not Detected.
    Video Card Vendor: ATI Technologies Inc.
    Video Card Renderer: AMD Radeon HD 6800 Series
    Display: 1
    Display Bounds:=  top: 0, left: 0, bottom: 1024, right: 1280
    Video Card Number: 1
    Video Card: AMD Radeon HD 6800 Series (XFX HD6850 RADEON 1GB DDR5 PCI-E 1GB DDR2 667 MEMORY)
    OpenCL Unavailable
    Driver Version: 8.850.0.0
    Driver Date: 20110419000000.000000-000
    Video Card Driver: aticfx64.dll,aticfx64.dll,aticfx64.dll,aticfx32,aticfx32,aticfx32,atiumd64.dll,atidxx64.d ll,atidxx64.dll,atiumdag,atidxx32,atidxx32,atiumdva,atiumd6a.cap,atitmm64.dll
    Video Mode: 1280 x 1024 x 4294967296 colors
    Video Card Caption: AMD Radeon HD 6800 Series
    Video Card Memory: 1024 MB
    Video Rect Texture Size: 16384
    Serial number: 92628701192123445467
    Application folder: C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\
    Temporary file path: C:\Users\Jones\AppData\Local\Temp\
    Photoshop scratch has async I/O enabled
    Scratch volume(s):
      Startup, 931.4G, 819.3G free
    Required Plug-ins folder: C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\Required\
    Primary Plug-ins folder: C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\Plug-ins\
    Additional Plug-ins folder: not set
    Installed components:
       A3DLIBS.dll   A3DLIB Dynamic Link Library   9.2.0.112  
       ACE.dll   ACE 2012/01/18-15:07:40   66.492997   66.492997
       adbeape.dll   Adobe APE 2012/01/25-10:04:55   66.1025012   66.1025012
       AdobeLinguistic.dll   Adobe Linguisitc Library   6.0.0  
       AdobeOwl.dll   Adobe Owl 2012/02/09-16:00:02   4.0.93   66.496052
       AdobePDFL.dll   PDFL 2011/12/12-16:12:37   66.419471   66.419471
       AdobePIP.dll   Adobe Product Improvement Program   6.0.0.1654  
       AdobeXMP.dll   Adobe XMP Core 2012/02/06-14:56:27   66.145661   66.145661
       AdobeXMPFiles.dll   Adobe XMP Files 2012/02/06-14:56:27   66.145661   66.145661
       AdobeXMPScript.dll   Adobe XMP Script 2012/02/06-14:56:27   66.145661   66.145661
       adobe_caps.dll   Adobe CAPS   6,0,29,0  
       AGM.dll   AGM 2012/01/18-15:07:40   66.492997   66.492997
       ahclient.dll    AdobeHelp Dynamic Link Library   1,7,0,56  
       aif_core.dll   AIF   3.0   62.490293
       aif_ocl.dll   AIF   3.0   62.490293
       aif_ogl.dll   AIF   3.0   62.490293
       amtlib.dll   AMTLib (64 Bit)   6.0.0.75 (BuildVersion: 6.0; BuildDate: Mon Jan 16 2012 18:00:00)   1.000000
       ARE.dll   ARE 2012/01/18-15:07:40   66.492997   66.492997
       AXE8SharedExpat.dll   AXE8SharedExpat 2011/12/16-15:10:49   66.26830   66.26830
       AXEDOMCore.dll   AXEDOMCore 2011/12/16-15:10:49   66.26830   66.26830
       Bib.dll   BIB 2012/01/18-15:07:40   66.492997   66.492997
       BIBUtils.dll   BIBUtils 2012/01/18-15:07:40   66.492997   66.492997
       boost_date_time.dll   DVA Product   6.0.0  
       boost_signals.dll   DVA Product   6.0.0  
       boost_system.dll   DVA Product   6.0.0  
       boost_threads.dll   DVA Product   6.0.0  
       cg.dll   NVIDIA Cg Runtime   3.0.00007  
       cgGL.dll   NVIDIA Cg Runtime   3.0.00007  
       CIT.dll   Adobe CIT   2.0.5.19287   2.0.5.19287
       CoolType.dll   CoolType 2012/01/18-15:07:40   66.492997   66.492997
       data_flow.dll   AIF   3.0   62.490293
       dvaaudiodevice.dll   DVA Product   6.0.0  
       dvacore.dll   DVA Product   6.0.0  
       dvamarshal.dll   DVA Product   6.0.0  
       dvamediatypes.dll   DVA Product   6.0.0  
       dvaplayer.dll   DVA Product   6.0.0  
       dvatransport.dll   DVA Product   6.0.0  
       dvaunittesting.dll   DVA Product   6.0.0  
       dynamiclink.dll   DVA Product   6.0.0  
       ExtendScript.dll   ExtendScript 2011/12/14-15:08:46   66.490082   66.490082
       FileInfo.dll   Adobe XMP FileInfo 2012/01/17-15:11:19   66.145433   66.145433
       filter_graph.dll   AIF   3.0   62.490293
       hydra_filters.dll   AIF   3.0   62.490293
       icucnv40.dll   International Components for Unicode 2011/11/15-16:30:22    Build gtlib_3.0.16615  
       icudt40.dll   International Components for Unicode 2011/11/15-16:30:22    Build gtlib_3.0.16615  
       image_compiler.dll   AIF   3.0   62.490293
       image_flow.dll   AIF   3.0   62.490293
       image_runtime.dll   AIF   3.0   62.490293
       JP2KLib.dll   JP2KLib 2011/12/12-16:12:37   66.236923   66.236923
       libifcoremd.dll   Intel(r) Visual Fortran Compiler   10.0 (Update A)  
       libmmd.dll   Intel(r) C Compiler, Intel(r) C++ Compiler, Intel(r) Fortran Compiler   10.0  
       LogSession.dll   LogSession   2.1.2.1640  
       mediacoreif.dll   DVA Product   6.0.0  
       MPS.dll   MPS 2012/02/03-10:33:13   66.495174   66.495174
       msvcm80.dll   Microsoft® Visual Studio® 2005   8.00.50727.6195  
       msvcm90.dll   Microsoft® Visual Studio® 2008   9.00.30729.1  
       msvcp100.dll   Microsoft® Visual Studio® 2010   10.00.40219.1  
       msvcp80.dll   Microsoft® Visual Studio® 2005   8.00.50727.6195  
       msvcp90.dll   Microsoft® Visual Studio® 2008   9.00.30729.1  
       msvcr100.dll   Microsoft® Visual Studio® 2010   10.00.40219.1  
       msvcr80.dll   Microsoft® Visual Studio® 2005   8.00.50727.6195  
       msvcr90.dll   Microsoft® Visual Studio® 2008   9.00.30729.1  
       pdfsettings.dll   Adobe PDFSettings   1.04  
       Photoshop.dll   Adobe Photoshop CS6   CS6  
       Plugin.dll   Adobe Photoshop CS6   CS6  
       PlugPlug.dll   Adobe(R) CSXS PlugPlug Standard Dll (64 bit)   3.0.0.383  
       PSArt.dll   Adobe Photoshop CS6   CS6  
       PSViews.dll   Adobe Photoshop CS6   CS6  
       SCCore.dll   ScCore 2011/12/14-15:08:46   66.490082   66.490082
       ScriptUIFlex.dll   ScriptUIFlex 2011/12/14-15:08:46   66.490082   66.490082
       tbb.dll   Intel(R) Threading Building Blocks for Windows   3, 0, 2010, 0406  
       tbbmalloc.dll   Intel(R) Threading Building Blocks for Windows   3, 0, 2010, 0406  
       TfFontMgr.dll   FontMgr   9.3.0.113  
       TfKernel.dll   Kernel   9.3.0.113  
       TFKGEOM.dll   Kernel Geom   9.3.0.113  
       TFUGEOM.dll   Adobe, UGeom©   9.3.0.113  
       updaternotifications.dll   Adobe Updater Notifications Library   6.0.0.24 (BuildVersion: 1.0; BuildDate: BUILDDATETIME)   6.0.0.24
       WRServices.dll   WRServices Friday January 27 2012 13:22:12   Build 0.17112   0.17112
       wu3d.dll   U3D Writer   9.3.0.113  
    Required plug-ins:
       Accented Edges 13.0
       Adaptive Wide Angle 13.0
       ADM 3.11x01
       Angled Strokes 13.0
       Average 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Bas Relief 13.0
       BMP 13.0
       Camera Raw 7.0
       Chalk & Charcoal 13.0
       Charcoal 13.0
       Chrome 13.0
       Cineon 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Clouds 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Collada 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Color Halftone 13.0
       Colored Pencil 13.0
       CompuServe GIF 13.0
       Conté Crayon 13.0
       Craquelure 13.0
       Crop and Straighten Photos 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Crop and Straighten Photos Filter 13.0
       Crosshatch 13.0
       Crystallize 13.0
       Cutout 13.0
       Dark Strokes 13.0
       De-Interlace 13.0
       Difference Clouds 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Diffuse Glow 13.0
       Displace 13.0
       Dry Brush 13.0
       Eazel Acquire 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Embed Watermark 4.0
       Extrude 13.0
       FastCore Routines 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Fibers 13.0
       Film Grain 13.0
       Filter Gallery 13.0
       Fresco 13.0
       Glass 13.0
       Glowing Edges 13.0
       Grain 13.0
       Graphic Pen 13.0
       Halftone Pattern 13.0
       HDRMergeUI 13.0
       IFF Format 13.0
       Ink Outlines 13.0
       JPEG 2000 13.0
       Lens Blur 13.0
       Lens Correction 13.0
       Lens Flare 13.0
       Liquify 13.0
       Matlab Operation 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Measurement Core 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Mezzotint 13.0
       MMXCore Routines 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Mosaic Tiles 13.0
       Multiprocessor Support 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Neon Glow 13.0
       Note Paper 13.0
       NTSC Colors 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Ocean Ripple 13.0
       Oil Paint 13.0
       OpenEXR 13.0
       Paint Daubs 13.0
       Palette Knife 13.0
       Patchwork 13.0
       Paths to Illustrator 13.0
       PCX 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Photocopy 13.0
       Photoshop 3D Engine 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Picture Package Filter 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Pinch 13.0
       Pixar 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Plaster 13.0
       Plastic Wrap 13.0
       PNG 13.0
       Pointillize 13.0
       Polar Coordinates 13.0
       Portable Bit Map 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Poster Edges 13.0
       Radial Blur 13.0
       Radiance 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Read Watermark 4.0
       Reticulation 13.0
       Ripple 13.0
       Rough Pastels 13.0
       Save for Web 13.0
       ScriptingSupport 13.0
       Shear 13.0
       Smart Blur 13.0
       Smudge Stick 13.0
       Solarize 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Spatter 13.0
       Spherize 13.0
       Sponge 13.0
       Sprayed Strokes 13.0
       Stained Glass 13.0
       Stamp 13.0
       Sumi-e 13.0
       Targa 13.0
       Texturizer 13.0
       Tiles 13.0
       Torn Edges 13.0
       Twirl 13.0
       Underpainting 13.0
       Vanishing Point 13.0
       Variations 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Water Paper 13.0
       Watercolor 13.0
       Wave 13.0
       WIA Support 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       Wind 13.0
       Wireless Bitmap 13.0 (13.0 20120315.r.428 2012/03/15:21:00:00)
       ZigZag 13.0
    Optional and third party plug-ins: NONE
    Plug-ins that failed to load: NONE
    Flash:
       Mini Bridge
       Kuler
    Installed TWAIN devices: NONE
    CAN ANYONE HELP, I AM GOING MAD?

    First, you need to reinstall all the Photoshop updates.
    Do you have a subscription or Photoshop Extended license?
    The 3D features are only available in CS6 Extended.

  • Query Region Update Operation problem

    Hi All,
    I have one Query region in Oracle seeded page.
    In Query region one table is there.
    My Client Requirement is he wants to add one text input field in table. so that user can enter comments in text input field.
    He also wants Update button as a Table Action and when he clicks on Update, this comments should get store into Database.
    I want to know that Update operation is possible in Query region's table.because when i handle event in controller, it gives me Following Exception.
    Logout
    Error Page
    Exception Details.
    oracle.apps.fnd.framework.OAException: java.lang.ArrayIndexOutOfBoundsException: 0
         at oracle.apps.fnd.framework.OAException.wrapperException(OAException.java:896)
         at oracle.apps.po.common.server.PoBaseAMImpl.executeServerCommand(PoBaseAMImpl.java:115)
         at oracle.apps.po.autocreate.server.ReqLinesVOImpl.executeQueryForCollection(ReqLinesVOImpl.java:67)
         at oracle.jbo.server.ViewRowSetImpl.execute(ViewRowSetImpl.java:742)
         at oracle.jbo.server.ViewRowSetImpl.executeQueryForMasters(ViewRowSetImpl.java:891)
         at oracle.jbo.server.ViewRowSetImpl.executeQueryForMode(ViewRowSetImpl.java:805)
         at oracle.jbo.server.ViewRowSetImpl.executeQuery(ViewRowSetImpl.java:799)
         at oracle.jbo.server.ViewObjectImpl.executeQuery(ViewObjectImpl.java:3575)
         at oracle.apps.fnd.framework.server.OAViewObjectImpl.executeQuery(OAViewObjectImpl.java:437)
         at xxadat.oracle.apps.po.autocreate.webui.XXADATAttr15CO.processFormRequest(XXADATAttr15CO.java:73)
         at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(OAWebBeanHelper.java:815)
         at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processFormRequest(OAWebBeanContainerHelper.java:382)
         at oracle.apps.fnd.framework.webui.beans.layout.OAStackLayoutBean.processFormRequest(OAStackLayoutBean.java:370)
         at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:1027)
         at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:993)
         at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(OAWebBeanHelper.java:848)
         at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processFormRequest(OAWebBeanContainerHelper.java:382)
         at oracle.apps.fnd.framework.webui.beans.layout.OARowLayoutBean.processFormRequest(OARowLayoutBean.java:366)
         at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:1027)
         at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:993)
         at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(OAWebBeanHelper.java:848)
         at oracle.apps.fnd.framework.webui.beans.table.OAMultipleSelectionBean.processFormRequest(OAMultipleSelectionBean.java:481)
         at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:1042)
         at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:993)
         at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(OAWebBeanHelper.java:848)
         at oracle.apps.fnd.framework.webui.OAAdvancedTableHelper.processFormRequest(OAAdvancedTableHelper.java:1671)
    The page which i have cutomized is /oracle/apps/po/autocreate/webui/ReqSearchPG.
    It is on R12.
    Can anybody throw some points on this?
    Regards
    Hitesh

    Hi,
    I got the problem,
    It is a standard functionality of oracle that we can not update Requisitions which are approved.
    My client requirement is that after approval of Requisition, he wants to update the Requisition.
    I said that it is not possible in Forms as well as OAF.
    The system will not allow to update Requisition once it is approved.
    Regards
    Hitesh

  • Photoshop CS4 extended upgrade problems.....Help!

    I am using Photoshop CS3 (registered and activated) on my old computer.
    I built a new computer and want to install CS4 extended on it. I purchased a Photoshop CS4 Extended update from Amazon for $342.99. During installation of CS4 on my new computer I entered the serial number. The next page that pops up is Upgrade Check that asks: 1) Select product that you already own: The only choice is Adobe Photoshop CS3 Extended and 2) it asks for the serial number. I am upgrading from Photoshop CS3, not the extended version, so it will not accept my serial number. Photoshop is installed on a trial basis right now.
    I tried installing Photoshop CS3 on the new computer but that did not help and CS3 did not recognize the CS2 installation disk that I put in the CD drive to prove that I was allowed to install a CS3 uprade.
    The new computer I am trying to install on is an Intel i7 920 processor on a Gigabyte GA-EX58-UD4P motherboard, with 12Gb RAMM, a Sapphire Toxic Radion HD 4870 graphics card, and running Windows XP pro 64 bit. I installed the operating system on the D drive. This computer is not setup to connect to the internet.
    I am also trying to install Adobe CS2 Creative Suite (everything except Photoshop), but the CS2 installation does not recognize the Adobe CS1 disk 1 when I put it in the CD drive as requested.
    This is all very frustrating considering how happy I have been with my Adobe software all the way back to Photoshp 5. I called the 800-833-6687 number and after playing phone tree for a while was informed that I was calling outside their hours (at noon on Sunday) even though the webpage I got the number from says they are available 7 days a week.
    It was bad enough that after spending $195 to upgrade to Photoshop CS3, 3 weeks later Adobe announced Photoshop CS4.
    Thanks in advance for any help,
    Steve

    You do like making things complicated don't you?
    From your message I deduce that you purchased an upgrade that is not in the upgrade eligibility path from the version that you had.
    It's not logical but then what is these days in Adobe marketing? The only solution seems to be to get back on the telephone.

  • Portege m700 Tablet Extended Desktop Problem

    I've looked all over and can't find a good answer to this, so I figured I'd better check with the source!  I have a Toshiba Portege m700 tablet PC, which has an LCD monitor connected using the digital cable.
    I have the external monitor set as my primary, with the notebook monitor set as the secondary, providing extra desktop real estate to the right of the first monitor.
    The problem is that when I use the touchscreen, the mouse controls are only active on the primary monitor (the external one).  What I'd like to do is have the external monitor be primary, the notebook monitor be secondary, and be able to drag items to the notebook and use ink, or onenote, or other touchscreen apps on there.  I want the touchscreen to control ONLY the secondary (notebook) monitor.  Is this possible?
    It seems like there should be some way to just instruct the computer to map the touchscreen to the secondary monitor instead of always just mapping to the primary.
    However, if there is not, what I did experiment with is having the notebook as primary and the external as secondary, and then using some sort of multimonitor software to manage the taskbar and such to create the illusion of the external monitor being primary.  The problem here is that while the notebook is 1280 x 800 resolution, the external monitor is capable of 1280 x 1024, but when set as secondary will go no higher than 1280 x 800.  Is there a way to force the external monitor to run in 1280 x 1024 if I'm using it as the secondary?
     Is this something for which I need an updated graphics driver?  I tried to get a newer version of the Intel GMA, but it actually removed all extended desktop options for me, so I rolled it back.  The version it's running is 6.14.10.4837.
    Thank you in advance for anyone pointing me to any driver updates, configuration directions, or external software that can effectively manage all these options of extended desktop, screen resolution, and what monitor is assigned to touchscreen control!

    I've just tested the "Extended Desktop for Tablet PC" powertoy, and that doesn't solve this problem.  With the tablet set as the secondary monitor, when I move the window onto that screen, it just recurses the image over itself, which isn't really useful.
    No one has any other ideas about this?

  • IMac 27" extended desktop problems

    Hi!
    I own a 2011 iMac 27" and I am having issues using a Samsung SyncMaster T240M display as extended desktop.
    It works fine when I am just using the computer for a while, but if the displays go to sleep mode, when I return to the computer the iMac display restores right away but then the Samsung display starts to go on and off repeatedly until it finally stays on, but then all my applications are on the iMac display.
    It is pretty much like what would happen if I had unplugged the monitor and plugged it back in.
    Is there a way to fix this or do I just have to live with that? Has anyone experienced the same problem with other displays? Maybe this Samsung display is not syncing well with the iMac?
    Anyway, any help will be very much appreciated.
    See you,
    JP

    If the machine is covered by warranty or even better by AppleCare then contact AppleCare. They will be able to do in-home service if you are within 50 miles of an AASP. You will have to request this service but they will do it.

  • Jndi OpenLdap password problem

    Hello,
    I've searched different forums and google for days now but i can't find a solution for my problem. I'm trying to use OpenLdap and Jndi to authentificate users. I can perform an anonymous bind but if i try to authentificate with a user in my Ldap tree i always get this error:
    javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
    This happens if i use 'simple' for security_authentification. When i use digest-md5 the following problem occurs:
    javax.naming.AuthenticationNotSupportedException: digest-md5
    It is obvious that my OpenLdap server does not support digest-md5. And the first error tells me that my password is wrong.
    If i lookup the passwords with a ldap browser it shows something like this:
    {MD5}$1$pJyUMt74$8gXXepTKoLk9l3xeinY8u/
    so i assume that some kind of a MD5 Hash is used. But i don't know how to generate these hash to do an authentification by JNDI.
    This is my source code:
    java.util.Hashtable env = new java.util.Hashtable();
    env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(javax.naming.Context.PROVIDER_URL, "ldap://xxx:389");
    env.put("java.naming.ldap.version", "2");
    env.put(javax.naming.Context.SECURITY_AUTHENTICATION,"simple");
    env.put(javax.naming.Context.SECURITY_PRINCIPAL, "uid=xxx, ou=xxx, o=xxx, c=DE");
    env.put(javax.naming.Context.SECURITY_CREDENTIALS, xxx); All variables are set correctly. I hope someone can give me a hint how to do this authentification.
    If i generate an MD5 hash from my cleartext password it doesn't match the one in my Ldap tree.
    Thanks in advance.
    Sebastian

    Maybe you should specify jndi name for your bean in deployment descriptor (ejb-jar.xml) of EJB jar module?
    <ejb-jar> 
      <enterprise-beans>
        <ejb>
          <ejb-name>MyBean</ejb-name>
          <jndi-name>JNDINameOfMyBean</jndi-name>
        </ejb>
      </enterprise-beans>
    </ejb-jar>And then lookup for JNDINameOfMyBean.

  • JAI + JAI Image IO - ImageWrite operation problem: color reversed

    I installed jai 1.1.3 and jai imageio 1.1 on jdk 1.6 and did a test with the following code.
         public static void main(String args[]) {
              Byte[] bandValues = new Byte[3];
              bandValues[0] = (byte)255;
              bandValues[1] = (byte)0;
              bandValues[2] = (byte)0;
              ParameterBlock params = new ParameterBlock();
              params.add((float)300).add((float)200);
              params.add(bandValues);
              PlanarImage bim = JAI.create("constant", params);
              JAI.create("imagewrite", bim, "d:/dev/baseImage.png", "PNG");
              JAI.create("filestore", bim, "d:/dev/baseImage2.png", "PNG");
              PlanarImage pi = JAI.create("imageread", "d:/dev/baseImage.png");
              PlanarImage pi2 = JAI.create("imageread", "d:/dev/baseImage2.png");
              JFrame frame = new JFrame();
              frame.setTitle("Output Image");
              Container contentPane = frame.getContentPane();
              contentPane.setLayout(new GridLayout(1,3));
              contentPane.add(new JScrollPane(new DisplayJAI(bim)));
              contentPane.add(new JScrollPane(new DisplayJAI(pi)));
              contentPane.add(new JScrollPane(new DisplayJAI(pi2)));
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame.setSize(960, 400);
              frame.setVisible(true);
         }I found that the color in the output file created by "imagewrite" was reversed - bim is red but pi is blue.
    The one created by "filestore" was correct: pi2 was red.
    Did I use the "imagewrite" operation incorrectly? How should I use the imagewrite operation?

    I think you are using it correctly and you've encountered a bug. The same thing occurs on my machine. PlanarImage is using an interlaced raster which stores pixels as BGRBGRBGR ect... But the only way I can see this causing a problem is if the imagewrite operation was going directly to the DataBuffer for the pixels. If it retrieved it through the raster the colors should not be switched.
    Interestingly enough if I do this
    JAI.create("imagewrite", bim.getAsBufferedImage(), "d:/dev/baseImage.png", "PNG");then it works correctly. This suggests even more that the fault is with imagewrite operation interpreting the PlanarImage wrongly.

Maybe you are looking for