7

Gestion du fil des campagnes

Code

Éditez le fichier models/sms.inc :

  1. require_once 'models/thread.inc';
  1. function sms_create_campaign_thread($user_id, $lang, $thread_name, $thread_title) {
  2.     global $supported_languages;
  3.  
  4.     $thread_type='campaign';
  5.  
  6.     $r = thread_create($lang, $user_id, $thread_name, $thread_title, $thread_type);
  7.  
  8.     if (!$r) {
  9.         return false;
  10.     }
  11.     extract($r);    /* thread_id thread_number */
  12.  
  13.     foreach ($supported_languages as $clang) {
  14.         $r = thread_set($clang, $thread_id, $thread_name, $thread_title, $thread_type, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false);
  15.  
  16.         if (!$r) {
  17.             $sql="DELETE FROM $tabthread WHERE thread_id=$thread_id";
  18.  
  19.             $r = db_delete($sql);
  20.  
  21.             return false;
  22.         }
  23.     }
  24.  
  25.     return true;
  26. }
  1. function sms_delete_campaign_thread($user_id) {
  2.     $thread_id=sms_get_user_campaign_id($user_id);
  3.  
  4.     if (!$thread_id) {
  5.         return false;
  6.     }
  7.  
  8.     if (!thread_delete($thread_id)) {
  9.         return false;
  10.     }
  11.  
  12.     return true;
  13. }
  1. function sms_rename_campaign_thread($user_id, $thread_name, $thread_title) {
  2.     $sqlname=db_sql_arg($thread_name, true);
  3.     $sqltitle=db_sql_arg($thread_title, true, true);
  4.  
  5.     $tabthread=db_prefix_table('thread');
  6.     $tabthreadlocale=db_prefix_table('thread_locale');
  7.  
  8.     $sql="UPDATE $tabthreadlocale SET title=$sqltitle, name=$sqlname WHERE thread_id=(SELECT thread_id FROM $tabthread WHERE thread_type='campaign' AND user_id=$user_id)";
  9.  
  10.     $r = db_update($sql);
  11.  
  12.     if ($r === false) {
  13.         return false;
  14.     }
  15.  
  16.     return true;
  17. }

Éditez le fichier actions/campaigneditsummary.php :

  1.             if ($action == 'create') {
  2.                 node_create_content($clang, $node_id, 'sms');
  3.             }
  1.     $viewsms=$thread_contents ? url('campaign', $clang) . '/'. $thread_id . '?' . 'slang=' . $lang : false;

Éditez le fichier actions/campaigneditpage.php :

  1.     $viewsms=$node_name ? url('campaign', $clang) . '/'. $thread_id . '/' . $node_id : false;

Éditez le fichier blocks/searchlist.php :

  1.         else {
  2.             $thread_url=url($thread_type, $lang) . '/'. ($thread_type == 'campaign' ? $thread_id : $thread_name);
  3.         }
  1.         $link_url=$thread_url . '/' . ($thread_type == 'campaign' ? $node_id : $node_name);

