Пример #1
0
	/**
	 * 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;
 }
Пример #4
0
 /**
  * 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()];
 }
Пример #6
0
 /**
  * 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);
     }
 }