Notice: Undefined property: Friendica\App::$performance in /var/www/virtual/haeder.net/friendica/htdocs/addon/rendertime/rendertime.php on line 28

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/haeder.net/friendica/htdocs/addon/rendertime/rendertime.php:28) in /var/www/virtual/haeder.net/friendica/htdocs/src/App.php on line 1422

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/haeder.net/friendica/htdocs/addon/rendertime/rendertime.php:28) in /var/www/virtual/haeder.net/friendica/htdocs/src/App.php on line 1423

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/haeder.net/friendica/htdocs/addon/rendertime/rendertime.php:28) in /var/www/virtual/haeder.net/friendica/htdocs/src/App.php on line 1430

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/haeder.net/friendica/htdocs/addon/rendertime/rendertime.php:28) in /var/www/virtual/haeder.net/friendica/htdocs/src/App.php on line 1431

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/haeder.net/friendica/htdocs/addon/rendertime/rendertime.php:28) in /var/www/virtual/haeder.net/friendica/htdocs/src/App.php on line 1432

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/haeder.net/friendica/htdocs/addon/rendertime/rendertime.php:28) in /var/www/virtual/haeder.net/friendica/htdocs/src/App.php on line 1433
Roland's Friendica Network (profile)
f.haeder.net

Latest develop fails to run SQL update

@Friendica Developers I have an error while the db update was running, Friendica was sending me an email about it.
The friendica developers released update 1274 recently,
but when I tried to install it, something went terribly wrong.
This needs to be fixed soon and I can't do it alone. Please contact a
friendica developer if you can not help me on your own. My database might be invalid.
The error message is
Errors encountered performing database changes: ALTER IGNORE TABLE `item` DROP INDEX `contactid_allowcid_allowpid_denycid_denygid`, DROP INDEX `uid_authorlink`, ...


On console I get this error:
Error 1296 occurred during database update:
Got error 64 'Temp file write failure' from InnoDB


I'm now back at my old commit so the instance can work again.
@Friendica Developers bug develop friendica update
Okay, fixed here. The flooded `/tmp/` has caused this, to less sleep to figure this out by myself ... :-/ Thank you both again! @Hyp??li????e Pet????van (he/him) @Rebeka Catalina
Quick notice: Notice: Undefined index: url in /home/quix0r/NetBeansProjects/friendica/src/Object/Post.php on line 359. Maybe it does not exist at all in item table? @Hyp??li????e Pet????van (he/him) @Michael Vogel or maybe #tpyo ? uri does exist.
Yupp, no url there.
Now, after an update my right-side pane is gone. I found out that a style.css with display:none hid it.
Found a E_NOTICE here: Notice: Undefined index: title in /var/www/../src/Content/Text/BBCode.php on line 565
And another one: Notice: Undefined index: term in /var/www/../mod/filer.php on line 18
And 4 more:
Notice: Undefined property: stdClass::$type in /var/www/../src/Content/OEmbed.php on line 329
Notice: Undefined property: stdClass::$html in /var/www/../src/Content/OEmbed.php on line 169
Notice: Undefined property: stdClass::$type in /var/www/../src/Content/OEmbed.php on line 170
Notice: Undefined property: stdClass::$type in /var/www/../src/Content/OEmbed.php on line 171
Notice: Undefined property: stdClass::$type in /var/www/../src/Content/OEmbed.php on line 205
@Hyp??li????e Pet????van (he/him) Do you have any ideas of fixing them? I would try property_exists() where needed.
empty() or isset() work as well.
I find mine more clear ... ;-)
And I think I remember that it is lesser recommended for properties of stdClass objects.

And yet another E_NOTICE here: Notice: Undefined index: verb in /var/www/../src/Core/NotificationsManager.php on line 281. It origins from the system notification list view (/notifications/system.
@Hyp??li????e Pet????van (he/him) So, how to address this? Normally, I would check if the array element exists and if not, throw an exception. But that seems to be not wanted, it would however make it traceable where the error origins from (xdebug needs to be properly configured).
You really are a Java developer. :-D

I mostly just see if it is critical if a value isn't as expected. And I prefer failing silently - or at least without the danger of data loss.

Paradigms

:-) #Java teaches you to take really good care of your type-hints. But this will now lead away from the original scope of this thread, I guess.
#Java java paradigm php7 strong-types type-hints weak-types
And 2 more E_NOTICE:

