Ignore:
Timestamp:
Jul 29, 2010, 10:12:25 AM (14 years ago)
Author:
grum
Message:

feature:1777

  • Weight of the metadata database can becomes very heavy
File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/AMetaData/amd_ajax.php

    r6723 r6729  
    6666           $_REQUEST['ajaxfct']=='admin.makeStats.doAnalyze' or
    6767           $_REQUEST['ajaxfct']=='admin.makeStats.consolidate' or
    68            $_REQUEST['ajaxfct']=='admin.makeStats.getStatus' or
    6968           $_REQUEST['ajaxfct']=='admin.showStats.getListTags' or
    7069           $_REQUEST['ajaxfct']=='admin.showStats.getListImages' or
    7170           $_REQUEST['ajaxfct']=='admin.updateTag.select' or
     71           $_REQUEST['ajaxfct']=='admin.config.setOption' or
    7272           $_REQUEST['ajaxfct']=='admin.group.getList' or
    7373           $_REQUEST['ajaxfct']=='admin.group.delete' or
     
    100100               $_REQUEST['selectMode']=="caddieAdd" or
    101101               $_REQUEST['selectMode']=="caddieReplace" or
     102               $_REQUEST['selectMode']=="analyzed" or
    102103               $_REQUEST['selectMode']=="all")) $_REQUEST['selectMode']="caddieAdd";
    103104
    104105          if(!isset($_REQUEST['numOfItems'])) $_REQUEST['numOfItems']=25;
     106
     107          if(!isset($_REQUEST['ignoreOptions'])) $_REQUEST['ignoreOptions']=array();
    105108        }
    106109
     
    135138
    136139          if(!($_REQUEST['filterType']=="" or
    137                $_REQUEST['filterType']=="magic" or
     140               ($_REQUEST['filterType']=="magic" and !in_array('magic', $this->config['amd_FillDataBaseExcludeFilters'])) or
    138141               $_REQUEST['filterType']=="userDefined" or
    139                $_REQUEST['filterType']=="exif" or
    140                $_REQUEST['filterType']=="exif.Canon" or
    141                $_REQUEST['filterType']=="exif.Nikon" or
    142                $_REQUEST['filterType']=="exif.Pentax" or
    143                $_REQUEST['filterType']=="xmp" or
    144                $_REQUEST['filterType']=="iptc")) $_REQUEST['filterType']="";
     142               ($_REQUEST['filterType']=="exif" and !in_array('exif', $this->config['amd_FillDataBaseExcludeFilters'])) or
     143               ($_REQUEST['filterType']=="exif.maker.Canon" and !in_array('maker', $this->config['amd_FillDataBaseExcludeFilters'])) or
     144               ($_REQUEST['filterType']=="exif.maker.Nikon" and !in_array('maker', $this->config['amd_FillDataBaseExcludeFilters'])) or
     145               ($_REQUEST['filterType']=="exif.maker.Pentax" and !in_array('maker', $this->config['amd_FillDataBaseExcludeFilters'])) or
     146               ($_REQUEST['filterType']=="xmp" and !in_array('xmp', $this->config['amd_FillDataBaseExcludeFilters'])) or
     147               ($_REQUEST['filterType']=="iptc"  and !in_array('iptc', $this->config['amd_FillDataBaseExcludeFilters']))
     148               )) $_REQUEST['filterType']="";
    145149
    146150          if(!isset($_REQUEST['excludeUnusedTag'])) $_REQUEST['excludeUnusedTag']="n";
     
    176180
    177181          if(!isset($_REQUEST['tagSelected'])) $_REQUEST['tagSelected']="";
     182        }
     183
     184        /*
     185         * check admin.config.setOption values
     186         */
     187        if($_REQUEST['ajaxfct']=="admin.config.setOption")
     188        {
     189          if(!isset($_REQUEST['id'])) $_REQUEST['ajaxfct']='';
     190          if(!isset($_REQUEST['value'])) $_REQUEST['ajaxfct']='';
    178191        }
    179192
     
    315328      {
    316329        case 'admin.makeStats.getList':
    317           $result=$this->ajax_amd_admin_makeStatsGetList($_REQUEST['selectMode'], $_REQUEST['numOfItems']);
     330          $result=$this->ajax_amd_admin_makeStatsGetList($_REQUEST['selectMode'], $_REQUEST['numOfItems'], $_REQUEST['ignoreOptions']);
    318331          break;
    319332        case 'admin.makeStats.doAnalyze':
     
    323336          $result=$this->ajax_amd_admin_makeStatsConsolidate();
    324337          break;
    325         case 'admin.makeStats.getStatus':
    326           $result=$this->ajax_amd_admin_makeStatsGetStatus();
    327           break;
    328338        case 'admin.showStats.getListTags':
    329339          $result=$this->ajax_amd_admin_showStatsGetListTags($_REQUEST['orderType'], $_REQUEST['filterType'], $_REQUEST['excludeUnusedTag'], $_REQUEST['selectedTagOnly']);
     
    334344        case 'admin.updateTag.select':
    335345          $result=$this->ajax_amd_admin_updateTagSelect($_REQUEST['numId'], $_REQUEST['tagSelected']);
     346          break;
     347        case 'admin.config.setOption':
     348          $result=$this->ajax_amd_admin_configSetOption($_REQUEST['id'], $_REQUEST['value']);
    336349          break;
    337350        case 'admin.group.getList':
     
    452465     *                      "23 78 4523 5670"
    453466     */
    454     private function ajax_amd_admin_makeStatsGetList($mode, $nbOfItems)
     467    private function ajax_amd_admin_makeStatsGetList($mode, $nbOfItems, $ignoreSchemas)
    455468    {
    456469      global $user;
    457470
    458471      $returned="";
     472      $this->config['amd_FillDataBaseIgnoreSchemas']=$ignoreSchemas;
    459473      $this->config['amd_NumberOfItemsPerRequest']=$nbOfItems;
    460474      $this->saveConfig();
    461475
    462476      $sql="SELECT ait.imageId FROM ".$this->tables['images']." ait";
    463       if($mode=="notAnalyzed")
     477      if($mode=='notAnalyzed')
    464478      {
    465479        $sql.=" WHERE ait.analyzed='n'";
    466480      }
    467       elseif($mode=="caddieAdd" or $mode=="caddieReplace")
    468       {
    469 
     481      elseif($mode=='caddieAdd' or $mode=='caddieReplace')
     482      {
    470483        $sql.=" LEFT JOIN ".CADDIE_TABLE." ct ON ait.imageId = ct.element_id
    471484              WHERE ct.user_id = ".$user['id']." ";
    472485
    473         if($mode=="caddieAdd") $sql.=" AND ait.analyzed='n'";
    474       }
    475 
    476       if($mode=="all" or $mode=="caddieReplace")
     486        if($mode=='caddieAdd') $sql.=" AND ait.analyzed='n'";
     487      }
     488      elseif($mode=='analyzed')
     489      {
     490        $sql.=" WHERE ait.analyzed='y'";
     491
     492        pwg_query("UPDATE ".$this->tables['images']." SET nbTags=0 WHERE analyzed='y';");
     493        pwg_query("UPDATE ".$this->tables['used_tags']." SET numOfImg=0");
     494        pwg_query("DELETE FROM ".$this->tables['images_tags']);
     495      }
     496
     497      if($mode=='all' or $mode=='caddieReplace')
    477498      {
    478499        pwg_query("UPDATE ".$this->tables['images']." SET analyzed='n', nbTags=0");
     
    563584
    564585    /**
    565      * returns a list of formated string, separated with a semi-colon :
    566      *  - number of current analyzed pictures + number of current analyzed tags
    567      *    for the analyzed pictures
    568      *  - number of pictures not analyzed
    569      *  - number of pictures without tag
    570      *
    571      * @return String
    572      */
    573     private function ajax_amd_admin_makeStatsGetStatus()
    574     {
    575       $numOfMetaData=0;
    576       $numOfPictures=0;
    577       $numOfPicturesNotAnalyzed=0;
    578 
    579       $sql="SELECT COUNT(imageId), SUM(nbTags) FROM ".$this->tables['images']."
    580               WHERE analyzed='y';";
    581       $result=pwg_query($sql);
    582       if($result)
    583       {
    584         while($row=pwg_db_fetch_row($result))
    585         {
    586           $numOfPictures=$row[0];
    587           $numOfMetaData=$row[1];
    588         }
    589       }
    590 
    591 
    592       $sql="SELECT COUNT(imageId) FROM ".$this->tables['images']."
    593               WHERE analyzed='n';";
    594       $result=pwg_query($sql);
    595       if($result)
    596       {
    597         while($row=pwg_db_fetch_row($result))
    598         {
    599           $numOfPicturesNotAnalyzed=$row[0];
    600         }
    601       }
    602 
    603       $sql="SELECT COUNT(imageId) FROM ".$this->tables['images']."
    604               WHERE nbTags=0;";
    605       $result=pwg_query($sql);
    606       if($result)
    607       {
    608         while($row=pwg_db_fetch_row($result))
    609         {
    610           $numOfPicturesWithoutTags=$row[0];
    611         }
    612       }
    613 
    614       return(sprintf(l10n("g003_numberOfAnalyzedPictures"), $numOfPictures, $numOfMetaData).";".
    615                 sprintf(l10n("g003_numberOfNotAnalyzedPictures"), $numOfPicturesNotAnalyzed).";".
    616                 sprintf(l10n("g003_numberOfPicturesWithoutTags"), $numOfPicturesWithoutTags));
    617     }
    618 
    619 
    620     /**
    621586     * return a formatted <table> (using the template "amd_stat_show_iListTags")
    622587     * of used tag with, for each tag, the number and the percentage of pictures
     
    13851350      $nbImg=$this->buildUserDefinedTags($id);
    13861351
    1387       $sql="UPDATE ".$this->tables['used_tags']."
    1388               SET numOfImg='$nbImg';";
    1389       $result=pwg_query($sql);
     1352      $this->makeStatsConsolidation();
    13901353
    13911354      return($id.','.$nbImg);
     
    14381401    }
    14391402
    1440 
    1441   }
     1403    /**
     1404     * set value(s) for option(s)
     1405     *
     1406     * @param Array or String $ids : a string or an array of string (id)
     1407     * @param Array or String $values : a string or an array of string
     1408     * @return String : ok or ko
     1409     */
     1410    private function ajax_amd_admin_configSetOption($ids, $values)
     1411    {
     1412      if(is_array($ids) and is_array($values) and count($ids)==count($values))
     1413      {
     1414        foreach($ids as $key=>$id)
     1415        {
     1416          if(isset($id, $this->config))
     1417          {
     1418            $this->config[$id]=$values[$key];
     1419          }
     1420        }
     1421        $this->saveConfig();
     1422        return('ok');
     1423      }
     1424      elseif(is_string($ids) and is_string($values))
     1425      {
     1426        if(isset($ids, $this->config))
     1427        {
     1428          $this->config[$ids]=$values;
     1429        }
     1430        $this->saveConfig();
     1431        return('ok');
     1432      }
     1433
     1434      return('ko');
     1435    }
     1436
     1437
     1438
     1439  } //class
    14421440
    14431441
Note: See TracChangeset for help on using the changeset viewer.