/** * Test for getTableName * * @covers JTable::getTableName * * @return void * * @since 12.3 */ public function testGetTableName() { $this->assertEquals( '#__dbtest_composite', $this->object->getTableName() ); }
/** * Build query for load operation. * * @param \JDatabaseQuery $query The query object to handle. * * @return \JDatabaseQuery Return handled query object. */ public function buildMapQuery(\JDatabaseQuery $query = null) { $conditions = array(); foreach ($this->mapFks as $field => $foreign) { $conditions[$foreign] = $this->parent->{$field}; } $query = $query ?: $this->db->getQuery(true); QueryHelper::buildWheres($query, $conditions); $query->select('*')->from($this->map->getTableName()); return $query; }
/** * Method to set property table * * @param \JTable $table * @param array $fks * * @return static Return self to support chaining. */ public function targetTable($table, $fks) { if (!$table) { return $this; } if (!$table instanceof \JTable) { $table = $this->getTable($table, $this->prefix); } $this->table = $table; $this->foreignKeys($fks); $this->tableName = $this->table->getTableName(); $this->db = $table->getDbo(); return $this; }
/** * This method will be executed once the content is save * * @param string $context Save context * @param JTable $content JTable class of the content * @param bool $isNew If the record is new or not * * @return void */ public function onContentAfterSave($context, $content, $isNew) { // If the user has create a new menu item, let's create it. if ($context == 'com_menus.item' && $isNew) { NenoHelper::createMenuStructure(); } elseif ($content instanceof JTable) { /* @var $db NenoDatabaseDriverMysqlx */ $db = JFactory::getDbo(); $tableName = $content->getTableName(); /* @var $table NenoContentElementTable */ $table = NenoContentElementTable::load(array('table_name' => $tableName), false); if (!empty($table)) { // If the record has changed the state to 'Trashed' if (isset($content->state) && $content->state == -2) { $primaryKeys = $content->getPrimaryKey(); $this->trashTranslations($table, array($content->{$primaryKeys[0]})); } else { $fields = $table->getFields(false, true); /* @var $field NenoContentElementField */ foreach ($fields as $field) { if ($field->isTranslatable()) { $primaryKeyData = array(); foreach ($content->getPrimaryKey() as $primaryKeyName => $primaryKeyValue) { $primaryKeyData[$primaryKeyName] = $primaryKeyValue; } $field->persistTranslations($primaryKeyData); } } $languages = NenoHelper::getLanguages(false); $defaultLanguage = NenoSettings::get('source_language'); foreach ($languages as $language) { if ($language->lang_code != $defaultLanguage) { $shadowTable = $db->generateShadowTableName($tableName, $language->lang_code); $properties = $content->getProperties(); $query = 'REPLACE INTO ' . $db->quoteName($shadowTable) . ' (' . implode(',', $db->quoteName(array_keys($properties))) . ') VALUES(' . implode(',', $db->quote($properties)) . ')'; $db->setQuery($query); $db->execute(); } } } } } }
/** * Get Fields. * * @param \JTable $table * * @return array */ public static function getFields(\JTable $table) { if (empty(static::$fields[$table->getTableName()])) { // Lookup the fields for this table only once. $name = $table->getTableName(); $fields = $table->getDbo()->getTableColumns($name, false); if (empty($fields)) { throw new \UnexpectedValueException(sprintf('No columns found for %s table', $name)); } static::$fields[$table->getTableName()] = $fields; } return static::$fields[$table->getTableName()]; }
/** * Check is Table exists needed columns? * * If not, will throw error. * * @param JTable $table The item table to detect column exists or not. * @param string $context Context for plugin. */ public static function checkTable($table, $context) { // Needed columns $needed = array('title', 'name', 'label', 'field_type', 'element', 'attrs'); JFactory::getApplication()->triggerEvent('onCCKEngineCheckTable', array($context, $table->getTableName(), &$needed)); // Check columns // ================================================================== $lack = array(); foreach ($needed as $needed) { if (!property_exists($table, $needed)) { $lack[] = $needed; } } // Raise Error if (count($lack) > 0) { $message = "Table {$table->getTableName()} need columns: " . implode(', ', $lack); JError::raiseError(500, $message); } }