Notice: Undefined index: emailcc in /var/www/../mod/item.php on line 192
Notice: Undefined variable: postopts in /var/www/../mod/item.php on line 632
Branch is ready, going to make a PR.
:D I should also fix the 2nd one ...
PR updated (and rebased ... ;) ).
And one more in addons: Notice: Undefined index: allow_api in /var/www/../addon/xmpp/xmpp.php on line 98
And even more while connecting to a #diaspora account:
Notice: Undefined index: cancel in /var/www/../mod/follow.php on line 22
Notice: Undefined index: addr in /var/www/../src/Protocol/Diaspora.php on line 2921
Notice: Undefined index: uprvkey in /var/www/../src/Protocol/Diaspora.php on line 3172
Notice: Undefined index: addr in /var/www/../src/Protocol/Diaspora.php on line 2921
PR #5404 is out to address these.
#xdebug let suppressed warnings/errors scream:
SCREAM:  Error suppression ignored for
Warning: file_get_contents(/../phptmp/friendica/daemon.pid): failed to open stream: No such file or directory in /../friendica/bin/daemon.php on line 67

This whole thing can be done otherwise:
- remove the @ from it
- use file_exists() or is_readable() to check if file exists
- if so, read it, otherwise skip further parts

This leads to better code. In addition to that, maybe this particular thing can be encapsulated away in a class?
So, I think I rewrite this part a bit.
Some more (still there?) while requesting to follow an OStatus account:
Notice: Undefined index: body in /var/www/../src/Protocol/OStatus.php on line 1163
Notice: Undefined index: title in /var/www/../src/Protocol/OStatus.php on line 1916
Notice: Undefined index: guid in /var/www/../src/Protocol/OStatus.php on line 1925
Notice: Undefined index: tag in /var/www/../src/Model/Item.php on line 2787
Notice: Undefined index: tag in /var/www/../src/Model/Item.php on line 2796
Notice: Undefined index: attach in /var/www/../src/Protocol/OStatus.php on line 1372


And one from when the daemon is running:
Notice: Undefined offset: 0 in /../src/Model/GContact.php on line 970
Gee, getting more: ( ! ) Notice: Undefined index: marital in /../mod/profiles.php on line 250 and also later for line 314.
Interesting, that $item has really no element 'body':Image/photo cc !Friendica Developers
:-( Comments are not getting to mentioned forums ... Makes sense, of course. :-) Because the main post is not propagated. cc @Hyp☀️li🌷e Pet🌸van (he/him) @Michael Vogel
Editing a photo causes E_NOTICEs:

Notice: Undefined index: group_allow in /var/www/../mod/photos.php on line 356
Notice: Undefined index: contact_allow in /var/www/../mod/photos.php on line 357
Notice: Undefined index: group_deny in /var/www/../mod/photos.php on line 358
Notice: Undefined index: contact_deny in /var/www/../mod/photos.php on line 359
Another one when I view notifications:
Notice: Undefined index: verb in /var/www/../src/Core/NotificationsManager.php on line 276
Here, $it misses that element.

"Infinite" scroll need overworking

When the small "addon" is enabled, more content is being loaded when users scroll down. So far so good. But if they scroll more down, more is being added to the DOM document which results in a growing browser procress and a slow-down due to the device has to handle more content.

I would prefer that the content in opposite scroll direction is being removed to allow smooth usage of the device (desktop PCs with low RAM will suffer greatly). If the user changes scroll direction, again content on the opposite direction is being removed.
browser bug friendica infinite-scroll slow-down
Maybe there is somewhere a #jquery #plugin around? Then we don't need to re-invent the wheel ...
Yesterday I had a look at the jquery plugins you mentioned. https://github.com/pixelcog/parallax.js is not about infinite scrolling. It is about to have a prallax effect. And https://github.com/fredwu/jquery-endless-scroll doesn't do that much more than our implementation already do (OK it can load previous pages).

The problem isn't to load next or previous pages through ajax. That would be very simple.

