Changeset 9743


Ignore:
Timestamp:
03/17/11 15:47:18 (9 years ago)
Author:
cljosse
Message:

ws_getVersion -> add test for admin , sendResponse -> add a trigger for debug ws

Location:
branches/2.1/include
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.1/include/ws_core.inc.php

    r6890 r9743  
    11<?php 
    22// +-----------------------------------------------------------------------+ 
    3 // | Piwigo - a PHP based picture gallery                                  | 
     3// | Piwigo - a PHP based photo gallery                                    | 
    44// +-----------------------------------------------------------------------+ 
    5 // | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org | 
     5// | Copyright(C) 2008-2011 Piwigo Team                  http://piwigo.org | 
    66// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net | 
    77// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick | 
     
    372372    @header('Content-Type: '.$contentType.'; charset='.get_pwg_charset()); 
    373373    print_r($encodedResponse); 
     374    trigger_action('sendResponse', $encodedResponse ); 
    374375  } 
    375376 
  • branches/2.1/include/ws_functions.inc.php

    r7781 r9743  
    11<?php 
    22// +-----------------------------------------------------------------------+ 
    3 // | Piwigo - a PHP based picture gallery                                  | 
     3// | Piwigo - a PHP based photo gallery                                    | 
    44// +-----------------------------------------------------------------------+ 
    5 // | Copyright(C) 2008-2010 Piwigo Team                  http://piwigo.org | 
     5// | Copyright(C) 2008-2011 Piwigo Team                  http://piwigo.org | 
    66// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net | 
    77// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick | 
     
    6969    $clauses[] = $tbl_name.'hit<='.$params['f_max_hit']; 
    7070  } 
    71   if ( isset($params['f_min_date_posted']) ) 
    72   { 
    73     $clauses[] = $tbl_name."date_available>='".$params['f_min_date_posted']."'"; 
    74   } 
    75   if ( isset($params['f_max_date_posted']) ) 
    76   { 
    77     $clauses[] = $tbl_name."date_available<'".$params['f_max_date_posted']."'"; 
     71  if ( isset($params['f_min_date_available']) ) 
     72  { 
     73    $clauses[] = $tbl_name."date_available>='".$params['f_min_date_available']."'"; 
     74  } 
     75  if ( isset($params['f_max_date_available']) ) 
     76  { 
     77    $clauses[] = $tbl_name."date_available<'".$params['f_max_date_available']."'"; 
    7878  } 
    7979  if ( isset($params['f_min_date_created']) ) 
     
    176176{ 
    177177  global $conf; 
    178   if ($conf['show_version']) 
     178  if ($conf['show_version'] or is_admin() ) 
    179179    return PHPWG_VERSION; 
    180180  else 
     
    743743  { 
    744744    $comment_post_data['author'] = stripslashes($user['username']); 
    745     $comment_post_data['key'] = get_comment_post_key($params['image_id']); 
     745    $comment_post_data['key'] = get_ephemeral_key(2, $params['image_id']); 
    746746  } 
    747747 
     
    893893function ws_images_setPrivacyLevel($params, &$service) 
    894894{ 
    895   if (!is_admin() || is_adviser() ) 
     895  if (!is_admin()) 
    896896  { 
    897897    return new PwgError(401, 'Access denied'); 
     
    936936  // position 
    937937 
    938   if (!is_admin() || is_adviser() ) 
     938  if (!is_admin()) 
    939939  { 
    940940    return new PwgError(401, 'Access denied'); 
     
    10771077function add_file($file_path, $type, $original_sum, $file_sum) 
    10781078{ 
     1079  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php'); 
     1080   
    10791081  $file_path = file_path_for_type($file_path, $type); 
    10801082 
     
    11401142 
    11411143  global $conf; 
    1142   if (!is_admin() || is_adviser() ) 
     1144  if (!is_admin()) 
    11431145  { 
    11441146    return new PwgError(401, 'Access denied'); 
     
    12081210function ws_images_add($params, &$service) 
    12091211{ 
    1210   global $conf; 
    1211   if (!is_admin() || is_adviser() ) 
     1212  global $conf, $user; 
     1213  if (!is_admin()) 
    12121214  { 
    12131215    return new PwgError(401, 'Access denied'); 
     
    12831285    'height' => $file_infos['height'], 
    12841286    'md5sum' => $params['original_sum'], 
     1287    'added_by' => $user['id'], 
    12851288    ); 
    12861289 
     
    13361339   
    13371340  invalidate_user_cache(); 
     1341} 
     1342 
     1343function ws_images_addSimple($params, &$service) 
     1344{ 
     1345  global $conf; 
     1346  if (!is_admin()) 
     1347  { 
     1348    return new PwgError(401, 'Access denied'); 
     1349  } 
     1350 
     1351  if (!$service->isPost()) 
     1352  { 
     1353    return new PwgError(405, "This method requires HTTP POST"); 
     1354  } 
     1355   
     1356  $params['image_id'] = (int)$params['image_id']; 
     1357  if ($params['image_id'] > 0) 
     1358  { 
     1359    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); 
     1360 
     1361    $query=' 
     1362SELECT * 
     1363  FROM '.IMAGES_TABLE.' 
     1364  WHERE id = '.$params['image_id'].' 
     1365;'; 
     1366 
     1367    $image_row = pwg_db_fetch_assoc(pwg_query($query)); 
     1368    if ($image_row == null) 
     1369    { 
     1370      return new PwgError(404, "image_id not found"); 
     1371    } 
     1372  } 
     1373 
     1374  // category 
     1375  $params['category'] = (int)$params['category']; 
     1376  if ($params['category'] <= 0 and $params['image_id'] <= 0) 
     1377  { 
     1378    return new PwgError(WS_ERR_INVALID_PARAM, "Invalid category_id"); 
     1379  } 
     1380 
     1381  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php'); 
     1382  prepare_upload_configuration(); 
     1383 
     1384  $image_id = add_uploaded_file( 
     1385    $_FILES['image']['tmp_name'], 
     1386    $_FILES['image']['name'], 
     1387    $params['category'] > 0 ? array($params['category']) : null, 
     1388    8, 
     1389    $params['image_id'] > 0 ? $params['image_id'] : null 
     1390    ); 
     1391 
     1392  $info_columns = array( 
     1393    'name', 
     1394    'author', 
     1395    'comment', 
     1396    'level', 
     1397    'date_creation', 
     1398    ); 
     1399 
     1400  foreach ($info_columns as $key) 
     1401  { 
     1402    if (isset($params[$key])) 
     1403    { 
     1404      $update[$key] = $params[$key]; 
     1405    } 
     1406  } 
     1407 
     1408  if (count(array_keys($update)) > 0) 
     1409  { 
     1410    $update['id'] = $image_id; 
     1411 
     1412    include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); 
     1413    mass_updates( 
     1414      IMAGES_TABLE, 
     1415      array( 
     1416        'primary' => array('id'), 
     1417        'update'  => array_diff(array_keys($update), array('id')) 
     1418        ), 
     1419      array($update) 
     1420      ); 
     1421  } 
     1422 
     1423 
     1424  if (isset($params['tags']) and !empty($params['tags'])) 
     1425  { 
     1426    $tag_ids = array(); 
     1427    $tag_names = explode(',', $params['tags']); 
     1428    foreach ($tag_names as $tag_name) 
     1429    { 
     1430      $tag_id = tag_id_from_tag_name($tag_name); 
     1431      array_push($tag_ids, $tag_id); 
     1432    } 
     1433 
     1434    add_tags($tag_ids, array($image_id)); 
     1435  } 
     1436 
     1437  $url_params = array('image_id' => $image_id); 
     1438 
     1439  if ($params['category'] > 0) 
     1440  { 
     1441    $query = ' 
     1442SELECT id, name, permalink 
     1443  FROM '.CATEGORIES_TABLE.' 
     1444  WHERE id = '.$params['category'].' 
     1445;'; 
     1446    $result = pwg_query($query); 
     1447    $category = pwg_db_fetch_assoc($result); 
     1448 
     1449    $url_params['section'] = 'categories'; 
     1450    $url_params['category'] = $category; 
     1451  } 
     1452 
     1453  return array( 
     1454    'image_id' => $image_id, 
     1455    'url' => make_picture_url($url_params), 
     1456    ); 
    13381457} 
    13391458 
     
    14611580 
    14621581 
    1463   $image_ids = array(); 
     1582  $where_clauses = ws_std_image_sql_filter($params); 
     1583  if (!empty($where_clauses)) 
     1584  { 
     1585    $where_clauses = implode( ' AND ', $where_clauses); 
     1586  } 
     1587  $image_ids = get_image_ids_for_tags( 
     1588    $tag_ids, 
     1589    $params['tag_mode_and'] ? 'AND' : 'OR', 
     1590    $where_clauses, 
     1591    ws_std_image_sql_order($params) ); 
     1592 
     1593 
     1594  $image_ids = array_slice($image_ids, (int)($params['per_page']*$params['page']), (int)$params['per_page'] ); 
     1595   
    14641596  $image_tag_map = array(); 
    1465  
    1466   if ( !empty($tag_ids) ) 
     1597  if ( !empty($image_ids) and !$params['tag_mode_and'] ) 
    14671598  { // build list of image ids with associated tags per image 
    1468     if ($params['tag_mode_and']) 
    1469     { 
    1470       $image_ids = get_image_ids_for_tags( $tag_ids ); 
    1471     } 
    1472     else 
    1473     { 
    1474       $query = ' 
     1599    $query = ' 
    14751600SELECT image_id, GROUP_CONCAT(tag_id) AS tag_ids 
    14761601  FROM '.IMAGE_TAG_TABLE.' 
    1477   WHERE tag_id IN ('.implode(',',$tag_ids).') 
     1602  WHERE tag_id IN ('.implode(',',$tag_ids).') AND image_id IN ('.implode(',',$image_ids).') 
    14781603  GROUP BY image_id'; 
    1479       $result = pwg_query($query); 
    1480       while ( $row=pwg_db_fetch_assoc($result) ) 
    1481       { 
    1482         $row['image_id'] = (int)$row['image_id']; 
    1483         array_push( $image_ids, $row['image_id'] ); 
    1484         $image_tag_map[ $row['image_id'] ] = explode(',', $row['tag_ids']); 
    1485       } 
     1604    $result = pwg_query($query); 
     1605    while ( $row=pwg_db_fetch_assoc($result) ) 
     1606    { 
     1607      $row['image_id'] = (int)$row['image_id']; 
     1608      array_push( $image_ids, $row['image_id'] ); 
     1609      $image_tag_map[ $row['image_id'] ] = explode(',', $row['tag_ids']); 
    14861610    } 
    14871611  } 
    14881612 
    14891613  $images = array(); 
    1490   if ( !empty($image_ids)) 
    1491   { 
    1492     $where_clauses = ws_std_image_sql_filter($params); 
    1493     $where_clauses[] = get_sql_condition_FandF( 
    1494         array 
    1495           ( 
    1496             'forbidden_categories' => 'category_id', 
    1497             'visible_categories' => 'category_id', 
    1498             'visible_images' => 'i.id' 
    1499           ), 
    1500         '', true 
    1501       ); 
    1502     $where_clauses[] = 'id IN ('.implode(',',$image_ids).')'; 
    1503  
    1504     $order_by = ws_std_image_sql_order($params); 
    1505     if (empty($order_by)) 
    1506     { 
    1507       $order_by = $conf['order_by']; 
    1508     } 
    1509     else 
    1510     { 
    1511       $order_by = 'ORDER BY '.$order_by; 
    1512     } 
    1513  
    1514     $query = ' 
    1515 SELECT DISTINCT i.* FROM '.IMAGES_TABLE.' i 
    1516   INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON i.id=image_id 
    1517   WHERE '. implode(' 
    1518     AND ', $where_clauses).' 
    1519 '.$order_by.' 
    1520 LIMIT '.(int)$params['per_page'].' OFFSET '.(int)($params['per_page']*$params['page']); 
    1521  
    1522     $result = pwg_query($query); 
     1614  if (!empty($image_ids)) 
     1615  { 
     1616    $rank_of = array_flip($image_ids); 
     1617    $result = pwg_query(' 
     1618SELECT * FROM '.IMAGES_TABLE.' 
     1619  WHERE id IN ('.implode(',',$image_ids).')'); 
    15231620    while ($row = pwg_db_fetch_assoc($result)) 
    15241621    { 
    15251622      $image = array(); 
     1623      $image['rank'] = $rank_of[ $row['id'] ]; 
    15261624      foreach ( array('id', 'width', 'height', 'hit') as $k ) 
    15271625      { 
     
    15671665      array_push($images, $image); 
    15681666    } 
     1667    usort($images, 'rank_compare'); 
     1668    unset($rank_of); 
    15691669  } 
    15701670 
     
    15851685function ws_categories_add($params, &$service) 
    15861686{ 
    1587   if (!is_admin() or is_adviser()) 
     1687  if (!is_admin()) 
    15881688  { 
    15891689    return new PwgError(401, 'Access denied'); 
     
    16091709function ws_tags_add($params, &$service) 
    16101710{ 
    1611   if (!is_admin() or is_adviser()) 
     1711  if (!is_admin()) 
    16121712  { 
    16131713    return new PwgError(401, 'Access denied'); 
     
    16301730  global $conf; 
    16311731   
    1632   if (!is_admin() or is_adviser()) 
     1732  if (!is_admin()) 
    16331733  { 
    16341734    return new PwgError(401, 'Access denied'); 
     
    17061806function ws_images_checkFiles($params, &$service) 
    17071807{ 
    1708   if (!is_admin() or is_adviser()) 
     1808  if (!is_admin()) 
    17091809  { 
    17101810    return new PwgError(401, 'Access denied'); 
     
    17451845 
    17461846    if (isset($params[$param_name.'_sum'])) { 
     1847      include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php'); 
    17471848      $type_path = file_path_for_type($path, $type); 
    17481849      if (!is_file($type_path)) { 
     
    17631864} 
    17641865 
    1765 function file_path_for_type($file_path, $type='thumb') 
    1766 { 
    1767   // resolve the $file_path depending on the $type 
    1768   if ('thumb' == $type) { 
    1769     $file_path = get_thumbnail_location( 
    1770       array( 
    1771         'path' => $file_path, 
    1772         'tn_ext' => 'jpg', 
    1773         ) 
    1774       ); 
    1775   } 
    1776  
    1777   if ('high' == $type) { 
    1778     @include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php'); 
    1779     $file_path = get_high_location( 
    1780       array( 
    1781         'path' => $file_path, 
    1782         'has_high' => 'true' 
    1783         ) 
    1784       ); 
    1785   } 
    1786  
    1787   return $file_path; 
    1788 } 
    1789  
    17901866function ws_images_setInfo($params, &$service) 
    17911867{ 
    17921868  global $conf; 
    1793   if (!is_admin() || is_adviser() ) 
     1869  if (!is_admin()) 
    17941870  { 
    17951871    return new PwgError(401, 'Access denied'); 
     
    19171993} 
    19181994 
     1995function ws_images_delete($params, &$service) 
     1996{ 
     1997  global $conf; 
     1998  if (!is_admin()) 
     1999  { 
     2000    return new PwgError(401, 'Access denied'); 
     2001  } 
     2002 
     2003  if (!$service->isPost()) 
     2004  { 
     2005    return new PwgError(405, "This method requires HTTP POST"); 
     2006  } 
     2007 
     2008  if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token']) 
     2009  { 
     2010    return new PwgError(403, 'Invalid security token'); 
     2011  } 
     2012 
     2013  $params['image_id'] = preg_split( 
     2014    '/[\s,;\|]/', 
     2015    $params['image_id'], 
     2016    -1, 
     2017    PREG_SPLIT_NO_EMPTY 
     2018    ); 
     2019  $params['image_id'] = array_map('intval', $params['image_id']); 
     2020 
     2021  $image_ids = array(); 
     2022  foreach ($params['image_id'] as $image_id) 
     2023  { 
     2024    if ($image_id > 0) 
     2025    { 
     2026      array_push($image_ids, $image_id); 
     2027    } 
     2028  } 
     2029 
     2030  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); 
     2031  delete_elements($image_ids, true); 
     2032} 
     2033 
    19192034function ws_add_image_category_relations($image_id, $categories_string, $replace_mode=false) 
    19202035{ 
     
    20742189{ 
    20752190  global $conf; 
    2076   if (!is_admin() || is_adviser() ) 
     2191  if (!is_admin()) 
    20772192  { 
    20782193    return new PwgError(401, 'Access denied'); 
     
    21292244} 
    21302245 
     2246function ws_categories_delete($params, &$service) 
     2247{ 
     2248  global $conf; 
     2249  if (!is_admin()) 
     2250  { 
     2251    return new PwgError(401, 'Access denied'); 
     2252  } 
     2253 
     2254  if (!$service->isPost()) 
     2255  { 
     2256    return new PwgError(405, "This method requires HTTP POST"); 
     2257  } 
     2258 
     2259  if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token']) 
     2260  { 
     2261    return new PwgError(403, 'Invalid security token'); 
     2262  } 
     2263 
     2264  $modes = array('no_delete', 'delete_orphans', 'force_delete'); 
     2265  if (!in_array($params['photo_deletion_mode'], $modes)) 
     2266  { 
     2267    return new PwgError( 
     2268      500, 
     2269      '[ws_categories_delete]' 
     2270      .' invalid parameter photo_deletion_mode "'.$params['photo_deletion_mode'].'"' 
     2271      .', possible values are {'.implode(', ', $modes).'}.' 
     2272      ); 
     2273  } 
     2274 
     2275  $params['category_id'] = preg_split( 
     2276    '/[\s,;\|]/', 
     2277    $params['category_id'], 
     2278    -1, 
     2279    PREG_SPLIT_NO_EMPTY 
     2280    ); 
     2281  $params['category_id'] = array_map('intval', $params['category_id']); 
     2282 
     2283  $category_ids = array(); 
     2284  foreach ($params['category_id'] as $category_id) 
     2285  { 
     2286    if ($category_id > 0) 
     2287    { 
     2288      array_push($category_ids, $category_id); 
     2289    } 
     2290  } 
     2291 
     2292  if (count($category_ids) == 0) 
     2293  { 
     2294    return; 
     2295  } 
     2296 
     2297  $query = ' 
     2298SELECT id 
     2299  FROM '.CATEGORIES_TABLE.' 
     2300  WHERE id IN ('.implode(',', $category_ids).') 
     2301;'; 
     2302  $category_ids = array_from_query($query, 'id'); 
     2303 
     2304  if (count($category_ids) == 0) 
     2305  { 
     2306    return; 
     2307  } 
     2308   
     2309  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); 
     2310  delete_categories($category_ids, $params['photo_deletion_mode']); 
     2311  update_global_rank(); 
     2312} 
     2313 
     2314function ws_categories_move($params, &$service) 
     2315{ 
     2316  global $conf, $page; 
     2317   
     2318  if (!is_admin()) 
     2319  { 
     2320    return new PwgError(401, 'Access denied'); 
     2321  } 
     2322 
     2323  if (!$service->isPost()) 
     2324  { 
     2325    return new PwgError(405, "This method requires HTTP POST"); 
     2326  } 
     2327 
     2328  if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token']) 
     2329  { 
     2330    return new PwgError(403, 'Invalid security token'); 
     2331  } 
     2332 
     2333  $params['category_id'] = preg_split( 
     2334    '/[\s,;\|]/', 
     2335    $params['category_id'], 
     2336    -1, 
     2337    PREG_SPLIT_NO_EMPTY 
     2338    ); 
     2339  $params['category_id'] = array_map('intval', $params['category_id']); 
     2340 
     2341  $category_ids = array(); 
     2342  foreach ($params['category_id'] as $category_id) 
     2343  { 
     2344    if ($category_id > 0) 
     2345    { 
     2346      array_push($category_ids, $category_id); 
     2347    } 
     2348  } 
     2349 
     2350  if (count($category_ids) == 0) 
     2351  { 
     2352    return new PwgError(403, 'Invalid category_id input parameter, no category to move'); 
     2353  } 
     2354 
     2355  // we can't move physical categories 
     2356  $categories_in_db = array(); 
     2357   
     2358  $query = ' 
     2359SELECT 
     2360    id, 
     2361    name, 
     2362    dir 
     2363  FROM '.CATEGORIES_TABLE.' 
     2364  WHERE id IN ('.implode(',', $category_ids).') 
     2365;'; 
     2366  $result = pwg_query($query); 
     2367  while ($row = pwg_db_fetch_assoc($result)) 
     2368  { 
     2369    $categories_in_db[$row['id']] = $row; 
     2370    // we break on error at first physical category detected 
     2371    if (!empty($row['dir'])) 
     2372    { 
     2373      $row['name'] = strip_tags( 
     2374        trigger_event( 
     2375          'render_category_name', 
     2376          $row['name'], 
     2377          'ws_categories_move' 
     2378          ) 
     2379        ); 
     2380       
     2381      return new PwgError( 
     2382        403, 
     2383        sprintf( 
     2384          'Category %s (%u) is not a virtual category, you cannot move it', 
     2385          $row['name'], 
     2386          $row['id'] 
     2387          ) 
     2388        ); 
     2389    } 
     2390  } 
     2391 
     2392  if (count($categories_in_db) != count($category_ids)) 
     2393  { 
     2394    $unknown_category_ids = array_diff($category_ids, array_keys($categories_in_db)); 
     2395     
     2396    return new PwgError( 
     2397      403, 
     2398      sprintf( 
     2399        'Category %u does not exist', 
     2400        $unknown_category_ids[0] 
     2401        ) 
     2402      ); 
     2403  } 
     2404 
     2405  // does this parent exists? This check should be made in the 
     2406  // move_categories function, not here 
     2407  // 
     2408  // 0 as parent means "move categories at gallery root" 
     2409  if (!is_numeric($params['parent'])) 
     2410  { 
     2411    return new PwgError(403, 'Invalid parent input parameter'); 
     2412  } 
     2413   
     2414  if (0 != $params['parent']) { 
     2415    $params['parent'] = intval($params['parent']); 
     2416    $subcat_ids = get_subcat_ids(array($params['parent'])); 
     2417    if (count($subcat_ids) == 0) 
     2418    { 
     2419      return new PwgError(403, 'Unknown parent category id'); 
     2420    } 
     2421  } 
     2422 
     2423  $page['infos'] = array(); 
     2424  $page['errors'] = array(); 
     2425  include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); 
     2426  move_categories($category_ids, $params['parent']); 
     2427  invalidate_user_cache(); 
     2428 
     2429  if (count($page['errors']) != 0) 
     2430  { 
     2431    return new PwgError(403, implode('; ', $page['errors'])); 
     2432  } 
     2433} 
     2434 
    21312435function ws_logfile($string) 
    21322436{ 
     
    21482452  global $conf; 
    21492453 
    2150   if (!is_admin() or is_adviser()) 
     2454  if (!is_admin()) 
    21512455  { 
    21522456    return new PwgError(401, 'Access denied'); 
    21532457  } 
    21542458 
     2459  include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php'); 
    21552460  $ret['message'] = ready_for_upload_message(); 
    21562461  $ret['ready_for_upload'] = true; 
     
    21642469} 
    21652470 
    2166 function ready_for_upload_message() 
     2471function ws_plugins_getList($params, &$service) 
    21672472{ 
    21682473  global $conf; 
    2169  
    2170   $relative_dir = preg_replace('#^'.PHPWG_ROOT_PATH.'#', '', $conf['upload_dir']); 
    2171  
    2172   if (!is_dir($conf['upload_dir'])) 
    2173   { 
    2174     if (!is_writable(dirname($conf['upload_dir']))) 
    2175     { 
    2176       return sprintf( 
    2177         l10n('Create the "%s" directory at the root of your Piwigo installation'), 
    2178         $relative_dir 
    2179         ); 
    2180     } 
     2474   
     2475  if (!is_admin()) 
     2476  { 
     2477    return new PwgError(401, 'Access denied'); 
     2478  } 
     2479 
     2480  include_once(PHPWG_ROOT_PATH.'admin/include/plugins.class.php'); 
     2481  $plugins = new plugins(); 
     2482  $plugins->sort_fs_plugins('name'); 
     2483  $plugin_list = array(); 
     2484 
     2485  foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) 
     2486  { 
     2487    if (isset($plugins->db_plugins_by_id[$plugin_id])) 
     2488    { 
     2489      $state = $plugins->db_plugins_by_id[$plugin_id]['state']; 
     2490    } 
     2491    else 
     2492    { 
     2493      $state = 'uninstalled'; 
     2494    } 
     2495 
     2496    array_push( 
     2497      $plugin_list, 
     2498      array( 
     2499        'id' => $plugin_id, 
     2500        'name' => $fs_plugin['name'], 
     2501        'version' => $fs_plugin['version'], 
     2502        'state' => $state, 
     2503        'description' => $fs_plugin['description'], 
     2504        ) 
     2505      ); 
     2506  } 
     2507 
     2508  return $plugin_list; 
     2509} 
     2510 
     2511function ws_plugins_performAction($params, &$service) 
     2512{ 
     2513  global $template; 
     2514   
     2515  if (!is_admin()) 
     2516  { 
     2517    return new PwgError(401, 'Access denied'); 
     2518  } 
     2519 
     2520  if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token']) 
     2521  { 
     2522    return new PwgError(403, 'Invalid security token'); 
     2523  } 
     2524 
     2525  define('IN_ADMIN', true); 
     2526  include_once(PHPWG_ROOT_PATH.'admin/include/plugins.class.php'); 
     2527  $plugins = new plugins(); 
     2528  $errors = $plugins->perform_action($params['action'], $params['plugin']); 
     2529 
     2530   
     2531  if (!empty($errors)) 
     2532  { 
     2533    return new PwgError(500, $errors); 
    21812534  } 
    21822535  else 
    21832536  { 
    2184     if (!is_writable($conf['upload_dir'])) 
    2185     { 
    2186       @chmod($conf['upload_dir'], 0777); 
    2187        
    2188       if (!is_writable($conf['upload_dir'])) 
    2189       { 
    2190         return sprintf( 
    2191           l10n('Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'), 
    2192           $relative_dir 
    2193           ); 
    2194       } 
    2195     } 
    2196   } 
    2197  
    2198   return null; 
     2537    if (in_array($params['action'], array('activate', 'deactivate'))) 
     2538    { 
     2539      $template->delete_compiled_templates(); 
     2540    } 
     2541    return true; 
     2542  } 
     2543} 
     2544 
     2545function ws_themes_performAction($params, &$service) 
     2546{ 
     2547  global $template; 
     2548   
     2549  if (!is_admin()) 
     2550  { 
     2551    return new PwgError(401, 'Access denied'); 
     2552  } 
     2553 
     2554  if (empty($params['pwg_token']) or get_pwg_token() != $params['pwg_token']) 
     2555  { 
     2556    return new PwgError(403, 'Invalid security token'); 
     2557  } 
     2558 
     2559  define('IN_ADMIN', true); 
     2560  include_once(PHPWG_ROOT_PATH.'admin/include/themes.class.php'); 
     2561  $themes = new themes(); 
     2562  $errors = $themes->perform_action($params['action'], $params['theme']); 
     2563   
     2564  if (!empty($errors)) 
     2565  { 
     2566    return new PwgError(500, $errors); 
     2567  } 
     2568  else 
     2569  { 
     2570    if (in_array($params['action'], array('activate', 'deactivate'))) 
     2571    { 
     2572      $template->delete_compiled_templates(); 
     2573    } 
     2574    return true; 
     2575  } 
    21992576} 
    22002577?> 
Note: See TracChangeset for help on using the changeset viewer.