_table = $table; $this->_data = $col_data; $this->_initialized = (V::get('_checked', '', $col_data))? true : false; } function initialized() { return $this->_initialized; } function type($field_name) { $type = V::get($field_name, '', $this->_data['TYPESPECIAL']); if (!$type) $type = V::get($field_name, '', $this->_data['TYPE']); return $type; } function desc($field_name) { return V::get($field_name, '', $this->_data['DESC_TO_LANG']); } function perm($field_name) { return V::get($field_name, '', $this->_data['PERMEDIT']); } function allowWrite($field_name) { return (strpos($this->perm($field_name), 'W') !== false)? true : false; } function allowRead($field_name) { return (strpos($this->perm($field_name), 'R') !== false)? true : false; } function allowCreate($field_name) { return (strpos($this->perm($field_name), 'C') !== false)? true : false; } /** * @returns array to store in session */ function toArray() { return $this->_data; } /** * Initialize column and store data i session. * * static */ public static function init($table, $force = false) { $col = Column::getInstance($table); if ($col && $col->initialized() && $force == false) { return; } Lib::loadClass('Config'); $tbl_config = Config::getColumnConf($table); /** * conf_file(CRM_PROCES): Array( * [CONFIG] => Array( * [database] => default * [table] => CRM_PROCES * [hist_table] => CRM_PROCES_HIST * [extra_column] => * [perm_mask] => * ) * [DESC_TO_LANG] => Array( * [ID] => * ) * [DEFAULT_VALUE] => Array( * [A_STATUS] => WAITING * ) * [PERMEDIT] => Array( * [ID] => R * ) * [TYPESPECIAL] => Array( * ) */ if (!$tbl_config) { return; } if (!self::is_allowed($table)) { return; } $col_data = self::get_table_struct($table, $tbl_config); // DESC_TO_LANG $col_data['DESC_TO_LANG'] = V::get('DESC_TO_LANG', array(), $tbl_config); // TYPESPECIAL $col_data['TYPESPECIAL'] = V::get('TYPESPECIAL', array(), $tbl_config); $col_data['_checked'] = true; self::saveColumn($table, $col_data); } function init_old(){ return; // wymagane struktura tabeli `CRM_LISTA_ZASOBOW` w tej wersji aplikacji: $column_struct = array(); //ZAP_SQL("show fields from $COLUMN");// Field, Type, Null, Key, Default, Extra //$column_struct[Field] = array( Type, Type_value, Default, Null, Extra ); function column_struct_create_type_obj($type, $type_value=null, $default=null, $null=null, $extra=null) { return (object)array('Type'=>$type, 'Type_value'=>$type_value, 'Default'=>$default, 'Null'=>$null, 'Extra'=>$extra); } $column_struct['ID'] = column_struct_create_type_obj('int', 11, null, 'NO', 'auto_increment'); $column_struct['TYPE'] = column_struct_create_type_obj('enum', array('KONTO-KSIEGOWE-OLD', 'KONTO-KSIEGOWE-ZESPOL', 'KONTO-KSIEGOWE', 'KONTO-KSIEGOWE-GRUPA', 'DANE', 'WYNIK_ZAPYTANIA', 'NARZEDZIE', 'PLIK', 'ZASOB_PLIKOW', 'TABELA', 'KOMORKA', 'BAZA_DANYCH', 'DATABASE_MYSQL', 'SERWER', 'DOKUMENTY', 'MAGAZYN', 'SEGREGATOR', 'POMIESZCZENIE', 'MATERIAL_REKLAMOWY', 'DZIAL', 'STANOWISKO', 'INNE', 'CZYNNOSC', 'PODMIOT', 'ALARM-SATEL', 'NOTATKA'), 'INNE'); $column_struct['DESC'] = column_struct_create_type_obj('varchar', 255, ''); $column_struct['OPIS'] = column_struct_create_type_obj('text'); $column_struct['SORT_PRIO'] = column_struct_create_type_obj('int', 11, 0); $column_struct['PARENT_ID'] = column_struct_create_type_obj('int', 11, 0); echo'
';
$table = "CRM_LISTA_ZASOBOW";
echo"column `$table`:\n";
ZAP_SQL("show fields from `$table`;");// Field, Type, Null, Key, Default, Extra
while ($h = mysql_fetch_object($result)) {
/* [Field] => ID
[Type] => int(11)
[Null] => NO
[Key] => PRI
[Default] =>
[Extra] => auto_increment
*/
if (array_key_exists($h->Field, $column_struct)) {
echo'ok Field in struct "'.$h->Field.'" ' . "\n";;
$d =& $column_struct[$h->Field];// application definition
$h->Type_value = '';
if (substr($h->Type, 0, 3) == 'int') {
$h->Type_value = (int)str_replace(array(' ','(',')'), '', substr($h->Type, 4));
$h->Type = 'int';
} else if (substr($h->Type, 0, 7) == 'varchar') {
$h->Type_value = (int)str_replace(array(' ','(',')'), '', substr($h->Type, 8));
$h->Type = 'varchar';
} else if (substr($h->Type, 0, 4) == 'enum') {
$h->Type_value = explode(',', str_replace(array('(',')',"'",'"'), '', substr($h->Type, 5)));
$h->Type = 'enum';
} else if (substr($h->Type, 0, 4) == 'text') {
$h->Type = 'text';
} else echo'unknown Type "'.$h->Type.'"';
//} else if (substr($h->Type, 0, 3) == 'int') $h->Type_value = '';
// $sql = "ALTER TABLE `".$table."` CHANGE `ID` `ID` INT NOT NULL AUTO_INCREMENT; ";
if ($h->Type != $d->Type) {
echo'Field Type error - "'.$h->Type.'" expected "'.$d->Type.'"'."\n";
//TODO: try convert type ? float->double, int->float, varchar->text, ...
} else if ($h->Type_value != $d->Type_value) {
echo'Field Type_value error - "'.$h->Type_value.'" expected "'.$d->Type_value.'"'."\n";
//TODO: try to alter table
} else if ($h->Default != $d->Default) {
echo'Field Type_value error - "'.$h->Type_value.'" expected "'.$d->Type_value.'"'."\n";
//TODO: try to alter table
}
print_r($h);
} else {
echo'Unknown Field "'.$h->Field.'" ';
//print_r($h);
}
echo "\n";
}
echo'';
//$_SESSION['CRM_LISTA_ZASOBOW_COLUMN']['_checked'] = true;
$COLUMN="CRM_LISTA_ZASOBOW";
ZAP_SQL("show fields from $COLUMN");
$KEY=0;
while ($h=mysql_fetch_row($result)) {
$_SESSION[$COLUMN."_COLUMN"]['DESC']["$KEY"] = $h[0];
$_SESSION[$COLUMN."_COLUMN"]['TYPE'][$_SESSION[$COLUMN."_COLUMN"]['DESC']["$KEY"]] = $h[1];
if(!isset($_SESSION[$COLUMN."_COLUMN"]['PERMEDIT'][$h[0]])) $_SESSION[$COLUMN."_COLUMN"]['PERMEDIT'][$h[0]] = "RW" ;
$_SESSION[$COLUMN."_COLUMN"]['DESC_TO_KEY'][$h[0]] = $KEY;
$_SESSION[$COLUMN."_COLUMN"]['ID']["$KEY"]=$KEY;
if($_SESSION['USER_PROFILE'][$COLUMN."_COLUMN"]["$KEY"] == "HIDE") {
$_SESSION[$COLUMN."_COLUMN"]['HIDE']["$KEY"]='HIDE';
}
$KEY++;
}
// echo "