[EventCalendar] ec3_get_events() not translating ampersands into character entities

ejm cq547 at torfree.net
Fri Oct 5 15:56:33 UTC 2007


Many thanks for your reply, Alex;

>The fix should be correct, so I suspect that something else is 
>interfering. Do you have caching turned on anywhere?

I do not know the answer to this. How do I check for that?

>Are you *sure* that 
>the code you changed is the code it's running?

I think so...

>To be double sure, I'd try to change it like this...
>
>$data['TITLE'] ='HELLO '.htmlentities($data['TITLE'],ENT_QUOTES);

I put the following:
$data['TITLE'] ='Subject: '.htmlentities($data['TITLE'],ENT_QUOTES);

and what appeared was several instances of "Subject:" over and over
for each entry and no titles at all. 

When I tried the following:
$data['TITLE'] =htmlentities($data['TITLE']);

No title at all appeared.

>> With that coding, the ampersands do get translated and the main page
>> displays in Firefox. However, any attempt to validate the page fails:
>> the validation page states that there are now characters that do not
>> belong in UTF-8.
>
>Can you post an example URL that shows this behaviour? 

I would like to accommodate you, but I do not have a test wordpress
that I'm willing to allow to have broken display.

Many thanks again for any thoughts on this little problem.

-EMorris

P.S. In an effort to keep spammers at bay, I would prefer that the
address of the peacemakers wordpress site NOT be made into a link on
these mailing list archives.


On Fri, 05 Oct 2007 16:15:03 +0100, Alex Tingle <alex at firetree.net>
wrote:
>Hi there ejm,
>
>ejm wrote:
>> Running WP2.0.11 and EC3.1.0
>> 
>>> it turns out that it was not the event calendar that was causing the validation errors.
>> 
>> Well, rats. I fixed the Get Custom Field Value plugin error. And alas,
>> my analyis was incorrect. ec3_get_events() IS still causing validation
>> errors. 
>
>You are right there. To start with, thank you for finding and reporting 
>the error.
>
>> Once again, this is the coding I am using on the left sidebar of
>> peacemakers.ca.etherwork.net/bulletins/:
>> 
>> ec3_get_events('1000 days',' <a href="%LINK%" title="%DATE% -
>> %TITLE%"><b>%DATE%</b>: %TITLE%</a>','');
>> 
>> I also have an events page that uses the following coding:
>> 
>> ec3_get_events('1000 days','%DATE%: <a href="%LINK%" title="%DATE%:
>> %TITLE%">%TITLE%</a>','','j',"%MONTH%:");
>> 
>> On both those pages, if there are ampersands in %TITLE%, they are NOT
>> rendered into their entities in the coding. (I believe I did not make
>> it clear that I want any ampersand to be turned into &amp; for the
>> html pages)
>> 
>> I have tried various permutations of Dr.Troxler's fix - (note that I
>> have not included "html_entity_decode") but I continue to get
>> validation failure. 
>
>oh dear.
>
>
>> In eventcalendar3 > template-functions.php  I have tried replacing 
>> $data['TITLE'] =$entry->post_title;
>> 
>> with
>> ...........................
>> $data['TITLE'] =htmlentities($data['TITLE']);
>> ..........................
>
>I think this is correct. Even better would be...
>
>$data['TITLE'] =htmlentities($data['TITLE'],ENT_QUOTES);
>
>> With that coding, the ampersands do get translated and the main page
>> displays in Firefox. However, any attempt to validate the page fails:
>> the validation page states that there are now characters that do not
>> belong in UTF-8.
>
>Can you post an example URL that shows this behaviour? The example 
>you've posted (above) gets validation errors, but clearly hasn't had the 
>titles run through htmlentities(). Here's a snippet...
>
>  <li> <a href="[...]/bulletins/?p=623" 
>title="23 Oct 2007 - Joan B. Kroc Institute for Peace & Justice Women 
>PeaceMakers Conferences and Events"><b>23 Oct 2007</b><span 
>style="display:none">:</span> Joan B. Kroc Institute for Peace & Justice 
>Women PeaceMakers Conferences and Events</a></li>
>
>
>The fix should be correct, so I suspect that something else is 
>interfering. Do you have caching turned on anywhere? Are you *sure* that 
>the code you changed is the code it's running?
>
>To be double sure, I'd try to change it like this...
>
>$data['TITLE'] ='HELLO '.htmlentities($data['TITLE'],ENT_QUOTES);
>...now if you don't see 'HELLO' in front of all your titles, you know 
>something is wrong.
>
>
>> But the events page fails to display anything after the date. The link
>> and the title are gone. 
>
>Again, an example would be nice. Which browser?
>
>-Alex
>
>--
>
>> 
>> P.S. In an effort to keep spammers at bay, I would prefer that the
>> address of my wordpress site NOT be made into a link.
>> 
>> On Wed, 3 Oct 2007 20:05:14 +0200, "Dr. Peter Troxler"  wrote:
>>> you will have to tweak the ec3_get_events() in template_tags.php  
>>> function in a very peculiar way:
>>>
>>> find this section
>>>
>>>       $data['TITLE'] =$entry->post_title;
>>>       $data['LINK']  =get_permalink($entry->id);
>>>       $data['AUTHOR']=$entry->author;
>>>
>>> and change it to
>>>
>>>       $data['TITLE'] =htmlentities(html_entity_decode($entry- 
>>>> post_title));
>>>       $data['LINK']  =htmlentities(html_entity_decode(get_permalink 
>>> ($entry->id)));
>>>       $data['AUTHOR']=htmlentities(html_entity_decode($entry->author));
>>>
>>> this essentially converts all html (that might eventually be sitting  
>>> there) to normal characters and converts them back to html
>>>
>>> I tested it with the title only, so link and author at your own risk  
>>> (as of course always the standard disclaimer that nothing is  
>>> guaranteed to work or not to break the rest of your blog etc.) test  
>>> it first on a defined testcase and ideally in a test blog before  
>>> applying it to your production platform. always backup files & data,  
>>> etc.
>>>
>>> It works well visually and validates for both an &amp; or a simple &  
>>> put in the title.
>>>
>>> However, be warned, there seem to be changes in upcoming versions of  
>>> WP re html in the title.
>>>
>>> hope this helps
>>>
>>> / pt
>>>
>>> On 3-okt-2007, at 19:03, ejm wrote:
>>>
>>>> Running WP2.0.11 and EC3.1.0  I am using ec3_get_events() on the
>>>> lefthand sidebar of a wordpress I run with the following code:
>>>>
>>>> ec3_get_events('1000 days',' <a href="%LINK%" title="%DATE% -
>>>> %TITLE%"><b>%DATE%</b><span style="display:none">:</span>
>>>> %TITLE%</a>','');
>>>>
>>>> Whenever there is an ampersand or other nonstandard character in the
>>>> title or link, it causes the page to not validate in XHTML. Not
>>>> knowing a whole lot about PHP, how do I go about encoding an "if,
>>>> else"  to make sure that ampersands and non-standard characters are
>>>> translated to their character entities the way they are in the rest of
>>>> wordpress? (I've searched as best I can for this answer via google but
>>>> it must be a "need to know the answer before asking the question" kind
>>>> of problem)
>>>>
>>>> Please note that omitting ampersands, quotation marks, apostrophes and
>>>> non-standard characters from titles is not necessarily an option. This
>>>> particular wordpress is filled in by someone else who knows even less
>>>> about coding than I do and who will not be able to understand why
>>>> there is a need to omit the characters.
>> 



More information about the EventCalendar mailing list