Changeset 26199


Ignore:
Timestamp:
12/26/13 12:48:21 (6 years ago)
Author:
mistic100
Message:

update for 2.6

Location:
extensions/instagram2piwigo
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • extensions/instagram2piwigo/admin.php

    r19561 r26199  
    11<?php 
    2 if (!defined('INSTAG_PATH')) die('Hacking attempt!'); 
     2defined('INSTAG_PATH') or die('Hacking attempt!'); 
    33 
    44global $template, $page, $conf; 
    55 
    6 $conf['Instagram2Piwigo'] = unserialize($conf['Instagram2Piwigo']); 
    76load_language('plugin.lang', INSTAG_PATH); 
    87 
     
    3130  'INSTAG_ADMIN' => INSTAG_ADMIN, 
    3231  )); 
     32 
    3333$template->assign_var_from_handle('ADMIN_CONTENT', 'Instagram2Piwigo'); 
    34  
    35 ?> 
  • extensions/instagram2piwigo/admin/config.php

    r24817 r26199  
    11<?php 
    2 if (!defined('INSTAG_PATH')) die('Hacking attempt!'); 
     2defined('INSTAG_PATH') or die('Hacking attempt!'); 
    33 
    44if (isset($_POST['save_config'])) 
     
    88    'secret_key' => trim($_POST['secret_key']), 
    99    ); 
     10 
    1011  unset($_SESSION['phpinstagram_auth_token']); 
    1112  conf_update_param('Instagram2Piwigo', serialize($conf['Instagram2Piwigo'])); 
     
    2122 
    2223 
    23 $template->set_filename('Instagram2Piwigo', dirname(__FILE__) . '/template/config.tpl'); 
    24  
    25 ?> 
     24$template->set_filename('Instagram2Piwigo', realpath(INSTAG_PATH . 'admin/template/config.tpl')); 
  • extensions/instagram2piwigo/admin/import.php

    r24817 r26199  
    11<?php 
    2 if (!defined('INSTAG_PATH')) die('Hacking attempt!'); 
     2defined('INSTAG_PATH') or die('Hacking attempt!'); 
    33 
    44set_time_limit(600); 
     
    77 
    88// check API parameters and connect to instagram 
    9 if ( empty($conf['Instagram2Piwigo']['api_key']) or empty($conf['Instagram2Piwigo']['secret_key']) ) 
    10 { 
    11   array_push($page['warnings'], l10n('Please fill your API keys on the configuration tab')); 
     9if (empty($conf['Instagram2Piwigo']['api_key']) or empty($conf['Instagram2Piwigo']['secret_key'])) 
     10{ 
     11  $page['warnings'][] = l10n('Please fill your API keys on the configuration tab'); 
    1212  $_GET['action'] = 'error'; 
    1313} 
    1414else if (!function_exists('curl_init')) 
    1515{ 
    16   array_push($page['errors'], l10n('No download method available').' (cURL)'); 
     16  $page['errors'][] = l10n('No download method available').' (cURL)'; 
    1717  $_GET['action'] = 'error'; 
    1818} 
     
    2525     
    2626    $auth_config = array( 
    27         'client_id'         => $conf['Instagram2Piwigo']['api_key'], 
    28         'client_secret'    => $conf['Instagram2Piwigo']['secret_key'], 
    29         'redirect_uri'      => get_absolute_root_url() . INSTAG_ADMIN . '-import', 
    30     ); 
     27      'client_id'     => $conf['Instagram2Piwigo']['api_key'], 
     28      'client_secret' => $conf['Instagram2Piwigo']['secret_key'], 
     29      'redirect_uri'  => get_absolute_root_url() . INSTAG_ADMIN . '-import', 
     30      ); 
    3131     
    3232    $auth = new Instagram_Auth($auth_config); 
     
    5757 
    5858 
    59 if (!isset($_GET['action'])) $_GET['action'] = 'main'; 
     59if (!isset($_GET['action'])) 
     60{ 
     61  $_GET['action'] = 'main'; 
     62} 
    6063 
    6164 
     
    142145    if ($duplicates>0) 
    143146    { 
    144       $page['infos'][] = '<a href="admin.php?page=batch_manager&amp;prefilter=instagram">' 
    145           .l10n_dec('One picture is not displayed because already existing in the database.', '%d pictures are not displayed because already existing in the database.', $duplicates) 
     147      $page['infos'][] = '<a href="admin.php?page=batch_manager&amp;filter=prefilter-instagram">' 
     148          .l10n_dec( 
     149            'One picture is not displayed because already existing in the database.', 
     150            '%d pictures are not displayed because already existing in the database.', 
     151            $duplicates) 
    146152        .'</a>'; 
    147153    } 
     
    195201    if (isset($_POST['done'])) 
    196202    { 
    197       $_SESSION['page_infos'][] = sprintf(l10n('%d pictures imported'), $_POST['done']); 
     203      $_SESSION['page_infos'][] = l10n('%d pictures imported', $_POST['done']); 
    198204    } 
    199205    redirect(INSTAG_ADMIN . '-import'); 
     
    204210$template->assign('ACTION', $_GET['action']); 
    205211 
    206 $template->set_filename('Instagram2Piwigo', dirname(__FILE__) . '/template/import.tpl'); 
    207  
    208 ?> 
     212$template->set_filename('Instagram2Piwigo', realpath(INSTAG_PATH . 'admin/template/import.tpl')); 
  • extensions/instagram2piwigo/admin/template/config.tpl

    r19561 r26199  
    55<form method="post" action="" class="properties"> 
    66<fieldset> 
    7   <legend>{'Instagram logins'|@translate}</legend> 
     7  <legend>{'Instagram logins'|translate}</legend> 
    88   
    99  <ul> 
     
    2424</fieldset> 
    2525 
    26 <p><input type="submit" name="save_config" value="{'Save Settings'|@translate}"></p> 
     26<p><input type="submit" name="save_config" value="{'Save Settings'|translate}"></p> 
    2727 
    2828<fieldset> 
    29   <legend>{'How do I get my Instagram Client ID ?'|@translate}</legend> 
     29  <legend>{'How do I get my Instagram Client ID ?'|translate}</legend> 
    3030   
    3131  <p><b>OAuth redirect_uri :</b> <span style="font-family:monospace;font-size:14px;">{$INSTAG_CALLBACK}</span></p> 
  • extensions/instagram2piwigo/admin/template/import.list_photos.tpl

    r19711 r26199  
    11{include file='include/colorbox.inc.tpl'} 
    22{include file='include/add_album.inc.tpl'} 
     3{combine_script id='common' load='footer' path='admin/themes/default/js/common.js'} 
    34{combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'} 
    45{combine_script id='jquery.jgrowl' load='footer' require='jquery' path='themes/default/js/plugins/jquery.jgrowl_minimized.js'} 
    5 {combine_css path="admin/themes/default/uploadify.jGrowl.css"} 
     6{combine_css path="themes/default/js/plugins/jquery.jGrowl.css"} 
    67 
    78{footer_script require='jquery.ajaxmanager,jquery.jgrowl'} 
    8 /* global vars */ 
    9 var nb_thumbs_page = {$nb_thumbs_page}; 
    10 var nb_thumbs_set = {$nb_thumbs_set}; 
    11 var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}]; 
    12  
    13 var errorHead   = '{'ERROR'|@translate|@escape:'javascript'}'; 
    14 var errorMsg    = '{'an error happened'|@translate|@escape:'javascript'}'; 
    15 var successHead = '{'Success'|@translate|@escape:'javascript'}'; 
    16 var selectedMessage_pattern = "{'%d of %d photos selected'|@translate}"; 
    17 var selectedMessage_none = "{'No photo selected, %d photos in current set'|@translate}"; 
    18 var selectedMessage_all = "{'All %d photos are selected'|@translate}"; 
    19 var applyOnDetails_pattern = "{'on the %d selected photos'|@translate}"; 
    20  
    21 var import_done = 0; 
    22 var import_selected = 0; 
    23 var queuedManager = jQuery.manageAjax.create('queued', {ldelim} 
    24   queue: true,   
    25   maxRequests: 1 
    26 }); 
    27  
    28 {literal} 
    29 /* Shift-click: select all photos between the click and the shift+click */ 
    30 jQuery(document).ready(function() { 
     9(function($){ 
     10  /* global vars */ 
     11  var nb_thumbs_set = {$nb_thumbs_set}; 
     12  var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}]; 
     13  var import_done = 0; 
     14  var import_selected = 0; 
     15  var queuedManager = $.manageAjax.create('queued', { 
     16    queue: true,   
     17    maxRequests: 1 
     18  }); 
     19 
     20  /* Shift-click: select all photos between the click and the shift+click */ 
    3121  var last_clicked=0; 
    3222  var last_clickedstatus=true; 
    33   jQuery.fn.enableShiftClick = function() { 
     23  $.fn.enableShiftClick = function() { 
    3424    var inputs = []; 
    3525    var count=0; 
     
    6656        return true; 
    6757      }); 
    68       $(this).click(function(event) {console.log(event.shiftKey);$(this).triggerHandler("shclick",event)}); 
     58      $(this).click(function(event) { $(this).triggerHandler("shclick",event); }); 
    6959    }); 
    7060  } 
    71 }); 
    72  
    73 /* sprintf */ 
    74 function str_repeat(i, m) { 
    75     for (var o = []; m > 0; o[--m] = i); 
    76     return o.join(''); 
    77 } 
    78  
    79 function sprintf() { 
    80   var i = 0, a, f = arguments[i++], o = [], m, p, c, x, s = ''; 
    81   while (f) { 
    82     if (m = /^[^\x25]+/.exec(f)) { 
    83       o.push(m[0]); 
    84     } 
    85     else if (m = /^\x25{2}/.exec(f)) { 
    86       o.push('%'); 
    87     } 
    88     else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) { 
    89       if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) { 
    90         throw('Too few arguments.'); 
    91       } 
    92       if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) { 
    93         throw('Expecting number but found ' + typeof(a)); 
    94       } 
    95       switch (m[7]) { 
    96         case 'b': a = a.toString(2); break; 
    97         case 'c': a = String.fromCharCode(a); break; 
    98         case 'd': a = parseInt(a); break; 
    99         case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break; 
    100         case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break; 
    101         case 'o': a = a.toString(8); break; 
    102         case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break; 
    103         case 'u': a = Math.abs(a); break; 
    104         case 'x': a = a.toString(16); break; 
    105         case 'X': a = a.toString(16).toUpperCase(); break; 
    106       } 
    107       a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+'+ a : a); 
    108       c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' '; 
    109       x = m[5] - String(a).length - s.length; 
    110       p = m[5] ? str_repeat(c, x) : ''; 
    111       o.push(s + (m[4] ? a + p : p + a)); 
    112     } 
    113     else { 
    114       throw('Huh ?!'); 
    115     } 
    116     f = f.substring(m[0].length); 
    117   } 
    118   return o.join(''); 
    119 } 
    120  
    121 /* update displaying */ 
    122 function checkPermitAction() { 
    123   var nbSelected = 0; 
    124   if ($("input[name=setSelected]").is(':checked')) { 
    125     nbSelected = nb_thumbs_set; 
    126   } else { 
    127     $(".thumbnails input[type=checkbox]").each(function() { 
    128       if ($(this).is(':checked')) nbSelected++; 
    129     }); 
    130   } 
    131  
    132   if (nbSelected == 0) { 
    133     $("#beginImport").hide(); 
    134   } else { 
    135     $("#beginImport").show(); 
    136   } 
    137  
    138   $("#applyOnDetails").text( 
    139     sprintf( 
    140       applyOnDetails_pattern, 
    141       nbSelected 
    142     ) 
    143   ); 
    144  
    145   // display the number of currently selected photos in the "Selection" fieldset 
    146   if (nbSelected == 0) { 
    147     $("#selectedMessage").text( 
     61 
     62  /* update displaying */ 
     63  function checkPermitAction() { 
     64    var nbSelected = 0; 
     65    if ($("input[name=setSelected]").is(':checked')) { 
     66      nbSelected = nb_thumbs_set; 
     67    } 
     68    else { 
     69      $(".thumbnails input[type=checkbox]").each(function() { 
     70        if ($(this).is(':checked')) nbSelected++; 
     71      }); 
     72    } 
     73 
     74    if (nbSelected == 0) { 
     75      $("#beginImport").hide(); 
     76    } 
     77    else { 
     78      $("#beginImport").show(); 
     79    } 
     80 
     81    $("#applyOnDetails").text( 
    14882      sprintf( 
    149         selectedMessage_none, 
    150         nb_thumbs_set 
     83        '{'on the %d selected photos'|translate|escape:javascript}', 
     84        nbSelected 
    15185      ) 
    15286    ); 
    153   } else if (nbSelected == nb_thumbs_set) { 
    154     $("#selectedMessage").text( 
    155       sprintf( 
    156         selectedMessage_all, 
    157         nb_thumbs_set 
    158       ) 
    159     ); 
    160   } else { 
    161     $("#selectedMessage").text( 
    162       sprintf( 
    163         selectedMessage_pattern, 
    164         nbSelected, 
    165         nb_thumbs_set 
    166       ) 
    167     ); 
     87 
     88    // display the number of currently selected photos in the "Selection" fieldset 
     89    if (nbSelected == 0) { 
     90      $("#selectedMessage").text( 
     91        sprintf( 
     92          '{'No photo selected, %d photos in current set'|translate|escape:javascript}', 
     93          nb_thumbs_set 
     94        ) 
     95      ); 
     96    } 
     97    else if (nbSelected == nb_thumbs_set) { 
     98      $("#selectedMessage").text( 
     99        sprintf( 
     100          '{'All %d photos are selected'|translate|escape:javascript}', 
     101          nb_thumbs_set 
     102        ) 
     103      ); 
     104    } 
     105    else { 
     106      $("#selectedMessage").text( 
     107        sprintf( 
     108          '{'%d of %d photos selected'|translate|escape:javascript}', 
     109          nbSelected, 
     110          nb_thumbs_set 
     111        ) 
     112      ); 
     113    } 
    168114  } 
    169 } 
    170  
    171 /* import queue */ 
    172 function performImport(photo, album, fills) { 
    173   queuedManager.add({ 
    174     type: 'GET', 
    175     dataType: 'json', 
    176     url: 'ws.php', 
    177     data: { method: 'pwg.images.addInstagram', id: photo, category: album, fills: fills, format: 'json' }, 
    178     success: function(data) { 
    179       if (data['stat'] == 'ok') { 
    180         jQuery.jGrowl(data['result'], { theme: 'success', header: successHead, life: 4000, sticky: false }); 
    181         jQuery("#photo-"+photo).fadeOut(function(){ $(this).remove(); }); 
    182       } else { 
    183         jQuery.jGrowl(data['result'], { theme: 'error', header: errorHead, sticky: true }); 
     115 
     116  /* import queue */ 
     117  function performImport(photo, album, fills) { 
     118    queuedManager.add({ 
     119      type: 'GET', 
     120      dataType: 'json', 
     121      url: 'ws.php', 
     122      data: { 
     123        method: 'pwg.images.addInstagram', 
     124        id: photo, 
     125        category: album, 
     126        fills: fills, 
     127        format: 'json' 
     128      }, 
     129      success: function(data) { 
     130        if (data['stat'] == 'ok') { 
     131          $.jGrowl(data['result'], { 
     132            theme: 'success', life: 4000, sticky: false, 
     133            header: '{'Success'|translate}' 
     134          }); 
     135          $("#photo-"+photo).fadeOut(function(){ $(this).remove(); }); 
     136        } 
     137        else { 
     138          $.jGrowl(data['result'], { 
     139            theme: 'error', sticky: true, 
     140            header: '{'ERROR'|translate}' 
     141          }); 
     142        } 
     143         
     144        import_done++; 
     145        $("#progress").html(import_done +"/"+ import_selected); 
     146         
     147        if (import_done == import_selected) { 
     148          $("#import_form").append('<input type="hidden" name="done" value="' + import_done + '">'); 
     149          $("#import_form").submit(); 
     150        } 
     151      }, 
     152      error: function(data) { 
     153        $.jGrowl('{'an error happened'|translate|escape:javascript}', { 
     154          theme: 'error', sticky: true, 
     155          header: '{'ERROR'|translate}' 
     156        }); 
    184157      } 
    185        
    186       import_done++; 
    187       $("#progress").html(import_done +"/"+ import_selected); 
    188        
    189       if (import_done == import_selected) { 
    190         $("#import_form").append('<input type="hidden" name="done" value="' + import_done + '">'); 
    191         $("#import_form").submit(); 
    192       } 
    193     }, 
    194     error: function(data) { 
    195       jQuery.jGrowl(errorMsg, { theme: 'error', header: errorHead, sticky: true }); 
    196     } 
    197   }); 
    198 } 
    199  
    200  
    201 $(document).ready(function() { 
     158    }); 
     159  } 
     160 
     161 
    202162  checkPermitAction(); 
    203163  $("a.preview-box").colorbox({ 
     
    216176  /* thumbnail click */ 
    217177  $(".wrap1 label").click(function (event) { 
    218     $("input[name=setSelected]").attr('checked', false); 
     178    $("input[name=setSelected]").prop('checked', false); 
    219179 
    220180    var wrap2 = $(this).children(".wrap2"); 
     
    235195  /* select all */ 
    236196  $("#selectAll").click(function () { 
    237     $("input[name=setSelected]").attr('checked', false); 
     197    $("input[name=setSelected]").prop('checked', false); 
    238198     
    239199    $(".thumbnails label").each(function() { 
     
    241201      var checkbox = $(this).children("input[type=checkbox]"); 
    242202 
    243       $(checkbox).attr('checked', true); 
     203      $(checkbox).prop('checked', true); 
    244204      $(wrap2).addClass("thumbSelected");  
    245205    }); 
     
    251211  /* select none */ 
    252212  $("#selectNone").click(function () { 
    253     $("input[name=setSelected]").attr('checked', false); 
     213    $("input[name=setSelected]").prop('checked', false); 
    254214     
    255215    $(".thumbnails label").each(function() { 
     
    257217      var checkbox = $(this).children("input[type=checkbox]"); 
    258218 
    259       $(checkbox).attr('checked', false); 
     219      $(checkbox).prop('checked', false); 
    260220      $(wrap2).removeClass("thumbSelected");  
    261221    }); 
     
    267227  /* select invert */ 
    268228  $("#selectInvert").click(function () { 
    269     $("input[name=setSelected]").attr('checked', false); 
     229    $("input[name=setSelected]").prop('checked', false); 
    270230     
    271231    $(".thumbnails label").each(function() { 
     
    273233      var checkbox = $(this).children("input[type=checkbox]"); 
    274234 
    275       $(checkbox).attr('checked', !$(checkbox).is(':checked')); 
     235      $(checkbox).prop('checked', !$(checkbox).is(':checked')); 
    276236 
    277237      if ($(checkbox).is(':checked')) { 
    278238        $(wrap2).addClass("thumbSelected");  
    279       } else { 
     239      } 
     240      else { 
    280241        $(wrap2).removeClass('thumbSelected');  
    281242      } 
     
    288249  /* select set */ 
    289250  $("#selectSet").click(function () { 
    290     $("input[name=setSelected]").attr('checked', true); 
     251    $("input[name=setSelected]").prop('checked', true); 
    291252     
    292253    $(".thumbnails label").each(function() { 
     
    294255      var checkbox = $(this).children("input[type=checkbox]"); 
    295256 
    296       $(checkbox).attr('checked', true); 
     257      $(checkbox).prop('checked', true); 
    297258      $(wrap2).addClass("thumbSelected");  
    298259    }); 
     
    303264  
    304265  /* begin import */ 
    305   jQuery('#beginImport').click(function() { 
     266  $('#beginImport').click(function() { 
    306267    $("#loader_import").fadeIn(); 
    307268    var album = $("#albumSelect option:selected").val(); 
     
    312273    });  
    313274     
    314     if (jQuery('input[name="setSelected"]').attr('checked')) { 
     275    if ($('input[name="setSelected"]').prop('checked')) { 
    315276      import_selected = all_elements.length; 
    316277      $("#progress").html("0/"+ import_selected); 
     
    319280        performImport(all_elements[i], album, fills); 
    320281      } 
    321                 } else { 
     282                } 
     283    else { 
    322284      import_selected = $("input[name='selection[]']:checked").length; 
    323285      $("#progress").html("0/"+ import_selected); 
    324286       
    325                         jQuery("input[name='selection[]']:checked").each(function() { 
    326         performImport(jQuery(this).attr('value'), album, fills); 
     287                        $("input[name='selection[]']:checked").each(function() { 
     288        performImport($(this).attr('value'), album, fills); 
    327289      }); 
    328290    } 
     
    332294   
    333295  /* pagination loader */ 
    334   jQuery('#navigation a').click(function() { 
     296  $('#navigation a').click(function() { 
    335297    $("#loader_display").fadeIn(); 
    336298  }); 
    337 }); 
    338 {/literal} 
     299}(jQuery)); 
    339300{/footer_script} 
    340301 
    341 {html_head} 
    342 <style type="text/css"> 
    343 .thumbnails .wrap2 {ldelim} width:128px; height:128px; } 
    344 .thumbnail {ldelim} width:100px; } 
    345 </style> 
    346 {/html_head} 
     302 
     303{html_style} 
     304.thumbnails .wrap2 { width:128px; height:128px; } 
     305.thumbnail { width:100px; } 
     306{/html_style} 
    347307 
    348308 
     
    351311 
    352312  <fieldset> 
    353     <legend>{'Selection'|@translate}</legend> 
     313    <legend>{'Selection'|translate}</legend> 
    354314 
    355315  {if !empty($thumbnails)} 
    356316    <p id="checkActions"> 
    357       {'Select:'|@translate} 
     317      {'Select:'|translate} 
    358318    {if $nb_thumbs_set > $nb_thumbs_page} 
    359       <a href="#" id="selectAll">{'The whole page'|@translate}</a>, 
    360       <a href="#" id="selectSet">{'The whole set'|@translate}</a>, 
     319      <a href="#" id="selectAll">{'The whole page'|translate}</a>, 
     320      <a href="#" id="selectSet">{'The whole set'|translate}</a>, 
    361321    {else} 
    362       <a href="#" id="selectAll">{'All'|@translate}</a>, 
     322      <a href="#" id="selectAll">{'All'|translate}</a>, 
    363323    {/if} 
    364       <a href="#" id="selectNone">{'None'|@translate}</a>, 
    365       <a href="#" id="selectInvert">{'Invert'|@translate}</a> 
     324      <a href="#" id="selectNone">{'None'|translate}</a>, 
     325      <a href="#" id="selectInvert">{'Invert'|translate}</a> 
    366326 
    367327      <span id="selectedMessage"></span> 
    368328      <input type="checkbox" name="setSelected" style="display:none"> 
    369       <span id="loader_display" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|@translate}</i></span> 
     329      <span id="loader_display" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|translate}</i></span> 
    370330    </p> 
    371331 
     
    376336                                        <label> 
    377337                                                <span class="wrap2"> 
    378                                                 <div class="actions"><a href="{$thumbnail.src}" class="preview-box">{'Zoom'|@translate}</a> &middot; <a href="{$thumbnail.url}" target="_blank" title="{'Open Instagram page in a new tab'|@translate}">Open</a></div> 
     338                                                <div class="actions"><a href="{$thumbnail.src}" class="preview-box">{'Zoom'|translate}</a> &middot; <a href="{$thumbnail.url}" target="_blank" title="{'Open Instagram page in a new tab'|translate}">Open</a></div> 
    379339                                                        <span> 
    380340                                                                <img src="{$thumbnail.thumb}" alt="{$thumbnail.title}" title="{$thumbnail.title|@escape:'html'}" class="thumbnail"> 
     
    396356    {/if} 
    397357     
    398       <div style="float:right;margin-top:10px;">{'display'|@translate} 
     358      <div style="float:right;margin-top:10px;">{'display'|translate} 
    399359        <a href="{$U_DISPLAY}&amp;display=20">20</a> 
    400360        &middot; <a href="{$U_DISPLAY}&amp;display=50">50</a> 
    401361        &middot; <a href="{$U_DISPLAY}&amp;display=100">100</a> 
    402         &middot; <a href="{$U_DISPLAY}&amp;display=all">{'all'|@translate}</a> 
    403         {'photos per page'|@translate} 
     362        &middot; <a href="{$U_DISPLAY}&amp;display=all">{'all'|translate}</a> 
     363        {'photos per page'|translate} 
    404364      </div> 
    405365    </div> 
    406366 
    407367  {else} 
    408     <div>{'No photo in the current set.'|@translate}</div> 
     368    <div>{'No photo in the current set.'|translate}</div> 
    409369  {/if} 
    410370  </fieldset> 
    411371   
    412372  <fieldset> 
    413     <legend>{'Import options'|@translate}</legend> 
     373    <legend>{'Import options'|translate}</legend> 
    414374 
    415375    <p> 
    416       <label for="albumSelect"><b>{'Album'|@translate}:</b></label> 
     376      <label for="albumSelect"><b>{'Album'|translate}:</b></label> 
    417377      <select style="width:400px" name="associate" id="albumSelect" size="1"> 
    418378        {html_options options=$category_parent_options} 
    419379      </select> 
    420       {'... or '|@translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a> 
     380      {'... or '|translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|translate}">{'create a new album'|translate}</a> 
    421381    </p> 
    422382     
    423383    <p> 
    424       <b>{'Fill these fields from Instagram datas'|@translate}:</b> 
    425       <label><input type="checkbox" name="fill_name" checked="checked"> {'Photo name'|@translate}</label> 
    426       <label><input type="checkbox" name="fill_author" checked="checked"> {'Author'|@translate}</label> 
    427       <label><input type="checkbox" name="fill_tags" checked="checked"> {'Tags'|@translate}</label> 
    428       <label><input type="checkbox" name="fill_taken" checked="checked"> {'Creation date'|@translate}</label> 
     384      <b>{'Fill these fields from Instagram datas'|translate}:</b> 
     385      <label><input type="checkbox" name="fill_name" checked="checked"> {'Photo name'|translate}</label> 
     386      <label><input type="checkbox" name="fill_author" checked="checked"> {'Author'|translate}</label> 
     387      <label><input type="checkbox" name="fill_tags" checked="checked"> {'Tags'|translate}</label> 
     388      <label><input type="checkbox" name="fill_taken" checked="checked"> {'Creation date'|translate}</label> 
     389      <label><input type="checkbox" name="fill_geotag" checked="checked"> {'Geolocalization'|translate}</label> 
    429390    </p> 
    430391 
    431392    <p> 
    432393      <input type="hidden" name="album" value="{$album}"> 
    433       <input type="submit" name="import_set" id="beginImport" value="{'Begin transfer'|@translate}" style="display:none;"> 
    434       <span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|@translate}</i> <span id="progress"></span></span> 
     394      <input type="submit" name="import_set" id="beginImport" value="{'Begin transfer'|translate}" style="display:none;"> 
     395      <span id="loader_import" style="display:none;"><img src="admin/themes/default/images/ajax-loader.gif"> <i>{'Processing...'|translate}</i> <span id="progress"></span></span> 
    435396    </p> 
    436397  </fieldset> 
  • extensions/instagram2piwigo/admin/template/import.tpl

    r19711 r26199  
    88 
    99{* <!-- MAIN MENU --> *} 
    10 {elseif $ACTION == 'main'} 
    11 {footer_script}{literal} 
     10{else if $ACTION == 'main'} 
     11{footer_script} 
    1212jQuery('input[type="submit"]').click(function() { 
    1313  window.location.href = $(this).attr("data"); 
     
    1616  $("#loader_import").fadeIn(); 
    1717}); 
    18 {/literal}{/footer_script} 
     18{/footer_script} 
    1919 
    2020<p> 
     
    3030 
    3131{* <!-- PHOTOS LIST --> *} 
    32 {elseif $ACTION == 'list_photos'} 
     32{else if $ACTION == 'list_photos'} 
    3333{include file=$INSTAG_ABS_PATH|@cat:'admin/template/import.list_photos.tpl'} 
    3434 
  • extensions/instagram2piwigo/include/functions.inc.php

    r21290 r26199  
    11<?php 
    2 if (!defined('INSTAG_PATH')) die('Hacking attempt!'); 
    3  
    4 /** 
    5  * test if a download method is available 
    6  * @return: bool 
    7  */ 
    8 if (!function_exists('test_remote_download')) 
    9 { 
    10   function test_remote_download() 
    11   { 
    12     return function_exists('curl_init') || ini_get('allow_url_fopen'); 
    13   } 
    14 } 
     2defined('INSTAG_PATH') or die('Hacking attempt!'); 
    153 
    164/** 
     
    120108  } 
    121109} 
    122  
    123 ?> 
  • extensions/instagram2piwigo/include/ws_functions.inc.php

    r19583 r26199  
    11<?php 
    2 if (!defined('INSTAG_PATH')) die('Hacking attempt!'); 
     2defined('INSTAG_PATH') or die('Hacking attempt!'); 
    33 
    44function instagram_add_ws_method($arr) 
     
    1414      'fills' => array('default' =>null), 
    1515      ), 
    16     'Used by Instagram2Piwigo' 
     16    'Used by Instagram2Piwigo', 
     17    null, 
     18    array('hidden'=>true) 
    1719    ); 
    1820} 
     
    2628   
    2729  global $conf; 
    28   $conf['Instagram2Piwigo'] = unserialize($conf['Instagram2Piwigo']); 
    2930   
    30   if ( empty($conf['Instagram2Piwigo']['api_key']) or empty($conf['Instagram2Piwigo']['secret_key']) ) 
     31  if (empty($conf['Instagram2Piwigo']['api_key']) or empty($conf['Instagram2Piwigo']['secret_key'])) 
    3132  { 
    3233    return new PwgError(null, l10n('Please fill your API keys on the configuration tab')); 
     
    6566    'username' => $photo_f->getUser()->getFullName(true), 
    6667    'tags' => $photo_f->getTags()->toArray(), 
     68    'location' => $photo_f->getLocation(), 
    6769    ); 
    6870  $photo = array_merge($param, $photo); 
     
    9597   
    9698    $updates = array(); 
    97     if (in_array('fill_name', $photo['fills']))   $updates['name'] = $photo['title']; 
     99    if (in_array('fill_name', $photo['fills']))   $updates['name'] = pwg_db_real_escape_string($photo['title']); 
    98100    if (in_array('fill_taken', $photo['fills']))  $updates['date_creation'] = $photo['date']; 
    99     if (in_array('fill_author', $photo['fills'])) $updates['author'] = $photo['username']; 
     101    if (in_array('fill_author', $photo['fills'])) $updates['author'] = pwg_db_real_escape_string($photo['username']); 
     102    if (in_array('fill_geotag', $photo['fills']) and !empty($photo['location']) ) 
     103    { 
     104      $updates['latitude'] = pwg_db_real_escape_string($photo['location']->getLat()); 
     105      $updates['longitude'] = pwg_db_real_escape_string($photo['location']->getLng()); 
     106    } 
    100107     
    101108    if (count($updates)) 
     
    108115    } 
    109116     
    110     if ( !empty($photo['tags']) and in_array('fill_tags', $photo['fills']) ) 
     117    if (!empty($photo['tags']) and in_array('fill_tags', $photo['fills'])) 
    111118    { 
    112119      $raw_tags = implode(',', $photo['tags']); 
     
    115122  } 
    116123   
    117   return sprintf(l10n('Photo "%s" imported'), $photo['title']); 
     124  return l10n('Photo "%s" imported', $photo['title']); 
    118125} 
    119  
    120 ?> 
  • extensions/instagram2piwigo/main.inc.php

    r24817 r26199  
    99*/ 
    1010 
    11 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 
     11defined('PHPWG_ROOT_PATH') or die('Hacking attempt!'); 
    1212 
    1313global $conf; 
    1414 
    15 define('INSTAG_PATH', PHPWG_PLUGINS_PATH . basename(dirname(__FILE__)) . '/'); 
    16 define('INSTAG_ADMIN', get_root_url() . 'admin.php?page=plugin-' . basename(dirname(__FILE__))); 
     15define('INSTAG_ID',       basename(dirname(__FILE__))); 
     16define('INSTAG_PATH',     PHPWG_PLUGINS_PATH . INSTAG_ID . '/'); 
     17define('INSTAG_ADMIN',    get_root_url() . 'admin.php?page=plugin-' . INSTAG_ID); 
    1718define('INSTAG_FS_CACHE', $conf['data_location'].'instagram_cache/'); 
     19define('INSTAG_VERSION',  'auto'); 
    1820 
     21 
     22include_once(INSTAG_PATH . 'include/ws_functions.inc.php'); 
     23 
     24 
     25add_event_handler('init', 'instagram_init'); 
     26add_event_handler('ws_add_methods', 'instagram_add_ws_method'); 
    1927 
    2028if (defined('IN_ADMIN')) 
    2129{ 
    2230  add_event_handler('get_admin_plugin_menu_links', 'instagram_admin_menu'); 
     31 
    2332  add_event_handler('get_batch_manager_prefilters', 'instagram_add_batch_manager_prefilters'); 
    2433  add_event_handler('perform_batch_manager_prefilters', 'instagram_perform_batch_manager_prefilters', EVENT_HANDLER_PRIORITY_NEUTRAL, 2); 
    25   add_event_handler('loc_begin_admin_page', 'instagram_prefilter_from_url'); 
    2634 
    2735  function instagram_admin_menu($menu)  
    2836  { 
    29     array_push($menu, array( 
     37    $menu[] = array( 
    3038      'NAME' => 'Instagram2Piwigo', 
    3139      'URL' => INSTAG_ADMIN, 
    32     )); 
     40      ); 
    3341    return $menu; 
    3442  } 
     
    3644  function instagram_add_batch_manager_prefilters($prefilters) 
    3745  { 
    38     array_push($prefilters, array( 
     46    $prefilters[] = array( 
    3947      'ID' => 'instagram', 
    4048      'NAME' => l10n('Imported from Instagram'), 
    41     )); 
     49      ); 
    4250    return $prefilters; 
    4351  } 
     
    5765    return $filter_sets; 
    5866  } 
    59    
    60   function instagram_prefilter_from_url() 
    61   { 
    62     global $page; 
    63     if ($page['page'] == 'batch_manager' && @$_GET['prefilter'] == 'instagram') 
    64     { 
    65       $_SESSION['bulk_manager_filter'] = array('prefilter' => 'instagram'); 
    66       unset($_GET['prefilter']); 
    67     } 
    68   } 
    6967} 
    7068 
    7169 
    72 include_once(INSTAG_PATH . 'include/ws_functions.inc.php'); 
     70function instagram_init() 
     71{ 
     72  global $conf; 
    7373 
    74 add_event_handler('ws_add_methods', 'instagram_add_ws_method'); 
     74  include_once(INSTAG_PATH . 'maintain.inc.php'); 
     75  $maintain = new instagram2piwigo_maintain(INSTAG_ID); 
     76  $maintain->autoUpdate(INSTAG_VERSION, 'install'); 
    7577 
    76 ?> 
     78  $conf['Instagram2Piwigo'] = unserialize($conf['Instagram2Piwigo']); 
     79} 
  • extensions/instagram2piwigo/maintain.inc.php

    r24817 r26199  
    11<?php 
    2 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 
     2defined('PHPWG_ROOT_PATH') or die('Hacking attempt!'); 
    33 
    4 define( 
    5   'Instagram2Piwigo_default_config',  
    6   serialize(array( 
     4class instagram2piwigo_maintain extends PluginMaintain 
     5{ 
     6  private $installed = false; 
     7 
     8  private $default_conf = array( 
    79    'api_key' => null, 
    810    'secret_key' => null, 
    9     )) 
    10   ); 
     11    ); 
    1112 
     13  function install($plugin_version, &$errors=array()) 
     14  { 
     15    global $conf; 
    1216 
    13 function plugin_install()  
    14 { 
    15   global $conf; 
    16    
    17   conf_update_param('Instagram2Piwigo', Instagram2Piwigo_default_config); 
    18    
    19   mkdir($conf['data_location'].'instagram_cache/', 0755); 
    20 } 
     17    if (empty($conf['Instagram2Piwigo'])) 
     18    { 
     19      $conf['Instagram2Piwigo'] = serialize($this->default_conf); 
     20      conf_update_param('Instagram2Piwigo', $conf['Instagram2Piwigo']); 
     21    } 
    2122 
    22 function plugin_activate() 
    23 { 
    24   global $conf; 
     23    mkgetdir(PHPWG_ROOT_PATH . $conf['data_location'] . 'instagram_cache/', MKGETDIR_DEFAULT&~MKGETDIR_DIE_ON_ERROR); 
    2524 
    26   if (empty($conf['Instagram2Piwigo'])) 
     25    $this->installed = true; 
     26  } 
     27 
     28  function activate($plugin_version, &$errors=array()) 
    2729  { 
    28     conf_update_param('Instagram2Piwigo', Instagram2Piwigo_default_config); 
     30    if (!$this->installed) 
     31    { 
     32      $this->install($plugin_version, $errors); 
     33    } 
    2934  } 
    30    
    31   if (!file_exists($conf['data_location'].'instagram_cache/')) 
     35 
     36  function deactivate() 
    3237  { 
    33     mkdir($conf['data_location'].'instagram_cache/', 0755); 
     38  } 
     39 
     40  function uninstall() 
     41  { 
     42    global $conf; 
     43 
     44    conf_delete_param('Instagram2Piwigo'); 
     45 
     46    self::rrmdir(PHPWG_ROOT_PATH . $conf['data_location'] . 'instagram_cache/'); 
     47  } 
     48 
     49  static function rrmdir($dir) 
     50  { 
     51    if (!is_dir($dir)) 
     52    { 
     53      return false; 
     54    } 
     55    $dir = rtrim($dir, '/'); 
     56    $objects = scandir($dir); 
     57    $return = true; 
     58 
     59    foreach ($objects as $object) 
     60    { 
     61      if ($object !== '.' && $object !== '..') 
     62      { 
     63        $path = $dir.'/'.$object; 
     64        if (filetype($path) == 'dir') 
     65        { 
     66          $return = $return && self::rrmdir($path); 
     67        } 
     68        else 
     69        { 
     70          $return = $return && @unlink($path); 
     71        } 
     72      } 
     73    } 
     74 
     75    return $return && @rmdir($dir); 
    3476  } 
    3577} 
    36  
    37 function plugin_uninstall()  
    38 { 
    39   global $conf; 
    40    
    41   pwg_query('DELETE FROM `'. CONFIG_TABLE .'` WHERE param = "Instagram2Piwigo";'); 
    42   unset($conf['Instagram2Piwigo']); 
    43    
    44   rrmdir($conf['data_location'].'instagram_cache/'); 
    45 } 
    46  
    47 function rrmdir($dir) 
    48 { 
    49   if (!is_dir($dir)) 
    50   { 
    51     return false; 
    52   } 
    53   $dir = rtrim($dir, '/'); 
    54   $objects = scandir($dir); 
    55   $return = true; 
    56    
    57   foreach ($objects as $object) 
    58   { 
    59     if ($object !== '.' && $object !== '..') 
    60     { 
    61       $path = $dir.'/'.$object; 
    62       if (filetype($path) == 'dir')  
    63       { 
    64         $return = $return && rrmdir($path);  
    65       } 
    66       else  
    67       { 
    68         $return = $return && @unlink($path); 
    69       } 
    70     } 
    71   } 
    72    
    73   return $return && @rmdir($dir); 
    74 }  
    75  
    76 ?> 
Note: See TracChangeset for help on using the changeset viewer.