Date incohérente avec First Akeeba Subscriptions

  • Posts: 13201
  • Thank you received: 2322
9 years 8 months ago #165885

Donc l'activation se fait bien, mais avec un décalage correspondant au décalage UTC ?

Même si on passe "enable" à 1, Akeeba refait ses vérifications visiblement.
Donc il faut intervenir après les vérifications de Akeeba et donc se baser sur une de leur fonction.

Cela relève alors de la parti Akeeba. Sinon, il faudrait voir pour changer l'heure du serveur.
Je ne me souviens pas si j'ai posé cette question, mais dans les paramètres Joomla le réglage de l'heure était correct ?

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #165949

Bonjour Xavier,

Oui l'activation se fait bien 2 heures après.

Pour un des sites avec vente d'abonnement sur Hikashop (ce qui fonctionne) bien j'ai impérativement besoin de livrer les téléchargements, supports de formation elearning .... immédiatement après le paiement.

Alors qu'elle sont les solutions (sachant que sur akeeba susbscriptions il n'y a plus de support) :
- Forcer certaines dates pour accélérer le traitement d'auto-publication (Pourquoi pas ?),
- Laisser la date joomla en UTC sans utiliser PARIS (C'est gênant pour d'autres traitements)
- Trouver la variable qui déclenche leur traitement d'auto-activation avec un temps de latence qui pourrait être de 0 à ... s . Ce temps de latence pourrait être une varialble de votre plugin akeebasubs.
- S'affranchir du décalage UTC en écrivant enable ==> 1. Est ce que enable est le résultat du traitement ou le déclencheur ?
- Voir ce post http://www.hikashop.com/forum/5-support-en-francais-french-support-/14122-coupon-probleme-dates-heures-fuseau-horaire.html

Merci pour votre aide

Last edit: 9 years 8 months ago by Teophile.

Please Log in or Create an account to join the conversation.

  • Posts: 13201
  • Thank you received: 2322
9 years 8 months ago #166024

Bonjour,

Sinon, dans votre cas vous pouvez potentiellement reculer la date de début de période de 2h afin d'être sûr que l'activation se fasse et laisser la date de fin à l'heure correct.

Cela risque de créer un décallage de 2 heures sur la date de fin donc il faudra potentiellement la changer aussi.
On aura de nouveau le décallage de 2 heures, comme au début, mais ce dernier n'est pas dépendant d'HikaShop.

Pour reculer de deux heures il faut modifier le timestamp de 7200 (secondes).

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #166048

Merci Xavier,

Je pense que tu veux dire qu'il faut modifier la ligne

152					$timestamp = time();

Est ce qu'il faut l'écrire comme ça :
152					$timestamp = 'now +2 hours';

ou comme ça :
152					$timestamp = 'time()+ 7200';

Please Log in or Create an account to join the conversation.

  • Posts: 13201
  • Thank you received: 2322
9 years 8 months ago #166076

Pardon j'aurais dû vous donner le code directement.
Il faut ajouter:

$up = (int)$up - 7200;
Juste avant:
$publish_up = hikashop_getDate($up, 'Y-m-d H:i:s');

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #166085

Bonjour Xavier,

Merci pour votre précision.

J'ai mis en place cette instruction à la ligne précédente de

$publish_up = hikashop_getDate($up,'Y-m-d H:i:s');
Et je me suis assuré que sur les 5 lignes le format était bien :
'Y-m-d H:i:s'
H étant l'Heure, au format 24h, avec les zéros initiaux soit de 00 à 23

Comme le montre l'image ci-après Akeeba Subsriptions V4.11 (Alpha) à bien fonctionné :



Je vais donc poursuivre mes tests avec cette version, à savoir :
1 - Le bon fonctionnement d'Akeeba Subsriptions avec les heures de 12 H 00 à 23 H 59.
2 - L'auto activation d'un abonnement suivant lors d'un renouvellement anticipé par rapport à l'heure de fin de l'abonnement précédent.

Heureux de vous aider à fiabiliser votre plugin akeebasubs

Bonne journée.

Attachments:
Last edit: 9 years 8 months ago by Teophile.

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #166207

Bonjour,

