diff options
-rw-r--r-- | h-source/Application/Controllers/DownloadController.php | 5 | ||||
-rw-r--r-- | h-source/Application/Controllers/EthernetcardsController.php | 164 | ||||
-rw-r--r-- | h-source/Application/Controllers/GenericController.php | 14 | ||||
-rw-r--r-- | h-source/Application/Include/hardware.php | 17 | ||||
-rw-r--r-- | h-source/Application/Include/languages.php | 2 | ||||
-rw-r--r-- | h-source/Application/Include/params.php | 2 | ||||
-rw-r--r-- | h-source/Application/Models/EthernetcardsModel.php | 70 | ||||
-rw-r--r-- | h-source/Application/Views/Download/index.php | 4 | ||||
-rw-r--r-- | h-source/Application/Views/Ethernetcards/catalogue.php | 89 | ||||
-rw-r--r-- | h-source/Application/Views/Hardware/left.php | 5 | ||||
-rw-r--r-- | h-source/Config/Route.php | 10 | ||||
-rwxr-xr-x | h-source/Public/Img/H2O/network-wired.png | bin | 0 -> 2735 bytes | |||
-rwxr-xr-x | h-source/Public/Img/H2O/network-wired_22.png | bin | 0 -> 860 bytes | |||
-rw-r--r-- | h-source/tables.sql | 2 |
14 files changed, 375 insertions, 9 deletions
diff --git a/h-source/Application/Controllers/DownloadController.php b/h-source/Application/Controllers/DownloadController.php index 2fcacfa..a51fc1d 100644 --- a/h-source/Application/Controllers/DownloadController.php +++ b/h-source/Application/Controllers/DownloadController.php @@ -231,4 +231,9 @@ class DownloadController extends BaseController { $this->printXml($lang, array('type'=>'fingerprint-reader','-deleted'=>'no')); } + + public function ethernetcards($lang = 'en') + { + $this->printXml($lang, array('type'=>'ethernet-card','-deleted'=>'no')); + } }
\ No newline at end of file diff --git a/h-source/Application/Controllers/EthernetcardsController.php b/h-source/Application/Controllers/EthernetcardsController.php new file mode 100644 index 0000000..40b90de --- /dev/null +++ b/h-source/Application/Controllers/EthernetcardsController.php @@ -0,0 +1,164 @@ +<?php + +// h-source, a web software to build a community of people that want to share their hardware information. +// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt) +// +// This file is part of h-source +// +// h-source is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// h-source is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with h-source. If not, see <http://www.gnu.org/licenses/>. + +if (!defined('EG')) die('Direct access not allowed!'); + +class EthernetcardsController extends GenericController +{ + + public function __construct($model, $controller, $queryString) + { + + $this->_topMenuClasses['hardware'] = " class='currentitem'"; + + parent::__construct($model, $controller, $queryString); + + //load the model + $this->model('HardwareModel'); + $this->model('RevisionsModel'); + $this->model('EthernetcardsModel'); + $this->model('TalkModel'); + + $this->mod = $this->m['EthernetcardsModel']; + + $this->m['HardwareModel']->id_user = $this->s['registered']->status['id_user']; + $this->m['HardwareModel']->type = 'ethernet-card'; + + //hardware conditions + $this->m['HardwareModel']->strongConditions['update'] = array( + "checkNotEmpty" => "model|you have to fill the <i>model name</i> entry", + "checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\(\)\@\[\]\/]+$/" => "model|characters not allowed in the <i>model name</i> entry", + "+checkMatch|/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/" => "pci_id|<i>VendorID:ProductID</i> has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}", + "checkLength|99" => "model", + "+checkLength|299" => "distribution", + "++checkIsStrings|".Wifi::$commYear => "comm_year", + "+++checkIsStrings|".Ethernetcards::$select => "ethernet_card_works", + "++++checkIsStrings|".Ethernetcards::$interface => "interface", + ); + + $this->m['HardwareModel']->strongConditions['insert'] = array( + "checkNotEmpty" => "model|you have to fill the <i>model name</i> entry", + "checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\(\)\@\[\]\/]+$/" => "model|characters not allowed in the <i>model name</i> entry", + "+checkMatch|/^[a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}$/" => "pci_id|<i>VendorID:ProductID</i> has to have the following format: [a-zA-Z0-9]{4}(\:)[a-zA-Z0-9]{4}", + "checkLength|99" => "model", + "+checkLength|299" => "distribution", + "++checkIsStrings|".Wifi::$commYear => "comm_year", + "+++checkIsStrings|".Ethernetcards::$select => "ethernet_card_works", + "++++checkIsStrings|".Ethernetcards::$interface => "interface", + ); + + $this->m['HardwareModel']->softConditions['update'] = array( + "checkMatch|/^[a-zA-Z0-9\-\_\.\+\s]+$/" => "kernel|characters not allowed in the <i>kernel</i> entry", + "checkLength|20000" => "description", + "+checkLength|49" => "kernel", + "++checkLength|49" => "driver", + "++checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "driver|only the following characters are allowed for the <i>driver</i> entry: a-z A-Z 0-9 - _ . + s / , : ; ( ) [ ]", + "+++checkLength|1000" => "other_names|the <i>other names</i> entry exceeds the value of 1000 characters", + ); + + $this->m['HardwareModel']->softConditions['insert'] = array( + "checkMatch|/^[a-zA-Z0-9\-\_\.\+\s]+$/" => "kernel|characters not allowed in the <i>kernel</i> entry", + "checkLength|20000" => "description", + "+checkLength|49" => "kernel", + "++checkLength|49" => "driver", + "++checkMatch|/^[a-zA-Z0-9\-\_\.\+\s\/\,\:\;\(\)\[\]]+$/" => "driver|only the following characters are allowed for the <i>driver</i> entry: a-z A-Z 0-9 - _ . + s / , : ; ( ) [ ]", + "+++checkLength|1000" => "other_names|the <i>other names</i> entry exceeds the value of 1000 characters", + ); + + $this->m['HardwareModel']->setFields('model,kernel,description,distribution,comm_year,ethernet_card_works,pci_id,interface,driver,other_names','sanitizeAll'); + + $argKeys = array( + 'page:forceNat' => 1, + 'history_page:forceNat' => 1, + 'vendor:sanitizeString' => 'undef', + 'comm_year:sanitizeString' => 'undef', + 'ethernet_card_works:sanitizeString' => 'undef', + 'interface:sanitizeString' => 'undef', + 'sort-by:sanitizeString' => 'undef' + ); + + $this->setArgKeys($argKeys); + + $data['title'] = 'Ethernet cards'; + + $data['intefaceOptions'] = Ethernetcards::$interface; + $data['worksOptions'] = Ethernetcards::$select; + $data['worksField'] = 'ethernet_card_works'; + $this->append($data); + } + + public function catalogue($lang = 'en') + { + $this->shift(1); + + $whereArray = array( + 'type' => $this->mod->type, + 'vendor' => $this->viewArgs['vendor'], + 'comm_year' => $this->viewArgs['comm_year'], + 'ethernet_card_works' => $this->viewArgs['ethernet_card_works'], + 'interface' => $this->viewArgs['interface'], + ); + + $this->mod->setWhereQueryClause($whereArray); + + parent::catalogue($lang); + } + + public function view($lang = 'en', $id = 0, $name = null) + { + parent::view($lang, $id, $name); + } + + public function history($lang = 'en', $id = 0) + { + parent::history($lang, $id); + } + + public function revision($lang = 'en', $id_rev = 0) + { + parent::revision($lang, $id_rev); + } + + public function insert($lang = 'en', $token = '') + { + parent::insert($lang, $token); + } + + public function update($lang = 'en', $token = '') + { + parent::update($lang, $token); + } + + public function differences($lang = 'en', $id_hard = 0, $id_rev = 0) + { + parent::differences($lang, $id_hard, $id_rev); + } + + public function climb($lang = 'en', $id_rev = 0, $token = '') + { + parent::climb($lang, $id_rev, $token); + } + + public function talk($lang = 'en', $id_hard = 0, $token = '') + { + parent::talk($lang, $id_hard, $token); + } + +}
\ No newline at end of file diff --git a/h-source/Application/Controllers/GenericController.php b/h-source/Application/Controllers/GenericController.php index 8ab98ba..f955820 100644 --- a/h-source/Application/Controllers/GenericController.php +++ b/h-source/Application/Controllers/GenericController.php @@ -75,8 +75,8 @@ class GenericController extends BaseController $this->s['registered']->checkStatus(); -// if ($this->s['registered']->status['status'] === 'logged') -// { + if ($this->s['registered']->status['status'] === 'logged' or Website::$allowAnonymousSubmission === "yes") + { // if (!$this->s['registered']->checkCsrf($clean['token'])) $this->redirect($this->controller.'/catalogue/'.$this->lang,2,'wrong token..'); // if ($this->m['UsersModel']->isBlocked($this->s['registered']->status['id_user'])) $this->redirect('my/home/'.$this->lang,2,'your account has been blocked..'); @@ -145,11 +145,11 @@ class GenericController extends BaseController $this->clean(); $this->load('xml_response'); } -// } -// else -// { -// $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/catalogue/".$this->lang,0); -// } + } + else + { + $this->redirect("users/login/".$this->lang."?redirect=".$this->controller."/catalogue/".$this->lang,0); + } } public function del($lang = 'en', $token = '') diff --git a/h-source/Application/Include/hardware.php b/h-source/Application/Include/hardware.php index 5f6ea9b..999a540 100644 --- a/h-source/Application/Include/hardware.php +++ b/h-source/Application/Include/hardware.php @@ -24,13 +24,17 @@ if (!defined('EG')) die('Direct access not allowed!'); class Hardware { - public static $controllers = array('notebooks','wifi','videocards','printers','scanners','threegcards','soundcards','webcams','bluetooth','acquisitioncards','fingerprintreaders'); //used by UsersController::login() + public static $controllers = array('notebooks','wifi','videocards','printers','scanners','threegcards','soundcards','webcams','bluetooth','acquisitioncards','fingerprintreaders','ethernetcards'); //used by UsersController::login() //classId => controller public static $deviceClasses = array( '0403' => 'soundcards', '0280' => 'wifi', '0300' => 'videocards', + '0200' => 'ethernetcards', + '0400' => 'acquisitioncards', + '0401' => 'acquisitioncards', + '0480' => 'acquisitioncards', ); public static $icons = array( @@ -45,6 +49,7 @@ class Hardware 'bluetooth' => 'H2O/preferences-system-bluetooth-22.png', 'acquisition-card' => 'Crystal/cam_mount-22.png', 'fingerprint-reader' => 'fingerprint_icon-22.png', + 'ethernet-card' => 'H2O/network-wired_22.png', ); public static $typeToController = array( @@ -59,6 +64,7 @@ class Hardware 'bluetooth' => 'bluetooth', 'acquisition-card' => 'acquisitioncards', 'fingerprint-reader' => 'fingerprintreaders', + 'ethernet-card' => 'ethernetcards', ); public static function getTypes() @@ -369,4 +375,13 @@ class Fingerprintreaders extends Hardware public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card,Firewire,Parallel,Serial"; +} + +class Ethernetcards extends Hardware +{ + + public static $select = 'yes,no'; + + public static $interface = "not-specified,USB,PCI,PCI-E,mini-PCI,mini-PCI-E,ExpressCard,PC-Card,Firewire,Parallel,Serial"; + }
\ No newline at end of file diff --git a/h-source/Application/Include/languages.php b/h-source/Application/Include/languages.php index 940ea02..986f42a 100644 --- a/h-source/Application/Include/languages.php +++ b/h-source/Application/Include/languages.php @@ -244,6 +244,7 @@ class Lang /*0206*/"The device page has to be approved by an administrator of the website" => "La pagina del dispositivo deve essere approvata da un amministratore del sito", /*0207*/"permanently delete the device page" => "cancella definitivamente la pagina", /*0208*/"This page has been permanently deleted by an administrator of the website" => "Questa pagina è stata definitivamente cancellata da un amministratore del sito", + /*0209*/"No ethernet devices found" => "Non è stata trovata alcuna scheda ethernet", ), 'es' => array ( @@ -1011,6 +1012,7 @@ class MyStrings 'bluetooth' => 'bluetooth', 'acquisition-card' => 'acquisitioncards', 'fingerprint-reader' => 'fingerprintreaders', + 'ethernet-card' => 'ethernetcards', ); public static function getTypes() diff --git a/h-source/Application/Include/params.php b/h-source/Application/Include/params.php index 1d3533b..ba4fef3 100644 --- a/h-source/Application/Include/params.php +++ b/h-source/Application/Include/params.php @@ -31,6 +31,8 @@ class Website static public $mailServer = ""; static public $mailPassword = ""; + + static public $allowAnonymousSubmission = "yes"; } class Account diff --git a/h-source/Application/Models/EthernetcardsModel.php b/h-source/Application/Models/EthernetcardsModel.php new file mode 100644 index 0000000..1727f71 --- /dev/null +++ b/h-source/Application/Models/EthernetcardsModel.php @@ -0,0 +1,70 @@ +<?php + +// h-source, a web software to build a community of people that want to share their hardware information. +// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt) +// +// This file is part of h-source +// +// h-source is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// h-source is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with h-source. If not, see <http://www.gnu.org/licenses/>. + +if (!defined('EG')) die('Direct access not allowed!'); + +class EthernetcardsModel extends GenericModel +{ + + public $type = 'ethernet-card'; //device type + + public function __construct() + { + + $this->_popupItemNames = array( + 'vendor' => 'vendor', + 'comm_year' => 'comm_year', + 'ethernet_card_works' => 'ethernet_card_works', + 'interface' => 'interface', + ); + + $this->_popupLabels = array( + 'vendor' => gtext("vendor"), + 'comm_year' => gtext("year"), + 'ethernet_card_works' => gtext("does it work?"), + 'interface' => gtext("interface"), + ); + + $this->_popupFunctions = array( + 'vendor' => 'betterVendor', + ); + + $this->createPopupWhere('vendor,ethernet_card_works,comm_year,interface'); + + $this->diffFields = array( + 'vendor' => gtext("vendor"), + 'model' => gtext('model name'), + 'other_names' => gtext('possible other names of the device'), + 'pci_id' => gtext("VendorID:ProductID code of the device"), + 'comm_year' => gtext('year of commercialization'), + 'interface' => gtext("interface"), + 'distribution' => gtext('GNU/Linux distribution used for the test'), + 'kernel' => gtext('tested with the following kernel libre'), + 'ethernet_card_works' => gtext("does it work with free software?"), + 'driver' => gtext("free driver used"), + 'description' => gtext('Description'), + ); + + $this->fieldsWithBreaks = array(gtext('Description'),gtext('possible other names of the device')); + + parent::__construct(); + } + +}
\ No newline at end of file diff --git a/h-source/Application/Views/Download/index.php b/h-source/Application/Views/Download/index.php index 5fbbef8..11d53c2 100644 --- a/h-source/Application/Views/Download/index.php +++ b/h-source/Application/Views/Download/index.php @@ -85,6 +85,10 @@ <td><?php echo gtext("Download the xml file of all the <b>fingerprint readers</b> in the database");?></td> <td><a href="<?php echo $this->baseUrl."/download/fingerprintreaders/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td> </tr> + <tr> + <td><?php echo gtext("Download the xml file of all the <b>ethernet cards</b> in the database");?></td> + <td><a href="<?php echo $this->baseUrl."/download/ethernetcards/$lang";?>"><img src="<?php echo $this->baseUrl?>/Public/Img/H2O/download.png"></a></td> + </tr> </table> </div> </div> diff --git a/h-source/Application/Views/Ethernetcards/catalogue.php b/h-source/Application/Views/Ethernetcards/catalogue.php new file mode 100644 index 0000000..09cad9a --- /dev/null +++ b/h-source/Application/Views/Ethernetcards/catalogue.php @@ -0,0 +1,89 @@ +<?php if (!defined('EG')) die('Direct access not allowed!'); ?> + +<?php +// h-source, a web software to build a community of people that want to share their hardware information. +// Copyright (C) 2010 Antonio Gallo (h-source-copyright.txt) +// +// This file is part of h-source +// +// h-source is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// h-source is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with h-source. If not, see <http://www.gnu.org/licenses/>. +?> + + <div class="viewall_popup_menu_box_external"> + <div class="viewall_popup_menu_box"> + <?php echo $popup;?> + </div> + <div class="viewall_popup_menu_status"> + <div class="viewall_popup_menu_status_item"><?php echo betterVendor($this->viewArgs['vendor'])?></div> + <div class="viewall_popup_menu_status_item"><?php echo $this->viewArgs['comm_year']?></div> + <div class="viewall_popup_menu_status_item"><?php echo $this->viewArgs['ethernet_card_works']?></div> + <div class="viewall_popup_menu_status_item"><?php echo $this->viewArgs['interface']?></div> + <div class="viewall_popup_menu_status_item"><?php echo $this->viewArgs['sort-by']?></div> + </div> + </div> + + <!--if no notebooks found--> + <?php if (strcmp($recordNumber,0) === 0) { ?> + <div class="viewall_no_items_found"> + <?php echo gtext("No ethernet devices found");?>.. + </div> + <?php } ?> + + <!--loop--> + <?php foreach ($table as $item) {?> + <div class="model_viewall"> + + <div class="notebook_model"> + <img align="top" class="catalogue_item_icon" src="<?php echo Hardware::getIconFromType($item['hardware']['type']);?>"> <span class="span_model_name"><?php echo gtext("model");?>: <b><?php echo $item['hardware']['model'];?></b></span> + </div> + + <?php if ( strcmp($item['hardware']['other_names'],'') !== 0 ) { ?> + <div class="notebook_vendor"> + <div class="inner_label"><?php echo gtext("possible other names of the device");?>:</div> + <div class="inner_value"><?php echo nl2br($item['hardware']['other_names']);?></div> + </div> + <?php } ?> + + <div class="notebook_vendor"> + <div class="inner_label"><?php echo gtext("vendor");?>:</div> + <div class="inner_value"><?php echo betterVendor($item['hardware']['vendor']);?></div> + </div> + + <div class="notebook_vendor"> + <div class="inner_label"><?php echo gtext("year of commercialization");?>:</div> + <div class="inner_value"><b><?php echo $item['hardware']['comm_year'];?></b></div> + </div> + + <div class="notebook_vendor"> + <div class="inner_label"><?php echo gtext("interface");?>:</div> + <div class="inner_value"><b><?php echo $item['hardware']['interface'];?></b></div> + </div> + + <div class="notebook_kernel"> + <div class="inner_label"><?php echo gtext("does it work with free software?");?></div> + <div class="inner_value"><b><?php echo $item['hardware']['ethernet_card_works'];?></b></div> + </div> + + <div class="notebook_view_link"> + <a href="<?php echo $this->baseUrl."/".$this->controller."/view/$lang/".$item['hardware']['id_hard'].'/'.encodeUrl($item['hardware']['model']).$this->viewStatus;?>"><?php echo gtext("view the other specifications");?>..</a> + </div> + + </div> + <?php } ?> + + <?php if (strcmp($recordNumber,0) !== 0) { ?> + <div class="history_page_list"> + <?php echo gtext("page list");?>: <?php echo $pageList;?> + </div> + <?php } ?>
\ No newline at end of file diff --git a/h-source/Application/Views/Hardware/left.php b/h-source/Application/Views/Hardware/left.php index 101a6ce..21fa3ec 100644 --- a/h-source/Application/Views/Hardware/left.php +++ b/h-source/Application/Views/Hardware/left.php @@ -69,5 +69,8 @@ <div class="hardware_element"> <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/fingerprint_icon.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/fingerprintreaders/catalogue/<?php echo $lang;?>">Fingerprint readers</a> </div> - + + <div class="hardware_element"> + <img align="middle" class="hardware_element_image" src="<?php echo $this->baseUrl;?>/Public/Img/H2O/network-wired.png"><a class="hardware_element_link" href="<?php echo $this->baseUrl?>/ethernetcards/catalogue/<?php echo $lang;?>">Ethernet cards</a> + </div> </div>
\ No newline at end of file diff --git a/h-source/Config/Route.php b/h-source/Config/Route.php index 6eb88f1..f8491d6 100644 --- a/h-source/Config/Route.php +++ b/h-source/Config/Route.php @@ -119,6 +119,7 @@ class Route 'download,bluetooth', 'download,acquisitioncards', 'download,fingerprintreaders', + 'download,ethernetcards', 'history,hide', 'history,show', 'history,block', @@ -207,6 +208,15 @@ class Route 'fingerprintreaders,differences', 'fingerprintreaders,climb', 'fingerprintreaders,talk', + 'ethernetcards,catalogue', + 'ethernetcards,view', + 'ethernetcards,history', + 'ethernetcards,revision', + 'ethernetcards,insert', + 'ethernetcards,update', + 'ethernetcards,differences', + 'ethernetcards,climb', + 'ethernetcards,talk', ); //it can be 'yes' or 'no' diff --git a/h-source/Public/Img/H2O/network-wired.png b/h-source/Public/Img/H2O/network-wired.png Binary files differnew file mode 100755 index 0000000..2981c5b --- /dev/null +++ b/h-source/Public/Img/H2O/network-wired.png diff --git a/h-source/Public/Img/H2O/network-wired_22.png b/h-source/Public/Img/H2O/network-wired_22.png Binary files differnew file mode 100755 index 0000000..7e22be7 --- /dev/null +++ b/h-source/Public/Img/H2O/network-wired_22.png diff --git a/h-source/tables.sql b/h-source/tables.sql index ba40d5c..194a799 100644 --- a/h-source/tables.sql +++ b/h-source/tables.sql @@ -100,6 +100,7 @@ create table hardware ( sound_card_works varchar(30) CHARACTER SET utf8 not null default 'not-specified', bluetooth_works varchar(30) CHARACTER SET utf8 not null default 'not-specified', fingerprint_works varchar(30) CHARACTER SET utf8 not null default 'not-specified', + ethernet-card_works varchar(30) CHARACTER SET utf8 not null default 'not-specified', architecture char(15) not null default 'not-specified', other_names text CHARACTER SET utf8 not null )engine=innodb; @@ -132,6 +133,7 @@ create table revisions ( sound_card_works varchar(30) CHARACTER SET utf8 not null default 'not-specified', bluetooth_works varchar(30) CHARACTER SET utf8 not null default 'not-specified', fingerprint_works varchar(30) CHARACTER SET utf8 not null default 'not-specified', + ethernet-card_works varchar(30) CHARACTER SET utf8 not null default 'not-specified' architecture char(15) not null default 'not-specified', other_names text CHARACTER SET utf8 not null, approved char(4) not null default 'yes', |