Éditez le fichier blocks/register.php :

  1. require_once 'models/sms.inc';
  1.     $with_info=true;
  2.  
  3.     $with_client=$is_admin;
  1.     $is_client=true;
  1.             if ($with_client) {
  2.                 $is_client=isset($_POST['register_isclient']) ? (readarg($_POST['register_isclient']) == 'on' ? true : false) : false;
  3.             }
  1.             if ($with_info and !($with_client and !$is_client)) {
  1.             if ($with_info and !($with_client and !$is_client)) {
  1.             if ($is_client) {
  2.                 $r = sms_create_campaign_thread($user_id, $locale, $name, "$firstname $lastname");
  3.  
  4.                 if (!$r) {
  5.                     $internal_error=true;
  6.                     break;
  7.                 }
  8.  
  9.                 user_set_role($user_id, 'client');
  10.  
  11.                 $newsletter=true;
  12.             }
  1.     $output = view('register', $lang, compact('token', 'connectbar', 'with_captcha', 'with_name', 'with_website', 'with_timezone', 'with_password', 'with_newsletter', 'with_confirmation', 'name', 'mail', 'website', 'timezone', 'password', 'with_client', 'is_client', 'with_info', 'lastname', 'firstname', 'newsletter', 'confirmed', 'account_created', 'errors', 'infos'));

Modifiez la vue register en français et en anglais dans les fichiers views/fr/register.phtml et views/en/register.phtml :

  1. <?php if ($with_client): ?>
  2. <p><input type="checkbox" name="register_isclient" id="register_isclient" title=""<?php if ($is_client): ?> checked="checked"<?php endif; ?> />&nbsp;Je veux créer un compte client</p>
  3. <?php endif; ?>
  1. <?php if ($with_client): ?>
  2. <p><input type="checkbox" name="register_isclient" id="register_isclient" title=""<?php if ($is_client): ?> checked="checked"<?php endif; ?> />&nbsp;I want to create a client account</p>
  3. <?php endif; ?>

Éditez le fichier blocks/useredit.php :

  1.     $user_role = user_get_role($user_id);
  2.  
  3.     $is_client=$user_role && in_array('client', $user_role);
  4.  
  5.     $with_info=$is_client;
  1.                 if ($is_owner) {
  2.                     $_SESSION['user']['lastname'] = $user_lastname;
  3.                     $_SESSION['user']['firstname'] = $user_firstname;
  4.                 }
  5.  
  6.                 if ($is_client) {
  7.                     require_once 'models/sms.inc';
  8.  
  9.                     $r = sms_rename_campaign_thread($user_id, $user_name, "$user_firstname $user_lastname");
  10.  
  11.                     if (!$r) {
  12.                         $internal_error=true;
  13.                         break;
  14.                     }
  15.                 }
  1.             $r = user_delete($user_id);
  2.  
  3.             if (!$r) {
  4.                 $internal_error=true;
  5.                 break;
  6.             }
  7.  
  8.             if ($is_client) {
  9.                 require_once 'models/sms.inc';
  10.  
  11.                 $r = sms_delete_campaign_thread($user_id);
  12.  
  13.                 if (!$r) {
  14.                     $internal_error=true;
  15.                     break;
  16.                 }
  17.             }
Test

Déconnectez-vous puis allez à la page d'identification et suivez le lien Pour créer votre compte personnel, cliquez ici.

Création d'un compte

Quel est votre prénom ?

Et votre nom ?

Créez un compte pour Jean Dupont avec l'identifiant jdupont.

Connectez-vous avec l'identifiant jdupont.

Cliquez sur le grand téléphone pour afficher les campagnes de Jean Dupont.

Jean Dupont

Cliquez sur le clavier pour entrer dans l'éditeur.

Jean Dupont

la campagne #

Ajoutez une campagne avec le titre Le moteur web.

Titres
Le moteur web

Appuyez sur le drapeau pour afficher la liste des campagnes en anglais. IMPORTANT : La version d'une campagne dans une autre langue est créée dans l'éditeur de la campagne.

Appuyez sur le drapeau pour afficher la liste des campagnes en français. Cliquez sur le titre Le moteur web.

Tapez Créez votre site multimédias en quelques minutes avec iZend - Le moteur web : http://www.izend.org comme contenu du message, associez la campagne aux mots clés iZend moteur web dans le nuage et donnez-lui le sujet Campagne initiale auprès des agences web. Appuyez sur Configurer.

Cliquez sur le web pour passer en mode affichage.

Cliquez sur iZend dans le nuage.

Cliquez sur le titre Le moteur web pour afficher la campagne.

Revenez dans l'éditeur et cliquez sur le drapeau pour créer la version en anglais. Remarquez que le titre de la campagne est un numéro.

Essayez de créer une campagne sans titre en appuyant sur Configurer. L'opération est rejetée.

Créez la campagne en anglais avec le titre The web engine, le nuage iZend web engine, le sujet Initial campaign for web agencies and the message Create your multimedia website in a few minutes with iZend - The web engine: http://www.izend.org. Appuyez sur Configurer.

Cliquez sur le web pour passer en mode affichage.

Revenez dans l'éditeur , cliquez sur le drapeau , affichez la campagne en français, cliquez sur Campagnes en haut à droite au-dessus du nuage. Entrez dans l'éditeur et appuyez sur le drapeau pour changer de langue. La campagne a une version en français et une en anglais.

Cliquez sur le logo pour revenir à la page d'accueil. Suivez le lien Pour modifier votre identifiant, votre email ou changer votre mot de passe, cliquez ici.

Changez le prénom, le nom et l'identifiant, e.g. Pierre Durand pdurand.

Revenez sur la page d'accueil et affichez la liste des campagnes. Le titre a changé.

Pierre Durand

  1. Le moteur web

Déconnectez-vous et reconnectez-vous en tant qu'administrateur. Entrez dans la partie gestion puis cherchez pdurand et éditez le compte. Modifiez le prénom, le nom et l'identifiant, e.g. Jean Dupont jdupont.

Revenez dans la partie gestion et listez les annonceurs. Affichez les campagnes de Jean Dupont.

Exportez la BD du site. Supprimez le compte jdupont. Vérifiez que le fil des campagnes du compte et tous les nœuds et tous les contenus du fil ont été supprimés de la BD.

Git
  1. /izendsms.com
    1. actions
      1. campaigneditpage.php
      2. campaigneditsummary.php
    2. blocks
      1. register.php
      2. searchlist.php
      3. useredit.php
    3. models
      1. sms.inc
    4. views
      1. en
        1. register.phtml
      2. fr
        1. register.phtml

Commettez cette version :

$ git status
$ git add actions/campaigneditpage.php actions/campaigneditsummary.php blocks/register.php blocks/useredit.php models/sms.inc views/en/register.phtml views/fr/register.phtml
$ git commit -m'Adds creating and managing campaign threads with client accounts'

IMPORTANT : Éditez le connecteur à la BD défini dans le fichier includes/db.inc.

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].