Résultat du test N°2 - L'auto activation d'un abonnement suivant lors d'un renouvellement anticipé par rapport à l'heure de fin de l'abonnement précédent.



Solution : Par rapport aux lignes actuelles :
				  	$up = (int)$up - 7200;
				  	$publish_up = hikashop_getDate($up,'Y-m-d H:i:s');
					$publish_down = hikashop_getDate($down,'Y-m-d H:i:s');

Est ce qu'il faut ajouter cette ligne pour passer en UTC la fin de l'abonnement soit :
				  	$up = (int)$up - 7200;
				  	$publish_up = hikashop_getDate($up,'Y-m-d H:i:s');
                                        $down = (int)$up - 7200;
					$publish_down = hikashop_getDate($down,'Y-m-d H:i:s');

Merci de votre réponse pour que j'applique cette modif. avant de faire le test N° 1.
Et est-ce qu'il faut que j'applique cette modif à ces lignes ?
Ligne 179	                                 $now = hikashop_getDate(time(),'Y-m-d H:i:s');
Ligne 241                                      $publish_up = hikashop_getDate($up,'Y-m-d H:i:s');
Ligne 242					$publish_down = hikashop_getDate($down,'Y-m-d H:i:s');

A mon avis pour les lignes 241 et 242 je pense que NON parce qu'il s'agit des mêmes variables, ainsi que pour la ligne 179 puisqu'il s'agit la création de la date de l'abonnement.

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 81513
  • Thank you received: 13068
  • MODERATOR
9 years 8 months ago #166221

Bonjour,

Xavier étant le spécialiste des questions sur Akeeba Subscriptions de notre coté sachant qu'il a développé l'intégration de A à Z, je vais le laisser vous répondre et peut être améliorer le plugin si nécessaire. Le principal, c'est que cela fonctionne pour vous, donc faites les tests qu'il faut pour rajouter et enlever des heures là où il faut pour que cela marche sur votre serveur.
Par contre, il est en vacances jusqu'au 11 Août, donc il va falloir attendre son retour pour vraiment voir si une modificaton du plugin s'impose mais d'après les tests qu'il a fait jusqu'à maintenant pour vous aider, il n'a pas réussi à reproduire de soucis de décalage horaire avec la version publiée sur notre site.

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #166257

Bonsoir Nicolas,

Je poursuis mes tests avec l'Heure, au format 24h, avec les zéros initiaux soit de 00 à 23 sur mon site de tests hébergé chez infomaniak.
Je veux mettre à plat ce problème et je pense que nous sommes en bonne voie parce que j'ai besoin de vendre des abonnements à la journée voire dans le futur à l'heure.

J'attendrai le 11 Août sans problème et bonnes vacances à Xavier.

Merci à toute l'équipe Hikashop et je vais vous rendre compte de mes 2 tests décrits plus haut au fur et à mesure sachant que je ne suis pas un programmeur en PHP.

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #166909

Bonjour,

J'ai poursuivi mes tests et j'en suis arrivé à mettre en place la solution suivante:

	$timestamp = time();
					if(!$old){
						//New sub
						$up = time();
					  	$up = (int)$up - 7200;
						$down = time() + (86400 * $level_duration * $result->order_product_quantity);
					       $down = (int)$down - 7200;
					}
					else{
						//add sub after the old sub
						if(strtotime($old->publish_down) < time()){
							$up = time();
						  	$up = (int)$up - 7200;
							$down = time() + (86400 * $level_duration * $result->order_product_quantity);
						         $down = (int)$down - 7200;
						}else{
							$up = strtotime($old->publish_down);
							$down = strtotime($old->publish_down) + (86400 * $level_duration * $result->order_product_quantity);
						}
					}

au lieu de :
	$timestamp = time();
					if(!$old){
						//New sub
						$up = time();
						$down = time() + (86400 * $level_duration * $result->order_product_quantity);
					}
					else{
						//add sub after the old sub
						if(strtotime($old->publish_down) < time()){
							$up = time();
							$down = time() + (86400 * $level_duration * $result->order_product_quantity);
						}else{
							$up = strtotime($old->publish_down);
							$down = strtotime($old->publish_down) + (86400 * $level_duration * $result->order_product_quantity);
						}
					}


