Changeset 6891


Ignore:
Timestamp:
09/13/10 20:40:44 (9 years ago)
Author:
grum
Message:

Implement metadata search, release 0.5.1
bug:1846, bug:1691

Location:
extensions/AMetaData
Files:
4 added
10 edited

Legend:

Unmodified
Added
Removed
  • extensions/AMetaData/admin/amd_metadata_personnal.tpl

    r6731 r6891  
    44{known_script id="gpc.external.interface" src=$ROOT_URL|@cat:"plugins/GrumPluginClasses/js/external/interface/interface.js"} 
    55{known_script id="gpc.external.inestedsortable" src=$ROOT_URL|@cat:"plugins/GrumPluginClasses/js/external/inestedsortable.pack.js"} 
     6{known_script id="tagListSelector" src=$ROOT_URL|@cat:"plugins/AMetaData/js/tagListSelector.js"} 
     7 
    68 
    79{literal} 
    810<script type="text/javascript"> 
    9  
    10   /** 
    11    * sorry, tagListSelector is coded like a pork, but I don't have the time to 
    12    * code something better... ^^; 
    13    */ 
    14   function tagListSelector(itemId) 
    15   { 
    16     options = { 
    17       itemId:'', 
    18       selectorId:'', 
    19       width:'auto', 
    20       height:'auto', 
    21       maxHeight:250, 
    22       selectedClass:'gcText3', 
    23       selectorClass:'ruleTypeM gcTextInput gcBgInput gcBorderInput', 
    24       selectorItems:'ruleTypeM', 
    25     } 
    26  
    27     this.init = function (itemId) 
    28     { 
    29       options.itemId=itemId; 
    30       $('body').append("<div id='iTLSDiv' class='"+options.selectorClass+"' style='padding:0px;z-index:5000;overflow:auto;display:none;position:absolute;max-height:"+options.maxHeight+"px'></div>"); 
    31       $('#iTLSDiv') 
    32         .prepend($('#'+itemId)) 
    33         .bind('mouseleave', function () 
    34           { 
    35             $('#iTLSDiv').css('display', 'none'); 
    36           } 
    37         ); 
    38       $('#'+itemId).css('display', 'block'); 
    39       $('#iTLSDiv li').bind('click', function () 
    40         { 
    41           $('#'+options.selectorId).attr('value', $(this).attr('value')); 
    42           $('#'+options.selectorId+' span.ruleContent').html($(this).html()); 
    43           $('#iTLSDiv').css('display', 'none'); 
    44         } 
    45       ); 
    46     } 
    47  
    48     this.display = function (fromId) 
    49     { 
    50       selectedItem=$('#'+fromId).attr('value'); 
    51  
    52       top=$('#'+fromId).offset().top+$('#'+fromId).outerHeight()-1; 
    53       left=$('#'+fromId).offset().left; 
    54       width=$('#'+fromId).innerWidth(); 
    55       $('#iTLSDiv li').removeClass(options.selectedClass); 
    56       $('#iTagListItem'+selectedItem).addClass(options.selectedClass); 
    57       $('#iTLSDiv').css( 
    58         { 
    59           top:top+'px', 
    60           left:left+'px', 
    61           width:width+'px', 
    62           display:'block' 
    63         } 
    64       ); 
    65       options.selectorId=fromId; 
    66     } 
    67  
    68     this.init(itemId); 
    69   } 
    7011 
    7112 
     
    7516      numId:'', 
    7617      newRuleId:1, 
     18      optimalHeight:0, 
    7719    } 
    7820 
     
    10749          } 
    10850        ); 
     51 
    10952      $('#iBDTagId').bind('keyup focusout', function (event) 
    11053        { 
     
    158101            } 
    159102 
    160             $('#mdRulesArea').css('height', ($('#iDialogEdit').height()-$('#mdRulesArea').position().top)+'px' ); 
     103            options.optimalHeight=$('#iDialogEdit').height()-$('#mdRulesArea').position().top; 
     104            $('#mdRulesArea').css('height', options.optimalHeight+'px' ); 
    161105          } 
    162106        ) 
     
    309253                } 
    310254              ); 
     255              checkDialogHeight(); 
    311256            }, 
    312257          onHover: function (draggedItem) 
     
    381326      } 
    382327      applyNested(); 
     328      checkDialogHeight(); 
    383329    } 
    384330 
     
    395341        } 
    396342      ); 
     343      checkDialogHeight(); 
    397344    } 
    398345 
     
    423370        $('#iBDRuleTypeC'+id).css('display', 'inline-block'); 
    424371      } 
     372      checkDialogHeight(); 
    425373    } 
    426374 
     
    439387        $('#iBDRuleTypeCIfValue'+id).css('display', 'inline'); 
    440388      } 
     389      checkDialogHeight(); 
    441390    } 
    442391 
     
    456405      { 
    457406        $('#iBDRuleType'+value).get(0).disabled=false; 
     407      } 
     408    } 
     409 
     410    /** 
     411     * check if it necessary to calculate the height of the dialogbox 
     412     */ 
     413    var checkDialogHeight = function() 
     414    { 
     415      if($('#iBDRules').height() < options.optimalHeight && 
     416         $('#mdRulesArea').get(0).scrollHeight > options.optimalHeight) 
     417      { 
     418        $('#iDialogEdit').height(options.optimalHeight+$('#mdRulesArea').get(0).offsetTop); 
     419        $('#mdRulesArea').height(options.optimalHeight); 
     420      } 
     421      else if($('#mdRulesArea').get(0).scrollHeight > options.optimalHeight) 
     422      { 
     423        $('#iDialogEdit').height($('#mdRulesArea').get(0).scrollHeight+$('#mdRulesArea').get(0).offsetTop); 
     424        $('#mdRulesArea').height($('#mdRulesArea').get(0).scrollHeight); 
    458425      } 
    459426    } 
     
    749716                    <option value='%'>{'g003_typeCIfLike'|@translate}</option> 
    750717                    <option value='!%'>{'g003_typeCIfNotLike'|@translate}</option> 
    751                   </select> 
     718                    <option value='^%'>{'g003_typeCIfBeginWith'|@translate}</option> 
     719                    <option value='!^%'>{'g003_typeCIfNotBeginWith'|@translate}</option> 
     720                    <option value='$%'>{'g003_typeCIfEndWith'|@translate}</option> 
     721                    <option value='!$%'>{'g003_typeCIfNotEndWith'|@translate}</option>                  </select> 
    752722                  <input type='text' id='iBDRuleTypeCIfValueZZZZZ' value='' maxlength=200 size=26 style='display:none;'> 
    753723                </div> 
     
    770740</ul> 
    771741 
     742{literal} 
    772743<script type="text/javascript"> 
    773744  var udm=new userDefManage(); 
    774   var tls=new tagListSelector('iTagList'); 
     745  var tls=new tagListSelector({itemId:'iTagList'}); 
    775746</script> 
     747{/literal} 
  • extensions/AMetaData/amd.css

    r6729 r6891  
    135135  font-weight:bold; 
    136136} 
     137 
     138#mdRulesAreaCheckOne, 
     139#mdRulesAreaCheckAll { 
     140  margin:3px; 
     141  text-align:left; 
     142} 
     143 
     144 
     145li.valueItems { 
     146  -moz-border-radius:4px 4px 4px 4px; 
     147  border:1px solid #666666; 
     148  margin-bottom:5px; 
     149  padding:4px; 
     150} 
     151 
     152#iDMCListValues { 
     153  list-style:none; 
     154  margin:8px; 
     155  padding:0; 
     156} 
  • extensions/AMetaData/amd_aip.class.inc.php

    r6729 r6891  
    2828 
    2929 
    30  
    3130class AMD_AIP extends AMD_root 
    3231{ 
     
    114113        break; 
    115114      case 'search': 
    116         //$this->displaySearch($_REQUEST['fAMD_page']); 
     115        $this->displaySearch($_REQUEST['fAMD_page']); 
    117116        break; 
    118117    } 
     
    128127  public function initEvents() 
    129128  { 
     129    if(isset($_REQUEST['fAMD_tabsheet']) and $_REQUEST['fAMD_tabsheet']=='search') 
     130    { 
     131      // load request builder JS only on the search page 
     132      GPCRequestBuilder::loadJSandCSS(); 
     133    } 
     134 
    130135    add_event_handler('loc_end_page_header', array(&$this->css, 'applyCSS')); 
    131136    GPCCss::applyGpcCss(); 
     
    235240    return(false); 
    236241  } 
     242 
     243 
     244 
     245 
     246  /** 
     247   * display and manage the search page 
     248   */ 
     249  protected function displaySearch() 
     250  { 
     251    global $template, $lang; 
     252 
     253    $template->set_filename('body_page', 
     254                dirname($this->getFileLocation()).'/admin/amd_metadata_search.tpl'); 
     255 
     256    $template->assign('amd_search_page', GPCRequestBuilder::displaySearchPage($this->getPluginName())); 
     257 
     258    $template->assign_var_from_handle('AMD_BODY_PAGE', 'body_page'); 
     259  } 
     260 
     261 
    237262 
    238263 
  • extensions/AMetaData/amd_ajax.php

    r6729 r6891  
    8383           $_REQUEST['ajaxfct']=='admin.userDefined.setTag' or 
    8484           $_REQUEST['ajaxfct']=='admin.userDefined.deleteTag' or 
     85           $_REQUEST['ajaxfct']=='admin.tag.getValues' or 
    8586 
    8687           $_REQUEST['ajaxfct']=='public.makeStats.doPictureAnalyze')) $_REQUEST['ajaxfct']=''; 
     
    309310 
    310311        /* 
     312         * check admin.tag.getValues values 
     313         */ 
     314        if($_REQUEST['ajaxfct']=="admin.tag.getValues" and !isset($_REQUEST['id'])) 
     315        { 
     316          $_REQUEST['ajaxfct']=''; 
     317        } 
     318 
     319 
     320        /* 
    311321         * check public.makeStats.doPictureAnalyze values 
    312322         */ 
     
    387397          $result=$this->ajax_amd_admin_userDefinedDeleteTag($_REQUEST['id']); 
    388398          break; 
     399        case 'admin.tag.getValues': 
     400          $result=$this->ajax_amd_admin_tagGetValues($_REQUEST['id']); 
     401          break; 
    389402 
    390403 
     
    406419      { 
    407420        // get a randomly picture... 
    408         $sql="SELECT pai.imageId, pi.path 
     421        $sql="SELECT pai.imageId, pi.path, pi.has_high 
    409422              FROM ".$this->tables['images']." pai 
    410423                LEFT JOIN ".IMAGES_TABLE." pi ON pai.imageId=pi.id 
     
    426439        { 
    427440          $imageId=$row['imageId']; 
    428           $filename=$path."/".$row['path']; 
     441          if($row['has_high']===true and $this->config['amd_UseMetaFromHD']=='y') 
     442          { 
     443            $filename=$path."/".dirname($row['path'])."/pwg_high/".basename($row['path']); 
     444          } 
     445          else 
     446          { 
     447            $filename=$path."/".$row['path']; 
     448          } 
    429449        } 
    430450 
     
    546566        $path=dirname(dirname(dirname(__FILE__))); 
    547567 
    548         $sql="SELECT id, path FROM ".IMAGES_TABLE." WHERE id IN (".implode(", ", $list).")"; 
     568        $sql="SELECT id, path, has_high FROM ".IMAGES_TABLE." WHERE id IN (".implode(", ", $list).")"; 
    549569        $result=pwg_query($sql); 
    550570        if($result) 
     
    564584            //$mem1=memory_get_usage(); 
    565585            //echo "memory before analyze:".$mem1."\n"; 
    566             $returned.=$this->analyzeImageFile($path."/".$row['path'], $row['id']); 
     586            if($row['has_high']===true and $this->config['amd_UseMetaFromHD']=='y') 
     587            { 
     588              $returned.=$this->analyzeImageFile($path."/".dirname($row['path'])."/pwg_high/".basename($row['path']), $row['id']); 
     589            } 
     590            else 
     591            { 
     592              $returned.=$this->analyzeImageFile($path."/".$row['path'], $row['id']); 
     593            } 
    567594            //echo $returned."\n"; 
    568595            //$mem2=memory_get_usage(); 
     
    722749        { 
    723750          $datas[]=array( 
    724             "value" => $this->prepareValueForDisplay($row['value'], ($row['translatable']=='y'), ", "), 
     751            "value" => AMD_root::prepareValueForDisplay($row['value'], ($row['translatable']=='y'), ", "), 
    725752            "nb"    => $row['Nb'], 
    726753            "pct"   => ($row['numOfImg']!=0)?sprintf("%.2f", 100*$row['Nb']/$row['numOfImg']):"-" 
     
    13421369      foreach($properties['rules'] as $rule) 
    13431370      { 
     1371        print_r($rule['value']); 
    13441372        $inserts[]="('$id', '".$rule['defId']."', '".$rule['parentId']."', '".$rule['order']."', '".$rule['type']."', '".$rule['value']."', '".$rule['conditionType']."', '".$rule['conditionValue']."')"; 
    13451373      } 
     
    14011429    } 
    14021430 
     1431 
     1432    /** 
     1433     * return the known values for a given tag id 
     1434     * 
     1435     * @param String $id : a tag numId 
     1436     * @return String : an HTML list ready to use 
     1437     */ 
     1438    private function ajax_amd_admin_tagGetValues($numId) 
     1439    { 
     1440      $returned=""; 
     1441 
     1442      $sql="SELECT DISTINCT pait.value, COUNT(pait.imageId) AS nbImg, paut.translatable 
     1443            FROM ".$this->tables['images_tags']." pait 
     1444              LEFT JOIN ".$this->tables['used_tags']." paut 
     1445                ON pait.numId=paut.numId 
     1446            WHERE pait.numId = '$numId' 
     1447            GROUP BY pait.value 
     1448            ORDER BY pait.value"; 
     1449      $result=pwg_query($sql); 
     1450      if($result) 
     1451      { 
     1452        while($row=pwg_db_fetch_assoc($result)) 
     1453        { 
     1454          $value=htmlspecialchars(AMD_root::prepareValueForDisplay($row['value'], ($row['translatable']=='y'), ", "), ENT_QUOTES); 
     1455          $returned.="<option displayvalue='$value' rawvalue='".$row['value']."'>$value (".$row['nbImg']." ".l10n('images').")</option>"; 
     1456        } 
     1457      } 
     1458      return($returned); 
     1459    } 
     1460 
     1461 
    14031462    /** 
    14041463     * set value(s) for option(s) 
  • extensions/AMetaData/amd_install.class.inc.php

    r6730 r6891  
    1919 */ 
    2020 
    21   @include_once('amd_root.class.inc.php'); 
     21  include_once('amd_root.class.inc.php'); 
    2222  include_once(PHPWG_PLUGINS_PATH.'grum_plugins_classes-2/tables.class.inc.php'); 
    2323 
     
    6666  `imageId` mediumint(8) unsigned NOT NULL default '0', 
    6767  `numId` int(10) unsigned NOT NULL default '0', 
    68   `value` text default NULL, 
    69   PRIMARY KEY  USING BTREE (`imageId`,`numId`) 
     68  `value` text, 
     69  `numValue` decimal(10,8) default NULL, 
     70  PRIMARY KEY  USING BTREE (`imageId`,`numId`), 
     71  KEY `byNumId` (`numId`,`value`(35)), 
     72  KEY `byNumId2` (`numId`,`numValue`) 
    7073);", 
    7174"CREATE TABLE `".$this->tables['images']."` ( 
     
    194197    { 
    195198      /* 
    196        * create new tables 
     199       * create new tables & alter existing tables 
    197200       */ 
    198201      $tableDef=array( 
     
    215218  KEY `byTagParentId` USING BTREE (`numId`,`parentId`,`order`), 
    216219  KEY `byTagOrder` (`numId`,`order`) 
    217 );" 
     220);", 
     221"ALTER TABLE `".$this->tables['images_tags']."` 
     222  ADD COLUMN `numValue` DECIMAL(10,8)  DEFAULT NULL AFTER `value`, 
     223  ADD INDEX `byNumId`(`numId`, `value`(35)), 
     224  ADD INDEX `byNumId2`(`numId`, `numValue`) 
     225;" 
    218226      ); 
    219227      $tablesDef = create_table_add_character_set($tablesDef); 
     
    305313          $excludeList=""; 
    306314        } 
    307         $sql="SELECT ti.id, ti.path 
     315        $sql="SELECT ti.id, ti.path, ti.has_high 
    308316              FROM ".IMAGES_TABLE." ti ".$excludeList." 
    309317              ORDER BY RAND() LIMIT ".(25-count($listToAnalyze[0])).";"; 
     
    328336        foreach($listToAnalyze[0] as $val) 
    329337        { 
    330           $this->analyzeImageFile($path."/".$val['path'], $val['id']); 
     338          if($val['has_high']===true and $this->config['amd_UseMetaFromHD']=='y') 
     339          { 
     340            $this->analyzeImageFile($path."/".dirname($val['path'])."/pwg_high/".basename($val['path']), $val['id']); 
     341          } 
     342          else 
     343          { 
     344            $this->analyzeImageFile($path."/".$val['path'], $val['id']); 
     345          } 
     346 
    331347        } 
    332348 
  • extensions/AMetaData/amd_pip.class.inc.php

    r6722 r6891  
    9292      ) 
    9393    ); 
     94 
     95    trigger_action('amd_jpegMD_loaded', $this->jpegMD); 
    9496 
    9597    $conf['show_exif']=false; 
     
    140142              $value=serialize($value); 
    141143            } 
    142             $userDefinedList['values'][$row['numId']]=$this->prepareValueForDisplay($value, $picturesTags[$row['tagId']]->isTranslatable());; 
     144            $userDefinedList['values'][$row['numId']]=AMD_root::prepareValueForDisplay($value, $picturesTags[$row['tagId']]->isTranslatable());; 
    143145          } 
    144146        } 
     
    146148    } 
    147149 
    148     $metadata=Array(); 
     150    $metadata=$template->get_template_vars('metadata'); 
    149151    $md=null; 
    150152    $group=null; 
    151153 
    152154    $userDefinedValues=$this->pictureGetUserDefinedTags($userDefinedList['list'], $userDefinedList['values']); 
     155 
     156    trigger_action('amd_jpegMD_userDefinedValues_built', 
     157      array( 
     158        'picture' => $userDefinedList['values'], 
     159        'user'    => $userDefinedValues, 
     160      ) 
     161    ); 
    153162 
    154163    foreach($tagsList as $key => $tagProperties) 
     
    187196          $value=serialize($value); 
    188197        } 
    189         $md['lines'][L10n::get($picturesTags[$key]->getName())]=$this->prepareValueForDisplay($value, $picturesTags[$key]->isTranslatable()); 
    190       } 
    191       elseif($userDefined) 
     198 
     199        if($value!="") 
     200        { 
     201          $md['lines'][L10n::get($picturesTags[$key]->getName())]=AMD_root::prepareValueForDisplay($value, $picturesTags[$key]->isTranslatable()); 
     202        } 
     203      } 
     204      elseif($userDefined and isset($userDefinedValues[$tagProperties['numId']]) and $userDefinedValues[$tagProperties['numId']]!='') 
    192205      { 
    193206        $md['lines'][$tagProperties['name']]=$userDefinedValues[$tagProperties['numId']]; 
     
    195208    } 
    196209 
    197     if(!is_null($md)) 
     210    if(!is_null($md) and count($md['lines'])>0) 
    198211    { 
    199212      $metadata[]=$md; 
  • extensions/AMetaData/amd_root.class.inc.php

    r6734 r6891  
    2323include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/CommonPlugin.class.inc.php'); 
    2424include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/GPCCss.class.inc.php'); 
     25include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/GPCRequestBuilder.class.inc.php'); 
    2526 
    2627include_once('amd_jpegmetadata.class.inc.php'); 
     
    4849      'groups', 
    4950      'user_tags_label', 
    50       'user_tags_def'); 
     51      'user_tags_def', 
     52      'tags_values'); 
    5153    $this->setTablesList($tableList); 
    5254 
     
    6668    //parent::__destruct(); 
    6769  } 
    68  
    6970 
    7071  /* --------------------------------------------------------------------------- 
     
    8586      'amd_FillDataBaseContinuously' => "y", 
    8687      'amd_FillDataBaseIgnoreSchemas' => array(), 
     88      'amd_UseMetaFromHD' => "y", 
    8789 
    8890      // theses options can be set manually 
     
    178180  public function doRandomAnalyze() 
    179181  { 
    180     $sql="SELECT tai.imageId, ti.path FROM ".$this->tables['images']." tai 
     182    $sql="SELECT tai.imageId, ti.path, ti.has_high FROM ".$this->tables['images']." tai 
    181183            LEFT JOIN ".IMAGES_TABLE." ti ON tai.imageId = ti.id 
    182184          WHERE tai.analyzed = 'n' 
     
    190192      while($row=pwg_db_fetch_assoc($result)) 
    191193      { 
    192         $this->analyzeImageFile($path."/".$row['path'], $row['imageId']); 
     194        if($row['has_high']===true and $this->config['amd_UseMetaFromHD']=='y') 
     195        { 
     196          $this->analyzeImageFile($path."/".dirname($row['path'])."/pwg_high/".basename($row['path']), $row['imageId']); 
     197        } 
     198        else 
     199        { 
     200          $this->analyzeImageFile($path."/".$row['path'], $row['imageId']); 
     201        } 
    193202      } 
    194203 
     
    234243    } 
    235244 
    236     $sqlInsert=""; 
     245    //$sqlInsert=""; 
    237246    $massInsert=array(); 
    238247    $nbTags=0; 
     
    272281        { 
    273282          $nbTags++; 
    274           if($sqlInsert!="") $sqlInsert.=", "; 
    275           $sqlInsert.="($imageId, '$numId', '".addslashes($value)."')"; 
     283          //if($sqlInsert!="") $sqlInsert.=", "; 
     284          //$sqlInsert.="($imageId, '$numId', '".addslashes($value)."')"; 
    276285          $massInsert[]="('$imageId', '$numId', '".addslashes($value)."') "; 
    277286        } 
     
    291300    pwg_query($sql); 
    292301 
     302    unset($massInsert); 
    293303 
    294304    return("$imageId=$nbTags;"); 
     
    398408            if(!is_null($buildValue['value'])) 
    399409            { 
     410              $buildValue['value']=addslashes($buildValue['value']); 
    400411              $inserts[]=$buildValue; 
    401412              $num++; 
     
    483494              if(isset($values[$rule['value']]) and 
    484495                 !preg_match('/'.$rule['conditionValue'].'/i', $values[$rule['value']])) $ok=true; 
     496              break; 
     497            case '^%': 
     498              if(isset($values[$rule['value']]) and 
     499                 preg_match('/^'.$rule['conditionValue'].'/i', $values[$rule['value']])) $ok=true; 
     500              break; 
     501            case '!^%': 
     502              if(isset($values[$rule['value']]) and 
     503                 !preg_match('/^'.$rule['conditionValue'].'/i', $values[$rule['value']])) $ok=true; 
     504              break; 
     505            case '$%': 
     506              if(isset($values[$rule['value']]) and 
     507                 preg_match('/'.$rule['conditionValue'].'$/i', $values[$rule['value']])) $ok=true; 
     508              break; 
     509            case '!$%': 
     510              if(isset($values[$rule['value']]) and 
     511                 !preg_match('/'.$rule['conditionValue'].'$/i', $values[$rule['value']])) $ok=true; 
    485512              break; 
    486513          } 
     
    557584  } 
    558585 
    559  
    560586  /** 
    561587   * This function : 
     
    569595   * @return String               : the value prepared 
    570596   */ 
    571   protected function prepareValueForDisplay($value, $translatable=true, $separator=", ") 
     597  static public function prepareValueForDisplay($value, $translatable=true, $separator=", ") 
    572598  { 
    573599    global $user; 
     
    720746  } 
    721747 
     748 
    722749} // amd_root  class 
    723750 
    724751 
    725752 
     753Class AMD_functions { 
     754  /** 
     755   *  return all HTML&JS code necessary to display a dialogbox to choose 
     756   *  a metadata 
     757   */ 
     758  static public function dialogBoxMetadata() 
     759  { 
     760    global $template, $prefixeTable; 
     761 
     762    $tables=array( 
     763        'used_tags' => $prefixeTable.'amd_used_tags', 
     764        'selected_tags' => $prefixeTable.'amd_selected_tags', 
     765    ); 
     766 
     767    $template->set_filename('metadata_choose', 
     768                  dirname(__FILE__).'/templates/amd_dialog_metadata_choose.tpl'); 
     769 
     770    $datas=array( 
     771      'urlRequest' => 'plugins/'.basename(dirname(__FILE__)).'/amd_ajax.php', 
     772      'tagList' => array(), 
     773    ); 
     774 
     775    /* 
     776     * build tagList 
     777     */ 
     778    $sql="SELECT ut.name, ut.numId, ut.tagId 
     779          FROM ".$tables['used_tags']." ut 
     780            JOIN ".$tables['selected_tags']." st ON st.tagId = ut.tagId 
     781          ORDER BY tagId"; 
     782    $result=pwg_query($sql); 
     783    if($result) 
     784    { 
     785      while($row=pwg_db_fetch_assoc($result)) 
     786      { 
     787        $datas['tagList'][]=Array( 
     788          'tagId' => $row['tagId'], 
     789          'name'  => L10n::get($row['name']), 
     790          'numId' => $row['numId'] 
     791        ); 
     792      } 
     793    } 
     794 
     795    $template->assign('datas', $datas); 
     796    unset($data); 
     797 
     798    return($template->parse('metadata_choose', true)); 
     799  } 
     800} 
     801 
     802 
     803 
    726804?> 
  • extensions/AMetaData/language/fr_FR/plugin.lang.php

    r6729 r6891  
    193193$lang['g003_typeCIfLike'] = "contient"; 
    194194$lang['g003_typeCIfNotLike'] = "ne contient pas"; 
     195$lang['g003_typeCIfBeginWith'] = "commence par"; 
     196$lang['g003_typeCIfNotBeginWith'] = "ne commence pas par"; 
     197$lang['g003_typeCIfEndWith'] = "finit par"; 
     198$lang['g003_typeCIfNotEndWith'] = "ne finit pas par"; 
    195199$lang['g003_conditionIf'] = "Tester si la métadonnée"; 
    196200 
     
    212216$lang['g003_informations'] = "Informations"; 
    213217$lang['g003_databaseInformation'] = "Informations importantes à propos du référentiel"; 
    214 $lang['g003_databaseWarning1']="[p]Le référentiel est constitué des métadonnées contenues dans les images de galerie ainsi que de métadonnées calculées par le plugin. En fonction du nombre d'images et du nombre de métadonnées y étant rattachées, le référentiel peut s'avérer être très volumineux. 
     218$lang['g003_databaseWarning1']="[p]Le référentiel est constitué des métadonnées contenues dans les images de la galerie ainsi que de métadonnées calculées par le plugin. En fonction du nombre d'images et du nombre de métadonnées y étant rattachées, le référentiel peut s'avérer être très volumineux. 
    215219Avant d'alimenter le référentiel, assurez-vous que la base de données proposée par votre hébergeur permet ce type d'usage. 
    216220[/p][p]Il est toutefois à noter que l'usage du référentiel est facultatif, ce dernier n'étant pas exploité pour l'affichage des métadonnées des photos de la galerie. 
     
    230234$lang['g003_analyze_analyzed_pictures'] = "L'analyse ne porte que sur les images ayant déjà fait l'objet d'une analyse"; 
    231235$lang['g003_fillDatabaseIgnoreWarning'] = "Pour être prise en compte, la modification des paramètres de cette option nécessite d'effectuer une analyse"; 
     236 
     237 
     238$lang['g003_add_metadata'] = "Ajouter une métadonnée"; 
     239 
     240$lang['g003_choose_a_metadata'] = "Recherche sur l\'évaluation d\'une métadonnée"; 
     241$lang['g003_add'] = "Ajouter"; 
     242$lang['g003_metadata_value_check_one'] = "Au moins une des valeurs suivantes doit être vérifiée :"; 
     243$lang['g003_metadata_value_check_all'] = "Toutes les valeurs suivantes doivent être vérifiées :"; 
     244 
     245$lang['g003_metadata_exists']="La métadonnée %s est présente"; 
     246$lang['g003_metadata_dont_exists']="La métadonnée %s n'est pas présente"; 
     247$lang['g003_metadata_equals_all']="La métadonnée %s est présente et est égale à l\'une des valeurs suivantes :"; 
     248$lang['g003_metadata_equals_one']="La métadonnée %s est présente et est égale à la valeur suivante :"; 
     249$lang['g003_metadata_not_equals_all']="La métadonnée %s est présente et n'est égale à aucune des valeurs suivantes :"; 
     250$lang['g003_metadata_not_equals_one']="La métadonnée %s est présente et n'est pas égale à la valeur suivante :"; 
     251$lang['g003_metadata_like_all']="La métadonnée %s est présente et contient l\'une des valeurs suivantes :"; 
     252$lang['g003_metadata_like_one']="La métadonnée %s est présente et contient la valeur suivante :"; 
     253$lang['g003_metadata_not_like_all']="La métadonnée %s est présente et ne contient aucune des valeurs suivantes :"; 
     254$lang['g003_metadata_not_like_one']="La métadonnée %s est présente et n'est contient pas la valeur suivante :"; 
     255$lang['g003_metadata_begin_all']="La métadonnée %s est présente et commence par l\'une des valeurs suivantes :"; 
     256$lang['g003_metadata_begin_one']="La métadonnée %s est présente et commence par la valeur suivante :"; 
     257$lang['g003_metadata_not_begin_all']="La métadonnée %s est présente et ne commence pas par l\'une des valeurs suivantes :"; 
     258$lang['g003_metadata_not_begin_one']="La métadonnée %s est présente et ne commence pas par la valeur suivante :"; 
     259$lang['g003_metadata_end_all']="La métadonnée %s est présente et finit par l\'une des valeurs suivantes :"; 
     260$lang['g003_metadata_end_one']="La métadonnée %s est présente et finit par la valeur suivante :"; 
     261$lang['g003_metadata_not_end_all']="La métadonnée %s est présente et ne finit pas par l\'une des valeurs suivantes :"; 
     262$lang['g003_metadata_not_end_one']="La métadonnée %s est présente et ne finit pas par la valeur suivante :"; 
     263 
     264$lang['g003_value_already_set'] = "La valeur est déjà définie dans le domaine de valeurs"; 
     265$lang['g003_please_set_a_value'] = "Merci de définir une valeur"; 
    232266 
    233267/* 
  • extensions/AMetaData/main.inc.php

    r6729 r6891  
    3737|         |            | * update some html/css 
    3838|         |            | 
    39 | 0.5.0   | 2010/07/24 | * update to the JpegMetadata class 1.0.1 to fix the 
     39| 0.5.0   | 2010/07/24 | * release 0.5.0 not published, features are reported in 
     40|         |            |   the release 0.5.1 
     41|         |            | 
     42| 0.5.1   | 2010/09/12 | * update to the JpegMetadata class 1.0.1 to fix the 
    4043|         |            |   mantis bugs&features 1686, 1718 and 1719 
    4144|         |            | * mantis : bug 1686 
     
    5962|         |            |   . Weight of the metadata database can becomes very 
    6063|         |            |     heavy 
    61 |         |            | * ajax management was entirely rewritted 
     64|         |            | * mantis : feature 1691 
     65|         |            |   . Add possibility to search picture by metadata 
     66|         |            |     properties 
     67|         |            | * mantis : feature 1846 
     68|         |            |   . Read the metadata in the HD picture 
     69|         |            | * ajax management entirely rewritted 
    6270|         |            | * user interface reviewed 
     71|         |            | * add some triggers events when picture metadata are 
     72|         |            |   loaded in the picture.php page 
     73|         |            |   . amd_jpegMD_loaded 
     74|         |            |   . amd_jpegMD_userDefinedValues_built 
     75|         |            | 
     76|         |            | 
     77|         |            | 
     78|         |            | 
     79|         |            | 
    6380|         |            | 
    6481|         |            | 
     
    7390 
    7491-------------------------------------------------------------------------------- 
    75  
    76 :: NFO 
    77   AMD_AIM : classe to manage plugin integration into plugin menu 
    78   AMD_AIP : classe to manage plugin admin pages 
    79   AMD_PIP : classe to manage plugin public integration 
    80  
     92* 
     93* :: NFO 
     94* AMD_AIM : classe to manage plugin integration into plugin menu 
     95* AMD_AIP : classe to manage plugin admin pages 
     96* AMD_PIP : classe to manage plugin public integration 
     97* 
     98* 
     99* :: Triggers & data provided 
     100* - amd_jpegMD_loaded 
     101*   . triggered on the picture.php page, when metadata were loaded from the 
     102*     picture file 
     103*   . the JpegMetadata object is provided as data to the callback function 
     104* 
     105* - amd_jpegMD_userDefinedValues_built 
     106*   . triggered on the picture.php page, when metadata were loaded from the 
     107*     picture file and user defined tags were built 
     108*   . an array is provided as data to the callback function 
     109*       $data['picture'] : an array of (tagId => value) with only the selected 
     110*                          metadata 
     111*       $data['user']    : an array of (tagId => value) with only the user 
     112*                          defined metadata built 
     113* 
     114* 
    81115-------------------------------------------------------------------------------- 
    82116*/ 
  • extensions/AMetaData/maintain.inc.php

    r6729 r6891  
    8888  $result=$amd->activate(); 
    8989  GPCCore::register($amd->getPluginName(), AMD_VERSION, $gpcNeeded); 
     90  GPCRequestBuilder::register($amd->getPluginName(), dirname($amd->getFileLocation()).'/amd_rb_callback.class.inc.php'); 
    9091} 
    9192 
    9293function plugin_deactivate($plugin_id) 
    9394{ 
     95  global $prefixeTable, $gpcNeeded; 
     96 
     97  $amd=new AMD_install($prefixeTable, __FILE__); 
     98  GPCRequestBuilder::unregister($amd->getPluginName()); 
    9499} 
    95100 
Note: See TracChangeset for help on using the changeset viewer.