1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 <?php /** * * This file is part of the phpBB Forum Software package. * * @copyright (c) phpBB Limited <https://www.phpbb.com> * @license GNU General Public License, version 2 (GPL-2.0) * * For full copyright and license information, please see * the docs/CREDITS.txt file. * */ namespace phpbb\profilefields\type; abstract class type_string_common extends type_base { protected $validation_options = array( 'CHARS_ANY' => '.*', 'NUMBERS_ONLY' => '[0-9]+', 'ALPHA_ONLY' => '[a-zA-Z0-9]+', 'ALPHA_UNDERSCORE' => '[\w]+', 'ALPHA_DOTS' => '[a-zA-Z0-9.]+', 'ALPHA_SPACERS' => '[\w\x20+\-\[\]]+', 'ALPHA_PUNCTUATION' => '[a-zA-Z][\w\.,\-]+', 'LETTER_NUM_ONLY' => '[\p{Lu}\p{Ll}0-9]+', 'LETTER_NUM_UNDERSCORE' => '[\p{Lu}\p{Ll}0-9_]+', 'LETTER_NUM_DOTS' => '[\p{Lu}\p{Ll}0-9.]+', 'LETTER_NUM_SPACERS' => '[\p{Lu}\p{Ll}0-9\x20_+\-\[\]]+', 'LETTER_NUM_PUNCTUATION' => '[\p{Lu}\p{Ll}][\p{Lu}\p{Ll}0-9.,\-_]+', ); /** * Return possible validation options */ public function validate_options($field_data) /* * Guillaume Cottenceau (gc@mandrakesoft.com) * * Copyright 2000 Mandrakesoft * * This software may be freely redistributed under the terms of the GNU * public license. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ /* * Portions from Erik Troan (ewt@redhat.com) * * Copyright 1996 Red Hat Software * */ #include <stdlib.h> #include <unistd.h> #include <string.h> #include <stdio.h> #include <sys/mount.h> #include "stage1.h" #include "frontend.h" #include "modules.h" #include "probing.h" #include "log.h" #include "mount.h" #include "cdrom.h" static int mount_that_cd_device(char * dev_name) { char device_fullname[50]; strcpy(device_fullname, "/dev/"); strcat(device_fullname, dev_name); #ifdef MANDRAKE_MOVE return my_mount(device_fullname, IMAGE_LOCATION, "supermount", 0); #else return my_mount(device_fullname, IMAGE_LOCATION, "iso9660", 0); #endif } static enum return_type try_with_device(char * dev_name, char * dev_model); static enum return_type do_with_device(char * dev_name, char * dev_model) { if (!image_has_stage2()) { enum return_type results; umount(IMAGE_LOCATION); results = ask_yes_no("That CDROM disc does not seem to be a " DISTRIB_NAME " Installation CDROM.\nRetry with another disc?"); if (results == RETURN_OK) return try_with_device(dev_name, dev_model); return results; } log_message("found a " DISTRIB_NAME " CDROM, good news!"); #ifndef MANDRAKE_MOVE may_load_clp(); if (!KEEP_MOUNTED) /* in rescue mode, we don't need the media anymore */ umount(IMAGE_LOCATION); #endif add_to_env("METHOD", "cdrom"); return RETURN_OK; } static enum return_type try_with_device(char * dev_name, char * dev_model) { wait_message("Trying to access a CDROM disc (drive %s)", dev_model); if (mount_that_cd_device(dev_name) == -1) { enum return_type results; char msg[500]; unset_automatic(); /* we are in a fallback mode */ remove_wait_message(); snprintf(msg, sizeof(msg), "I can't access a " DISTRIB_NAME " Installation disc in your CDROM drive (%s).\nRetry?", dev_model); results = ask_yes_no(msg); if (results == RETURN_OK) return try_with_device(dev_name, dev_model); return results; } remove_wait_message(); return do_with_device(dev_name, dev_model); } int try_automatic(char ** medias, char ** medias_models) { static char * already_tried[50] = { NULL }; char ** model = medias_models; char ** ptr = medias; int i = 0; while (ptr && *ptr) { char ** p; for (p = already_tried; p && *p; p++) if (streq(*p, *ptr)) goto try_automatic_already_tried; *p = strdup(*ptr); *(p+1) = NULL; wait_message("Trying to access " DISTRIB_NAME " CDROM disc (drive %s)", *model); if (mount_that_cd_device(*ptr) != -1) { if (image_has_stage2()) { remove_wait_message(); return i; } else umount(IMAGE_LOCATION); } remove_wait_message(); try_automatic_already_tried: ptr++; model++; i++; } return -1; } enum return_type cdrom_prepare(void) { char ** medias, ** ptr, ** medias_models; char * choice; int i, count = 0; enum return_type results; static int already_probed_ide_generic = 0; my_insmod("ide-cd", ANY_DRIVER_TYPE, NULL, 0); if (IS_AUTOMATIC) { get_medias(CDROM, &medias, &medias_models, BUS_IDE); if ((i = try_automatic(medias, medias_models)) != -1) return do_with_device(medias[i], medias_models[i]); my_insmod("sr_mod", ANY_DRIVER_TYPE, NULL, 0); get_medias(CDROM, &medias, &medias_models, BUS_SCSI); if ((i = try_automatic(medias, medias_models)) != -1) return do_with_device(medias[i], medias_models[i]); get_medias(CDROM, &medias, &medias_models, BUS_USB); if ((i = try_automatic(medias, medias_models)) != -1) return do_with_device(medias[i], medias_models[i]); unset_automatic(); } else my_insmod("sr_mod", ANY_DRIVER_TYPE, NULL, 0); get_medias(CDROM, &medias, &medias_models, BUS_ANY); ptr = medias; while (ptr && *ptr) { count++; ptr++; } if (count == 0) { if (!already_probed_ide_generic) { already_probed_ide_generic = 1; my_insmod("ide-generic", ANY_DRIVER_TYPE, NULL, 0); return cdrom_prepare(); } stg1_error_message("No CDROM device found."); i = ask_insmod(SCSI_ADAPTERS); if (i == RETURN_BACK) return RETURN_BACK; return cdrom_prepare(); } if (count == 1) { results = try_with_device(*medias, *medias_models); if (results == RETURN_OK) return RETURN_OK; i = ask_insmod(SCSI_ADAPTERS); if (i == RETURN_BACK) return RETURN_BACK; return cdrom_prepare(); } results = ask_from_list_comments("Please choose the CDROM drive to use for the installation.", medias, medias_models, &choice); if (results == RETURN_OK) { char ** model = medias_models; ptr = medias; while (ptr && *ptr && model && *model) { if (!strcmp(*ptr, choice)) break; ptr++; model++; } results = try_with_device(choice, *model); } else return results; if (results == RETURN_OK) return RETURN_OK; if (results == RETURN_BACK) return cdrom_prepare(); i = ask_insmod(SCSI_ADAPTERS); if (i == RETURN_BACK) return RETURN_BACK; return cdrom_prepare(); }