/** * Returns an array of indices for the current module * * @return array */ private function _getIndexVardefs() { $indexes = $this->_focus->getIndices(); //grab any custom indexes if they exist if ($this->_focus->hasCustomFields()) { $custmIndexes = $this->_focus->db->helper->get_indices($this->_focus->table_name . '_cstm'); $indexes = array_merge($custmIndexes, $indexes); } // remove any that are datetime or time field as we can't dupe check them correctly since we don't export // seconds $fields = $this->_focus->getFieldDefinitions(); foreach ($indexes as $key => $index) { foreach ($index['fields'] as $field) { if (isset($fields[$field]) && ($fields[$field]['type'] == 'datetime' || $fields[$field]['type'] == 'datetimecombo' || $fields[$field]['type'] == 'time')) { unset($indexes[$key]); break 1; } } } if ($this->_focus->getFieldDefinition('email1')) { $indexes[] = array('name' => 'special_idx_email1', 'type' => 'index', 'fields' => array('email1')); } if ($this->_focus->getFieldDefinition('email2')) { $indexes[] = array('name' => 'special_idx_email2', 'type' => 'index', 'fields' => array('email2')); } return $indexes; }
/** * Generates sql for create table statement for a bean. * * @param object $bean SugarBean instance * @return string SQL Create Table statement */ public function createTableSQL(SugarBean $bean) { $tablename = $bean->getTableName(); $fieldDefs = $bean->getFieldDefinitions(); $indices = $bean->getIndices(); return $this->createTableSQLParams($tablename, $fieldDefs, $indices); }
/** * Implements repair of a db table for a bean. * * @param object $bean SugarBean instance * @param bool $execute true if we want the action to take place, false if we just want the sql returned * @return string SQL statement or empty string, depending upon $execute */ public function repairTable(SugarBean $bean, $execute = true) { $indices = $bean->getIndices(); $fielddefs = $bean->getFieldDefinitions(); $tablename = $bean->getTableName(); //Clean the indicies to prevent duplicate definitions $new_Indecies = array(); foreach ($indices as $ind_def) { $new_Indecies[$ind_def['name']] = $ind_def; } //jc: added this for beans that do not actually have a table, namely //ForecastOpportunities if ($tablename == 'does_not_exist' || $tablename == '') { return ''; } global $dictionary; $engine = null; if (isset($dictionary[$bean->getObjectName()]['engine']) && !empty($dictionary[$bean->getObjectName()]['engine'])) { $engine = $dictionary[$bean->getObjectName()]['engine']; } return $this->repairTableParams($tablename, $fielddefs, $new_Indecies, $execute, $engine); }
/** * Implements repair of a db table for a bean. * * @param object $bean SugarBean instance * @param bool $execute true if we want the action to take place, false if we just want the sql returned * @return string SQL statement or empty string, depending upon $execute */ public function repairTable(SugarBean $bean, $execute = true) { $indices = $bean->getIndices(); $fielddefs = $bean->getFieldDefinitions(); $tablename = $bean->getTableName(); //jc: added this for beans that do not actually have a table, namely //ForecastOpportunities if ($tablename == 'does_not_exist' || $tablename == '') { return ''; } global $dictionary; $engine = null; if (isset($dictionary[$bean->getObjectName()]['engine']) && !empty($dictionary[$bean->getObjectName()]['engine'])) { $engine = $dictionary[$bean->getObjectName()]['engine']; } return $this->repairTableParams($tablename, $fielddefs, $indices, $execute, $engine); }