Dotclear

Changeset 2474


Ignore:
Timestamp:
07/10/10 19:11:01 (13 years ago)
Author:
Osku
Message:

filesAlias 0.4.2

Location:
plugins/filesAlias
Files:
3 added
4 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • plugins/filesAlias/_admin.php

    r2169 r2474  
    1313if (!defined('DC_CONTEXT_ADMIN')) { return; } 
    1414 
    15 $_menu['Plugins']->addItem(__('Aliases for files'),'plugin.php?p=filesAlias','index.php?pf=filesAlias/icon.png', 
     15$_menu['Plugins']->addItem(__('Medias sharing'),'plugin.php?p=filesAlias','index.php?pf=filesAlias/icon.png', 
    1616     preg_match('/plugin.php\?p=filesAlias(&.*)?$/',$_SERVER['REQUEST_URI']), 
    1717     $core->auth->check('admin',$core->blog->id)); 
  • plugins/filesAlias/_define.php

    r2179 r2474  
    1515$this->registerModule( 
    1616     /* Name */               'filesAlias', 
    17      /* Description*/         "Create aliases of your blog's files", 
    18      /* Author */             "Osku", 
    19      /* Version */            '0.3.3', 
     17     /* Description*/         "Manage aliases of your blog's medias", 
     18     /* Author */             "Osku and contributors", 
     19     /* Version */            '0.4.2', 
    2020     /* Permissions */        'contentadmin' 
    2121); 
  • plugins/filesAlias/_install.php

    r2169 r2474  
    2727     ->filesalias_url('varchar',255,false) 
    2828     ->filesalias_destination('varchar',255,false) 
    29      ->filesalias_position('smallint',0,false,1) 
     29     ->filesalias_password('varchar',32,true,null) 
    3030     ->filesalias_disposable('smallint',0,false,0) 
    3131      
     
    3333      
    3434     ->index('idx_filesalias_blog_id','btree','blog_id') 
    35      ->index('idx_filesalias_blog_id_filesalias_position','btree','blog_id','filesalias_position') 
    3635      
    3736     ->reference('fk_filesalias_blog','blog_id','blog','blog_id','cascade','cascade') 
     
    4241$changes = $si->synchronize($s); 
    4342 
    44 $core->blog->settings->setNamespace('filesalias'); 
    45 $s =& $core->blog->settings; 
     43$s =& $core->blog->settings->filesalias; 
    4644$s->put('filesalias_prefix','pub','string','Medias alias URL prefix',true,true); 
    4745 
  • plugins/filesAlias/_prepend.php

    r2179 r2474  
    1313if (!defined('DC_RC_PATH')) { return; } 
    1414 
    15 $__autoload['FilesAliases'] = dirname(__FILE__).'/inc/class.files.alias.php'; 
     15$__autoload['filesAliases'] = dirname(__FILE__).'/inc/class.files.alias.php'; 
    1616$__autoload['aliasMedia'] = dirname(__FILE__).'/inc/class.files.alias.php'; 
    1717 
    18 $core->url->register('filesalias',$core->blog->settings->filesalias_prefix,'^' 
    19           .$GLOBALS['core']->blog->settings->filesalias_prefix.'/(.+)$',array('urlFilesAlias','alias')); 
     18$core->blog->settings->addNamespace('filesalias'); 
     19$core->filealias = new filesAliases($core); 
    2020 
     21$core->url->register('filesalias', 
     22     $core->blog->settings->filesalias->filesalias_prefix, 
     23     '^'.$core->blog->settings->filesalias->filesalias_prefix.'/(.+)$', 
     24     array('urlFilesAlias','alias') 
     25); 
    2126?> 
  • plugins/filesAlias/_public.php

    r2179 r2474  
    1414if (!defined('DC_RC_PATH')) { return; } 
    1515 
     16$core->tpl->setPath($core->tpl->getPath(), dirname(__FILE__).'/default-templates'); 
     17$core->tpl->addValue('fileAliasURL',array('templateAlias','fileAliasURL')); 
     18 
     19class templateAlias 
     20{ 
     21     public static function fileAliasURL($attr) 
     22     { 
     23          global $core, $_ctx; 
     24          
     25          $f = $GLOBALS['core']->tpl->getFilters($attr); 
     26          return '<?php echo '.sprintf($f,'$core->blog->url.$core->url->getBase("filesalias")."/".$_ctx->filealias->filesalias_url').'; ?>'; 
     27     } 
     28} 
     29 
    1630class urlFilesAlias extends dcUrlHandlers 
    1731{ 
    1832     public static function alias($args) 
    1933     { 
    20           global $core; 
    21           $f = new FilesAliases($core); 
    22           $dest = $f->getAlias($args); 
    23           $owned = false; 
    24                      
    25           if ($dest->isEmpty()) { 
     34          $_ctx =& $GLOBALS['_ctx']; 
     35          $core =& $GLOBALS['core']; 
     36          $delete = false; 
     37           
     38          $_ctx->filealias = $core->filealias->getAlias($args); 
     39 
     40          if ($_ctx->filealias->isEmpty()) { 
    2641               self::p404(); 
    2742          } 
    2843           
    29           $target = $dest->filesalias_destination; 
     44          if ($_ctx->filealias->filesalias_disposable) { 
     45               $delete = true; 
     46          } 
    3047           
    31           if ($dest->filesalias_disposable) { 
    32                $f->deleteAlias($args); 
    33           } 
    34  
    35           $a= new aliasMedia($core); 
     48          if ($_ctx->filealias->filesalias_password) { 
    3649           
    37           if (!preg_match('/^'.preg_quote($a->root_url,'/').'/',$target)) { 
    38  
    39                $media = $a->getMediaId($target); 
    40  
    41                if (empty($media)) 
     50               # Check for match 
     51               if (!empty($_POST['filepassword']) && $_POST['filepassword'] == $_ctx->filealias->filesalias_password) 
    4252               { 
    43                     self::p404();             
     53                    self::servefile($_ctx->filealias->filesalias_destination,$delete); 
    4454               } 
    45                 
    46                $file = $core->media->getFile($media); 
    47            
    48                if (empty($file->file)) 
    49                  { 
    50                    self::p404(); 
    51                    return; 
    52                  } 
    53                   
    54                header('Content-type: '.$file->type); 
    55                header('Content-Length: '.$file->size); 
    56                header('Content-Disposition: attachment; filename="'.$file->basename.'"'); 
    57                readfile($file->file); 
    58                return; 
     55               else 
     56               { 
     57                    self::serveDocument('file-password-form.html','text/html',false); 
     58                    return; 
     59               } 
    5960          } 
    6061          else 
    6162          { 
    62                http::head(302, 'Found'); 
    63                header('Location: '.$target); 
    64                exit; 
     63               self::servefile($_ctx->filealias->filesalias_destination,$delete); 
    6564          } 
     65     } 
     66      
     67     public static function servefile($target,$delete=false) 
     68     { 
     69          $core =& $GLOBALS['core'];     
     70           
     71          $a= new aliasMedia($core); 
     72          $media = $a->getMediaId($target); 
     73 
     74          if (empty($media)) 
     75          { 
     76               self::p404();             
     77          } 
     78           
     79          $file = $core->media->getFile($media); 
     80      
     81          if (empty($file->file)) 
     82            { 
     83              self::p404(); 
     84            } 
     85             
     86          header('Content-type: '.$file->type); 
     87          header('Content-Length: '.$file->size); 
     88          header('Content-Disposition: attachment; filename="'.$file->basename.'"'); 
     89          readfile($file->file); 
     90          if ($delete) { 
     91               $core->filealias->deleteAlias($target); 
     92          } 
     93          return;    
    6694     } 
    6795} 
  • plugins/filesAlias/inc/class.files.alias.php

    r2179 r2474  
    1212# -- END LICENSE BLOCK ------------------------------------ 
    1313 
    14 class FilesAliases 
     14class filesAliases 
    1515{ 
    1616     protected $core; 
     
    2929           
    3030          $this->aliases = array(); 
    31           $sql =    'SELECT filesalias_url, filesalias_destination, filesalias_position, filesalias_disposable '. 
     31          $sql =    'SELECT filesalias_url, filesalias_destination, filesalias_password, filesalias_disposable '. 
    3232                    'FROM '.$this->core->prefix.'filesalias '. 
    3333                    "WHERE blog_id = '".$this->core->con->escape($this->core->blog->id)."' ". 
    34                     'ORDER BY filesalias_position ASC '; 
     34                    'ORDER BY filesalias_url ASC '; 
    3535          $this->aliases = $this->core->con->select($sql)->rows(); 
    3636          return $this->aliases; 
     
    3939     public function getAlias($url) 
    4040     { 
    41           $strReq = 'SELECT filesalias_url, filesalias_destination, filesalias_position, filesalias_disposable '. 
     41          $strReq = 'SELECT filesalias_url, filesalias_destination, filesalias_password, filesalias_disposable '. 
    4242                    'FROM '.$this->core->prefix.'filesalias '. 
    4343                    "WHERE blog_id = '".$this->core->con->escape($this->core->blog->id)."' ". 
    4444                    "AND filesalias_url = '".$this->core->con->escape($url)."' ". 
    45                     'ORDER BY filesalias_position ASC '; 
     45                    'ORDER BY filesalias_url ASC '; 
    4646 
    4747          $rs = $this->core->con->select($strReq); 
     
    5959                    if (!empty($v['filesalias_url']) && !empty($v['filesalias_destination'])) 
    6060                    { 
    61                          $this->createAlias($v['filesalias_url'],$v['filesalias_destination'],$k+1,$v['filesalias_disposable']); 
     61                         $this->createAlias($v['filesalias_url'],$v['filesalias_destination'],$v['filesalias_disposable'],$v['filesalias_password']); 
    6262                    } 
    6363               } 
     
    7272     } 
    7373      
    74      public function createAlias($url,$destination,$position,$disposable=0) 
     74     public function createAlias($url,$destination,$disposable=0,$password=null) 
    7575     { 
    7676          if (!$url) { 
     
    8686          $cur->filesalias_url = (string) $url; 
    8787          $cur->filesalias_destination = (string) $destination; 
    88           $cur->filesalias_position = abs((integer) $position); 
     88          $cur->filesalias_password = $password; 
    8989          $cur->filesalias_disposable = abs((integer) $disposable); 
    9090          $cur->insert(); 
     
    109109} 
    110110 
    111 class  aliasMedia extends dcMedia 
     111class aliasMedia extends dcMedia 
    112112{ 
    113113     public function __construct($core) 
  • plugins/filesAlias/index.php

    r2179 r2474  
    1212# -- END LICENSE BLOCK ------------------------------------ 
    1313 
    14 $o = new FilesAliases($core); 
     14$o = $core->filealias; 
    1515$aliases = $o->getAliases(); 
    1616$media = new dcMedia($core); 
     17$a= new aliasMedia($core); 
    1718 
    1819# Update aliases 
     
    3435     $target = $_POST['filesalias_destination']; 
    3536     $totrash = $_POST['filesalias_disposable']; 
     37     $password = empty($_POST['filesalias_password'])? null : $_POST['filesalias_password']; 
    3638      
    3739     if (preg_match('/^'.preg_quote($media->root_url,'/').'/',$target)) { 
    3840          $target = preg_replace('/^'.preg_quote($media->root_url,'/').'/','',$target); 
     41          $media = $a->getMediaId($target); 
     42 
     43          if (!empty($media)) 
     44          { 
     45               try { 
     46                    $o->createAlias($url,$target,$totrash,$password); 
     47                    http::redirect($p_url.'&created=1'); 
     48               } catch (Exception $e) { 
     49                    $core->error->add($e->getMessage()); 
     50               } 
     51          } 
     52          else 
     53          { 
     54               $core->error->add(__('Target is not in medias manager.')); 
     55          } 
    3956     } 
    40  
    41      try { 
    42           $o->createAlias($url,$target,count($aliases)+1,$totrash); 
    43           http::redirect($p_url.'&created=1'); 
    44      } catch (Exception $e) { 
    45           $core->error->add($e->getMessage()); 
     57     else 
     58     { 
     59          $core->error->add(__('Target is not in medias manager.')); 
    4660     } 
    4761} 
     
    5165{ 
    5266     try { 
    53           if (empty($_POST['filesalias_prefix'])) { 
    54                throw new Exception(__('No prefix for your files aliases.')); 
    55           } 
    56           $core->blog->settings->setNameSpace('filesalias'); 
    57           $core->blog->settings->put('filesalias_prefix',$_POST['filesalias_prefix'],'string','Medias alias URL prefix'); 
     67          $prefix = (empty($_POST['filesalias_prefix'])) ? 'pub' : $_POST['filesalias_prefix']; 
     68           
     69          $core->blog->settings->filesalias->put('filesalias_prefix',$prefix,'string','Medias alias URL prefix'); 
    5870          $core->blog->triggerBlog(); 
    5971          http::redirect($p_url.'&modified=1'); 
     
    6577<html> 
    6678<head> 
    67      <title><?php echo __('Aliases for files'); ?></title> 
     79     <title><?php echo __('Medias sharing'); ?></title> 
    6880</head> 
    6981 
     
    7183<?php 
    7284echo 
    73 '<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.__('Aliases for files').'</h2>'; 
     85'<h2>'.html::escapeHTML($core->blog->name).' &rsaquo; '.__('Medias sharing').'</h2>'; 
    7486?> 
    7587<?php 
     
    99111     '<th>'.__('alias').'</th>'. 
    100112     '<th>'.__('destination').'</th>'. 
     113     '<th>'.__('password').'</th>'. 
    101114     '<th>'.'<img alt="'.__('disposable').'" title="'.__('disposable?').'" src="index.php?pf=filesAlias/img/trash.png" />'.'</th>'.     
    102      //'<td>'.__('Alias position').'</td>'. 
    103115     '</tr>'; 
    104116      
    105117     foreach ($aliases as $k => $v) 
    106118     { 
    107           if($v['filesalias_disposable']) { 
    108                $line = 'offline'; 
    109                $status = '<img alt="'.__('disposable').'" title="'.__('disposable').'" src="index.php?pf=filesAlias/img/bomb.png" />'; 
    110           } 
    111           else 
    112           { 
    113                $line = ''; 
    114                $status = '<img alt="'.__('not disposable').'" title="'.__('not disposable').'" src="index.php?pf=filesAlias/img/default.png" />'; 
    115           } 
    116            
    117119          $url = $core->blog->url.$core->url->getBase('filesalias').'/'.html::escapeHTML($v['filesalias_url']); 
    118120          $link = '<a href="'.$url.'">'. 
    119                     '<img alt="'.__('Direct link').'" title="'.$url.'" src="index.php?pf=filesAlias/img/link.png" /></a>'; 
     121                    '<img alt="'.__('Direct link').'" title="'.__('Direct link').'" src="index.php?pf=filesAlias/img/bt_link.png" /></a>'; 
    120122                     
    121           if (!preg_match('#^http(s)?://#',$v['filesalias_destination'])) { 
    122                $public = 'style="background:#FFF6BF;color:#514721;"'; 
    123           }  
    124           else  
    125           { 
    126                $public = ''; 
    127           } 
    128       
    129123          echo 
    130           '<tr class="'.$line.'" >'. 
    131           '<td class="status nowrap">'.$link.'&nbsp;'.$status.form::field(array('a['.$k.'][filesalias_url]'),48,255,html::escapeHTML($v['filesalias_url']),'','','','style="margin-left:10px;"').'</td>'. 
    132           '<td class=" ">'.form::field(array('a['.$k.'][filesalias_destination]'),70,255,html::escapeHTML($v['filesalias_destination']),'maximal','','',$public).'</td>'. 
    133           '<td class="status nowrap">'.form::checkbox(array('a['.$k.'][filesalias_disposable]'),1,$v['filesalias_disposable']).'</td>'. 
     124          '<tr>'. 
     125          '<td>'.form::field(array('a['.$k.'][filesalias_url]'),40,255,html::escapeHTML($v['filesalias_url'])).'</td>'. 
     126          '<td class="maximal">'.form::field(array('a['.$k.'][filesalias_destination]'),50,255,html::escapeHTML($v['filesalias_destination'])).'</td>'. 
     127          '<td>'.form::field(array('a['.$k.'][filesalias_password]'),20,255,html::escapeHTML($v['filesalias_password'])).'</td>'. 
     128          '<td class="status nowrap">'.form::checkbox(array('a['.$k.'][filesalias_disposable]'),1,$v['filesalias_disposable']).$link.'</td>'. 
    134129          '</tr>'; 
    135130     } 
     
    148143'<legend>'.__('New alias').'</legend>'. 
    149144'<p class="field"><label class="required">'.__('Destination:').' '.form::field('filesalias_destination',50,255).'</label></p>'. 
    150 '<p class="field"><label>'.__('Choose URL:').' '.form::field('filesalias_url',50,255).'</label></p><br />'. 
    151 '<p class="form-note">'.__('Leave empty for an auto-generated URL.').'</p>'. 
     145'<p class="field"><label>'.__('Choose URL:').' '.form::field('filesalias_url',50,255).'</label></p>'. 
     146'<p class="field"><label>'.__('Password:').' '.form::field('filesalias_password',50,255).'</label></p>'. 
    152147'<p class="field"><label>'.__('Disposable:').' '.form::checkbox('filesalias_disposable',1).'</label></p>'. 
     148 
    153149'<p>'.$core->formNonce().'<input type="submit" value="'.__('Save').'" /></p>'. 
    154150'</fieldset>'. 
     
    161157     '<p>'.__('Base URL scheme:').'&nbsp;&mdash;&nbsp;'.$core->blog->url.'<span style="color : #069">'.$core->url->getBase('filesalias').'</span></p>'. 
    162158'<p><label class="required">' 
    163 .__('Media prefix URL:').' '.form::field('filesalias_prefix',20,255,$core->blog->settings->filesalias_prefix).'</label></p>'. 
     159.__('Media prefix URL:').' '.form::field('filesalias_prefix',20,255,$core->blog->settings->filesalias->filesalias_prefix).'</label></p>'. 
    164160'<p>'.$core->formNonce().'<input type="submit" value="'.__('Save').'" /></p>'. 
    165161'</fieldset>'. 
  • plugins/filesAlias/locales/fr/main.po

    r2169 r2474  
    1 # Language: français 
    2 # Module: filesAlias - 0.2 
    3 # Date: 2010-04-07 22:14:28 
    4 # Translated with translater 1.3 
     1# Language: Français 
     2# Module: filesAlias - 0.4 
     3# Date: 2010-07-09 15:39:30 
     4# Translated with translater 1.4.1 
    55 
    66msgid "" 
    77msgstr "" 
    88"Content-Type: text/plain; charset=UTF-8\n" 
    9 "Project-Id-Version: filesAlias 0.2\n" 
     9"Project-Id-Version: filesAlias 0.4\n" 
    1010"POT-Creation-Date: \n" 
    11 "PO-Revision-Date: 2010-04-07T22:14:28+00:00\n" 
    12 "Last-Translator: Osku\n" 
     11"PO-Revision-Date: 2010-07-09T15:39:30+00:00\n" 
     12"Last-Translator: osku\n" 
    1313"Language-Team: \n" 
    1414"MIME-Version: 1.0\n" 
     
    1616 
    1717#: _admin.php:15 
    18 #: index.php:59 
    19 #: index.php:65 
    20 msgid "Aliases for files" 
    21 msgstr "Alias pour fichiers" 
     18#: index.php:69 
     19#: index.php:75 
     20msgid "Medias sharing" 
     21msgstr "Partage de médias" 
    2222 
    2323#: inc/class.files.alias.php:77 
     
    2929msgstr "La destination du fichier est vide." 
    3030 
    31 #: index.php:46 
    32 msgid "No prefix for your files aliases." 
    33 msgstr "Aucun préfixe pour vos alias de fichiers." 
     31#: index.php:49 
     32msgid "Target is not in medias manager." 
     33msgstr "La cible n'est pas dans le gestionnaire de médias." 
    3434 
    35 #: index.php:69 
     35#: index.php:79 
    3636msgid "Aliases successfully updated." 
    3737msgstr "Les alias ont été mis à jour avec succès." 
    3838 
    39 #: index.php:73 
     39#: index.php:83 
    4040msgid "Alias for this media created." 
    4141msgstr "L'alias pour votre fichier a été créé." 
    4242 
    43 #: index.php:77 
     43#: index.php:87 
    4444msgid "Configuration successfully updated." 
    4545msgstr "Configuration mise à jour avec succès." 
    4646 
    47 #: index.php:82 
     47#: index.php:92 
    4848msgid "No alias" 
    4949msgstr "Aucun alias" 
    5050 
    51 #: index.php:89 
     51#: index.php:99 
    5252msgid "Aliases list" 
    5353msgstr "Liste des alias" 
    5454 
    55 #: index.php:91 
     55#: index.php:101 
    5656msgid "alias" 
    5757msgstr "alias" 
    5858 
    59 #: index.php:92 
     59#: index.php:102 
    6060msgid "destination" 
    6161msgstr "destination" 
    6262 
    63 #: index.php:93 
    64 #: index.php:101 
    65 #: index.php:101 
     63#: index.php:103 
     64msgid "password" 
     65msgstr "mot de passe" 
     66 
     67#: index.php:104 
    6668msgid "disposable" 
    6769msgstr "jetable" 
    6870 
    69 #: index.php:93 
     71#: index.php:104 
    7072msgid "disposable?" 
    7173msgstr "jetable ?" 
    7274 
    73 #: index.php:94 
    74 msgid "Alias position" 
    75 msgstr "Position de l'alias" 
    76  
    77 #: index.php:106 
    78 #: index.php:106 
    79 msgid "not disposable" 
    80 msgstr "non jetable" 
    81  
    82 #: index.php:110 
    83 #: index.php:110 
     75#: index.php:111 
     76#: index.php:111 
    8477msgid "Direct link" 
    8578msgstr "Lien direct" 
    8679 
    87 #: index.php:121 
     80#: index.php:123 
    8881msgid "To remove a link, empty its alias or destination." 
    8982msgstr "Pour supprimer un lien, vider son alias ou sa destination." 
    9083 
    91 #: index.php:123 
     84#: index.php:125 
    9285msgid "Update" 
    9386msgstr "Mettre à jour" 
    9487 
    95 #: index.php:131 
     88#: index.php:133 
    9689msgid "New alias" 
    9790msgstr "Nouvel alias" 
    9891 
    99 #: index.php:132 
     92#: index.php:134 
    10093msgid "Destination:" 
    10194msgstr "Destination :" 
    10295 
    103 #: index.php:133 
     96#: index.php:135 
    10497msgid "Choose URL:" 
    10598msgstr "Choisir l'URL :" 
    10699 
    107 #: index.php:134 
    108 msgid "Leave empty for an auto-generated URL." 
    109 msgstr "Laisser vide pour une URL générée automatiquement." 
     100#: index.php:136 
     101msgid "Password:" 
     102msgstr "Mot de passe :" 
    110103 
    111 #: index.php:135 
     104#: index.php:137 
    112105msgid "Disposable:" 
    113106msgstr "Jetable :" 
    114107 
    115 #: index.php:136 
    116 #: index.php:147 
     108#: index.php:139 
     109#: index.php:150 
    117110msgid "Save" 
    118111msgstr "Enregistrer" 
    119112 
    120 #: index.php:143 
     113#: index.php:146 
    121114msgid "Prefix of Aliases URLs" 
    122115msgstr "Préfixe de l'URL des alias" 
    123116 
    124 #: index.php:144 
     117#: index.php:147 
    125118msgid "Base URL scheme:" 
    126119msgstr "Schéma de base des URL :" 
    127120 
    128 #: index.php:146 
     121#: index.php:149 
    129122msgid "Media prefix URL:" 
    130123msgstr "Préfixe de l'URL :" 
Note: See TracChangeset for help on using the changeset viewer.

Sites map