Cette solution me permet d'avoir :
- l'activation sans décalage avec les heures H: au format 24h, avec les zéros initiaux 00 à 23 alors les heures de début et fin sont en heure UTC dans la BD.
- les 3 modes de fonctionnement corrects en utilisant votre instruction $xxx =(int)$up - 7200; à savoir :
pas d'ancien abonnement if(!$old),
date de l'ancien abonnement plus ancienne $old->publish_down
et date de l'ancien abonnement plus récente
- et la date de création à l'heure locale.$now = hikashop_getDate(time(),'Y-m-d H:i:s');

J'ai mis en application ces modifs et suite à vos remarques, j'espère les voir intégrées dans la prochaine version de votre plugin pour faciliter les MàJ.
D'autre part est-ce qu'il vous serait possible de compléter l'instruction $xxx = (int)$up - 7200; par une instruction qui prendrait en compte automatiquement le décalage à partir de configuration.php de joomla ? Ceçi rendrait la solution entièrement compatible à la fois avec configuration.php de joomla et Akeeba Subsription


Merci de votre aide

Teophile

Last edit: 9 years 8 months ago by Teophile.

Please Log in or Create an account to join the conversation.

  • Posts: 26000
  • Thank you received: 4004
  • MODERATOR
9 years 8 months ago #166958

Bonjour,

Joomla possède une option de configuration lui permettant de connaitre le décallage horaire du serveur et donc de faire des ajustements lors de l'affichage de celle ci.

$jconfig = JFactory::getConfig();
$timeoffset = $jconfig->getValue('config.offset');
Vous devriez retrouver cette valeur (de 7200) dans la configuration, permettant ainsi d'avoir un code plus générique.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #166973

Bonjour

Je suis proche de nul en PHP, alors pourriez-vous s'il vous plait m'indiquer :
- Quelle la variable qui correspond au décalage 7200. Est-ce $timeoffset ?
- Où est-ce que je dois placer ces 2 lignes par rapport à la ligne $timestamp = time(); par exemple ?

Allez-vous inclure ces modif dans votre plugin d'origine ?

Merci de vos réponses

Please Log in or Create an account to join the conversation.

  • Posts: 26000
  • Thank you received: 4004
  • MODERATOR
9 years 8 months ago #167056

Bonjour,

Xavier s'occupera de faire les tests à son retour afin de voir si oui ou non ce problème est présent chez tout le monde ou s'il est spécifique à votre hébergement/configuration.
Il faut en effet connaitre la valeur de "$timeoffset" afin de déterminer si la valeur est bien 7200 ou non (nous fournissant par la même occasion, plus d'information sur le fonctionnement d'akeeba sub).

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #167377

Bonjour,

Est-ce-qu'il vous serait possible de compléter vos instructions pour connaitre la valeur de "$timeoffset" afin de déterminer si la valeur est bien 7200 ou non.
J'ai essayé de faire fonctionner vos instructions :

$jconfig = JFactory::getConfig();
$timeoffset = $jconfig->getValue('config.offset');
dans votre plugin mais je n'y arrive pas.
Comme je vous l'ai dit mes connaissance PHP sont trop limitées.

Merci d'avance

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #167438

Bonjour,

Je n'aime pas rester sur un semi succès, alors après de nombreuses recherches sur les forums j'ai peut-être trouver une piste de solution.
En tous les cas, j'ai simplement écrit :

$timeoffset *60*60
au lieu de
7200

Et cela a fonctionné une fois alors je vais poursuivre mes tests d'abonnement journalier en utilisant l'UTC avec akeeba sub.

Il me semble que par déduction logique issue de ce post la variable $timeoffset en H doit prendre sa valeur dans un autre traitement de Hikashop ou de Joomla 3.xx ou ???

Merci de votre aide pour valider cette solution qui solderai avec succès ce post.

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #167446

Bonjour

Je me suis réjouis trop vite, ça ne marche pas.

Je n'arrive pas à mettre en place vos instructions suivantes

$jconfig = JFactory::getConfig();
$timeoffset = $jconfig->getValue('config.offset');
pour remplacer 7200 par $timeoffset

Alors je me résous à attendre votre aide

Last edit: 9 years 8 months ago by Teophile.

Please Log in or Create an account to join the conversation.

  • Posts: 26000
  • Thank you received: 4004
  • MODERATOR
