Ignore:
Timestamp:
05/11/11 19:17:49 (9 years ago)
Author:
mistic100
Message:

improve process, add options for link effect

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/Back2Front/Back2Front.php

    r10828 r10852  
    11<?php  
    22if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 
     3 
     4include_once(B2F_PATH.'functions.inc.php'); 
    35 
    46/* 
     
    79function Back2Front_picture_content($content, $image) 
    810 { 
    9   global $template, $conf; 
     11  global $template, $user, $conf; 
    1012 
    1113  /* search for a verso picture */ 
     
    1416      i.id,  
    1517      i.path, 
    16       i.has_high 
     18      i.has_high, 
     19      i.width, 
     20      i.height 
    1721    FROM ".IMAGES_TABLE." as i 
    1822      INNER JOIN ".B2F_TABLE." as v 
     
    2630  { 
    2731    $verso = pwg_db_fetch_assoc($result); 
     32    $conf['back2front'] = explode(',',$conf['back2front']); 
     33     
     34    // calculation of width and height 
     35    include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php'); 
     36     
     37    if (!empty($verso['width'])) 
     38    { 
     39      list( 
     40        $verso['scaled_width'], 
     41        $verso['scaled_height'] 
     42        ) = get_picture_size( 
     43          $verso['width'], 
     44          $verso['height'], 
     45          @$user['maxwidth'], 
     46          @$user['maxheight'] 
     47        ); 
     48    } 
    2849 
    2950    /* websize picture */ 
    30     $template->assign('VERSO_URL', $verso['path']); 
     51    $template->assign(array( 
     52      'VERSO_URL' => $verso['path'], 
     53      'VERSO_WIDTH' => $verso['scaled_width'], 
     54      'VERSO_HEIGHT' => $verso['scaled_height'], 
     55      'b2f_switch_mode' => $conf['back2front'][1], 
     56      'b2f_transition' => $conf['back2front'][2], 
     57    )); 
    3158     
    3259    /* admin link */ 
     
    4875    $template->assign('B2F_PATH', B2F_PATH); 
    4976     
    50     return $content . $template->parse('B2F_picture_content', true) 
     77    return $template->parse('B2F_picture_content', true).$content 
    5178  } 
    5279  else  
     
    6087 * Add field on picture modify page 
    6188 */ 
    62 function Back2Front_picture_modify() 
     89function Back2Front_picture_modify($menu) 
    6390{ 
    6491  global $page, $template, $conf; 
     92   
     93  if ($page['page'] != 'picture_modify') return $menu; 
    6594  $conf['back2front'] = explode(',',$conf['back2front']); 
    66    
    67   if ($page['page'] != 'picture_modify') 
    68   { 
    69     return; 
    70   } 
    7195   
    7296/* SAVE VALUES */ 
    7397  if (isset($_POST['b2f_submit'])) 
    7498  { 
     99    /* catch all verso and recto ids and original categories */ 
     100    $query = "SELECT image_id, verso_id, categories 
     101      FROM ".B2F_TABLE.";"; 
     102    $rectos = array_from_query($query, 'image_id'); 
     103    $versos = array_from_query($query, 'verso_id'); 
     104    $cats = array_from_query($query, 'categories'); 
     105     
     106    if (count($rectos) != 0) 
     107    { 
     108      $all_recto_verso = array_combine($rectos, $versos); 
     109      $verso_cats = array_combine($versos, $cats); 
     110    } 
     111    else 
     112    { 
     113      $all_recto_verso = array(0=>0); 
     114      $verso_cats = array(0=>NULL); 
     115    } 
     116    unset($rectos, $versos, $cats); 
     117     
    75118    /* picture is verso */ 
    76119    if (isset($_POST['b2f_is_verso'])) 
    77     { 
    78       /* catch all verso and recto ids */ 
    79       $query = "SELECT image_id, verso_id 
    80         FROM ".B2F_TABLE.";"; 
    81       $rectos = array_from_query($query, 'image_id'); 
    82       $versos = array_from_query($query, 'verso_id'); 
    83       if (count($rectos) != 0) 
    84       { 
    85         $all_recto_verso = array_combine($rectos, $versos); 
    86       } 
    87       else 
    88       { 
    89         $all_recto_verso = array(0=>0); 
    90       } 
    91       unset($rectos, $versos); 
    92        
     120    {       
    93121      /* verso don't exists */ 
    94122      if (!picture_exists($_POST['b2f_front_id'])) 
    95123      { 
    96         $template->append('errors', l10n('Unknown id for frontside picture : ').$_POST['b2f_front_id']); 
     124        array_push($page['errors'], l10n_args(get_l10n_args('Unknown id %d for frontside picture', $_POST['b2f_front_id']))); 
    97125      } 
    98126      /* verso same as recto  */ 
    99127      else if ($_POST['b2f_front_id'] == $_GET['image_id']) 
    100128      { 
    101         $template->append('errors', l10n('Backside and frontside can\'t be the same picture')); 
     129        array_push($page['errors'], l10n('Backside and frontside can\'t be the same picture')); 
    102130      } 
    103131      /* recto has already a verso */ 
    104       else if (in_array($_POST['b2f_front_id'], array_keys($all_recto_verso))) 
     132      else if (in_array($_POST['b2f_front_id'], array_keys($all_recto_verso)) AND $all_recto_verso[$_POST['b2f_front_id']] != $_GET['image_id']) 
    105133      { 
    106134          $recto_current_verso['id'] = $all_recto_verso[$_POST['b2f_front_id']]; 
    107135          $recto_current_verso['link'] = get_root_url().'admin.php?page=picture_modify&amp;image_id='.$recto_current_verso['id']; 
    108           $template->append('errors', l10n('This picture has already a backside : ').'<a href="'.$recto_current_verso['link'].'">'.$recto_current_verso['id'].'</a>'); 
     136          array_push($page['errors'],  
     137            l10n_args(get_l10n_args('The picture n°%d has already a backside : %s',  
     138              array($_POST['b2f_front_id'], '<a href="'.$recto_current_verso['link'].'">'.$recto_current_verso['id'].'</a>') 
     139            )) 
     140          ); 
    109141      } 
    110142      /* recto is already a verso */ 
     
    113145          $recto_is_verso['id'] = $_POST['b2f_front_id']; 
    114146          $recto_is_verso['link'] = get_root_url().'admin.php?page=picture_modify&amp;image_id='.$recto_is_verso['id']; 
    115           $template->append('errors', l10n('This picture is already a backside : ').'<a href="'.$recto_is_verso['link'].'">'.$recto_is_verso['id'].'</a>'); 
     147          array_push($page['errors'], l10n_args(get_l10n_args('The picture n°%s is already a backside', '<a href="'.$recto_is_verso['link'].'">'.$recto_is_verso['id'].'</a>'))); 
    116148      } 
    117149      /* everything is fine */ 
    118150      else 
    119151      { 
    120         // get current categories 
    121         $query = "SELECT category_id FROM ".IMAGE_CATEGORY_TABLE." WHERE image_id = ".$_GET['image_id'].";"; 
    122         $verso_categories = array_from_query($query, 'category_id'); 
    123          
    124         // insert or update verso associations 
    125         pwg_query("INSERT INTO ".B2F_TABLE." 
    126           VALUES(".$_POST['b2f_front_id'].", ".$_GET['image_id'].", '".implode(',',$verso_categories)."') 
    127           ON DUPLICATE KEY UPDATE image_id = ".$_POST['b2f_front_id'].";"); 
    128          
    129         // move the verso ? 
    130         if (isset($_POST['b2f_move_verso'])) 
     152        // move the verso - if first save 
     153        if (isset($_POST['b2f_move_verso']) AND (!array_key_exists($_GET['image_id'], $verso_cats) OR $verso_cats[$_GET['image_id']] == NULL)) 
    131154        { 
     155          // get current categories 
     156          $query = "SELECT category_id FROM ".IMAGE_CATEGORY_TABLE." WHERE image_id = ".$_GET['image_id'].";"; 
     157          $verso_categories = array_from_query($query, 'category_id'); 
     158           
    132159          pwg_query("DELETE FROM ".IMAGE_CATEGORY_TABLE." 
    133160            WHERE image_id = ".$_GET['image_id'].";"); 
    134              
    135161          pwg_query("INSERT INTO ".IMAGE_CATEGORY_TABLE." 
    136162            VALUES(".$_GET['image_id'].", ".$conf['back2front'][0].", NULL);"); 
     
    138164          // random representant for each categories 
    139165          set_random_representant($verso_categories); 
     166           
     167          $verso_categories = isset($verso_cats[$_GET['image_id']]) ? $verso_cats[$_GET['image_id']] : implode(',',$verso_categories); 
     168          $template->assign('B2F_MOVE_VERSO', 'checked="checked"'); 
    140169        } 
     170        // restore the verso - if precedently moved 
     171        else if (!isset($_POST['b2f_move_verso']) AND array_key_exists($_GET['image_id'], $verso_cats) AND $verso_cats[$_GET['image_id']] != NULL) 
     172        { 
     173          $item['verso_id'] = $_GET['image_id']; 
     174          $item['categories'] = $verso_cats[$_GET['image_id']]; 
     175          back2front_restaure_categories($item); 
     176           
     177          $verso_categories = 'NULL'; 
     178          $template->assign('B2F_MOVE_VERSO', ''); 
     179        } 
     180        // leave the verso 
     181        else 
     182        { 
     183          $verso_categories = isset($verso_cats[$_GET['image_id']]) ? $verso_cats[$_GET['image_id']] : 'NULL'; 
     184          $template->assign('B2F_MOVE_VERSO', isset($verso_cats[$_GET['image_id']]) ? 'checked="checked"' : ''); 
     185        } 
     186         
     187        // insert or update verso associations 
     188        pwg_query("INSERT INTO ".B2F_TABLE." 
     189          VALUES(".$_POST['b2f_front_id'].", ".$_GET['image_id'].", '".$verso_categories."') 
     190          ON DUPLICATE KEY UPDATE image_id = ".$_POST['b2f_front_id'].", categories = ".$verso_categories.";"); 
    141191       
    142192        $template->assign(array( 
     
    145195        )); 
    146196         
    147         $template->append('infos', l10n('This picture is now the backside of the picture n° ').$_POST['b2f_front_id']); 
     197        $verso['id'] = $_POST['b2f_front_id']; 
     198        $verso['link'] = get_root_url().'admin.php?page=picture_modify&amp;image_id='.$verso['id']; 
     199        array_push($page['infos'], l10n_args(get_l10n_args('This picture is now the backside of the picture n°%s', '<a href="'.$verso['link'].'">'.$verso['id'].'</a>'))); 
    148200      } 
    149201    } 
     
    160212      if (pwg_db_num_rows($result)) 
    161213      { 
    162         // original categories 
     214        $item['verso_id'] = $_GET['image_id']; 
    163215        list($item['categories']) = pwg_db_fetch_row($result); 
    164         // catch current categories 
    165         $versos_infos = pwg_query("SELECT category_id FROM ".IMAGE_CATEGORY_TABLE." WHERE image_id = ".$_GET['image_id'].";"); 
    166         while (list($verso_cat) = pwg_db_fetch_row($versos_infos)) 
    167         { 
    168           $current_verso_cats[] = $verso_cat; 
    169         } 
    170          
    171         /* if verso € 'versos' cat only */ 
    172         if (count($current_verso_cats) == 1 AND $current_verso_cats[0] == $conf['back2front'][0]) 
    173         { 
    174           foreach (explode(',',$item['categories']) as $cat) 
    175           { 
    176             $datas[] = array( 
    177               'image_id' => $_GET['image_id'], 
    178               'category_id' => $cat, 
    179               ); 
    180           } 
    181           if (isset($datas)) 
    182           { 
    183             mass_inserts( 
    184               IMAGE_CATEGORY_TABLE, 
    185               array('image_id', 'category_id'), 
    186               $datas 
    187               ); 
    188           } 
    189         } 
    190          
    191         pwg_query("DELETE FROM ".IMAGE_CATEGORY_TABLE." 
    192           WHERE image_id = ".$_GET['image_id']." AND category_id = ".$conf['back2front'][0].";"); 
     216        back2front_restaure_categories($item); 
    193217         
    194218        pwg_query("DELETE FROM ".B2F_TABLE."  
    195219          WHERE verso_id = ".$_GET['image_id'].";"); 
    196220           
    197         $template->append('infos', l10n('This picture is no longer a backside')); 
     221        array_push($page['infos'], l10n('This picture is no longer a backside')); 
    198222      } 
    199223    } 
     
    203227  if ($template->get_template_vars('B2F_IS_VERSO') == null) 
    204228  { 
     229    $template->assign('B2F_MOVE_VERSO', 'checked="checked"'); 
     230     
    205231    /* is the picture a verso ? */ 
    206232    $query = " 
    207       SELECT image_id 
     233      SELECT image_id, categories 
    208234      FROM ".B2F_TABLE." 
    209235      WHERE verso_id = ".$_GET['image_id']." 
     
    213239    if (pwg_db_num_rows($result)) 
    214240    { 
    215       list($recto_id) = pwg_db_fetch_row($result); 
     241      list($recto_id, $cats) = pwg_db_fetch_row($result); 
    216242      $template->assign(array( 
    217243        'B2F_IS_VERSO' => 'checked="checked"', 
    218244        'B2F_FRONT_ID' => $recto_id, 
     245        'B2F_MOVE_VERSO' => $cats != NULL ? 'checked="checked"' : '', 
    219246      )); 
    220247    } 
     
    228255       
    229256      if (pwg_db_num_rows($result)) 
    230       { 
    231         include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php'); 
    232          
     257      {       
    233258        $item = pwg_db_fetch_assoc($result); 
    234         $query = "SELECT id, name, file 
    235           FROM ".IMAGES_TABLE." 
    236           WHERE id = ".$item['verso_id'].";"; 
    237         $item = pwg_db_fetch_assoc(pwg_query($query)); 
    238          
     259 
    239260        $template->assign(array( 
    240           'B2F_VERSO_ID' => $item['id'], 
    241           'B2F_VERSO_URL' => get_root_url().'admin.php?page=picture_modify&amp;image_id='.$item['id'], 
    242           'B2F_VERSO_NAME' => get_image_name($item['name'], $item['file']), 
     261          'B2F_VERSO_ID' => $item['verso_id'], 
     262          'B2F_VERSO_URL' => get_root_url().'admin.php?page=picture_modify&amp;image_id='.$item['verso_id'], 
    243263        )); 
    244264      } 
     
    246266  } 
    247267   
    248   $template->set_filename('B2F_picture_modify', dirname(__FILE__).'/template/picture_modify.tpl'); 
    249   $template->concat('ADMIN_CONTENT', $template->parse('B2F_picture_modify', true)); 
     268  $template->set_prefilter('picture_modify', 'Back2front_picture_modify_prefilter'); 
     269   
     270  return $menu; 
    250271} 
    251272 
    252 function picture_exists($id) 
     273 
     274function Back2front_picture_modify_prefilter($content, &$smarty) 
    253275{ 
    254   if (!preg_match('#([0-9]{1,})#', $id) OR $id == '0') return false; 
    255    
    256   $query = "SELECT id FROM ".IMAGES_TABLE." WHERE id = ".$id.";"; 
    257   $result = pwg_query($query); 
    258    
    259   if (pwg_db_num_rows($result)) return true; 
    260   else return false; 
     276  $search = '<form id="associations" method="post" action="{$F_ACTION}#associations">'; 
     277  $replacement = file_get_contents(B2F_PATH.'template/picture_modify.tpl')."\n".$search; 
     278  return str_replace($search, $replacement, $content); 
    261279} 
    262280 
Note: See TracChangeset for help on using the changeset viewer.