Repository navigation
#1152 [Pocket] feat: a Pocket account per user, and "I just hung up" picks the last recording of the folder - #1153
Merged
evarisk-kilyan merged 1 commit intoOct 22, 2026
Conversation
… up" picks the last recording of the folder Each user can now enter their own Pocket key and folder on a Pocket tab of their user card. The key of the module setup becomes the shared account, used by whoever has no key of their own. The synchronisation walks every configured account, and each mirrored recording remembers the account it comes from, since Pocket only signs its detail and audio for that account. "I just hung up" now only takes recordings filed in the folder of the user's account. When the last one is older than REEDCRM_POCKET_HANGUP_MAX_AGE, nothing is attached and the user is asked to file the call in the folder first. The migration adds llx_reedcrm_pocket_recording.fk_user_pocket and drops the shared key from the test of the synchronisation job. The module has to be activated again.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changements
Compte Pocket par utilisateur
PocketAccount(class/pocketaccount.class.php) : le compte personnel d'un utilisateur (llx_user_param, entité courante, clé chiffrée avecdolEncrypt) ou le compte partagé (constantes de la configuration du module).getForUser(): le compte personnel s'il a une clé, sinon le compte partagé. Une clé personnelle sans dossier ne retombe pas sur le partagé, pour ne jamais rattacher les appels de quelqu'un d'autre.getForRecording(): le compte dont vient un enregistrement.getAllConfigured(): le compte partagé et les comptes personnels qui ont une clé et un dossier.view/pocketrecording/pocketrecording_user.php) : clé, dossier, test de connexion, synchronisation manuelle. Il est accessible à l'utilisateur lui-même s'il a le droit d'écriture sur les enregistrements Pocket, et pour les autres fiches à ceux qui peuvent modifier les utilisateurs. Un encart indique si l'utilisateur travaille sur le compte partagé.core/tpl/reedcrm_pocket_account_setup.tpl.php) et un seul gestionnaire d'actions (reedcrm_pocket_process_account_action()). La page d'admin présente la clé du module comme le « Compte Pocket partagé » et liste les comptes personnels.PocketApin'a plus de repli implicite sur la clé partagée : l'appelant choisit le compte.PocketSynctravaille sur un compte.PocketSync::syncAllAccounts()parcourt tous les comptes configurés, et un compte en erreur n'arrête pas les autres. Le cron l'utilise et rend un rapport par nombre de comptes.fk_user_pocketsurllx_reedcrm_pocket_recording(NULL = compte partagé), posée à la création seulement : un même compte Pocket configuré deux fois ne se « vole » pas ses enregistrements. La fiche de l'enregistrement affiche le compte. Le rafraîchissement et l'audio utilisent le compte de l'enregistrement, parce que Pocket ne les fournit qu'à lui.« Je viens de raccrocher » limité au dossier
findLastRecording()ne prend plus que les enregistrements rangés dans le dossier du compte de l'utilisateur. Les non rangés sont exclus.importLastRecording()refuse un enregistrement plus vieux queREEDCRM_POCKET_HANGUP_MAX_AGE(240 min par défaut) : rien n'est rattaché, et le message demande de ranger l'appel dans le dossier depuis l'application Pocket. L'ancien avertissement affiché après le rattachement disparaît.Migration (
sql/migration/llx_migration_reedcrm_pocket_personal_accounts.sql)fk_user_pocket(et son index dans le.key.sql).testdu cron de synchronisation, figé dansllx_cronjobà l'activation : une équipe où chacun a sa clé laisse la clé partagée vide.Vérifié en local
Sur une instance de test (base clonée), avec le vrai compte Pocket en lecture seule :
dolcrypt:) et relue. Sans clé, l'utilisateur retombe sur le partagé. Avec une clé sans dossier, pas de bouton.dolEncrypt/dolDecryptsortent en « not found » parce que le cœur 24 les a déplacées dansblockedlog/lib/securitycore.lib.php. Le cœur 23.0.0 de la CI les a danscore/lib/security.lib.php, qui est scanné.Fichiers modifiés
class/pocketaccount.class.php(nouveau)view/pocketrecording/pocketrecording_user.php(nouveau)core/tpl/reedcrm_pocket_account_setup.tpl.php(nouveau)sql/migration/llx_migration_reedcrm_pocket_personal_accounts.sql(nouveau)class/pocketapi.class.php,class/pocketsync.class.php,class/pocketcron.class.php,class/pocketrecording.class.phplib/reedcrm_pocketrecording.lib.phpadmin/pocket.php,view/pocketrecording/pocketrecording_card.php,ajax/pocket_audio_url.phpcore/modules/modReedCRM.class.phpsql/pocket/llx_reedcrm_pocket_recording.sql,sql/pocket/llx_reedcrm_pocket_recording.key.sqllangs/fr_FR/reedcrm.lang,langs/en_US/reedcrm.langClose #1152