Vous n'êtes pas identifié(e).
13 février 2024 Sortie de Dotclear 2.29
Pages : 1
je suis sous free et la version php 5.1.3 crée des problèmes. Je propose le patch suivant qui paraît contourné le problème pour les versions de php avant la 5.2.
Les -- sont des lignes supprimées ou modifiées et ++ des lignes ajoutées
[code=php]
Index: _prepend.php
===================================================================
--- _prepend.php (revision 483)
+++ _prepend.php (working copy)
@@ -29,14 +29,27 @@
function registerIeModules($modules)
{
- $modules['import'][] = 'dcImportFlat';
- $modules['import'][] = 'dcImportFeed';
-
- $modules['export'][] = 'dcExportFlat';
-
- if ($GLOBALS['core']->auth->isSuperAdmin()) {
- $modules['import'][] = 'dcImportDC1';
- $modules['import'][] = 'dcImportWP';
- }
+ if (version_compare(PHP_VERSION, '5.2', '>=')) {
+ $modules['import'][] = 'dcImportFlat';
+ $modules['import'][] = 'dcImportFeed';
+
+ $modules['export'][] = 'dcExportFlat';
+
+ if ($GLOBALS['core']->auth->isSuperAdmin()) {
+ $modules['import'][] = 'dcImportDC1';
+ $modules['import'][] = 'dcImportWP';
+ }
+ } else {
+ $tmp = $modules->getArrayCopy();
+ $tmp['import'][] = 'dcImportFlat';
+ $tmp['import'][] = 'dcImportFeed';
+ $tmp['export'][] = 'dcExportFlat';
+
+ if ($GLOBALS['core']->auth->isSuperAdmin()) {
+ $tmp['import'][] = 'dcImportDC1';
+ $tmp['import'][] = 'dcImportWP';
+ }
+ $old = $modules->exchangeArray($tmp);
+ }
}
?>
\ No newline at end of file
[/code]
J'ai remplacé mon patch par le suivant car j'ai constaté que la transformation $params=new arrayobject($params) n'était pas utile dans le corps de la fonction.
Index: class.dc.blog.php
===================================================================
--- class.dc.blog.php (revision 518)
+++ class.dc.blog.php (working copy)
@@ -670,8 +670,8 @@
public function getPosts($params=array(),$count_only=false)
{
# --BEHAVIOR-- coreBlogBeforeGetPosts
- $params = new ArrayObject($params);
- $this->core->callBehavior('coreBlogBeforeGetPosts',$params);
+ $params_object = new ArrayObject($params);
+ $this->core->callBehavior('coreBlogBeforeGetPosts',$params_object);
if ($count_only)
{
@@ -819,7 +819,7 @@
{
# --BEHAVIOR-- corePostSearch
if ($this->core->hasBehavior('corePostSearch')) {
- $this->core->callBehavior('corePostSearch',$this->core,array(&$words,&$strReq,&$params));
+ $this->core->callBehavior('corePostSearch',$this->core,array(&$words,&$strReq,&$params_object));
}
if ($words)
@@ -845,8 +845,8 @@
}
}
- if (!$count_only && !empty($params['limit']) && (intval($params['limit']) > 0)) {
- $strReq .= $this->con->limit($params['limit']);
+ if (!$count_only && !empty($params['limit']) ) {
+ $strReq .= $this->con->limit($params['limit']);
}
if (!empty($params['sql_only'])) {
ce n'est peut-être pas la solution "officielle" mais cela marche sur mon site :
[-] ligne supprimée
[+] ligne ajoutée
dans dotclear_test\inc\core
Index: class.dc.blog.php
===================================================================
--- class.dc.blog.php (revision 483)
+++ class.dc.blog.php (working copy)
@@ -709,7 +709,7 @@
$strReq .=
'FROM '.$this->prefix.'post P '.
'INNER JOIN '.$this->prefix.'user U ON U.user_id = P.user_id '.
- 'LEFT OUTER JOIN '.$this->prefix.'category C ON P.cat_id = C.cat_id ';
+ 'LEFT JOIN '.$this->prefix.'category C ON P.cat_id = C.cat_id ';
if (!empty($params['from'])) {
$strReq .= $params['from'].' ';
@@ -845,7 +845,7 @@
}
}
- if (!$count_only && !empty($params['limit'])) {
+ if (!$count_only && !empty($params['limit']) && (intval($params['limit']) > 0)) {
$strReq .= $this->con->limit($params['limit']);
}
Après quelques recherches complémentaires, ce n'est pas un problème de cache; Cela vient de la version php 5.1 qui est celle de Free mon hébergeur.
Il apparait que dans getPosts, mon script produit une requête SQL qui se termine par limit 0. ce qui conduit à ne jamais avoir de réponse.
cette limite est ajoutée car dans un test : empty($params[limit]) est vrai avec une valeur de 0
=>cela proviendrait d'un bug dans le traitement des objets arrayObject dans PHP version 5.1
Les versions suivantes ne paraissent pas impactées.
J'ai donc patché le script pour ajouter un test complémentaire pour vérifier explicitement que le contenu de la valeur est strictement positif et là tout marche bien.
Petite question: l'utilisation des objets arrayObjects apporte-t-il vraiment beaucoup d'avantages par rapport aux inconvénients constatés sur certaines version ?
Remarque: dans la requete SQL il apparait que l'usage de LEFT OUTER JOIN est compliqué par rapport au besoin d'avoir des infos sur la catégorie en balayant les posts. Je suggère de remplacer par : LEFT JOIN.
De plus les pages n'ont pas de catégories, ce serait pas mal d'en tenir compte dans la requête.
Je suis également sous Free et j'ai le même problème.
Après quelques recherches sur internet, c'est un bug de la version 5.1 avec les objets ArrayObject et malheureusement c'est la version de Free. Il ne parait pas y avoir de contournement à part changer de version.
Merci pour cette réponse rapide qui m'incite à chercher des causes dans les caches et non pas un bug dans une nouvelle version;
Je ne le constate qu'avec Pages
Les navigateurs sont FF et Chrome.
Je n'ai pas pu aller très loin dans mes investigations car l'architecture logicielle nécessite d'y consacrer un temps que je n'ai pas.
Je suis en version 2.4.4 et il apparaît que la liste des pages ne s'affiche plus dans la zone de navigation.
Il apparaît que mes essais de modificationsde position des widgets (pages) n'ont pas marché.
Est-ce un constat connu ? est-ce lié au widget pages ?
Comment affiché une liste des pages existantes dans un widget de la navigation ?
Pages : 1
Vous n'êtes pas identifié(e).