9 years 8 months ago #167474

Bonjour,

L'idée est déjà de faire un affichage de la variable $timeoffset.
Vous pouvez par exemple faire un "var_dump" ou carrément un " die($timeoffset) " (qui va vous afficher la valeur et arrêter tout le reste du PHP).
Mais le plus simple reste encore d'override une vue simple d'HikaShop et de poser le petit bout de code pour faire un var_dump du $timeoffset et ainsi connaitre la valeur qu'elle contient.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #167777

Bonsoir,

J'ai passé plusieurs heures sans succès à tenter de mettre au point le fonctionnement de :

$jconfig = JFactory::getConfig();
$timeoffset = $jconfig->getValue('config.offset');
var_dump ($timeoffset )
pour remplacer - 7200 par - $timeoffset et j'ai toujours la valeur de la variable $timeoffset = null avec des erreur de notice.

J'ai placé ces lignes à différents endroits mais rien ne fonctionne. J'attend vraiment une aide plus précise de votre part pour compléter ces lignes qui fonctionnent très bien avec - 7200.
	$timestamp = time();
					if(!$old){
						//New sub
						$up = time();
					  	$up = (int)$up - 7200;
						$down = time() + (86400 * $level_duration * $result->order_product_quantity);
					       $down = (int)$down - 7200;
					}
					else{
						//add sub after the old sub
						if(strtotime($old->publish_down) < time()){
							$up = time();
						  	$up = (int)$up - 7200;
							$down = time() + (86400 * $level_duration * $result->order_product_quantity);
						         $down = (int)$down - 7200;

Merci de votre aide pour solder ce post qui m'a appris beaucoup de chose.

Please Log in or Create an account to join the conversation.

  • Posts: 26000
  • Thank you received: 4004
  • MODERATOR
9 years 8 months ago #167779

Bonjour,

J'ai regardé plus en détails le code de Joomla et il semblerait que la façon de récupérer le time offet soit différent dans Joomla 3.

$jconfig = JFactory::getConfig();
$timeoffset = $jconfig->get('offset');
Le code que je vous ai donné ne fonctionne donc qu'avec Joomla 1.5 et 2.5 (avec la rétro-compatibilité).
Désolé pour cette erreur de ma part, j'avais oublié de regardé votre version de Joomla et j'avais totalement zappé que le système de time offset avait changé.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

Please Log in or Create an account to join the conversation.

  • Posts: 276
  • Thank you received: 17
9 years 8 months ago #168066

Bonsoir,

J'ai placé ces lignes de code avant le $timestamp = time() dans le fichier akeebasubs.php

						'zip' => $fullOrder->billing_address->address_post_code, // ZIP/Postal Code
						'country' => $country, // Two letter ISO country code, e.g. 'US' for the Unites States of America
						'params' => json_encode(array()) // Leave it as it is here
					);
				// ajout code pour récupérer valeur timeoffset
				$jconfig = JFactory::getConfig();
				$timeoffset = $jconfig->get('offset');
				
				  $timestamp = time();
				  if(!$old){
						//New sub
						$up = time();
					  	$up = (int)$up - $timeoffset;
						$down = time() + (86400 * $level_duration * $result->order_product_quantity);
					  	$down = (int)$down - $timeoffset;
					}
					else{
						//add sub after the old sub
						if(strtotime($old->publish_down) < time()){
							$up = time();
						  	$up = (int)$up - $timeoffset;
							$down = time() + (86400 * $level_duration * $result->order_product_quantity);
						  	$down = (int)$down - $timeoffset;
						}else{
							$up = strtotime($old->publish_down);
							$down = strtotime($old->publish_down) + (86400 * $level_duration * $result->order_product_quantity);
						}

Conclusions :
1 - Pas de blocage du programme mais la valeur - $timeoffset ne fonctionne pas. Dès que je met un var_dump($timeoffset) ça bloque le déroulement du programme.
2 - Alors que - 7200 donne un bon résultat .
Pourquoi ???

Alors merci de votre aide ..

Last edit: 9 years 8 months ago by Teophile.

Please Log in or Create an account to join the conversation.

Time to create page: 0.123 seconds
Powered by Kunena Forum