[Réglé] Comment modifier une ligne via l'extension !

Aide aux auteurs d'extensions pour phpBB

Modérateur : Équipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com
Répondre
Dakin Quelia
Floodeur universel
Floodeur universel
Messages : 21030
Enregistré le : 31 oct. 2006 à 18:33
Localisation : Belgique
Contact :

Comment modifier une ligne via l'extension !

Message par Dakin Quelia »

Bonsoir l'équipe des Extensions :mrgreen:

Voilà, je me mets tout doucement au développement d'extensions... mais bien que j'aie lu déjà quelques sujets sur la question, ça me semble un peu plus pointu.

Par exemple, dans mon MOD "Moderate Own Topics", je modifie certaines lignes (oui je sais, il faut éviter normalement quand c'est possible) dans le fichier "posting.php". Mais via les extensions, c'est un poil plus compliqué à réaliser.

Je souhaiterai, si quelqu'un d'entre-vous, a cela : un exemple de modification d'une ligne.

Si je voudrais modifier via l'extension cette ligne, je fais comment:

Code : Tout sélectionner

        if ($user->data['is_registered'] && $auth->acl_gets('f_edit', 'm_edit', $forum_id))
Dans mon MOD, la ligne aurait été modifiée directement dans le fichier "posting.php" mais le but de l'extension étant de ne pas toucher.

Sincèrement, ça me semble un chouia compliqué c'te affaire. :D

Bien à vous
Aucun support par mail, MP ou msn.
Mes MODs: ici | Mon Github | Mon blogue: Mon blogue | DeviantArt: cliquez ici
Nicofuma
Apprenti-posteur
Apprenti-posteur
Messages : 173
Enregistré le : 19 avr. 2014 à 20:38

Re: Comment modifier une ligne via l'extension !

Message par Nicofuma »

Pour faire, dans la 3.1, avec les extensions, on ne modifie plus une seule ligne de code du core. A la place on utilise un système d’évènements pour injecter du code dans des endroits précis.
Sinon, là sans plus d'informations il est impossible de t'aider. Que cherche tu à faire précisément ? où est cette ligne ?
Membre de la phpBB Development-Team sur phpbb.com - Release manager de la version 3.2
Pas de support par PM
Dakin Quelia
Floodeur universel
Floodeur universel
Messages : 21030
Enregistré le : 31 oct. 2006 à 18:33
Localisation : Belgique
Contact :

Re: Comment modifier une ligne via l'extension !

Message par Dakin Quelia »

Oui, oui je sais qu'on ne modifie plus. :)

Je crois avoir trouvé une "piste" mais je suis pas sûr.

Code : Tout sélectionner

    /**
    * Check whether user can edit in this topic and forum
    *
    * @param object $event The event object
    * @return null
    * @access public
    */
    public function check_moderate_topic($event)
    {
        if (($event['topic_data']['forum_status'] == ITEM_UNLOCKED && $event['topic_data']['topic_status'] == ITEM_UNLOCKED) || ($this->auth->acl_get('m_edit', $event['forum_id']) || $auth->acl_get('f_author', $event['forum_id'])))
        {
            return true;
        }
        else
        {
            return false;
        }
        
        $this->template->assign_vars(array(
            'S_EDIT_REASON'                => ($mode == 'edit' && ($this->auth->acl_get('m_edit', $event['forum_id']) || $auth->acl_get('f_author', $event['forum_id']))) ? true : false,
            'S_LOCK_POST_ALLOWED'        => ($mode == 'edit' && ($this->auth->acl_get('m_edit', $event['forum_id']) || $auth->acl_get('f_author', $event['forum_id']))) ? true : false,
        ));
    } 
Ceci dans le but de pouvoir éditer le message verrouillé et de pouvoir indiquer une raison.

Voici un exemple de mon MOD où il faut ajouter dans "viewtopic.php":

Code : Tout sélectionner

// BEGIN Moderate Own Topic
    if ($auth->acl_get('f_author', $forum_id) && $user->data['user_id'] == $topic_data['topic_poster']) 
    { 
        $edit_allowed = true;
        $delete_allowed = true;
    }
    // END Moderate Own Topic   
Je souhaiterai savoir un peu comment je devrais faire. :)

Je suis sans doute très peu clair. :mrgreen:
Aucun support par mail, MP ou msn.
Mes MODs: ici | Mon Github | Mon blogue: Mon blogue | DeviantArt: cliquez ici
Nicofuma
Apprenti-posteur
Apprenti-posteur
Messages : 173
Enregistré le : 19 avr. 2014 à 20:38

Re: Comment modifier une ligne via l'extension !

Message par Nicofuma »

J'ai l'impression que tu pars du principe que je connais ton mode... du coup je comprends pas ce que tu cherche à faire.
Membre de la phpBB Development-Team sur phpbb.com - Release manager de la version 3.2
Pas de support par PM
Dakin Quelia
Floodeur universel
Floodeur universel
Messages : 21030
Enregistré le : 31 oct. 2006 à 18:33
Localisation : Belgique
Contact :

Re: Comment modifier une ligne via l'extension !

Message par Dakin Quelia »

Oups. C'est vrai. Mea culpa. :oops:

Voici l'url du MOD phpBB 3.0.x: Moderate Own Topics que je tente d'adapter à phpBB 3.1.x via l'extension. ;)
Aucun support par mail, MP ou msn.
Mes MODs: ici | Mon Github | Mon blogue: Mon blogue | DeviantArt: cliquez ici
Nicofuma
Apprenti-posteur
Apprenti-posteur
Messages : 173
Enregistré le : 19 avr. 2014 à 20:38