The problems we would have to deal with are:

  • which posts belong e.g. to page 1 (which should be removed from the screen when we scroll e.g from page 2 to page 3)
  • how do we deal with the situation when new posts arrive (e.g. the user would be on page 3 - a new post does arrive, and he/she scrolls to page 4 - I guess in this situation the first post of page 4 would be missing)
  • how do we deal with comments on posts (wich would move the post on top of the first place



The whole topic is very complex. I think this is not something which is easy to implement. I don't want to say that it is unsolvable, I just want to highlight that this "extended" infinite scrolling is more than just adding and removing content
Just using a request parameter, like "page" is not helpful, then you will may see duplicate posts as "page=2" will change when new posts are being added. #GNUSocial uses here something like "lastPostId" which is the id number of the last post that has been loaded and so displayed.

Maybe I better make an example on how I think how it can be done:

1) Load page and embed "last post id" directly into page
2) Send request out: "POST /ajax/network/?lastPostId=12345&page=current"
3) This returns the posts (lastPostId - postsPerPage) that just be displayed right away including a new lastPostId
4) The user scrolls up, send another request out: "POST /ajax/network/?lastPostId=12335&page=up" (I assumed 10 posts per page and again a new lastPostId is included)
5) On any of those requests, check that more can be loaded, if not, the new lastPostId should be empty, indicating that no more can beloaded
6) Similar when the user scrolls down, then &page=down is given

Maybe not perfect but newly added posts can be found out the same way:
"POST /ajax/network/?lastPostId=12345&page=up (as newer posts are added on top)

The JavaScript then needs to handle empty lastPostId (when < postsPerPage has been found) and removing/adding content.

Fritz!Fon C4 stays white or flickers

I have here a Fritz!Fon C4 (a softphone) with updated firmware. If I know insert batteries, the screen sometimes turn white or flickers but the phone seems to start and connect but remains unusable.

Any ideas besides removing battery and re-inserting it? I already filled a ticker with #AVM.
#AVM avm bug c4 problem softphone
So far not much progress. Also their suggestions on how to fix it did not work, the display remain ~99.9% white and only one time after a reset, I saw the blue start screen which became mixed up again after some seconds.

So I decided to wrote a complain to them.

poller.php multiple launched, eating up CPU

I wonder if the poller is really needed or if somehow the cron jobs can be executed without it? I had setup as it should be:

*/10 * * * * cd ${HOME}/friendica/htdocs/ && /usr/bin/php include/poller.php


If I let it runs, multiple php processes are forked eating up my CPU and slowing down the server. Currently it seems to work without it (and much faster).
#cron bug fadmin friendica poller
Maybe yours is better as it forks lesser processes. It was dirty hacking anyway. :)
It now seems to crash with "Terminated":

> cron_poller.sh: line 15: 32661 Terminated nice --adjustment=19 php ./include/poller.php

Zeile 15 ist genau der Befehl der hinter "Terminated" (TERM) steht.

The class does not have a descriptor, or a descriptor that does not use inheritance or uses a ClassExtractor for inheritance

The mentioned message still comes when you have @Inheritance (strategy = InheritanceType.TABLE_PER_CLASS) in your abstract (not-persisted) with latest version of #Payara / #Glassfish which both contains #EclipseLink by default.

Strange that they did not yet fix it. And unfortunally migrating to e.g. #WilfFly (which uses other #JPA) seems not so easy as you may think.

Currently I have no idea how to fix it and sadly I need the strategy as this #JavaEE application is written for an existing database layout.

Someone may have to raise a support ticket mentioning that the #bug is still there.

Reposted with #public visibility. Sorry for double message.
#Payara #Glassfish #EclipseLink #WilfFly #JPA) #JavaEE #bug #public bug eclipselink javaee jpa payara
Nothing new here so far. Only they asked me to write a test-case for them ... :-(

Glasfish / Payara sometimes throw ClassCastException

I sometimes get this error message after I have redeployed (also with in-place deployment) a WAR project and have tried to use a JSF form:
Warnung: StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
java.lang.ClassCastException: Object is not of remote type java.rmi.Remote
at com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:254)
at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:150)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$12.read(DynamicMethodMarshallerImpl.java:352)
at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readResult(DynamicMethodMarshallerImpl.java:482)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:201)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:150)
at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:226)
at com.sun.ejb.codegen._GenericEJBHome_Generated_DynamicStub.create(com/sun/ejb/codegen/_GenericEJBHome_Generated_DynamicStub.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.ejb.EJBUtils.lookupRemote30BusinessObject(EJBUtils.java:421)
at com.sun.ejb.containers.RemoteBusinessObjectFactory.getObjectInstance(RemoteBusinessObjectFactory.java:75)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
at com.sun.enterprise.naming.impl.SerialContext.getObjectInstance(SerialContext.java:527)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:487)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at javax.naming.InitialContext.lookup(InitialContext.java:417)
at de.chotime.jreports.beans.contact.ReportsContactWebSessionBean.<init>(ReportsContactWebSessionBean.java:237)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:119)
at org.jboss.weld.injection.ConstructorInjectionPoint.invokeAroundConstructCallbacks(ConstructorInjectionPoint.java:92)
at org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:78)
at org.jboss.weld.injection.producer.AbstractInstantiator.newInstance(AbstractInstantiator.java:28)
at org.jboss.weld.injection.producer.BasicInjectionTarget.produce(BasicInjectionTarget.java:116)
at org.jboss.weld.injection.producer.BeanInjectionTarget.produce(BeanInjectionTarget.java:180)
at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:158)
at org.jboss.weld.util.bean.IsolatedForwardingBean.create(IsolatedForwardingBean.java:45)
at org.jboss.weld.context.AbstractContext.get(AbstractContext.java:96)
at org.jboss.weld.context.PassivatingContextWrapper$AbstractPassivatingContextWrapper.get(PassivatingContextWrapper.java:76)
at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:101)
at org.jboss.weld.bean.ContextualInstanceStrategy$CachingContextualInstanceStrategy.get(ContextualInstanceStrategy.java:178)
at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:67)
at org.jboss.weld.event.ObserverMethodImpl.getReceiver(ObserverMethodImpl.java:339)
at org.jboss.weld.event.ObserverMethodImpl.getReceiverIfExists(ObserverMethodImpl.java:326)
at org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:284)
at org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:265)
at org.jboss.weld.event.ObserverNotifier.notifySyncObservers(ObserverNotifier.java:271)
at org.jboss.weld.event.ObserverNotifier.notify(ObserverNotifier.java:260)
at org.jboss.weld.event.EventImpl.fire(EventImpl.java:89)
at de.chotime.jreports.beans.login.ReportsUserLoginWebSessionBean.doUserLogin(ReportsUserLoginWebSessionBean.java:170)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.el.ELUtil.invokeMethod(ELUtil.java:332)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:537)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
at com.sun.el.parser.AstValue.invoke(AstValue.java:283)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:526)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
at java.lang.Thread.run(Thread.java:745)


My previous #JavaEE trainer said it is a bug in #Glassfish / #Payara but it starts to become more anoying. Does someone know something to prevent this from happening?

Yes, filling out a bug report may help. :-) But maybe there is a trick or so?

The most "outter" exception says:
javax.servlet.ServletException: javax.faces.view.facelets.FaceletException: javax.naming.NamingException: Lookup failed for 'java:global/jreports-ejb/contact!org.mxchange.jcontacts.contact.ContactSessionBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: ejb ref resolution error for remote business interfaceorg.mxchange.jcontacts.contact.ContactSessionBeanRemote [Root exception is java.lang.ClassCastException]]


The interface in question (see the JNDI string end) "ContactSessionBeanRemote" is annotated with @Remote (javax.ejb.Remote) and not java.rmi.Remote as the exception says.

It is declared as following:
public interface ContactSessionBeanRemote extends Serializable {
...
}
#JavaEE #Glassfish #Payara bug glassfish javaee payara

Local "connect" not working

I think I found a #bug in #friendica, latest develop code. I have rebased my branch to latest changes and revert all of my is_filled_array() changes to dba::is_result().

So what I did was I created an account for my wife and tried to connect to but all I got was a redirect and no entry in table 'intro'. There is also no entry of her account in 'fcontact'.

So what is wrong?
#bug #friendica bug develop friendica
Ah, validate_url() misses to check $h with is_array(). Please try to cherry-pick my latest commits in branch rhaeder-develop (changed develop branch).
Ah, validate_url() misses to check $h with is_array(). Please try to cherry-pick my latest commits in branch rhaeder-develop (changed develop branch).
newer older