Changeset 10098 for trunk/admin/include
- Timestamp:
- Apr 6, 2011, 11:43:46 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/admin/include/plugins.class.php
r8728 r10098 27 27 var $db_plugins_by_id = array(); 28 28 var $server_plugins = array(); 29 var $default_plugins = array('LocalFilesEditor', 'language_switch', 'c13y_upgrade', 'admin_multi_view'); 29 30 30 31 /** … … 186 187 break; 187 188 } 189 $query = ' 190 DELETE FROM ' . PLUGINS_TABLE . ' WHERE id=\'' . $plugin_id . '\''; 191 pwg_query($query); 188 192 if (!$this->deltree(PHPWG_PLUGINS_PATH . $plugin_id)) 189 193 { … … 284 288 } 285 289 290 // Retrieve PEM versions 291 function get_versions_to_check($version=PHPWG_VERSION) 292 { 293 $versions_to_check = array(); 294 $url = PEM_URL . '/api/get_version_list.php?category=12&format=php'; 295 if (fetchRemote($url, $result) and $pem_versions = @unserialize($result)) 296 { 297 if (!preg_match('/^\d+\.\d+\.\d+/', $version)) 298 { 299 $version = $pem_versions[0]['name']; 300 } 301 $branch = substr($version, 0, strrpos($version, '.')); 302 foreach ($pem_versions as $pem_version) 303 { 304 if (strpos($pem_version['name'], $branch) === 0) 305 { 306 $versions_to_check[] = $pem_version['id']; 307 } 308 } 309 } 310 return $versions_to_check; 311 } 312 286 313 /** 287 314 * Retrieve PEM server datas to $server_plugins … … 291 318 global $user; 292 319 320 $versions_to_check = $this->get_versions_to_check(); 321 if (empty($versions_to_check)) 322 { 323 return false; 324 } 325 326 // Plugins to check 327 $plugins_to_check = array(); 328 foreach($this->fs_plugins as $fs_plugin) 329 { 330 if (isset($fs_plugin['extension'])) 331 { 332 $plugins_to_check[] = $fs_plugin['extension']; 333 } 334 } 335 336 // Retrieve PEM plugins infos 337 $url = PEM_URL . '/api/get_revision_list.php'; 293 338 $get_data = array( 294 339 'category_id' => 12, 295 340 'format' => 'php', 296 );297 298 // Retrieve PEM versions299 $version = PHPWG_VERSION;300 $versions_to_check = array();301 $url = PEM_URL . '/api/get_version_list.php';302 if (fetchRemote($url, $result, $get_data) and $pem_versions = @unserialize($result))303 {304 if (!preg_match('/^\d+\.\d+\.\d+/', $version))305 {306 $version = $pem_versions[0]['name'];307 }308 $branch = substr($version, 0, strrpos($version, '.'));309 foreach ($pem_versions as $pem_version)310 {311 if (strpos($pem_version['name'], $branch) === 0)312 {313 $versions_to_check[] = $pem_version['id'];314 }315 }316 }317 if (empty($versions_to_check))318 {319 return false;320 }321 322 // Plugins to check323 $plugins_to_check = array();324 foreach($this->fs_plugins as $fs_plugin)325 {326 if (isset($fs_plugin['extension']))327 {328 $plugins_to_check[] = $fs_plugin['extension'];329 }330 }331 332 // Retrieve PEM plugins infos333 $url = PEM_URL . '/api/get_revision_list.php';334 $get_data = array_merge($get_data, array(335 341 'last_revision_only' => 'true', 336 342 'version' => implode(',', $versions_to_check), 337 343 'lang' => substr($user['language'], 0, 2), 338 344 'get_nb_downloads' => 'true', 339 )340 345 ); 341 346 … … 363 368 } 364 369 return true; 370 } 371 return false; 372 } 373 374 function get_incompatible_plugins() 375 { 376 if (isset($_SESSION['incompatible_plugins'])) 377 { 378 return $_SESSION['incompatible_plugins']; 379 } 380 381 $_SESSION['incompatible_plugins'] = array(); 382 383 $versions_to_check = $this->get_versions_to_check(); 384 if (empty($versions_to_check)) 385 { 386 return false; 387 } 388 389 // Plugins to check 390 $plugins_to_check = array(); 391 foreach($this->fs_plugins as $fs_plugin) 392 { 393 if (isset($fs_plugin['extension'])) 394 { 395 $plugins_to_check[] = $fs_plugin['extension']; 396 } 397 } 398 399 // Retrieve PEM plugins infos 400 $url = PEM_URL . '/api/get_revision_list.php'; 401 $get_data = array( 402 'category_id' => 12, 403 'format' => 'php', 404 'version' => implode(',', $versions_to_check), 405 'extension_include' => implode(',', $plugins_to_check), 406 ); 407 408 if (fetchRemote($url, $result, $get_data)) 409 { 410 $pem_plugins = @unserialize($result); 411 if (!is_array($pem_plugins)) 412 { 413 return false; 414 } 415 416 $server_plugins = array(); 417 foreach ($pem_plugins as $plugin) 418 { 419 if (!isset($server_plugins[$plugin['extension_id']])) 420 { 421 $server_plugins[$plugin['extension_id']] = array(); 422 } 423 array_push($server_plugins[$plugin['extension_id']], $plugin['revision_name']); 424 } 425 426 foreach ($this->fs_plugins as $plugin_id => $fs_plugin) 427 { 428 if (isset($fs_plugin['extension']) 429 and !in_array($plugin_id, $this->default_plugins) 430 and $fs_plugin['version'] != 'auto' 431 and (!isset($server_plugins[$fs_plugin['extension']]) or !in_array($fs_plugin['version'], $server_plugins[$fs_plugin['extension']]))) 432 { 433 $_SESSION['incompatible_plugins'][$plugin_id] = $fs_plugin['version']; 434 } 435 } 436 return $_SESSION['incompatible_plugins']; 365 437 } 366 438 return false; … … 484 556 return $status; 485 557 } 558 559 function get_merged_extensions($version=PHPWG_VERSION) 560 { 561 if (!isset($_SESSION['merged_extensions'])) 562 { 563 $_SESSION['merged_extensions'] = array(); 564 if (fetchRemote(MERGED_EXTENSIONS_URL, $result)) 565 { 566 $rows = explode("\n", $result); 567 foreach ($rows as $row) 568 { 569 if (preg_match('/^(\d+\.\d+): *(.*)$/', $row, $match)) 570 { 571 if (version_compare($version, $match[1], '>=')) 572 { 573 $extensions = explode(',', trim($match[2])); 574 $_SESSION['merged_extensions'] = array_merge($_SESSION['merged_extensions'], $extensions); 575 } 576 } 577 } 578 } 579 } 580 return $_SESSION['merged_extensions']; 581 } 486 582 487 583 /**
Note: See TracChangeset
for help on using the changeset viewer.