Re: Comment modifier une ligne via l'extension !

Message par Nicofuma »

Mais j'ai ni le temps ni l'envie de lire ton mod. Explique moi simplement quelle fonctionnalité tu cherche à implémenter.
Membre de la phpBB Development-Team sur phpbb.com - Release manager de la version 3.2
Pas de support par PM
Dakin Quelia
Floodeur universel
Floodeur universel
Messages : 21030
Enregistré le : 31 oct. 2006 à 18:33
Localisation : Belgique
Contact :

Re: Comment modifier une ligne via l'extension !

Message par Dakin Quelia »

En gros, là je cherche à pouvoir faire en sorte que l'utilisateur (auteur du sujet) puisse modérer ses propres sujets via une nouvelle permission: f_moderate_topic.
Aucun support par mail, MP ou msn.
Mes MODs: ici | Mon Github | Mon blogue: Mon blogue | DeviantArt: cliquez ici
Nicofuma
Apprenti-posteur
Apprenti-posteur
Messages : 173
Enregistré le : 19 avr. 2014 à 20:38

Re: Comment modifier une ligne via l'extension !

Message par Nicofuma »

Qu'entends tu par modérer? donner un accès au panneau de modération? donner accès au menu des actions rapides de modération ? donner accès aux boutons éditer, supprimer, verrouiller? donner accès à la validation des messages en attente de validation?

Et plus précisément dans le cas de cette demande, tu cherches à faire quoi précisément ?
Membre de la phpBB Development-Team sur phpbb.com - Release manager de la version 3.2
Pas de support par PM
Dakin Quelia
Floodeur universel
Floodeur universel
Messages : 21030
Enregistré le : 31 oct. 2006 à 18:33
Localisation : Belgique
Contact :

Re: Comment modifier une ligne via l'extension !

Message par Dakin Quelia »

L'auteur du sujet peut juste modérer son sujet (donc les messages des autres utilisateurs). En éditant le message d'un utilisateur, il peut verrouiller et ajouter une raison.

En résumé, il peut donc (toujours dans son sujet):
  • Modifier le contenu d'un message d'un utilisateur,
  • Verrouiller le message modéré d'un utilisateur,
  • Ajouter une raison au message modéré.
Il n'a pas d'accès au panneau de modération.
Aucun support par mail, MP ou msn.
Mes MODs: ici | Mon Github | Mon blogue: Mon blogue | DeviantArt: cliquez ici
Nicofuma
Apprenti-posteur
Apprenti-posteur
Messages : 173
Enregistré le : 19 avr. 2014 à 20:38

Re: Comment modifier une ligne via l'extension !

Message par Nicofuma »

pour l’édition et la suppression d'un message tu as l'évènement core.viewtopic_modify_post_action_conditions

Code : Tout sélectionner

	/**
	* This event allows you to modify the conditions for the "can edit post" and "can delete post" checks
	*
	* @event core.viewtopic_modify_post_action_conditions
	* @var	array	row			Array with post data
	* @var	array	topic_data	Array with topic data
	* @var	bool	force_edit_allowed		Allow the user to edit the post (all permissions and conditions are ignored)
	* @var	bool	s_cannot_edit			User can not edit the post because it's not his
	* @var	bool	s_cannot_edit_locked	User can not edit the post because it's locked
	* @var	bool	s_cannot_edit_time		User can not edit the post because edit_time has passed
	* @var	bool	force_delete_allowed		Allow the user to delete the post (all permissions and conditions are ignored)
	* @var	bool	s_cannot_delete				User can not delete the post because it's not his
	* @var	bool	s_cannot_delete_lastpost	User can not delete the post because it's not the last post of the topic
	* @var	bool	s_cannot_delete_locked		User can not delete the post because it's locked
	* @var	bool	s_cannot_delete_time		User can not delete the post because edit_time has passed
	* @since 3.1.0-b4
	*/
Ensuite, pour verrouiller un post c'est une nouvelle action, donc tu vas devoir implémenter un contrôleur pour ça et ensuite lors de l'édition tu pourra certainement implémenter l'évènement core.posting_modify_cannot_edit_conditions

Code : Tout sélectionner

	/**
	* This event allows you to modify the conditions for the "cannot edit post" checks
	*
	* @event core.posting_modify_cannot_edit_conditions
	* @var	array	post_data	Array with post data
	* @var	bool	force_edit_allowed		Allow the user to edit the post (all permissions and conditions are ignored)
	* @var	bool	s_cannot_edit			User can not edit the post because it's not his
	* @var	bool	s_cannot_edit_locked	User can not edit the post because it's locked
	* @var	bool	s_cannot_edit_time		User can not edit the post because edit_time has passed
	* @since 3.1.0-b4
	*/
Modifié en dernier par Nicofuma le 17 août 2014 à 02:14, modifié 1 fois.
Membre de la phpBB Development-Team sur phpbb.com - Release manager de la version 3.2
Pas de support par PM
Dakin Quelia
Floodeur universel
Floodeur universel
Messages : 21030
Enregistré le : 31 oct. 2006 à 18:33
Localisation : Belgique
Contact :

Re: Comment modifier une ligne via l'extension !

Message par Dakin Quelia »

Je vais étudier ça, merci. ;)
Aucun support par mail, MP ou msn.
Mes MODs: ici | Mon Github | Mon blogue: Mon blogue | DeviantArt: cliquez ici
Répondre

Retourner vers « Aide au développement »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité