Ignore:
Timestamp:
Oct 22, 2013, 2:58:58 PM (11 years ago)
Author:
mistic100
Message:

feature:2982 API: add high-level type check
introduces some constants fro bool, int, float, positive and notnull parameters
types are tested in PwgServer::invoke and no in each method
+ some optimizations + update methods descriptions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/ws_functions.inc.php

    r25019 r25077  
    227227  }
    228228
    229   if ( ($max_urls = intval($params['max_urls'])) <= 0)
    230   {
    231     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid max_urls");
    232   }
    233 
     229  $max_urls = $params['max_urls'];
    234230  list($max_id, $image_count) = pwg_db_fetch_row( pwg_query('SELECT MAX(id)+1, COUNT(*) FROM '.IMAGES_TABLE) );
    235231
     
    309305{
    310306  global $conf;
    311   if ($conf['show_version'] or is_admin() )
     307  if ( $conf['show_version'] or is_admin() )
     308  {
    312309    return PHPWG_VERSION;
     310  }
    313311  else
     312  {
    314313    return new PwgError(403, 'Forbidden');
     314  }
    315315}
    316316
     
    387387  {
    388388    return new PwgError(401, 'Access denied');
    389   }
    390   $params['image_id'] = array_map( 'intval',$params['image_id'] );
    391   if ( empty($params['image_id']) )
    392   {
    393     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid image_id");
    394389  }
    395390  global $user;
     
    428423  foreach($params['cat_id'] as $cat_id)
    429424  {
    430     $cat_id = (int)$cat_id;
    431     if ($cat_id<=0)
    432       continue;
    433425    if ($params['recursive'])
    434426    {
     
    961953    return new PwgError(405, "This method requires HTTP POST");
    962954  }
    963   $params['image_id'] = (int)$params['image_id'];
     955
    964956  $query = '
    965957SELECT DISTINCT image_id
     
    10151007{
    10161008  global $user, $conf;
    1017   $params['image_id'] = (int)$params['image_id'];
    1018   if ( $params['image_id']<=0 )
    1019   {
    1020     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid image_id");
    1021   }
    10221009
    10231010  $query='
     
    10291016    ).'
    10301017LIMIT 1';
    1031 
    1032   $image_row = pwg_db_fetch_assoc(pwg_query($query));
    1033   if ($image_row==null)
     1018  $result = pwg_query($query);
     1019 
     1020  if (pwg_db_num_rows($resul) == 0)
    10341021  {
    10351022    return new PwgError(404, "image_id not found");
    10361023  }
     1024 
     1025  $image_row = pwg_db_fetch_assoc($result);
    10371026  $image_row = array_merge( $image_row, ws_std_get_urls($image_row) );
    10381027
     
    12031192function ws_images_Rate($params, $service)
    12041193{
    1205   $image_id = (int)$params['image_id'];
    12061194  $query = '
    12071195SELECT DISTINCT id FROM '.IMAGES_TABLE.'
    12081196  INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id=image_id
    1209   WHERE id='.$image_id
     1197  WHERE id='.$params['image_id']
    12101198  .get_sql_condition_FandF(
    12111199    array(
     
    12221210  $rate = (int)$params['rate'];
    12231211  include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php');
    1224   $res = rate_picture( $image_id, $rate );
     1212  $res = rate_picture( $params['image_id'], $rate );
    12251213  if ($res==false)
    12261214  {
     
    12561244      implode(' AND ', $where_clauses)
    12571245    );
    1258 
    1259   $params['per_page'] = (int)$params['per_page'];
    1260   $params['page'] = (int)$params['page'];
    12611246
    12621247  $image_ids = array_slice(
     
    13181303    return new PwgError(405, "This method requires HTTP POST");
    13191304  }
    1320   $params['image_id'] = array_map( 'intval',$params['image_id'] );
    1321   if ( empty($params['image_id']) )
    1322   {
    1323     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid image_id");
    1324   }
    13251305  global $conf;
    1326   if ( !in_array( (int)$params['level'], $conf['available_permission_levels']) )
     1306  if ( !in_array($params['level'], $conf['available_permission_levels']) )
    13271307  {
    13281308    return new PwgError(WS_ERR_INVALID_PARAM, "Invalid level");
     
    13551335  }
    13561336
    1357   // is the image_id valid?
    1358   $params['image_id'] = (int)$params['image_id'];
    1359   if ($params['image_id'] <= 0)
    1360   {
    1361     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid image_id");
    1362   }
    1363 
    1364   // is the category valid?
    1365   $params['category_id'] = (int)$params['category_id'];
    1366   if ($params['category_id'] <= 0)
    1367   {
    1368     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid category_id");
    1369   }
    1370 
    1371   // is the rank valid?
    1372   $params['rank'] = (int)$params['rank'];
    1373   if ($params['rank'] <= 0)
    1374   {
    1375     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid rank");
    1376   }
    1377 
    13781337  // does the image really exist?
    13791338  $query='
    1380 SELECT
    1381     *
     1339SELECT COUNT(*)
    13821340  FROM '.IMAGES_TABLE.'
    13831341  WHERE id = '.$params['image_id'].'
    13841342;';
    13851343
    1386   $image_row = pwg_db_fetch_assoc(pwg_query($query));
    1387   if ($image_row == null)
     1344  list($count) = pwg_db_fetch_row(pwg_query($query));
     1345  if ($count == 0)
    13881346  {
    13891347    return new PwgError(404, "image_id not found");
     
    13921350  // is the image associated to this category?
    13931351  $query = '
    1394 SELECT
    1395     image_id,
    1396     category_id,
    1397     rank
     1352SELECT COUNT(*)
    13981353  FROM '.IMAGE_CATEGORY_TABLE.'
    13991354  WHERE image_id = '.$params['image_id'].'
    14001355    AND category_id = '.$params['category_id'].'
    14011356;';
    1402   $category_row = pwg_db_fetch_assoc(pwg_query($query));
    1403   if ($category_row == null)
     1357  list($count) = pwg_db_fetch_row(pwg_query($query));
     1358  if ($count == 0)
    14041359  {
    14051360    return new PwgError(404, "This image is not associated to this category");
     
    16251580  {
    16261581    return new PwgError(401, 'Access denied');
    1627   }
    1628 
    1629   $params['image_id'] = (int)$params['image_id'];
    1630   if ($params['image_id'] <= 0)
    1631   {
    1632     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid image_id");
    16331582  }
    16341583
     
    16471596  WHERE id = '.$params['image_id'].'
    16481597;';
    1649   $image = pwg_db_fetch_assoc(pwg_query($query));
    1650 
    1651   if ($image == null)
     1598  $result = pwg_query($query);
     1599
     1600  if (pwg_db_num_rows($result) == 0)
    16521601  {
    16531602    return new PwgError(404, "image_id not found");
    16541603  }
     1604 
     1605  $image = pwg_db_fetch_assoc($result);
    16551606
    16561607  // since Piwigo 2.4 and derivatives, we do not take the imported "thumb"
     
    17271678  }
    17281679
    1729   $params['image_id'] = (int)$params['image_id'];
    17301680  if ($params['image_id'] > 0)
    17311681  {
    17321682    $query='
    1733 SELECT *
     1683SELECT COUNT(*)
    17341684  FROM '.IMAGES_TABLE.'
    17351685  WHERE id = '.$params['image_id'].'
    17361686;';
    17371687
    1738     $image_row = pwg_db_fetch_assoc(pwg_query($query));
    1739     if ($image_row == null)
     1688    list($count) = pwg_db_fetch_row(pwg_query($query));
     1689    if ($count == 0)
    17401690    {
    17411691      return new PwgError(404, "image_id not found");
     
    17561706
    17571707    $query = '
    1758 SELECT
    1759     COUNT(*) AS counter
     1708SELECT COUNT(*)
    17601709  FROM '.IMAGES_TABLE.'
    17611710  WHERE '.$where_clause.'
     
    18801829  if (!isset($_FILES['image']))
    18811830  {
    1882     return new PwgError(405, "The image (file) parameter is missing");
    1883   }
    1884 
    1885   $params['image_id'] = (int)$params['image_id'];
     1831    return new PwgError(405, "The image (file) is missing");
     1832  }
     1833
    18861834  if ($params['image_id'] > 0)
    18871835  {
    18881836    $query='
    1889 SELECT *
     1837SELECT COUNT(*)
    18901838  FROM '.IMAGES_TABLE.'
    18911839  WHERE id = '.$params['image_id'].'
    18921840;';
    18931841
    1894     $image_row = pwg_db_fetch_assoc(pwg_query($query));
    1895     if ($image_row == null)
     1842    list($count) = pwg_db_fetch_row(pwg_query($query));
     1843    if ($count == 0)
    18961844    {
    18971845      return new PwgError(404, "image_id not found");
    18981846    }
    1899   }
    1900 
    1901   // category
    1902   $params['category'] = (int)$params['category'];
    1903   if ($params['category'] <= 0 and $params['image_id'] <= 0)
    1904   {
    1905     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid category_id");
    19061847  }
    19071848
     
    19111852    $_FILES['image']['tmp_name'],
    19121853    $_FILES['image']['name'],
    1913     $params['category'] > 0 ? array($params['category']) : null,
     1854    $params['category'],
    19141855    8,
    19151856    $params['image_id'] > 0 ? $params['image_id'] : null
     
    19321873  }
    19331874
    1934   if (count(array_keys($update)) > 0)
     1875  if (count($update) > 0)
    19351876  {
    19361877    $update['id'] = $image_id;
     
    19391880      IMAGES_TABLE,
    19401881      $update,
    1941       array('id', $update['id'])
     1882      array('id' => $update['id'])
    19421883      );
    19431884  }
     
    19701911  $url_params = array('image_id' => $image_id);
    19711912
    1972   if ($params['category'] > 0)
     1913  if (!empty($params['category']))
    19731914  {
    19741915    $query = '
    19751916SELECT id, name, permalink
    19761917  FROM '.CATEGORIES_TABLE.'
    1977   WHERE id = '.$params['category'].'
     1918  WHERE id = '.$params['category'][0].'
    19781919;';
    19791920    $result = pwg_query($query);
     
    20101951  }
    20111952
    2012   $user_id = (int)$params['user_id'];
    2013   if ($user_id<=0)
    2014   {
    2015     return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid user_id');
    2016   }
    2017 
    20181953  $query = '
    20191954DELETE FROM '.RATE_TABLE.'
    2020   WHERE user_id='.$user_id;
     1955  WHERE user_id='.$params['user_id'];
    20211956
    20221957  if (!empty($params['anonymous_id']))
     
    21452080
    21462081  // first build all the tag_ids we are interested in
    2147   $params['tag_id'] = array_map( 'intval',$params['tag_id'] );
    21482082  $tags = find_tags($params['tag_id'], $params['tag_url_name'], $params['tag_name']);
    21492083  $tags_by_id = array();
     
    21692103
    21702104  $count_set = count($image_ids);
    2171   $params['per_page'] = (int)$params['per_page'];
    2172   $params['page'] = (int)$params['page'];
    21732105  $image_ids = array_slice($image_ids, $params['per_page']*$params['page'], $params['per_page'] );
    21742106
     
    22732205  }
    22742206 
    2275   if (!empty($params['visible']) and in_array($params['visible'], array('true','false')))
    2276   {
    2277     $options['visible'] = get_boolean($params['visible']);
    2278   }
    2279  
    2280   if (!empty($params['commentable']) and in_array($params['commentable'], array('true','false')) )
    2281   {
    2282     $options['commentable'] = get_boolean($params['commentable']);
    2283   }
    2284  
    22852207  if (!empty($params['comment']))
    22862208  {
     
    23682290    }
    23692291  }
    2370 
    2371   if ('filename' == $conf['uniqueness_mode'])
     2292  else if ('filename' == $conf['uniqueness_mode'])
    23722293  {
    23732294    // search among photos the list of photos already added, based on
     
    24202341  // high_sum
    24212342
    2422   $params['image_id'] = (int)$params['image_id'];
    2423   if ($params['image_id'] <= 0)
    2424   {
    2425     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid image_id");
    2426   }
    2427 
    24282343  $query = '
    24292344SELECT
     
    24902405  }
    24912406
    2492   $params['image_id'] = (int)$params['image_id'];
    2493   if ($params['image_id'] <= 0)
    2494   {
    2495     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid image_id");
    2496   }
    2497 
    24982407  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
    24992408
     
    25032412  WHERE id = '.$params['image_id'].'
    25042413;';
    2505 
    2506   $image_row = pwg_db_fetch_assoc(pwg_query($query));
    2507   if ($image_row == null)
     2414  $result = pwg_query($query);
     2415 
     2416  if (pwg_db_num_rows($result) == 0)
    25082417  {
    25092418    return new PwgError(404, "image_id not found");
    25102419  }
     2420 
     2421  $image_row = pwg_db_fetch_assoc($result);
    25112422
    25122423  // database registration
     
    25652476      IMAGES_TABLE,
    25662477      $update,
    2567       array('id', $update['id'])
     2478      array('id' => $update['id'])
    25682479      );
    25692480  }
     
    26342545  }
    26352546
    2636   if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token'])
     2547  if (get_pwg_token() != $params['pwg_token'])
    26372548  {
    26382549    return new PwgError(403, 'Invalid security token');
    26392550  }
    26402551
    2641   $params['image_id'] = preg_split(
    2642     '/[\s,;\|]/',
    2643     $params['image_id'],
    2644     -1,
    2645     PREG_SPLIT_NO_EMPTY
    2646     );
     2552  if (!is_array($params['image_id']))
     2553  {
     2554    $params['image_id'] = preg_split(
     2555      '/[\s,;\|]/',
     2556      $params['image_id'],
     2557      -1,
     2558      PREG_SPLIT_NO_EMPTY
     2559      );
     2560  }
    26472561  $params['image_id'] = array_map('intval', $params['image_id']);
    26482562
     
    28272741  // comment
    28282742
    2829   $params['category_id'] = (int)$params['category_id'];
    2830   if ($params['category_id'] <= 0)
    2831   {
    2832     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid category_id");
    2833   }
    2834 
    28352743  // database registration
    28362744  $update = array(
     
    28582766      CATEGORIES_TABLE,
    28592767      $update,
    2860       array('id', $update['id'])
     2768      array('id' => $update['id'])
    28612769      );
    28622770  }
     
    28802788  // image_id
    28812789
    2882   $params['category_id'] = (int)$params['category_id'];
    2883   if ($params['category_id'] <= 0)
    2884   {
    2885     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid category_id");
    2886   }
    2887 
    28882790  // does the category really exist?
    28892791  $query='
    2890 SELECT
    2891     *
     2792SELECT COUNT(*)
    28922793  FROM '.CATEGORIES_TABLE.'
    28932794  WHERE id = '.$params['category_id'].'
    28942795;';
    2895   $row = pwg_db_fetch_assoc(pwg_query($query));
    2896   if ($row == null)
     2796  list($count) = pwg_db_fetch_row(pwg_query($query));
     2797  if ($count == 0)
    28972798  {
    28982799    return new PwgError(404, "category_id not found");
    2899   }
    2900 
    2901   $params['image_id'] = (int)$params['image_id'];
    2902   if ($params['image_id'] <= 0)
    2903   {
    2904     return new PwgError(WS_ERR_INVALID_PARAM, "Invalid image_id");
    29052800  }
    29062801
    29072802  // does the image really exist?
    29082803  $query='
    2909 SELECT
    2910     *
     2804SELECT COUNT(*)
    29112805  FROM '.IMAGES_TABLE.'
    29122806  WHERE id = '.$params['image_id'].'
    29132807;';
    29142808
    2915   $row = pwg_db_fetch_assoc(pwg_query($query));
    2916   if ($row == null)
     2809  list($count) = pwg_db_fetch_row(pwg_query($query));
     2810  if ($count == 0)
    29172811  {
    29182812    return new PwgError(404, "image_id not found");
     
    29482842  }
    29492843
    2950   if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token'])
     2844  if (get_pwg_token() != $params['pwg_token'])
    29512845  {
    29522846    return new PwgError(403, 'Invalid security token');
     
    29642858  }
    29652859
    2966   $params['category_id'] = preg_split(
    2967     '/[\s,;\|]/',
    2968     $params['category_id'],
    2969     -1,
    2970     PREG_SPLIT_NO_EMPTY
    2971     );
     2860  if (!is_array($params['category_id']))
     2861  {
     2862    $params['category_id'] = preg_split(
     2863      '/[\s,;\|]/',
     2864      $params['category_id'],
     2865      -1,
     2866      PREG_SPLIT_NO_EMPTY
     2867      );
     2868  }
    29722869  $params['category_id'] = array_map('intval', $params['category_id']);
    29732870
     
    30172914  }
    30182915
    3019   if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token'])
     2916  if (get_pwg_token() != $params['pwg_token'])
    30202917  {
    30212918    return new PwgError(403, 'Invalid security token');
    30222919  }
    30232920
    3024   $params['category_id'] = preg_split(
    3025     '/[\s,;\|]/',
    3026     $params['category_id'],
    3027     -1,
    3028     PREG_SPLIT_NO_EMPTY
    3029     );
     2921  if (!is_array($params['category_id']))
     2922  {
     2923    $params['category_id'] = preg_split(
     2924      '/[\s,;\|]/',
     2925      $params['category_id'],
     2926      -1,
     2927      PREG_SPLIT_NO_EMPTY
     2928      );
     2929  }
    30302930  $params['category_id'] = array_map('intval', $params['category_id']);
    30312931
     
    30962996  // does this parent exists? This check should be made in the
    30972997  // move_categories function, not here
    3098   //
    30992998  // 0 as parent means "move categories at gallery root"
    3100   if (!is_numeric($params['parent']))
    3101   {
    3102     return new PwgError(403, 'Invalid parent input parameter');
    3103   }
    3104 
    31052999  if (0 != $params['parent']) {
    3106     $params['parent'] = intval($params['parent']);
    31073000    $subcat_ids = get_subcat_ids(array($params['parent']));
    31083001    if (count($subcat_ids) == 0)
     
    32073100  }
    32083101
    3209   if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token'])
     3102  if (get_pwg_token() != $params['pwg_token'])
    32103103  {
    32113104    return new PwgError(403, 'Invalid security token');
     
    32413134  }
    32423135
    3243   if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token'])
     3136  if (get_pwg_token() != $params['pwg_token'])
    32443137  {
    32453138    return new PwgError(403, 'Invalid security token');
     
    32723165  }
    32733166
    3274   if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token'])
     3167  if (get_pwg_token() != $params['pwg_token'])
    32753168  {
    32763169    return new PwgError(403, 'Invalid security token');
    32773170  }
    32783171
    3279   if (empty($params['type']) or !in_array($params['type'], array('plugins', 'themes', 'languages')))
     3172  if (!in_array($params['type'], array('plugins', 'themes', 'languages')))
    32803173  {
    32813174    return new PwgError(403, "invalid extension type");
    3282   }
    3283 
    3284   if (empty($params['id']) or empty($params['revision']))
    3285   {
    3286     return new PwgError(null, 'Wrong parameters');
    32873175  }
    32883176
     
    33673255  }
    33683256
    3369   if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token'])
     3257  if (get_pwg_token() != $params['pwg_token'])
    33703258  {
    33713259    return new PwgError(403, 'Invalid security token');
Note: See TracChangeset for help on using the changeset viewer.