Beispiel #1
0
 public static function classInstall()
 {
     if (self::installed()) {
         return false;
     }
     UN_ObjectModel::checkClassParentChildLinks(self::$un_definition);
     $ok = true;
     $sql_table = 'CREATE TABLE IF NOT EXISTS ' . _DB_PREFIX_ . _UN_PREFIX_ . self::$un_definition['table'] . ' (';
     $sql_eng_char = ') ENGINE=' . _MYSQL_ENGINE_ . ' default CHARSET=utf8';
     $sql_primary = '';
     if (!(self::$un_definition['primary'] == '')) {
         $sql_primary = ', PRIMARY KEY(`' . self::$un_definition['primary'] . '`)';
     }
     $sql_fields = '';
     foreach (self::$un_definition['fields'] as $field_name => $field_data) {
         // attribute or system field
         if ($field_data['field_type'] == 'system_data' || $field_data['field_type'] == 'attribute') {
             if (isset($field_data['sql_type']) && $field_data['sql_type']) {
                 if (!($sql_fields == '')) {
                     $sql_fields .= ',';
                 }
                 $sql_fields .= '`' . $field_name . '` ' . $field_data['sql_type'];
             }
         }
         // link
         if ($field_data['field_type'] == 'link') {
             if (isset($field_data['class_name']::$un_definition['fields'][$field_name])) {
                 $link_field = $field_data['class_name']::$un_definition['fields'][$field_name];
             } else {
                 die('Invalid link to other class field: no such field or other problem ');
             }
             $sql_type = str_replace(array('AUTO_INCREMENT'), '', $link_field['sql_type']);
             if (isset($link_field['sql_type']) && $link_field['sql_type']) {
                 if (!($sql_fields == '')) {
                     $sql_fields .= ',';
                 }
                 $sql_fields .= '`' . $field_name . '` ' . $sql_type;
             }
         }
         // link
         if ($field_data['field_type'] == 'link_search') {
             $linked_field_name = $field_data['linked_field'];
             if (isset($field_data['class_name']::$un_definition['fields'][$linked_field_name])) {
                 $link_field = $field_data['class_name']::$un_definition['fields'][$linked_field_name];
             } else {
                 die('Invalid link to other class field: no such field or other problem ');
             }
             $sql_type = str_replace(array('AUTO_INCREMENT'), '', $link_field['sql_type']);
             if (isset($link_field['sql_type']) && $link_field['sql_type']) {
                 if (!($sql_fields == '')) {
                     $sql_fields .= ',';
                 }
                 $sql_fields .= '`' . $field_name . '` ' . $sql_type;
             }
         }
     }
     if ($sql_fields == '') {
         return false;
     }
     $sql = $sql_table . $sql_fields . $sql_primary . $sql_eng_char;
     if (!Db::getInstance()->execute($sql)) {
         return false;
     }
     // INSTALL LINKS
     $links = new UN_MainLinks();
     $links::add(self::$un_definition);
     // INSTLLATION INFO ABOUT CLASS
     $insert = array('class_name' => self::$un_definition['class_name'], 'controller_name' => self::$un_definition['controller_name']);
     Db::getInstance()->insert(_UN_PREFIX_ . 'class_install', $insert, false);
 }