Dotclear

source: plugins/microBlog/index.php @ 1361

Revision 1361, 10.6 KB checked in by Jeremie, 14 years ago (diff)
  1. 0.2

turn BETA

  • Start implementation of microBlogService::sanitize()
  • Clean up services instenciation
  • Refactoring the admin page
Line 
1<?php
2# -- BEGIN LICENSE BLOCK ----------------------------------
3# This file is part of Micro-Blogging, a plugin for Dotclear.
4#
5# Copyright (c) 2009 Jeremie Patonnier
6# jeremie.patonnier@gmail.com
7#
8# Licensed under the GPL version 2.0 license.
9# A copy of this license is available in LICENSE file or at
10# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11# -- END LICENSE BLOCK ------------------------------------
12
13# TODO NEED TO CHECK HOW TO REDUCE CODE AND MAKE IT REUSABLE
14
15$default_tab = 'tab1';
16 
17if (isset($_REQUEST['tab'])) {
18     $default_tab = $_REQUEST['tab'];
19}
20
21$MicroBlog = microBlog::init($core);
22$MBl = $MicroBlog->getServicesList();
23$MBs = $MicroBlog->getServicesType();
24
25$services = array(
26     __('Choose a service') => ''
27);
28$s   = array_flip($MBs);
29$services = array_merge($services, $s);
30unset($s);
31
32
33# -- BEGIN POST DATAS BLOCK -------------------------------
34# Perform action if POST datas are send
35if (!empty($_POST))
36{
37     //echo '<pre>';
38     //var_dump($_POST);
39     //echo '</pre>';
40     
41     $sList = array();
42     while($MBl->fetch())
43     {
44          $sList[$MBl->id] = $MBs[$MBl->service].' ('.$MBl->user.')';
45     }
46     
47     $tab      = isset($_POST['MB_send']) ? 1 : 2;
48     $_SESSION['mb_post_msg']    = array();
49     $_SESSION['mb_post_values'] = array();
50     
51     # ----------------------------------------------------
52     # Envoie d'une nouvelle note
53     if (isset($_POST['MB_note'])
54      && isset($_POST['MB_services']))
55     {
56          $error = array();
57         
58          $l = strlen($_POST['MB_note']);
59         
60          if ($l == 0)
61               $error[] = __('A note can not be empty.');
62               
63          // TODO VERIFIER QUE CE CONTROLE EST PERTINANT ICI
64          else if ($l > 140)
65               $error[] = __('A note can not be longer than 140 caracters.');
66         
67          else if(!is_array($_POST['MB_services'])
68          || empty($_POST['MB_services']))
69               $error[] = __('You must choose a service to send a note.');
70         
71          else
72          {
73               foreach ($_POST['MB_services'] as $id)
74               {
75                    try
76                    {
77                         $s = $MicroBlog->getServiceAccess($id);
78                         $r = $s->sendNote($_POST['MB_note']);
79                         
80                         if (!$r) 
81                              $error[] = $sList[$id]. ' : '. __('This note can not be send.');
82                    }
83                    catch (microBlogException $e)
84                    {
85                         $error[] = $sList[$id]. ' : '.__('This note can not be send.');
86                         $error[] = $sList[$id]. ' : '.__($e->getMessage());
87                    }
88               }
89          }
90         
91          if(!empty($error)) {
92               $_SESSION['mb_post_msg'] = array_merge($_SESSION['mb_post_msg'], $error);
93               $_SESSION['mb_post_values']['MB_note'] = $_POST['MB_note'];
94          }
95          else {
96               $_SESSION['mb_post_msg'][] = __('Note successfully send.');
97          }
98     }
99     
100     # ----------------------------------------------------
101     # Ajout d'un nouveau service
102     if (!empty($_POST['MB_service'])
103      && isset($_POST['MB_login'])
104      && isset($_POST['MB_pwd']))
105     {
106          $error = array();
107         
108          if (array_key_exists($_POST['MB_service'], $MBs))
109          {
110               try
111               {
112                    $r = $MicroBlog->addService($_POST['MB_service'], 
113                                                $_POST['MB_login'], 
114                                                $_POST['MB_pwd']);
115                    if (!$r) 
116                         $error[] = __('Impossible to add this new service.');
117               }
118               catch (microBlogException $e)
119               {
120                    $error[] = __('Impossible to add this new service.');
121                    $error[] = __($e->getMessage());
122               }
123          }
124          else if (!empty($_POST['MB_service']))
125          {
126               $error[] = __('This service is not supported.');
127          }
128         
129          if(!empty($error)) {
130               $_SESSION['mb_post_msg'] = array_merge($_SESSION['mb_post_msg'], $error);
131          }
132          else {
133               $_SESSION['mb_post_msg'][] = __('Service successfully added.');
134          }
135     }
136     
137     # ----------------------------------------------------
138     # Paramétrage des services
139     if (isset($_POST['MB_s']) 
140      && is_array($_POST['MB_s']))
141     {
142          $error = array();
143
144          foreach ($_POST['MB_s'] as $id => $param)
145          {
146               if (!is_array($param)) continue;
147               
148               if (isset($param['delete'])
149                && $param['delete'] == 1)
150               {
151                    // TODO PENSER A SUPPRIMER LE WIDGET CORRESPONDANT
152                    try
153                    {
154                         $r = $MicroBlog->deleteService($id);
155                   
156                         if (!$r)
157                              $error[] = $sList[$id]. ' : '.__('Impossible to delete this service');
158                         else
159                              $error[] = __('Service successfully deleted').' : '.$sList[$id];
160                    }
161                    catch (microBlogException $e)
162                    {
163                         $error[] = $sList[$id]. ' : '.__('Impossible to delete this service');
164                         $error[] = $sList[$id]. ' : '.__($e->getMessage());
165                    }
166               }
167               else
168               {
169                    $a = array(
170                         'isActive'              => isset($param['active']) && $param['active'] == 1,
171                         'sendNoteOnNewBlogPost' => isset($param['auto'])   && $param['auto']   == 1
172                    );
173               
174                    try
175                    {
176                         $r = $MicroBlog->updateServiceParams($id, $a);
177                   
178                         if (!$r)
179                              $error[] = $sList[$id]. ' : '.__('Impossible to update this service');
180                         else
181                              $error[] = __('Service successfully updated').' : '.$sList[$id];
182                    }
183                    catch (microBlogException $e)
184                    {
185                         $error[] = $sList[$id]. ' : '.__('Impossible to update this service');
186                         $error[] = $sList[$id]. ' : '.__($e->getMessage());
187                    }
188               }
189          }
190         
191          if(!empty($error)) {
192               $_SESSION['mb_post_msg'] = array_merge($_SESSION['mb_post_msg'], $error);
193          }
194          else {
195               $_SESSION['mb_post_msg'][] = __('Services successfully updated');
196          }
197     }
198     
199     http::redirect($p_url.'&tab=tab'. $tab .'&isdone=1');
200}
201# -- END POST DATAS BLOCK ---------------------------------
202
203if (isset($_GET['isdone']))
204{
205     if(!empty($_SESSION['mb_post_msg']))
206     {
207          $msg = implode("<br />\n", (array)$_SESSION['mb_post_msg']);
208          unset($_SESSION['mb_post_msg']);
209     }   
210}
211?>
212<html>
213<head>
214     <title><?php echo(__('MicroBlog')); ?></title>
215     
216     <?php echo dcPage::jsPageTabs($default_tab); ?>
217     
218     <script type="text/javascript">
219     //<![CDATA[
220     function MB_length(){
221          var c = 140 - $("#MB_note").val().length;
222          var node = $("#MB_note_length span").text(c).parent();
223
224          if (c < 0 && !node.hasClass("fail"))
225               node.addClass("fail");
226          else if (c >= 0 && node.hasClass("fail"))
227               node.removeClass("fail");
228     }
229
230     function MB_chk_delete(){
231          if($(this).attr('checked') == true){
232               if(!confirm('Etes-vous sur de vouloir supprimer ce service ?')){
233                    $(this).attr('checked', false);
234               }
235          }
236     }
237     
238     $(function(){
239          $("#MB_note")
240          .keyup(MB_length);
241
242          $(".delete")
243          .change(MB_chk_delete);
244     });
245     //]]>         
246     </script>
247     
248<style type="text/css">
249.fail{color : #900;}
250.danger{background : #FCC;}
251</style>
252</head>
253<body>
254
255     <h2><?php echo html::escapeHTML($core->blog->name).' &rsaquo; '.
256          __('MicroBlog'); ?></h2>
257     
258<?php 
259if (!empty($msg))
260{
261     echo '    <p class="message">'.$msg.'</p>';
262}
263?>
264
265     <div class="multi-part" id="tab1" title="<?php echo __('Add a micro note'); ?>">
266<?php 
267if ($MBl->count() < 1){
268?>
269          <p class="message"><?php echo __('You must define at least 1 service.'); ?></p>
270<?php 
271}
272else
273{
274?>
275          <form method="post" action="<?php echo($p_url); ?>">
276               <div id="entry-sidebar">
277                    <h3><?php echo __('Send to:'); ?></h3>
278                    <ul>
279<?php 
280     $i = 0;
281     while ($MBl->fetch())
282     {
283          if (!array_key_exists($MBl->service, $MBs))
284               continue;
285         
286          $params   = $MicroBlog->getServiceParams($MBl->id);
287          $isActive = $params['isActive'];
288?>
289                         <li><label class="classic"><?php echo(form::checkbox(array('MB_services[]','MB_service_'.$i++),$MBl->id, $isActive).' '.__($MBs[$MBl->service]).' ('.$MBl->user.')'); ?></label></li>
290<?php 
291     }
292?>
293                    </ul>
294               </div>
295               
296               <div id="entry-content">
297                    <h3><label for="note"><?php echo __('Content'); ?></label></h3>
298                    <p class="area">
299                         <?php 
300               $value = isset($_SESSION['mb_post_values']['MB_note'])
301                      ? $_SESSION['mb_post_values']['MB_note']
302                      : "";
303                         
304               echo form::textarea('MB_note', 20, 5, $value); 
305                         ?>
306                         <strong id="MB_note_length"><span>140</span> <?php echo __('characters left'); ?></strong>
307                    </p>
308
309                    <p>
310                         <?php echo $core->formNonce(); ?>
311                         <input type="submit" name="MB_send" value="<?php echo __('Send'); ?>" />
312                    </p>
313         
314               </div>
315          </form>
316<?php 
317}
318?>
319     </div>
320 
321     <div class="multi-part" id="tab2" title="<?php echo __('Params'); ?>">
322          <form method="post" action="<?php echo($p_url); ?>">
323               <h3><?php echo(__('MicroBlogging settings')); ?></h3>
324<?php 
325if ($MBl->count() > 0)
326{
327?>
328               <fieldset>
329                    <legend><?php echo __('Accounts settings'); ?></legend>
330                   
331                    <table>
332                         <thead>
333                              <tr>
334                                   <th scope="col"><?php echo __('Service'); ?></th>
335                                   <th scope="col"><?php echo __('User'); ?></th>
336                                   <th scope="col"><img src="<?php echo str_replace($_SERVER['DOCUMENT_ROOT'], "", dirname(__FILE__)."/img/note_go.png"); ?>" alt="<?php echo __('Send a note for each new blog post') ?>" title="<?php echo __('Send a note for each new blog post') ?>" /></th>
337                                   <th scope="col"><img src="<?php echo str_replace($_SERVER['DOCUMENT_ROOT'], "", dirname(__FILE__)."/img/note_add.png"); ?>" alt="<?php echo __('Activate') ?>" title="<?php echo __('Activate') ?>" /></th>
338                                   <th scope="col"><img src="<?php echo str_replace($_SERVER['DOCUMENT_ROOT'], "", dirname(__FILE__)."/img/note_delete.png"); ?>" alt="<?php echo __('Suspend') ?>" title="<?php echo __('Suspend') ?>" /></th>
339                                   <th scope="col" class="danger"><img src="<?php echo str_replace($_SERVER['DOCUMENT_ROOT'], "", dirname(__FILE__)."/img/exclamation.png"); ?>" alt="<?php echo __('Delete') ?>" title="<?php echo __('Delete') ?>" /></th>
340                              </tr>
341                         </thead>
342                         <tbody>
343<?php 
344     $i = 0;
345     $MBl->moveStart();
346     while ($MBl->fetch())
347     {
348          if (!array_key_exists($MBl->service, $MBs))
349               continue;
350         
351          $i++;
352          $params = $MicroBlog->getServiceParams($MBl->id);
353?>
354                              <tr>
355                                   <th scope="row"><label for="MB_s_liste_<?php echo $i; ?>_a"><?php echo __($MBs[$MBl->service]); ?></label></th>
356                                   <td><?php echo $MBl->user; ?></td>
357                                   <td><?php echo form::checkbox(array('MB_s['.$MBl->id.'][auto]','MB_s_'.$i.'_a'), '1', $params['sendNoteOnNewBlogPost']); ?></td>
358                                   <td><?php echo form::radio(array('MB_s['.$MBl->id.'][active]', 'MB_s_'.$i.'_b'), '1', $params['isActive']); ?></td>
359                                   <td><?php echo form::radio(array('MB_s['.$MBl->id.'][active]', 'MB_s_'.$i.'_c'), '0',!$params['isActive']); ?></td>
360                                   <td class="danger"><?php echo form::checkbox(array('MB_s['.$MBl->id.'][delete]','MB_s_'.$i.'_d'), '1', false, 'delete'); ?></td>
361                              </tr>
362<?php 
363     }
364?>
365                         </tbody>
366                    </table>
367               </fieldset>
368<?php 
369}
370?>
371               <fieldset class="clear">
372                    <legend><?php echo __('Add an account'); ?></legend>
373                   
374                    <p style="float:left;margin-right:1em;">
375                         <label for="service"><?php echo __('Service'); ?></label>
376                         <?php echo form::combo('MB_service',$services); ?>
377                    </p>
378                    <p style="float:left;margin-right:1em;">
379                         <label for="login"><?php echo __('Login'); ?></label>
380                         <?php echo form::field('MB_login',16, 240); ?>
381                    </p>
382                    <p style="float:left;">
383                         <label for="pwd"><?php echo __('Password'); ?></label>
384                         <?php echo form::password('MB_pwd',16, 240); ?>
385                    </p>
386               </fieldset>
387               
388               <p>
389                    <?php echo $core->formNonce(); ?>
390                    <input type="submit" name="MB_save" value="<?php echo __('Save'); ?>" />
391               </p>
392          </form>
393     </div>
394 
395</body>
396</html>
Note: See TracBrowser for help on using the repository browser.

Sites map