Changeset 2821526
- Timestamp:
- 11/21/2022 12:55:33 PM (3 years ago)
- Location:
- pcloud-wp-backup
- Files:
-
- 24 added
- 8 edited
-
tags/1.0.4 (added)
-
tags/1.0.4/assets (added)
-
tags/1.0.4/assets/css (added)
-
tags/1.0.4/assets/css/wpb2pcloud.css (added)
-
tags/1.0.4/assets/img (added)
-
tags/1.0.4/assets/img/logo-pcloud.png (added)
-
tags/1.0.4/assets/img/logo_16.png (added)
-
tags/1.0.4/assets/img/zip.png (added)
-
tags/1.0.4/assets/js (added)
-
tags/1.0.4/assets/js/wp2pcl.js (added)
-
tags/1.0.4/assets/translate.json (added)
-
tags/1.0.4/classes (added)
-
tags/1.0.4/classes/class-pcl-mysqldump.php (added)
-
tags/1.0.4/classes/class-pcl-type-adapter-mysql.php (added)
-
tags/1.0.4/classes/class-wp2pclouddbbackup.php (added)
-
tags/1.0.4/classes/class-wp2pclouddebugger.php (added)
-
tags/1.0.4/classes/class-wp2pcloudfilebackup.php (added)
-
tags/1.0.4/classes/class-wp2pcloudfilerestore.php (added)
-
tags/1.0.4/classes/class-wp2pcloudfuncs.php (added)
-
tags/1.0.4/classes/class-wp2pcloudlogger.php (added)
-
tags/1.0.4/pcloud-wp-backup.php (added)
-
tags/1.0.4/readme.txt (added)
-
tags/1.0.4/views (added)
-
tags/1.0.4/views/wp2pcl-config.php (added)
-
trunk/classes/class-wp2pclouddbbackup.php (modified) (2 diffs)
-
trunk/classes/class-wp2pclouddebugger.php (modified) (2 diffs)
-
trunk/classes/class-wp2pcloudfilebackup.php (modified) (8 diffs)
-
trunk/classes/class-wp2pcloudfilerestore.php (modified) (1 diff)
-
trunk/classes/class-wp2pcloudfuncs.php (modified) (1 diff)
-
trunk/pcloud-wp-backup.php (modified) (11 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/views/wp2pcl-config.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
pcloud-wp-backup/trunk/classes/class-wp2pclouddbbackup.php
r2732482 r2821526 72 72 $dump->start( $this->save_file ); 73 73 74 WP2pCloudDebugger::log( 'db_backup->start() - Success!' );74 WP2pCloudDebugger::log( 'db_backup->start() - process succeeded!' ); 75 75 WP2pCloudLogger::info( "<span class='pcl_transl' data-i10nk='db_backup_finished'>Database Backup Finished</span>" ); 76 76 … … 83 83 84 84 return $this->save_file; 85 86 85 } 87 86 } -
pcloud-wp-backup/trunk/classes/class-wp2pclouddebugger.php
r2781798 r2821526 35 35 $log = WP2pCloudFuncs::get_storred_val( PCLOUD_DBG_LOG ); 36 36 37 if ( strlen( $log ) > 50000 ) { 38 $log = substr( $log, 20000 ); 39 WP2pCloudFuncs::set_storred_val( PCLOUD_DBG_LOG, $log ); 40 } 41 37 42 if ( $as_json ) { 38 43 return wp_json_encode( array( 'log' => $log ) ); … … 69 74 70 75 WP2pCloudFuncs::set_storred_val( PCLOUD_DBG_LOG, $current_data ); 71 72 76 } 73 77 } -
pcloud-wp-backup/trunk/classes/class-wp2pcloudfilebackup.php
r2781798 r2821526 145 145 WP2pCloudDebugger::log( 'Start creating ZIP archive!' ); 146 146 147 for ( $try = 0; $try < 2; $try++ ) {147 for ( $try = 0; $try < 5; $try++ ) { 148 148 149 149 WP2pCloudDebugger::log( 'Attempt [ ' . ( $try + 1 ) . ' ] to create the ZIP archive!' ); … … 152 152 if ( $zipping_successfull ) { 153 153 break; 154 } else { 155 156 $operation = WP2pCloudFuncs::get_operation(); 157 $operation['failures'] = 0; 158 WP2pCloudFuncs::set_operation( $operation ); 159 160 WP2pCloudFuncs::add_item_for_async_update( 'failures', 0 ); 161 162 WP2pCloudDebugger::log( 'Closing ZIP archive with attempt: ' . ( $try + 1 ) . ' failed, retrying!' ); 163 164 $files = self::find_all_files( $rootdir ); 154 165 } 155 166 } … … 320 331 $zip->setArchiveComment( 'Wordpress2pCloud-' . gmdate( 'd.m.Y H:i:s' ) ); 321 332 333 $num_files = count( $files ); 334 322 335 foreach ( $files as $file ) { 323 336 if ( file_exists( $file ) && is_readable( $file ) ) { … … 326 339 } 327 340 328 WP2pCloudDebugger::log( 'ZIP entries added [ ' . count( $files ) . ' ] ' ); 341 if ( $num_files > 500000 ) { 342 WP2pCloudFuncs::set_storred_val( PCLOUD_MAX_NUM_FAILURES_NAME, 15000 ); 343 } elseif ( $num_files > 100000 ) { 344 WP2pCloudFuncs::set_storred_val( PCLOUD_MAX_NUM_FAILURES_NAME, 6000 ); 345 } elseif ( $num_files > 40000 ) { 346 WP2pCloudFuncs::set_storred_val( PCLOUD_MAX_NUM_FAILURES_NAME, 2000 ); 347 } elseif ( $num_files > 10000 ) { 348 WP2pCloudFuncs::set_storred_val( PCLOUD_MAX_NUM_FAILURES_NAME, 500 ); 349 } 350 351 WP2pCloudDebugger::log( 'ZIP entries added [ ' . count( $files ) . ' ]' ); 329 352 330 353 if ( ! empty( $this->sql_backup_file ) ) { … … 335 358 } 336 359 337 WP2pCloudDebugger::log( 'ZIP archive - filling-up and closing ' );360 WP2pCloudDebugger::log( 'ZIP archive - filling-up and closing' ); 338 361 339 362 if ( $zip->close() ) { … … 370 393 $response = new stdClass(); 371 394 372 $api_response = wp_remote_get( $this->apiep . '/createfolder?path=' . $dir_name . '&name=' . trim( $dir_name, '/' ) . '&access_token=' . $this->authkey ); 373 if ( is_array( $api_response ) && ! is_wp_error( $api_response ) ) { 374 $response_raw = wp_remote_retrieve_body( $api_response ); 375 if ( is_string( $response_raw ) && ! is_wp_error( $response_raw ) ) { 376 $response_json = json_decode( $response_raw ); 377 if ( ! is_bool( $response_json ) ) { 378 $response = $response_json; 379 WP2pCloudDebugger::log( 'make_directory() - OK' ); 395 for ( $i = 1; $i < 4; $i++ ) { 396 397 $api_response = wp_remote_get( $this->apiep . '/createfolder?path=' . $dir_name . '&name=' . trim( $dir_name, '/' ) . '&access_token=' . $this->authkey ); 398 if ( is_array( $api_response ) && ! is_wp_error( $api_response ) ) { 399 $response_raw = wp_remote_retrieve_body( $api_response ); 400 if ( is_string( $response_raw ) && ! is_wp_error( $response_raw ) ) { 401 $response_json = json_decode( $response_raw ); 402 if ( ! is_bool( $response_json ) ) { 403 $response = $response_json; 404 WP2pCloudDebugger::log( 'make_directory() - OK' ); 405 break; 406 } else { 407 WP2pCloudDebugger::log( 'make_directory() - failed to convert the response JSON to object! Will retry!' ); 408 } 380 409 } else { 381 WP2pCloudDebugger::log( 'make_directory() - failed to convert the response JSON to object!' );410 WP2pCloudDebugger::log( 'make_directory() - no response body detected! Will retry!' ); 382 411 } 383 412 } else { 384 WP2pCloudDebugger::log( 'make_directory() - no response body detected!' );385 }386 } else {387 $error = '';388 if ( is_wp_error( $api_response ) ) {389 $error = $api_response->get_error_message();390 } 391 WP2pCloudDebugger::log( 'make_directory() - api call failed ! [ ' . $error . ' ]');413 $error = ''; 414 if ( is_wp_error( $api_response ) ) { 415 $error = $api_response->get_error_message(); 416 } 417 WP2pCloudDebugger::log( 'make_directory() - api call failed ! [ ' . $error . ' ] Will retry!' ); 418 } 419 420 sleep( 5 * $i ); 392 421 } 393 422 … … 405 434 $response = new stdClass(); 406 435 407 $api_response = wp_remote_get( $this->apiep . '/listfolder?path=/' . PCLOUD_BACKUP_DIR . '&access_token=' . $this->authkey ); 408 if ( is_array( $api_response ) && ! is_wp_error( $api_response ) ) { 409 $response_raw = wp_remote_retrieve_body( $api_response ); 410 if ( is_string( $response_raw ) && ! is_wp_error( $response_raw ) ) { 411 $response_json = json_decode( $response_raw ); 412 if ( ! is_bool( $response_json ) ) { 413 $response = $response_json; 436 $folder_id = 0; 437 for ( $i = 1; $i < 4; $i++ ) { 438 439 $api_response = wp_remote_get( $this->apiep . '/listfolder?path=/' . PCLOUD_BACKUP_DIR . '&access_token=' . $this->authkey ); 440 if ( is_array( $api_response ) && ! is_wp_error( $api_response ) ) { 441 $response_raw = wp_remote_retrieve_body( $api_response ); 442 if ( is_string( $response_raw ) && ! is_wp_error( $response_raw ) ) { 443 $response_json = json_decode( $response_raw ); 444 if ( ! is_bool( $response_json ) ) { 445 $response = $response_json; 446 } else { 447 WP2pCloudDebugger::log( 'get_upload_dir_id() - failed to convert the response JSON to object!' ); 448 } 414 449 } else { 415 WP2pCloudDebugger::log( 'get_upload_dir_id() - failed to convert the response JSON to object!' );450 WP2pCloudDebugger::log( 'get_upload_dir_id() - no response body detected!' ); 416 451 } 417 452 } else { 418 WP2pCloudDebugger::log( 'get_upload_dir_id() - no response body detected!' ); 419 } 420 } else { 421 422 if ( is_wp_error( $api_response ) ) { 423 $error = $api_response->get_error_message(); 424 } 453 454 if ( is_wp_error( $api_response ) ) { 455 $error .= $api_response->get_error_message(); 456 } 457 WP2pCloudDebugger::log( 'get_upload_dir_id() - api call failed ! [ ' . $error . ' ]' ); 458 } 459 460 if ( ! property_exists( $response, 'result' ) && 2005 === $response->result ) { 461 462 $folders = explode( '/', PCLOUD_BACKUP_DIR ); 463 WP2pCloudLogger::info( "<span class='pcl_transl' data-i10nk='backup_in_fld'>Backup will be in folder:</span> " . PCLOUD_BACKUP_DIR ); 464 465 self::make_directory( '/' . $folders[0] ); 466 $res = self::make_directory( '/' . $folders[0] . '/' . $folders[1] ); 467 $folder_id = $res->metadata->folderid; 468 469 } else { 470 471 if ( ! property_exists( $response, 'metadata' ) ) { 472 WP2pCloudDebugger::log( 'get_upload_dir_id() - response from the API does not contain the needed info!' ); 473 } else { 474 $folder_id = $response->metadata->folderid; 475 } 476 } 477 478 if ( 0 < $folder_id ) { 479 break; 480 } 481 482 sleep( 5 * $i ); 483 } 484 485 if ( 0 === $folder_id ) { 486 425 487 WP2pCloudDebugger::log( 'get_upload_dir_id() - api call failed ! [ ' . $error . ' ]' ); 426 488 427 489 WP2pCloudLogger::info( "<span class='pcl_transl' data-i10nk='invalid_resp_from_server'>Invalid response from the server:</span> " . $error . "\n" ); 490 WP2pCloudFuncs::set_operation( array() ); 428 491 die(); 429 }430 431 if ( ! property_exists( $response, 'result' ) && 2005 === $response->result ) {432 433 $folders = explode( '/', PCLOUD_BACKUP_DIR );434 WP2pCloudLogger::info( "<span class='pcl_transl' data-i10nk='backup_in_fld'>Backup will be in folder:</span> " . PCLOUD_BACKUP_DIR );435 436 self::make_directory( '/' . $folders[0] );437 $res = self::make_directory( '/' . $folders[0] . '/' . $folders[1] );438 $folder_id = $res->metadata->folderid;439 440 } else {441 442 if ( ! property_exists( $response, 'metadata' ) ) {443 WP2pCloudDebugger::log( 'get_upload_dir_id() - response from the API does not contain the needed info!' );444 WP2pCloudLogger::info( "<span class='pcl_transl' data-i10nk='invalid_resp_srv'>Invalid response from the server:</span> " . $response );445 die();446 } else {447 $folder_id = $response->metadata->folderid;448 }449 492 } 450 493 … … 652 695 $response = new stdClass(); 653 696 654 $api_response = wp_remote_get( $this->apiep . '/upload_create?access_token=' . $this->authkey ); 655 if ( is_array( $api_response ) && ! is_wp_error( $api_response ) ) { 656 $response_raw = wp_remote_retrieve_body( $api_response ); 657 if ( is_string( $response_raw ) && ! is_wp_error( $response_raw ) ) { 658 $response_json = json_decode( $response_raw ); 659 if ( ! is_bool( $response_json ) ) { 660 $response = $response_json; 661 WP2pCloudDebugger::log( 'create_upload() - OK' ); 697 for ( $i = 1; $i < 4; $i++ ) { 698 699 $api_response = wp_remote_get( $this->apiep . '/upload_create?access_token=' . $this->authkey ); 700 if ( is_array( $api_response ) && ! is_wp_error( $api_response ) ) { 701 $response_raw = wp_remote_retrieve_body( $api_response ); 702 if ( is_string( $response_raw ) && ! is_wp_error( $response_raw ) ) { 703 $response_json = json_decode( $response_raw ); 704 if ( ! is_bool( $response_json ) ) { 705 $response = $response_json; 706 WP2pCloudDebugger::log( 'create_upload() - OK' ); 707 break; 708 } else { 709 WP2pCloudDebugger::log( 'create_upload() - failed to convert the response JSON to object! Will retry!' ); 710 } 662 711 } else { 663 WP2pCloudDebugger::log( 'create_upload() - failed to convert the response JSON to object!' );712 WP2pCloudDebugger::log( 'create_upload() - no response body detected! Will retry!' ); 664 713 } 665 714 } else { 666 WP2pCloudDebugger::log( 'create_upload() - no response body detected!' );667 }668 } else {669 $error = '';670 if ( is_wp_error( $api_response ) ) {671 $error = $api_response->get_error_message();672 } 673 WP2pCloudDebugger::log( 'create_upload() - api call failed ! [ ' . $error . ' ]');715 $error = ''; 716 if ( is_wp_error( $api_response ) ) { 717 $error = $api_response->get_error_message(); 718 } 719 WP2pCloudDebugger::log( 'create_upload() - api call failed ! [ ' . $error . ' ]! Will retry!' ); 720 } 721 722 sleep( 5 * $i ); 674 723 } 675 724 -
pcloud-wp-backup/trunk/classes/class-wp2pcloudfilerestore.php
r2781798 r2821526 32 32 if ( ! is_dir( $this->restore_path ) ) { 33 33 WP2pCloudLogger::info( "<span class='pcl_transl' data-i10nk='err_temp_folder_fail2mk'>ERROR: Temporary folder can not be created!</span> [" . $this->restore_path . ']' ); 34 WP2pCloudDebugger::log( 'Failed to create Temporary folder!' ); 35 WP2pCloudFuncs::set_operation( array() ); 34 36 die(); 35 37 } -
pcloud-wp-backup/trunk/classes/class-wp2pcloudfuncs.php
r2781798 r2821526 150 150 } 151 151 152 $waiting_async_items = self::get_storred_val( PCLOUD_ASYNC_UPDATE_VAL ); 153 if ( ! empty( $waiting_async_items ) ) { 154 155 $items_to_update = json_decode( $waiting_async_items, true ); 156 if ( is_array( $items_to_update ) ) { 157 foreach ( $items_to_update as $k => $v ) { 158 $operation_data[ $k ] = $v; 159 } 160 } 161 162 self::set_storred_val( PCLOUD_ASYNC_UPDATE_VAL, '' ); // Maximum number of failures. 163 } 164 152 165 $json_data = wp_json_encode( $operation_data ); 153 166 154 167 self::set_storred_val( PCLOUD_OPERATION, $json_data ); 168 } 169 170 /** 171 * Add item for async update as a setting. 172 * 173 * @param string $key Key of the setting. 174 * @param mixed $value The value of the setting. 175 * 176 * @return void 177 */ 178 public static function add_item_for_async_update( $key, $value ) { 179 180 if ( empty( $key ) ) { 181 return; 182 } 183 184 $items_to_update = array(); 185 186 $waiting_items = self::get_storred_val( PCLOUD_ASYNC_UPDATE_VAL ); 187 if ( ! empty( $waiting_items ) ) { 188 $items_to_update = json_decode( $waiting_items, true ); 189 } 190 191 $items_to_update[ $key ] = $value; 192 193 $json_data = wp_json_encode( $items_to_update ); 194 195 self::set_storred_val( PCLOUD_ASYNC_UPDATE_VAL, $json_data ); 155 196 } 156 197 -
pcloud-wp-backup/trunk/pcloud-wp-backup.php
r2781798 r2821526 10 10 * Summary: pCloud WP Backup plugin 11 11 * Description: pCloud WP Backup has been created to make instant backups of your blog and its data, regularly. 12 * Version: 1.0. 312 * Version: 1.0.4 13 13 * Author: pCloud 14 14 * URI: https://www.pcloud.com … … 56 56 define( 'PCLOUD_USEDQUOTA', 'wp2pcl_usedquota' ); 57 57 } 58 if ( ! defined( 'PCLOUD_MAX_NUM_FAILURES' ) ) { 59 define( 'PCLOUD_MAX_NUM_FAILURES', 120 ); 58 if ( ! defined( 'PCLOUD_MAX_NUM_FAILURES_NAME' ) ) { 59 define( 'PCLOUD_MAX_NUM_FAILURES_NAME', 'wp2pcl_max_num_failures' ); 60 } 61 if ( ! defined( 'PCLOUD_ASYNC_UPDATE_VAL' ) ) { 62 define( 'PCLOUD_ASYNC_UPDATE_VAL', 'wp2pcl_async_upd_item' ); 60 63 } 61 64 if ( ! defined( 'PCLOUD_OAUTH_CLIENT_ID' ) ) { … … 77 80 */ 78 81 function pcl_wb_bkup_timeout_extend() { 79 return 1 20;82 return 180; 80 83 } 81 84 … … 99 102 require_once $plugin_path . '/class-wp2pcloudfilerestore.php'; 100 103 require_once $plugin_path . '/class-wp2pclouddebugger.php'; 104 105 $num_failures = WP2pCloudFuncs::get_storred_val( PCLOUD_MAX_NUM_FAILURES_NAME ); 106 if ( empty( $num_failures ) ) { 107 WP2pCloudFuncs::set_storred_val( PCLOUD_MAX_NUM_FAILURES_NAME, 120 ); 108 } 101 109 102 110 /** … … 337 345 $result['memlimitini'] = ini_get( 'memory_limit' ); 338 346 $result['failures'] = isset( $operation['failures'] ) ? $operation['failures'] : 0; 347 $result['maxfailures'] = WP2pCloudFuncs::get_storred_val( PCLOUD_MAX_NUM_FAILURES_NAME ); 339 348 340 349 } elseif ( 'check_can_restore' === $m ) { … … 430 439 WP2pCloudFuncs::set_operation( $operation ); 431 440 432 if ( $operation['failures'] > PCLOUD_MAX_NUM_FAILURES ) { 433 434 WP2pCloudDebugger::log( '== ERROR == Too many failures ( ' . $operation['failures'] . '/ ' . PCLOUD_MAX_NUM_FAILURES . ' ), leaving.. !' ); 441 $max_num_failures = WP2pCloudFuncs::get_storred_val( PCLOUD_MAX_NUM_FAILURES_NAME ); 442 443 if ( $operation['failures'] > $max_num_failures ) { 444 445 WP2pCloudDebugger::log( '== ERROR == Too many failures ( ' . $operation['failures'] . ' / ' . $max_num_failures . ' ), leaving.. !' ); 435 446 436 447 WP2pCloudLogger::info( "<span class='pcl_transl' data-i10nk='too_many_failures'>ERROR: Too many failures, try to disable/enable the plugin !</span>" ); … … 514 525 WP2pCloudFuncs::set_operation( $operation ); 515 526 516 if ( $operation['failures'] > PCLOUD_MAX_NUM_FAILURES ) { 527 $num_failures = WP2pCloudFuncs::get_storred_val( PCLOUD_MAX_NUM_FAILURES_NAME ); 528 529 if ( $operation['failures'] > $num_failures ) { 517 530 518 531 WP2pCloudLogger::info( "<span class='pcl_transl' data-i10nk='too_many_failures'>ERROR: Too many failures, try to disable/enable the plugin !</span>" ); … … 729 742 if ( $lastbackupdt_tm > 0 ) { 730 743 744 if ( '2_minute' === $freq ) { 745 if ( $lastbackupdt_tm > ( time() - 120 ) ) { 746 $rejected = true; 747 } 748 } 731 749 if ( '1_hour' === $freq ) { 732 750 if ( $lastbackupdt_tm > ( time() - 3600 ) ) { … … 885 903 'cron_schedules', 886 904 function ( $schedules ) { 887 $schedules['10_sec'] = array(905 $schedules['10_sec'] = array( 888 906 'interval' => 10, 889 907 'display' => __( '10 seconds' ), 890 908 ); 891 $schedules['1_hour'] = array( 909 $schedules['2_minute'] = array( 910 'interval' => 120, 911 'display' => __( '2 minute' ), 912 ); 913 $schedules['1_hour'] = array( 892 914 'interval' => 3600, 893 915 'display' => __( '1 hour' ), 894 916 ); 895 $schedules['4_hours'] = array(917 $schedules['4_hours'] = array( 896 918 'interval' => 3600 * 4, 897 919 'display' => __( '4 hours' ), … … 921 943 delete_option( PCLOUD_HAS_ACTIVITY ); 922 944 delete_option( PCLOUD_LAST_BACKUPDT ); 945 delete_option( PCLOUD_MAX_NUM_FAILURES_NAME ); 923 946 delete_option( PCLOUD_QUOTA ); 924 947 delete_option( PCLOUD_USEDQUOTA ); … … 939 962 940 963 $new_schedules = array( 941 '10_sec' => array(964 '10_sec' => array( 942 965 'interval' => 10, 943 966 'display' => __( '10 seconds' ), 944 967 ), 945 '1_hour' => array( 968 '2_minute' => array( 969 'interval' => 120, 970 'display' => __( '2 minute' ), 971 ), 972 '1_hour' => array( 946 973 'interval' => 3600, 947 974 'display' => __( '1 hour' ), 948 975 ), 949 '4_hours' => array(976 '4_hours' => array( 950 977 'interval' => 3600 * 4, 951 978 'display' => __( '4 hours' ), 952 979 ), 953 'daily' => array(980 'daily' => array( 954 981 'interval' => 86400, 955 982 'display' => __( 'Daily' ), 956 983 ), 957 'weekly' => array(984 'weekly' => array( 958 985 'interval' => 604800, 959 986 'display' => __( 'Weekly' ), 960 987 ), 961 'monthly' => array(988 'monthly' => array( 962 989 'interval' => 2592000, 963 990 'display' => __( 'Monthly' ), -
pcloud-wp-backup/trunk/readme.txt
r2781798 r2821526 3 3 Tags: backup, pCloud 4 4 Requires at least: 5.0 5 Tested up to: 6. 0.25 Tested up to: 6.1.1 6 6 Requires PHP: 5.6 7 Stable tag: 1.0. 37 Stable tag: 1.0.4 8 8 License: GPLv3 or later 9 9 … … 58 58 59 59 == Changelog == 60 = 1.0.4 = 61 * Increased number of failures for blogs with higher number of assets. 62 * The plugin will retry more than once in case of bad response from the pCloud server. 63 60 64 = 1.0.3 = 61 * Added an option to choose whether to include a database snapshot in the backup archive or not. 65 * Added an option to choose whether to include a database snapshot in the backup archive or not. 62 66 * Much more debugging is added in order to determine the Zipping process issues. 63 67 -
pcloud-wp-backup/trunk/views/wp2pcl-config.php
r2781798 r2821526 18 18 if ( PCLOUD_DEBUG ) { 19 19 $freg = array( 20 't' => 'Test', 21 '1_hour' => '1 Hour', 22 '4_hours' => '4 Hours', 23 'daily' => '1 day', 24 'weekly' => '1 week', 25 'monthly' => '1 month', 20 't' => 'Test', 21 '2_minute' => '2 Minute', 22 '1_hour' => '1 Hour', 23 '4_hours' => '4 Hours', 24 'daily' => '1 day', 25 'weekly' => '1 week', 26 'monthly' => '1 month', 26 27 ); 27 28 } else {
Note: See TracChangeset
for help on using the changeset viewer.