protected function handleSave(array $params, rex_sql $sqlFields) { // Nur speichern wenn auch das MetaForm ausgefüllt wurde // z.b. nicht speichern wenn über be_search select navigiert wurde if (!rex_post('savemeta', 'boolean')) { return $params; } $article = rex_sql::factory(); // $article->setDebug(); $article->setTable(rex::getTablePrefix() . 'article'); $article->setWhere('id=:id AND clang_id=:clang', ['id' => $params['id'], 'clang' => $params['clang']]); $article->setValue('name', rex_post('meta_article_name', 'string')); parent::fetchRequestValues($params, $article, $sqlFields); // do the save only when metafields are defined if ($article->hasValues()) { $article->update(); } rex_article_cache::deleteMeta($params['id'], $params['clang']); rex_extension::registerPoint(new rex_extension_point('ART_META_UPDATED', '', $params)); return $params; }
/** * Kopiert die Metadaten eines Artikels in einen anderen Artikel. * * @param int $from_id ArtikelId des Artikels, aus dem kopiert werden (Quell ArtikelId) * @param int $to_id ArtikelId des Artikel, in den kopiert werden sollen (Ziel ArtikelId) * @param int $from_clang ClangId des Artikels, aus dem kopiert werden soll (Quell ClangId) * @param int $to_clang ClangId des Artikels, in den kopiert werden soll (Ziel ClangId) * @param array $params Array von Spaltennamen, welche kopiert werden sollen * * @return bool TRUE bei Erfolg, sonst FALSE */ public static function copyMeta($from_id, $to_id, $from_clang = 1, $to_clang = 1, $params = []) { $from_clang = (int) $from_clang; $to_clang = (int) $to_clang; $from_id = (int) $from_id; $to_id = (int) $to_id; if (!is_array($params)) { $params = []; } if ($from_id == $to_id && $from_clang == $to_clang) { return false; } $gc = rex_sql::factory(); $gc->setQuery('select * from ' . rex::getTablePrefix() . "article where clang_id='{$from_clang}' and id='{$from_id}'"); if ($gc->getRows() == 1) { $uc = rex_sql::factory(); // $uc->setDebug(); $uc->setTable(rex::getTablePrefix() . 'article'); $uc->setWhere("clang_id='{$to_clang}' and id='{$to_id}'"); $uc->addGlobalUpdateFields(); foreach ($params as $key => $value) { $uc->setValue($value, $gc->getValue($value)); } $uc->update(); rex_article_cache::deleteMeta($to_id, $to_clang); return true; } return false; }