Gestion du fil des campagnes
Code
Éditez le fichier models/sms.inc :
- require_once 'models/thread.inc';
- function sms_create_campaign_thread($user_id, $lang, $thread_name, $thread_title) {
- global $supported_languages;
- $thread_type='campaign';
- $r = thread_create($lang, $user_id, $thread_name, $thread_title, $thread_type);
- if (!$r) {
- return false;
- }
- extract($r); /* thread_id thread_number */
- foreach ($supported_languages as $clang) {
- $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);
- if (!$r) {
- $sql="DELETE FROM $tabthread WHERE thread_id=$thread_id";
- $r = db_delete($sql);
- return false;
- }
- }
- return true;
- }
- function sms_delete_campaign_thread($user_id) {
- $thread_id=sms_get_user_campaign_id($user_id);
- if (!$thread_id) {
- return false;
- }
- if (!thread_delete($thread_id)) {
- return false;
- }
- return true;
- }
- function sms_rename_campaign_thread($user_id, $thread_name, $thread_title) {
- $sqlname=db_sql_arg($thread_name, true);
- $sqltitle=db_sql_arg($thread_title, true, true);
- $tabthread=db_prefix_table('thread');
- $tabthreadlocale=db_prefix_table('thread_locale');
- $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)";
- $r = db_update($sql);
- if ($r === false) {
- return false;
- }
- return true;
- }
Éditez le fichier actions/campaigneditsummary.php :
- if ($action == 'create') {
- node_create_content($clang, $node_id, 'sms');
- }
- $viewsms=$thread_contents ? url('campaign', $clang) . '/'. $thread_id . '?' . 'slang=' . $lang : false;
Éditez le fichier actions/campaigneditpage.php :
- $viewsms=$node_name ? url('campaign', $clang) . '/'. $thread_id . '/' . $node_id : false;
Éditez le fichier blocks/searchlist.php :
- else {
- $thread_url=url($thread_type, $lang) . '/'. ($thread_type == 'campaign' ? $thread_id : $thread_name);
- }
- $link_url=$thread_url . '/' . ($thread_type == 'campaign' ? $node_id : $node_name);
Éditez le fichier blocks/register.php :
- require_once 'models/sms.inc';
- $with_info=true;
- $with_client=$is_admin;
- $is_client=true;
- if ($with_client) {
- $is_client=isset($_POST['register_isclient']) ? (readarg($_POST['register_isclient']) == 'on' ? true : false) : false;
- }
- if ($with_info and !($with_client and !$is_client)) {
- if ($with_info and !($with_client and !$is_client)) {
- if ($is_client) {
- $r = sms_create_campaign_thread($user_id, $locale, $name, "$firstname $lastname");
- if (!$r) {
- $internal_error=true;
- break;
- }
- user_set_role($user_id, 'client');
- $newsletter=true;
- }
- $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 :
- <?php if ($with_client): ?>
- <p><input type="checkbox" name="register_isclient" id="register_isclient" title=""<?php if ($is_client): ?> checked="checked"<?php endif; ?> /> Je veux créer un compte client</p>
- <?php endif; ?>
- <?php if ($with_client): ?>
- <p><input type="checkbox" name="register_isclient" id="register_isclient" title=""<?php if ($is_client): ?> checked="checked"<?php endif; ?> /> I want to create a client account</p>
- <?php endif; ?>
Éditez le fichier blocks/useredit.php :
- $user_role = user_get_role($user_id);
- $is_client=$user_role && in_array('client', $user_role);
- $with_info=$is_client;
- if ($is_owner) {
- $_SESSION['user']['lastname'] = $user_lastname;
- $_SESSION['user']['firstname'] = $user_firstname;
- }
- if ($is_client) {
- require_once 'models/sms.inc';
- $r = sms_rename_campaign_thread($user_id, $user_name, "$user_firstname $user_lastname");
- if (!$r) {
- $internal_error=true;
- break;
- }
- }
- $r = user_delete($user_id);
- if (!$r) {
- $internal_error=true;
- break;
- }
- if ($is_client) {
- require_once 'models/sms.inc';
- $r = sms_delete_campaign_thread($user_id);
- if (!$r) {
- $internal_error=true;
- break;
- }
- }
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
.
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
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
- /izendsms.com
- actions
- campaigneditpage.php
- campaigneditsummary.php
- blocks
- register.php
- searchlist.php
- useredit.php
- models
- sms.inc
- views
- en
- register.phtml
- fr
- register.phtml
- en
- actions
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