Operation problem

Dear All,
I can not open Indesign CC 2014 and Windows 8 system always stopped the operation, Please help me to solve this problem? Thanks!

Might be a number of different things, and Windows isn't very helpful at telling us what they are.
ID is sensitive to badly made or damaged fonts. It might also be a font manger auto-activation plugin if you use a font manager.or it could be something else entirely.
Things you can try:
Trash the prefs. See Replace Your Preferences
Reboot and log in on a different user account.
Make sure the default printer is local (not network) and turned on. You can use a virtual printer, like MS Fax, if necessary. After one successful launch you should be able to change back.
Remove any non-adobe plugins (old versions are not forward compatible).
That little message under the dialog in the splash screen might give a clue, too.

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.

  • 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

  • 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.

  • 9.0 JSP EL Compliance (ternary operator problem)

    I've run into a problem porting an application from Tomcat 5.5 to WL 9 that I haven't been able to find any references to in any of the standard haunts. The problem is in reference to the handling of the arguments to the ternary operator that is part of the JSP 2.0 EL spec. Here is a dumbed down example of the problem that I am running into:
              ---------- START SAMPLE JSP -----------
              <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
              <%
              pageContext.setAttribute("fookmi", "fookmi");
              pageContext.setAttribute("fooku", "fooku");
              %>
              <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
              <html>
              <head>
              <title>My JSP 'forEachTest.jsp' starting page</title>
              </head>
              <body>
                   <c:out value="${fooku}"/>
                   <c:out value="${fookmi}"/>
                   <c:out value="${(true) ? 'fooku' : 'fookmi'}"/>
                   <c:out value="${(true) ? fooku : fookmi}"/>
              </body>
              </html>
              ---------- END SAMPLE JSP -----------
              Paying close attention to the last 2 c:out tags. (Note: I use c:out in the example but the results are the same regardless of the tag context, i've got examples in forEach and others)
              The server will not be able to compile the given jsp page and will error with the following:
              ----------------- BEGIN ERROR --------------
              forEachTest.jsp:19:15: No match was found for method setValue() in type org.apache.taglibs.standard.tag.rt.core.OutTag.
                   <c:out value="${(true) ? fooku : fookmi}"/>
              ^--------------------------^
              ----------------- END ERROR ---------------
              So if we take a look at the java source being rendered by the compiler you will see the following (extraneous info clipped).
              -------------- START FIRST COUT -----------
              if (__tag0== null )__tag0 = new org.apache.taglibs.standard.tag.rt.core.OutTag ();
              __tag0.setPageContext(pageContext);
              __tag0.setParent( null );
              __tag0.setValue(( java.lang.Object ) javelin.jsp.el.ExpressionEvaluatorImpl.evaluate("${fooku}",java.lang.Object.class,pageContext,_jspx_fnmap));
              activeTag=_tag0;
              __result__tag0 = __tag0.doStartTag();
              -------------- END FIRST COUT -----------
              -------------- START SECOND COUT -----------
              if (__tag1== null )__tag1 = new org.apache.taglibs.standard.tag.rt.core.OutTag ();
              __tag1.setPageContext(pageContext);
              __tag1.setParent( null );
              __tag1.setValue(( java.lang.Object ) javelin.jsp.el.ExpressionEvaluatorImpl.evaluate("${fookmi}",java.lang.Object.class,pageContext,_jspx_fnmap));
              activeTag=_tag1;
              __result__tag1 = __tag1.doStartTag();
              -------------- END SECOND COUT -----------
              -------------- START THIRD COUT -----------
              if (__tag2== null )__tag2 = new org.apache.taglibs.standard.tag.rt.core.OutTag ();
              __tag2.setPageContext(pageContext);
              __tag2.setParent( null );
              __tag2.setValue(( java.lang.Object ) javelin.jsp.el.ExpressionEvaluatorImpl.evaluate("${(true) ? \'fooku\' : \'fookmi\'}",java.lang.Object.class,pageContext,_jspx_fnmap));
              activeTag=_tag2;
              __result__tag2 = __tag2.doStartTag();
              -------------- END THIRD COUT -----------
              -------------- START FOURTH COUT -----------
              if (__tag3== null )__tag3 = new org.apache.taglibs.standard.tag.rt.core.OutTag ();
              __tag3.setPageContext(pageContext);
              __tag3.setParent( null );
              __tag3.setValue();
              activeTag=_tag3;
              __result__tag3 = __tag3.doStartTag();
              -------------- END FOURTH COUT -----------
              Notice that in the last c:out the __tag3.setValue() call does not provide any parameters and thus the compilation error we saw reported.
              My question is, am I doing something wrong here or is this possibly a bug in the WL 9 2.0 EL support?
              Final Note: This construct works fine in Tomcat 5.5.

    TÃtulo: Quer mudar sua vida??Leia com atenção!
              Autor: LUIZ
              Data: 19/11/2005
              Cidade: Boa Vista
              Estado: RR
              PaÃs: Brasil
              COMO ACABAR COM A DIFICULDADE FINANCEIRA
              ACABE COM A DIFICULDADE FINANCEIRA
              GANHE MUITO DINHEIRO COM APENAS 6 REAIS
              HONESTIDADE, INTELIGENCIA E EFICÁCIA
              POR FAVOR, LEIA COM BASTANTE ATENÇÃO, VALE A PENA!
              COMO TRANSFORMAR 6 (SEIS) REAIS EM NO MINIMO 6.000(SEIS MIL REAIS) !! : VOCÊ É CAPAZ, APENAS FAÇA FUNCIONAR.!
              Eu achei uma mensagem sobre esse assunto e não dei muita atenção por ser um texto muito longo e parecer ser presente de papai Noel, más resolvi arriscar e deu certo. Vou tentar resumir para que vc tbm não ache esse texto cansativo e se quiser mais informções mande-me um e-mail – [email protected].
              Funciona assim:
              PASSO 1: Separe 6 meias folhas de papel e escreva em cada uma, o seguinte bilhete: " POR FAVOR, PONHA-ME EM SUA LISTA DE REMETENTES" colocando seu nome e endereço logo abaixo. Agora adquira 6 notas de R$ 1,00 e envolva cada uma em um dos bilhetes que você acabou de escrever. Em seguida, envolva cada um deles novamente com um papel escuro, para evitar que alguém veja a nota e viole o envelope, roubando o dinheiro. Então coloque cada um dentro de um envelope e lacre. A lista abaixo contém 6 nomes com endereços e você tem 6 envelopes lacrados. Você deve REMETER PELO CORREIO, um envelope para cada um dos nomes da lista. Faça isto, anotando corretamente o nome e o endereço nos envelopes, depositando em seguida no correio. A lista se encontra no final desse texto : PASSO 2: Elimine o primeiro nome da lista (#1). Reordene a lista de 1 a 5, ou seja (2 torna-se 1), (3 torna-se 2), etc.. Coloque o SEU nome e endereço como o 6º(sexto) da lista. :
              PASSO 3: Após feitas as alterações acima, coloque este artigo em pelo menos 200 fóruns e newsgroups.Você pode modificar o texto deste artigo, mas por favor, mantenha a integridade da mensagem. Isto é importante. LEMBRE-SE, quanto mais mensagens nos fóruns, newsgroups e livros de visitas você colocar, mais dinheiro você ganhará!
              O retorno será melhor se você colocar um bom tÃtulo ( ou esse mesmo), que fique visÃvel para todos.
              Agora, coloque o artigo modificado (ou esse mesmo).Existem milhares de fóruns e newsgroups. Você só precisa de 200. Então mãos à obra, LEMBRE-SE Toda vez que alguém agir como você, salvando esta mensagem, seguindo e executando corretamente todas as instruções, 6 pessoas estão sendo beneficiadas com R$ 1,00 cada e seu nome subirá na lista. Assim as listas multiplicam-se rapidamente e seu nome vai subindo até atingir a primeira posição. Desta forma quando seu nome alcançar a #1 posição, você já terá recebido milhares de reais em DINHEIRO VIVO! Lembre-se que você só investiu R$6.00. Envie agora os envelopes, suba o nome dos participantes da lista e adicione seu próprio nome na sexta posição da lista, poste-a nos fóruns e você está no negócio!
              COMO POSTAR NOS NEWSGROUPS --------
              Etapa 1) Copie e salve este artigo em seu editor de texto. (selecione o texto, clique em Editar e Copiar, abra seu editor de texto e clique em Editar e Colar, depois clique em Arquivo e Salvar como .txt) Etapa 2) Faça as devidas alterações neste artigo, incluindo seu nome na sexta posição da lista. Etapa 3) Salve novamente o arquivo. Clique em Editar e Selecionar tudo. Clique novamente em Editar e Copiar. Etapa 4) Abra seu navegador, Netscape, Internet Explorer ou algum outro qualquer e procure vários newsgroups (fóruns on-line, cadernos de mensagens, locais de conversa, discussões) e poste uma mensagem nova em cada MURAL ou ÁREA, ou algo similar. Etapa 5) Para postar entre nesses newsgroups. No campo destinado para digitar o texto ou mensagem a ser enviada para o newsgroups, clique com o botão direito do mouse. Em seguida clique em Colar. Como Assunto ou tÃtulo, digite um nome que chame a atenção, como o meu, ou invente algo parecido. Clique em enviar e pronto, você acabou de enviar sua primeira mensagem! Parabéns...Etapa 6) Selecione outro newsgroups e repita o passo 5. Faça isso no mÃnimo para 200 newsgroups. **QUANTO MAIS MENSAGENS VOCÊ ENVIAR AOS NEWSGROUPS MAIS CHANCES VOCÊ TERÁ DE GANHAR MAIS DINHEIRO ** Pronto! Você logo começará a receber dinheiro pelo correio. Se você deseja ficar anônimo, você pode inventar um nome para usar na lista, contanto que o endereço esteja certo para que você receba o dinheiro. **CONFIRA SEU ENDEREÇO!!!.
              ------- PORQUE RENDE TANTO DINHEIRO --------
              Agora vamos ver POR QUE rende tanto dinheiro: Fazendo uma análise bastante pessimista, vamos supor que de cada 200 mensagens, apenas 5 dêem retorno. Assim das minhas 200 mensagens, receberei apenas R$5,00 referentes ao meu nome na #6 posição. Agora, cada uma das 5 pessoas que me enviaram R$1.00 postaram mais 200 mensagens cada uma. Se apenas 5 de cada 200 retornarem, receberei R$ 25,00 referentes ao meu nome na #5 posição. Agora, cada uma das 25 pessoas que me enviaram R$1.00 postaram mais 200 mensagens cada uma. Se apenas 5 de cada 200 retornarem, receberei R$ 125,00 referentes ao meu nome na #4 posição. LEMBRE-SE ! Estamos considerando um exemplo extremamente fraco. Agora, cada uma das 125 pessoas que me enviaram R$1.00 postaram mais 200 mensagens cada uma. Se apenas 5 de cada 200 retornarem, receberei R$ 625,00 referentes ao meu nome na #3 posição. Agora, cada uma das 625 pessoas que me enviaram R$1.00 postaram mais 200 mensagens cada uma. Se apenas 5 de cada 200 retornarem, receberei então R$ 3.125,00 referentes ao meu nome na #2 posição. Agora, cada uma das pessoas que me enviaram R$1.00 postaram mais 200 mensagens cada uma. Se apenas 5 de cada 200 retornarem, receberei nesta última fase R$ 15.625,00 referentes ao meu nome na #1 posição. INCRÍVEL! Com um investimento original de apenas R$6,00, cria-se uma oportunidade gigantesca. Estima-se que entre 20.000 e 50.000 novas pessoas se juntem à Internet todos os dias e vão para os chats e fóruns. "O que são seis reais para tentar uma chance milionária que pode dar certo?" As chances são grandes quando milhões de pessoas honestas como você estão se juntando a esse grupo?? Lembre-se, a HONESTIDADE faz parte deste jogo. MANDE UM DÓLAR AO INVÉS DE UM REAL PARA OS ESTRANGEIROS .
              IMPORTANTE: O envio das cartas contendo o bilhete e R$1,00, é que torna honesto e prospero o sistema, assim o sistema sobrevive, pois tudo que é desonesto, mais cedo ou mais tarde, fracassa certamente.
              NÓS SOMOS RICOS, NÓS SOMOS PROSPEROS, NÓS ESTAMOS CHEIOS DE SAÚDE E HARMONIA.
              **** SE VC DESEJA PARTICIPAR DESSA CORRENTE DE SOLIDARIEDADE E AO MESMO TEMPO FICAR RICO, MANDE (1 REAL) PARA CARA UM DOS NOMES ABAIXO******
              ENDEREÇOS DAS PESSOAS QUE VC DEVE ENVIAR R$1,00 JUNTO COM O BILHETE:
              1)Luiz Carlos Rodrigues - Av. Dr. Nilo Peçanha,252 - Marapé.
              CEP: 11070-050 SANTOS - SP
              2)Renato Pontes Eller - Rua Ranulfo Alves,709 Vila Isa.
              Cep: 35044-220 Governador Valadares - MG
              3)Dalton Sampaio - Rua Senador Máximo, 75 - Centro.
              Cep: 57250-000 Campo Alegre – AL
              4)Samuel Rodrigues P. Junior – Av. Ernani do Amaral Peixoto, 195 Apt 701 - Centro.
              Cep: 24020-071 Niterói - RJ
              5)PatrÃcia A de Barros Silva – Rua Maria Teresa Assunção 479 A –Penha
              CEP:03609.000 –São Paulo-SP
              6) Luiz Faustino – Rua Ágata, 238 – Jóckey Club
              CEP: 69313-108 – Boa Vista - RR
              NÃO PERCA TEMPO COMECE JÁ A ENVIAR SUAS CARTAS E POSTAR!!!QUANTO ANTES MELHOR, MAIS RAPIDO COMECARA A RECEBER AS SUAS CARTAS!!!!

  • Multi-Operation problem in Routing (CA01)

    Hi,
    I have a in-house production material, which may need to be manufactured as following 3 operations:
    operation 10    (opitonal operation)
    operation 20    (opitonal operation)
    operation 30    (<b>mandatory</b> operation)
    Current situation is, if the machines are good, only one operation 30 is enough;
    but if there's a little problem with the machine, operation 10 and 20 are needed
    individually or both after operation 30.
    so  how to solve this kind of problem?
    Thanks and best regards.

    Hi,
    Thank you all very much for your expertise.
    If these  3 operations are all needed for some time, how to
    perform production order confirmation?
    <b>Does it  need 1 time for each operation individually as follows:</b>
    e.g.
            1st time    CO11N  +operation 10  --- collect manfacturing costing
            2nd time   CO11N  +operation 20  --- collect manfacturing costing
            3td time    CO11N  +operation 30(milestone) --- collect manfacturing costing & GR
    <b>         or only perform once for the last milestone opertion 30?</b>
    e.g.
                            Only 1 time    CO11N  + operation 30 (milestone)
    Thanks and best regards.

  • SLA ICMP-Jitter Operation problems

    I'm trying to guage network performance using the UDP-jitter and ICMP-jitter operations for a specific network segment.  We have a voice encoders that stream the audio over IP using UDP across the network.  The issue we are experiencing is out-of-sequence packets; these packets show up as artefacts on the receiving end audio output.  I understand that UDP is a connectionless protocol that doesn't provide any mechanism for sequencing.  This is where teh SLA monitors come in.
    I'm seeing statistics across the monitors that are inconsistent with each other.  They aren't off just a little from each other; they are off quite a bit.  The UDP-jitter operation (40006) isn't reporting any out-of-sequence packets (I can only see the last two hours, so I just changed the history to 24 hours).  Operations 40001 and 40002 (ICMP-jitter) seem to report no packets as out-of-sequence or all packets as out-of-sequence.  Operation 40002 is reporting around 50% packet loss.  This is a false report.  Operation 40006 is reporting 0% packet loss and the CODECs would be unusable if this were the case.  Operations 50001 and 50002 were just configured so I don't have much history on them.  Operation 50001 seems to be running clean, but 50002 has a lot of unprocessed packets.
    You may have noticed that the operations that traverse the satellite link have a TOS of 172 (DSCP 43).  This is done to ensure the the SLA monitor doesn't step on the CODEC traffic (DSCP EF, which is assigned to the LLQ).  That's not to say that the traffic isn't prioritized; it is guaranteed bandwidth across the link.  Also, there is no congestion on the network.  I have also checked QoS policy-maps and there are no drops for the assoiciated queues.  The circuits are up and stable.  One circuit is a little dirty, but it the error rate is pretty low 0.003%.
    So, my question is two part:
    1.  Why am I recieving out-of-sequence packets?
    2.  Has anyone else had this problem or a similar problem with the ICMP-jitter operation?
    I have included a basic diagram and the statistics I have been able to collect thus far.

    Hi Jorge
    According to Cisco documentation icmp-jitter should work on any IP Device.
    I have a similar issue.
    1. I can run icmp-jitter successfully to non cisco routers
    2. it fails to run to a generic ip device.
    Imran

  • Closing operation problem

    i face a problem on closing a calling class operation and pls help me cause i need it to complete my double module project... the below is a sample coding (note: i dun wan to close the window(System.exit) only for the specify class finction)
    // this is an calling class (call stegaBmp class)
    hideFile = stegaBmp.performBmpHide(new File(HidenPathField.getText()),
    smsPathFile, pass, tempFile, comboBox.getSelectedItem().toString());
    // this is the function class which i wanna close when (comboBox.equals("PHASE + LSB"))
    public class BmpStegaHide {
    public File performBmpHide(File bmpfile, File msgfile, String pass, File tempfile, String comboBox) throws
    StegaException {
    File hidefile;
    try {
    if (comboBox.equals("PHASE + LSB")){
    JOptionPane.showMessageDialog(null,"The size of the first file must be at least ");
    //Close the BmpStegaHide class here @@@@@@@ anyone can help (not System.exit or dispose()
    }

    i wanna terminate all the operation on class BmpstegaHide when the variable comboBox == "LSB" which passing from other class to bmpstegahide class... can u understand what i mean?? thx for helping
    public class BmpStegaHide {
    public File performBmpHide(File bmpfile, File msgfile, String pass, File tempfile, String comboBox) throws
    StegaException {
    if comboBox.equals("LSB")
    System.exit(0) ///this method will also exit the main frame so i dun wan (i also try dispose() but also cannot)
    }

  • 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)

  • [SOLVED] Opera Problems

    Hi,
    I'm having all sorts of strange problems with Opera.
    Pages only half loading, pages not rendering properly, themes vanishing, sessions being lost, widgets being lost.
    Any ideas?
    Last edited by RAH (2008-08-15 18:26:57)

    RAH wrote:Ah, that clears the pacman cache I presume?  I usually just delete the cache folder.  That's handy though - thanks!
    pacman -Sc clears out all packages other than what's currently installed. So, if you have three glibc packages in the cache, that command will only clear the two older ones.
    pacman -Scc clears out everything in the cache. I only do this only when I'm sure that my system is working properly.

  • Adobe operating problem

    When trying to use Adobe Reader it gives me an error message  Adobe has encountered a problem and needs to close down. Anyone knows how to fix this problem.

    What is your operating system & version?
    What is your Adobe Reader version?
    [topic moved to Flash Player forum]

  • 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.

  • Sub Contracting Operation Problem

    Hi frnds,
    I'm facing problem related with GL Account.
    Dears I'm going to create Automatic Purchase Requsition for material which is manufactured Externally by Vendor but the RAW Material is given by us means I want to create Sub contracting PO and only paid service prices for manufacturing the material to vendor. For this
    1. I create the PIR through TCODE ME11 with material
    2. Maintain the PIR in Master Ricepe with Cost element.
    3. Create Process Order & PR is generated but
    When I trying to convert PR to PO, it show Error message that the assign GL Account is not correct  at
    the field Account Assignment.
    I want to know at Account Assignment what GL Acc. will come to enter.
    Parminder

    Hi,
    Hope the Acct *** Cat in the PR is F  - Order Assigned PR.
    pls try this out.
    1. In OLME , check the Acct Modification key - say , VBR for the Acct *** Cat - F  (Order)
    2. In OBYC , pls check whether the Cost Element (say,400000) you have entered in master recipe is  
        mapped against - GBB - VBR - Valuation Class Combination.
    Also ,pls let us know the Cost Element that you have entered in Master Recipe.
    Regards,
    Sheik

  • Flash Builder 4.5 and SOAPHeader operation problem.

    I have been working on this for the last couple days and I have not been able to come up with a solution.  Anyone out there have any suggestions.
    I am trying to consume a Web service and it requires an Authentication Header.  I know the web services works by other means.  I would like to use the auto generated code, but it does not seem to want to add the authheader.
    I have tried the following forum links to no avail.
    http://forums.adobe.com/message/3069512
    http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/soap/Operation.h tml#addHeader%28%29
    Here is the function I am calling.
    public function headers():void {
    var header1:SOAPHeader;
    var obj:Object = new Object;
    obj.Username = "XXX";
    obj.Password = "YYY";
    // Create QName and SOAPHeader objects.
    var q1:QName=new QName("http://www.server.com/yadda/yadda", "AuthHeader");
    header1=new SOAPHeader(q1, obj);
    // Add the Authentication SOAP Header to all web service request.
    operations["GetCommand"].addHeader(header1);
    operations["SetCommand"].addHeader(header1);
    When I debug this I can see that all the information is in it's correct place, however when I wireshark the actual communication I get the following.
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <SOAP-ENV:Header>
        <tns:AuthHeader xmlns:tns="http://www.server.com/yadda/yadda"/>
      </SOAP-ENV:Header>
      <SOAP-ENV:Body>
        <tns:GetCommand xmlns:tns="http://www.server.com/yadda/yadda">
          <tns:value1></tns:value1>
          <tns:value2></tns:value2>
        </tns:GetCommand>
      </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    So I am getting the AuthHeader and the QName added, just not the username and password vaules.   Any ideas on what I am doing wrong?
    -Stewart

    I did get this to work.  If you do the following in the action script file that has the preinitialization fuction.  The header gets added properly.
    This gets initalized on the load of the application.  I would really like to be able to set the username and password with a login box.  However, since this loads on launch I have not been able to get the values into the header.  Does anyone know how you can refresh this operation to reflect the changes in the values?  I know the values are getting set in my Login.as, but I can not find anything on how to reload the webservice to pick up the change in values. 
            import mx.rpc.soap.SOAPHeader;
            var header1:SOAPHeader;  
            var obj:Object = new Object;
            obj.Username = "XXX";  
            obj.Password = "YYY";
            // Create QName and SOAPHeader objects.
            var q1:QName=new QName("http://www.server.com/yadda/yadda", "AuthHeader");
            header1=new SOAPHeader(q1, obj);
            // Add the Authentication SOAP Header to all web service request.
            _serviceControl.addHeader(header1);
    -Stewart

  • 'IN' operator problem

    I have a table called emp with ID's 1 to 1000 say.
    I wrote a Query to get the emp details like
    select * from emp where empid IN (3,16,19,2,15,4,7,1)
    which produces the Output in the sorted order like 1,2,3,4,7,15,16,19
    But I want the Output as in the order which I've mentioned after IN operator.
    Is there any way to get the output as I needed?
    Thanks,
    harry

    IN provides a set of data, not an ordered list, so the order of the data in that set does not exist. i.e. (1,2,3) is an identical set of data to (3,1,2)
    You could do something like:
    SQL> ed
    Wrote file afiedt.buf
      1  select emp.*
      2  from emp
      3       join (select column_value as empno, rownum rn
      4             from   table(sys.ODCIVarchar2List('7499','7788','7698'))) t
      5       on (emp.empno = t.empno)
      6* order by t.rn
    SQL> /
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
          7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300         30
          7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
          7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
    SQL>

Maybe you are looking for

  • Getting subreport (tab) of a Webi report

    Hi all, I'm looking for a way (with Web Services SDK or/and with Business Objects Enterprise SDK) to refresh a tab (subreport) of a Webi report and to download it. I'm knowing how to refresh and download a webi report already but I do not find a way

  • Differences between EP7 and EP6 versions

    Hi Everybody, Could someone let me know the differences between EP 7 and EP 6? Thanks, Sridar.

  • ITunes store error -37 (long filename?)

    I purchased 54 songs (Stravinsky, actually) and one of them would not and will not download, giving an error of "stopped, err = -37". According to the store support e-mail response, it may have something to do with long filenames. They cited this: ht

  • URL Freezes Page While Loading

    I have a 2011 Mac Book Pro 17" Retina OSX 10.9.4  purchased in 2012 that has worked beautifully until this past week.  I logged into FTDNA (Family Tree Maker DNA) research projects to do searches in various accounts.  All of the search functions work

  • SAP MMC Says Dispatcher running but not connected to message server

    I installed the ABAP Stack Sneak Preview Netweaver.I see all the relevant NSP entries in my Services file.But when i disconnect my internet I see in SAP MMC that Disptacher says its running but not connected Message Server(turns yellow) and also the